@@ -4,6 +4,7 @@ import cask.util.Logger.Console.*
44import castor .Context .Simple .global
55import org .scalatest .matchers .should .Matchers
66import org .scalatest .wordspec .AnyWordSpec
7+ import replpp .{Colors , DefaultRunBeforeLines , globalRunBeforeLines }
78import replpp .util .{ClasspathHelper , SimpleDriver , pathAsString }
89import requests .RequestFailedException
910import ujson .Value .Value
@@ -97,7 +98,7 @@ class ReplServerTests extends AnyWordSpec with Matchers {
9798 val getResultResponse = getResponse(url, queryUUID)
9899 getResultResponse.obj.keySet should contain(" success" )
99100 getResultResponse(" uuid" ).str shouldBe queryResultWSMessage
100- getResultResponse(" stdout" ).str shouldBe " val res0: Int = 1\n "
101+ getResultResponse(" stdout" ).str should include( " val res0: Int = 1" )
101102 }
102103
103104 " use predefined code" in Fixture (" val foo = 40" ) { url =>
@@ -120,7 +121,7 @@ class ReplServerTests extends AnyWordSpec with Matchers {
120121 val getResultResponse = getResponse(url, queryUUID)
121122 getResultResponse.obj.keySet should contain(" success" )
122123 getResultResponse(" uuid" ).str shouldBe queryResultWSMessage
123- getResultResponse(" stdout" ).str shouldBe " val bar: Int = 42\n "
124+ getResultResponse(" stdout" ).str should include( " val bar: Int = 42" )
124125 }
125126
126127 " use runBefore code" in Fixture (runBeforeCode = Seq (" import Int.MaxValue" )) { url =>
@@ -143,20 +144,20 @@ class ReplServerTests extends AnyWordSpec with Matchers {
143144 val getResultResponse = getResponse(url, queryUUID)
144145 getResultResponse.obj.keySet should contain(" success" )
145146 getResultResponse(" uuid" ).str shouldBe queryResultWSMessage
146- getResultResponse(" stdout" ).str shouldBe " val bar: Int = 2147483647\n "
147+ getResultResponse(" stdout" ).str should include( " val bar: Int = 2147483647" )
147148 }
148149
149150 " use runAfter code" in {
150- val expectedFileContent = " this should be written to the test output file"
151151 val testOutputFile = os.temp(deleteOnExit = false )
152152 val testOutputPath = replpp.util.pathAsString(testOutputFile.toNIO)
153153 Fixture (runAfterCode = Seq (
154- " import java.nio.file.*" ,
155- s """ Files.writeString(Path.of(" $testOutputPath"), " $expectedFileContent") """ ,
156- )) { _ =>
157- // no need to execute anything, we only want to verify the `runAfter` code
154+ s """ definedInTest #> " $testOutputPath" """ ,
155+ )) { url =>
156+ val response = postQuerySync(url, " val definedInTest = 123456" )
157+ response.obj.keySet should contain(" success" )
158+ response(" stdout" ).str should include(" val definedInTest: Int = 123456" )
158159 }
159- os.read(testOutputFile) shouldBe expectedFileContent
160+ os.read(testOutputFile).trim shouldBe " 123456 "
160161 }
161162
162163 " disallow fetching the result of a completed query with an invalid auth header" in Fixture () { url =>
@@ -205,7 +206,7 @@ class ReplServerTests extends AnyWordSpec with Matchers {
205206 getResultResponse.obj.keySet should contain(" stdout" )
206207 getResultResponse.obj.keySet should not contain " err"
207208 getResultResponse(" uuid" ).str shouldBe queryResultWSMessage
208- getResultResponse(" stdout" ).str shouldBe " val res0: Int = 1\n "
209+ getResultResponse(" stdout" ).str should include( " val res0: Int = 1" )
209210 }
210211 }
211212
@@ -363,13 +364,13 @@ class ReplServerTests extends AnyWordSpec with Matchers {
363364 " work for simple case" in Fixture () { url =>
364365 val response = postQuerySync(url, " 1" )
365366 response.obj.keySet should contain(" success" )
366- response(" stdout" ).str shouldBe " val res0: Int = 1\n "
367+ response(" stdout" ).str should include( " val res0: Int = 1" )
367368 }
368369
369370 " using predef code" in Fixture (" val predefCode = 2" ) { url =>
370371 val response = postQuerySync(url, " val foo = predefCode + 40" )
371372 response.obj.keySet should contain(" success" )
372- response(" stdout" ).str shouldBe " val foo: Int = 42\n "
373+ response(" stdout" ).str should include( " val foo: Int = 42" )
373374 }
374375
375376 " fail for invalid auth" in Fixture () { url =>
@@ -430,6 +431,8 @@ object Fixture {
430431 predefCode : String = " " ,
431432 runBeforeCode : Seq [String ] = Seq .empty,
432433 runAfterCode : Seq [String ] = Seq .empty)(urlToResult : String => T ): T = {
434+
435+ val runBeforeCode0 = DefaultRunBeforeLines (using Colors .BlackWhite ) ++ globalRunBeforeLines ++ runBeforeCode
433436 val additionalClasspathEntryMaybe : Option [Path ] =
434437 if (predefCode.trim.isEmpty) None
435438 else {
@@ -440,7 +443,8 @@ object Fixture {
440443 Files .delete(predefFile)
441444 predefClassfiles.toOption
442445 }
443- val embeddedRepl = new EmbeddedRepl (compilerArgs(additionalClasspathEntryMaybe), runBeforeCode, runAfterCode)
446+
447+ val embeddedRepl = new EmbeddedRepl (compilerArgs(additionalClasspathEntryMaybe), runBeforeCode0, runAfterCode, verbose = true )
444448
445449 val host = " localhost"
446450 val port = 8081
0 commit comments