[Reproducible-commits] [strip-nondeterminism] 01/01: Strip timestamp from Java version.properties files

Andrew Ayer agwa at andrewayer.name
Tue Feb 10 05:19:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

agwa-guest pushed a commit to branch master
in repository strip-nondeterminism.

commit 98c4cf32038792ba882b25036c875017c49baa6b
Author: Andrew Ayer <agwa at andrewayer.name>
Date:   Mon Feb 9 21:08:47 2015 -0800

    Strip timestamp from Java version.properties files
    
    version.properties files are very similar in format to pom.properties
    files, so I've renamed the pomproperties handler to javaproperties and
    added support for version.properties to it.
---
 lib/File/StripNondeterminism.pm                    | 10 ++---
 lib/File/StripNondeterminism/handlers/jar.pm       |  8 ++--
 .../{pomproperties.pm => javaproperties.pm}        |  8 ++--
 t/{pomproperties.t => javaproperties.t}            | 51 ++++++++++++++++++----
 4 files changed, 55 insertions(+), 22 deletions(-)

diff --git a/lib/File/StripNondeterminism.pm b/lib/File/StripNondeterminism.pm
index aab3071..8f4d4b7 100644
--- a/lib/File/StripNondeterminism.pm
+++ b/lib/File/StripNondeterminism.pm
@@ -27,7 +27,7 @@ use File::StripNondeterminism::handlers::jar;
 use File::StripNondeterminism::handlers::javadoc;
 use File::StripNondeterminism::handlers::pe;
 use File::StripNondeterminism::handlers::pearregistry;
-use File::StripNondeterminism::handlers::pomproperties;
+use File::StripNondeterminism::handlers::javaproperties;
 use File::StripNondeterminism::handlers::zip;
 
 our($VERSION, $canonical_time);
@@ -73,9 +73,9 @@ sub get_normalizer_for_file {
 	if (m/\.(exe|dll|cpl|ocx|sys|scr|drv|efi|fon)/ && _get_file_type($_) =~ m/PE32.? executable/) {
 		return \&File::StripNondeterminism::handlers::pe::normalize;
 	}
-	# pomproperties
-	if (m/pom\.properties$/ && File::StripNondeterminism::handlers::pomproperties::is_pom_properties_file($_)) {
-		return \&File::StripNondeterminism::handlers::pomproperties::normalize;
+	# pom.properties, version.properties
+	if (m/(pom|version)\.properties$/ && File::StripNondeterminism::handlers::javaproperties::is_java_properties_file($_)) {
+		return \&File::StripNondeterminism::handlers::javaproperties::normalize;
 	}
 	# zip
 	if (m/\.(zip|pk3|whl|xpi)$/ && _get_file_type($_) =~ m/Zip archive data/) {
@@ -92,7 +92,7 @@ sub get_normalizer_by_name {
 	return \&File::StripNondeterminism::handlers::javadoc::normalize if $_ eq 'javadoc';
 	return \&File::StripNondeterminism::handlers::pe::normalize if $_ eq 'pe';
 	return \&File::StripNondeterminism::handlers::pearregistry::normalize if $_ eq 'pearregistry';
-	return \&File::StripNondeterminism::handlers::pomproperties::normalize if $_ eq 'pomproperties';
+	return \&File::StripNondeterminism::handlers::javaproperties::normalize if $_ eq 'javaproperties';
 	return \&File::StripNondeterminism::handlers::zip::normalize if $_ eq 'zip';
 	return undef;
 }
diff --git a/lib/File/StripNondeterminism/handlers/jar.pm b/lib/File/StripNondeterminism/handlers/jar.pm
index e136395..4121d29 100644
--- a/lib/File/StripNondeterminism/handlers/jar.pm
+++ b/lib/File/StripNondeterminism/handlers/jar.pm
@@ -25,7 +25,7 @@ use Archive::Zip;
 use File::Basename;
 use File::StripNondeterminism::handlers::zip;
 use File::StripNondeterminism::handlers::javadoc;
-use File::StripNondeterminism::handlers::pomproperties;
+use File::StripNondeterminism::handlers::javaproperties;
 
 sub _jar_filename_cmp ($$) {
 	my ($a, $b) = @_;
@@ -77,11 +77,11 @@ sub _jar_normalize_member {
 	} elsif ($member->fileName() eq 'META-INF/MANIFEST.MF') {
 		File::StripNondeterminism::handlers::zip::normalize_member($member,
 				\&_jar_normalize_manifest);
-	} elsif ($member->fileName() =~ /pom\.properties$/ &&
-			File::StripNondeterminism::handlers::zip::peek_member($member, 1024) =~ /#Generated by Maven/) {
+	} elsif ($member->fileName() =~ /(pom|version)\.properties$/ &&
+			File::StripNondeterminism::handlers::zip::peek_member($member, 1024) =~ /#Generated by Maven|#Build Number for ANT/) {
 		# maven header should be within first 1kb of file
 		File::StripNondeterminism::handlers::zip::normalize_member($member,
-				\&File::StripNondeterminism::handlers::pomproperties::normalize);
+				\&File::StripNondeterminism::handlers::javaproperties::normalize);
 	}
 }
 
diff --git a/lib/File/StripNondeterminism/handlers/pomproperties.pm b/lib/File/StripNondeterminism/handlers/javaproperties.pm
similarity index 88%
rename from lib/File/StripNondeterminism/handlers/pomproperties.pm
rename to lib/File/StripNondeterminism/handlers/javaproperties.pm
index 785f5e6..36d45af 100644
--- a/lib/File/StripNondeterminism/handlers/pomproperties.pm
+++ b/lib/File/StripNondeterminism/handlers/javaproperties.pm
@@ -16,7 +16,7 @@
 # You should have received a copy of the GNU General Public License
 # along with strip-nondeterminism.  If not, see <http://www.gnu.org/licenses/>.
 #
-package File::StripNondeterminism::handlers::pomproperties;
+package File::StripNondeterminism::handlers::javaproperties;
 
 use strict;
 use warnings;
@@ -24,13 +24,13 @@ use warnings;
 use File::Temp;
 use File::Basename;
 
-sub is_pom_properties_file {
+sub is_java_properties_file {
 	my ($filename) = @_;
 
-	# If this is a pom.properties file, '#Generated by Maven' should appear in first 1kb
+	# If this is a java properties file, '#Generated by Maven' or '#Build Number for ANT' should appear in first 1kb
 	my $fh;
 	my $str;
-	return open($fh, '<', $filename) && read($fh, $str, 1024) && $str =~ /#Generated by Maven/;
+	return open($fh, '<', $filename) && read($fh, $str, 1024) && $str =~ /#Generated by Maven|#Build Number for ANT/;
 }
 
 sub normalize {
diff --git a/t/pomproperties.t b/t/javaproperties.t
similarity index 55%
rename from t/pomproperties.t
rename to t/javaproperties.t
index 6982deb..d9d4e8e 100644
--- a/t/pomproperties.t
+++ b/t/javaproperties.t
@@ -2,6 +2,7 @@
 
 #
 # Copyright 2014 Chris West (Faux)
+# Copyright 2015 Andrew Ayer
 #
 # This file is part of strip-nondeterminism.
 #
@@ -20,12 +21,22 @@
 #
 
 use File::Temp 'tempdir';
-use Test::More tests => 2;
+use Test::More tests => 4;
 use File::StripNondeterminism;
+use strict;
+use warnings;
+
+my $dir = tempdir( CLEANUP => 1 );
+my $path;
+my $fh;
+my $normalizer;
+
+#
+# pom.properties
+#
 
-$dir = tempdir( CLEANUP => 1 );
 $path = "$dir/pom.properties";
-open(my $fh, '>', $path) or die("error opening $path");
+open($fh, '>', $path) or die("error opening $path");
 
 # note that the line has a load of random trailing whitespace (?!)
 print $fh <<'ORIGINAL';
@@ -33,18 +44,40 @@ print $fh <<'ORIGINAL';
 #Mon Oct 27 09:12:51 UTC 2014                                                 
 version=2.4
 ORIGINAL
-
-close $fh;
+close($fh);
 
 $normalizer = File::StripNondeterminism::get_normalizer_for_file($path);
 isnt(undef, $normalizer);
 $normalizer->($path);
 
-open FILE,$path or die("error opening $path");
-binmode FILE;
-local $/ = undef;
-is(<FILE>, <<'EXPECTED');
+open($fh, '<', $path) or die("error opening $path");
+is(do { local $/; <$fh> }, <<'EXPECTED');
 #Generated by Maven
 version=2.4
 EXPECTED
+close($fh);
 
+#
+# version.properties
+#
+$path = "$dir/version.properties";
+open($fh, '>', $path) or die("error opening $path");
+
+# note that the line has a load of random trailing whitespace (?!)
+print $fh <<'ORIGINAL';
+#Build Number for ANT. Do not edit!
+#Wed Feb 04 03:46:03 UTC 2015                                                 
+build.number=125
+ORIGINAL
+close($fh);
+
+$normalizer = File::StripNondeterminism::get_normalizer_for_file($path);
+isnt(undef, $normalizer);
+$normalizer->($path);
+
+open($fh, '<', $path) or die("error opening $path");
+is(do { local $/; <$fh> }, <<'EXPECTED');
+#Build Number for ANT. Do not edit!
+build.number=125
+EXPECTED
+close($fh);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/strip-nondeterminism.git



More information about the Reproducible-commits mailing list