170a85db220c116bd9894652f3d27eda2e30a72bbMichael Ernstimport java.io.*; 270a85db220c116bd9894652f3d27eda2e30a72bbMichael Ernstimport java.util.*; 370a85db220c116bd9894652f3d27eda2e30a72bbMichael Ernst 410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali/** 510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * Little program that checks to see if every file ending in .diff in 610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * the current directory is empty. For each file, displays whether or not 710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * it is empty. If any file is non-empty, exits with an error exit status, 810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * else exits with a 0 exit status. 910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * 1010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * Usage: java VerifyDiffs [--show_all] 1110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * 1210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * If --show_all option is used, all tests that pass will also be displayed. 1310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * If --show_all is not used, and all tests pass, then there will be no 1410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali * output. 1510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali */ 1610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Alipublic class VerifyDiffs { 1710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali private static boolean show_all = false; 1810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 1910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali private static void parseArgs(String[] args) { 204ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst for (String s : args) { 214ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (s.equals("--show_all")) { 2210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali VerifyDiffs.show_all = true; 2310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 2410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 2510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 2610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 2710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali public static void main(String[] args) { 2810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali parseArgs(args); 2910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 3010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali int passCount = 0; 3110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali int failCount = 0; 3210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali boolean pass = true; 3310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali try { 3410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 3510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali File dir = new File("."); 3610353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 370ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst List<File> allDiffs = new ArrayList<File>(); 380ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst gatherDiffs(allDiffs, dir); 390ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst Collections.sort(allDiffs); 404ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst for (File f : allDiffs) { 410ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst String fileName = f.toString(); 420ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst if (fileName.startsWith("./")) { 430ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst fileName = fileName.substring(2); 440ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } 450ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst FileReader fr = new FileReader(f); 464ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (fr.read() != -1) { // if not empty, output error message 470ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst System.out.println(fileName + " ...FAILED"); 480ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst pass = false; 490ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst failCount++; 500ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } else { 514ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (VerifyDiffs.show_all) { 520ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst System.out.println(fileName + " ...OK"); 5310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 540ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst passCount++; 5510353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 560ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst fr.close(); 5710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 584ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst } catch (Exception e) { 5910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali System.out.println("verify diffs failed due to exception: " 6010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali + e.getMessage()); 6110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali pass = false; 6210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 6310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali 6410353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali System.out.println("Passed: " + passCount + " Failed: " + failCount); 654ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (pass) { 664ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (VerifyDiffs.show_all) { 6710353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali System.out.println("All tests succeeded."); 6810353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 6910353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } else { 7010353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali System.out.println("Tests failed."); 7110353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali System.exit(1); 7210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 7310353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali } 740ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst 750ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst /** 760ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst * Recursively adds all files in directory dir ending in .diff to 770ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst * the list diffs. 780ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst * 790ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst * @param diffs the array to place all diff files in 800ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst * @param dir the directory to start gathering diffs 810ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst */ 820ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst private static void gatherDiffs(List<File> diffs, File dir) { 834ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst for (File f : dir.listFiles()) { 844ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (f.toString().endsWith(".diff")) { 850ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst diffs.add(f); 860ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } 874ae81f26445bc9397bd3e1edb062e0388ed82a6fMichael Ernst if (f.isDirectory()) { 880ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst gatherDiffs(diffs, f); 890ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } 900ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } 910ac5df5c9441577dac8592f1512d4a3ae7c6d156Michael Ernst } 9210353ed766fc48a0af6bd33d934439e695c03e3Mahmood Ali} 93