bQUARKz e809ce63d3
All checks were successful
JaCoCo Coverage #### Project Overview No changes detected, that affect the code coverage. * Line Coverage: 62.10% (17811/28682) * Branch Coverage: 52.81% (6878/13025) * Lines of Code: 28682 * Cyclomatic Complexity: 11494 #### Quality Gates Summary Output truncated.
Test / Build skipped: 15, passed: 654
Intrepid/Prometeu/Studio/pipeline/head This commit looks good
Intrepid/Prometeu/Studio/pipeline/pr-master This commit looks good
implements PLN-0129
Add ArchUnit guards for Java multi-frontend boundaries in a test-only
module. Identify PBS by frontend-module origin, allow only the registry
as composition root, and lock the wording in specs 19, 20, and 22.

Housekeep DSC-0064 with LSN-0066.
2026-09-19 03:32:43 +01:00

37 lines
1.3 KiB
Java

package p.studio.architecture;
import com.tngtech.archunit.core.importer.ClassFileImporter;
import com.tngtech.archunit.core.importer.ImportOption;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
class PbsModuleClasspathTest {
@Test
void importerMustSeePbsAndRegistryModuleOrigins() {
final var classes = new ClassFileImporter()
.withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS)
.importPackages("p.studio");
final var pbsSample = classes.stream()
.filter(PbsModuleOrigins::isPbsModule)
.findFirst();
final var registrySample = classes.stream()
.filter(PbsModuleOrigins::isRegistryModule)
.findFirst();
if (pbsSample.isEmpty() || registrySample.isEmpty()) {
final var uris = classes.stream()
.limit(20)
.map(javaClass -> javaClass.getName() + " -> " + PbsModuleOrigins.sourceUri(javaClass))
.toList();
fail("PBS/registry module origins were not visible to ArchUnit. sample URIs: " + uris);
}
assertTrue(pbsSample.isPresent());
assertTrue(registrySample.isPresent());
}
}