def test_get_build_base_for_defined_type_base(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent( """\ name: core20 type: base """ ) ) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) self.assertThat(info.get_build_base(), Equals("core20"))
def test_get_build_base_build_base_overrides(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent( """\ name: core20 type: base build-base: core """ ) ) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) self.assertThat(info.get_build_base(), Equals("core"))
def test_get_raw_dict_is_a_copy(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent("""\ name: foo version: "1" summary: bar description: baz confinement: strict """)) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) raw_snapcraft = info.get_raw_snapcraft() raw_snapcraft.pop("name") self.assertThat(raw_snapcraft.get("name"), Is(None)) raw_snapcraft = info.get_raw_snapcraft() self.assertThat(raw_snapcraft.get("name"), Equals("foo"))
def test_get_raw_dict(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent("""\ name: foo version: "1" summary: bar description: baz confinement: strict """)) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) raw_snapcraft = info.get_raw_snapcraft() self.assertThat(raw_snapcraft["name"], Equals("foo")) self.assertThat(raw_snapcraft["version"], Equals("1")) self.assertThat(raw_snapcraft["summary"], Equals("bar")) self.assertThat(raw_snapcraft["description"], Equals("baz")) self.assertThat(raw_snapcraft["confinement"], Equals("strict"))
def test_get_raw_dict_is_a_copy(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent( """\ name: foo version: "1" summary: bar description: baz confinement: strict """ ) ) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) raw_snapcraft = info.get_raw_snapcraft() raw_snapcraft.pop("name") self.assertThat(raw_snapcraft.get("name"), Is(None)) raw_snapcraft = info.get_raw_snapcraft() self.assertThat(raw_snapcraft.get("name"), Equals("foo"))
def test_minimal_load_with_name_only(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent("""\ name: foo """)) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) self.assertThat(info.name, Equals("foo")) self.assertThat(info.version, Is(None)) self.assertThat(info.summary, Is(None)) self.assertThat(info.description, Is(None)) self.assertThat(info.confinement, Is(None))
def test_get_raw_dict(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent( """\ name: foo version: "1" summary: bar description: baz confinement: strict """ ) ) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) raw_snapcraft = info.get_raw_snapcraft() self.assertThat(raw_snapcraft["name"], Equals("foo")) self.assertThat(raw_snapcraft["version"], Equals("1")) self.assertThat(raw_snapcraft["summary"], Equals("bar")) self.assertThat(raw_snapcraft["description"], Equals("baz")) self.assertThat(raw_snapcraft["confinement"], Equals("strict"))
def setUp(self): super().setUp() self.instance_name = 'ridicoulus-hours' patcher = mock.patch('petname.Generate', return_value=self.instance_name) patcher.start() self.addCleanup(patcher.stop) self.project = Project() self.project.info = ProjectInfo(dict(name='project-name')) self.echoer_mock = mock.Mock()
def test_properties(self): snapcraft_yaml_file_path = self.make_snapcraft_yaml( dedent("""\ name: foo version: "1" summary: bar description: baz confinement: strict """)) info = ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path) self.assertThat(info.name, Equals("foo")) self.assertThat(info.version, Equals("1")) self.assertThat(info.summary, Equals("bar")) self.assertThat(info.description, Equals("baz")) self.assertThat(info.confinement, Equals("strict"))
def test_config_loads_with_different_encodings_loads(self): snapcraft_yaml = dedent("""\ name: test version: "1" summary: test description: ñoño test confinement: strict grade: stable parts: part1: plugin: go stage-packages: [fswebcam] """) snapcraft_yaml_file_path = self.make_snapcraft_yaml( snapcraft_yaml, encoding=self.encoding) ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_file_path)
def test_different_encodings_loads(tmp_work_path, encoding): snapcraft_yaml = dedent("""\ name: test version: "1" summary: test description: ñoño test confinement: strict grade: stable parts: part1: plugin: go stage-packages: [fswebcam] """) snapcraft_yaml_path = tmp_work_path / "snapcraft.yaml" with snapcraft_yaml_path.open("w", encoding=encoding) as snapcraft_file: print(snapcraft_yaml, file=snapcraft_file) ProjectInfo(snapcraft_yaml_file_path=snapcraft_yaml_path.as_posix())
def __init__(self, project_options: project.Project = None) -> None: if project_options is None: project_options = project.Project() self.build_snaps = set() # type: Set[str] self._project_options = project_options self.snapcraft_yaml_path = get_snapcraft_yaml() snapcraft_yaml = _snapcraft_yaml_load(self.snapcraft_yaml_path) self._validator = Validator(snapcraft_yaml) self._validator.validate() snapcraft_yaml = self._process_remote_parts(snapcraft_yaml) snapcraft_yaml = self._expand_filesets(snapcraft_yaml) # both confinement type and build quality are optionals _ensure_confinement_default(snapcraft_yaml, self._validator.schema) _ensure_grade_default(snapcraft_yaml, self._validator.schema) self.data = self._expand_env(snapcraft_yaml) # We need to set the ProjectInfo here because ProjectOptions is # created in the CLI. self._project_options.info = ProjectInfo(self.data) self._ensure_no_duplicate_app_aliases() grammar_processor = grammar_processing.GlobalGrammarProcessor( properties=self.data, project_options=project_options) self.build_tools = grammar_processor.get_build_packages() self.build_tools |= set(project_options.additional_build_packages) self.parts = PartsConfig(parts=self.data, project_options=self._project_options, validator=self._validator, build_snaps=self.build_snaps, build_tools=self.build_tools, snapcraft_yaml=self.snapcraft_yaml_path) if 'architectures' not in self.data: self.data['architectures'] = [self._project_options.deb_arch]
def __init__(self, project_options: project.Project = None) -> None: if project_options is None: project_options = project.Project() self.build_snaps = set() # type: Set[str] self._project_options = project_options self.snapcraft_yaml_path = get_snapcraft_yaml() snapcraft_yaml = _snapcraft_yaml_load(self.snapcraft_yaml_path) self.original_snapcraft_yaml = snapcraft_yaml.copy() self.validator = Validator(snapcraft_yaml) self.validator.validate() snapcraft_yaml = self._process_remote_parts(snapcraft_yaml) snapcraft_yaml = self._expand_filesets(snapcraft_yaml) # We need to set the ProjectInfo here because ProjectOptions is # created in the CLI. self._project_options.info = ProjectInfo(snapcraft_yaml) self.data = self._expand_env(snapcraft_yaml) self._ensure_no_duplicate_app_aliases() grammar_processor = grammar_processing.GlobalGrammarProcessor( properties=self.data, project=project_options) self.build_tools = grammar_processor.get_build_packages() self.build_tools |= set(project_options.additional_build_packages) self.parts = PartsConfig(parts=self.data, project_options=self._project_options, validator=self.validator, build_snaps=self.build_snaps, build_tools=self.build_tools, snapcraft_yaml=self.snapcraft_yaml_path) self.data['architectures'] = _process_architectures( self.data.get('architectures'), self._project_options.deb_arch)