소스 검색

Dpkg::Changelog: fixed to cope properly with an entry of version "0"

The change of the boolean evaluation of Dpkg::Version introduced in
5b9f353b2940de751df47036608afbe71992d622 broke Dpkg::Changelog's ability
to correctly export an entry with a version of "0".

Add a non-regression test for this.
Raphaël Hertzog 16 년 전
부모
커밋
2d7f7493c5
4개의 변경된 파일13개의 추가작업 그리고 3개의 파일을 삭제
  1. 2 0
      debian/changelog
  2. 4 2
      scripts/Dpkg/Changelog.pm
  3. 5 0
      scripts/t/600_Dpkg_Changelog.t
  4. 2 1
      scripts/t/600_Dpkg_Changelog/regressions

+ 2 - 0
debian/changelog

@@ -41,6 +41,8 @@ dpkg (1.15.8) UNRELEASED; urgency=low
     upstream source code. Closes: #579012
   * dpkg-source now captures the output of patch and prints it on error so
     that the user can better diagnose what went wrong. Closes: #575304
+  * Fix Dpkg::Changelog to cope properly with an entry of version "0".
+    Add non-regression test for this. Closes: #587382
 
   [ Guillem Jover ]
   * Require gettext 0.18:

+ 4 - 2
scripts/Dpkg/Changelog.pm

@@ -524,7 +524,8 @@ sub dpkg {
     my $f = Dpkg::Control::Changelog->new();
     $f->{Urgency} = $entry->get_urgency() || "unknown";
     $f->{Source} = $entry->get_source() || "unknown";
-    $f->{Version} = $entry->get_version() || "unknown";
+    $f->{Version} = $entry->get_version();
+    $f->{Version} = "unknown" unless defined $f->{Version};
     $f->{Distribution} = join(" ", $entry->get_distributions());
     $f->{Maintainer} = $entry->get_maintainer() || '';
     $f->{Date} = $entry->get_timestamp() || '';
@@ -589,7 +590,8 @@ sub rfc822 {
 	my $f = Dpkg::Control::Changelog->new();
 	$f->{Urgency} = $entry->get_urgency() || "unknown";
 	$f->{Source} = $entry->get_source() || "unknown";
-	$f->{Version} = $entry->get_version() || "unknown";
+	$f->{Version} = $entry->get_version();
+	$f->{Version} = "unknown" unless defined $f->{Version};
 	$f->{Distribution} = join(" ", $entry->get_distributions());
 	$f->{Maintainer} = $entry->get_maintainer() || "";
 	$f->{Date} = $entry->get_timestamp() || "";

+ 5 - 0
scripts/t/600_Dpkg_Changelog.t

@@ -25,6 +25,7 @@ BEGIN {
 	+ $no_err_examples * 2
 	+ 26 # countme
 	+ 13 # fields
+	+ 1  # regressions
 	+ 22;
 
     require Test::More;
@@ -294,6 +295,10 @@ Xb-Userfield2: foobar
 ", "change items 2");
 	is($items[5], "  * Update S-V.\n", "change items 3");
     }
+    if ($file eq "$datadir/regressions") {
+	my $f = $changes->dpkg();
+	is("$f->{Version}", "0", "version 0 correctly parsed");
+    }
 
     SKIP: {
 	skip("avoid spurious warning with only one entry", 2)

+ 2 - 1
scripts/t/600_Dpkg_Changelog/regressions

@@ -1,6 +1,7 @@
-re-gressions++1.2.3 (1.5-1) ALLOWED.chars-567+890; urgency=low
+re-gressions++1.2.3 (0) ALLOWED.chars-567+890; urgency=low
 
   * Test allowed chars in package name and distribution name.
     (Closes: #361171)
+  * Test how version 0 is exported through methods.
 
  -- Frank Lichtenheld <frank@lichtenheld.de>  Thu, 01 Jan 1970 00:00:00 +0000