From ba452bfd549052e985f135a3333c83a38f7f954f Mon Sep 17 00:00:00 2001 From: Peter Gafert Date: Sat, 5 Mar 2022 18:06:22 +0700 Subject: [PATCH] move `junit` implementation details to subpackage `internal` Since we use the `MANIFEST` entry `Automatic-Module-Name` the JUnit 5 modules are principally ready to be used on the modulepath. However, we automatically expose **all** packages declared, which means that the modules `junit5-api` and `junit5-engine` all export the same package `com.tngtech.archunit.junit`, which is illegal for Java Modules. We move all implementation details to a subpackage `internal` and only keep API toplevel. This way the module `junit5-engine` does not expose the root package `com.tngtech.archunit.junit` anymore, because all the contained classes are `internal`. While this separation works nicely and cleanly for `junit5`, the separation for `junit4` is a lot less pretty. Because the architecture of JUnit 4 makes it impossible to hide implementation details in a clean way, e.g. by demanding to annotate a `Runner` implementation, which should be pure hidden implementation detail. I added some separation by introducing `ArchUnitRunnerInternal` so we do not need to make all classes public, but have one (obviously not mean for outside usage) public gateway into the `internal` part. Signed-off-by: Peter Gafert --- .../archunit/junit/ArchUnitRunner.java | 184 +++------------ .../{ => internal}/ArchRuleDeclaration.java | 12 +- .../{ => internal}/ArchRuleExecution.java | 4 +- .../{ => internal}/ArchTestExecution.java | 6 +- .../ArchTestMethodExecution.java | 7 +- .../internal/ArchUnitRunnerInternal.java | 209 ++++++++++++++++++ .../ArchUnitRunnerRunsMethodsTest.java | 45 ++-- .../ArchUnitRunnerRunsRuleFieldsTest.java | 43 ++-- .../ArchUnitRunnerRunsRuleSetsTest.java | 44 ++-- .../{ => internal}/ArchUnitRunnerTest.java | 21 +- .../ArchUnitRunnerTestUtils.java | 14 +- .../AbstractArchUnitTestDescriptor.java | 4 +- .../ArchUnitEngineDescriptor.java | 2 +- .../ArchUnitEngineExecutionContext.java | 2 +- .../ArchUnitTestDescriptor.java | 21 +- .../{ => internal}/ArchUnitTestEngine.java | 10 +- .../junit/{ => internal}/CreatesChildren.java | 2 +- .../junit/{ => internal}/ElementResolver.java | 8 +- .../org.junit.platform.engine.TestEngine | 2 +- .../ArchUnitTestEngineTest.java | 92 ++++---- .../EngineDiscoveryTestRequest.java | 2 +- .../EngineExecutionTestListener.java | 2 +- .../testexamples/ClassWithPrivateTests.java | 2 +- .../testexamples/ComplexMetaTags.java | 2 +- .../testexamples/ComplexRuleLibrary.java | 4 +- .../testexamples/ComplexTags.java | 2 +- .../testexamples/FullAnalyzeClassesSpec.java | 6 +- .../testexamples/LibraryWithPrivateTests.java | 2 +- .../testexamples/RuleThatFails.java | 2 +- .../testexamples/SimpleRuleLibrary.java | 6 +- .../testexamples/TestClassWithMetaTag.java | 4 +- .../testexamples/TestClassWithMetaTags.java | 4 +- .../testexamples/TestClassWithTags.java | 4 +- .../testexamples/TestFieldWithMetaTag.java | 14 +- .../testexamples/TestFieldWithMetaTags.java | 14 +- .../testexamples/TestFieldWithTags.java | 2 +- .../testexamples/TestMethodWithMetaTag.java | 14 +- .../testexamples/TestMethodWithMetaTags.java | 14 +- .../testexamples/TestMethodWithTags.java | 2 +- .../testexamples/UnwantedClass.java | 2 +- .../ignores/ArchIgnoreMetaAnnotation.java | 10 +- .../testexamples/ignores/IgnoredClass.java | 6 +- .../testexamples/ignores/IgnoredField.java | 6 +- .../testexamples/ignores/IgnoredLibrary.java | 4 +- .../testexamples/ignores/IgnoredMethod.java | 6 +- .../ignores/MetaIgnoredClass.java | 6 +- .../ignores/MetaIgnoredField.java | 6 +- .../ignores/MetaIgnoredLibrary.java | 4 +- .../ignores/MetaIgnoredMethod.java | 6 +- .../testexamples/subone/SimpleRuleField.java | 6 +- .../testexamples/subone/SimpleRuleMethod.java | 6 +- .../testexamples/subtwo/SimpleRules.java | 6 +- .../wrong/WrongRuleMethodNotStatic.java | 2 +- .../wrong/WrongRuleMethodWrongParameters.java | 2 +- .../testutil/MockitoExtension.java | 2 +- .../com/tngtech/archunit/junit/ArchTests.java | 4 +- .../ArchTestExecutionException.java | 2 +- .../ArchTestInitializationException.java | 2 +- .../{ => internal}/ClassAnalysisRequest.java | 4 +- .../junit/{ => internal}/ClassCache.java | 6 +- .../{ => internal}/DisplayNameResolver.java | 2 +- .../junit/{ => internal}/ReflectionUtils.java | 2 +- .../ClassCacheConcurrencyTest.java | 4 +- .../junit/{ => internal}/ClassCacheTest.java | 5 +- .../DisplayNameResolverTest.java | 6 +- .../junit/{ => internal}/LocationOfClass.java | 3 +- .../{ => internal}/ReflectionUtilsTest.java | 4 +- .../{ => internal}/TestAnalysisRequest.java | 4 +- .../archunit/base/ReflectionUtils.java | 19 +- 69 files changed, 564 insertions(+), 417 deletions(-) rename archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchRuleDeclaration.java (91%) rename archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchRuleExecution.java (93%) rename archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchTestExecution.java (90%) rename archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchTestMethodExecution.java (88%) create mode 100644 archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerInternal.java rename archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitRunnerRunsMethodsTest.java (81%) rename archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitRunnerRunsRuleFieldsTest.java (82%) rename archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitRunnerRunsRuleSetsTest.java (82%) rename archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitRunnerTest.java (87%) rename archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitRunnerTestUtils.java (78%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/AbstractArchUnitTestDescriptor.java (95%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitEngineDescriptor.java (95%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitEngineExecutionContext.java (94%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitTestDescriptor.java (93%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitTestEngine.java (96%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/CreatesChildren.java (93%) rename archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/{ => internal}/ElementResolver.java (96%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/ArchUnitTestEngineTest.java (94%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/EngineDiscoveryTestRequest.java (99%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/EngineExecutionTestListener.java (99%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ClassWithPrivateTests.java (92%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ComplexMetaTags.java (96%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ComplexRuleLibrary.java (80%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ComplexTags.java (93%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/FullAnalyzeClassesSpec.java (86%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/LibraryWithPrivateTests.java (91%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/RuleThatFails.java (93%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/SimpleRuleLibrary.java (71%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestClassWithMetaTag.java (90%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestClassWithMetaTags.java (90%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestClassWithTags.java (84%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestFieldWithMetaTag.java (78%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestFieldWithMetaTags.java (80%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestFieldWithTags.java (89%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestMethodWithMetaTag.java (78%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestMethodWithMetaTags.java (79%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/TestMethodWithTags.java (88%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/UnwantedClass.java (75%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/ArchIgnoreMetaAnnotation.java (62%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/IgnoredClass.java (70%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/IgnoredField.java (73%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/IgnoredLibrary.java (84%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/IgnoredMethod.java (75%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/MetaIgnoredClass.java (69%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/MetaIgnoredField.java (71%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/MetaIgnoredLibrary.java (84%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/ignores/MetaIgnoredMethod.java (74%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/subone/SimpleRuleField.java (66%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/subone/SimpleRuleMethod.java (68%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/subtwo/SimpleRules.java (87%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/wrong/WrongRuleMethodNotStatic.java (84%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testexamples/wrong/WrongRuleMethodWrongParameters.java (82%) rename archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/{ => internal}/testutil/MockitoExtension.java (89%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchTestExecutionException.java (94%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/ArchTestInitializationException.java (95%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/ClassAnalysisRequest.java (76%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/ClassCache.java (97%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/DisplayNameResolver.java (97%) rename archunit-junit/src/main/java/com/tngtech/archunit/junit/{ => internal}/ReflectionUtils.java (99%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/ClassCacheConcurrencyTest.java (96%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/ClassCacheTest.java (98%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/DisplayNameResolverTest.java (90%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/LocationOfClass.java (84%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/ReflectionUtilsTest.java (97%) rename archunit-junit/src/test/java/com/tngtech/archunit/junit/{ => internal}/TestAnalysisRequest.java (93%) diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchUnitRunner.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchUnitRunner.java index 730d152c68..e0fadb980e 100644 --- a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchUnitRunner.java +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchUnitRunner.java @@ -15,32 +15,20 @@ */ package com.tngtech.archunit.junit; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; import java.util.List; -import java.util.Set; -import com.google.common.collect.ImmutableSet; import com.tngtech.archunit.Internal; import com.tngtech.archunit.PublicAPI; -import com.tngtech.archunit.core.domain.JavaClasses; -import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.base.MayResolveTypesViaReflection; +import com.tngtech.archunit.base.ReflectionUtils; import com.tngtech.archunit.lang.ArchRule; import org.junit.runner.Description; import org.junit.runner.notification.RunNotifier; import org.junit.runners.ParentRunner; -import org.junit.runners.model.FrameworkField; -import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; import org.junit.runners.model.Statement; import static com.tngtech.archunit.PublicAPI.Usage.ACCESS; -import static com.tngtech.archunit.junit.ArchRuleDeclaration.elementShouldBeIgnored; -import static com.tngtech.archunit.junit.ArchRuleDeclaration.toDeclarations; -import static com.tngtech.archunit.junit.ArchTestExecution.getValue; /** * Evaluates {@link ArchRule ArchRules} against the classes inside of the packages specified via @@ -58,169 +46,61 @@ * } * * - * The runner will cache classes between test runs, for details please refer to {@link ClassCache}. + * The runner will cache classes between test runs, for details please refer to {@link com.tngtech.archunit.junit.internal.ClassCache}. */ @PublicAPI(usage = ACCESS) -public class ArchUnitRunner extends ParentRunner { - private SharedCache cache = new SharedCache(); // NOTE: We want to change this in tests -> no static/final reference +public class ArchUnitRunner extends ParentRunner { + private final InternalRunner runnerDelegate; @Internal public ArchUnitRunner(Class testClass) throws InitializationError { super(testClass); - checkAnnotation(testClass); + runnerDelegate = createInternalRunner(testClass); } - private static AnalyzeClasses checkAnnotation(Class testClass) { - AnalyzeClasses analyzeClasses = testClass.getAnnotation(AnalyzeClasses.class); - ArchTestInitializationException.check(analyzeClasses != null, - "Class %s must be annotated with @%s", - testClass.getSimpleName(), AnalyzeClasses.class.getSimpleName()); - return analyzeClasses; + private InternalRunner createInternalRunner(Class testClass) { + Class> runnerClass = classForName("com.tngtech.archunit.junit.internal.ArchUnitRunnerInternal"); + return ReflectionUtils.newInstanceOf(runnerClass, testClass); } - @Override - protected Statement classBlock(RunNotifier notifier) { - final Statement statement = super.classBlock(notifier); - return new Statement() { - @Override - public void evaluate() throws Throwable { - try { - statement.evaluate(); - } finally { - cache.clear(getTestClass().getJavaClass()); - } - } - }; - } - - @Override - protected List getChildren() { - List children = new ArrayList<>(); - children.addAll(findArchRuleFields()); - children.addAll(findArchRuleMethods()); - return children; - } - - private Collection findArchRuleFields() { - List result = new ArrayList<>(); - for (FrameworkField ruleField : getTestClass().getAnnotatedFields(ArchTest.class)) { - result.addAll(findArchRulesIn(ruleField)); - } - return result; - } - - private Set findArchRulesIn(FrameworkField ruleField) { - boolean ignore = elementShouldBeIgnored(ruleField.getField()); - if (ruleField.getType() == ArchTests.class) { - return asTestExecutions(getArchRules(ruleField.getField()), ignore); - } - return Collections.singleton(new ArchRuleExecution(getTestClass().getJavaClass(), ruleField.getField(), ignore)); - } - - private Set asTestExecutions(ArchTests archTests, boolean forceIgnore) { - ExecutionTransformer executionTransformer = new ExecutionTransformer(); - for (ArchRuleDeclaration declaration : toDeclarations(archTests, getTestClass().getJavaClass(), ArchTest.class, forceIgnore)) { - declaration.handleWith(executionTransformer); + @SuppressWarnings("unchecked") + @MayResolveTypesViaReflection(reason = "Only used to load internal ArchUnit class") + private static Class classForName(String typeName) { + try { + return (Class) Class.forName(typeName); + } catch (ClassNotFoundException e) { + throw new RuntimeException(e); } - return executionTransformer.getExecutions(); - } - - private ArchTests getArchRules(Field field) { - return getValue(field, field.getDeclaringClass()); - } - - private Collection findArchRuleMethods() { - List result = new ArrayList<>(); - for (FrameworkMethod testMethod : getTestClass().getAnnotatedMethods(ArchTest.class)) { - boolean ignore = elementShouldBeIgnored(testMethod.getMethod()); - result.add(new ArchTestMethodExecution(getTestClass().getJavaClass(), testMethod.getMethod(), ignore)); - } - return result; } @Override - protected Description describeChild(ArchTestExecution child) { - return child.describeSelf(); + protected Statement classBlock(RunNotifier notifier) { + return runnerDelegate.classBlock(notifier); } @Override - protected void runChild(ArchTestExecution child, RunNotifier notifier) { - if (child.ignore()) { - notifier.fireTestIgnored(describeChild(child)); - } else { - notifier.fireTestStarted(describeChild(child)); - Class testClass = getTestClass().getJavaClass(); - JavaClasses classes = cache.get().getClassesToAnalyzeFor(testClass, new JUnit4ClassAnalysisRequest(testClass)); - child.evaluateOn(classes).notify(notifier); - notifier.fireTestFinished(describeChild(child)); - } + protected List getChildren() { + return runnerDelegate.getChildren(); } - static class SharedCache { - private static final ClassCache cache = new ClassCache(); - - ClassCache get() { - return cache; - } - - void clear(Class testClass) { - cache.clear(testClass); - } + @Override + protected Description describeChild(T child) { + return runnerDelegate.describeChild(child); } - private static class ExecutionTransformer implements ArchRuleDeclaration.Handler { - private final ImmutableSet.Builder executions = ImmutableSet.builder(); - - @Override - public void handleFieldDeclaration(Field field, Class fieldOwner, boolean ignore) { - executions.add(new ArchRuleExecution(fieldOwner, field, ignore)); - } - - @Override - public void handleMethodDeclaration(Method method, Class methodOwner, boolean ignore) { - executions.add(new ArchTestMethodExecution(methodOwner, method, ignore)); - } - - Set getExecutions() { - return executions.build(); - } + @Override + protected void runChild(T child, RunNotifier notifier) { + runnerDelegate.runChild(child, notifier); } - private static class JUnit4ClassAnalysisRequest implements ClassAnalysisRequest { - private final AnalyzeClasses analyzeClasses; - - JUnit4ClassAnalysisRequest(Class testClass) { - analyzeClasses = checkAnnotation(testClass); - } - - @Override - public String[] getPackageNames() { - return analyzeClasses.packages(); - } - - @Override - public Class[] getPackageRoots() { - return analyzeClasses.packagesOf(); - } - - @Override - public Class[] getLocationProviders() { - return analyzeClasses.locations(); - } + @Internal + public interface InternalRunner { + Statement classBlock(RunNotifier notifier); - @Override - public Class[] getImportOptions() { - return analyzeClasses.importOptions(); - } + List getChildren(); - @Override - public CacheMode getCacheMode() { - return analyzeClasses.cacheMode(); - } + Description describeChild(T child); - @Override - public boolean scanWholeClasspath() { - return analyzeClasses.wholeClasspath(); - } + void runChild(T child, RunNotifier notifier); } } diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleDeclaration.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleDeclaration.java similarity index 91% rename from archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleDeclaration.java rename to archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleDeclaration.java index 2c9c30b48e..11c9cfbf16 100644 --- a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleDeclaration.java +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleDeclaration.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; @@ -24,12 +24,14 @@ import java.util.Set; import com.google.common.collect.ImmutableSet; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTests; import static com.google.common.base.Preconditions.checkNotNull; -import static com.tngtech.archunit.junit.ArchTestExecution.getValue; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllFields; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllMethods; -import static com.tngtech.archunit.junit.ReflectionUtils.withAnnotation; +import static com.tngtech.archunit.junit.internal.ArchTestExecution.getValue; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllFields; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllMethods; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.withAnnotation; abstract class ArchRuleDeclaration { private final Class testClass; diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleExecution.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleExecution.java similarity index 93% rename from archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleExecution.java rename to archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleExecution.java index 8796e311e7..f1bb8dbfcd 100644 --- a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchRuleExecution.java +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchRuleExecution.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; @@ -21,7 +21,7 @@ import com.tngtech.archunit.lang.ArchRule; import org.junit.runner.Description; -import static com.tngtech.archunit.junit.DisplayNameResolver.determineDisplayName; +import static com.tngtech.archunit.junit.internal.DisplayNameResolver.determineDisplayName; class ArchRuleExecution extends ArchTestExecution { private final Field ruleField; diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestExecution.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecution.java similarity index 90% rename from archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestExecution.java rename to archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecution.java index 390e0ca1a7..667d5aa589 100644 --- a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestExecution.java +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecution.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; @@ -22,8 +22,8 @@ import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunNotifier; -import static com.tngtech.archunit.junit.ArchTestInitializationException.WRAP_CAUSE; -import static com.tngtech.archunit.junit.ReflectionUtils.getValueOrThrowException; +import static com.tngtech.archunit.junit.internal.ArchTestInitializationException.WRAP_CAUSE; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getValueOrThrowException; abstract class ArchTestExecution { final Class testClass; diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestMethodExecution.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestMethodExecution.java similarity index 88% rename from archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestMethodExecution.java rename to archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestMethodExecution.java index 7dc32c6435..2fdda33f16 100644 --- a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/ArchTestMethodExecution.java +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchTestMethodExecution.java @@ -13,16 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Method; import java.util.Arrays; import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.junit.ArchTest; import org.junit.runner.Description; -import static com.tngtech.archunit.junit.DisplayNameResolver.determineDisplayName; -import static com.tngtech.archunit.junit.ReflectionUtils.invokeMethod; +import static com.tngtech.archunit.junit.internal.DisplayNameResolver.determineDisplayName; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.invokeMethod; class ArchTestMethodExecution extends ArchTestExecution { private final Method testMethod; diff --git a/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerInternal.java b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerInternal.java new file mode 100644 index 0000000000..7f88e4f290 --- /dev/null +++ b/archunit-junit/junit4/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerInternal.java @@ -0,0 +1,209 @@ +/* + * Copyright 2014-2022 TNG Technology Consulting GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.tngtech.archunit.junit.internal; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; + +import com.google.common.collect.ImmutableSet; +import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.ArchTests; +import com.tngtech.archunit.junit.ArchUnitRunner; +import com.tngtech.archunit.junit.CacheMode; +import com.tngtech.archunit.junit.LocationProvider; +import org.junit.runner.Description; +import org.junit.runner.notification.RunNotifier; +import org.junit.runners.ParentRunner; +import org.junit.runners.model.FrameworkField; +import org.junit.runners.model.FrameworkMethod; +import org.junit.runners.model.InitializationError; +import org.junit.runners.model.Statement; + +import static com.tngtech.archunit.junit.internal.ArchRuleDeclaration.elementShouldBeIgnored; +import static com.tngtech.archunit.junit.internal.ArchRuleDeclaration.toDeclarations; +import static com.tngtech.archunit.junit.internal.ArchTestExecution.getValue; + +final class ArchUnitRunnerInternal extends ParentRunner implements ArchUnitRunner.InternalRunner { + @SuppressWarnings("FieldMayBeFinal") + private SharedCache cache = new SharedCache(); // NOTE: We want to change this in tests -> no static/final reference + + ArchUnitRunnerInternal(Class testClass) throws InitializationError { + super(testClass); + checkAnnotation(testClass); + } + + private static AnalyzeClasses checkAnnotation(Class testClass) { + AnalyzeClasses analyzeClasses = testClass.getAnnotation(AnalyzeClasses.class); + ArchTestInitializationException.check(analyzeClasses != null, + "Class %s must be annotated with @%s", + testClass.getSimpleName(), AnalyzeClasses.class.getSimpleName()); + return analyzeClasses; + } + + @Override + public Statement classBlock(RunNotifier notifier) { + final Statement statement = super.classBlock(notifier); + return new Statement() { + @Override + public void evaluate() throws Throwable { + try { + statement.evaluate(); + } finally { + cache.clear(getTestClass().getJavaClass()); + } + } + }; + } + + @Override + public List getChildren() { + List children = new ArrayList<>(); + children.addAll(findArchRuleFields()); + children.addAll(findArchRuleMethods()); + return children; + } + + private Collection findArchRuleFields() { + List result = new ArrayList<>(); + for (FrameworkField ruleField : getTestClass().getAnnotatedFields(ArchTest.class)) { + result.addAll(findArchRulesIn(ruleField)); + } + return result; + } + + private Set findArchRulesIn(FrameworkField ruleField) { + boolean ignore = elementShouldBeIgnored(ruleField.getField()); + if (ruleField.getType() == ArchTests.class) { + return asTestExecutions(getArchRules(ruleField.getField()), ignore); + } + return Collections.singleton(new ArchRuleExecution(getTestClass().getJavaClass(), ruleField.getField(), ignore)); + } + + private Set asTestExecutions(ArchTests archTests, boolean forceIgnore) { + ExecutionTransformer executionTransformer = new ExecutionTransformer(); + for (ArchRuleDeclaration declaration : toDeclarations(archTests, getTestClass().getJavaClass(), ArchTest.class, forceIgnore)) { + declaration.handleWith(executionTransformer); + } + return executionTransformer.getExecutions(); + } + + private ArchTests getArchRules(Field field) { + return getValue(field, field.getDeclaringClass()); + } + + private Collection findArchRuleMethods() { + List result = new ArrayList<>(); + for (FrameworkMethod testMethod : getTestClass().getAnnotatedMethods(ArchTest.class)) { + boolean ignore = elementShouldBeIgnored(testMethod.getMethod()); + result.add(new ArchTestMethodExecution(getTestClass().getJavaClass(), testMethod.getMethod(), ignore)); + } + return result; + } + + @Override + public Description describeChild(ArchTestExecution child) { + return child.describeSelf(); + } + + @Override + public void runChild(ArchTestExecution child, RunNotifier notifier) { + if (child.ignore()) { + notifier.fireTestIgnored(describeChild(child)); + } else { + notifier.fireTestStarted(describeChild(child)); + Class testClass = getTestClass().getJavaClass(); + JavaClasses classes = cache.get().getClassesToAnalyzeFor(testClass, new JUnit4ClassAnalysisRequest(testClass)); + child.evaluateOn(classes).notify(notifier); + notifier.fireTestFinished(describeChild(child)); + } + } + + static class SharedCache { + private static final ClassCache cache = new ClassCache(); + + ClassCache get() { + return cache; + } + + void clear(Class testClass) { + cache.clear(testClass); + } + } + + private static class ExecutionTransformer implements ArchRuleDeclaration.Handler { + private final ImmutableSet.Builder executions = ImmutableSet.builder(); + + @Override + public void handleFieldDeclaration(Field field, Class fieldOwner, boolean ignore) { + executions.add(new ArchRuleExecution(fieldOwner, field, ignore)); + } + + @Override + public void handleMethodDeclaration(Method method, Class methodOwner, boolean ignore) { + executions.add(new ArchTestMethodExecution(methodOwner, method, ignore)); + } + + Set getExecutions() { + return executions.build(); + } + } + + private static class JUnit4ClassAnalysisRequest implements ClassAnalysisRequest { + private final AnalyzeClasses analyzeClasses; + + JUnit4ClassAnalysisRequest(Class testClass) { + analyzeClasses = checkAnnotation(testClass); + } + + @Override + public String[] getPackageNames() { + return analyzeClasses.packages(); + } + + @Override + public Class[] getPackageRoots() { + return analyzeClasses.packagesOf(); + } + + @Override + public Class[] getLocationProviders() { + return analyzeClasses.locations(); + } + + @Override + public Class[] getImportOptions() { + return analyzeClasses.importOptions(); + } + + @Override + public CacheMode getCacheMode() { + return analyzeClasses.cacheMode(); + } + + @Override + public boolean scanWholeClasspath() { + return analyzeClasses.wholeClasspath(); + } + } +} diff --git a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsMethodsTest.java b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsMethodsTest.java similarity index 81% rename from archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsMethodsTest.java rename to archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsMethodsTest.java index b59868d12d..bffe20dd52 100644 --- a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsMethodsTest.java +++ b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsMethodsTest.java @@ -1,10 +1,13 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.annotation.Retention; import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.core.domain.JavaClasses; -import com.tngtech.archunit.junit.ArchUnitRunner.SharedCache; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.internal.ArchUnitRunnerInternal.SharedCache; import com.tngtech.archunit.testutil.ArchConfigurationRule; import org.junit.Before; import org.junit.Rule; @@ -21,16 +24,16 @@ import org.mockito.junit.MockitoRule; import static com.tngtech.archunit.core.domain.TestUtils.importClassesWithContext; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.ArchTestWithIgnoredMethod.toBeIgnored; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.ArchTestWithIllegalTestMethods.noParams; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.ArchTestWithIllegalTestMethods.tooManyParams; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.ArchTestWithTestMethod.privateTest; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.ArchTestWithTestMethod.testSomething; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.IgnoredArchTest.toBeIgnoredOne; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsMethodsTest.IgnoredArchTest.toBeIgnoredTwo; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.BE_SATISFIED; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.getRule; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.newRunnerFor; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.ArchTestWithIgnoredMethod.toBeIgnored; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.ArchTestWithIllegalTestMethods.noParams; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.ArchTestWithIllegalTestMethods.tooManyParams; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.ArchTestWithTestMethod.privateTest; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.ArchTestWithTestMethod.testSomething; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.IgnoredArchTest.toBeIgnoredOne; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsMethodsTest.IgnoredArchTest.toBeIgnoredTwo; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.BE_SATISFIED; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.getRule; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.newRunnerFor; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; import static java.lang.annotation.RetentionPolicy.RUNTIME; import static org.assertj.core.api.Assertions.assertThat; @@ -61,7 +64,7 @@ public class ArchUnitRunnerRunsMethodsTest { private ArgumentCaptor failureCaptor; @InjectMocks - private ArchUnitRunner runner = newRunnerFor(ArchTestWithTestMethod.class); + private ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithTestMethod.class); private JavaClasses cachedClasses = importClassesWithContext(ArchUnitRunnerRunsMethodsTest.class); @@ -106,7 +109,7 @@ public void fails_methods_with_too_many_parameters() { @Test public void ignores_all_methods_in_classes_annotated_with_ArchIgnore() throws InitializationError { - ArchUnitRunner runner = new ArchUnitRunner(IgnoredArchTest.class); + ArchUnitRunnerInternal runner = new ArchUnitRunnerInternal(IgnoredArchTest.class); runner.runChild(getRule(toBeIgnoredOne, runner), runNotifier); runner.runChild(getRule(toBeIgnoredTwo, runner), runNotifier); @@ -118,7 +121,7 @@ public void ignores_all_methods_in_classes_annotated_with_ArchIgnore() throws In @Test public void ignores_methods_annotated_with_ArchIgnore() throws InitializationError { - ArchUnitRunner runner = new ArchUnitRunner(ArchTestWithIgnoredMethod.class); + ArchUnitRunnerInternal runner = new ArchUnitRunnerInternal(ArchTestWithIgnoredMethod.class); runner.runChild(getRule(toBeIgnored, runner), runNotifier); verify(runNotifier).fireTestIgnored(descriptionCaptor.capture()); @@ -127,7 +130,7 @@ public void ignores_methods_annotated_with_ArchIgnore() throws InitializationErr @Test public void should_allow_instance_method_in_abstract_base_class() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithAbstractBaseClass.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithAbstractBaseClass.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(AbstractBaseClass.INSTANCE_METHOD_NAME, runner), runNotifier); @@ -136,7 +139,7 @@ public void should_allow_instance_method_in_abstract_base_class() { @Test public void should_pass_annotations_of_test_method() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithMethodWithAdditionalAnnotation.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithMethodWithAdditionalAnnotation.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(ArchTestWithMethodWithAdditionalAnnotation.TEST_METHOD_NAME, runner), runNotifier); @@ -147,7 +150,7 @@ public void should_pass_annotations_of_test_method() { @Test public void underscores_in_method_name_are_replaced_with_blanks_if_property_is_set_to_true() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithMethodWithUnderscoresInName.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithMethodWithUnderscoresInName.class, cache); ArchConfiguration.get().setProperty(DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME, "true"); @@ -160,7 +163,7 @@ public void underscores_in_method_name_are_replaced_with_blanks_if_property_is_s @Test public void original_method_name_is_used_as_displayname_if_property_is_set_to_false() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithMethodWithUnderscoresInName.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithMethodWithUnderscoresInName.class, cache); ArchConfiguration.get().setProperty(DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME, "false"); @@ -171,11 +174,11 @@ public void original_method_name_is_used_as_displayname_if_property_is_set_to_fa assertThat(description.getDisplayName()).as("expected display name").startsWith("some_test_Method("); } - private ArchUnitRunner newRunner(Class testClass) { + private ArchUnitRunnerInternal newRunner(Class testClass) { return newRunnerFor(testClass, cache); } - private void runAndAssertWrongParametersForChild(String name, ArchUnitRunner runner) { + private void runAndAssertWrongParametersForChild(String name, ArchUnitRunnerInternal runner) { runner.runChild(getRule(name, runner), runNotifier); verify(runNotifier).fireTestFailure(failureCaptor.capture()); Failure failure = failureCaptor.getValue(); diff --git a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleFieldsTest.java b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleFieldsTest.java similarity index 82% rename from archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleFieldsTest.java rename to archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleFieldsTest.java index 3a21287a09..f6f414a418 100644 --- a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleFieldsTest.java +++ b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleFieldsTest.java @@ -1,10 +1,13 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.annotation.Retention; import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.core.domain.JavaClasses; -import com.tngtech.archunit.junit.ArchUnitRunner.SharedCache; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.internal.ArchUnitRunnerInternal.SharedCache; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.testutil.ArchConfigurationRule; import org.junit.Before; @@ -22,16 +25,16 @@ import org.mockito.junit.MockitoRule; import static com.tngtech.archunit.core.domain.TestUtils.importClassesWithContext; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.ArchTestWithPrivateInstanceField.PRIVATE_RULE_FIELD_NAME; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.IgnoredArchTest.RULE_ONE_IN_IGNORED_TEST; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.IgnoredArchTest.RULE_TWO_IN_IGNORED_TEST; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.FAILING_FIELD_NAME; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.IGNORED_FIELD_NAME; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.SATISFIED_FIELD_NAME; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleFieldsTest.WrongArchTestWrongFieldType.NO_RULE_AT_ALL_FIELD_NAME; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.BE_SATISFIED; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.NEVER_BE_SATISFIED; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.newRunnerFor; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.ArchTestWithPrivateInstanceField.PRIVATE_RULE_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.IgnoredArchTest.RULE_ONE_IN_IGNORED_TEST; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.IgnoredArchTest.RULE_TWO_IN_IGNORED_TEST; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.FAILING_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.IGNORED_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.SomeArchTest.SATISFIED_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleFieldsTest.WrongArchTestWrongFieldType.NO_RULE_AT_ALL_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.BE_SATISFIED; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.NEVER_BE_SATISFIED; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.newRunnerFor; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; import static java.lang.annotation.RetentionPolicy.RUNTIME; import static org.assertj.core.api.Assertions.assertThat; @@ -64,7 +67,7 @@ public class ArchUnitRunnerRunsRuleFieldsTest { private ArgumentCaptor failureCaptor; @InjectMocks - private ArchUnitRunner runner = ArchUnitRunnerTestUtils.newRunnerFor(SomeArchTest.class); + private ArchUnitRunnerInternal runner = ArchUnitRunnerTestUtils.newRunnerFor(SomeArchTest.class); private JavaClasses cachedClasses = importClassesWithContext(Object.class); @@ -100,7 +103,7 @@ public void should_accept_satisfied_rule() { @Test public void should_allow_instance_fields_of_all_visibility() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithPrivateInstanceField.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithPrivateInstanceField.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(PRIVATE_RULE_FIELD_NAME, runner), runNotifier); @@ -109,7 +112,7 @@ public void should_allow_instance_fields_of_all_visibility() { @Test public void should_allow_instance_field_in_abstract_base_class() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithAbstractBaseClass.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithAbstractBaseClass.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(AbstractBaseClass.INSTANCE_FIELD_NAME, runner), runNotifier); @@ -118,7 +121,7 @@ public void should_allow_instance_field_in_abstract_base_class() { @Test public void should_fail_on_wrong_field_type() { - ArchUnitRunner runner = newRunnerFor(WrongArchTestWrongFieldType.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(WrongArchTestWrongFieldType.class, cache); thrown.expectMessage("Rule field " + WrongArchTestWrongFieldType.class.getSimpleName() + "." + NO_RULE_AT_ALL_FIELD_NAME + @@ -151,7 +154,7 @@ public void should_skip_ignored_rule() { @Test public void should_skip_ignored_test() { - ArchUnitRunner runner = newRunnerFor(IgnoredArchTest.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(IgnoredArchTest.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(RULE_ONE_IN_IGNORED_TEST, runner), runNotifier); runner.runChild(ArchUnitRunnerTestUtils.getRule(RULE_TWO_IN_IGNORED_TEST, runner), runNotifier); @@ -164,7 +167,7 @@ public void should_skip_ignored_test() { @Test public void should_pass_annotations_of_rule_field() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithFieldWithAdditionalAnnotation.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithFieldWithAdditionalAnnotation.class, cache); runner.runChild(ArchUnitRunnerTestUtils.getRule(ArchTestWithFieldWithAdditionalAnnotation.TEST_FIELD_NAME, runner), runNotifier); @@ -175,7 +178,7 @@ public void should_pass_annotations_of_rule_field() { @Test public void underscores_in_field_name_are_replaced_with_blanks_if_property_is_set_to_true() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithFieldWithUnderscoresInName.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithFieldWithUnderscoresInName.class, cache); ArchConfiguration.get().setProperty(DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME, "true"); @@ -188,7 +191,7 @@ public void underscores_in_field_name_are_replaced_with_blanks_if_property_is_se @Test public void original_field_name_is_used_as_displayname_if_property_is_set_to_false() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithFieldWithUnderscoresInName.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithFieldWithUnderscoresInName.class, cache); ArchConfiguration.get().setProperty(DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME, "false"); diff --git a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleSetsTest.java b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleSetsTest.java similarity index 82% rename from archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleSetsTest.java rename to archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleSetsTest.java index 08130f411e..7eec572448 100644 --- a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerRunsRuleSetsTest.java +++ b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerRunsRuleSetsTest.java @@ -1,11 +1,15 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Method; import java.util.Collection; import com.tngtech.archunit.core.domain.JavaClass; import com.tngtech.archunit.core.domain.JavaClasses; -import com.tngtech.archunit.junit.ArchUnitRunner.SharedCache; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.ArchTests; +import com.tngtech.archunit.junit.internal.ArchUnitRunnerInternal.SharedCache; import com.tngtech.archunit.lang.ArchCondition; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.ConditionEvents; @@ -24,17 +28,17 @@ import static com.google.common.base.Preconditions.checkState; import static com.tngtech.archunit.core.domain.TestUtils.importClassesWithContext; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.ArchTestWithRuleLibrary.someOtherMethodRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredRules.someIgnoredFieldRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredRules.someIgnoredMethodRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someIgnoredSubFieldRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someIgnoredSubMethodRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someNonIgnoredSubFieldRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someNonIgnoredSubMethodRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.Rules.someFieldRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerRunsRuleSetsTest.Rules.someMethodRuleName; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.getRule; -import static com.tngtech.archunit.junit.ArchUnitRunnerTestUtils.newRunnerFor; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.ArchTestWithRuleLibrary.someOtherMethodRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredRules.someIgnoredFieldRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredRules.someIgnoredMethodRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someIgnoredSubFieldRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someIgnoredSubMethodRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someNonIgnoredSubFieldRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.IgnoredSubRules.someNonIgnoredSubMethodRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.Rules.someFieldRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerRunsRuleSetsTest.Rules.someMethodRuleName; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.getRule; +import static com.tngtech.archunit.junit.internal.ArchUnitRunnerTestUtils.newRunnerFor; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; import static com.tngtech.archunit.testutil.TestUtils.invoke; import static org.assertj.core.api.Assertions.assertThat; @@ -58,16 +62,16 @@ public class ArchUnitRunnerRunsRuleSetsTest { private ArgumentCaptor descriptionCaptor; @InjectMocks - private ArchUnitRunner runnerForRuleSet = newRunnerFor(ArchTestWithRuleSet.class); + private ArchUnitRunnerInternal runnerForRuleSet = newRunnerFor(ArchTestWithRuleSet.class); @InjectMocks - private ArchUnitRunner runnerForIgnoredRuleSet = newRunnerFor(ArchTestWithIgnoredRuleSet.class); + private ArchUnitRunnerInternal runnerForIgnoredRuleSet = newRunnerFor(ArchTestWithIgnoredRuleSet.class); @InjectMocks - private ArchUnitRunner runnerForRuleLibrary = newRunnerFor(ArchTestWithRuleLibrary.class); + private ArchUnitRunnerInternal runnerForRuleLibrary = newRunnerFor(ArchTestWithRuleLibrary.class); @InjectMocks - private ArchUnitRunner runnerForIgnoredRuleLibrary = newRunnerFor(ArchTestWithIgnoredRuleLibrary.class); + private ArchUnitRunnerInternal runnerForIgnoredRuleLibrary = newRunnerFor(ArchTestWithIgnoredRuleLibrary.class); private JavaClasses cachedClasses = importClassesWithContext(ArchUnitRunnerRunsRuleSetsTest.class); @@ -164,7 +168,7 @@ public void ignores_double_nested_method_rule_in_ignored_rule_set() { @Test public void should_allow_ArchRules_in_class_with_instance_field_in_abstract_base_class() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithRulesWithAbstractBaseClass.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithRulesWithAbstractBaseClass.class, cache); runner.runChild(getRule(ArchUnitRunnerRunsRuleFieldsTest.AbstractBaseClass.INSTANCE_FIELD_NAME, runner), runNotifier); @@ -173,7 +177,7 @@ public void should_allow_ArchRules_in_class_with_instance_field_in_abstract_base @Test public void should_allow_ArchRules_in_class_with_instance_method_in_abstract_base_class() { - ArchUnitRunner runner = newRunnerFor(ArchTestWithRulesWithAbstractBaseClass.class, cache); + ArchUnitRunnerInternal runner = newRunnerFor(ArchTestWithRulesWithAbstractBaseClass.class, cache); runner.runChild(getRule(ArchUnitRunnerRunsMethodsTest.AbstractBaseClass.INSTANCE_METHOD_NAME, runner), runNotifier); @@ -222,7 +226,7 @@ public boolean apply(Method input) { }; } - private void run(String ruleName, ArchUnitRunner runner, Runnable testVerification) { + private void run(String ruleName, ArchUnitRunnerInternal runner, Runnable testVerification) { ArchTestExecution rule = getRule(ruleName, runner); runner.runChild(rule, runNotifier); diff --git a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTest.java b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTest.java similarity index 87% rename from archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTest.java rename to archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTest.java index 2970de12bd..771fc9656e 100644 --- a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTest.java +++ b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTest.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.util.Set; @@ -7,7 +7,10 @@ import com.tngtech.archunit.core.importer.ImportOption; import com.tngtech.archunit.core.importer.Location; import com.tngtech.archunit.core.importer.Locations; -import com.tngtech.archunit.junit.ArchUnitRunner.SharedCache; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.LocationProvider; +import com.tngtech.archunit.junit.internal.ArchUnitRunnerInternal.SharedCache; import com.tngtech.archunit.lang.ArchCondition; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.ConditionEvents; @@ -46,9 +49,9 @@ public class ArchUnitRunnerTest { private ArgumentCaptor analysisRequestCaptor; @InjectMocks - private ArchUnitRunner runner = newRunner(SomeArchTest.class); + private ArchUnitRunnerInternal runner = newRunner(SomeArchTest.class); @InjectMocks - private ArchUnitRunner runnerOfMaxTest = newRunner(MaxAnnotatedTest.class); + private ArchUnitRunnerInternal runnerOfMaxTest = newRunner(MaxAnnotatedTest.class); @Before public void setUp() { @@ -91,12 +94,12 @@ public void rejects_missing_analyze_annotation() throws InitializationError { thrown.expectMessage("must be annotated"); thrown.expectMessage(AnalyzeClasses.class.getSimpleName()); - new ArchUnitRunner(Object.class); + new ArchUnitRunnerInternal(Object.class); } - private ArchUnitRunner newRunner(Class testClass) { + private ArchUnitRunnerInternal newRunner(Class testClass) { try { - return new ArchUnitRunner(testClass); + return new ArchUnitRunnerInternal(testClass); } catch (InitializationError error) { throw new RuntimeException(error); } @@ -128,7 +131,7 @@ public Set get(Class testClass) { static class OtherDummyLocation implements LocationProvider { @Override public Set get(Class testClass) { - return Locations.ofClass(ArchUnitRunner.class); + return Locations.ofClass(ArchUnitRunnerInternal.class); } } @@ -148,7 +151,7 @@ public boolean includes(Location location) { @AnalyzeClasses( packages = {"com.foo", "com.bar"}, - packagesOf = {ArchUnitRunner.class, ArchUnitRunnerTest.class}, + packagesOf = {ArchUnitRunnerInternal.class, ArchUnitRunnerTest.class}, locations = {DummyLocation.class, OtherDummyLocation.class}, wholeClasspath = true, importOptions = {DummyImportOption.class, OtherDummyImportOption.class} diff --git a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTestUtils.java b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTestUtils.java similarity index 78% rename from archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTestUtils.java rename to archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTestUtils.java index 005f1ee051..607fcba938 100644 --- a/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/ArchUnitRunnerTestUtils.java +++ b/archunit-junit/junit4/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitRunnerTestUtils.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; @@ -22,18 +22,18 @@ public void check(JavaClass item, ConditionEvents events) { static final ArchCondition NEVER_BE_SATISFIED = never(BE_SATISFIED) .as("satisfy something, but do not"); - static ArchUnitRunner newRunnerFor(Class testClass) { + static ArchUnitRunnerInternal newRunnerFor(Class testClass) { try { - return new ArchUnitRunner(testClass); + return new ArchUnitRunnerInternal(testClass); } catch (InitializationError initializationError) { throw new RuntimeException(initializationError); } } - static ArchUnitRunner newRunnerFor(Class testClass, ArchUnitRunner.SharedCache cache) { + static ArchUnitRunnerInternal newRunnerFor(Class testClass, ArchUnitRunnerInternal.SharedCache cache) { try { - ArchUnitRunner runner = newRunnerFor(testClass); - Field field = field(ArchUnitRunner.class, "cache"); + ArchUnitRunnerInternal runner = newRunnerFor(testClass); + Field field = field(ArchUnitRunnerInternal.class, "cache"); field.setAccessible(true); field.set(runner, cache); return runner; @@ -42,7 +42,7 @@ static ArchUnitRunner newRunnerFor(Class testClass, ArchUnitRunner.SharedCach } } - static ArchTestExecution getRule(String name, ArchUnitRunner runner) { + static ArchTestExecution getRule(String name, ArchUnitRunnerInternal runner) { for (ArchTestExecution ruleToTest : runner.getChildren()) { if (name.equals(ruleToTest.getName())) { return ruleToTest; diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/AbstractArchUnitTestDescriptor.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/AbstractArchUnitTestDescriptor.java similarity index 95% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/AbstractArchUnitTestDescriptor.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/AbstractArchUnitTestDescriptor.java index 1b9259ca16..9505b6d6bc 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/AbstractArchUnitTestDescriptor.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/AbstractArchUnitTestDescriptor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.AnnotatedElement; import java.util.Arrays; @@ -22,6 +22,8 @@ import java.util.Optional; import java.util.Set; +import com.tngtech.archunit.junit.ArchIgnore; +import com.tngtech.archunit.junit.ArchTag; import org.junit.platform.commons.support.AnnotationSupport; import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.TestSource; diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineDescriptor.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineDescriptor.java similarity index 95% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineDescriptor.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineDescriptor.java index 5da94451ff..8981ccee06 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineDescriptor.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineDescriptor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import org.junit.platform.engine.UniqueId; import org.junit.platform.engine.support.descriptor.EngineDescriptor; diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineExecutionContext.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineExecutionContext.java similarity index 94% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineExecutionContext.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineExecutionContext.java index 9e887eabba..a6ca8b63f1 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitEngineExecutionContext.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitEngineExecutionContext.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import org.junit.platform.engine.support.hierarchical.EngineExecutionContext; diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestDescriptor.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestDescriptor.java similarity index 93% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestDescriptor.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestDescriptor.java index 75fcdceb48..c1cb917aa9 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestDescriptor.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestDescriptor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -22,6 +22,11 @@ import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; +import com.tngtech.archunit.junit.ArchTests; +import com.tngtech.archunit.junit.CacheMode; +import com.tngtech.archunit.junit.LocationProvider; import com.tngtech.archunit.junit.engine_api.FieldSource; import com.tngtech.archunit.lang.ArchRule; import org.junit.platform.engine.TestDescriptor; @@ -32,13 +37,13 @@ import org.slf4j.LoggerFactory; import static com.google.common.base.Preconditions.checkArgument; -import static com.tngtech.archunit.junit.ArchTestInitializationException.WRAP_CAUSE; -import static com.tngtech.archunit.junit.DisplayNameResolver.determineDisplayName; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllFields; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllMethods; -import static com.tngtech.archunit.junit.ReflectionUtils.getValueOrThrowException; -import static com.tngtech.archunit.junit.ReflectionUtils.invokeMethod; -import static com.tngtech.archunit.junit.ReflectionUtils.withAnnotation; +import static com.tngtech.archunit.junit.internal.ArchTestInitializationException.WRAP_CAUSE; +import static com.tngtech.archunit.junit.internal.DisplayNameResolver.determineDisplayName; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllFields; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllMethods; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getValueOrThrowException; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.invokeMethod; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.withAnnotation; class ArchUnitTestDescriptor extends AbstractArchUnitTestDescriptor implements CreatesChildren { private static final Logger LOG = LoggerFactory.getLogger(ArchUnitTestDescriptor.class); diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestEngine.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngine.java similarity index 96% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestEngine.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngine.java index f9a66d8a4a..0d426bc961 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ArchUnitTestEngine.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngine.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.net.MalformedURLException; import java.net.URI; @@ -27,6 +27,8 @@ import com.tngtech.archunit.base.MayResolveTypesViaReflection; import com.tngtech.archunit.core.domain.JavaClass; import com.tngtech.archunit.core.importer.ClassFileImporter; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.engine_api.FieldSelector; import org.junit.platform.engine.EngineDiscoveryRequest; import org.junit.platform.engine.ExecutionRequest; @@ -42,9 +44,9 @@ import org.junit.platform.engine.discovery.UniqueIdSelector; import org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllFields; -import static com.tngtech.archunit.junit.ReflectionUtils.getAllMethods; -import static com.tngtech.archunit.junit.ReflectionUtils.withAnnotation; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllFields; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.getAllMethods; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.withAnnotation; import static java.util.stream.Collectors.toList; /** diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/CreatesChildren.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/CreatesChildren.java similarity index 93% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/CreatesChildren.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/CreatesChildren.java index e429dc7c80..39a97ab7de 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/CreatesChildren.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/CreatesChildren.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; interface CreatesChildren { void createChildren(ElementResolver resolver); diff --git a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ElementResolver.java b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ElementResolver.java similarity index 96% rename from archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ElementResolver.java rename to archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ElementResolver.java index 12e13a21e5..7d2fbf559f 100644 --- a/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/ElementResolver.java +++ b/archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/ElementResolver.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; import java.lang.reflect.Member; @@ -32,9 +32,9 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.FIELD_SEGMENT_TYPE; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.METHOD_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.FIELD_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.METHOD_SEGMENT_TYPE; class ElementResolver { private final ArchUnitEngineDescriptor engineDescriptor; diff --git a/archunit-junit/junit5/engine/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine b/archunit-junit/junit5/engine/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine index e1edfc3804..65a1f817b8 100644 --- a/archunit-junit/junit5/engine/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine +++ b/archunit-junit/junit5/engine/src/main/resources/META-INF/services/org.junit.platform.engine.TestEngine @@ -1 +1 @@ -com.tngtech.archunit.junit.ArchUnitTestEngine \ No newline at end of file +com.tngtech.archunit.junit.internal.ArchUnitTestEngine diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/ArchUnitTestEngineTest.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngineTest.java similarity index 94% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/ArchUnitTestEngineTest.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngineTest.java index ca21378c2a..0bd555d969 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/ArchUnitTestEngineTest.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/ArchUnitTestEngineTest.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.net.URI; import java.net.URL; @@ -14,40 +14,42 @@ import com.google.common.collect.ImmutableSet; import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.core.domain.JavaClasses; -import com.tngtech.archunit.junit.ArchUnitTestEngine.SharedCache; +import com.tngtech.archunit.junit.AnalyzeClasses; +import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.engine_api.FieldSelector; import com.tngtech.archunit.junit.engine_api.FieldSource; -import com.tngtech.archunit.junit.testexamples.ClassWithPrivateTests; -import com.tngtech.archunit.junit.testexamples.ComplexMetaTags; -import com.tngtech.archunit.junit.testexamples.ComplexRuleLibrary; -import com.tngtech.archunit.junit.testexamples.ComplexTags; -import com.tngtech.archunit.junit.testexamples.FullAnalyzeClassesSpec; -import com.tngtech.archunit.junit.testexamples.LibraryWithPrivateTests; -import com.tngtech.archunit.junit.testexamples.SimpleRuleLibrary; -import com.tngtech.archunit.junit.testexamples.TestClassWithMetaTag; -import com.tngtech.archunit.junit.testexamples.TestClassWithMetaTags; -import com.tngtech.archunit.junit.testexamples.TestClassWithTags; -import com.tngtech.archunit.junit.testexamples.TestFieldWithMetaTag; -import com.tngtech.archunit.junit.testexamples.TestFieldWithMetaTags; -import com.tngtech.archunit.junit.testexamples.TestFieldWithTags; -import com.tngtech.archunit.junit.testexamples.TestMethodWithMetaTag; -import com.tngtech.archunit.junit.testexamples.TestMethodWithMetaTags; -import com.tngtech.archunit.junit.testexamples.TestMethodWithTags; -import com.tngtech.archunit.junit.testexamples.UnwantedClass; -import com.tngtech.archunit.junit.testexamples.ignores.IgnoredClass; -import com.tngtech.archunit.junit.testexamples.ignores.IgnoredField; -import com.tngtech.archunit.junit.testexamples.ignores.IgnoredLibrary; -import com.tngtech.archunit.junit.testexamples.ignores.IgnoredMethod; -import com.tngtech.archunit.junit.testexamples.ignores.MetaIgnoredClass; -import com.tngtech.archunit.junit.testexamples.ignores.MetaIgnoredField; -import com.tngtech.archunit.junit.testexamples.ignores.MetaIgnoredLibrary; -import com.tngtech.archunit.junit.testexamples.ignores.MetaIgnoredMethod; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleMethod; -import com.tngtech.archunit.junit.testexamples.subtwo.SimpleRules; -import com.tngtech.archunit.junit.testexamples.wrong.WrongRuleMethodNotStatic; -import com.tngtech.archunit.junit.testexamples.wrong.WrongRuleMethodWrongParameters; -import com.tngtech.archunit.junit.testutil.MockitoExtension; +import com.tngtech.archunit.junit.internal.ArchUnitTestEngine.SharedCache; +import com.tngtech.archunit.junit.internal.testexamples.ClassWithPrivateTests; +import com.tngtech.archunit.junit.internal.testexamples.ComplexMetaTags; +import com.tngtech.archunit.junit.internal.testexamples.ComplexRuleLibrary; +import com.tngtech.archunit.junit.internal.testexamples.ComplexTags; +import com.tngtech.archunit.junit.internal.testexamples.FullAnalyzeClassesSpec; +import com.tngtech.archunit.junit.internal.testexamples.LibraryWithPrivateTests; +import com.tngtech.archunit.junit.internal.testexamples.SimpleRuleLibrary; +import com.tngtech.archunit.junit.internal.testexamples.TestClassWithMetaTag; +import com.tngtech.archunit.junit.internal.testexamples.TestClassWithMetaTags; +import com.tngtech.archunit.junit.internal.testexamples.TestClassWithTags; +import com.tngtech.archunit.junit.internal.testexamples.TestFieldWithMetaTag; +import com.tngtech.archunit.junit.internal.testexamples.TestFieldWithMetaTags; +import com.tngtech.archunit.junit.internal.testexamples.TestFieldWithTags; +import com.tngtech.archunit.junit.internal.testexamples.TestMethodWithMetaTag; +import com.tngtech.archunit.junit.internal.testexamples.TestMethodWithMetaTags; +import com.tngtech.archunit.junit.internal.testexamples.TestMethodWithTags; +import com.tngtech.archunit.junit.internal.testexamples.UnwantedClass; +import com.tngtech.archunit.junit.internal.testexamples.ignores.IgnoredClass; +import com.tngtech.archunit.junit.internal.testexamples.ignores.IgnoredField; +import com.tngtech.archunit.junit.internal.testexamples.ignores.IgnoredLibrary; +import com.tngtech.archunit.junit.internal.testexamples.ignores.IgnoredMethod; +import com.tngtech.archunit.junit.internal.testexamples.ignores.MetaIgnoredClass; +import com.tngtech.archunit.junit.internal.testexamples.ignores.MetaIgnoredField; +import com.tngtech.archunit.junit.internal.testexamples.ignores.MetaIgnoredLibrary; +import com.tngtech.archunit.junit.internal.testexamples.ignores.MetaIgnoredMethod; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleMethod; +import com.tngtech.archunit.junit.internal.testexamples.subtwo.SimpleRules; +import com.tngtech.archunit.junit.internal.testexamples.wrong.WrongRuleMethodNotStatic; +import com.tngtech.archunit.junit.internal.testexamples.wrong.WrongRuleMethodWrongParameters; +import com.tngtech.archunit.junit.internal.testutil.MockitoExtension; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -70,18 +72,18 @@ import static com.google.common.collect.Iterables.getLast; import static com.google.common.collect.Iterables.getOnlyElement; import static com.tngtech.archunit.core.domain.TestUtils.importClasses; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.FIELD_SEGMENT_TYPE; -import static com.tngtech.archunit.junit.ArchUnitTestDescriptor.METHOD_SEGMENT_TYPE; -import static com.tngtech.archunit.junit.EngineExecutionTestListener.onlyElement; -import static com.tngtech.archunit.junit.testexamples.TestFieldWithMetaTag.FIELD_WITH_META_TAG_NAME; -import static com.tngtech.archunit.junit.testexamples.TestFieldWithMetaTags.FIELD_WITH_META_TAGS_NAME; -import static com.tngtech.archunit.junit.testexamples.TestFieldWithTags.FIELD_WITH_TAG_NAME; -import static com.tngtech.archunit.junit.testexamples.TestMethodWithMetaTag.METHOD_WITH_META_TAG_NAME; -import static com.tngtech.archunit.junit.testexamples.TestMethodWithMetaTags.METHOD_WITH_META_TAGS_NAME; -import static com.tngtech.archunit.junit.testexamples.TestMethodWithTags.METHOD_WITH_TAG_NAME; -import static com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField.SIMPLE_RULE_FIELD_NAME; -import static com.tngtech.archunit.junit.testexamples.subone.SimpleRuleMethod.SIMPLE_RULE_METHOD_NAME; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.FIELD_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.ArchUnitTestDescriptor.METHOD_SEGMENT_TYPE; +import static com.tngtech.archunit.junit.internal.EngineExecutionTestListener.onlyElement; +import static com.tngtech.archunit.junit.internal.testexamples.TestFieldWithMetaTag.FIELD_WITH_META_TAG_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.TestFieldWithMetaTags.FIELD_WITH_META_TAGS_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.TestFieldWithTags.FIELD_WITH_TAG_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.TestMethodWithMetaTag.METHOD_WITH_META_TAG_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.TestMethodWithMetaTags.METHOD_WITH_META_TAGS_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.TestMethodWithTags.METHOD_WITH_TAG_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField.SIMPLE_RULE_FIELD_NAME; +import static com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleMethod.SIMPLE_RULE_METHOD_NAME; import static com.tngtech.archunit.testutil.ReflectionTestUtils.field; import static java.util.Collections.singleton; import static java.util.function.Function.identity; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineDiscoveryTestRequest.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineDiscoveryTestRequest.java similarity index 99% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineDiscoveryTestRequest.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineDiscoveryTestRequest.java index 2cfee6a24e..7b3d5f0b33 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineDiscoveryTestRequest.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineDiscoveryTestRequest.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; import java.lang.reflect.Method; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineExecutionTestListener.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineExecutionTestListener.java similarity index 99% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineExecutionTestListener.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineExecutionTestListener.java index a50f935f33..19f59b34f9 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/EngineExecutionTestListener.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/EngineExecutionTestListener.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.util.ArrayList; import java.util.Collection; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ClassWithPrivateTests.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ClassWithPrivateTests.java similarity index 92% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ClassWithPrivateTests.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ClassWithPrivateTests.java index 5c8199871b..b81e676ac0 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ClassWithPrivateTests.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ClassWithPrivateTests.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexMetaTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexMetaTags.java similarity index 96% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexMetaTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexMetaTags.java index aeadf46a59..040f5e5028 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexMetaTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexMetaTags.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexRuleLibrary.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexRuleLibrary.java similarity index 80% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexRuleLibrary.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexRuleLibrary.java index d8f5f1c796..0173f27326 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexRuleLibrary.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexRuleLibrary.java @@ -1,9 +1,9 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subtwo.SimpleRules; +import com.tngtech.archunit.junit.internal.testexamples.subtwo.SimpleRules; @AnalyzeClasses(packages = "some.dummy.package") public class ComplexRuleLibrary { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexTags.java similarity index 93% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexTags.java index 6573262b9f..ee058661bd 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ComplexTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ComplexTags.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/FullAnalyzeClassesSpec.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/FullAnalyzeClassesSpec.java similarity index 86% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/FullAnalyzeClassesSpec.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/FullAnalyzeClassesSpec.java index 2d0e81323a..dbaa3cec83 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/FullAnalyzeClassesSpec.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/FullAnalyzeClassesSpec.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import java.io.File; import java.util.Collections; @@ -11,8 +11,8 @@ import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.LocationProvider; -import com.tngtech.archunit.junit.testexamples.FullAnalyzeClassesSpec.FirstLocationProvider; -import com.tngtech.archunit.junit.testexamples.FullAnalyzeClassesSpec.SecondLocationProvider; +import com.tngtech.archunit.junit.internal.testexamples.FullAnalyzeClassesSpec.FirstLocationProvider; +import com.tngtech.archunit.junit.internal.testexamples.FullAnalyzeClassesSpec.SecondLocationProvider; import com.tngtech.archunit.lang.ArchCondition; import com.tngtech.archunit.lang.ArchRule; import com.tngtech.archunit.lang.ConditionEvents; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/LibraryWithPrivateTests.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/LibraryWithPrivateTests.java similarity index 91% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/LibraryWithPrivateTests.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/LibraryWithPrivateTests.java index 65d27839ed..8f20282c54 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/LibraryWithPrivateTests.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/LibraryWithPrivateTests.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/RuleThatFails.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/RuleThatFails.java similarity index 93% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/RuleThatFails.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/RuleThatFails.java index 5b5c766e27..6a9cb62133 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/RuleThatFails.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/RuleThatFails.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.core.domain.JavaClass; import com.tngtech.archunit.lang.ArchCondition; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/SimpleRuleLibrary.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/SimpleRuleLibrary.java similarity index 71% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/SimpleRuleLibrary.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/SimpleRuleLibrary.java index ba22524e10..e8217f9c90 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/SimpleRuleLibrary.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/SimpleRuleLibrary.java @@ -1,10 +1,10 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField; -import com.tngtech.archunit.junit.testexamples.subtwo.SimpleRules; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField; +import com.tngtech.archunit.junit.internal.testexamples.subtwo.SimpleRules; @AnalyzeClasses(packages = "some.dummy.package") public class SimpleRuleLibrary { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTag.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTag.java similarity index 90% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTag.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTag.java index 244d2274a9..56e5b37b65 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTag.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTag.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; @@ -9,7 +9,7 @@ import com.tngtech.archunit.junit.ArchTag; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField; import com.tngtech.archunit.lang.ArchRule; import static java.lang.annotation.ElementType.FIELD; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTags.java similarity index 90% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTags.java index 1021ff3ead..346f2d81f8 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithMetaTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithMetaTags.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; @@ -10,7 +10,7 @@ import com.tngtech.archunit.junit.ArchTags; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField; import com.tngtech.archunit.lang.ArchRule; import static java.lang.annotation.ElementType.FIELD; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithTags.java similarity index 84% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithTags.java index 1e019583dd..c58c4c0450 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestClassWithTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestClassWithTags.java @@ -1,11 +1,11 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTag; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subone.SimpleRuleField; +import com.tngtech.archunit.junit.internal.testexamples.subone.SimpleRuleField; import com.tngtech.archunit.lang.ArchRule; @ArchTag("tag-one") diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTag.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTag.java similarity index 78% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTag.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTag.java index 6ef490f930..9f1a4ad8c9 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTag.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTag.java @@ -1,15 +1,17 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTag; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; @AnalyzeClasses diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTags.java similarity index 80% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTags.java index 3f2c5475cb..a5dae5928c 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithMetaTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithMetaTags.java @@ -1,4 +1,8 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTag; @@ -6,11 +10,9 @@ import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; @AnalyzeClasses diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithTags.java similarity index 89% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithTags.java index be2083d2d2..0ed7b4049b 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestFieldWithTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestFieldWithTags.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTag; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTag.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTag.java similarity index 78% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTag.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTag.java index 4f3f68dd57..e59a626bac 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTag.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTag.java @@ -1,15 +1,17 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTag; import com.tngtech.archunit.junit.ArchTest; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; @AnalyzeClasses diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTags.java similarity index 79% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTags.java index 507fb89b56..05900c0275 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithMetaTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithMetaTags.java @@ -1,4 +1,8 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; + +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.Target; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; @@ -6,11 +10,9 @@ import com.tngtech.archunit.junit.ArchTags; import com.tngtech.archunit.junit.ArchTest; -import java.lang.annotation.Inherited; -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; @AnalyzeClasses diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithTags.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithTags.java similarity index 88% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithTags.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithTags.java index 4276b18584..e0246a6094 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/TestMethodWithTags.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/TestMethodWithTags.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/UnwantedClass.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/UnwantedClass.java similarity index 75% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/UnwantedClass.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/UnwantedClass.java index bd3f94afe8..b952454ab1 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/UnwantedClass.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/UnwantedClass.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples; +package com.tngtech.archunit.junit.internal.testexamples; public class UnwantedClass { public static final Class CLASS_SATISFYING_RULES = Object.class; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/ArchIgnoreMetaAnnotation.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/ArchIgnoreMetaAnnotation.java similarity index 62% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/ArchIgnoreMetaAnnotation.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/ArchIgnoreMetaAnnotation.java index a50bfaa4bf..ed066681dc 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/ArchIgnoreMetaAnnotation.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/ArchIgnoreMetaAnnotation.java @@ -1,12 +1,14 @@ -package com.tngtech.archunit.junit.testexamples.ignores; - -import com.tngtech.archunit.junit.ArchIgnore; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; -import static java.lang.annotation.ElementType.*; +import com.tngtech.archunit.junit.ArchIgnore; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; @Inherited diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredClass.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredClass.java similarity index 70% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredClass.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredClass.java index 5a887ed825..85e9785fee 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredClass.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredClass.java @@ -1,13 +1,13 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchIgnore; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; import com.tngtech.archunit.lang.ArchRule; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @ArchIgnore @AnalyzeClasses(packages = "some.dummy.package") diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredField.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredField.java similarity index 73% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredField.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredField.java index cce10293f7..fe0dbf6689 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredField.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredField.java @@ -1,12 +1,12 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchIgnore; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; import com.tngtech.archunit.lang.ArchRule; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @AnalyzeClasses(packages = "some.dummy.package") public class IgnoredField { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredLibrary.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredLibrary.java similarity index 84% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredLibrary.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredLibrary.java index bab5b558cd..fcfe2df6fe 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredLibrary.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredLibrary.java @@ -1,10 +1,10 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchIgnore; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subtwo.SimpleRules; +import com.tngtech.archunit.junit.internal.testexamples.subtwo.SimpleRules; @AnalyzeClasses(packages = "some.dummy.package") public class IgnoredLibrary { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredMethod.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredMethod.java similarity index 75% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredMethod.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredMethod.java index 24083a6203..00ecf784cb 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/IgnoredMethod.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/IgnoredMethod.java @@ -1,12 +1,12 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchIgnore; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @AnalyzeClasses(packages = "some.dummy.package") public class IgnoredMethod { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredClass.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredClass.java similarity index 69% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredClass.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredClass.java index 3470a7c7d2..29a66c5713 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredClass.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredClass.java @@ -1,12 +1,12 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; import com.tngtech.archunit.lang.ArchRule; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @ArchIgnoreMetaAnnotation @AnalyzeClasses(packages = "some.dummy.package") diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredField.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredField.java similarity index 71% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredField.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredField.java index 641dfd8a4c..cbf8f67935 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredField.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredField.java @@ -1,11 +1,11 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; import com.tngtech.archunit.lang.ArchRule; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @AnalyzeClasses(packages = "some.dummy.package") public class MetaIgnoredField { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredLibrary.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredLibrary.java similarity index 84% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredLibrary.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredLibrary.java index 73618b5e00..e02f7cb896 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredLibrary.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredLibrary.java @@ -1,9 +1,9 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchTests; -import com.tngtech.archunit.junit.testexamples.subtwo.SimpleRules; +import com.tngtech.archunit.junit.internal.testexamples.subtwo.SimpleRules; @AnalyzeClasses(packages = "some.dummy.package") public class MetaIgnoredLibrary { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredMethod.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredMethod.java similarity index 74% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredMethod.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredMethod.java index 1d35756019..e22f433200 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/ignores/MetaIgnoredMethod.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/ignores/MetaIgnoredMethod.java @@ -1,11 +1,11 @@ -package com.tngtech.archunit.junit.testexamples.ignores; +package com.tngtech.archunit.junit.internal.testexamples.ignores; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; -import static com.tngtech.archunit.junit.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; +import static com.tngtech.archunit.junit.internal.testexamples.UnwantedClass.CLASS_VIOLATING_RULES; @AnalyzeClasses(packages = "some.dummy.package") public class MetaIgnoredMethod { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleField.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleField.java similarity index 66% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleField.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleField.java index eaa686a7d1..b5b13f7808 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleField.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleField.java @@ -1,9 +1,9 @@ -package com.tngtech.archunit.junit.testexamples.subone; +package com.tngtech.archunit.junit.internal.testexamples.subone; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; -import com.tngtech.archunit.junit.testexamples.UnwantedClass; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.UnwantedClass; import com.tngtech.archunit.lang.ArchRule; @AnalyzeClasses(packages = "some.dummy.package") diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleMethod.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleMethod.java similarity index 68% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleMethod.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleMethod.java index 058b9861a2..957b2d6e37 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subone/SimpleRuleMethod.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subone/SimpleRuleMethod.java @@ -1,10 +1,10 @@ -package com.tngtech.archunit.junit.testexamples.subone; +package com.tngtech.archunit.junit.internal.testexamples.subone; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; -import com.tngtech.archunit.junit.testexamples.UnwantedClass; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.UnwantedClass; @AnalyzeClasses(packages = "some.dummy.package") public class SimpleRuleMethod { diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subtwo/SimpleRules.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subtwo/SimpleRules.java similarity index 87% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subtwo/SimpleRules.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subtwo/SimpleRules.java index a0961197c0..582bf8f8a2 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/subtwo/SimpleRules.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/subtwo/SimpleRules.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples.subtwo; +package com.tngtech.archunit.junit.internal.testexamples.subtwo; import java.util.Set; @@ -6,8 +6,8 @@ import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; -import com.tngtech.archunit.junit.testexamples.RuleThatFails; -import com.tngtech.archunit.junit.testexamples.UnwantedClass; +import com.tngtech.archunit.junit.internal.testexamples.RuleThatFails; +import com.tngtech.archunit.junit.internal.testexamples.UnwantedClass; import com.tngtech.archunit.lang.ArchRule; @AnalyzeClasses(packages = "some.dummy.package") diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodNotStatic.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodNotStatic.java similarity index 84% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodNotStatic.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodNotStatic.java index c82f0ec27d..a4b448407c 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodNotStatic.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodNotStatic.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples.wrong; +package com.tngtech.archunit.junit.internal.testexamples.wrong; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.AnalyzeClasses; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodWrongParameters.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodWrongParameters.java similarity index 82% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodWrongParameters.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodWrongParameters.java index d4f69de4cb..5d3950c553 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testexamples/wrong/WrongRuleMethodWrongParameters.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testexamples/wrong/WrongRuleMethodWrongParameters.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testexamples.wrong; +package com.tngtech.archunit.junit.internal.testexamples.wrong; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; diff --git a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testutil/MockitoExtension.java b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testutil/MockitoExtension.java similarity index 89% rename from archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testutil/MockitoExtension.java rename to archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testutil/MockitoExtension.java index d5f10eb23f..113cd23b50 100644 --- a/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/testutil/MockitoExtension.java +++ b/archunit-junit/junit5/engine/src/test/java/com/tngtech/archunit/junit/internal/testutil/MockitoExtension.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit.testutil; +package com.tngtech.archunit.junit.internal.testutil; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.TestInstancePostProcessor; diff --git a/archunit-junit/src/api/java/com/tngtech/archunit/junit/ArchTests.java b/archunit-junit/src/api/java/com/tngtech/archunit/junit/ArchTests.java index 61ac5851df..500f2473f9 100644 --- a/archunit-junit/src/api/java/com/tngtech/archunit/junit/ArchTests.java +++ b/archunit-junit/src/api/java/com/tngtech/archunit/junit/ArchTests.java @@ -15,6 +15,7 @@ */ package com.tngtech.archunit.junit; +import com.tngtech.archunit.Internal; import com.tngtech.archunit.PublicAPI; import static com.tngtech.archunit.PublicAPI.Usage.ACCESS; @@ -65,7 +66,8 @@ public static ArchTests in(Class definitionLocation) { return new ArchTests(definitionLocation); } - Class getDefinitionLocation() { + @Internal + public Class getDefinitionLocation() { return definitionLocation; } } diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestExecutionException.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecutionException.java similarity index 94% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestExecutionException.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecutionException.java index 28f089afe2..a0577d903c 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestExecutionException.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestExecutionException.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; class ArchTestExecutionException extends RuntimeException { ArchTestExecutionException(String message, Throwable throwable) { diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestInitializationException.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestInitializationException.java similarity index 95% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestInitializationException.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestInitializationException.java index 7f690b6b30..c96a9f6588 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ArchTestInitializationException.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ArchTestInitializationException.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import com.tngtech.archunit.base.Function; diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassAnalysisRequest.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassAnalysisRequest.java similarity index 76% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassAnalysisRequest.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassAnalysisRequest.java index 1b9ff0ca6b..52675d7f22 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassAnalysisRequest.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassAnalysisRequest.java @@ -1,6 +1,8 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.CacheMode; +import com.tngtech.archunit.junit.LocationProvider; /** * Simple adapter to separate the JUnit version specific @AnalyzeClasses from infrastructure like {@link ClassCache}. diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassCache.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassCache.java similarity index 97% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassCache.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassCache.java index 000ec4ce7a..7eb7f509d7 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ClassCache.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ClassCache.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.util.Collection; import java.util.Collections; @@ -34,10 +34,12 @@ import com.tngtech.archunit.core.importer.ImportOptions; import com.tngtech.archunit.core.importer.Location; import com.tngtech.archunit.core.importer.Locations; +import com.tngtech.archunit.junit.CacheMode; +import com.tngtech.archunit.junit.LocationProvider; import static com.google.common.base.Preconditions.checkNotNull; import static com.tngtech.archunit.junit.CacheMode.FOREVER; -import static com.tngtech.archunit.junit.ReflectionUtils.newInstanceOf; +import static com.tngtech.archunit.junit.internal.ReflectionUtils.newInstanceOf; /** * The {@link ClassCache} takes care of caching {@link JavaClasses} between test runs. On the one hand, diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/DisplayNameResolver.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/DisplayNameResolver.java similarity index 97% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/DisplayNameResolver.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/DisplayNameResolver.java index 26be72727e..17b45dda66 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/DisplayNameResolver.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/DisplayNameResolver.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import com.tngtech.archunit.ArchConfiguration; diff --git a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ReflectionUtils.java b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ReflectionUtils.java similarity index 99% rename from archunit-junit/src/main/java/com/tngtech/archunit/junit/ReflectionUtils.java rename to archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ReflectionUtils.java index ec20792280..7678a1509e 100644 --- a/archunit-junit/src/main/java/com/tngtech/archunit/junit/ReflectionUtils.java +++ b/archunit-junit/src/main/java/com/tngtech/archunit/junit/internal/ReflectionUtils.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheConcurrencyTest.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheConcurrencyTest.java similarity index 96% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheConcurrencyTest.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheConcurrencyTest.java index 3251a9409e..305d4d11cb 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheConcurrencyTest.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheConcurrencyTest.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.util.ArrayList; import java.util.Arrays; @@ -10,7 +10,7 @@ import com.tngtech.archunit.Slow; import com.tngtech.archunit.core.importer.ImportOptions; import com.tngtech.archunit.core.importer.Location; -import com.tngtech.archunit.junit.ClassCache.CacheClassFileImporter; +import com.tngtech.archunit.junit.internal.ClassCache.CacheClassFileImporter; import org.junit.After; import org.junit.Before; import org.junit.Rule; diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheTest.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheTest.java similarity index 98% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheTest.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheTest.java index e3ae9a353c..0c13137e1c 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ClassCacheTest.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ClassCacheTest.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.util.Collection; import java.util.Collections; @@ -11,7 +11,8 @@ import com.tngtech.archunit.core.importer.ImportOptions; import com.tngtech.archunit.core.importer.Location; import com.tngtech.archunit.core.importer.Locations; -import com.tngtech.archunit.junit.ClassCache.CacheClassFileImporter; +import com.tngtech.archunit.junit.LocationProvider; +import com.tngtech.archunit.junit.internal.ClassCache.CacheClassFileImporter; import com.tngtech.archunit.testutil.ArchConfigurationRule; import com.tngtech.java.junit.dataprovider.DataProvider; import com.tngtech.java.junit.dataprovider.DataProviderRunner; diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/DisplayNameResolverTest.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/DisplayNameResolverTest.java similarity index 90% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/DisplayNameResolverTest.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/DisplayNameResolverTest.java index e64b09b452..13d939d7f8 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/DisplayNameResolverTest.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/DisplayNameResolverTest.java @@ -1,11 +1,11 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.testutil.ArchConfigurationRule; import org.junit.Rule; import org.junit.Test; -import static com.tngtech.archunit.junit.DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME; +import static com.tngtech.archunit.junit.internal.DisplayNameResolver.JUNIT_DISPLAYNAME_REPLACE_UNDERSCORES_BY_SPACES_PROPERTY_NAME; import static org.assertj.core.api.Assertions.assertThat; public class DisplayNameResolverTest { @@ -51,4 +51,4 @@ public void returns_original_name_if_property_is_unset() { // Then assertThat(displayName).isEqualTo("some_element_Name"); } -} \ No newline at end of file +} diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/LocationOfClass.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/LocationOfClass.java similarity index 84% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/LocationOfClass.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/LocationOfClass.java index 1cfdbbe1f2..be52603cc2 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/LocationOfClass.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/LocationOfClass.java @@ -1,4 +1,4 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -6,6 +6,7 @@ import com.tngtech.archunit.core.importer.Location; import com.tngtech.archunit.core.importer.Locations; +import com.tngtech.archunit.junit.LocationProvider; @Retention(RetentionPolicy.RUNTIME) @interface LocationOfClass { diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ReflectionUtilsTest.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ReflectionUtilsTest.java similarity index 97% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/ReflectionUtilsTest.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ReflectionUtilsTest.java index 0772fb69ed..d4d376de43 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/ReflectionUtilsTest.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/ReflectionUtilsTest.java @@ -1,11 +1,11 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import java.lang.reflect.Field; import java.lang.reflect.Member; import java.lang.reflect.Method; import java.util.Collection; -import com.tngtech.archunit.junit.ReflectionUtils.Predicate; +import com.tngtech.archunit.junit.internal.ReflectionUtils.Predicate; import org.junit.Test; import static com.tngtech.archunit.testutil.ReflectionTestUtils.field; diff --git a/archunit-junit/src/test/java/com/tngtech/archunit/junit/TestAnalysisRequest.java b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/TestAnalysisRequest.java similarity index 93% rename from archunit-junit/src/test/java/com/tngtech/archunit/junit/TestAnalysisRequest.java rename to archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/TestAnalysisRequest.java index 92f4f4cbc3..b395c989c1 100644 --- a/archunit-junit/src/test/java/com/tngtech/archunit/junit/TestAnalysisRequest.java +++ b/archunit-junit/src/test/java/com/tngtech/archunit/junit/internal/TestAnalysisRequest.java @@ -1,6 +1,8 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.internal; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.CacheMode; +import com.tngtech.archunit.junit.LocationProvider; @SuppressWarnings("unchecked") class TestAnalysisRequest implements ClassAnalysisRequest { diff --git a/archunit/src/main/java/com/tngtech/archunit/base/ReflectionUtils.java b/archunit/src/main/java/com/tngtech/archunit/base/ReflectionUtils.java index 2eede8b827..a22cf9cabf 100644 --- a/archunit/src/main/java/com/tngtech/archunit/base/ReflectionUtils.java +++ b/archunit/src/main/java/com/tngtech/archunit/base/ReflectionUtils.java @@ -20,14 +20,25 @@ import com.tngtech.archunit.Internal; @Internal -public class ReflectionUtils { - public static T newInstanceOf(Class type) { +public final class ReflectionUtils { + private ReflectionUtils() { + } + + public static T newInstanceOf(Class type, Object... parameters) { try { - Constructor constructor = type.getDeclaredConstructor(); + Constructor constructor = type.getDeclaredConstructor(typesOf(parameters)); constructor.setAccessible(true); - return constructor.newInstance(); + return constructor.newInstance(parameters); } catch (Exception e) { throw new ArchUnitException.ReflectionException(e); } } + + private static Class[] typesOf(Object[] parameters) { + Class[] result = new Class[parameters.length]; + for (int i = 0; i < parameters.length; i++) { + result[i] = parameters[i].getClass(); + } + return result; + } }