diff --git a/ql/src/test/org/apache/hadoop/hive/ql/QTestUtil.java b/ql/src/test/org/apache/hadoop/hive/ql/QTestUtil.java index a90a98b..b33c916 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/QTestUtil.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/QTestUtil.java @@ -986,6 +986,74 @@ private void maskPatterns(String[] patterns, String fname) throws Exception { in.close(); out.close(); } + + private void maskPatternsForWindows(String[] maskPatterns, ArrayList deletePatterns, String fname) throws Exception { + String maskPattern = "#### A masked pattern was here ####"; + + String line; + String inline; + BufferedReader in; + BufferedWriter out; + in = new BufferedReader(new FileReader(fname)); + out = new BufferedWriter(new FileWriter(fname + ".orig")); + while (null != (line = in.readLine())) { + out.write(line); + out.write('\n'); + } + in.close(); + out.close(); + + in = new BufferedReader(new FileReader(fname + ".orig")); + out = new BufferedWriter(new FileWriter(fname)); + + boolean lastWasMasked = false; + boolean matchDeletePattern = false; + while (null != (line = in.readLine())) { + // we are skipping the lines matching any one in deletePatterns + matchDeletePattern = false; + for(String [] dPattern : deletePatterns) { + if(dPattern.length !=0 && line.matches(dPattern[0])) { + in.mark(10000); + int i = 1; + for(; i < dPattern.length && null != (inline = in.readLine()); i++) { + if( !inline.matches(dPattern[i]) ) { + break; + } + } + if(i == dPattern.length) { + matchDeletePattern = true; + break; + } else { + in.reset(); + } + } + } + + if(matchDeletePattern) { + continue; + } + + for (String pattern : maskPatterns) { + line = line.replaceAll(pattern, maskPattern); + } + + if (line.equals(maskPattern)) { + // We're folding multiple masked lines into one. + if (!lastWasMasked) { + out.write(line); + out.write("\n"); + lastWasMasked = true; + } + } else { + out.write(line); + out.write("\n"); + lastWasMasked = false; + } + } + + in.close(); + out.close(); + } public int checkCliDriverResults(String tname) throws Exception { String[] cmdArray; @@ -1027,7 +1095,14 @@ public int checkCliDriverResults(String tname) throws Exception { File f = new File(logDir, tname + ".out"); - maskPatterns(patterns, f.getPath()); + if ( !Shell.WINDOWS) { + maskPatterns(patterns, f.getPath()); + } else { + ArrayList deletePatterns = new ArrayList(); + deletePatterns.add(new String[] {"^$", "^groups found for user.*"}); + + maskPatternsForWindows(patterns, deletePatterns, f.getPath()); + } int exitVal = executeDiffCommand(f.getPath(), outFileName, false, qSortSet.contains(tname));