def test_help( tmpdir: Path, script: str, flag: str, overrides: List[str], expected: Any, ) -> None: cmd = [script, "hydra.run.dir=" + str(tmpdir)] cmd.extend(overrides) cmd.append(flag) result = normalize_newlines(get_run_output(cmd)) # normalize newlines on Windows to make testing easier assert result == normalize_newlines(expected.format(script=script)).rstrip()
def test_multirun_defaults_override(self, cmd_base: List[str], tmpdir: Any) -> None: cmd = cmd_base + [ "hydra.sweep.dir=" + str(tmpdir), "group1=file1,file2", "--multirun", "--config-path=../../../hydra/test_utils/configs", "--config-name=compose", ] expected = """foo: 10 bar: 100 foo: 20 bar: 100""" ret = get_run_output(cmd) assert normalize_newlines(ret) == normalize_newlines(expected)
def test_multirun_structured_conflict( tmpdir: Any, overrides: List[str], error: bool, expected: Any ) -> None: cmd = [ "tests/test_apps/multirun_structured_conflict/my_app.py", "hydra.sweep.dir=" + str(tmpdir), ] cmd.extend(overrides) if error: expected = normalize_newlines(expected) ret = normalize_newlines(run_with_error(cmd)) assert re.search(re.escape(expected), ret) is not None else: ret = normalize_newlines(get_run_output(cmd)) assert ret == expected
def test_multirun_config_overrides_evaluated_lazily( self, cmd_base: List[str], tmpdir: Any ) -> None: cmd = cmd_base + [ "hydra.sweep.dir=" + str(tmpdir), "+foo=10,20", "+bar=${foo}", "--multirun", ] expected = """foo: 10 bar: 10 foo: 20 bar: 20""" ret = get_run_output(cmd) assert normalize_newlines(ret) == normalize_newlines(expected)
def test_multirun_structured_conflict(tmpdir: Any, overrides: List[str], error: bool, expected: Any) -> None: cmd = [ sys.executable, "tests/test_apps/multirun_structured_conflict/my_app.py", "hydra.sweep.dir=" + str(tmpdir), ] cmd.extend(overrides) if error: expected = normalize_newlines(expected) ret = normalize_newlines(run_with_error(cmd)) assert re.search(re.escape(expected), ret) is not None else: ret = normalize_newlines( str(subprocess.check_output(cmd).decode("utf-8"))).strip() assert ret == expected
def test_cfg_with_package(tmpdir: Path, flags: List[str], expected: str) -> None: cmd = [ "examples/tutorials/basic/your_first_hydra_app/5_defaults/my_app.py", "hydra.run.dir=" + str(tmpdir), ] + flags result = get_run_output(cmd) assert normalize_newlines(result) == expected.rstrip()
def test_command_line_interpolations_evaluated_lazily( self, cmd_base: List[str], tmpdir: Any) -> None: cmd = cmd_base + [ "hydra.sweep.dir=" + str(tmpdir), "+foo=10,20", "+bar=${foo}", "--multirun", ] expected = """foo: 10 bar: 10 foo: 20 bar: 20 """ ret = str(subprocess.check_output(cmd).decode("utf-8")) assert normalize_newlines(ret) == normalize_newlines(expected)
def test_cfg_with_package(tmpdir: Path, flags: List[str], expected: str) -> None: cmd = [ sys.executable, "examples/tutorials/basic/your_first_hydra_app/5_defaults/my_app.py", "hydra.run.dir=" + str(tmpdir), ] + flags result = subprocess.check_output(cmd).decode("utf-8") assert normalize_newlines(result) == expected
def test_cli_error(tmpdir: Any, monkeypatch: Any, override: Any, expected: str) -> None: monkeypatch.chdir("tests/test_apps/app_without_config/") if isinstance(override, str): override = [override] cmd = ["my_app.py", "hydra.sweep.dir=" + str(tmpdir)] + override ret = normalize_newlines(run_with_error(cmd)) assert ( re.search("^" + re.escape(normalize_newlines(expected.strip())), ret) is not None ), ( f"Result:" f"\n---" f"\n{ret}" f"\n---" f"\nDid not match expected:" f"\n---" f"\n{expected}" f"\n---" )
def test_app_with_error_exception_sanitized(tmpdir: Any, monkeypatch: Any) -> None: monkeypatch.chdir("tests/test_apps/app_with_runtime_config_error") cmd = [ "my_app.py", "hydra.sweep.dir=" + str(tmpdir), ] expected = """Traceback (most recent call last): File "my_app.py", line 13, in my_app foo(cfg) File "my_app.py", line 8, in foo cfg.foo = "bar" # does not exist in the config omegaconf.errors.ConfigAttributeError: Key 'foo' is not in struct \tfull_key: foo \treference_type=Optional[Dict[Union[str, Enum], Any]] \tobject_type=dict Set the environment variable HYDRA_FULL_ERROR=1 for a complete stack trace.""" ret = run_with_error(cmd) assert normalize_newlines(expected) == normalize_newlines(ret)