aboutsummaryrefslogtreecommitdiff
path: root/hwpack
diff options
context:
space:
mode:
authorMichael Hudson <michael.hudson@linaro.org>2010-12-17 13:56:26 +1300
committerMichael Hudson <michael.hudson@linaro.org>2010-12-17 13:56:26 +1300
commit82eceb142562c6402479515ec035ee99c6987749 (patch)
tree7d6f04a872ab97ae352aaae09a82cb6d60c32b02 /hwpack
parentab2b42b27b8df57babfdfc30b44c4b5fb954996f (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.py21
-rw-r--r--hwpack/testing.py11
-rw-r--r--hwpack/tests/test_builder.py43
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"))