diff --git a/tests/archive.pl b/tests/archive.pl
index 0de09453600ca7a13ce5d4a2585036b1e1403dd9..0a03b23efc28b841b95cd6a9c5096d5d28a79e9b 100644
--- a/tests/archive.pl
+++ b/tests/archive.pl
@@ -17,6 +17,18 @@ for $source (sort {$a cmp $b} @sources)
 	my $meta = &readfile_meta($source);
 	my $file = $basedir . $source;
 
+    if (-T $source)
+    {
+        # convert all newlines to Unix format
+        $contents =~ s/\r//g;
+
+        if ($zip)
+        {
+            # convert all newlines to Windows format for .zip distribution
+            $contents =~ s/\n/\r\n/g;
+        }
+    }
+
 	if ($zip)
 	{
 		my $path = $file;
@@ -31,9 +43,6 @@ for $source (sort {$a cmp $b} @sources)
 	}
 	else
 	{
-		# tgz releases are for Unix people, Unix people like Unix newlines
-		$contents =~ s/\r//g if (-T $source);
-
 		$arch->add_data($file, $contents, $meta);
 	}
 }