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))
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))
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))
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)
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)
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'])
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)
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)
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)