2 // Getdown - application installer, patcher and launcher
3 // Copyright (C) 2004-2018 Getdown authors
4 // https://github.com/threerings/getdown/blob/master/LICENSE
6 package com.threerings.getdown.data;
8 import java.util.ArrayList;
9 import java.util.Arrays;
10 import java.util.List;
14 import static org.junit.Assert.*;
16 public class EnvConfigTest {
18 static String CWD = System.getProperty("user.dir");
19 static String TESTID = "testid";
20 static String TESTBASE = "https://test.com/test";
22 private void debugNotes(List<EnvConfig.Note> notes) {
23 for (EnvConfig.Note note : notes) {
24 System.out.println(note.message);
28 private void checkNoNotes (List<EnvConfig.Note> notes) {
29 StringBuilder msg = new StringBuilder();
30 for (EnvConfig.Note note : notes) {
31 if (note.level != EnvConfig.Note.Level.INFO) {
32 msg.append("\n").append(note.message);
35 if (msg.length() > 0) {
36 fail("Unexpected notes:" + msg.toString());
39 private void checkDir (EnvConfig cfg) {
40 assertTrue(cfg != null);
41 assertEquals(new File(CWD), cfg.appDir);
43 private void checkNoAppId (EnvConfig cfg) {
44 assertNull(cfg.appId);
46 private void checkAppId (EnvConfig cfg, String appId) {
47 assertEquals(appId, cfg.appId);
49 private void checkAppBase (EnvConfig cfg, String appBase) {
50 assertEquals(appBase, cfg.appBase);
52 private void checkNoAppBase (EnvConfig cfg) {
53 assertNull(cfg.appBase);
55 private void checkNoAppArgs (EnvConfig cfg) {
56 assertTrue(cfg.appArgs.isEmpty());
58 private void checkAppArgs (EnvConfig cfg, String... args) {
59 assertEquals(Arrays.asList(args), cfg.appArgs);
62 @Test public void testArgvDir () {
63 List<EnvConfig.Note> notes = new ArrayList<>();
64 String[] args = { CWD };
65 EnvConfig cfg = EnvConfig.create(args, notes);
74 @Test public void testArgvDirId () {
75 List<EnvConfig.Note> notes = new ArrayList<>();
76 String[] args = { CWD, TESTID };
77 EnvConfig cfg = EnvConfig.create(args, notes);
81 checkAppId(cfg, TESTID);
86 @Test public void testArgvDirArgs () {
87 List<EnvConfig.Note> notes = new ArrayList<>();
88 String[] args = { CWD, "", "one", "two" };
89 EnvConfig cfg = EnvConfig.create(args, notes);
95 checkAppArgs(cfg, "one", "two");
98 @Test public void testArgvDirIdArgs () {
99 List<EnvConfig.Note> notes = new ArrayList<>();
100 String[] args = { CWD, TESTID, "one", "two" };
101 EnvConfig cfg = EnvConfig.create(args, notes);
102 // debugNotes(notes);
105 checkAppId(cfg, TESTID);
107 checkAppArgs(cfg, "one", "two");
110 private EnvConfig sysPropsConfig (List<EnvConfig.Note> notes, String... keyVals) {
111 for (int ii = 0; ii < keyVals.length; ii += 2) {
112 System.setProperty(keyVals[ii], keyVals[ii+1]);
114 EnvConfig cfg = EnvConfig.create(new String[0], notes);
115 for (int ii = 0; ii < keyVals.length; ii += 2) {
116 System.clearProperty(keyVals[ii]);
121 @Test public void testSysPropsDir () {
122 List<EnvConfig.Note> notes = new ArrayList<>();
123 EnvConfig cfg = sysPropsConfig(notes, "appdir", CWD);
124 // debugNotes(notes);
132 @Test public void testSysPropsDirIdBase () {
133 List<EnvConfig.Note> notes = new ArrayList<>();
134 EnvConfig cfg = sysPropsConfig(notes, "appdir", CWD, "appid", TESTID, "appbase", TESTBASE);
135 // debugNotes(notes);
138 checkAppId(cfg, TESTID);
139 checkAppBase(cfg, TESTBASE);