示例#1
0
    def test_wrong_name(self):
        mod_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                               "data", "modules", "mod3")
        module.Module(project=mock.Mock(), path=mod_dir)

        self.handler.flush()
        assert "The name in the module file (mod1) does not match the directory name (mod3)" in self.stream.getvalue(
        ).strip()
async def test_invalid_yaml_syntax_in_module_yml(inmanta_module):
    inmanta_module.write_module_yml_file(
        """
test:
 - first
 second
"""
    )
    with pytest.raises(InvalidMetadata, match=f"Invalid yaml syntax in {inmanta_module.get_path_module_yml_file()}"):
        module.Module(None, inmanta_module.get_root_dir_of_module())
async def test_module_requires_single(inmanta_module):
    inmanta_module.write_module_yml_file(
        """
name: mod
license: ASL
version: 1.0.0
requires: std > 1.0.0
        """
    )
    mod: module.Module = module.Module(None, inmanta_module.get_root_dir_of_module())
    assert mod.requires() == [Requirement.parse("std > 1.0.0")]
async def test_module_version_non_pep440_complient(inmanta_module):
    inmanta_module.write_module_yml_file(
        """
name: mod
license: ASL
version: non_pep440_value
compiler_version: 2017.2
    """
    )
    with pytest.raises(InvalidMetadata, match="Version non_pep440_value is not PEP440 compliant"):
        module.Module(None, inmanta_module.get_root_dir_of_module())
async def test_module_requires_legacy_invalid(inmanta_module):
    inmanta_module.write_module_yml_file(
        """
name: mod
license: ASL
version: 1.0.0
requires:
    std: ip
        """
    )
    with pytest.raises(InvalidMetadata, match="Invalid legacy requires"):
        module.Module(None, inmanta_module.get_root_dir_of_module())
async def test_module_requires_legacy(inmanta_module):
    inmanta_module.write_module_yml_file(
        """
name: mod
license: ASL
version: 1.0.0
requires:
    std: std
    ip: ip > 1.0.0
        """
    )
    mod: module.Module
    with warnings.catch_warnings(record=True) as w:
        mod = module.Module(None, inmanta_module.get_root_dir_of_module())
        assert len(w) == 1
        warning = w[0]
        assert issubclass(warning.category, MetadataDeprecationWarning)
        assert "yaml dictionary syntax for specifying module requirements has been deprecated" in str(warning.message)
    assert mod.requires() == [Requirement.parse("std"), Requirement.parse("ip > 1.0.0")]
示例#7
0
def test_rewrite(tmpdir):
    module_path = tmpdir.join("mod").mkdir()
    model = module_path.join("model").mkdir()
    model.join("_init.cf").write("\n")

    module_yml = module_path.join("module.yml")
    module_yml.write("""
name: mod
license: ASL
version: 1.2
compiler_version: 2017.2
    """)

    mod = module.Module(None, module_path.strpath)

    assert mod.version == "1.2"
    assert mod.compiler_version == "2017.2"

    mod.rewrite_version("1.3.1")
    assert mod.version == "1.3.1"
    assert mod.compiler_version == "2017.2"
async def test_version_argument(modules_repo):
    make_module_simple(modules_repo, "mod-version", [], "1.2")
    module_path = os.path.join(modules_repo, "mod-version")

    mod = module.Module(None, module_path)
    assert mod.version == "1.2"

    args = [sys.executable, "-m", "inmanta.app", "module", "commit", "-m", "msg", "-v", "1.3.1", "-r"]
    process = await asyncio.subprocess.create_subprocess_exec(
        *args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=module_path
    )
    try:
        await asyncio.wait_for(process.communicate(), timeout=30)
    except asyncio.TimeoutError as e:
        process.kill()
        await process.communicate()
        raise e

    # Make sure exitcode is zero
    assert process.returncode == 0

    # Verify changes
    assert mod._get_metadata_from_disk().version == "1.3.1"
示例#9
0
def test_bad_module():
    bad_mod_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                               "data", "modules", "mod2")
    with pytest.raises(module.InvalidModuleException):
        module.Module(project=mock.Mock(), path=bad_mod_dir)
示例#10
0
def test_module():
    good_mod_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),
                                "data", "modules", "mod1")
    module.Module(project=mock.Mock(), path=good_mod_dir)