Merge ~cjwatson/launchpad-buildd:ttb-git into launchpad-buildd:master

Proposed by Colin Watson
Status: Merged
Approved by: Colin Watson
Approved revision: 63b920feffbe405e69997b9475b83fb0bb54cc07
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~cjwatson/launchpad-buildd:ttb-git
Merge into: launchpad-buildd:master
Diff against target: 496 lines (+209/-115)
5 files modified
debian/changelog (+2/-0)
lpbuildd/target/generate_translation_templates.py (+24/-39)
lpbuildd/target/tests/test_generate_translation_templates.py (+166/-71)
lpbuildd/tests/test_translationtemplatesbuildmanager.py (+1/-1)
lpbuildd/translationtemplates.py (+16/-4)
Reviewer Review Type Date Requested Status
Ioana Lasc (community) Approve
Review via email: mp+383063@code.launchpad.net

Commit message

Convert translation templates builds to the VCS mixin

Description of the change

This adds git support. There'll be a fair bit of work needed on the Launchpad side before this is useful, but we might as well get started here.

This is essentially the same as https://code.launchpad.net/~cjwatson/launchpad-buildd/ttb-git/+merge/341389, converted to git and rebased on master.

To post a comment you must log in.
Revision history for this message
Ioana Lasc (ilasc) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/debian/changelog b/debian/changelog
index b6abb76..867b35e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -19,6 +19,8 @@ launchpad-buildd (190) UNRELEASED; urgency=medium
19 * Only include mock in tests_require for Python 2.19 * Only include mock in tests_require for Python 2.
20 * Fix snap proxy testing for Python 3.20 * Fix snap proxy testing for Python 3.
21 * Rename [slave] configuration section to [builder].21 * Rename [slave] configuration section to [builder].
22 * Convert translation templates builds to the VCS mixin, thereby adding
23 git support.
2224
23 -- Colin Watson <cjwatson@ubuntu.com> Tue, 28 Apr 2020 10:19:27 +010025 -- Colin Watson <cjwatson@ubuntu.com> Tue, 28 Apr 2020 10:19:27 +0100
2426
diff --git a/lpbuildd/target/generate_translation_templates.py b/lpbuildd/target/generate_translation_templates.py
index 3e44af7..1e708ba 100644
--- a/lpbuildd/target/generate_translation_templates.py
+++ b/lpbuildd/target/generate_translation_templates.py
@@ -10,6 +10,7 @@ import os.path
1010
11from lpbuildd.pottery import intltool11from lpbuildd.pottery import intltool
12from lpbuildd.target.operation import Operation12from lpbuildd.target.operation import Operation
13from lpbuildd.target.vcs import VCSOperationMixin
1314
1415
15logger = logging.getLogger(__name__)16logger = logging.getLogger(__name__)
@@ -19,7 +20,7 @@ RETCODE_FAILURE_INSTALL = 200
19RETCODE_FAILURE_BUILD = 20120RETCODE_FAILURE_BUILD = 201
2021
2122
22class GenerateTranslationTemplates(Operation):23class GenerateTranslationTemplates(VCSOperationMixin, Operation):
23 """Script to generate translation templates from a branch."""24 """Script to generate translation templates from a branch."""
2425
25 description = "Generate templates for a branch."26 description = "Generate templates for a branch."
@@ -28,42 +29,24 @@ class GenerateTranslationTemplates(Operation):
28 def add_arguments(cls, parser):29 def add_arguments(cls, parser):
29 super(GenerateTranslationTemplates, cls).add_arguments(parser)30 super(GenerateTranslationTemplates, cls).add_arguments(parser)
30 parser.add_argument(31 parser.add_argument(
31 "branch_spec", help=(
32 "A branch URL or the path of a local branch. URLs are "
33 "recognised by the occurrence of ':'. In the case of a URL, "
34 "this will make up a path for the branch and check out the "
35 "branch to there."))
36 parser.add_argument(
37 "result_name",32 "result_name",
38 help="The name of the result tarball. Should end in '.tar.gz'.")33 help="the name of the result tarball; should end in '.tar.gz'")
3934
40 def __init__(self, args, parser):35 def __init__(self, args, parser):
41 super(GenerateTranslationTemplates, self).__init__(args, parser)36 super(GenerateTranslationTemplates, self).__init__(args, parser)
42 self.work_dir = os.environ["HOME"]37 self.work_dir = os.environ["HOME"]
38 self.branch_dir = os.path.join(self.work_dir, "source-tree")
39
40 def install(self):
41 logger.info("Installing dependencies...")
42 deps = ["intltool"]
43 deps.extend(self.vcs_deps)
44 self.backend.run(["apt-get", "-y", "install"] + deps)
4345
44 def _getBranch(self):46 def fetch(self, quiet=False):
45 """Set `self.branch_dir`, and check out branch if needed."""47 logger.info("Fetching %s...", self.vcs_description)
46 if ':' in self.args.branch_spec:48 self.vcs_fetch(
47 # This is a branch URL. Check out the branch.49 os.path.basename(self.branch_dir), cwd=self.work_dir, quiet=quiet)
48 self.branch_dir = os.path.join(self.work_dir, 'source-tree')
49 logger.info("Getting remote branch %s..." % self.args.branch_spec)
50 self._checkout(self.args.branch_spec)
51 else:
52 # This is a local filesystem path. Use the branch in-place.
53 logger.info("Using local branch %s..." % self.args.branch_spec)
54 self.branch_dir = self.args.branch_spec
55
56 def _checkout(self, branch_url):
57 """Check out a source branch to generate from.
58
59 The branch is checked out to the location specified by
60 `self.branch_dir`.
61 """
62 logger.info(
63 "Exporting branch %s to %s..." % (branch_url, self.branch_dir))
64 self.backend.run(
65 ["bzr", "export", "-q", "-d", branch_url, self.branch_dir])
66 logger.info("Exporting branch done.")
6750
68 def _makeTarball(self, files):51 def _makeTarball(self, files):
69 """Put the given files into a tarball in the working directory."""52 """Put the given files into a tarball in the working directory."""
@@ -78,21 +61,23 @@ class GenerateTranslationTemplates(Operation):
78 self.backend.run(cmd)61 self.backend.run(cmd)
79 logger.info("Tarball generated.")62 logger.info("Tarball generated.")
8063
64 def generate(self):
65 logger.info("Generating templates...")
66 pots = intltool.generate_pots(self.backend, self.branch_dir)
67 logger.info("Generated %d templates." % len(pots))
68 if len(pots) > 0:
69 self._makeTarball(pots)
70
81 def run(self):71 def run(self):
82 """Do It. Generate templates."""72 """Do It. Generate templates."""
83 try:73 try:
84 self.backend.run(["apt-get", "-y", "install", "bzr", "intltool"])74 self.install()
85 except Exception:75 except Exception:
86 logger.exception("Install failed")76 logger.exception("Install failed")
87 return RETCODE_FAILURE_INSTALL77 return RETCODE_FAILURE_INSTALL
88 try:78 try:
89 logger.info(79 self.fetch()
90 "Generating templates for %s." % self.args.branch_spec)80 self.generate()
91 self._getBranch()
92 pots = intltool.generate_pots(self.backend, self.branch_dir)
93 logger.info("Generated %d templates." % len(pots))
94 if len(pots) > 0:
95 self._makeTarball(pots)
96 except Exception:81 except Exception:
97 logger.exception("Build failed")82 logger.exception("Build failed")
98 return RETCODE_FAILURE_BUILD83 return RETCODE_FAILURE_BUILD
diff --git a/lpbuildd/target/tests/test_generate_translation_templates.py b/lpbuildd/target/tests/test_generate_translation_templates.py
index 16f6848..864e595 100644
--- a/lpbuildd/target/tests/test_generate_translation_templates.py
+++ b/lpbuildd/target/tests/test_generate_translation_templates.py
@@ -15,23 +15,37 @@ from fixtures import (
15from testtools import TestCase15from testtools import TestCase
16from testtools.matchers import (16from testtools.matchers import (
17 ContainsDict,17 ContainsDict,
18 EndsWith,
19 Equals,18 Equals,
19 Is,
20 MatchesDict,
20 MatchesListwise,21 MatchesListwise,
21 MatchesSetwise,22 MatchesSetwise,
22 )23 )
2324
24from lpbuildd.target.cli import parse_args25from lpbuildd.target.cli import parse_args
25from lpbuildd.tests.fakebuilder import FakeMethod
2626
2727
28class MatchesCall(MatchesListwise):28class RanCommand(MatchesListwise):
2929
30 def __init__(self, *args, **kwargs):30 def __init__(self, args, get_output=None, echo=None, cwd=None, **env):
31 super(MatchesCall, self).__init__([31 kwargs_matcher = {}
32 Equals(args),32 if get_output is not None:
33 ContainsDict(33 kwargs_matcher["get_output"] = Is(get_output)
34 {name: Equals(value) for name, value in kwargs.items()})])34 if echo is not None:
35 kwargs_matcher["echo"] = Is(echo)
36 if cwd:
37 kwargs_matcher["cwd"] = Equals(cwd)
38 if env:
39 kwargs_matcher["env"] = MatchesDict(
40 {key: Equals(value) for key, value in env.items()})
41 super(RanCommand, self).__init__(
42 [Equals((args,)), ContainsDict(kwargs_matcher)])
43
44
45class RanAptGet(RanCommand):
46
47 def __init__(self, *args):
48 super(RanAptGet, self).__init__(["apt-get", "-y"] + list(args))
3549
3650
37class TestGenerateTranslationTemplates(TestCase):51class TestGenerateTranslationTemplates(TestCase):
@@ -45,82 +59,125 @@ class TestGenerateTranslationTemplates(TestCase):
45 self.useFixture(EnvironmentVariable("HOME", self.home_dir))59 self.useFixture(EnvironmentVariable("HOME", self.home_dir))
46 self.logger = self.useFixture(FakeLogger())60 self.logger = self.useFixture(FakeLogger())
4761
48 def test_getBranch_url(self):62 def make_branch_contents(self, content_map):
49 # If passed a branch URL, the template generation script will63 """Create a directory with the contents of a working branch.
50 # check out that branch into a directory called "source-tree."64
65 :param content_map: A dict mapping file names to file contents.
66 Each of these files with their contents will be written to the
67 branch. Currently only supports writing files at the root
68 directory of the branch.
69 """
70 branch_path = self.useFixture(TempDir()).path
71 for name, contents in content_map.items():
72 with open(os.path.join(branch_path, name), 'wb') as f:
73 f.write(contents)
74 return branch_path
75
76 def make_bzr_branch(self, branch_path):
77 """Make a bzr branch from an existing directory."""
78 bzr_home = self.useFixture(TempDir()).path
79 self.useFixture(EnvironmentVariable("BZR_HOME", bzr_home))
80 self.useFixture(EnvironmentVariable("BZR_EMAIL"))
81 self.useFixture(EnvironmentVariable("EMAIL"))
82
83 subprocess.check_call(["bzr", "init", "-q"], cwd=branch_path)
84 subprocess.check_call(["bzr", "add", "-q"], cwd=branch_path)
85 committer_id = "Committer <committer@example.com>"
86 with EnvironmentVariable("BZR_EMAIL", committer_id):
87 subprocess.check_call(
88 ["bzr", "commit", "-q", "-m", "Populating branch."],
89 cwd=branch_path)
90
91 def make_git_branch(self, branch_path):
92 subprocess.check_call(["git", "init", "-q"], cwd=branch_path)
93 subprocess.check_call(
94 ["git", "config", "user.name", "Committer"], cwd=branch_path)
95 subprocess.check_call(
96 ["git", "config", "user.email", "committer@example.com"],
97 cwd=branch_path)
98 subprocess.check_call(["git", "add", "."], cwd=branch_path)
99 subprocess.check_call(
100 ["git", "commit", "-q", "--allow-empty",
101 "-m", "Populating branch"],
102 cwd=branch_path)
103
104 def test_install_bzr(self):
51 args = [105 args = [
52 "generate-translation-templates",106 "generate-translation-templates",
53 "--backend=fake", "--series=xenial", "--arch=amd64", "1",107 "--backend=fake", "--series=xenial", "--arch=amd64", "1",
54 "lp://~my/translation/branch", self.result_name,108 "--branch", "lp:foo", self.result_name,
55 ]109 ]
56 generator = parse_args(args=args).operation110 generator = parse_args(args=args).operation
57 generator._checkout = FakeMethod()111 generator.install()
58 generator._getBranch()112 self.assertThat(generator.backend.run.calls, MatchesListwise([
59113 RanAptGet("install", "intltool", "bzr"),
60 self.assertEqual(1, generator._checkout.call_count)114 ]))
61 self.assertThat(generator.branch_dir, EndsWith("source-tree"))
62115
63 def test_getBranch_dir(self):116 def test_install_git(self):
64 # If passed a branch directory, the template generation script
65 # works directly in that directory.
66 branch_dir = "/home/me/branch"
67 args = [117 args = [
68 "generate-translation-templates",118 "generate-translation-templates",
69 "--backend=fake", "--series=xenial", "--arch=amd64", "1",119 "--backend=fake", "--series=xenial", "--arch=amd64", "1",
70 branch_dir, self.result_name,120 "--git-repository", "lp:foo", self.result_name,
71 ]121 ]
72 generator = parse_args(args=args).operation122 generator = parse_args(args=args).operation
73 generator._checkout = FakeMethod()123 generator.install()
74 generator._getBranch()124 self.assertThat(generator.backend.run.calls, MatchesListwise([
75125 RanAptGet("install", "intltool", "git"),
76 self.assertEqual(0, generator._checkout.call_count)126 ]))
77 self.assertEqual(branch_dir, generator.branch_dir)
78127
79 def _createBranch(self, content_map=None):128 def test_fetch_bzr(self):
80 """Create a working branch.129 # fetch can retrieve branch contents from a Bazaar branch.
130 marker_text = "Ceci n'est pas cet branch."
131 branch_path = self.make_branch_contents({'marker.txt': marker_text})
132 self.make_bzr_branch(branch_path)
81133
82 :param content_map: optional dict mapping file names to file134 args = [
83 contents. Each of these files with their contents will be135 "generate-translation-templates",
84 written to the branch. Currently only supports writing files at136 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",
85 the root directory of the branch.137 "--branch", branch_path, self.result_name,
138 ]
139 generator = parse_args(args=args).operation
140 generator.fetch(quiet=True)
86141
87 :return: the URL of a fresh bzr branch.142 marker_path = os.path.join(generator.branch_dir, 'marker.txt')
88 """143 with open(marker_path) as marker_file:
89 branch_path = self.useFixture(TempDir()).path144 self.assertEqual(marker_text, marker_file.read())
90 branch_url = 'file://' + branch_path
91 subprocess.check_call(['bzr', 'init', '-q'], cwd=branch_path)
92145
93 if content_map is not None:146 def test_fetch_git(self):
94 for name, contents in content_map.items():147 # fetch can retrieve branch contents from a Git repository.
95 with open(os.path.join(branch_path, name), 'wb') as f:148 marker_text = b"Ceci n'est pas cet branch."
96 f.write(contents)149 branch_path = self.make_branch_contents({'marker.txt': marker_text})
97 subprocess.check_call(150 self.make_git_branch(branch_path)
98 ['bzr', 'add', '-q'] + list(content_map), cwd=branch_path)
99 committer_id = 'Committer <committer@example.com>'
100 with EnvironmentVariable('BZR_EMAIL', committer_id):
101 subprocess.check_call(
102 ['bzr', 'commit', '-q', '-m', 'Populating branch.'],
103 cwd=branch_path)
104151
105 return branch_url152 args = [
153 "generate-translation-templates",
154 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",
155 "--git-repository", branch_path, self.result_name,
156 ]
157 generator = parse_args(args=args).operation
158 generator.fetch(quiet=True)
106159
107 def test_getBranch_bzr(self):160 marker_path = os.path.join(generator.branch_dir, 'marker.txt')
108 # _getBranch can retrieve branch contents from a branch URL.161 with open(marker_path, "rb") as marker_file:
109 bzr_home = self.useFixture(TempDir()).path162 self.assertEqual(marker_text, marker_file.read())
110 self.useFixture(EnvironmentVariable('BZR_HOME', bzr_home))
111 self.useFixture(EnvironmentVariable('BZR_EMAIL'))
112 self.useFixture(EnvironmentVariable('EMAIL'))
113163
164 def test_fetch_git_with_path(self):
165 # fetch can retrieve branch contents from a Git repository and
166 # branch name.
114 marker_text = b"Ceci n'est pas cet branch."167 marker_text = b"Ceci n'est pas cet branch."
115 branch_url = self._createBranch({'marker.txt': marker_text})168 branch_path = self.make_branch_contents({'marker.txt': marker_text})
169 self.make_git_branch(branch_path)
170 subprocess.call(
171 ["git", "branch", "-m", "master", "next"], cwd=branch_path)
116172
117 args = [173 args = [
118 "generate-translation-templates",174 "generate-translation-templates",
119 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",175 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",
120 branch_url, self.result_name,176 "--git-repository", branch_path, "--git-path", "next",
177 self.result_name,
121 ]178 ]
122 generator = parse_args(args=args).operation179 generator = parse_args(args=args).operation
123 generator._getBranch()180 generator.fetch(quiet=True)
124181
125 marker_path = os.path.join(generator.branch_dir, 'marker.txt')182 marker_path = os.path.join(generator.branch_dir, 'marker.txt')
126 with open(marker_path, "rb") as marker_file:183 with open(marker_path, "rb") as marker_file:
@@ -136,22 +193,23 @@ class TestGenerateTranslationTemplates(TestCase):
136 potnames = [193 potnames = [
137 member.name194 member.name
138 for member in tar.getmembers() if not member.isdir()]195 for member in tar.getmembers() if not member.isdir()]
196 self.make_bzr_branch(branchdir)
139197
140 args = [198 args = [
141 "generate-translation-templates",199 "generate-translation-templates",
142 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",200 "--backend=uncontained", "--series=xenial", "--arch=amd64", "1",
143 branchdir, self.result_name,201 "--branch", branchdir, self.result_name,
144 ]202 ]
145 generator = parse_args(args=args).operation203 generator = parse_args(args=args).operation
146 generator._getBranch()204 generator.fetch(quiet=True)
147 generator._makeTarball(potnames)205 generator._makeTarball(potnames)
148 result_path = os.path.join(self.home_dir, self.result_name)206 result_path = os.path.join(self.home_dir, self.result_name)
149 with tarfile.open(result_path, 'r|*') as tar:207 with tarfile.open(result_path, 'r|*') as tar:
150 tarnames = tar.getnames()208 tarnames = tar.getnames()
151 self.assertThat(tarnames, MatchesSetwise(*(map(Equals, potnames))))209 self.assertThat(tarnames, MatchesSetwise(*(map(Equals, potnames))))
152210
153 def test_run(self):211 def test_run_bzr(self):
154 # Install dependencies and generate a templates tarball.212 # Install dependencies and generate a templates tarball from Bazaar.
155 branch_url = "lp:~my/branch"213 branch_url = "lp:~my/branch"
156 branch_dir = os.path.join(self.home_dir, "source-tree")214 branch_dir = os.path.join(self.home_dir, "source-tree")
157 po_dir = os.path.join(branch_dir, "po")215 po_dir = os.path.join(branch_dir, "po")
@@ -160,7 +218,40 @@ class TestGenerateTranslationTemplates(TestCase):
160 args = [218 args = [
161 "generate-translation-templates",219 "generate-translation-templates",
162 "--backend=fake", "--series=xenial", "--arch=amd64", "1",220 "--backend=fake", "--series=xenial", "--arch=amd64", "1",
163 branch_url, self.result_name,221 "--branch", branch_url, self.result_name,
222 ]
223 generator = parse_args(args=args).operation
224 generator.backend.add_file(os.path.join(po_dir, "POTFILES.in"), "")
225 generator.backend.add_file(
226 os.path.join(po_dir, "Makevars"), "DOMAIN = test\n")
227 generator.run()
228 self.assertThat(generator.backend.run.calls, MatchesListwise([
229 RanAptGet("install", "intltool", "bzr"),
230 RanCommand(
231 ["bzr", "branch", "lp:~my/branch", "source-tree"],
232 cwd=self.home_dir, LANG="C.UTF-8", SHELL="/bin/sh"),
233 RanCommand(
234 ["rm", "-f",
235 os.path.join(po_dir, "missing"),
236 os.path.join(po_dir, "notexist")]),
237 RanCommand(["/usr/bin/intltool-update", "-m"], cwd=po_dir),
238 RanCommand(
239 ["/usr/bin/intltool-update", "-p", "-g", "test"], cwd=po_dir),
240 RanCommand(
241 ["tar", "-C", branch_dir, "-czf", result_path, "po/test.pot"]),
242 ]))
243
244 def test_run_git(self):
245 # Install dependencies and generate a templates tarball from Git.
246 repository_url = "lp:~my/repository"
247 branch_dir = os.path.join(self.home_dir, "source-tree")
248 po_dir = os.path.join(branch_dir, "po")
249 result_path = os.path.join(self.home_dir, self.result_name)
250
251 args = [
252 "generate-translation-templates",
253 "--backend=fake", "--series=xenial", "--arch=amd64", "1",
254 "--git-repository", repository_url, self.result_name,
164 ]255 ]
165 generator = parse_args(args=args).operation256 generator = parse_args(args=args).operation
166 generator.backend.add_file(os.path.join(po_dir, "POTFILES.in"), b"")257 generator.backend.add_file(os.path.join(po_dir, "POTFILES.in"), b"")
@@ -168,16 +259,20 @@ class TestGenerateTranslationTemplates(TestCase):
168 os.path.join(po_dir, "Makevars"), b"DOMAIN = test\n")259 os.path.join(po_dir, "Makevars"), b"DOMAIN = test\n")
169 generator.run()260 generator.run()
170 self.assertThat(generator.backend.run.calls, MatchesListwise([261 self.assertThat(generator.backend.run.calls, MatchesListwise([
171 MatchesCall(["apt-get", "-y", "install", "bzr", "intltool"]),262 RanAptGet("install", "intltool", "git"),
172 MatchesCall(263 RanCommand(
173 ["bzr", "export", "-q", "-d", "lp:~my/branch", branch_dir]),264 ["git", "clone", "lp:~my/repository", "source-tree"],
174 MatchesCall(265 cwd=self.home_dir, LANG="C.UTF-8", SHELL="/bin/sh"),
266 RanCommand(
267 ["git", "submodule", "update", "--init", "--recursive"],
268 cwd=branch_dir, LANG="C.UTF-8", SHELL="/bin/sh"),
269 RanCommand(
175 ["rm", "-f",270 ["rm", "-f",
176 os.path.join(po_dir, "missing"),271 os.path.join(po_dir, "missing"),
177 os.path.join(po_dir, "notexist")]),272 os.path.join(po_dir, "notexist")]),
178 MatchesCall(["/usr/bin/intltool-update", "-m"], cwd=po_dir),273 RanCommand(["/usr/bin/intltool-update", "-m"], cwd=po_dir),
179 MatchesCall(274 RanCommand(
180 ["/usr/bin/intltool-update", "-p", "-g", "test"], cwd=po_dir),275 ["/usr/bin/intltool-update", "-p", "-g", "test"], cwd=po_dir),
181 MatchesCall(276 RanCommand(
182 ["tar", "-C", branch_dir, "-czf", result_path, "po/test.pot"]),277 ["tar", "-C", branch_dir, "-czf", result_path, "po/test.pot"]),
183 ]))278 ]))
diff --git a/lpbuildd/tests/test_translationtemplatesbuildmanager.py b/lpbuildd/tests/test_translationtemplatesbuildmanager.py
index a47e5f8..196f4d8 100644
--- a/lpbuildd/tests/test_translationtemplatesbuildmanager.py
+++ b/lpbuildd/tests/test_translationtemplatesbuildmanager.py
@@ -88,7 +88,7 @@ class TestTranslationTemplatesBuildManagerIteration(TestCase):
88 'generate-translation-templates',88 'generate-translation-templates',
89 '--backend=chroot', '--series=xenial', '--arch=i386',89 '--backend=chroot', '--series=xenial', '--arch=i386',
90 self.buildid,90 self.buildid,
91 url, 'resultarchive',91 '--branch', url, 'resultarchive',
92 ]92 ]
93 self.assertEqual(expected_command, self.buildmanager.commands[-1])93 self.assertEqual(expected_command, self.buildmanager.commands[-1])
94 self.assertEqual(94 self.assertEqual(
diff --git a/lpbuildd/translationtemplates.py b/lpbuildd/translationtemplates.py
index 2e778c5..36f4335 100644
--- a/lpbuildd/translationtemplates.py
+++ b/lpbuildd/translationtemplates.py
@@ -37,16 +37,28 @@ class TranslationTemplatesBuildManager(DebianBuildManager):
3737
38 def initiate(self, files, chroot, extra_args):38 def initiate(self, files, chroot, extra_args):
39 """See `BuildManager`."""39 """See `BuildManager`."""
40 self._branch_url = extra_args['branch_url']40 self.branch = extra_args.get('branch')
41 # XXX cjwatson 2017-11-10: Backward-compatibility; remove once the
42 # manager passes branch instead.
43 if self.branch is None:
44 self.branch = extra_args['branch_url']
45 self.git_repository = extra_args.get("git_repository")
46 self.git_path = extra_args.get("git_path")
4147
42 super(TranslationTemplatesBuildManager, self).initiate(48 super(TranslationTemplatesBuildManager, self).initiate(
43 files, chroot, extra_args)49 files, chroot, extra_args)
4450
45 def doGenerate(self):51 def doGenerate(self):
46 """Generate templates."""52 """Generate templates."""
47 self.runTargetSubProcess(53 args = []
48 "generate-translation-templates",54 if self.branch is not None:
49 self._branch_url, self._resultname)55 args.extend(["--branch", self.branch])
56 if self.git_repository is not None:
57 args.extend(["--git-repository", self.git_repository])
58 if self.git_path is not None:
59 args.extend(["--git-path", self.git_path])
60 args.append(self._resultname)
61 self.runTargetSubProcess("generate-translation-templates", *args)
5062
51 # Satisfy DebianPackageManager's needs without having a misleading63 # Satisfy DebianPackageManager's needs without having a misleading
52 # method name here.64 # method name here.

Subscribers

People subscribed via source and target branches