Merge ~twom/launchpad:fix-a-small-ui-thing into launchpad:master

Proposed by Tom Wardill
Status: Merged
Approved by: Tom Wardill
Approved revision: 41e92224717d4799ee9a69d9e8df07ddfa0250bf
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~twom/launchpad:fix-a-small-ui-thing
Merge into: launchpad:master
Diff against target: 101 lines (+36/-5)
2 files modified
lib/lp/code/browser/tests/test_codeimport.py (+25/-5)
lib/lp/code/templates/gitlisting.pt (+11/-0)
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+401474@code.launchpad.net

Commit message

Add git repository import status to Product code overview.

Description of the change

Add whether the git repository for a product is imported from another repository.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/lib/lp/code/browser/tests/test_codeimport.py b/lib/lp/code/browser/tests/test_codeimport.py
2index a54a500..86cf64c 100644
3--- a/lib/lp/code/browser/tests/test_codeimport.py
4+++ b/lib/lp/code/browser/tests/test_codeimport.py
5@@ -10,6 +10,7 @@ __metaclass__ = type
6 import re
7
8 from testtools.matchers import StartsWith
9+from zope.component import getUtility
10 from zope.security.interfaces import Unauthorized
11
12 from lp.code.enums import (
13@@ -17,7 +18,9 @@ from lp.code.enums import (
14 RevisionControlSystems,
15 TargetRevisionControlSystems,
16 )
17+from lp.code.interfaces.gitrepository import IGitRepositorySet
18 from lp.code.tests.helpers import GitHostingFixture
19+from lp.registry.enums import VCSType
20 from lp.services.webapp import canonical_url
21 from lp.testing import (
22 admin_logged_in,
23@@ -36,18 +39,19 @@ class TestImportDetails(TestCaseWithFactory):
24
25 layer = DatabaseFunctionalLayer
26
27- def assertImportDetailsDisplayed(self, code_import, details_id,
28+ def assertImportDetailsDisplayed(self, context, details_id,
29 prefix_text, span_title=None):
30 """A code import has its details displayed properly.
31
32- :param code_import: An `ICodeImport`.
33+ :param context: A context object (`ICodeImport` or `IProduct`).
34 :param details_id: The HTML tag id to search for.
35 :param prefix_text: An expected prefix of the details text.
36 :param span_title: If present, the expected contents of a span title
37 attribute.
38 """
39- browser = self.getUserBrowser(canonical_url(code_import.target))
40+ browser = self.getUserBrowser(canonical_url(context, rootsite='code'))
41 details = find_tag_by_id(browser.contents, details_id)
42+ self.assertIsNotNone(details)
43 if span_title is not None:
44 self.assertEqual(span_title, details.span['title'])
45 text = re.sub(r'\s+', ' ', extract_text(details))
46@@ -59,7 +63,7 @@ class TestImportDetails(TestCaseWithFactory):
47 code_import = self.factory.makeCodeImport(
48 rcs_type=RevisionControlSystems.BZR_SVN)
49 self.assertImportDetailsDisplayed(
50- code_import, 'svn-import-details',
51+ code_import.target, 'svn-import-details',
52 'This branch is an import of the Subversion branch',
53 span_title=RevisionControlSystems.BZR_SVN.title)
54
55@@ -71,7 +75,23 @@ class TestImportDetails(TestCaseWithFactory):
56 rcs_type=RevisionControlSystems.GIT,
57 target_rcs_type=TargetRevisionControlSystems.GIT)
58 self.assertImportDetailsDisplayed(
59- code_import, 'git-import-details',
60+ code_import.target, 'git-import-details',
61+ 'This repository is an import of the Git repository')
62+
63+ def test_git_to_git_import_product(self):
64+ # The index page for a product should state that a repository
65+ # is imported.
66+ self.useFixture(GitHostingFixture())
67+ code_import = self.factory.makeCodeImport(
68+ rcs_type=RevisionControlSystems.GIT,
69+ target_rcs_type=TargetRevisionControlSystems.GIT)
70+ product = code_import.target.target
71+ with person_logged_in(product.owner):
72+ product.vcs = VCSType.GIT
73+ getUtility(IGitRepositorySet).setDefaultRepository(
74+ target=product, repository=code_import.target)
75+ self.assertImportDetailsDisplayed(
76+ product, 'git-import-details',
77 'This repository is an import of the Git repository')
78
79 def test_other_users_are_forbidden_to_change_codeimport(self):
80diff --git a/lib/lp/code/templates/gitlisting.pt b/lib/lp/code/templates/gitlisting.pt
81index ed6c0eb..73109d8 100644
82--- a/lib/lp/code/templates/gitlisting.pt
83+++ b/lib/lp/code/templates/gitlisting.pt
84@@ -84,6 +84,17 @@ git push --set-upstream origin master
85 </p>
86 </div>
87
88+
89+ <div id="repository-import-details"
90+ class="yui-g"
91+ tal:condition="repository/repository_type/enumvalue:IMPORTED">
92+ <div class="portlet">
93+ <h2>Import details</h2>
94+ <tal:repository-import-details
95+ replace="structure repository/@@++repository-import-details" />
96+ </div>
97+ </div>
98+
99 <div class="yui-g">
100 <div id="default-repository-branches" class="portlet"
101 tal:define="branches view/default_git_repository_branches">

Subscribers

People subscribed via source and target branches

to status/vote changes: