Beispiel #1
0
    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,
        )
Beispiel #2
0
    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"'))
Beispiel #3
0
    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))
Beispiel #4
0
    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))
Beispiel #5
0
    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))
Beispiel #6
0
    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())
Beispiel #7
0
    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")))
Beispiel #9
0
    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"'))
Beispiel #10
0
    def setUp(self):
        super().setUp()

        elf._libraries = None
        self.useFixture(FakeOsRelease(version_id=None))
Beispiel #11
0
 def setUp(self):
     super().setUp()
     self.useFixture(FakeOsRelease())