diff options
author | Michael Hudson <michael.hudson@linaro.org> | 2010-12-17 13:56:26 +1300 |
---|---|---|
committer | Michael Hudson <michael.hudson@linaro.org> | 2010-12-17 13:56:26 +1300 |
commit | 82eceb142562c6402479515ec035ee99c6987749 (patch) | |
tree | 7d6f04a872ab97ae352aaae09a82cb6d60c32b02 /hwpack | |
parent | ab2b42b27b8df57babfdfc30b44c4b5fb954996f (diff) |
warn if a package supplied with --local-deb does not end up in the hwpack
Diffstat (limited to 'hwpack')
-rw-r--r-- | hwpack/builder.py | 21 | ||||
-rw-r--r-- | hwpack/testing.py | 11 | ||||
-rw-r--r-- | hwpack/tests/test_builder.py | 43 |
3 files changed, 65 insertions, 10 deletions
diff --git a/hwpack/builder.py b/hwpack/builder.py index f146570..022e429 100644 --- a/hwpack/builder.py +++ b/hwpack/builder.py @@ -49,15 +49,13 @@ class HardwarePackBuilder(object): hwpack.add_apt_sources(sources) sources = sources.values() packages = self.config.packages[:] - if self.local_debs: - fetched_packages = [ - FetchedPackage.from_deb(deb) - for deb in self.local_debs] - sources.append( - local_archive_maker.sources_entry_for_debs( - fetched_packages, LOCAL_ARCHIVE_LABEL)) - packages.extend( - [fp.name for fp in fetched_packages]) + local_packages = [ + FetchedPackage.from_deb(deb) + for deb in self.local_debs] + sources.append( + local_archive_maker.sources_entry_for_debs( + local_packages, LOCAL_ARCHIVE_LABEL)) + packages.extend([lp.name for lp in local_packages]) logger.info("Fetching packages") fetcher = PackageFetcher( sources, architecture=architecture, @@ -68,6 +66,11 @@ class HardwarePackBuilder(object): packages, download_content=self.config.include_debs) logger.debug("Adding packages to hwpack") hwpack.add_packages(packages) + for local_package in local_packages: + if local_package not in packages: + logger.error( + "Local package '%s' not included", + local_package.name) hwpack.add_dependency_package(self.config.packages) with open(hwpack.filename(), 'w') as f: hwpack.to_file(f) diff --git a/hwpack/testing.py b/hwpack/testing.py index eb3282a..dcf44c3 100644 --- a/hwpack/testing.py +++ b/hwpack/testing.py @@ -1,5 +1,6 @@ from contextlib import contextmanager import hashlib +import logging import os import shutil import subprocess @@ -668,3 +669,13 @@ def MatchesPackageRelationshipList(relationship_matchers): return [rel.strip() for rel in relationships.split(',')] return AfterPreproccessing( process, MatchesSetwise(*relationship_matchers)) + + +class AppendingHandler(logging.Handler): + """A logging handler that simply appends messages to a list.""" + + def __init__(self): + self.messages = [] + + def emit(self, message): + self.messages.append(message) diff --git a/hwpack/tests/test_builder.py b/hwpack/tests/test_builder.py index 1bfe833..2bb6b69 100644 --- a/hwpack/tests/test_builder.py +++ b/hwpack/tests/test_builder.py @@ -2,8 +2,13 @@ import os import tarfile from testtools import TestCase +from testtools.matchers import Equals -from hwpack.builder import ConfigFileMissing, HardwarePackBuilder +from hwpack.builder import ( + ConfigFileMissing, + HardwarePackBuilder, + logger as builder_logger, + ) from hwpack.config import HwpackConfigError from hwpack.hardwarepack import Metadata from hwpack.packages import ( @@ -12,12 +17,15 @@ from hwpack.packages import ( ) from hwpack.tarfile_matchers import TarfileHasFile from hwpack.testing import ( + AppendingHandler, AptSourceFixture, ChdirToTempdirFixture, ConfigFileFixture, ContextManagerFixture, DummyFetchedPackage, + EachOf, IsHardwarePack, + MatchesStructure, Not, TestCaseWithFixtures, ) @@ -230,3 +238,36 @@ class HardwarePackBuilderTests(TestCaseWithFixtures): metadata, [remote_package, local_package], sources_dict, package_spec=package_name)) + + def test_warn_if_not_including_local_deb(self): + package_name = "foo" + local_name = "bar" + maker = PackageMaker() + self.useFixture(ContextManagerFixture(maker)) + remote_package = DummyFetchedPackage(package_name, "1.1") + local_path = maker.make_package(local_name, "1.0", {}) + sources_dict = self.sourcesDictForPackages([remote_package]) + metadata, config = self.makeMetaDataAndConfigFixture( + [package_name], sources_dict, + extra_config={'assume-installed': local_name}) + builder = HardwarePackBuilder( + config.filename, metadata.version, [local_path]) + + handler = AppendingHandler() + builder_logger.addHandler(handler) + self.addCleanup(builder_logger.removeHandler, handler) + + builder.build() + self.assertThat( + "hwpack_%s_%s_%s.tar.gz" % ( + metadata.name, metadata.version, metadata.architecture), + IsHardwarePack( + metadata, [remote_package], + sources_dict, + package_spec=package_name)) + self.assertThat( + handler.messages, + EachOf([MatchesStructure(levelname=Equals('ERROR'))])) + self.assertThat( + handler.messages[0].getMessage(), + Equals("Local package 'bar' not included")) |