diff options
Diffstat (limited to 'test/core')
-rw-r--r-- | test/core/src/lombok/CompilerMessageMatcher.java | 58 | ||||
-rw-r--r-- | test/core/src/lombok/RunTestsViaEcj.java | 11 |
2 files changed, 44 insertions, 25 deletions
diff --git a/test/core/src/lombok/CompilerMessageMatcher.java b/test/core/src/lombok/CompilerMessageMatcher.java index db288749..cffad88a 100644 --- a/test/core/src/lombok/CompilerMessageMatcher.java +++ b/test/core/src/lombok/CompilerMessageMatcher.java @@ -27,7 +27,6 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -36,32 +35,41 @@ import lombok.javac.CapturingDiagnosticListener.CompilerMessage; public class CompilerMessageMatcher { /** Line Number (starting at 1) */ - private final long line; + private final List<Integer> lineNumbers = new ArrayList<Integer>(); + private final List<List<String>> messages = new ArrayList<List<String>>(); - private final Collection<String> messageParts; - - public CompilerMessageMatcher(long line, String message) { - this.line = line; - this.messageParts = Arrays.asList(message.split("\\s+")); - } + private CompilerMessageMatcher() {} public static CompilerMessageMatcher asCompilerMessageMatcher(CompilerMessage message) { - return new CompilerMessageMatcher(message.getLine(), message.getMessage()); + CompilerMessageMatcher cmm = new CompilerMessageMatcher(); + cmm.lineNumbers.add((int) message.getLine()); + cmm.messages.add(Arrays.asList(message.getMessage().split("\\s+"))); + return cmm; } @Override public String toString() { - StringBuilder parts = new StringBuilder(); - for (String part : messageParts) parts.append(part).append(" "); - if (parts.length() > 0) parts.setLength(parts.length() - 1); - return String.format("%d %s", line, parts); + StringBuilder out = new StringBuilder(); + for (int i = 0; i < lineNumbers.size(); i++) { + out.append(lineNumbers.get(i)); + for (String part : messages.get(i)) out.append(part).append(" "); + if (out.length() > 0) out.setLength(out.length() - 1); + out.append(" |||| "); + } + if (out.length() > 0) out.setLength(out.length() - 6); + return out.toString(); } public boolean matches(CompilerMessage message) { - if (message.getLine() != this.line) return false; - for (String token : messageParts) { - if (!message.getMessage().contains(token)) return false; + outer: + for (int i = 0; i < lineNumbers.size(); i++) { + if (message.getLine() != lineNumbers.get(i)) continue; + for (String token : messages.get(i)) { + if (!message.getMessage().contains(token)) continue outer; + } + return true; } - return true; + + return false; } public static List<CompilerMessageMatcher> readAll(InputStream rawIn) throws IOException { @@ -75,11 +83,21 @@ public class CompilerMessageMatcher { } private static final Pattern PATTERN = Pattern.compile("^(\\d+) (.*)$"); + private static CompilerMessageMatcher read(String line) { line = line.trim(); if (line.isEmpty()) return null; - Matcher m = PATTERN.matcher(line); - if (!m.matches()) throw new IllegalArgumentException("Typo in test file: " + line); - return new CompilerMessageMatcher(Integer.parseInt(m.group(1)), m.group(2)); + + String[] parts = line.split("\\s*\\|\\|\\|\\|\\s*"); + + CompilerMessageMatcher cmm = new CompilerMessageMatcher(); + for (String part : parts) { + Matcher m = PATTERN.matcher(part); + if (!m.matches()) throw new IllegalArgumentException("Typo in test file: " + line); + cmm.lineNumbers.add(Integer.parseInt(m.group(1))); + cmm.messages.add(Arrays.asList(m.group(2).split("\\s+"))); + } + + return cmm; } } diff --git a/test/core/src/lombok/RunTestsViaEcj.java b/test/core/src/lombok/RunTestsViaEcj.java index 8d1a8278..e23ebc4c 100644 --- a/test/core/src/lombok/RunTestsViaEcj.java +++ b/test/core/src/lombok/RunTestsViaEcj.java @@ -70,22 +70,22 @@ public class RunTestsViaEcj extends AbstractRunTests { warnings.put(CompilerOptions.OPTION_ReportUnusedLabel, "ignore"); warnings.put(CompilerOptions.OPTION_ReportUnusedImport, "ignore"); warnings.put(CompilerOptions.OPTION_ReportUnusedPrivateMember, "ignore"); - warnings.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_7); + warnings.put(CompilerOptions.OPTION_Source, "1." + Eclipse.getEcjCompilerVersion()); options.set(warnings); return options; } protected IErrorHandlingPolicy ecjErrorHandlingPolicy() { return new IErrorHandlingPolicy() { - @Override public boolean stopOnFirstError() { + public boolean stopOnFirstError() { return true; } - @Override public boolean proceedOnErrors() { + public boolean proceedOnErrors() { return false; } - @Override public boolean ignoreAllErrors() { + public boolean ignoreAllErrors() { return false; } }; @@ -124,7 +124,8 @@ public class RunTestsViaEcj extends AbstractRunTests { CompilationUnitDeclaration cud = compilationUnit_.get(); - result.append(cud.toString()); + if (cud == null) result.append("---- NO CompilationUnit provided by ecj ----"); + else result.append(cud.toString()); } private FileSystem createFileSystem(File file) { |