def test_config_stage_environment_confinement_classic(self): self.useFixture(FakeOsRelease()) snapcraft_yaml = dedent("""\ name: test base: core18 version: "1" summary: test description: test confinement: classic grade: stable base: core parts: part1: plugin: nil """) project_config = self.make_snapcraft_project(snapcraft_yaml) part = project_config.parts.get_part("part1") environment = project_config.parts.build_env_for_part(part, root_part=True) self.assertIn( 'LD_LIBRARY_PATH="$LD_LIBRARY_PATH:{base_core_path}/lib:' "{base_core_path}/usr/lib:{base_core_path}/lib/{arch_triplet}:" '{base_core_path}/usr/lib/{arch_triplet}"'.format( base_core_path=self.base_environment.core_path, arch_triplet=project_config.project.arch_triplet, ), environment, )
def test_build_environment_with_dependencies(self): self.useFixture(FakeOsRelease()) snapcraft_yaml = dedent("""\ name: test base: core18 version: "1" summary: test description: test confinement: strict grade: stable base: core parts: part1: plugin: nil build-environment: - FOO: BAR part2: plugin: nil after: [part1] build-environment: - BAZ: QUX """) project_config = self.make_snapcraft_project(snapcraft_yaml) part1 = project_config.parts.get_part("part1") part2 = project_config.parts.get_part("part2") self.assertThat(project_config.parts.build_env_for_part(part1), Contains('FOO="BAR"')) self.assertThat(project_config.parts.build_env_for_part(part2), Contains('FOO="BAR"')) self.assertThat(project_config.parts.build_env_for_part(part2), Contains('BAZ="QUX"'))
def test_user_agent_linux(self): self.useFixture(FakeOsRelease()) arch = ProjectOptions().deb_arch expected = f"snapcraft/{snapcraft_version} Ubuntu/16.04 ({arch})" self.expectThat(storeapi._agent.get_user_agent("linux"), Equals(expected))
def test_user_agent_linux_unknown(self): self.useFixture(FakeOsRelease(name=None, version_id=None)) arch = ProjectOptions().deb_arch expected = f"snapcraft/{snapcraft_version} Unknown/Unknown Version ({arch})" self.expectThat(storeapi._agent.get_user_agent("linux"), Equals(expected))
def test_build_environment_can_depend_on_part_env(self): self.useFixture(FakeOsRelease()) snapcraft_yaml = dedent("""\ name: test base: core18 version: "1" summary: test description: test confinement: strict grade: stable parts: part1: plugin: nil build-environment: - PART_INSTALL: $SNAPCRAFT_PART_INSTALL """) project_config = self.make_snapcraft_project(snapcraft_yaml) part = project_config.parts.get_part("part1") environment = project_config.parts.build_env_for_part(part) snapcraft_definition_index = -1 build_environment_definition_index = -1 for index, variable in enumerate(environment): if variable.startswith("SNAPCRAFT_PART_INSTALL="): snapcraft_definition_index = index if variable.startswith("PART_INSTALL="): build_environment_definition_index = index # Assert that each definition was found, and the part env came before the # build environment self.assertThat(snapcraft_definition_index, GreaterThan(-1)) self.assertThat(build_environment_definition_index, GreaterThan(-1)) self.assertThat(build_environment_definition_index, GreaterThan(snapcraft_definition_index))
def setUp(self): super().setUp() patcher = mock.patch("snapcraft._get_version", return_value="3.0") patcher.start() self.addCleanup(patcher.stop) patcher = mock.patch( "snapcraft.project.Project._get_start_time", return_value=datetime.strptime( "2019-05-07T19:25:53.939041", "%Y-%m-%dT%H:%M:%S.%f" ), ) patcher.start() self.addCleanup(patcher.stop) original_check_output = subprocess.check_output def fake_uname(cmd, *args, **kwargs): if "uname" in cmd: return b"Linux test uname 4.10 x86_64" else: return original_check_output(cmd, *args, **kwargs) check_output_patcher = mock.patch( "subprocess.check_output", side_effect=fake_uname ) check_output_patcher.start() self.addCleanup(check_output_patcher.stop) self.useFixture( fixtures.MockPatch( "snapcraft.internal.repo._deb.Ubuntu._extract_deb_name_version", return_value="test-1.0", ) ) self.useFixture( fixtures.MockPatch("snapcraft.internal.repo._deb.Ubuntu._extract_deb") ) self.fake_apt_cache = fixture_setup.FakeAptCache() self.useFixture(self.fake_apt_cache) self.fake_apt_cache.add_package( fixture_setup.FakeAptCachePackage("patchelf", "0.9", installed=True) ) self.fake_snapd.snaps_result = [ dict(name="core18", channel="stable", revision="10") ] self.useFixture(FakeOsRelease())
def setUp(self): super().setUp() patcher = mock.patch("snapcraft._get_version", return_value="3.0") patcher.start() self.addCleanup(patcher.stop) original_check_output = subprocess.check_output def fake_uname(cmd, *args, **kwargs): if "uname" in cmd: return b"Linux test uname 4.10 x86_64" else: return original_check_output(cmd, *args, **kwargs) check_output_patcher = mock.patch( "subprocess.check_output", side_effect=fake_uname ) check_output_patcher.start() self.addCleanup(check_output_patcher.stop) original_check_call = subprocess.check_call def _fake_dpkg_deb(command, *args, **kwargs): if "dpkg-deb" not in command: return original_check_call(command, *args, **kwargs) check_call_patcher = mock.patch( "subprocess.check_call", side_effect=_fake_dpkg_deb ) check_call_patcher.start() self.addCleanup(check_call_patcher.stop) self.fake_apt_cache = fixture_setup.FakeAptCache() self.useFixture(self.fake_apt_cache) self.fake_apt_cache.add_package( fixture_setup.FakeAptCachePackage("patchelf", "0.9", installed=True) ) self.fake_snapd = fixture_setup.FakeSnapd() self.useFixture(self.fake_snapd) self.fake_snapd.snaps_result = [] self.useFixture(FakeOsRelease())
def test_stage_environment_confinement_classic_with_incompat_host(self): self.useFixture(FakeOsRelease(version_codename="incompatible-fake")) snapcraft_yaml = dedent("""\ name: test version: "1" summary: test description: test confinement: classic grade: stable base: core parts: part1: plugin: nil """) project_config = self.make_snapcraft_project(snapcraft_yaml) part = project_config.parts.get_part("part1") environment = project_config.parts.build_env_for_part(part, root_part=True) for env_item in environment: self.assertThat(env_item, Not(StartsWith("LD_LIBRARY_PATH")))
def test_build_environment(self): self.useFixture(FakeOsRelease()) snapcraft_yaml = dedent("""\ name: test base: core18 version: "1" summary: test description: test confinement: strict grade: stable parts: part1: plugin: nil build-environment: - FOO: BAR """) project_config = self.make_snapcraft_project(snapcraft_yaml) part = project_config.parts.get_part("part1") environment = project_config.parts.build_env_for_part(part) self.assertThat(environment, Contains('FOO="BAR"'))
def setUp(self): super().setUp() elf._libraries = None self.useFixture(FakeOsRelease(version_id=None))
def setUp(self): super().setUp() self.useFixture(FakeOsRelease())