From 6625f3f3a9f1fc8c806425cd93c4dbe04f877d6a Mon Sep 17 00:00:00 2001 From: Peter Gafert Date: Sat, 5 Mar 2022 16:01:33 +0700 Subject: [PATCH 1/3] move classes of `junit5-engine-api` to separate package 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`, `junit5-engine` and `junit5-engine-api` all export the same package `com.tngtech.archunit.junit`, which is illegal for Java Modules. As a first step we move all classes contained in `junit5-engine-api` to a separate package to resolve part of the conflict. Unfortunately, this demands that we make some methods public that did not have to be before. Signed-off-by: Peter Gafert --- .../CustomClassLoaderIntegrationTest.java | 2 +- .../junit/{ => engine_api}/FieldSelector.java | 9 ++++++--- .../junit/{ => engine_api}/FieldSource.java | 16 +++++++++------- .../{ => engine_api}/FieldSelectorTest.java | 3 ++- .../archunit/junit/ArchUnitTestDescriptor.java | 1 + .../archunit/junit/ArchUnitTestEngine.java | 1 + .../archunit/junit/ArchUnitTestEngineTest.java | 2 ++ .../junit/EngineDiscoveryTestRequest.java | 3 ++- 8 files changed, 24 insertions(+), 13 deletions(-) rename archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/{ => engine_api}/FieldSelector.java (95%) rename archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/{ => engine_api}/FieldSource.java (88%) rename archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/{ => engine_api}/FieldSelectorTest.java (94%) diff --git a/archunit-integration-test/src/test/java/com/tngtech/archunit/integration/CustomClassLoaderIntegrationTest.java b/archunit-integration-test/src/test/java/com/tngtech/archunit/integration/CustomClassLoaderIntegrationTest.java index 428fe4ff17..2465bd7de1 100644 --- a/archunit-integration-test/src/test/java/com/tngtech/archunit/integration/CustomClassLoaderIntegrationTest.java +++ b/archunit-integration-test/src/test/java/com/tngtech/archunit/integration/CustomClassLoaderIntegrationTest.java @@ -21,7 +21,7 @@ import org.junit.platform.launcher.core.LauncherFactory; import static com.google.common.collect.Iterables.getOnlyElement; -import static com.tngtech.archunit.junit.FieldSelector.selectField; +import static com.tngtech.archunit.junit.engine_api.FieldSelector.selectField; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder.request; diff --git a/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSelector.java b/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSelector.java similarity index 95% rename from archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSelector.java rename to archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSelector.java index 512e0d3f86..fcdc8e94f8 100644 --- a/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSelector.java +++ b/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSelector.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.engine_api; import java.lang.reflect.Field; import java.util.Objects; +import com.tngtech.archunit.Internal; import com.tngtech.archunit.PublicAPI; import com.tngtech.archunit.base.ClassLoaders; import com.tngtech.archunit.base.MayResolveTypesViaReflection; @@ -35,11 +36,13 @@ private FieldSelector(Class clazz, Field field) { this.field = field; } - Class getJavaClass() { + @Internal + public Class getJavaClass() { return clazz; } - Field getJavaField() { + @Internal + public Field getJavaField() { return field; } diff --git a/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSource.java b/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSource.java similarity index 88% rename from archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSource.java rename to archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSource.java index 33b96c7382..85abe8ee22 100644 --- a/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/FieldSource.java +++ b/archunit-junit/junit5/engine-api/src/main/java/com/tngtech/archunit/junit/engine_api/FieldSource.java @@ -13,11 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.engine_api; import java.lang.reflect.Field; import java.util.Objects; +import com.tngtech.archunit.Internal; import com.tngtech.archunit.PublicAPI; import org.junit.platform.engine.TestSource; @@ -61,17 +62,18 @@ public boolean equals(Object obj) { if (obj == null || getClass() != obj.getClass()) { return false; } - final FieldSource other = (FieldSource) obj; + final FieldSource other = (FieldSource) obj; return Objects.equals(this.javaClass, other.javaClass) && Objects.equals(this.fieldName, other.fieldName); - } + } - @Override - public String toString() { + @Override + public String toString() { return getClass().getSimpleName() + "{" + getClassName() + '.' + fieldName + '}'; - } + } - static FieldSource from(Field field) { + @Internal + public static FieldSource from(Field field) { return new FieldSource(field); } } diff --git a/archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/FieldSelectorTest.java b/archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/engine_api/FieldSelectorTest.java similarity index 94% rename from archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/FieldSelectorTest.java rename to archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/engine_api/FieldSelectorTest.java index 01630cdc2d..130b8256e5 100644 --- a/archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/FieldSelectorTest.java +++ b/archunit-junit/junit5/engine-api/src/test/java/com/tngtech/archunit/junit/engine_api/FieldSelectorTest.java @@ -1,5 +1,6 @@ -package com.tngtech.archunit.junit; +package com.tngtech.archunit.junit.engine_api; +import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.lang.ArchRule; import org.junit.jupiter.api.Test; 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/ArchUnitTestDescriptor.java index d3808f1b8a..75fcdceb48 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/ArchUnitTestDescriptor.java @@ -22,6 +22,7 @@ import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.junit.engine_api.FieldSource; import com.tngtech.archunit.lang.ArchRule; import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.UniqueId; 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/ArchUnitTestEngine.java index c9f3797744..f9a66d8a4a 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/ArchUnitTestEngine.java @@ -27,6 +27,7 @@ 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.engine_api.FieldSelector; import org.junit.platform.engine.EngineDiscoveryRequest; import org.junit.platform.engine.ExecutionRequest; import org.junit.platform.engine.Filter; 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/ArchUnitTestEngineTest.java index e2f0356106..ca21378c2a 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/ArchUnitTestEngineTest.java @@ -15,6 +15,8 @@ import com.tngtech.archunit.ArchConfiguration; import com.tngtech.archunit.core.domain.JavaClasses; import com.tngtech.archunit.junit.ArchUnitTestEngine.SharedCache; +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; 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/EngineDiscoveryTestRequest.java index 73d01c3fcf..2cfee6a24e 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/EngineDiscoveryTestRequest.java @@ -9,6 +9,7 @@ import java.util.Optional; import com.tngtech.archunit.core.domain.JavaClasses; +import com.tngtech.archunit.junit.engine_api.FieldSelector; import org.junit.platform.engine.ConfigurationParameters; import org.junit.platform.engine.DiscoveryFilter; import org.junit.platform.engine.DiscoverySelector; @@ -23,7 +24,7 @@ import org.junit.platform.engine.discovery.PackageSelector; import org.junit.platform.engine.discovery.UniqueIdSelector; -import static com.tngtech.archunit.junit.FieldSelector.selectField; +import static com.tngtech.archunit.junit.engine_api.FieldSelector.selectField; import static java.util.Collections.emptyList; import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toSet; From ba452bfd549052e985f135a3333c83a38f7f954f Mon Sep 17 00:00:00 2001 From: Peter Gafert Date: Sat, 5 Mar 2022 18:06:22 +0700 Subject: [PATCH 2/3] 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; + } } From ff3bc43456f43f936417cf5751a99d26c41e03c3 Mon Sep 17 00:00:00 2001 From: Peter Gafert Date: Fri, 22 Apr 2022 16:18:37 +0700 Subject: [PATCH 3/3] add test for Java modules compatibility of JUnit 5 support Unfortunately it is not trivial to test that the final artifacts work in a Java modules project. To keep the effort low we just add a test that catches the most probable error: The dependencies change and suddenly two artifacts comprising the JUnit 5 support export the same package. To simplify this even further we can just assume that each JUnit 5 artifact exports exactly one package and by asserting that this is exactly the expected package we effectively prevent collisions. If we use automatic module names we have to assume that artifacts will export all of their packages on the module path. Signed-off-by: Peter Gafert --- archunit-junit/junit5/api/build.gradle | 6 +- archunit-junit/junit5/engine-api/build.gradle | 4 + archunit-junit/junit5/engine/build.gradle | 4 + ...nit.java-artifact-check-conventions.gradle | 93 +++++++++++++++++++ ...unit.java-release-check-conventions.gradle | 69 +------------- 5 files changed, 108 insertions(+), 68 deletions(-) create mode 100644 buildSrc/src/main/groovy/archunit.java-artifact-check-conventions.gradle diff --git a/archunit-junit/junit5/api/build.gradle b/archunit-junit/junit5/api/build.gradle index c60499451d..369cc510bb 100644 --- a/archunit-junit/junit5/api/build.gradle +++ b/archunit-junit/junit5/api/build.gradle @@ -33,4 +33,8 @@ def configureDependencies = { deps -> dep.scope.text() != 'compile' || !(dep.artifactId.text() in ['archunit']) } } -this.with project(':archunit-junit').configureJUnitArchive(configureDependencies) \ No newline at end of file +this.with project(':archunit-junit').configureJUnitArchive(configureDependencies) + +singlePackageExport { + exportedPackage = 'com.tngtech.archunit.junit' +} diff --git a/archunit-junit/junit5/engine-api/build.gradle b/archunit-junit/junit5/engine-api/build.gradle index 2aaa783a81..efc8b2837d 100644 --- a/archunit-junit/junit5/engine-api/build.gradle +++ b/archunit-junit/junit5/engine-api/build.gradle @@ -48,3 +48,7 @@ def configureDependencies = { deps -> } } this.with project(':archunit-junit').configureJUnitArchive(configureDependencies) + +singlePackageExport { + exportedPackage = 'com.tngtech.archunit.junit.engine_api' +} diff --git a/archunit-junit/junit5/engine/build.gradle b/archunit-junit/junit5/engine/build.gradle index bce21d89f9..58abbe8154 100644 --- a/archunit-junit/junit5/engine/build.gradle +++ b/archunit-junit/junit5/engine/build.gradle @@ -62,3 +62,7 @@ def configureDependencies = { deps -> } } this.with project(':archunit-junit').configureJUnitArchive(configureDependencies) + +singlePackageExport { + exportedPackage = 'com.tngtech.archunit.junit.internal' +} diff --git a/buildSrc/src/main/groovy/archunit.java-artifact-check-conventions.gradle b/buildSrc/src/main/groovy/archunit.java-artifact-check-conventions.gradle new file mode 100644 index 0000000000..15210a99c7 --- /dev/null +++ b/buildSrc/src/main/groovy/archunit.java-artifact-check-conventions.gradle @@ -0,0 +1,93 @@ +import java.time.LocalDateTime +import java.util.jar.JarFile +import java.util.jar.Manifest + +def checkThirdParty = { JarFile jarFile -> + assert jarFile.getEntry('com/tngtech/archunit/thirdparty/org/objectweb/asm/ClassVisitor.class') != null: 'ASM is missing from 3rd party' + assert jarFile.getEntry('com/tngtech/archunit/thirdparty/org/objectweb/asm/asm.license') != null: 'ASM license is missing from 3rd party' + assert jarFile.getEntry('com/tngtech/archunit/thirdparty/com/google/common/collect/ImmutableSet.class') != null: 'Guava is missing from 3rd party' +} + +def checkNoThirdParty = { JarFile jarFile -> + assert jarFile.getEntry('com/tngtech/archunit/thirdparty') == null: 'There exists a third party folder' +} + +def checkNoIllegalJarEntries = { JarFile jarFile -> + def illegalEntries = Collections.list(jarFile.entries()).findAll { + !it.name.startsWith('com/tngtech/archunit/') && + it.name != 'com/' && + it.name != 'com/tngtech/' && + !it.name.startsWith('META-INF/') + } + assert illegalEntries.empty: """ + |There are invalid entries contained inside of release artifact ${new File(jarFile.name).name}: + |-> ${illegalEntries.join("${System.lineSeparator()}-> ")}""".stripMargin().trim() +} + +def checkManifest = { Manifest manifest -> + println "Verifying correct Manifest of ${project.name}" + + def checkAttributes = { expected -> + expected.each { key, value -> + assert manifest.mainAttributes.getValue(key) == value + } + } + checkAttributes([ + 'Specification-Title' : "ArchUnit - Module '${project.name}'", + 'Specification-Version' : version, + 'Specification-Vendor' : 'TNG Technology Consulting GmbH', + 'Implementation-Title' : "com.tngtech.${project.name.replace('-', '.')}", + 'Implementation-Version': version, + 'Implementation-Vendor' : 'TNG Technology Consulting GmbH', + 'Issue-Tracker' : 'https://github.com/TNG/ArchUnit/issues', + 'Documentation-URL' : 'https://github.com/TNG/ArchUnit', + 'Copyright' : "${LocalDateTime.now().year} TNG Technology Consulting GmbH", + 'License' : 'The Apache Software License, Version 2.0', + 'Automatic-Module-Name' : "com.tngtech.${project.name.replaceFirst('-', '.').replaceFirst('-', '.').replace('-', '')}" + ]) +} + +ext.checkArtifactContent = { JarFile jarFile -> + checkManifest(jarFile.manifest) + if (project.repackaging.repackagesAsm) { + println "Artifact ${project.name} is configured to repackage 3rd party libs -> checking existence of 3rd party package..." + checkThirdParty(jarFile) + } else { + println "Artifact ${project.name} is configured to not repackage 3rd party libs -> checking absense of 3rd party package..." + checkNoThirdParty(jarFile) + } + checkNoIllegalJarEntries(jarFile) +} + +task checkArtifact { + dependsOn(build) + + doLast { + def jarFile = new JarFile(jar.archiveFile.get().getAsFile()) + checkArtifactContent(jarFile) + } +} +build.finalizedBy(checkArtifact) + +abstract class SinglePackageExportExtension { + String exportedPackage +} + +ext.singlePackageExport = extensions.create('singlePackageExport', SinglePackageExportExtension) + +task checkExportedPackage { + dependsOn(build) + doLast { + def exportedPackage = project.singlePackageExport?.exportedPackage + if (exportedPackage) { + def jarFile = new JarFile(jar.archiveFile.get().getAsFile()) + def packageEntries = Collections.list(jarFile.entries()) + .findAll { it.name.endsWith('.class') } + .collect { it.name.replaceAll('/[^/]*$', '') } + .collect { it.replace('/', '.') } + .unique() + assert packageEntries == [exportedPackage]: "Project is configured to export only single package $exportedPackage" + } + } +} +build.finalizedBy(checkExportedPackage) diff --git a/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle b/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle index 62db819cb1..3ee064c31c 100644 --- a/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle +++ b/buildSrc/src/main/groovy/archunit.java-release-check-conventions.gradle @@ -1,75 +1,10 @@ import java.nio.file.Files -import java.time.LocalDateTime import java.util.jar.JarFile -import java.util.jar.Manifest -def checkThirdParty = { JarFile jarFile -> - assert jarFile.getEntry('com/tngtech/archunit/thirdparty/org/objectweb/asm/ClassVisitor.class') != null: 'ASM is missing from 3rd party' - assert jarFile.getEntry('com/tngtech/archunit/thirdparty/org/objectweb/asm/asm.license') != null: 'ASM license is missing from 3rd party' - assert jarFile.getEntry('com/tngtech/archunit/thirdparty/com/google/common/collect/ImmutableSet.class') != null: 'Guava is missing from 3rd party' +plugins { + id 'archunit.java-artifact-check-conventions' } -def checkNoThirdParty = { JarFile jarFile -> - assert jarFile.getEntry('com/tngtech/archunit/thirdparty') == null: 'There exists a third party folder' -} - -def checkNoIllegalJarEntries = { JarFile jarFile -> - def illegalEntries = Collections.list(jarFile.entries()).findAll { - !it.name.startsWith('com/tngtech/archunit/') && - it.name != 'com/' && - it.name != 'com/tngtech/' && - !it.name.startsWith('META-INF/') - } - assert illegalEntries.empty: """ - |There are invalid entries contained inside of release artifact ${new File(jarFile.name).name}: - |-> ${illegalEntries.join("${System.lineSeparator()}-> ")}""".stripMargin().trim() -} - -def checkManifest = { Manifest manifest -> - println "Verifying correct Manifest of ${project.name}" - - def checkAttributes = { expected -> - expected.each { key, value -> - assert manifest.mainAttributes.getValue(key) == value - } - } - checkAttributes([ - 'Specification-Title' : "ArchUnit - Module '${project.name}'", - 'Specification-Version' : version, - 'Specification-Vendor' : 'TNG Technology Consulting GmbH', - 'Implementation-Title' : "com.tngtech.${project.name.replace('-', '.')}", - 'Implementation-Version': version, - 'Implementation-Vendor' : 'TNG Technology Consulting GmbH', - 'Issue-Tracker' : 'https://github.com/TNG/ArchUnit/issues', - 'Documentation-URL' : 'https://github.com/TNG/ArchUnit', - 'Copyright' : "${LocalDateTime.now().year} TNG Technology Consulting GmbH", - 'License' : 'The Apache Software License, Version 2.0', - 'Automatic-Module-Name' : "com.tngtech.${project.name.replaceFirst('-', '.').replaceFirst('-', '.').replace('-', '')}" - ]) -} - -def checkArtifactContent = { JarFile jarFile -> - checkManifest(jarFile.manifest) - if (project.repackaging.repackagesAsm) { - println "Artifact ${project.name} is configured to repackage 3rd party libs -> checking existence of 3rd party package..." - checkThirdParty(jarFile) - } else { - println "Artifact ${project.name} is configured to not repackage 3rd party libs -> checking absense of 3rd party package..." - checkNoThirdParty(jarFile) - } - checkNoIllegalJarEntries(jarFile) -} - -task checkArtifact { - dependsOn(build) - - doLast { - def jarFile = new JarFile(jar.archiveFile.get().getAsFile()) - checkArtifactContent(jarFile) - } -} -build.finalizedBy(checkArtifact) - task checkUploadedArtifacts { doLast { def tngRepoId = project.findProperty('tngRepoId') ?: rootProject.closeSonatypeStagingRepository.stagingRepositoryId.get()