1
1
package org .scalescc .sbt
2
2
3
- import java .util .Properties
4
3
import sbt ._
5
4
import sbt .Keys ._
6
- import xml .transform ._
7
- import scales .{Coverage , Env }
8
- import scales .report .{ScalesHtmlWriter , CoberturaXmlWriter , ScalesXmlWriter }
9
- import java .io ._
10
- import sbt .File
11
- import sbt .File
12
- import scala .Some
5
+ import scales ._
13
6
import sbt .File
7
+ import scales .report .{ScalesHtmlWriter , CoberturaXmlWriter , ScalesXmlWriter }
14
8
import scala .Some
15
- import java .io .File
16
- import sbt .File
17
9
18
10
object ScalesSbtPlugin extends Plugin {
19
11
@@ -45,7 +37,8 @@ object ScalesSbtPlugin extends Plugin {
45
37
case None => throw new Exception (" Fatal: scalac-scales-plugin not in libraryDependencies" )
46
38
case Some (classpath) =>
47
39
Seq (
48
- " -Xplugin:" + classpath.getAbsolutePath
40
+ " -Xplugin:" + classpath.getAbsolutePath,
41
+ " -Yrangepos"
49
42
)
50
43
}
51
44
},
@@ -67,70 +60,19 @@ object ScalesSbtPlugin extends Plugin {
67
60
scalesDeps ++ testDeps.filter(_.data != oldClassDir)
68
61
},
69
62
70
- testOptions in ScalesTest <+= testsSetup,
71
63
testOptions in ScalesTest <+= testsCleanup,
72
64
73
65
// make scales config the same as scalesTest config
74
66
test in Scales <<= (test in ScalesTest )
75
67
)
76
68
}
77
69
78
- /** Generate hook that is invoked before each tests execution. */
79
- def testsSetup = {
80
- (name in Scales ,
81
- baseDirectory in Scales ,
82
- scalaSource in Scales ,
83
- classDirectory in ScalesTest ,
84
- definedTests in ScalesTest ,
85
- scalesReportDir,
86
- streams) map {
87
- (name,
88
- baseDirectory,
89
- scalaSource,
90
- classDirectory,
91
- definedTests,
92
- scalesReportDir,
93
- streams) =>
94
- if (definedTests.isEmpty) {
95
- Tests .Setup {
96
- () => {}
97
- }
98
- } else
99
- Tests .Setup {
100
- () =>
101
- val out = classDirectory / " scales.properties"
102
- val props = new Properties ()
103
- props.setProperty(" scales.basedir" , baseDirectory.getAbsolutePath)
104
- IO .write(props, " Env for scales" , out)
105
- }
106
- }
107
- }
108
-
109
- // todo figure out how to access these from another dep
110
- def invoked (file : File ): Seq [Int ] = {
111
- val reader = new BufferedReader (new FileReader (Env .measurementFile))
112
- val line = reader.readLine()
113
- reader.close()
114
- line.split(" ;" ).filterNot(_.isEmpty).map(_.toInt)
115
- }
116
-
117
- // todo figure out how to access these from another dep
118
- def deserialize (file : File ): Coverage = deserialize(new FileInputStream (file))
119
- def deserialize (in : InputStream ): Coverage = {
120
- val oos = new ObjectInputStream (in)
121
- val coverage = oos.readObject().asInstanceOf [Coverage ]
122
- oos.close()
123
- coverage
124
- }
125
-
126
70
/** Generate hook that is invoked after each tests execution. */
127
71
def testsCleanup = {
128
- (name in Scales ,
129
- classDirectory in ScalesTest ,
72
+ (target in ScalesTest ,
130
73
definedTests in ScalesTest ,
131
74
streams) map {
132
- (name,
133
- classDirectory,
75
+ (target,
134
76
definedTests,
135
77
streams) =>
136
78
if (definedTests.isEmpty) {
@@ -141,13 +83,12 @@ object ScalesSbtPlugin extends Plugin {
141
83
Tests .Cleanup {
142
84
() =>
143
85
144
- println(Keys . target in Test )
86
+ println(target)
145
87
println(Env .coverageFile)
146
88
println(Env .measurementFile)
147
89
148
- val coverage = deserialize(Env .coverageFile)
149
- val measurements = invoked(Env .measurementFile)
150
-
90
+ val coverage = IOUtils .deserialize(getClass.getClassLoader, Env .coverageFile)
91
+ val measurements = IOUtils .invoked(Env .measurementFile)
151
92
coverage.apply(measurements)
152
93
153
94
val targetDirectory = new File (" target/coverage-report" )
@@ -161,8 +102,6 @@ object ScalesSbtPlugin extends Plugin {
161
102
162
103
println(" Generating Scales HTML report..." )
163
104
ScalesHtmlWriter .write(coverage, targetDirectory)
164
-
165
- ()
166
105
}
167
106
}
168
107
}
0 commit comments