Skip to content

Commit 27d45bf

Browse files
committed
ArC: add AtInject TCK runner
1 parent 39bb942 commit 27d45bf

File tree

5 files changed

+187
-0
lines changed

5 files changed

+187
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<parent>
8+
<groupId>io.quarkus.arc</groupId>
9+
<artifactId>arc-parent</artifactId>
10+
<version>999-SNAPSHOT</version>
11+
</parent>
12+
13+
<artifactId>arc-atinject-tck-runner</artifactId>
14+
<name>ArC - AtInject TCK Runner</name>
15+
16+
<dependencyManagement>
17+
<dependencies>
18+
<dependency>
19+
<groupId>org.jboss.arquillian</groupId>
20+
<artifactId>arquillian-bom</artifactId>
21+
<version>${version.arquillian}</version>
22+
<type>pom</type>
23+
<scope>import</scope>
24+
</dependency>
25+
</dependencies>
26+
</dependencyManagement>
27+
28+
<dependencies>
29+
<dependency>
30+
<groupId>io.quarkus.arc</groupId>
31+
<artifactId>arc-arquillian</artifactId>
32+
</dependency>
33+
<dependency>
34+
<groupId>jakarta.inject</groupId>
35+
<artifactId>jakarta.inject-tck</artifactId>
36+
<version>${version.atinject-tck}</version>
37+
<exclusions>
38+
<exclusion>
39+
<groupId>jakarta.inject</groupId>
40+
<artifactId>jakarta.inject-api</artifactId>
41+
</exclusion>
42+
<exclusion>
43+
<groupId>junit</groupId>
44+
<artifactId>junit</artifactId>
45+
</exclusion>
46+
</exclusions>
47+
</dependency>
48+
<dependency>
49+
<groupId>junit</groupId>
50+
<artifactId>junit</artifactId>
51+
<version>${version.junit4}</version>
52+
</dependency>
53+
<dependency>
54+
<groupId>org.jboss.arquillian.junit</groupId>
55+
<artifactId>arquillian-junit-container</artifactId>
56+
</dependency>
57+
</dependencies>
58+
59+
</project>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package io.quarkus.arc.tck;
2+
3+
import jakarta.enterprise.inject.build.compatible.spi.BuildCompatibleExtension;
4+
import jakarta.enterprise.inject.build.compatible.spi.ClassConfig;
5+
import jakarta.enterprise.inject.build.compatible.spi.Discovery;
6+
import jakarta.enterprise.inject.build.compatible.spi.Enhancement;
7+
import jakarta.enterprise.inject.build.compatible.spi.MetaAnnotations;
8+
import jakarta.enterprise.inject.build.compatible.spi.ScannedClasses;
9+
import jakarta.enterprise.inject.literal.NamedLiteral;
10+
11+
import org.atinject.tck.auto.Convertible;
12+
import org.atinject.tck.auto.Drivers;
13+
import org.atinject.tck.auto.DriversSeat;
14+
import org.atinject.tck.auto.FuelTank;
15+
import org.atinject.tck.auto.Seat;
16+
import org.atinject.tck.auto.Tire;
17+
import org.atinject.tck.auto.V8Engine;
18+
import org.atinject.tck.auto.accessories.Cupholder;
19+
import org.atinject.tck.auto.accessories.SpareTire;
20+
21+
public class AtInjectTckExtension implements BuildCompatibleExtension {
22+
@Discovery
23+
public void discovery(ScannedClasses scan, MetaAnnotations meta) {
24+
scan.add(Convertible.class.getName());
25+
scan.add(DriversSeat.class.getName());
26+
scan.add(FuelTank.class.getName());
27+
scan.add(Seat.class.getName());
28+
scan.add(Tire.class.getName());
29+
scan.add(V8Engine.class.getName());
30+
31+
scan.add(Cupholder.class.getName());
32+
scan.add(SpareTire.class.getName());
33+
}
34+
35+
@Enhancement(types = Convertible.class)
36+
public void convertible(ClassConfig clazz) {
37+
clazz.fields()
38+
.stream()
39+
.filter(it -> "spareTire".equals(it.info().name()))
40+
.forEach(it -> it.addAnnotation(Spare.class));
41+
}
42+
43+
@Enhancement(types = DriversSeat.class)
44+
public void driversSeat(ClassConfig clazz) {
45+
clazz.addAnnotation(Drivers.class);
46+
}
47+
48+
@Enhancement(types = SpareTire.class)
49+
public void spareTire(ClassConfig clazz) {
50+
clazz.addAnnotation(NamedLiteral.of("spare"))
51+
.addAnnotation(Spare.class);
52+
}
53+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package io.quarkus.arc.tck;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.util.Enumeration;
6+
7+
import jakarta.enterprise.inject.build.compatible.spi.BuildCompatibleExtension;
8+
9+
import org.atinject.tck.Tck;
10+
import org.atinject.tck.auto.Car;
11+
import org.jboss.arquillian.container.test.api.Deployment;
12+
import org.jboss.arquillian.junit.Arquillian;
13+
import org.jboss.shrinkwrap.api.Archive;
14+
import org.jboss.shrinkwrap.api.ShrinkWrap;
15+
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
16+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
17+
import org.junit.Test;
18+
import org.junit.runner.RunWith;
19+
20+
import io.quarkus.arc.Arc;
21+
22+
@RunWith(Arquillian.class)
23+
public class AtInjectTest {
24+
@Deployment
25+
public static Archive<?> deployment() {
26+
return ShrinkWrap.create(JavaArchive.class)
27+
.addPackages(true, Tck.class.getPackage())
28+
.addClasses(AtInjectTest.class, AtInjectTckExtension.class, Spare.class)
29+
.addAsServiceProvider(BuildCompatibleExtension.class, AtInjectTckExtension.class)
30+
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
31+
}
32+
33+
@Test
34+
public void test() {
35+
Car instance = Arc.container().instance(Car.class).get();
36+
37+
junit.framework.Test test = Tck.testsFor(instance, /* supportsStatic */ false, /* supportsPrivate */ true);
38+
junit.framework.TestResult result = new junit.framework.TestResult();
39+
test.run(result);
40+
41+
// this is ugly and doesn't report failures properly, but I don't see a better way
42+
if (!result.wasSuccessful()) {
43+
int failuresCount = 0;
44+
Enumeration<junit.framework.TestFailure> failures = result.failures();
45+
while (failures.hasMoreElements()) {
46+
System.out.println(failures.nextElement());
47+
failuresCount++;
48+
}
49+
50+
int errorsCount = 0;
51+
Enumeration<junit.framework.TestFailure> errors = result.errors();
52+
while (errors.hasMoreElements()) {
53+
System.out.println(errors.nextElement());
54+
errorsCount++;
55+
}
56+
System.out.println("Total " + failuresCount + " failures and " + errorsCount + " errors");
57+
}
58+
59+
assertTrue(result.wasSuccessful());
60+
}
61+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.quarkus.arc.tck;
2+
3+
import java.lang.annotation.Retention;
4+
import java.lang.annotation.RetentionPolicy;
5+
6+
import jakarta.inject.Qualifier;
7+
8+
@Qualifier
9+
@Retention(RetentionPolicy.RUNTIME)
10+
public @interface Spare {
11+
}

independent-projects/arc/pom.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@
5555
<version.mutiny>2.1.0</version.mutiny>
5656

5757
<version.arquillian>1.7.0.Alpha14</version.arquillian>
58+
<version.atinject-tck>2.0.1</version.atinject-tck>
5859
<version.cdi-tck>4.0.7</version.cdi-tck>
60+
<version.junit4>4.13.2</version.junit4>
5961

6062
<version.enforcer.plugin>3.2.1</version.enforcer.plugin>
6163
<version.surefire.plugin>3.0.0-M9</version.surefire.plugin>
@@ -68,6 +70,7 @@
6870
<module>tests</module>
6971

7072
<module>arquillian</module>
73+
<module>atinject-tck-runner</module>
7174
<module>cdi-tck-porting-pkg</module>
7275
<module>cdi-tck-runner</module>
7376
</modules>

0 commit comments

Comments
 (0)