1+ import org.gradle.tooling.GradleConnector
12import software.amazon.smithy.kotlin.codegen.rendering.smoketests.SERVICE_FILTER
23import software.amazon.smithy.kotlin.codegen.rendering.smoketests.SKIP_TAGS
4+ import java.io.ByteArrayOutputStream
35import java.io.File
46import kotlin.test.*
57
68class SmokeTestE2ETest {
79 @Test
810 fun successService () {
9- val smokeTestRunnerOutput = runSmokeTests(" successService " )
11+ val smokeTestRunnerOutput = runSmokeTests()
1012
1113 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTest - no error expected from service" )
1214 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTestWithTags - no error expected from service" )
1315 }
1416
1517 @Test
1618 fun failureService () {
17- val smokeTestRunnerOutput = runSmokeTests(" failureService " )
19+ val smokeTestRunnerOutput = runSmokeTests()
1820
1921 assertContains(smokeTestRunnerOutput, " ok FailureService FailuresTest - error expected from service" )
2022 }
2123
2224 @Test
2325 fun successServiceSkipTags () {
2426 val envVars = mapOf (SKIP_TAGS to " success" )
25- val smokeTestRunnerOutput = runSmokeTests(" successService " , envVars)
27+ val smokeTestRunnerOutput = runSmokeTests(envVars)
2628
2729 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTest - no error expected from service" )
2830 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
@@ -31,34 +33,28 @@ class SmokeTestE2ETest {
3133 @Test
3234 fun successServiceServiceFilter () {
3335 val envVars = mapOf (SERVICE_FILTER to " Failure" ) // Only run tests for services with this SDK ID
34- val smokeTestRunnerOutput = runSmokeTests(" successService " , envVars)
36+ val smokeTestRunnerOutput = runSmokeTests(envVars)
3537
3638 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTest - no error expected from service # skip" )
3739 assertContains(smokeTestRunnerOutput, " ok SuccessService SuccessTestWithTags - no error expected from service # skip" )
3840 }
3941}
4042
41- private fun runSmokeTests (service : String , envVars : Map <String , String > = emptyMap()): String {
42- val sdkRootDir = System .getProperty(" user.dir" ) + " /../../../"
43-
44- val output = StringBuilder ()
45- val smokeTests = ProcessBuilder ()
46- .command(" ls" )
47- .directory(File (sdkRootDir))
48- .redirectErrorStream(true )
49-
50- envVars.forEach { (key, value) ->
51- smokeTests
52- .environment()
53- .put(key, value)
43+ private fun runSmokeTests (envVars : Map <String , String > = emptyMap()): String {
44+ val currentDir = System .getProperty(" user.dir" )
45+ val outputStream = ByteArrayOutputStream ()
46+ val connector = GradleConnector .newConnector()
47+ .forProjectDirectory(File (currentDir))
48+ .connect()
49+
50+ connector.use {
51+ it.newBuild()
52+ .forTasks(" smokeTest" )
53+ .setStandardOutput(outputStream)
54+ .setStandardError(outputStream)
55+ .setEnvironmentVariables(envVars)
56+ .run ()
5457 }
5558
56- smokeTests
57- .start()
58- .inputStream
59- .bufferedReader()
60- .forEachLine { output.append(" $it \n " ) }
61-
62- throw Exception (output.toString())
63- return output.toString()
59+ return outputStream.toString()
6460}
0 commit comments