Esempio n. 1
0
def test_senv_overrides_poetry():
    config_dict = {
        "tool": {
            "poetry": {
                "version": "poetry1",
                "description": "poetry2",
                "name": "poetry3",
            },
            "senv": {
                "version": "senv1",
                "description": "senv2",
                "name": "senv3",
            },
        }
    }
    config = PyProject(**config_dict)
    assert config.version == "senv1"
    assert config.senv.description == "senv2"
    assert config.package_name == "senv3"

    # without senv, it should use the poetry information
    del config_dict["tool"]["senv"]
    config = PyProject(**config_dict)
    assert config.version == "poetry1"
    assert config.senv.description == "poetry2"
    assert config.package_name == "poetry3"
Esempio n. 2
0
def test_env_name_default_to_package_name():
    config_dict: Dict[str, Any] = {
        "tool": {
            "senv": {
                "name": "p_name",
            },
        }
    }
    config = PyProject(**config_dict)
    assert config.env.name == "p_name"
    config_dict["tool"]["senv"]["env"] = {"name": "env_name"}
    config2 = PyProject(**config_dict)
    assert config2.env.name == "env_name"
Esempio n. 3
0
def test_config_build_system_has_to_be_enum():
    config_dict = {
        "tool": {
            "senv": {
                "name": "test_name",
                "env": {
                    "build-system": "poetry"
                }
            }
        }
    }
    config = PyProject(**config_dict)
    assert config.senv.env.build_system == BuildSystem.POETRY

    config_dict["tool"]["senv"]["env"]["build-system"] = "no_build_system"
    with pytest.raises(ValueError):
        PyProject(**config_dict)
Esempio n. 4
0
def _validate_toml(toml):
    try:
        c = PyProject(**toml)
        c._config_path = PyProject.get().config_path
        c.validate_fields()
    except ValidationError as e:
        log.error(str(e))
        raise typer.Abort()
Esempio n. 5
0
def test_config_conda_and_poetry_path_have_to_be_executable(key):
    config_dict = {
        "tool": {
            "senv": {
                key: str(Path(__file__)),
            }
        }
    }
    try:
        PyProject(**config_dict)
        pytest.fail("config should raise exception as path is not executable")
    except ValueError as e:
        assert "not executable" in str(e).lower()
        assert "not found" not in str(e).lower()
Esempio n. 6
0
def test_config_conda_and_poetry_path_have_to_exists(key):
    config_dict = {
        "tool": {
            "senv": {
                key: str(Path("/no/real/path")),
            }
        }
    }
    try:
        PyProject(**config_dict)
        pytest.fail("config should raise exception as paths do not exists")
    except ValueError as e:
        assert "not found" in str(e).lower()
        assert "not executable" not in str(e).lower()
Esempio n. 7
0
def test_config_conda_and_poetry_path_do_not_raises_if_it_exists_and_is_executable(
    tmp_path, ):
    my_file = tmp_path / "executable.sh"
    my_file.write_text("echo test")
    os.chmod(my_file, 0o777)
    config_dict = {
        "tool": {
            "senv": {
                "name": "test_name",
                "conda-path": str(my_file),
            }
        }
    }
    config = PyProject(**config_dict)
    assert config.conda_path == my_file
Esempio n. 8
0
def test_config_defaults_get_populated():
    config_dict = {
        "tool": {
            "senv": {
                "env": {
                    "name": "my_virtual_environment"
                },
                "name": "test_name"
            }
        }
    }

    config = PyProject(**config_dict)
    assert config.senv.env.name == "my_virtual_environment"
    assert isinstance(config.senv.env.build_system, BuildSystem)
    assert isinstance(config.senv.env.conda_lock_platforms, set)
Esempio n. 9
0
def test_values_in_poetry_gets_populated_to_senv():
    config_dict = {
        "tool": {
            "poetry": {
                "name": "senv3",
                "dependencies": {
                    "package1": "*",
                    "package2": "1"
                },
                "version": "poetry1",
                "description": "poetry2",
            },
        }
    }
    config = PyProject(**config_dict)
    assert config.senv.dependencies == {"package1": "*", "package2": "1"}
    assert config.senv.version == "poetry1"
    assert config.senv.description == "poetry2"
Esempio n. 10
0
def test_dependencies_are_not_combined(tmp_path):
    config_dict = {
        "tool": {
            "poetry": {
                "name": "senv3",
                "dependencies": {
                    "package1": "*",
                    "package2": "1"
                },
            },
            "senv": {
                "dependencies": {
                    "package1": "*",
                    "package3": "2"
                },
            },
        }
    }
    config = PyProject(**config_dict)
    assert config.senv.dependencies == {"package1": "*", "package3": "2"}