diff options
author | Michael Hudson <michael.hudson@linaro.org> | 2010-12-14 11:45:11 +1300 |
---|---|---|
committer | Michael Hudson <michael.hudson@linaro.org> | 2010-12-14 11:45:11 +1300 |
commit | 603899d28a4db15d35c846399f2dc3ad6be60362 (patch) | |
tree | 850632c7e31efbcd88643cb7b0e147f686bbebf7 /hwpack | |
parent | 5e4c7348d9c7d4ab791e2d4f9fbaf3921f841b3c (diff) |
mostly revert r199
Diffstat (limited to 'hwpack')
-rw-r--r-- | hwpack/builder.py | 2 | ||||
-rw-r--r-- | hwpack/hardwarepack.py | 38 | ||||
-rw-r--r-- | hwpack/testing.py | 25 | ||||
-rw-r--r-- | hwpack/tests/test_hardwarepack.py | 131 |
4 files changed, 56 insertions, 140 deletions
diff --git a/hwpack/builder.py b/hwpack/builder.py index 774afee..f37a83c 100644 --- a/hwpack/builder.py +++ b/hwpack/builder.py @@ -41,6 +41,6 @@ class HardwarePackBuilder(object): self.config.packages, download_content=self.config.include_debs) hwpack.add_packages(packages) - hwpack.add_dependency_packages(self.config.packages) + hwpack.add_dependency_package(self.config.packages) with open(hwpack.filename(), 'w') as f: hwpack.to_file(f) diff --git a/hwpack/hardwarepack.py b/hwpack/hardwarepack.py index 64f559e..2891eba 100644 --- a/hwpack/hardwarepack.py +++ b/hwpack/hardwarepack.py @@ -163,46 +163,20 @@ class HardwarePack(object): """ self.packages += packages - def add_dependency_packages(self, packages_spec): - """Add package that depends on those already present to the pack. - - This method will add two packages. One will be called 'hwpack-' + the - name of the pack and will depend on the exact versions of every - package in the hwpack. The other will have -latest appended to the - name and will depend on `package_spec`, which is assumed to be the - package specification the hardware pack was built with. - - The added packages will share version and architecture of the hardware - pack itself and will Replace/Break each other. + def add_dependency_package(self, packages_spec): + """Add a packge that depends on packages_spec to the hardware pack. :param packages_spec: A list of apt package specifications, e.g. ``['foo', 'bar (>= 1.2)']``. """ with PackageMaker() as maker: dep_package_name = 'hwpack-' + self.metadata.name - latest_dep_package_name = dep_package_name + '-latest' - - dep_relationships = { - 'Replaces': latest_dep_package_name, - 'Breaks': latest_dep_package_name - } - deps = ['%s (= %s)'%(p.name, p.version) for p in self.packages] - if deps: - dep_relationships['Depends'] = ', '.join(deps) - deb_file_path = maker.make_package( - dep_package_name, self.metadata.version, - dep_relationships, self.metadata.architecture) - self.packages.append(FetchedPackage.from_deb(deb_file_path)) - - latest_dep_relationships = { - 'Replaces': dep_package_name, - 'Breaks': dep_package_name - } + relationships = {} if packages_spec: - latest_dep_relationships['Depends'] = ', '.join(packages_spec) + relationships = {'Depends': ', '.join(packages_spec)} deb_file_path = maker.make_package( - latest_dep_package_name, self.metadata.version, - latest_dep_relationships, self.metadata.architecture) + dep_package_name, self.metadata.version, + relationships, self.metadata.architecture) self.packages.append(FetchedPackage.from_deb(deb_file_path)) def to_file(self, fileobj): diff --git a/hwpack/testing.py b/hwpack/testing.py index 1c1e782..70bd659 100644 --- a/hwpack/testing.py +++ b/hwpack/testing.py @@ -356,10 +356,6 @@ class IsHardwarePack(Matcher): manifest_lines.append( "%s=%s" % ( 'hwpack-' + self.metadata.name, self.metadata.version)) - manifest_lines.append( - "%s=%s" % ( - 'hwpack-' + self.metadata.name + '-latest', - self.metadata.version)) matchers.append( HardwarePackHasFile( "manifest", @@ -375,22 +371,15 @@ class IsHardwarePack(Matcher): content=package.content.read())) package_matchers = [ MatchesPackage(p) for p in packages_with_content] - dep_package_depedencies_matchers = [ - Equals('%s (= %s)' % (p.name, p.version)) for p in self.packages] dep_package_matcher = MatchesStructure( - name=Equals('hwpack-' + self.metadata.name), - version=Equals(self.metadata.version), - architecture=Equals(self.metadata.architecture), - depends=MatchesPackageRelationshipList( - dep_package_depedencies_matchers)) - package_matchers.append(dep_package_matcher) - latest_dep_package_matcher = MatchesStructure( - name=Equals('hwpack-' + self.metadata.name + '-latest'), - version=Equals(self.metadata.version), - architecture=Equals(self.metadata.architecture)) + name=Equals('hwpack-' + self.metadata.name), + version=Equals(self.metadata.version), + architecture=Equals(self.metadata.architecture)) if self.package_spec: - latest_dep_package_matcher.update(depends=self.package_spec) - package_matchers.append(latest_dep_package_matcher) + dep_package_matcher = dep_package_matcher.update( + depends=MatchesPackageRelationshipList( + [Equals(p.strip()) for p in self.package_spec.split(',')])) + package_matchers.append(dep_package_matcher) matchers.append(HardwarePackHasFile( "pkgs/Packages", content_matcher=MatchesAsPackagesFile( diff --git a/hwpack/tests/test_hardwarepack.py b/hwpack/tests/test_hardwarepack.py index ddca484..786d985 100644 --- a/hwpack/tests/test_hardwarepack.py +++ b/hwpack/tests/test_hardwarepack.py @@ -10,10 +10,8 @@ from hwpack.packages import get_packages_file from hwpack.testing import ( DummyFetchedPackage, HardwarePackHasFile, - MatchesAll, MatchesAsPackagesFile, MatchesAsPackageContent, - MatchesPackage, MatchesPackageRelationshipList, MatchesStructure, Not, @@ -229,101 +227,56 @@ class HardwarePackTests(TestCase): tf, Not(HardwarePackHasFile("pkgs/%s" % package1.filename))) - def matcher_for_dependency_package(self, metadata, packages): - dep_package_name = 'hwpack-%s' % metadata.name - latest_dep_package_name = 'hwpack-%s-latest' % metadata.name - if packages == []: - dep_matcher = Equals(None) - else: - dep_matcher = MatchesPackageRelationshipList( - [Equals('%s (= %s)' % (p.name, p.version)) for p in packages]) - return MatchesStructure( - name=Equals(dep_package_name), - architecture=Equals(self.metadata.architecture), - breaks=Equals(latest_dep_package_name), - replaces=Equals(latest_dep_package_name), - depends=dep_matcher, - version=Equals(self.metadata.version)) - - def matcher_for_latest_dependency_package(self, metadata, package_spec): - dep_package_name = 'hwpack-%s' % metadata.name - latest_dep_package_name = 'hwpack-%s-latest' % metadata.name - if package_spec == []: - dep_matcher = Equals(None) - else: - dep_matcher = MatchesPackageRelationshipList( - [Equals(p) for p in package_spec]) - return MatchesStructure( - name=Equals(latest_dep_package_name), - architecture=Equals(metadata.architecture), - depends=dep_matcher, - breaks=Equals(dep_package_name), - replaces=Equals(dep_package_name), - version=Equals(metadata.version)) - - def test_add_dependency_package_adds_packages(self): + def test_add_dependency_package_adds_package(self): hwpack = HardwarePack(self.metadata) - hwpack.add_dependency_packages([]) + hwpack.add_dependency_package([]) tf = self.get_tarfile(hwpack) - dep_package_matcher = self.matcher_for_dependency_package( - self.metadata, []) - latest_dep_package_matcher = self.matcher_for_latest_dependency_package( - self.metadata, []) self.assertThat( tf, - MatchesAll( - HardwarePackHasFile( - "pkgs/%s_%s_%s.deb" % ( - 'hwpack-' + self.metadata.name, self.metadata.version, - self.metadata.architecture), - content_matcher=MatchesAsPackageContent( - dep_package_matcher)), - HardwarePackHasFile( - "pkgs/%s_%s_%s.deb" % ( - 'hwpack-' + self.metadata.name + '-latest', - self.metadata.version, self.metadata.architecture), - content_matcher=MatchesAsPackageContent( - latest_dep_package_matcher)), - HardwarePackHasFile( - "pkgs/Packages", - content_matcher=MatchesAsPackagesFile( - dep_package_matcher, - latest_dep_package_matcher)))) - - - def test_add_dependency_package_adds_packages_with_dependency(self): + HardwarePackHasFile( + "pkgs/%s_%s_%s.deb" % ( + 'hwpack-' + self.metadata.name, self.metadata.version, + self.metadata.architecture), + content_matcher=MatchesAsPackageContent( + MatchesStructure( + name=Equals('hwpack-' + self.metadata.name), + architecture=Equals(self.metadata.architecture), + depends=Equals(None), + version=Equals(self.metadata.version))))) + + def test_add_dependency_package_adds_package_with_dependency(self): + hwpack = HardwarePack(self.metadata) + hwpack.add_dependency_package(["foo", "bar (= 1.0)"]) + tf = self.get_tarfile(hwpack) + self.assertThat( + tf, + HardwarePackHasFile( + "pkgs/%s_%s_%s.deb" % ( + 'hwpack-' + self.metadata.name, self.metadata.version, + self.metadata.architecture), + content_matcher=MatchesAsPackageContent( + MatchesStructure( + name=Equals('hwpack-' + self.metadata.name), + architecture=Equals(self.metadata.architecture), + depends=MatchesPackageRelationshipList( + [Equals("foo"), Equals("bar (= 1.0)")]), + version=Equals(self.metadata.version))))) + + def test_add_dependency_package_adds_package_to_Packages(self): hwpack = HardwarePack(self.metadata) - packages = [DummyFetchedPackage("foo", '2.0'), - DummyFetchedPackage("bar", '1.0')] - hwpack.add_packages(packages) - hwpack.add_dependency_packages(["foo", "bar (= 1.0)"]) + hwpack.add_dependency_package(["foo", "bar (= 1.0)"]) tf = self.get_tarfile(hwpack) - dep_package_matcher = self.matcher_for_dependency_package( - self.metadata, packages) - latest_dep_package_matcher = self.matcher_for_latest_dependency_package( - self.metadata, ["foo", "bar (= 1.0)"]) self.assertThat( tf, - MatchesAll( - HardwarePackHasFile( - "pkgs/%s_%s_%s.deb" % ( - 'hwpack-' + self.metadata.name, self.metadata.version, - self.metadata.architecture), - content_matcher=MatchesAsPackageContent( - dep_package_matcher)), - HardwarePackHasFile( - "pkgs/%s_%s_%s.deb" % ( - 'hwpack-' + self.metadata.name + '-latest', - self.metadata.version, self.metadata.architecture), - content_matcher=MatchesAsPackageContent( - latest_dep_package_matcher)), - HardwarePackHasFile( - "pkgs/Packages", - content_matcher=MatchesAsPackagesFile( - dep_package_matcher, - latest_dep_package_matcher, - *map(MatchesPackage, packages))), - )) + HardwarePackHasFile( + "pkgs/Packages", + content_matcher=MatchesAsPackagesFile( + MatchesStructure( + name=Equals('hwpack-' + self.metadata.name), + architecture=Equals(self.metadata.architecture), + depends=MatchesPackageRelationshipList( + [Equals("foo"), Equals("bar (= 1.0)")]), + version=Equals(self.metadata.version))))) def test_creates_Packages_file(self): hwpack = HardwarePack(self.metadata) |