summaryrefslogtreecommitdiffstats
path: root/scripts/t/merge_changelogs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 00:45:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 00:45:20 +0000
commit9a08cbfcc1ef900a04580f35afe2a4592d7d6030 (patch)
tree004cc7027bca2f2c0bcb5806527c8e0c48df2d6e /scripts/t/merge_changelogs
parentInitial commit. (diff)
downloaddpkg-upstream.tar.xz
dpkg-upstream.zip
Adding upstream version 1.19.8.upstream/1.19.8upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--scripts/t/merge_changelogs.t59
-rw-r--r--scripts/t/merge_changelogs/ch-a94
-rw-r--r--scripts/t/merge_changelogs/ch-b89
-rw-r--r--scripts/t/merge_changelogs/ch-badver-a5
-rw-r--r--scripts/t/merge_changelogs/ch-badver-b11
-rw-r--r--scripts/t/merge_changelogs/ch-badver-merged11
-rw-r--r--scripts/t/merge_changelogs/ch-badver-old5
-rw-r--r--scripts/t/merge_changelogs/ch-merged115
-rw-r--r--scripts/t/merge_changelogs/ch-merged-basic138
-rw-r--r--scripts/t/merge_changelogs/ch-merged-pr108
-rw-r--r--scripts/t/merge_changelogs/ch-merged-pr-basic140
-rw-r--r--scripts/t/merge_changelogs/ch-old87
12 files changed, 862 insertions, 0 deletions
diff --git a/scripts/t/merge_changelogs.t b/scripts/t/merge_changelogs.t
new file mode 100644
index 0000000..dfb7521
--- /dev/null
+++ b/scripts/t/merge_changelogs.t
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+
+use File::Spec;
+use File::Compare;
+use File::Temp;
+
+use Dpkg::IPC;
+
+my $srcdir = $ENV{srcdir} || '.';
+my $datadir = "$srcdir/t/merge_changelogs";
+
+my $res;
+sub test_merge {
+ my ($expected_file, @options) = @_;
+ my $fh = File::Temp->new();
+ spawn(exec => [ $ENV{PERL}, "$srcdir/dpkg-mergechangelogs.pl", @options ],
+ to_handle => $fh, error_to_file => '/dev/null',
+ wait_child => 1, nocheck => 1);
+ my $res = compare($expected_file, $fh->filename);
+ if ($res) {
+ system('diff', '-u', $expected_file, $fh->filename);
+ }
+ ok($res == 0, "merged changelog matches expected one ($expected_file)");
+}
+
+my $has_alg_merge = 1;
+eval 'use Algorithm::Merge;';
+if ($@) {
+ $has_alg_merge = 0;
+}
+
+my @input = ("$datadir/ch-old", "$datadir/ch-a", "$datadir/ch-b");
+if ($has_alg_merge) {
+ test_merge("$datadir/ch-merged", @input);
+ test_merge("$datadir/ch-merged-pr", '-m', @input);
+} else {
+ test_merge("$datadir/ch-merged-basic", @input);
+ test_merge("$datadir/ch-merged-pr-basic", '-m', @input);
+}
+test_merge("$datadir/ch-badver-merged", ("$datadir/ch-badver-old",
+ "$datadir/ch-badver-a", "$datadir/ch-badver-b"));
diff --git a/scripts/t/merge_changelogs/ch-a b/scripts/t/merge_changelogs/ch-a
new file mode 100644
index 0000000..ff5419d
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-a
@@ -0,0 +1,94 @@
+test (2.0-1) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+ * Line 4.
+ * Line 5.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Really no clouds in the sky
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+ * If I'm here it's because the changelog is not B (I should not appear
+ in the resulting changelog).
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+ * This entry has a conflict on the next line.
+ * I'm in changelog A.
+ * This line is the same in all 3 versions.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+test (1.1-1+conflict1) experimental; urgency=low
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:05:00 +0200
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm definitely in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=high
+
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm not in changelog B.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+a) experimental; urgency=low
+
+ * This entry is present in A only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:44:39 +0200
+
+test (1.0-2) unstable; urgency=low
+
+ * This entry is dropped in B only.
+ * Since it's in O and A, it should not appear in the result.
+ * Pi is 3.14.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:39:15 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-b b/scripts/t/merge_changelogs/ch-b
new file mode 100644
index 0000000..a74145f
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-b
@@ -0,0 +1,89 @@
+test (2.0-1~exp3) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * I'm the added line mentioned below (B-only).
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+ * This entry has a conflict on the next line.
+ * I'm in changelog B.
+ * This line is the same in all 3 versions.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+test (1.1-1+conflict1) unstable; urgency=high
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:06:00 +0200
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm not in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm definitely in changelog B.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+b) experimental; urgency=low
+
+ * This entry is present in B only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:47:38 +0200
+
+test (1.0-3) unstable; urgency=low
+
+ * This entry is dropped in A only.
+ * Since it's in O and B, it should not appear in the result.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:41:31 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-badver-a b/scripts/t/merge_changelogs/ch-badver-a
new file mode 100644
index 0000000..d544e64
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-badver-a
@@ -0,0 +1,5 @@
+egcs (ss-970814-1) experimental; urgency=low
+
+ * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh@micron.net> Wed, 20 Aug 1997 00:36:28 +0000
diff --git a/scripts/t/merge_changelogs/ch-badver-b b/scripts/t/merge_changelogs/ch-badver-b
new file mode 100644
index 0000000..609254e
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-badver-b
@@ -0,0 +1,11 @@
+egcs (970904-1) experimental; urgency=low
+
+ * New upstream snapshot
+
+ -- Galen Hazelwood <galenh@micron.net> Sun, 7 Sep 1997 18:25:06 -0600
+
+egcs (ss-970814-1) experimental; urgency=low
+
+ * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh@micron.net> Wed, 20 Aug 1997 00:36:28 +0000
diff --git a/scripts/t/merge_changelogs/ch-badver-merged b/scripts/t/merge_changelogs/ch-badver-merged
new file mode 100644
index 0000000..609254e
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-badver-merged
@@ -0,0 +1,11 @@
+egcs (970904-1) experimental; urgency=low
+
+ * New upstream snapshot
+
+ -- Galen Hazelwood <galenh@micron.net> Sun, 7 Sep 1997 18:25:06 -0600
+
+egcs (ss-970814-1) experimental; urgency=low
+
+ * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh@micron.net> Wed, 20 Aug 1997 00:36:28 +0000
diff --git a/scripts/t/merge_changelogs/ch-badver-old b/scripts/t/merge_changelogs/ch-badver-old
new file mode 100644
index 0000000..d544e64
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-badver-old
@@ -0,0 +1,5 @@
+egcs (ss-970814-1) experimental; urgency=low
+
+ * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh@micron.net> Wed, 20 Aug 1997 00:36:28 +0000
diff --git a/scripts/t/merge_changelogs/ch-merged b/scripts/t/merge_changelogs/ch-merged
new file mode 100644
index 0000000..29a985d
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-merged
@@ -0,0 +1,115 @@
+test (2.0-1) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+ * Line 4.
+ * Line 5.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (2.0-1~exp3) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * I'm the added line mentioned below (B-only).
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Really no clouds in the sky
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+ * This entry has a conflict on the next line.
+<<<<<<<
+ * I'm in changelog A.
+=======
+ * I'm in changelog B.
+>>>>>>>
+ * This line is the same in all 3 versions.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+<<<<<<<
+test (1.1-1+conflict1) experimental; urgency=low
+=======
+test (1.1-1+conflict1) unstable; urgency=high
+>>>>>>>
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+<<<<<<<
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:05:00 +0200
+=======
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:06:00 +0200
+>>>>>>>
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm definitely in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=high
+
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm definitely in changelog B.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+b) experimental; urgency=low
+
+ * This entry is present in B only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:47:38 +0200
+
+test (1.0-3+a) experimental; urgency=low
+
+ * This entry is present in A only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:44:39 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-merged-basic b/scripts/t/merge_changelogs/ch-merged-basic
new file mode 100644
index 0000000..f89fe11
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-merged-basic
@@ -0,0 +1,138 @@
+test (2.0-1) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+ * Line 4.
+ * Line 5.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (2.0-1~exp3) unstable; urgency=low
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+<<<<<<<
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Really no clouds in the sky
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+ * If I'm here it's because the changelog is not B (I should not appear
+ in the resulting changelog).
+=======
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * I'm the added line mentioned below (B-only).
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+<<<<<<<
+ * This entry has a conflict on the next line.
+ * I'm in changelog A.
+ * This line is the same in all 3 versions.
+=======
+ * This entry has a conflict on the next line.
+ * I'm in changelog B.
+ * This line is the same in all 3 versions.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+<<<<<<<
+test (1.1-1+conflict1) experimental; urgency=low
+=======
+test (1.1-1+conflict1) unstable; urgency=high
+>>>>>>>
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+<<<<<<<
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:05:00 +0200
+=======
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:06:00 +0200
+>>>>>>>
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm definitely in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=high
+
+<<<<<<<
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm not in changelog B.
+=======
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm definitely in changelog B.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+b) experimental; urgency=low
+
+ * This entry is present in B only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:47:38 +0200
+
+test (1.0-3+a) experimental; urgency=low
+
+ * This entry is present in A only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:44:39 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-merged-pr b/scripts/t/merge_changelogs/ch-merged-pr
new file mode 100644
index 0000000..a58f097
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-merged-pr
@@ -0,0 +1,108 @@
+<<<<<<<
+test (2.0-1) unstable; urgency=low
+=======
+test (2.0-1~exp3) unstable; urgency=low
+>>>>>>>
+
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+ * Line 4.
+ * Line 5.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * I'm the added line mentioned below (B-only).
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Really no clouds in the sky
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+ * This entry has a conflict on the next line.
+<<<<<<<
+ * I'm in changelog A.
+=======
+ * I'm in changelog B.
+>>>>>>>
+ * This line is the same in all 3 versions.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+<<<<<<<
+test (1.1-1+conflict1) experimental; urgency=low
+=======
+test (1.1-1+conflict1) unstable; urgency=high
+>>>>>>>
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+<<<<<<<
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:05:00 +0200
+=======
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:06:00 +0200
+>>>>>>>
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm definitely in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=high
+
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm definitely in changelog B.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+b) experimental; urgency=low
+
+ * This entry is present in B only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:47:38 +0200
+
+test (1.0-3+a) experimental; urgency=low
+
+ * This entry is present in A only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:44:39 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-merged-pr-basic b/scripts/t/merge_changelogs/ch-merged-pr-basic
new file mode 100644
index 0000000..7733612
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-merged-pr-basic
@@ -0,0 +1,140 @@
+<<<<<<<
+test (2.0-1) unstable; urgency=low
+=======
+test (2.0-1~exp3) unstable; urgency=low
+>>>>>>>
+
+<<<<<<<
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+ * Line 4.
+ * Line 5.
+=======
+ * Version B with 2.0-1~exp3 contains only up to line 3 while version A
+ with 2.0-1 contains the 5 lines. The resulting version should have the
+ 5 lines without conflict with Algorithm::Merge and a conflict without.
+ * Line 1.
+ * Line 2.
+ * Line 3.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:23:09 +0200
+
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+<<<<<<<
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Really no clouds in the sky
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+ * If I'm here it's because the changelog is not B (I should not appear
+ in the resulting changelog).
+=======
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * I'm the added line mentioned below (B-only).
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+<<<<<<<
+ * This entry has a conflict on the next line.
+ * I'm in changelog A.
+ * This line is the same in all 3 versions.
+=======
+ * This entry has a conflict on the next line.
+ * I'm in changelog B.
+ * This line is the same in all 3 versions.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+<<<<<<<
+test (1.1-1+conflict1) experimental; urgency=low
+=======
+test (1.1-1+conflict1) unstable; urgency=high
+>>>>>>>
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+<<<<<<<
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:05:00 +0200
+=======
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:06:00 +0200
+>>>>>>>
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm definitely in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=high
+
+<<<<<<<
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm not in changelog B.
+=======
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm definitely in changelog B.
+>>>>>>>
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.0-3+b) experimental; urgency=low
+
+ * This entry is present in B only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:47:38 +0200
+
+test (1.0-3+a) experimental; urgency=low
+
+ * This entry is present in A only. It's considered new and should thus
+ be in the merged changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:44:39 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et
diff --git a/scripts/t/merge_changelogs/ch-old b/scripts/t/merge_changelogs/ch-old
new file mode 100644
index 0000000..5ff7dd3
--- /dev/null
+++ b/scripts/t/merge_changelogs/ch-old
@@ -0,0 +1,87 @@
+test (1.2-2) unstable; urgency=low
+
+ * This is the last entry in changelog O.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:18:50 +0200
+
+test (1.2-1) unstable; urgency=low
+
+ * This entry should not have conflicts with Algorithm::Merge installed.
+ * Changelog B should a have supplementary line above this one.
+ * Pi is 3.14 is true for all changelogs.
+ * Changelog A should have a supplementary line
+ somewhere in this sub-list
+ - The weather is nice
+ - Yet I'm hacking on dpkg
+ - What does that mean about me?
+ * This line should be shared but the next one is dropped in B only.
+ * If I'm here it's because the changelog is not B (I should not appear
+ in the resulting changelog).
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:09:07 +0200
+
+test (1.1-1+conflict2) unstable; urgency=low
+
+ * This entry has a conflict on the next line.
+ * I'm in changelog O (old).
+ * This line is the same in all 3 versions.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:07:40 +0200
+
+test (1.1-1+conflict1) unstable; urgency=low
+
+ * This entry has conflicts on the header line: A wants distribution
+ experimental (instead of unstable) and B wants urgency=high (instead
+ of low).
+ * But it also has a conflict on the trailer line. A changed the
+ timestamp to 18:05:00 and B to 18:06:00.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 18:04:18 +0200
+
+test (1.1-1+change2) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in A. The
+ merged version should have what's in A. Furthermore the timestamp in
+ B is set to 17:55:00, it should also be picked up.
+ * I'm not in changelog A.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:54:52 +0200
+
+test (1.1-1+change1) unstable; urgency=low
+
+ * This entry is everywhere but the last line is different in B. The
+ merged version should have what's in B. Furthermore the urgency in
+ A is set to high, it should also be picked up.
+ * I'm not in changelog B.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:50:58 +0200
+
+test (1.1-0.1) stable; urgency=low
+
+ * This entry is present in O only, it should not appear in the merged
+ changelog.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:49:15 +0200
+
+test (1.0-3) unstable; urgency=low
+
+ * This entry is dropped in A only.
+ * Since it's in O and B, it should not appear in the result.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:41:31 +0200
+
+test (1.0-2) unstable; urgency=low
+
+ * This entry is dropped in B only.
+ * Since it's in O and A, it should not appear in the result.
+ * Pi is 3.14.
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:39:15 +0200
+
+test (1.0-1) unstable; urgency=low
+
+ * Initial release. (Closes: #XXXXXX)
+
+ -- Raphaël Hertzog <hertzog@debian.org> Sun, 18 Apr 2010 17:37:46 +0200
+
+vim: et