def test_6(self): """Test variable expansion.""" def _rex(): env.FOO = "foo" env.DOG = "$FOO" # this will convert to '${FOO}' env.BAH = "${FOO}" env.EEK = "${BAH}" if env.BAH == "foo" and getenv("EEK") == "foo": info("expansions visible in control flow") if defined("EXT") and getenv("EXT") == "alpha": env.FEE = "${EXT}" # with EXT undefined self._test(func=_rex, env={}, expected_actions=[ Setenv('FOO', 'foo'), Setenv('DOG', '${FOO}'), Setenv('BAH', '${FOO}'), Setenv('EEK', '${BAH}'), Info('expansions visible in control flow') ], expected_output={ 'FOO': 'foo', 'DOG': 'foo', 'BAH': 'foo', 'EEK': 'foo' }) # with EXT defined self._test(func=_rex, env={"EXT": "alpha"}, expected_actions=[ Setenv('FOO', 'foo'), Setenv('DOG', '${FOO}'), Setenv('BAH', '${FOO}'), Setenv('EEK', '${BAH}'), Info('expansions visible in control flow'), Setenv('FEE', '${EXT}') ], expected_output={ 'FOO': 'foo', 'DOG': 'foo', 'FEE': 'foo', 'BAH': 'foo', 'EEK': 'foo', 'FEE': 'alpha' })
def test_5(self): """Test control flow using externally-set env vars.""" def _rex(): if defined("EXT") and env.EXT == "alpha": env.EXT_FOUND = 1 env.EXT.append("beta") # will still overwrite else: env.EXT_FOUND = 0 if undefined("EXT"): info("undefined working as expected") # with EXT undefined self._test(func=_rex, env={}, expected_actions=[ Setenv('EXT_FOUND', '0'), Info("undefined working as expected") ], expected_output={'EXT_FOUND': '0'}) # with EXT defined self._test( func=_rex, env={"EXT": "alpha"}, expected_actions=[Setenv('EXT_FOUND', '1'), Setenv('EXT', 'beta')], expected_output={ 'EXT_FOUND': '1', 'EXT': 'beta' })
def test_4(self): """Test control flow using internally-set env vars.""" def _rex(): env.FOO = "foo" setenv("BAH", "bah") env.EEK = "foo" if env.FOO == "foo": env.FOO_VALID = 1 info("FOO validated") if env.FOO == env.EEK: comment("comparison ok") self._test(func=_rex, env={}, expected_actions=[ Setenv('FOO', 'foo'), Setenv('BAH', 'bah'), Setenv('EEK', 'foo'), Setenv('FOO_VALID', '1'), Info('FOO validated'), Comment('comparison ok') ], expected_output={ 'FOO': 'foo', 'BAH': 'bah', 'EEK': 'foo', 'FOO_VALID': '1' })
def test_1(self): """Test simple use of every available action.""" def _rex(): shebang() setenv("FOO", "foo") setenv("BAH", "bah") getenv("BAH") unsetenv("BAH") unsetenv("NOTEXIST") prependenv("A", "/tmp") prependenv("A", "/data") appendenv("B", "/tmp") appendenv("B", "/data") defined("BAH") undefined("BAH") defined("NOTEXIST") undefined("NOTEXIST") alias("thing", "thang") info("that's interesting") error("oh noes") command("runme --with --args") source("./script.src") self._test(func=_rex, env={}, expected_actions=[ Shebang(), Setenv('FOO', 'foo'), Setenv('BAH', 'bah'), Unsetenv('BAH'), Unsetenv('NOTEXIST'), Setenv('A', '/tmp'), Prependenv('A', '/data'), Setenv('B', '/tmp'), Appendenv('B', '/data'), Alias('thing', 'thang'), Info("that's interesting"), Error('oh noes'), Command('runme --with --args'), Source('./script.src') ], expected_output={ 'FOO': 'foo', 'A': os.pathsep.join(["/data", "/tmp"]), 'B': os.pathsep.join(["/tmp", "/data"]) })