Add jar sorting to zip2zip

Jars have a strange sorting order; the META-INF/ directory should
come first, then META-INF/MANIFEST.MF, then any other files in
META-INF/, and then any files outside META-INF.  Add a -j argument
to zip2zip that sorts using jar ordering.

Test: zip2zip_test
Change-Id: I80e2bc7e284ef74f6561c26cb6541298834db1bc
diff --git a/cmd/zip2zip/zip2zip_test.go b/cmd/zip2zip/zip2zip_test.go
index 7f2e31a..2b5b562 100644
--- a/cmd/zip2zip/zip2zip_test.go
+++ b/cmd/zip2zip/zip2zip_test.go
@@ -28,6 +28,7 @@
 
 	inputFiles []string
 	sortGlobs  bool
+	sortJava   bool
 	args       []string
 
 	outputFiles []string
@@ -116,6 +117,35 @@
 		},
 	},
 	{
+		name: "sort jar",
+
+		inputFiles: []string{
+			"MANIFEST.MF",
+			"META-INF/MANIFEST.MF",
+			"META-INF/aaa/",
+			"META-INF/aaa/aaa",
+			"META-INF/AAA",
+			"META-INF.txt",
+			"META-INF/",
+			"AAA",
+			"aaa",
+		},
+		sortJava: true,
+		args:     nil,
+
+		outputFiles: []string{
+			"META-INF/",
+			"META-INF/MANIFEST.MF",
+			"META-INF/AAA",
+			"META-INF/aaa/",
+			"META-INF/aaa/aaa",
+			"AAA",
+			"MANIFEST.MF",
+			"META-INF.txt",
+			"aaa",
+		},
+	},
+	{
 		name: "double input",
 
 		inputFiles: []string{
@@ -161,7 +191,7 @@
 			}
 
 			outputWriter := zip.NewWriter(outputBuf)
-			err = zip2zip(inputReader, outputWriter, testCase.sortGlobs, false, testCase.args)
+			err = zip2zip(inputReader, outputWriter, testCase.sortGlobs, testCase.sortJava, false, testCase.args)
 			if errorString(testCase.err) != errorString(err) {
 				t.Fatalf("Unexpected error:\n got: %q\nwant: %q", errorString(err), errorString(testCase.err))
 			}