Exemplo n.º 1
0
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()
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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()
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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---"
    )
Exemplo n.º 10
0
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)