Search in sources :

Example 6 with ClassFileImporter

use of com.tngtech.archunit.core.importer.ClassFileImporter in project inject-resources by hosuaby.

the class PluginArchitectureTests method testResourceAnnotationNames.

@Test
@DisplayName("Resource annotations must have *Resource suffix")
public void testResourceAnnotationNames() {
    var importedClasses = new ClassFileImporter().importPackagesOf(EnableResourceInjection.class);
    var resourceAnnotationsRule = classes().that().areAnnotatedWith(Resource.class).should().beAssignableTo(Annotation.class).andShould().haveSimpleNameEndingWith("Resource");
    resourceAnnotationsRule.check(importedClasses);
}
Also used : ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 7 with ClassFileImporter

use of com.tngtech.archunit.core.importer.ClassFileImporter in project checkstyle by checkstyle.

the class ArchUnitTest method nonProtectedCheckMethodsTest.

/**
 * The goal is to ensure all classes of a specific name pattern have non-protected methods,
 * except for those which are annotated with {@code Override}. In the bytecode there is no
 * trace anymore if this method was annotated with {@code Override} or not (limitation of
 * Archunit), eventually we need to make checkstyle's Check on this.
 * Test contains assertions in the callstack, but TeamCity inspection does not see them.
 *
 * @noinspection JUnitTestMethodWithNoAssertions
 */
@Test
public void nonProtectedCheckMethodsTest() {
    // This list contains methods which have been overridden and are set to ignore in this test.
    final String[] methodsWithOverrideAnnotation = { "processFiltered", "getMethodName", "mustCheckName", "postProcessHeaderLines", "getLogMessageId" };
    final String ignoreMethodList = String.join("|", methodsWithOverrideAnnotation);
    final JavaClasses importedClasses = new ClassFileImporter().withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS).importPackages("com.puppycrawl.tools.checkstyle.checks");
    final ArchRule checkMethodsShouldNotBeProtectedRule = methods().that().haveNameNotMatching(".*(" + ignoreMethodList + ")").and().areDeclaredInClassesThat().haveSimpleNameEndingWith("Check").and().areDeclaredInClassesThat().doNotHaveModifier(JavaModifier.ABSTRACT).should().notBeProtected();
    checkMethodsShouldNotBeProtectedRule.check(importedClasses);
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) JavaClasses(com.tngtech.archunit.core.domain.JavaClasses) ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) Test(org.junit.jupiter.api.Test)

Example 8 with ClassFileImporter

use of com.tngtech.archunit.core.importer.ClassFileImporter in project hazelcast by hazelcast.

the class KinesisSerializableTest method serializable_classes_should_have_valid_serialVersionUID.

@Test
public void serializable_classes_should_have_valid_serialVersionUID() {
    String basePackage = KinesisSinks.class.getPackage().getName();
    JavaClasses classes = new ClassFileImporter().withImportOption(onlyCurrentModule()).importPackages(basePackage);
    ArchUnitRules.SERIALIZABLE_SHOULD_HAVE_VALID_SERIAL_VERSION_UID.check(classes);
}
Also used : JavaClasses(com.tngtech.archunit.core.domain.JavaClasses) ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) Test(org.junit.Test)

Example 9 with ClassFileImporter

use of com.tngtech.archunit.core.importer.ClassFileImporter in project hazelcast by hazelcast.

the class HadoopSerializableTest method serializable_classes_should_have_valid_serialVersionUID.

@Test
public void serializable_classes_should_have_valid_serialVersionUID() {
    String basePackage = HadoopSources.class.getPackage().getName();
    JavaClasses classes = new ClassFileImporter().withImportOption(onlyCurrentModule()).importPackages(basePackage);
    ArchUnitRules.SERIALIZABLE_SHOULD_HAVE_VALID_SERIAL_VERSION_UID.check(classes);
}
Also used : JavaClasses(com.tngtech.archunit.core.domain.JavaClasses) ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) Test(org.junit.Test)

Example 10 with ClassFileImporter

use of com.tngtech.archunit.core.importer.ClassFileImporter in project hazelcast by hazelcast.

the class CdcMysqlSerializableTest method serializable_classes_should_have_valid_serialVersionUID.

@Test
public void serializable_classes_should_have_valid_serialVersionUID() {
    String basePackage = MySqlCdcSources.class.getPackage().getName();
    JavaClasses classes = new ClassFileImporter().withImportOption(onlyCurrentModule()).importPackages(basePackage);
    ArchUnitRules.SERIALIZABLE_SHOULD_HAVE_VALID_SERIAL_VERSION_UID.check(classes);
}
Also used : JavaClasses(com.tngtech.archunit.core.domain.JavaClasses) ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) Test(org.junit.Test)

Aggregations

ClassFileImporter (com.tngtech.archunit.core.importer.ClassFileImporter)136 JavaClasses (com.tngtech.archunit.core.domain.JavaClasses)98 Test (org.junit.Test)76 Test (org.junit.jupiter.api.Test)52 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)15 JavaClass (com.tngtech.archunit.core.domain.JavaClass)14 EvaluationResult (com.tngtech.archunit.lang.EvaluationResult)13 Workspace (com.structurizr.Workspace)12 ArchRule (com.tngtech.archunit.lang.ArchRule)12 Application (org.archifacts.core.model.Application)12 Component (com.structurizr.model.Component)10 Container (com.structurizr.model.Container)10 UseDataProvider (com.tngtech.java.junit.dataprovider.UseDataProvider)10 ArtifactContainer (org.archifacts.core.model.ArtifactContainer)10 JavaPackage (com.tngtech.archunit.core.domain.JavaPackage)5 LayeredArchitecture (com.tngtech.archunit.library.Architectures.LayeredArchitecture)5 OnionArchitecture (com.tngtech.archunit.library.Architectures.OnionArchitecture)5 Optional (java.util.Optional)5 Artifact (org.archifacts.core.model.Artifact)5 MiscArtifact (org.archifacts.core.model.MiscArtifact)5