1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.ibatis.migration.system_property;
17
18 import static org.junit.jupiter.api.Assertions.assertTrue;
19
20 import java.io.File;
21 import java.io.IOException;
22
23 import org.apache.ibatis.migration.Migrator;
24 import org.apache.ibatis.migration.io.Resources;
25 import org.apache.ibatis.migration.utils.TestUtil;
26 import org.junit.jupiter.api.BeforeAll;
27 import org.junit.jupiter.api.Test;
28 import org.junit.jupiter.api.extension.ExtendWith;
29
30 import uk.org.webcompere.systemstubs.SystemStubs;
31 import uk.org.webcompere.systemstubs.environment.EnvironmentVariables;
32 import uk.org.webcompere.systemstubs.jupiter.SystemStub;
33 import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension;
34
35 @ExtendWith(SystemStubsExtension.class)
36 class SystemPropertyTest {
37
38 private static File dir;
39
40 @SystemStub
41 private EnvironmentVariables variables = new EnvironmentVariables("MIGRATIONS_VAR3", "bogus_var3",
42 "MIGRATIONS_ENVVAR1", "Environment variable 1");
43
44 @BeforeAll
45 static void init() throws IOException {
46 dir = Resources.getResourceAsFile("org/apache/ibatis/migration/system_property/testdir");
47 }
48
49 @Test
50 void testSystemProperties() throws Exception {
51 variables.setup();
52 SystemStubs.restoreSystemProperties(() -> {
53 System.setProperty("MIGRATIONS_DRIVER", "org.hsqldb.jdbcDriver");
54 System.setProperty("username", "Pocahontas");
55 System.setProperty("var1", "Variable 1");
56 System.setProperty("MIGRATIONS_VAR3", "Variable 3");
57 System.setProperty("migrations_var4", "Variable 4");
58 System.setProperty("MIGRATIONS_VAR5", "Variable 5");
59
60 String output = SystemStubs.tapSystemOut(() -> {
61 Migrator.main(TestUtil.args("--path=" + dir.getAbsolutePath(), "up", "1", "--trace"));
62 });
63 assertTrue(output.contains("SUCCESS"), "Output is:" + output);
64 assertTrue(output.contains("username: Pocahontas"), "Output is:" + output);
65 assertTrue(output.contains("var1: Variable 1"), "Output is:" + output);
66 assertTrue(output.contains("var2: ${var2}"), "Output is:" + output);
67 assertTrue(output.contains("var3: Variable 3"),
68 "System property should overwrite env var," + "Output is:" + output);
69 assertTrue(output.contains("var4: Variable 4"), "Output is:" + output);
70 assertTrue(output.contains("var5: Variable 5"), "Output is:" + output);
71 assertTrue(output.contains("Var5: Var5 in properties file"), "Output is:" + output);
72 assertTrue(output.contains("envvar1: Environment variable 1"), "Output is:" + output);
73
74 Migrator.main(TestUtil.args("--path=" + dir.getAbsolutePath(), "down", "1"));
75 });
76 variables.teardown();
77 }
78 }