aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/11_test_dch_main.py
diff options
context:
space:
mode:
authorDaniel Dehennin <daniel.dehennin@baby-gnu.org>2012-05-31 10:17:52 +0200
committerGuido Günther <agx@sigxcpu.org>2012-07-31 18:54:31 +0200
commitb970ca002ac0eeac73bd5bad376dc82062d53928 (patch)
tree2322415aae4a5f68526eb7c0a40bd19652caa3e6 /tests/11_test_dch_main.py
parentc47deff711acf4fcb3775ca7566271773ac10567 (diff)
Test behavior of gbp.scripts.dch.main().
* tests/11_test_dch_main.py: Test common cases with "--release" and "--snapshot". Try 2 consecutive snapshots to check for merged entries.
Diffstat (limited to 'tests/11_test_dch_main.py')
-rw-r--r--tests/11_test_dch_main.py273
1 files changed, 273 insertions, 0 deletions
diff --git a/tests/11_test_dch_main.py b/tests/11_test_dch_main.py
new file mode 100644
index 00000000..61cb21d1
--- /dev/null
+++ b/tests/11_test_dch_main.py
@@ -0,0 +1,273 @@
+# vim: set fileencoding=utf-8 :
+
+"""Test L{gbp.scripts.dch} main"""
+
+import unittest
+
+from testutils import DebianGitTestRepo
+
+from gbp.scripts import dch
+
+import os
+import re
+
+# Snapshot of version 0.9-2~1
+snap_header_0_9 = r'^test-package\s\(0.9-2~1\.gbp([0-9a-f]{6})\)\sUNRELEASED;\surgency=low'
+# Snapshot of version 1.0-1~1
+snap_header_1 = r'^test-package\s\(1.0-1~1\.gbp([0-9a-f]{6})\)\sUNRELEASED;\surgency=low'
+# Snapshot of version 1.0-1~2
+snap_header_1_2 = r'^test-package\s\(1.0-1~2\.gbp([0-9a-f]{6})\)\sUNRELEASED;\surgency=low'
+
+snap_mark = r'\s{2}\*{2}\sSNAPSHOT\sbuild\s@'
+
+cl_debian = """test-package (0.9-1) unstable; urgency=low
+
+ [ Debian Maintainer ]
+ * New pre stable upstream release
+
+ -- Debian Maintainer <maint@debian.org> Mon, 17 Oct 2011 10:15:22 +0200
+"""
+
+class TestScriptDch(DebianGitTestRepo):
+ """Test git-dch"""
+
+ def setUp(self):
+ DebianGitTestRepo.setUp(self)
+ self.add_file("foo", "bar")
+ self.repo.create_tag("upstream/0.9", msg="upstream version 0.9")
+ self.add_file("bar", "foo")
+ self.repo.create_tag("upstream/1.0", msg="upstream version 1.0")
+ self.repo.create_branch("debian")
+ self.repo.set_branch("debian")
+ self.upstream_tag = "upstream/%(version)s"
+ self.top = os.path.abspath(os.path.curdir)
+ os.mkdir(os.path.join(self.repo.path, "debian"))
+ os.chdir(self.repo.path)
+ self.add_file("debian/changelog", cl_debian)
+ self.add_file("debian/control", """Source: test-package\nSection: test\n""")
+ self.options = ["--upstream-tag=%s" % self.upstream_tag, "--debian-branch=debian",
+ "--id-length=0", "--spawn-editor=/bin/true"]
+
+ def tearDown(self):
+ os.chdir(self.top)
+ DebianGitTestRepo.tearDown(self)
+
+ def test_dch_main_new_upstream_version(self):
+ """Test dch.py like git-dch script does: new upstream version"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (1.0-1) UNRELEASED; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_release(self):
+ """Test dch.py like git-dch script does: new upstream version - release"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ options.append("--release")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (1.0-1) unstable; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_auto(self):
+ """Test dch.py like git-dch script does: new upstream version - guess last commit"""
+ options = self.options[:]
+ options.append("--auto")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (1.0-1) UNRELEASED; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_snapshot(self):
+ """Test dch.py like git-dch script does: new upstream version - snashot mode"""
+ options = self.options[:]
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header = re.search(snap_header_1, lines[0])
+ self.assertIsNotNone(header)
+ self.assertEqual(header.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_2_snapshots_auto(self):
+ """Test dch.py like git-dch script does: new upstream version - two snapshots - auto"""
+ options = self.options[:]
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header1 = re.search(snap_header_1, lines[0])
+ self.assertIsNotNone(header1)
+ self.assertEqual(header1.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header1.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+ # New snapshot, use auto to guess last one
+ options.append("--auto")
+ self.add_file("debian/compat", "9")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header2 = re.search(snap_header_1_2, lines[0])
+ self.assertIsNotNone(header2)
+ self.assertEqual(header2.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header2.group(1), lines[2]))
+ # First snapshot entry must be concatenated with the last one
+ self.assertNotIn(header1.group(0) + "\n", lines)
+ self.assertIn(""" * added debian/control\n""", lines)
+ self.assertIn(""" * added debian/compat\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_2_snapshots_commit_auto(self):
+ """Test dch.py like git-dch script does: new upstream version - two committed snapshots - auto"""
+ options = self.options[:]
+ options.append("--commit")
+ options.append("--commit-msg=TEST-COMMITTED-SNAPSHOT")
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header1 = re.search(snap_header_1, lines[0])
+ self.assertIsNotNone(header1)
+ self.assertEqual(header1.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header1.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+ # New snapshot, use auto to guess last one
+ options.append("--auto")
+ self.add_file("debian/compat", "9")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header2 = re.search(snap_header_1_2, lines[0])
+ self.assertIsNotNone(header2)
+ self.assertEqual(header2.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header2.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+ self.assertIn(""" * added debian/compat\n""", lines)
+ # First snapshot entry must have disapear
+ self.assertNotIn(header1.group(0) + "\n", lines)
+ # But its changelog must be included in the new one
+ self.assertIn(""" * TEST-COMMITTED-SNAPSHOT\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_auto_release(self):
+ """Test dch.py like git-dch script does: new upstream version - auto - release"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ options.append("--auto")
+ options.append("--release")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (1.0-1) unstable; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_auto_snapshot(self):
+ """Test dch.py like git-dch script does: new upstream version - auto - snashot mode"""
+ options = self.options[:]
+ options.append("--auto")
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header = re.search(snap_header_1, lines[0])
+ self.assertIsNotNone(header)
+ self.assertEqual(header.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_new_upstream_version_with_snapshot_release(self):
+ """Test dch.py like git-dch script does: new upstream version - snashot - release"""
+ options = self.options[:]
+ options.append("--snapshot")
+ options.append("--release")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.assertRaises(SystemExit, dch.main, options)
+
+ def test_dch_main_increment_debian_version(self):
+ """Test dch.py like git-dch script does: increment debian version"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~2")
+ self.repo.delete_tag("upstream/1.0")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (0.9-2) UNRELEASED; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_increment_debian_version_with_release(self):
+ """Test dch.py like git-dch script does: increment debian version - release"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.repo.delete_tag("upstream/1.0")
+ options.append("--release")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (0.9-2) unstable; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_increment_debian_version_with_auto(self):
+ """Test dch.py like git-dch script does: increment debian version - guess last commit"""
+ options = self.options[:]
+ options.append("--auto")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.repo.delete_tag("upstream/1.0")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (0.9-2) UNRELEASED; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_increment_debian_version_with_snapshot(self):
+ """Test dch.py like git-dch script does: increment debian version - snashot mode"""
+ options = self.options[:]
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.repo.delete_tag("upstream/1.0")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header = re.search(snap_header_0_9, lines[0])
+ self.assertIsNotNone(header)
+ self.assertEqual(header.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_increment_debian_version_with_auto_release(self):
+ """Test dch.py like git-dch script does: increment debian version - auto - release"""
+ options = self.options[:]
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.repo.delete_tag("upstream/1.0")
+ options.append("--auto")
+ options.append("--release")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ self.assertEqual("test-package (0.9-2) unstable; urgency=low\n", lines[0])
+ self.assertIn(""" * added debian/control\n""", lines)
+
+ def test_dch_main_increment_debian_version_with_auto_snapshot(self):
+ """Test dch.py like git-dch script does: increment debian version - auto - snashot mode"""
+ options = self.options[:]
+ options.append("--auto")
+ options.append("--snapshot")
+ self.repo.create_tag("debian/0.9-1", msg="Pre stable release version 0.9-1", commit="HEAD~1")
+ self.repo.delete_tag("upstream/1.0")
+ ret = dch.main(options)
+ self.assertEqual(ret, 0)
+ lines = file("debian/changelog").readlines()
+ header = re.search(snap_header_0_9, lines[0])
+ self.assertIsNotNone(header)
+ self.assertEqual(header.lastindex, 1)
+ self.assertIsNotNone(re.search(snap_mark + header.group(1), lines[2]))
+ self.assertIn(""" * added debian/control\n""", lines)