Skip to content

Commit 5aea7b9

Browse files
authored
Merge pull request #49 from nhajratw/upgrade-junit
Upgrade junit
2 parents 4be5249 + 97962d5 commit 5aea7b9

File tree

3 files changed

+95
-154
lines changed

3 files changed

+95
-154
lines changed

build.gradle.kts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ dependencies {
4646
implementation(files("$projectDir/libs/gradle-processes-0.5.0.jar"))
4747

4848
testImplementation(gradleTestKit())
49-
testImplementation("junit:junit:4.13")
49+
testImplementation(platform("org.junit:junit-bom:5.7.1"))
50+
testImplementation("org.junit.jupiter:junit-jupiter")
5051
testImplementation("com.beust:klaxon:5.2")
5152
}
5253

@@ -72,3 +73,8 @@ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
7273
jvmTarget = "1.8"
7374
}
7475
}
76+
77+
tasks.withType<Test>().configureEach {
78+
useJUnitPlatform()
79+
maxParallelForks = (Runtime.getRuntime().availableProcessors() / 2).takeIf { it > 0 } ?: 1
80+
}

gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
kotlin.code.style=official
1+
kotlin.code.style=official
2+
org.gradle.caching=true
3+
org.gradle.parallel=true
4+
org.gradle.vfs.watch=true

src/test/kotlin/org/springdoc/openapi/gradle/plugin/OpenApiGradlePluginTest.kt

Lines changed: 84 additions & 152 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,23 @@ import com.beust.klaxon.JsonObject
44
import com.beust.klaxon.Parser
55
import org.gradle.internal.impldep.org.apache.commons.lang.RandomStringUtils
66
import org.gradle.testkit.runner.BuildResult
7-
import org.gradle.testkit.runner.BuildTask
87
import org.gradle.testkit.runner.GradleRunner
98
import org.gradle.testkit.runner.TaskOutcome
10-
import org.junit.Assert.assertEquals
11-
import org.junit.Assert.assertFalse
12-
import org.junit.Before
13-
import org.junit.Rule
14-
import org.junit.Test
15-
import org.junit.rules.TemporaryFolder
9+
import org.junit.jupiter.api.Assertions.assertEquals
10+
import org.junit.jupiter.api.Assertions.assertFalse
11+
import org.junit.jupiter.api.BeforeEach
12+
import org.junit.jupiter.api.Test
1613
import java.io.File
1714
import java.io.FileReader
15+
import java.nio.file.Files
1816

1917
class OpenApiGradlePluginTest {
20-
@Rule
21-
@JvmField
22-
var testProjectDir: TemporaryFolder = TemporaryFolder()
2318

24-
private lateinit var projectTestDir: File
25-
private lateinit var buildFile: File
26-
private lateinit var projectBuildDir: File
19+
private val projectTestDir = Files.createTempDirectory("acceptance-project").toFile()
20+
private val buildFile = File(projectTestDir, "build.gradle")
21+
private val projectBuildDir = File(projectTestDir, "build")
2722

28-
private var baseBuildGradle = """plugins {
23+
private val baseBuildGradle = """plugins {
2924
id 'org.springframework.boot' version '2.2.0.RELEASE'
3025
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
3126
id 'java'
@@ -47,187 +42,128 @@ class OpenApiGradlePluginTest {
4742
}
4843
""".trimIndent()
4944

50-
@Before
51-
fun setup() {
52-
val acceptanceTestProject = File(this.javaClass.classLoader.getResource("acceptance-project")!!.path)
53-
projectTestDir = File(testProjectDir.newFolder(), "acceptence-project")
54-
55-
acceptanceTestProject.copyRecursively(projectTestDir)
56-
buildFile = File(projectTestDir, "build.gradle")
57-
58-
projectBuildDir = File(projectTestDir, "build")
59-
println("!!!!! $projectBuildDir !!!!!!!")
45+
@BeforeEach
46+
fun createTemporaryAcceptanceProjectFromTemplate() {
47+
File(javaClass.classLoader.getResource("acceptance-project")!!.path).copyRecursively(projectTestDir)
6048
}
6149

6250
@Test
6351
fun `default build no options`() {
6452
buildFile.writeText(baseBuildGradle)
6553

66-
val result = GradleRunner.create()
67-
.withProjectDir(projectTestDir)
68-
.withArguments("clean", "generateOpenApiDocs")
69-
.withPluginClasspath()
70-
.build()
71-
72-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
73-
74-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
75-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
54+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
55+
assertOpenApiJsonFile(1)
7656
}
7757

7858
@Test
7959
fun `different output dir`() {
80-
var specialOutputDir = File(projectTestDir, "specialDir")
60+
val specialOutputDir = File(projectTestDir, "specialDir")
8161
specialOutputDir.mkdirs()
8262

83-
buildFile.writeText("""$baseBuildGradle
63+
buildFile.writeText(
64+
"""$baseBuildGradle
8465
openApi{
8566
outputDir = file("${specialOutputDir.toURI().path}")
8667
}
87-
""".trimMargin())
68+
""".trimMargin()
69+
)
8870

89-
val result = GradleRunner.create()
90-
.withProjectDir(projectTestDir)
91-
.withArguments("clean", "generateOpenApiDocs")
92-
.withPluginClasspath()
93-
.build()
94-
95-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
96-
97-
val openApiJsonFile = File(specialOutputDir, DEFAULT_OPEN_API_FILE_NAME)
98-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
71+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
72+
assertOpenApiJsonFile(1, buildDir = specialOutputDir)
9973
}
10074

10175
@Test
10276
fun `different output file name`() {
103-
var specialOutputJsonFileName = RandomStringUtils.randomAlphanumeric(15)
77+
val specialOutputJsonFileName = RandomStringUtils.randomAlphanumeric(15)
10478

105-
buildFile.writeText("""$baseBuildGradle
79+
buildFile.writeText(
80+
"""$baseBuildGradle
10681
openApi{
10782
outputFileName = "$specialOutputJsonFileName"
10883
}
109-
""".trimMargin())
110-
111-
val result = GradleRunner.create()
112-
.withProjectDir(projectTestDir)
113-
.withArguments("clean", "generateOpenApiDocs")
114-
.withPluginClasspath()
115-
.build()
84+
""".trimMargin()
85+
)
11686

117-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
118-
119-
val openApiJsonFile = File(projectBuildDir, specialOutputJsonFileName)
120-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
87+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
88+
assertOpenApiJsonFile(1, specialOutputJsonFileName)
12189
}
12290

12391
@Test
12492
fun `using forked properties`() {
125-
buildFile.writeText("""$baseBuildGradle
93+
buildFile.writeText(
94+
"""$baseBuildGradle
12695
openApi{
12796
forkProperties = "-Dspring.profiles.active=multiple-endpoints -Dsome.second.property=someValue"
12897
}
129-
""".trimMargin())
130-
131-
val result = GradleRunner.create()
132-
.withProjectDir(projectTestDir)
133-
.withArguments("clean", "generateOpenApiDocs")
134-
.withPluginClasspath()
135-
.build()
136-
137-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
98+
""".trimMargin()
99+
)
138100

139-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
140-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 3)
101+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
102+
assertOpenApiJsonFile(3)
141103
}
142104

143105
@Test
144106
fun `using forked properties via System properties`() {
145-
buildFile.writeText("""$baseBuildGradle
107+
buildFile.writeText(
108+
"""$baseBuildGradle
146109
openApi{
147110
forkProperties = System.properties
148111
}
149-
""".trimMargin())
112+
""".trimMargin()
113+
)
150114

151-
val result = GradleRunner.create()
152-
.withProjectDir(projectTestDir)
153-
.withArguments("clean", "generateOpenApiDocs", "-Dspring.profiles.active=multiple-endpoints")
154-
.withPluginClasspath()
155-
.build()
156-
157-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
158-
159-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
160-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 2)
115+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild("-Dspring.profiles.active=multiple-endpoints")).outcome)
116+
assertOpenApiJsonFile(2)
161117
}
162118

163119
@Test
164120
fun `configurable wait time`() {
165-
buildFile.writeText("""$baseBuildGradle
121+
buildFile.writeText(
122+
"""$baseBuildGradle
166123
openApi{
167124
forkProperties = "-Dspring.profiles.active=slower"
168125
waitTimeInSeconds = 60
169126
}
170-
""".trimMargin())
171-
172-
val result = GradleRunner.create()
173-
.withProjectDir(projectTestDir)
174-
.withArguments("clean", "generateOpenApiDocs")
175-
.withPluginClasspath()
176-
.build()
127+
""".trimMargin()
128+
)
177129

178-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
179-
180-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
181-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
130+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
131+
assertOpenApiJsonFile(1)
182132
}
183133

184134
@Test
185135
fun `using different api url`() {
186-
buildFile.writeText("""$baseBuildGradle
136+
buildFile.writeText(
137+
"""$baseBuildGradle
187138
openApi{
188139
apiDocsUrl = "http://localhost:8080/secret-api-docs"
189140
forkProperties = "-Dspring.profiles.active=different-url"
190141
}
191-
""".trimMargin())
192-
193-
val result = GradleRunner.create()
194-
.withProjectDir(projectTestDir)
195-
.withArguments("clean", "generateOpenApiDocs")
196-
.withPluginClasspath()
197-
.build()
198-
199-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
142+
""".trimMargin()
143+
)
200144

201-
val openApiJsonFile = File(projectBuildDir, DEFAULT_OPEN_API_FILE_NAME)
202-
assertOpenApiJsonFileIsAsExpected(openApiJsonFile, 1)
145+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
146+
assertOpenApiJsonFile(1)
203147
}
204148

205149
@Test
206150
fun `using multiple grouped apis`() {
207151
val outputJsonFileNameGroupA = "openapi-groupA.json"
208152
val outputJsonFileNameGroupB = "openapi-groupB.json"
209153

210-
buildFile.writeText("""$baseBuildGradle
154+
buildFile.writeText(
155+
"""$baseBuildGradle
211156
openApi{
212157
groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA",
213158
"http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB"]
214159
forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
215160
}
216-
""".trimMargin())
217-
218-
val result = GradleRunner.create()
219-
.withProjectDir(projectTestDir)
220-
.withArguments("clean", "generateOpenApiDocs")
221-
.withPluginClasspath()
222-
.build()
223-
224-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
225-
226-
val openApiJsonFileGroupA = File(projectBuildDir, outputJsonFileNameGroupA)
227-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1)
161+
""".trimMargin()
162+
)
228163

229-
val openApiJsonFileGroupB = File(projectBuildDir, outputJsonFileNameGroupB)
230-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2)
164+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
165+
assertOpenApiJsonFile(1, outputJsonFileNameGroupA)
166+
assertOpenApiJsonFile(2, outputJsonFileNameGroupB)
231167
}
232168

233169
@Test
@@ -236,45 +172,41 @@ class OpenApiGradlePluginTest {
236172
val outputJsonFileNameGroupA = "openapi-groupA.json"
237173
val outputJsonFileNameGroupB = "openapi-groupB.json"
238174

239-
buildFile.writeText("""$baseBuildGradle
175+
buildFile.writeText(
176+
"""$baseBuildGradle
240177
openApi{
241178
apiDocsUrl = "http://localhost:8080/v3/api-docs/groupA"
242179
outputFileName = "$outputJsonFileNameSingleGroupA"
243180
groupedApiMappings = ["http://localhost:8080/v3/api-docs/groupA": "$outputJsonFileNameGroupA",
244181
"http://localhost:8080/v3/api-docs/groupB": "$outputJsonFileNameGroupB"]
245182
forkProperties = "-Dspring.profiles.active=multiple-grouped-apis"
246183
}
247-
""".trimMargin())
184+
""".trimMargin()
185+
)
248186

249-
val result = GradleRunner.create()
250-
.withProjectDir(projectTestDir)
251-
.withArguments("clean", "generateOpenApiDocs")
252-
.withPluginClasspath()
253-
.build()
254-
255-
assertEquals(TaskOutcome.SUCCESS, getTaskByName(result, "generateOpenApiDocs")?.outcome)
256-
257-
val openApiJsonFileSingleGroupA = File(projectBuildDir, outputJsonFileNameSingleGroupA)
258-
assertFalse(openApiJsonFileSingleGroupA.exists())
259-
260-
val openApiJsonFileGroupA = File(projectBuildDir, outputJsonFileNameGroupA)
261-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupA, 1)
262-
263-
val openApiJsonFileGroupB = File(projectBuildDir, outputJsonFileNameGroupB)
264-
assertOpenApiJsonFileIsAsExpected(openApiJsonFileGroupB, 2)
187+
assertEquals(TaskOutcome.SUCCESS, openApiDocsTask(runTheBuild()).outcome)
188+
assertFalse(File(projectBuildDir, outputJsonFileNameSingleGroupA).exists())
189+
assertOpenApiJsonFile(1, outputJsonFileNameGroupA)
190+
assertOpenApiJsonFile(2, outputJsonFileNameGroupB)
265191
}
266192

267-
private fun assertOpenApiJsonFileIsAsExpected(openApiJsonFile: File, expectedNumberOfPaths: Int) {
268-
val openApiJson = getOpenApiJsonAtLocation(openApiJsonFile)
269-
assertEquals("3.0.1", openApiJson!!.string("openapi"))
270-
assertEquals(expectedNumberOfPaths, openApiJson.obj("paths")!!.size)
193+
private fun runTheBuild(vararg additionalArguments: String = emptyArray()) = GradleRunner.create()
194+
.withProjectDir(projectTestDir)
195+
.withArguments("clean", "generateOpenApiDocs", *additionalArguments)
196+
.withPluginClasspath()
197+
.build()
198+
199+
private fun assertOpenApiJsonFile(
200+
expectedPathCount: Int,
201+
outputJsonFileName: String = DEFAULT_OPEN_API_FILE_NAME,
202+
buildDir: File = projectBuildDir
203+
) {
204+
val openApiJson = getOpenApiJsonAtLocation(File(buildDir, outputJsonFileName))
205+
assertEquals("3.0.1", openApiJson.string("openapi"))
206+
assertEquals(expectedPathCount, openApiJson.obj("paths")!!.size)
271207
}
272208

273-
private fun getOpenApiJsonAtLocation(path: File): JsonObject? {
274-
return Parser.default().parse(FileReader(path)) as JsonObject
275-
}
209+
private fun getOpenApiJsonAtLocation(path: File) = Parser.default().parse(FileReader(path)) as JsonObject
276210

277-
private fun getTaskByName(result: BuildResult, name: String): BuildTask? {
278-
return result.tasks.find { it.path.contains(name) }
279-
}
280-
}
211+
private fun openApiDocsTask(result: BuildResult) = result.tasks.find { it.path.contains("generateOpenApiDocs") }!!
212+
}

0 commit comments

Comments
 (0)