aboutsummaryrefslogtreecommitdiff
path: root/test/core/src/lombok/ReflectionFileTester.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/src/lombok/ReflectionFileTester.java')
-rw-r--r--test/core/src/lombok/ReflectionFileTester.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/test/core/src/lombok/ReflectionFileTester.java b/test/core/src/lombok/ReflectionFileTester.java
new file mode 100644
index 00000000..32de9c54
--- /dev/null
+++ b/test/core/src/lombok/ReflectionFileTester.java
@@ -0,0 +1,60 @@
+package lombok;
+
+import java.io.File;
+import java.lang.reflect.Method;
+
+import org.junit.Test;
+
+public class ReflectionFileTester {
+
+ private final File before;
+ private final File after;
+
+ public ReflectionFileTester(String beforePath, String afterPath) {
+ before = new File(beforePath);
+ after = new File(afterPath);
+ if (!before.isDirectory()) {
+ throw new IllegalArgumentException(beforePath + " is not a directory");
+ }
+ if (!after.isDirectory()) {
+ throw new IllegalArgumentException(afterPath + " is not a directory");
+ }
+ }
+
+ public boolean verify(Class<?> clazz) {
+ boolean result = true;
+ for (File f : before.listFiles()) {
+ String fileName = f.getName();
+ if (!fileName.endsWith(".java")) {
+ continue;
+ }
+ String methodName = "test" + fileName.substring(0, fileName.length() - 5);
+ try {
+ Method method = clazz.getDeclaredMethod(methodName);
+ if (method.getAnnotation(Test.class) == null) {
+ result = false;
+ System.err.printf("Class %s method %s is not a @Test method\n", clazz.getName(), methodName);
+ }
+ }
+ catch (NoSuchMethodException e) {
+ result = false;
+ System.err.printf("Class %s has no method %s\n", clazz.getName(), methodName);
+ }
+ }
+ return result;
+ }
+
+ public void test() throws Exception {
+ StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
+ if (stackTrace.length < 3) {
+ throw new Error("No stacktrace available");
+ }
+ String methodName = stackTrace[2].getMethodName();
+ if (!methodName.startsWith("test")) {
+ throw new IllegalStateException("test() should be called from a methos that starts with 'test'");
+ }
+ String fileName = methodName.substring(4).concat(".java");
+ File testFile = new File(before, fileName);
+ TestViaDelombok.compareFile(after, testFile);
+ }
+}