|
@@ -3596,3 +3596,72 @@ class ServerTests(PorcelainTestCase):
|
|
|
|
|
|
with self._serving() as url:
|
|
|
porcelain.push(self.repo, url, "master")
|
|
|
+
|
|
|
+
|
|
|
+class ForEachTests(PorcelainTestCase):
|
|
|
+ def setUp(self):
|
|
|
+ super().setUp()
|
|
|
+ c1, c2, c3, c4 = build_commit_graph(
|
|
|
+ self.repo.object_store, [[1], [2, 1], [3, 1, 2], [4]]
|
|
|
+ )
|
|
|
+ porcelain.tag_create(
|
|
|
+ self.repo.path,
|
|
|
+ b"v0.1",
|
|
|
+ objectish=c1.id,
|
|
|
+ annotated=True,
|
|
|
+ message=b"0.1",
|
|
|
+ )
|
|
|
+ porcelain.tag_create(
|
|
|
+ self.repo.path,
|
|
|
+ b"v1.0",
|
|
|
+ objectish=c2.id,
|
|
|
+ annotated=True,
|
|
|
+ message=b"1.0",
|
|
|
+ )
|
|
|
+ porcelain.tag_create(self.repo.path, b"simple-tag", objectish=c3.id)
|
|
|
+ porcelain.tag_create(
|
|
|
+ self.repo.path,
|
|
|
+ b"v1.1",
|
|
|
+ objectish=c4.id,
|
|
|
+ annotated=True,
|
|
|
+ message=b"1.1",
|
|
|
+ )
|
|
|
+ porcelain.branch_create(
|
|
|
+ self.repo.path, b"feat", objectish=c2.id.decode("ascii")
|
|
|
+ )
|
|
|
+ self.repo.refs[b"HEAD"] = c4.id
|
|
|
+
|
|
|
+ def test_for_each_ref(self):
|
|
|
+ refs = porcelain.for_each_ref(self.repo)
|
|
|
+
|
|
|
+ self.assertEqual(
|
|
|
+ [(object_type, tag) for _, object_type, tag in refs],
|
|
|
+ [
|
|
|
+ (b"commit", b"refs/heads/feat"),
|
|
|
+ (b"commit", b"refs/heads/master"),
|
|
|
+ (b"commit", b"refs/tags/simple-tag"),
|
|
|
+ (b"tag", b"refs/tags/v0.1"),
|
|
|
+ (b"tag", b"refs/tags/v1.0"),
|
|
|
+ (b"tag", b"refs/tags/v1.1"),
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_for_each_ref_pattern(self):
|
|
|
+ versions = porcelain.for_each_ref(self.repo, pattern="refs/tags/v*")
|
|
|
+ self.assertEqual(
|
|
|
+ [(object_type, tag) for _, object_type, tag in versions],
|
|
|
+ [
|
|
|
+ (b"tag", b"refs/tags/v0.1"),
|
|
|
+ (b"tag", b"refs/tags/v1.0"),
|
|
|
+ (b"tag", b"refs/tags/v1.1"),
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ versions = porcelain.for_each_ref(self.repo, pattern="refs/tags/v1.?")
|
|
|
+ self.assertEqual(
|
|
|
+ [(object_type, tag) for _, object_type, tag in versions],
|
|
|
+ [
|
|
|
+ (b"tag", b"refs/tags/v1.0"),
|
|
|
+ (b"tag", b"refs/tags/v1.1"),
|
|
|
+ ],
|
|
|
+ )
|