コード例 #1
0
    def test_prime_with_packages_missing_dependency(self):
        """Test the recorded manifest for a snap with packages

        This snap declares one package that has undeclared dependencies.
        """
        self.copy_project_to_cwd('stage-packages-missing-dependency')
        part_name = 'part-with-stage-packages'
        self.set_stage_package_version(
            os.path.join('snap', 'snapcraft.yaml'),
            part_name, package='haskell-doc')
        self.run_snapcraft('prime')

        expected_packages = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in [
                'haskell-doc', 'haskell98-tutorial', 'haskell98-report']
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['parts'][part_name]['stage-packages'],
            Equals(expected_packages))
コード例 #2
0
    def test_prime_with_build_packages(self):
        """Test the recorded manifest for a snap with build packages

        This snap declares one global build package that has undeclared
        dependencies.

        """
        expected_packages = [
            'haskell-doc', 'haskell98-tutorial', 'haskell98-report']
        self.addCleanup(
            subprocess.call,
            ['sudo', 'apt', 'remove', '-y'] + expected_packages)

        self.run_snapcraft('prime', self.snap)

        expected_packages_with_version = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in expected_packages
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['build-packages'],
            Equals(expected_packages_with_version))
コード例 #3
0
    def test_prime_without_packages_version(self):
        """Test the recorded manifest for a snap with packages

        This snap declares all the packages that it requires, there are
        no additional dependencies. The packages don't specify their
        version.
        """
        self.run_snapcraft(
            'prime', project_dir='stage-packages-without-dependencies')

        with open(os.path.join('snap', 'snapcraft.yaml')) as source_yaml_file:
            source_yaml = yaml.load(source_yaml_file)
        part_name = 'part-with-stage-packages'
        expected_packages = [
            '{}={}'.format(
                package, integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch)) for
            package in source_yaml['parts'][part_name]['stage-packages']
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['parts'][part_name]['stage-packages'],
            Equals(expected_packages))
コード例 #4
0
    def test_prime_with_packages_missing_dependency(self):
        """Test the recorded manifest for a snap with packages

        This snap declares one package that has undeclared dependencies.
        """
        self.copy_project_to_cwd('stage-packages-missing-dependency')
        part_name = 'part-with-stage-packages'
        self.set_stage_package_version(
            os.path.join('snap', 'snapcraft.yaml'),
            part_name, package='haskell-doc')
        self.run_snapcraft('prime')

        expected_packages = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in [
                'haskell-doc', 'haskell98-tutorial', 'haskell98-report']
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['parts'][part_name]['stage-packages'],
            Equals(expected_packages))
コード例 #5
0
    def test_prime_with_build_packages(self):
        """Test the recorded manifest for a snap with build packages

        This snap declares one global build package that has undeclared
        dependencies.

        """
        expected_packages = [
            'haskell-doc', 'haskell98-tutorial', 'haskell98-report']
        self.addCleanup(
            subprocess.call,
            ['sudo', 'apt', 'remove', '-y'] + expected_packages)

        self.run_snapcraft('prime', self.snap)

        expected_packages_with_version = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in expected_packages
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['build-packages'],
            Equals(expected_packages_with_version))
コード例 #6
0
    def test_prime_without_packages_version(self):
        """Test the recorded manifest for a snap with packages

        This snap declares all the packages that it requires, there are
        no additional dependencies. The packages don't specify their
        version.
        """
        self.run_snapcraft(
            'prime', project_dir='stage-packages-without-dependencies')

        with open(os.path.join('snap', 'snapcraft.yaml')) as source_yaml_file:
            source_yaml = yaml.load(source_yaml_file)
        part_name = 'part-with-stage-packages'
        expected_packages = [
            '{}={}'.format(
                package, integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch)) for
            package in source_yaml['parts'][part_name]['stage-packages']
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'manifest.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertThat(
            recorded_yaml['parts'][part_name]['stage-packages'],
            Equals(expected_packages))
コード例 #7
0
    def test_prime_with_stage_package_missing_dependecy(self):
        """Test the recorded snapcraft.yaml for a snap with stage packages

        This snap declares one stage package that has one undeclared
        dependency.
        """
        self.copy_project_to_cwd('stage-package-missing-dependency')
        part_name = 'part-with-stage-package'
        self.set_stage_package_version(
            os.path.join('snap', 'snapcraft.yaml'), part_name, package='hello')
        self.run_snapcraft('prime')

        with open(os.path.join('snap', 'snapcraft.yaml')) as source_yaml_file:
            source_yaml = yaml.load(source_yaml_file)
        part_name = 'part-with-stage-package'
        expected_stage_packages = (
            source_yaml['parts'][part_name]['stage-packages'])
        # Add the dependency recorded by snapcraft.
        expected_stage_packages.insert(
            0, 'gcc-6-base={}'.format(integration_tests.get_package_version(
                'gcc-6-base', self.distro_series, self.deb_arch)))

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'snapcraft.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertEqual(
            recorded_yaml['parts'][part_name]['stage-packages'],
            expected_stage_packages)
コード例 #8
0
    def test_prime_with_packages_missing_dependency(self):
        """Test the recorded snapcraft.yaml for a snap with packages

        This snap declares one package that has undeclared dependencies.
        """
        self.copy_project_to_cwd('{}-missing-dependency'.format(
            self.packages_type))
        part_name = 'part-with-{}'.format(self.packages_type)
        self.set_package_version(
            self.packages_type,
            os.path.join('snap', 'snapcraft.yaml'), part_name, package='hello')
        self.run_snapcraft('prime')

        expected_packages = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in self.expected_packages
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'snapcraft.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertEqual(
            recorded_yaml['parts'][part_name][self.packages_type],
            expected_packages)
コード例 #9
0
    def test_pull_with_virtual_build_package(self):
        virtual_package = 'fortunes-off'
        self.addCleanup(
            subprocess.call, ['sudo', 'apt-get', 'remove', virtual_package])
        self.run_snapcraft('pull', 'build-virtual-package')

        state_file = os.path.join(
            'snap', '.snapcraft', 'state')
        with open(state_file) as f:
            state = yaml.load(f)
        self.assertIn(
            '{}={}'.format(
                virtual_package, integration_tests.get_package_version(
                    virtual_package, self.distro_series, self.deb_arch)),
            state.assets['build-packages'])
コード例 #10
0
    def test_prime_with_global_build_packages(self):
        """Test the recorded snapcraft.yaml for a snap with build packages

        This snap declares one global build package that has undeclared
        dependencies.
        """
        self.run_snapcraft('prime', 'build-package-global')

        expected_packages = [
            '{}={}'.format(
                package,
                integration_tests.get_package_version(
                    package, self.distro_series, self.deb_arch))
            for package in ['hello', 'libc6', 'libgcc1', 'gcc-6-base']
        ]

        recorded_yaml_path = os.path.join(
            self.prime_dir, 'snap', 'snapcraft.yaml')
        with open(recorded_yaml_path) as recorded_yaml_file:
            recorded_yaml = yaml.load(recorded_yaml_file)

        self.assertEqual(recorded_yaml['build-packages'], expected_packages)
コード例 #11
0
 def setUp(self):
     super().setUp()
     self.pkg_name = 'hello'
     self.pkg_version = integration_tests.get_package_version(
         self.pkg_name, self.distro_series, self.deb_arch)
     self.hello_package = '{}={}'.format(self.pkg_name, self.pkg_version)
コード例 #12
0
 def setUp(self):
     super().setUp()
     hello_version = integration_tests.get_package_version(
         'hello', self.distro_series, self.deb_arch)
     self.hello_package = 'hello={}'.format(hello_version)