Skip to content

Commit 8488fed

Browse files
authored
add scalatest integration (via allure-framework#297)
1 parent f77abc5 commit 8488fed

16 files changed

Lines changed: 735 additions & 1 deletion

File tree

allure-java-commons/src/main/java/io/qameta/allure/AllureLifecycle.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,24 @@ public Optional<String> getCurrentTestCaseOrStep() {
284284
return threadContext.getCurrent();
285285
}
286286

287+
/**
288+
* Sets specified test case uuid as current. Note that
289+
* test case with such uuid should be created and existed in storage, otherwise
290+
* method take no effect.
291+
*
292+
* @param uuid the uuid of test case.
293+
* @return true if current test case was configured successfully, false otherwise.
294+
*/
295+
public boolean setCurrentTestCase(final String uuid) {
296+
final Optional<TestResult> found = storage.getTestResult(uuid);
297+
if (!found.isPresent()) {
298+
return false;
299+
}
300+
threadContext.clear();
301+
threadContext.start(uuid);
302+
return true;
303+
}
304+
287305
/**
288306
* Schedules test case with given parent.
289307
*

allure-scalatest/build.gradle.kts

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
import org.gradle.jvm.tasks.Jar
2+
3+
description = "Allure ScalaTest Integration"
4+
5+
apply(plugin = "scala")
6+
7+
val availableScalaVersions = listOf("2.11", "2.12")
8+
val defaultScala211Version = "2.11.12"
9+
val defaultScala212Version = "2.12.8"
10+
11+
var selectedScalaVersion = defaultScala212Version
12+
13+
if (hasProperty("scalaVersion")) {
14+
val scalaVersion: String by project
15+
selectedScalaVersion = when (scalaVersion) {
16+
"2.11" -> defaultScala211Version
17+
"2.12" -> defaultScala212Version
18+
else -> scalaVersion
19+
}
20+
}
21+
22+
val baseScalaVersion = selectedScalaVersion.substring(0, selectedScalaVersion.lastIndexOf("."))
23+
project.base.archivesBaseName = "allure-scalatest_$baseScalaVersion"
24+
25+
for (sv in availableScalaVersions) {
26+
val taskSuffix = sv.replace('.', '_')
27+
28+
tasks.create("jarScala_$taskSuffix", GradleBuild::class) {
29+
startParameter = project.gradle.startParameter.newInstance()
30+
startParameter.projectProperties["scalaVersion"] = sv
31+
tasks = listOf("jar")
32+
}
33+
34+
tasks.create("testScala_$taskSuffix", GradleBuild::class) {
35+
startParameter = project.gradle.startParameter.newInstance()
36+
startParameter.projectProperties["scalaVersion"] = sv
37+
tasks = listOf("test")
38+
}
39+
40+
tasks.create("sourceJarScala_$taskSuffix", GradleBuild::class) {
41+
startParameter = project.gradle.startParameter.newInstance()
42+
startParameter.projectProperties["scalaVersion"] = sv
43+
tasks = listOf("sourceJar")
44+
}
45+
46+
tasks.create("scaladocJarScala_$taskSuffix", GradleBuild::class) {
47+
startParameter = project.gradle.startParameter.newInstance()
48+
startParameter.projectProperties["scalaVersion"] = sv
49+
tasks = listOf("scaladocJar")
50+
}
51+
52+
tasks.create("installScala_$taskSuffix", GradleBuild::class) {
53+
startParameter = project.gradle.startParameter.newInstance()
54+
startParameter.projectProperties["scalaVersion"] = sv
55+
tasks = listOf("install")
56+
}
57+
}
58+
59+
val jarAll by tasks.creating {
60+
dependsOn(availableScalaVersions.map { "jarScala_${it.replace('.', '_')}" })
61+
}
62+
63+
val testAll by tasks.creating {
64+
dependsOn(availableScalaVersions.map { "testScala_${it.replace('.', '_')}" })
65+
}
66+
67+
val sourceJarAll by tasks.creating {
68+
dependsOn(availableScalaVersions.map { "sourceJarScala_${it.replace('.', '_')}" })
69+
}
70+
71+
val scaladocJarAll by tasks.creating {
72+
dependsOn(availableScalaVersions.map { "scaladocJarScala_${it.replace('.', '_')}" })
73+
}
74+
75+
val installAll by tasks.creating {
76+
dependsOn(availableScalaVersions.map { "installScala_${it.replace('.', '_')}" })
77+
}
78+
79+
val agent by configurations.creating
80+
81+
dependencies {
82+
compile("org.scalatest:scalatest_$baseScalaVersion:3.0.5")
83+
agent("org.aspectj:aspectjweaver")
84+
compile("org.junit.jupiter:junit-jupiter-api")
85+
compile("org.junit.platform:junit-platform-launcher")
86+
compile(project(":allure-java-commons"))
87+
testAnnotationProcessor(project(":allure-descriptions-javadoc"))
88+
testCompile("io.github.glytching:junit-extensions")
89+
testCompile("org.assertj:assertj-core")
90+
testCompile("org.junit.jupiter:junit-jupiter-api")
91+
testCompile("org.junit.jupiter:junit-jupiter-params")
92+
testCompile("org.slf4j:slf4j-simple")
93+
testCompile(project(":allure-assertj"))
94+
testCompile(project(":allure-java-commons-test"))
95+
testCompile(project(":allure-junit-platform"))
96+
testRuntime("org.junit.jupiter:junit-jupiter-engine")
97+
}
98+
99+
val scaladocJar by tasks.creating(Jar::class) {
100+
from(tasks.getByName("scaladoc"))
101+
classifier = "scaladoc"
102+
}
103+
104+
artifacts.add("archives", scaladocJar)
105+
106+
tasks.named<Jar>("jar") {
107+
manifest {
108+
attributes(mapOf(
109+
"Automatic-Module-Name" to "io.qameta.allure.scalatest"
110+
))
111+
}
112+
}
113+
114+
tasks.named<Test>("test") {
115+
systemProperty("junit.jupiter.execution.parallel.enabled", "false")
116+
useJUnitPlatform()
117+
exclude("**/testdata/*")
118+
doFirst {
119+
jvmArgs("-javaagent:${agent.singleFile}")
120+
}
121+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<aspectj>
2+
<aspects>
3+
<aspect name="io.qameta.allure.aspects.StepsAspects"/>
4+
<aspect name="io.qameta.allure.aspects.AttachmentsAspects"/>
5+
</aspects>
6+
</aspectj>

0 commit comments

Comments
 (0)