Skip to content

Commit cbb6120

Browse files
author
Vincent Potucek
committed
Add com.tngtech.archunit.openrewrite.SanityCheck
Signed-off-by: Vincent Potucek <vpotucek@me.com>
1 parent 60e890f commit cbb6120

20 files changed

Lines changed: 196 additions & 101 deletions

File tree

.github/workflows/build.yml

Lines changed: 46 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,138 +1,126 @@
1-
name: CI
2-
1+
name: CI 🚦
32
on:
43
push:
54
branches:
65
- main
76
- release-*
87
pull_request:
9-
108
env:
119
build_java_version: 21
12-
1310
jobs:
1411
build:
12+
name: Build 📦
1513
runs-on: ubuntu-latest
1614
steps:
17-
- name: Checkout
15+
- name: Checkout 📥
1816
uses: actions/checkout@v6
19-
- name: Set up Java
17+
- name: Setup Java ☕️
2018
uses: actions/setup-java@v5.1.0
2119
with:
22-
distribution: 'zulu'
20+
distribution: zulu
2321
java-version: ${{ env.build_java_version }}
24-
- name: Set Up Gradle
22+
- name: Set up Gradle 🐘
2523
uses: gradle/actions/setup-gradle@v5
26-
- name: Build
24+
- name: Spotless ✨
25+
run: ./gradlew spotlessCheck
26+
- name: Rewrite Dry Run ⚙️
27+
run: ./gradlew rewriteDryRun
28+
- name: Build Project 🔧
2729
run: ./gradlew build
28-
- name: Check project files unmodified
30+
- name: Verify No Modified Files 📋
2931
run: |
30-
directoryState="$(git status --porcelain)"
32+
directoryState="$(git.status --porcelain)"
3133
if [ -n "$directoryState" ]; then
32-
echo "Some files were modified during build. Please run the build locally before checking in, as it ensures some source file conventions (like copyright header)."
33-
echo "The following files were modified:"
34+
echo "Some files were modified during build. Please run the build locally before checking in."
35+
echo "Modified files:"
3436
echo "$directoryState"
3537
exit 1
3638
fi
37-
3839
test:
40+
name: Unit Tests 🧪 (${{ matrix.os }} - JDK ${{ matrix.test_java_version }})
3941
strategy:
4042
fail-fast: false
4143
matrix:
42-
os:
43-
- ubuntu-latest
44-
- macos-latest
45-
- windows-latest
46-
test_java_version:
47-
- 8
48-
- 11
49-
- 17
50-
- 21
44+
os: [ubuntu-latest, macos-latest, windows-latest]
45+
test_java_version: [8, 11, 17, 21]
5146
runs-on: ${{ matrix.os }}
5247
steps:
53-
- name: Checkout
48+
- name: Checkout 📥
5449
uses: actions/checkout@v6
55-
- name: Set up Build JDK
50+
- name: Set up Build JDK
5651
uses: actions/setup-java@v5.1.0
5752
with:
58-
distribution: 'zulu'
53+
distribution: zulu
5954
java-version: ${{ env.build_java_version }}
60-
- name: Set up Test JDK
55+
- name: Set up Test JDK
6156
uses: actions/setup-java@v5.1.0
6257
with:
63-
distribution: 'zulu'
58+
distribution: zulu
6459
java-version: ${{ matrix.test_java_version }}
65-
- name: Provide installed JDKs
66-
uses: actions/github-script@v8
60+
- name: Resolve Installed JDK Paths 🔍
6761
id: provideJdkPaths
62+
uses: actions/github-script@v8
6863
with:
6964
script: |
70-
for ( let envVarName in process.env ) {
65+
for (let envVarName in process.env) {
7166
if (/JAVA_HOME_\d.*64/.test(envVarName)) {
7267
const version = envVarName.match(/JAVA_HOME_(\d+).*64/)[1];
7368
if (version === "${{ matrix.test_java_version }}") {
74-
core.exportVariable('test_jdk_path', process.env[envVarName]);
69+
core.exportVariable("test_jdk_path", process.env[envVarName]);
7570
} else if (version === "${{ env.build_java_version }}") {
76-
core.exportVariable('build_jdk_path', process.env[envVarName]);
71+
core.exportVariable("build_jdk_path", process.env[envVarName]);
7772
}
7873
}
7974
}
80-
- name: Set Up Gradle
75+
- name: Set up Gradle 🐘
8176
uses: gradle/actions/setup-gradle@v5
82-
- name: Test
77+
- name: Run Tests 🧪
8378
run: ./gradlew test -PallTests -PtestJavaVersion=${{ matrix.test_java_version }} "-Porg.gradle.java.installations.paths=${{ env.test_jdk_path }}"
8479
env:
8580
JAVA_HOME: ${{ env.build_jdk_path }}
86-
8781
integration-test:
82+
name: Integration Tests 🧩 (${{ matrix.os }} - JDK ${{ matrix.test_java_version }})
8883
strategy:
8984
fail-fast: false
9085
matrix:
91-
os:
92-
- ubuntu-latest
93-
- macos-latest
94-
- windows-latest
95-
test_java_version:
96-
- 8
97-
- 11
98-
- 17
99-
- 21
86+
os: [ubuntu-latest, macos-latest, windows-latest]
87+
test_java_version: [8, 11, 17, 21]
10088
runs-on: ${{ matrix.os }}
10189
steps:
102-
- name: Checkout
90+
- name: Checkout 📥
10391
uses: actions/checkout@v6
104-
- name: Set up Build JDK
92+
- name: Set up Build JDK
10593
uses: actions/setup-java@v5.1.0
10694
with:
107-
distribution: 'zulu'
95+
distribution: zulu
10896
java-version: ${{ env.build_java_version }}
109-
- name: Set up Test JDK
97+
- name: Set up Test JDK
11098
uses: actions/setup-java@v5.1.0
11199
with:
112-
distribution: 'zulu'
100+
distribution: zulu
113101
java-version: ${{ matrix.test_java_version }}
114-
- name: Provide installed JDKs
115-
uses: actions/github-script@v8
102+
- name: Resolve Installed JDK Paths 🔍
116103
id: provideJdkPaths
104+
uses: actions/github-script@v8
117105
with:
118106
script: |
119-
for ( let envVarName in process.env ) {
107+
for (let envVarName in process.env) {
120108
if (/JAVA_HOME_\d.*64/.test(envVarName)) {
121109
const version = envVarName.match(/JAVA_HOME_(\d+).*64/)[1];
122110
if (version === "${{ matrix.test_java_version }}") {
123-
core.exportVariable('test_jdk_path', process.env[envVarName]);
111+
core.exportVariable("test_jdk_path", process.env[envVarName]);
124112
} else if (version === "${{ env.build_java_version }}") {
125-
core.exportVariable('build_jdk_path', process.env[envVarName]);
113+
core.exportVariable("build_jdk_path", process.env[envVarName]);
126114
}
127115
}
128116
}
129-
- name: Set Up Gradle
117+
- name: Set up Gradle 🐘
130118
uses: gradle/actions/setup-gradle@v5
131-
- name: Publish to Maven Local
119+
- name: Publish to Maven Local 📦
132120
run: ./gradlew build -xtest -xspotbugsMain -xjavadoc publishToMavenLocal
133121
env:
134122
JAVA_HOME: ${{ env.build_jdk_path }}
135-
- name: Integration test
123+
- name: Run Integration Tests 🧩
136124
run: ./gradlew runMavenTest -PtestJavaVersion=${{ matrix.test_java_version }} "-Porg.gradle.java.installations.paths=${{ env.test_jdk_path }}"
137125
env:
138126
JAVA_HOME: ${{ env.build_jdk_path }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.gradle
22
.idea
3+
!.idea/icon.png
34
*.iml
45
build
56
out

.idea/icon.png

5.28 KB
Loading

archunit-junit/junit5/engine/src/main/java/com/tngtech/archunit/junit/internal/AbstractArchUnitTestDescriptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public Set<TestTag> getTags() {
7676
static String formatWithPath(UniqueId uniqueId, String name) {
7777
return Stream.concat(
7878
uniqueId.getSegments().stream()
79-
.filter(it -> it.getType().equals(ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE))
79+
.filter(it -> ArchUnitTestDescriptor.CLASS_SEGMENT_TYPE.equals(it.getType()))
8080
.skip(1)
8181
.map(UniqueId.Segment::getValue)
8282
.map(Formatters::ensureSimpleName),

archunit/src/jdk9main/java/com/tngtech/archunit/core/importer/ModuleLocationResolver.java

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,44 +15,46 @@
1515
*/
1616
package com.tngtech.archunit.core.importer;
1717

18-
import java.io.File;
18+
import com.google.common.base.Splitter;
19+
1920
import java.lang.module.ModuleFinder;
20-
import java.lang.module.ModuleReference;
2121
import java.net.MalformedURLException;
2222
import java.net.URI;
2323
import java.net.URL;
2424
import java.nio.file.Path;
2525
import java.nio.file.Paths;
26-
import java.util.List;
27-
import java.util.Set;
2826
import java.util.stream.Stream;
2927

30-
import com.google.common.base.Splitter;
31-
3228
import static com.google.common.base.Strings.nullToEmpty;
3329
import static com.google.common.collect.Iterables.concat;
30+
import static com.tngtech.archunit.core.importer.UrlSource.From.iterable;
31+
import static java.io.File.pathSeparatorChar;
32+
import static java.lang.System.getProperty;
3433
import static java.util.stream.Collectors.toList;
3534

3635
class ModuleLocationResolver implements LocationResolver {
36+
private static final String JDK_MODULE_PATH = "jdk.module.path";
3737
private final FromClasspathAndUrlClassLoaders standardResolver = new FromClasspathAndUrlClassLoaders();
3838

3939
@Override
4040
public UrlSource resolveClassPath() {
41-
Iterable<URL> classpath = standardResolver.resolveClassPath();
42-
Set<ModuleReference> systemModuleReferences = ModuleFinder.ofSystem().findAll();
43-
Set<ModuleReference> configuredModuleReferences = ModuleFinder.of(modulepath()).findAll();
44-
Iterable<URL> modulepath = Stream.concat(systemModuleReferences.stream(), configuredModuleReferences.stream())
45-
.flatMap(moduleReference -> moduleReference.location().stream())
46-
.map(this::toUrl)
47-
.collect(toList());
48-
49-
return UrlSource.From.iterable(concat(classpath, modulepath));
41+
return iterable(concat(
42+
standardResolver.resolveClassPath(),
43+
Stream.concat(ModuleFinder.ofSystem().findAll().stream(),
44+
ModuleFinder.of(modulepath()).findAll().stream())
45+
.flatMap(moduleReference -> moduleReference.location().stream())
46+
.map(this::toUrl)
47+
.collect(toList())));
5048
}
5149

5250
private Path[] modulepath() {
53-
String modulepathProperty = nullToEmpty(System.getProperty("jdk.module.path"));
54-
List<String> modulepath = Splitter.on(File.pathSeparatorChar).omitEmptyStrings().splitToList(modulepathProperty);
55-
return modulepath.stream().map(Paths::get).toArray(Path[]::new);
51+
return Splitter
52+
.on(pathSeparatorChar)
53+
.omitEmptyStrings()
54+
.splitToList(nullToEmpty(getProperty(JDK_MODULE_PATH)))
55+
.stream()
56+
.map(Paths::get)
57+
.toArray(Path[]::new);
5658
}
5759

5860
private URL toUrl(URI uri) {

archunit/src/main/java/com/tngtech/archunit/core/importer/ClassFileSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public InputStream get() {
207207
@Internal
208208
class FileToImport {
209209
static boolean isRelevant(String simpleFileName) {
210-
return simpleFileName.endsWith(".class") && !simpleFileName.equals("module-info.class");
210+
return simpleFileName.endsWith(".class") && !"module-info.class".equals(simpleFileName);
211211
}
212212
}
213213
}

archunit/src/main/java/com/tngtech/archunit/core/importer/JavaClassDescriptorImporter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private static boolean isAsmMethodHandle(Handle handle) {
6060
}
6161

6262
static boolean isLambdaMetafactory(String asmObjectTypeName) {
63-
return asmObjectTypeName.equals(LAMBDA_METAFACTORY_ASM_OBJECT_TYPE_NAME);
63+
return LAMBDA_METAFACTORY_ASM_OBJECT_TYPE_NAME.equals(asmObjectTypeName);
6464
}
6565

6666
static boolean isLambdaMethod(Handle methodHandle) {

archunit/src/main/java/com/tngtech/archunit/core/importer/UrlSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private static Iterable<URL> readClasspathEntriesFromManifests(List<URL> urls) {
9898

9999
// Use URI because of better equals / hashcode
100100
private static void readClasspathUriEntriesFromManifests(Set<URI> result, Set<URI> uris) {
101-
uris.stream().filter(url -> url.getScheme().equals("jar"))
101+
uris.stream().filter(url -> "jar".equals(url.getScheme()))
102102
.map(From::readClasspathEntriesFromManifest)
103103
.map(manifestUris -> ImmutableSet.copyOf(difference(manifestUris, result))) // difference returns a dynamic SetView -> safe-copy
104104
.forEach(unknownSoFar -> {

archunit/src/test/java/com/tngtech/archunit/core/domain/JavaParameterizedTypeTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ class WithWildcards<TEST extends List<Map<Map<?, ? extends File>, ? super Map<?
4848
@SuppressWarnings("OptionalGetWithoutIsPresent")
4949
private static Object[] createTestInput(Class<?> testClass) {
5050
Type reflectionType = Arrays.stream(testClass.getTypeParameters())
51-
.filter(v -> v.getName().equals("TEST"))
51+
.filter(v -> "TEST".equals(v.getName()))
5252
.map(v -> v.getBounds()[0])
5353
.findFirst().get();
5454
JavaType javaType = new ClassFileImporter().importClass(testClass).getTypeParameters().stream()
55-
.filter(v -> v.getName().equals("TEST"))
55+
.filter(v -> "TEST".equals(v.getName()))
5656
.map(v -> v.getBounds().get(0))
5757
.findFirst().get();
5858

archunit/src/test/java/com/tngtech/archunit/core/importer/ClassFileImporterSlowTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ private JavaClasses importJavaBase() {
183183
// before Java 9 packages like java.lang were in rt.jar;
184184
location.contains("rt.jar") ||
185185
// from Java 9 on those packages were in a JRT with name 'java.base'
186-
(location.asURI().getScheme().equals("jrt") && location.contains("java.base"))
186+
("jrt".equals(location.asURI().getScheme()) && location.contains("java.base"))
187187
)).importClasspath();
188188
}
189189

@@ -198,7 +198,7 @@ private ImportOption importJavaBaseOrRtAndJUnitJarAndFilesOnTheClasspath() {
198198
if (location.isJar() && (location.contains("junit") || location.contains("/rt.jar"))) {
199199
return true;
200200
}
201-
return location.asURI().getScheme().equals("jrt") && location.contains("java.base");
201+
return "jrt".equals(location.asURI().getScheme()) && location.contains("java.base");
202202
};
203203
}
204204

0 commit comments

Comments
 (0)