Skip to content

Commit beba89b

Browse files
develop
1 parent 6a34eb4 commit beba89b

File tree

13 files changed

+210
-82
lines changed

13 files changed

+210
-82
lines changed

.mvn/github-squash.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
point=635da99b8c80d383628f377c06cb1f15cc5e91a2
2+
point=6a34eb45f3691ba6bfd8005ae2352d23f223ec0e

.mvn/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,8 +2185,8 @@ version=${revision}
21852185
-->
21862186
<dependency>
21872187
<groupId>com.carrotgarden.sjs</groupId>
2188-
<artifactId>scala-js-junit-tools</artifactId>
2189-
<version>1.0.1.20180129202557</version>
2188+
<artifactId>scala-js-junit-tools_${version.scala.epoch}</artifactId>
2189+
<version>1.0.2.20180224031617</version>
21902190
<scope>test</scope>
21912191
</dependency>
21922192
<!-- Enable logging of JS-VM output from scala-js-junit-tools. -->

.mvn/release-note.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11

2+
### 1.1.0
3+
4+
#### Breaking change
5+
* use json serialization
6+
27
### 1.0.2
38

49
#### Improvements

pom.xml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<properties>
4141

4242
<!-- Release series. -->
43-
<release.epoch>1.0.2</release.epoch>
43+
<release.epoch>1.1.0</release.epoch>
4444

4545
<!-- Development releases repository. -->
4646
<bintray.subject>random-scalor</bintray.subject>
@@ -111,6 +111,12 @@
111111
<artifactId>config</artifactId>
112112
</dependency>
113113

114+
<dependency>
115+
<groupId>com.lihaoyi</groupId>
116+
<artifactId>upickle_${version.scala.epoch}</artifactId>
117+
<version>0.5.1</version>
118+
</dependency>
119+
114120
<dependency>
115121
<groupId>org.scala-js</groupId>
116122
<artifactId>scalajs-sbt-test-adapter_${version.scala.epoch}</artifactId>

readme.md

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,43 @@
33

44
Invoke Scala.js JUnit tests inside JavaScript VM, such as Node.js or Phantom.js
55

6-
[![Project License](https://img.shields.io/github/license/random-scalor/scala-js-junit-tools.svg?label=License)](http://www.apache.org/licenses/)
7-
[![Travis Status](https://travis-ci.org/random-scalor/scala-js-junit-tools.svg?branch=master)](https://travis-ci.org/random-scalor/scala-js-junit-tools/builds)
6+
[![Project License][licence_icon]][licence_link]
7+
[![Travis Status][travis_icon]][travis_link]
8+
[![Project Files][tokei_files_icon]][tokei_basic_link]
9+
[![Project Lines][tokei_lines_icon]][tokei_basic_link]
10+
[![Lines of Code][tokei_basic_icon]][tokei_basic_link]
811

9-
Install **2.11**
10-
[![Central](https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.11/badge.svg?style=plastic)](https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.11)
11-
[![Download](https://api.bintray.com/packages/random-scalor/maven/scala-js-junit-tools_2.11/images/download.svg)](https://bintray.com/random-scalor/maven/scala-js-junit-tools_2.11)
12-
13-
Install **2.12**
14-
[![Central](https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.12/badge.svg?style=plastic)](https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.12)
15-
[![Download](https://api.bintray.com/packages/random-scalor/maven/scala-js-junit-tools_2.12/images/download.svg)](https://bintray.com/random-scalor/maven/scala-js-junit-tools_2.12)
12+
| Install | Production Release | Development Release |
13+
|---------|--------------------|---------------------|
14+
| Scala 2.11 | [![Central][central_211_icon]][central_211_link] | [![Bintray][bintray_211_icon]][bintray_211_link] |
15+
| Scala 2.12 | [![Central][central_212_icon]][central_212_link] | [![Bintray][bintray_212_icon]][bintray_212_link] |
1616

1717
Usage
1818
* simple [test case](https://github.com/random-scalor/scala-js-junit-tools/blob/master/src/test/scala/com/carrotgarden/sjs/junit/ScalaJS_SuiteTest.scala)
19-
* advanced [plugin integration](https://github.com/random-maven/scalor-maven-plugin)
19+
* advanced [plugin integration](https://github.com/random-scalor/scala-js-junit-tools)
20+
21+
22+
23+
24+
[licence_icon]: https://img.shields.io/github/license/random-scalor/scala-js-junit-tools.svg?label=License
25+
[licence_link]: http://www.apache.org/licenses/
26+
27+
[travis_icon]: https://travis-ci.org/random-scalor/scala-js-junit-tools.svg?branch=master
28+
[travis_link]: https://travis-ci.org/random-scalor/scala-js-junit-tools/builds
29+
30+
[tokei_files_icon]: https://tokei.rs/b1/github/random-scalor/scala-js-junit-tools?category=files
31+
[tokei_lines_icon]: https://tokei.rs/b1/github/random-scalor/scala-js-junit-tools?category=lines
32+
[tokei_basic_icon]: https://tokei.rs/b1/github/random-scalor/scala-js-junit-tools
33+
[tokei_basic_link]: https://github.com/random-scalor/scala-js-junit-tools
34+
35+
[central_211_icon]: https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.11/badge.svg?style=plastic
36+
[central_211_link]: https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.11
37+
38+
[bintray_211_icon]: https://api.bintray.com/packages/random-scalor/maven/scala-js-junit-tools_2.11/images/download.svg
39+
[bintray_211_link]: https://bintray.com/random-scalor/maven/scala-js-junit-tools_2.11/_latestVersion
40+
41+
[central_212_icon]: https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.12/badge.svg?style=plastic
42+
[central_212_link]: https://maven-badges.herokuapp.com/maven-central/com.carrotgarden.sjs/scala-js-junit-tools_2.12
43+
44+
[bintray_212_icon]: https://api.bintray.com/packages/random-scalor/maven/scala-js-junit-tools_2.12/images/download.svg
45+
[bintray_212_link]: https://bintray.com/random-scalor/maven/scala-js-junit-tools_2.12/_latestVersion

src/main/resources/reference.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ scala-js-junit-tools {
99
#
1010
# Note: in Maven context, ${user.dir} is ${project.basedir}.
1111
#
12-
location = ${user.dir}/target/scala-js-junit-tools/default.data
12+
location = ${user.dir}/target/scala-js-junit-tools/default.json
1313

1414
#
1515
# Origin of JUnit test started/finished events.

src/main/scala/com/carrotgarden/sjs/junit/Classer.scala

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
package com.carrotgarden.sjs.junit
22

33
import java.io.File
4-
import java.io.FileFilter
5-
import org.scalajs.core.tools.io.VirtualJarFile
6-
import org.scalajs.core.tools.io.FileVirtualBinaryFile
7-
import java.nio.file.Files
8-
import scala.collection.JavaConverters._
9-
import java.io.InputStreamReader
10-
import java.net.URLClassLoader
114

125
/**
136
* Classes support.

src/main/scala/com/carrotgarden/sjs/junit/Config.scala

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.carrotgarden.sjs.junit
22

33
import java.io.File
4-
import org.scalajs.jsenv.ComJSEnv
4+
import java.nio.charset.StandardCharsets
5+
import java.nio.file.Files
6+
57
import org.scalajs.core.tools.linker.ModuleKind
68

7-
import Config._
9+
import Config.EnvConf
10+
import Config.Module
11+
import Config.WebConf
812

913
/**
1014
* Scala.js JavaScript VM testing session configuration.
@@ -64,4 +68,31 @@ object Config {
6468
scriptList : Seq[ String ] = Seq()
6569
)
6670

71+
def charset = StandardCharsets.UTF_8
72+
73+
def configExtract( file : File ) : Config = {
74+
val data = Files.readAllBytes( file.toPath )
75+
val text = new String( data, charset )
76+
configParse( text )
77+
}
78+
79+
def configPersist( config : Config, file : File ) : Unit = {
80+
import java.nio.file.StandardOpenOption._
81+
val text = configUnparse( config )
82+
val data = text.getBytes( charset )
83+
Files.write( file.toPath, data, CREATE, SYNC )
84+
}
85+
86+
import upickle._
87+
import upickle.default._
88+
89+
implicit def codecConfig : ReadWriter[ Config ] = macroRW
90+
implicit def codecEnvConf : ReadWriter[ EnvConf ] = macroRW
91+
implicit def codecWebConf : ReadWriter[ WebConf ] = macroRW
92+
implicit def codecModule : ReadWriter[ Module ] = macroRW
93+
implicit def codecModuleKind : ReadWriter[ ModuleKind ] = macroRW
94+
95+
def configParse( config : String ) : Config = read[ Config ]( config )
96+
def configUnparse( config : Config ) : String = write( config, indent = 4 )
97+
6798
}

src/main/scala/com/carrotgarden/sjs/junit/Context.scala

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,18 @@
11
package com.carrotgarden.sjs.junit
22

33
import java.io.File
4-
import java.io.FileInputStream
5-
import java.io.FileOutputStream
6-
import java.io.ObjectInputStream
7-
import java.io.ObjectOutputStream
8-
import java.lang.management.ManagementFactory
94

105
import scala.collection.concurrent.TrieMap
116

127
import org.scalajs.core.tools.io.FileVirtualJSFile
138
import org.scalajs.core.tools.io.VirtualJSFile
14-
import org.scalajs.core.tools.logging.Logger
15-
import org.scalajs.core.tools.logging.ScalaConsoleLogger
16-
import org.scalajs.jsenv.ConsoleJSConsole
17-
import org.scalajs.jsenv.JSConsole
18-
19-
import sbt.testing.Framework
20-
import java.security.MessageDigest
219
import org.scalajs.core.tools.jsdep.ResolvedJSDependency
22-
import org.scalajs.core.tools.jsdep.ResolutionInfo
2310
import org.scalajs.jsenv.ComJSEnv
24-
import sbt.testing.Runner
2511
import org.scalajs.testadapter.TestAdapter
2612

13+
import sbt.testing.Framework
14+
import sbt.testing.Runner
15+
2716
/**
2817
* Testing session setup.
2918
*/
@@ -32,23 +21,18 @@ class Context extends Reference {
3221
def configLocation : File = {
3322
val location = new File( referenceLocation ).getAbsoluteFile
3423
val folder = location.getParentFile
35-
folder.mkdirs()
24+
if ( !folder.exists() ) {
25+
folder.mkdirs()
26+
}
3627
location
3728
}
3829

3930
def configExtract() : Config = {
40-
val fileInput = new FileInputStream( configLocation )
41-
val objectInput = new ObjectInputStream( fileInput )
42-
val config = objectInput.readObject.asInstanceOf[ Config ]
43-
objectInput.close
44-
config
31+
Config.configExtract( configLocation )
4532
}
4633

4734
def configPersist( config : Config ) : Unit = {
48-
val fileOutput = new FileOutputStream( configLocation )
49-
val objectOutput = new ObjectOutputStream( fileOutput )
50-
objectOutput.writeObject( config )
51-
objectOutput.close
35+
Config.configPersist( config, configLocation )
5236
}
5337

5438
def scriptList( config : Config ) : Seq[ VirtualJSFile ] = {

src/main/scala/com/carrotgarden/sjs/junit/JSEnv.scala

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ object JSEnv {
110110
val builder = new ProcessBuilder( argsList : _* )
111111
builder.environment().clear()
112112
for ( ( name, value ) <- envVars ) builder.environment().put( name, value )
113-
logger.info( runnerReport( executable, envArgs, envVars, libs, code ) )
113+
logger.info( runnerReport(
114+
RunnerContext( runnerType, executable, envArgs, envVars, libs.map( _.lib.path ), code.path )
115+
) )
114116
builder.start()
115117
}
116118
}
@@ -150,7 +152,9 @@ object JSEnv {
150152
val builder = new ProcessBuilder( argsList : _* )
151153
builder.environment().clear()
152154
for ( ( name, value ) <- envVars ) builder.environment().put( name, value )
153-
logger.info( runnerReport( executable, envArgs, envVars, libs, code ) )
155+
logger.info( runnerReport(
156+
RunnerContext( runnerType, executable, envArgs, envVars, libs.map( _.lib.path ), code.path )
157+
) )
154158
builder.start()
155159
}
156160
}
@@ -190,7 +194,9 @@ object JSEnv {
190194
val builder = new ProcessBuilder( argsList : _* )
191195
builder.environment().clear()
192196
for ( ( name, value ) <- envVars ) builder.environment().put( name, value )
193-
logger.info( runnerReport( executable, envArgs, envVars, libs, code ) )
197+
logger.info( runnerReport(
198+
RunnerContext( runnerType, executable, envArgs, envVars, libs.map( _.lib.path ), code.path )
199+
) )
194200
builder.start()
195201
}
196202
}
@@ -229,18 +235,25 @@ object JSEnv {
229235
else "UNKNOWN"
230236
}
231237

232-
def runnerReport(
233-
envExec : String, envArgs : Seq[ String ], envVars : Map[ String, String ],
234-
libs : Seq[ ResolvedJSDependency ], code : VirtualJSFile
235-
) : String = {
236-
s"""
237-
JS-VM launch: ${runnerType} @ ${Thread.currentThread()}
238-
exec: ${envExec}
239-
args: ${envArgs.mkString( "; " )}
240-
vars: ${envVars.map { case ( key, value ) => s"$key=$value" }.mkString( "; " )}
241-
libs: ${libs.map( _.lib.path ).mkString( "; " )}
242-
code: ${code.path}
243-
"""
238+
case class RunnerContext(
239+
mode : String,
240+
exec : String,
241+
args : Seq[ String ],
242+
vars : Map[ String, String ],
243+
libs : Seq[ String ],
244+
code : String
245+
)
246+
247+
object RunnerContext {
248+
import upickle._
249+
import upickle.default._
250+
implicit def codecRunnerContext : ReadWriter[ RunnerContext ] = macroRW
251+
def contextParse( context : String ) : RunnerContext = read[ RunnerContext ]( context )
252+
def contextUnparse( context : RunnerContext ) : String = write( context, indent = 4 )
253+
}
254+
255+
def runnerReport( context : RunnerContext ) : String = {
256+
RunnerContext.contextUnparse( context )
244257
}
245258

246259
}

src/main/scala/com/carrotgarden/sjs/junit/Notificator.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.carrotgarden.sjs.junit
22

3-
import sbt.testing.EventHandler
4-
import sbt.testing.Event
5-
import sbt.testing.Status
3+
import scala.util.matching.Regex
64

7-
import org.junit.runner.notification.RunNotifier
85
import org.junit.runner.Description
96
import org.junit.runner.notification.Failure
7+
import org.junit.runner.notification.RunNotifier
8+
9+
import sbt.testing.Event
10+
import sbt.testing.EventHandler
1011
import sbt.testing.NestedTestSelector
11-
import scala.collection.JavaConverters._
1212
import sbt.testing.Selector
13-
import scala.util.matching.Regex
13+
import sbt.testing.Status
1414

1515
/**
1616
* Convert SBT testing events into JUnit notification events.

src/main/scala/com/carrotgarden/sjs/junit/ScalaJS_Suite.scala

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
11
package com.carrotgarden.sjs.junit
22

3-
import org.junit.runners.Suite
4-
import org.junit.runners.model.RunnerBuilder
3+
import scala.collection.JavaConverters.asScalaBufferConverter
4+
5+
import org.junit.runner.Description
56
import org.junit.runner.Runner
6-
import org.junit.runner.notification.RunNotifier
77
import org.junit.runner.notification.Failure
8-
import org.junit.runner.Description
9-
import org.junit.runners.model.Statement
8+
import org.junit.runner.notification.RunNotifier
9+
import org.junit.runners.Suite
10+
import org.junit.runners.model.RunnerBuilder
1011

11-
import sbt.testing.Framework
12-
import sbt.testing.TaskDef
1312
import sbt.testing.SuiteSelector
14-
import sbt.testing.TestSelector
15-
import sbt.testing.EventHandler
16-
import sbt.testing.Event
17-
18-
import scala.annotation.tailrec
19-
import scala.collection.JavaConverters._
13+
import sbt.testing.TaskDef
2014

2115
/**
2216
* JUnit 4 suite runner for Scala.js.

0 commit comments

Comments
 (0)