Merge ~cjwatson/launchpad:fix-copy-signingkeys-options into launchpad:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 0438481baa020fb5bdc0b589e773b15279615bd3
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad:fix-copy-signingkeys-options
Merge into: launchpad:master
Diff against target: 91 lines (+43/-1)
2 files modified
lib/lp/archivepublisher/scripts/copy_signingkeys.py (+2/-1)
lib/lp/archivepublisher/tests/test_copy_signingkeys.py (+41/-0)
Reviewer Review Type Date Requested Status
Tom Wardill (community) Approve
Review via email: mp+396589@code.launchpad.net

Commit message

Fix option processing in copy-signingkeys

Description of the change

LaunchpadScript.__init__ runs handle_options before the component architecture has been set up, so we need to process our options a bit later.

To post a comment you must log in.
Revision history for this message
Tom Wardill (twom) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/archivepublisher/scripts/copy_signingkeys.py b/lib/lp/archivepublisher/scripts/copy_signingkeys.py
2index 7d7be1d..e4a46bd 100644
3--- a/lib/lp/archivepublisher/scripts/copy_signingkeys.py
4+++ b/lib/lp/archivepublisher/scripts/copy_signingkeys.py
5@@ -69,7 +69,7 @@ class CopySigningKeysScript(LaunchpadScript):
6 "Could not find series '%s' in %s." %
7 (series_name, self.from_archive.distribution.display_name))
8
9- def handle_options(self):
10+ def processOptions(self):
11 if len(self.args) != 2:
12 self.parser.print_help()
13 sys.exit(1)
14@@ -103,6 +103,7 @@ class CopySigningKeysScript(LaunchpadScript):
15 to_archive, series, from_archive_signing_key.signing_key)
16
17 def main(self):
18+ self.processOptions()
19 for key_type in self.key_types:
20 self.copy(
21 self.from_archive, self.to_archive, key_type,
22diff --git a/lib/lp/archivepublisher/tests/test_copy_signingkeys.py b/lib/lp/archivepublisher/tests/test_copy_signingkeys.py
23index bc179ed..049bf95 100644
24--- a/lib/lp/archivepublisher/tests/test_copy_signingkeys.py
25+++ b/lib/lp/archivepublisher/tests/test_copy_signingkeys.py
26@@ -12,6 +12,7 @@ from testtools.matchers import (
27 MatchesSetwise,
28 MatchesStructure,
29 )
30+import transaction
31
32 from lp.archivepublisher.scripts.copy_signingkeys import CopySigningKeysScript
33 from lp.services.config import config
34@@ -23,6 +24,7 @@ from lp.services.signing.model.signingkey import ArchiveSigningKey
35 from lp.services.utils import CapturedOutput
36 from lp.testing import TestCaseWithFactory
37 from lp.testing.layers import ZopelessDatabaseLayer
38+from lp.testing.script import run_script
39
40
41 class TestCopySigningKeysScript(TestCaseWithFactory):
42@@ -39,6 +41,7 @@ class TestCopySigningKeysScript(TestCaseWithFactory):
43 script = CopySigningKeysScript(
44 "copy-signingkeys", dbuser=config.archivepublisher.dbuser,
45 test_args=test_args)
46+ script.processOptions()
47 except SystemExit:
48 exited = True
49 else:
50@@ -300,3 +303,41 @@ class TestCopySigningKeysScript(TestCaseWithFactory):
51 archive=archives[1], earliest_distro_series=None,
52 key_type=SigningKeyType.UEFI, signing_key=signing_keys[1]),
53 ))
54+
55+ def runScript(self, args=None):
56+ transaction.commit()
57+ ret, out, err = run_script("scripts/copy-signingkeys.py", args=args)
58+ if out:
59+ self.addDetail("stdout", text_content(out))
60+ if err:
61+ self.addDetail("stderr", text_content(err))
62+ self.assertEqual(0, ret)
63+ transaction.commit()
64+
65+ def test_script(self):
66+ archives = [self.factory.makeArchive() for _ in range(2)]
67+ signing_keys = [
68+ self.factory.makeSigningKey(key_type=key_type)
69+ for key_type in (SigningKeyType.UEFI, SigningKeyType.KMOD)]
70+ for signing_key in signing_keys[:2]:
71+ self.factory.makeArchiveSigningKey(
72+ archive=archives[0], signing_key=signing_key)
73+
74+ self.runScript(args=[archive.reference for archive in archives])
75+
76+ self.assertThat(
77+ self.findKeys(archives),
78+ MatchesSetwise(
79+ MatchesStructure.byEquality(
80+ archive=archives[0], earliest_distro_series=None,
81+ key_type=SigningKeyType.UEFI, signing_key=signing_keys[0]),
82+ MatchesStructure.byEquality(
83+ archive=archives[0], earliest_distro_series=None,
84+ key_type=SigningKeyType.KMOD, signing_key=signing_keys[1]),
85+ MatchesStructure.byEquality(
86+ archive=archives[1], earliest_distro_series=None,
87+ key_type=SigningKeyType.UEFI, signing_key=signing_keys[0]),
88+ MatchesStructure.byEquality(
89+ archive=archives[1], earliest_distro_series=None,
90+ key_type=SigningKeyType.KMOD, signing_key=signing_keys[1]),
91+ ))

Subscribers

People subscribed via source and target branches

to status/vote changes: