mirror of
https://github.com/tiennm99/lombok.git
synced 2026-10-14 06:17:44 +00:00
[testing] also ignore unset positions for the pretty print tester.
This commit is contained in:
3 files changed
+25
-9
No files matched your search
@@ -48,6 +48,7 @@ import lombok.core.configuration.ConfigurationResolver;
|
||||
import lombok.core.configuration.ConfigurationResolverFactory;
|
||||
import lombok.javac.CapturingDiagnosticListener.CompilerMessage;
|
||||
import lombok.transform.TestLombokFilesIdempotent;
|
||||
import lombok.transform.TestSourceFiles;
|
||||
|
||||
public abstract class AbstractRunTests {
|
||||
private final File dumpActualFilesHere;
|
||||
@@ -91,7 +92,9 @@ public abstract class AbstractRunTests {
|
||||
}
|
||||
});
|
||||
|
||||
boolean changed = transformCode(messages, writer, file, sourceDirectives_.getSpecifiedEncoding(), sourceDirectives_.getFormatPreferences(), sourceDirectives_.minVersion(), params instanceof TestLombokFilesIdempotent);
|
||||
boolean checkPositions = !(params instanceof TestLombokFilesIdempotent || params instanceof TestSourceFiles);
|
||||
|
||||
boolean changed = transformCode(messages, writer, file, sourceDirectives_.getSpecifiedEncoding(), sourceDirectives_.getFormatPreferences(), sourceDirectives_.minVersion(), checkPositions);
|
||||
boolean forceUnchanged = sourceDirectives_.forceUnchanged() || sourceDirectives_.isSkipCompareContent();
|
||||
if (params.expectChanges() && !forceUnchanged && !changed) messages.add(new CompilerMessage(-1, -1, true, "not flagged modified"));
|
||||
if (!params.expectChanges() && changed) messages.add(new CompilerMessage(-1, -1, true, "unexpected modification"));
|
||||
@@ -101,7 +104,7 @@ public abstract class AbstractRunTests {
|
||||
};
|
||||
}
|
||||
|
||||
protected abstract boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion, boolean idempotentCheck) throws Throwable;
|
||||
protected abstract boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion, boolean checkPositions) throws Throwable;
|
||||
|
||||
protected String readFile(File file) throws IOException {
|
||||
BufferedReader reader;
|
||||
|
||||
@@ -53,6 +53,7 @@ import com.sun.tools.javac.tree.JCTree.JCIdent;
|
||||
import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
|
||||
import com.sun.tools.javac.tree.JCTree.JCModifiers;
|
||||
import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
|
||||
import com.sun.tools.javac.tree.JCTree.TypeBoundKind;
|
||||
|
||||
import lombok.delombok.Delombok;
|
||||
import lombok.javac.CapturingDiagnosticListener;
|
||||
@@ -63,7 +64,7 @@ public class RunTestsViaDelombok extends AbstractRunTests {
|
||||
private Delombok delombok = new Delombok();
|
||||
|
||||
@Override
|
||||
public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, final File file, String encoding, Map<String, String> formatPreferences, int version, boolean idempotentCheck) throws Throwable {
|
||||
public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, final File file, String encoding, Map<String, String> formatPreferences, int version, boolean checkPositions) throws Throwable {
|
||||
delombok.setVerbose(true);
|
||||
ChangedChecker cc = new ChangedChecker();
|
||||
delombok.setFeedback(cc.feedback);
|
||||
@@ -73,9 +74,7 @@ public class RunTestsViaDelombok extends AbstractRunTests {
|
||||
|
||||
delombok.setDiagnosticsListener(new CapturingDiagnosticListener(file, messages));
|
||||
|
||||
if (!idempotentCheck) {
|
||||
delombok.addAdditionalAnnotationProcessor(new ValidatePositionProcessor());
|
||||
}
|
||||
if (checkPositions) delombok.addAdditionalAnnotationProcessor(new ValidatePositionProcessor(version));
|
||||
|
||||
delombok.addFile(file.getAbsoluteFile().getParentFile(), file.getName());
|
||||
delombok.setSourcepath(file.getAbsoluteFile().getParent());
|
||||
@@ -93,6 +92,12 @@ public class RunTestsViaDelombok extends AbstractRunTests {
|
||||
}
|
||||
|
||||
public static class ValidatePositionProcessor extends TreeProcessor {
|
||||
private final int version;
|
||||
|
||||
public ValidatePositionProcessor(int version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
@Override void processCompilationUnit(final JCCompilationUnit unit) {
|
||||
unit.accept(new TreeScanner() {
|
||||
@Override public void scan(JCTree tree) {
|
||||
@@ -105,10 +110,18 @@ public class RunTestsViaDelombok extends AbstractRunTests {
|
||||
fail("Start position of doc comment (" + Javac.getDocComment(unit, tree) + ") of " + tree + " not set");
|
||||
}
|
||||
|
||||
if (tree.pos == -1) {
|
||||
boolean check = true;
|
||||
if (version < 8 && tree instanceof TypeBoundKind) {
|
||||
// TypeBoundKind works differently in java6, and as a consequence,
|
||||
// the position is not set properly.
|
||||
// Given status of j6/j7, not worth properly testing.
|
||||
check = false;
|
||||
}
|
||||
|
||||
if (check && tree.pos == -1) {
|
||||
fail("Start position of " + tree + " not set");
|
||||
}
|
||||
if (Javac.getEndPosition(tree, unit) == -1) {
|
||||
if (check && Javac.getEndPosition(tree, unit) == -1) {
|
||||
fail("End position of " + tree + " not set");
|
||||
}
|
||||
} finally {
|
||||
|
||||
@@ -109,7 +109,7 @@ public class RunTestsViaEcj extends AbstractRunTests {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion, boolean idempotentCheck) throws Throwable {
|
||||
public boolean transformCode(Collection<CompilerMessage> messages, StringWriter result, File file, String encoding, Map<String, String> formatPreferences, int minVersion, boolean checkPositions) throws Throwable {
|
||||
final AtomicReference<CompilationResult> compilationResult_ = new AtomicReference<CompilationResult>();
|
||||
final AtomicReference<CompilationUnitDeclaration> compilationUnit_ = new AtomicReference<CompilationUnitDeclaration>();
|
||||
ICompilerRequestor bitbucketRequestor = new ICompilerRequestor() {
|
||||
|
||||
Reference in new issue
Block a user