def test_bad_version_spec(tmpdir):
    tmpdir.mkdir('meta').join('runtime.yml').write(BAD_VERSION_SPEC)
    with pytest.raises(
            exc.RuntimeFileError,
            match="not a valid semantic_version requirement specification"):
        loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
        loader.get_requires_ansible()
def test_runtime_no_meta_runtime(tmpdir):
    loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
    with pytest.raises(
            exc.RuntimeFileError,
            match=r"'requires_ansible' in meta/runtime.yml is mandatory",
    ):
        loader.get_requires_ansible()
Пример #3
0
    def load(self):
        self._load_collection_manifest()
        self._rename_extract_path()
        self._check_filename_matches_manifest()
        self._check_metadata_filepaths()

        self.doc_strings = {}
        if self.cfg.run_ansible_doc:
            self.doc_strings = loaders.DocStringLoader(
                path=self.path,
                fq_collection_name='{}.{}'.format(self.metadata.namespace,
                                                  self.metadata.name),
                logger=self.log,
                cfg=self.cfg,
            ).load()

        self.content_objs = list(self._load_contents())

        self.contents = self._build_contents_blob()
        self.docs_blob = self._build_docs_blob()
        self.requires_ansible = loaders.RuntimeFileLoader(
            self.path).get_requires_ansible()

        return schema.ImportResult(
            metadata=self.metadata,
            docs_blob=self.docs_blob,
            contents=self.contents,
            requires_ansible=self.requires_ansible,
        )
def test_too_long_requires_ansible(tmpdir):
    tmpdir.mkdir('meta').join('runtime.yml').write(TOO_LONG_REQUIRES_ANSIBLE)
    with pytest.raises(
            exc.RuntimeFileError,
            match="'requires_ansible' must not be greater than 255 characters"
    ):
        loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
        loader.get_requires_ansible()
def test_no_requires_ansible(tmpdir):
    tmpdir.mkdir("meta").join("runtime.yml").write(RUNTIME_PLUGIN_ROUTING)
    loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
    with pytest.raises(
            exc.RuntimeFileError,
            match=r"'requires_ansible' in meta/runtime.yml is mandatory",
    ):
        loader.get_requires_ansible()
Пример #6
0
    def load(self):
        # NOTE: If we knew the chksum for MANIFEST.json, we could check it here first
        self.manifest = self._load_manifest()

        self.metadata = self.manifest.collection_info

        # The default name for 'file_manifest_file' is FILES.json
        self.file_manifest_file = self.manifest.file_manifest_file

        # load data from FILES.json
        self.file_manifest = self._load_file_manifest(
            path_prefix=self.path, file_manifest_file=self.file_manifest_file)

        # check chksum for each file in FILES.json
        # Note: Will raise exceptions on file_manifest / FILES.json errors
        self._check_file_manifest(self.path, self.file_manifest,
                                  self.file_manifest_file.name)

        self._rename_extract_path()
        self._check_filename_matches_manifest()
        self._check_metadata_filepaths()

        self.doc_strings = {}
        if self.cfg.run_ansible_doc:
            self.doc_strings = loaders.DocStringLoader(
                path=self.path,
                fq_collection_name="{}.{}".format(self.metadata.namespace,
                                                  self.metadata.name),
                logger=self.log,
                cfg=self.cfg,
            ).load()

        self.content_objs = list(self._load_contents())

        self.contents = self._build_contents_blob()
        self.docs_blob = self._build_docs_blob()
        self.requires_ansible = loaders.RuntimeFileLoader(
            self.path).get_requires_ansible()
        self._check_ansible_test_ignore_files()
        self._check_ee_yml_dep_files()

        return schema.ImportResult(
            metadata=self.metadata,
            docs_blob=self.docs_blob,
            contents=self.contents,
            requires_ansible=self.requires_ansible,
        )
def test_get_requires_ansible(tmpdir):
    tmpdir.mkdir('meta').join('runtime.yml').write(RUNTIME_FULL_YAML)
    loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
    requires_ansible = loader.get_requires_ansible()
    assert requires_ansible == '>=2.9.10,<2.11.5'
def test_no_requires_ansible(tmpdir):
    tmpdir.mkdir('meta').join('runtime.yml').write(RUNTIME_PLUGIN_ROUTING)
    loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
    requires_ansible = loader.get_requires_ansible()
    assert requires_ansible is None
def test_runtime_file_bad_yaml(tmpdir):
    tmpdir.mkdir('meta').join('runtime.yml').write(BAD_YAML)
    with pytest.raises(exc.RuntimeFileError,
                       match='Error during parsing of runtime.yml'):
        loaders.RuntimeFileLoader(collection_path=tmpdir)
def test_no_runtime_file(tmpdir):
    loader = loaders.RuntimeFileLoader(collection_path=tmpdir)
    assert loader.data is None