Skip to content

Commit

Permalink
Add support for running scalastyle over test sources
Browse files Browse the repository at this point in the history
  • Loading branch information
ajsquared committed Aug 29, 2014
1 parent 85b2a53 commit 1d2b2dd
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/main/scala/Plugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ import org.scalastyle.ScalastyleChecker
import org.scalastyle.ScalastyleConfiguration
import org.scalastyle.Output
import org.scalastyle.XmlOutput
import sbt.Configuration
import sbt.Compile
import sbt.Test
import sbt.ConfigKey.configurationToKey
import sbt.File
import sbt.IO
Expand Down Expand Up @@ -56,15 +58,12 @@ object ScalastylePlugin extends Plugin {

val Settings = Seq(
scalastyleTarget <<= target(_ / "scalastyle-result.xml"),
scalastyleTarget in Test <<= target(_ / "scalastyle-test-result.xml"),
config := file("scalastyle-config.xml"),
config in Test := config.value,
failOnError := true,
scalastyle <<= inputTask {
(argTask: TaskKey[Seq[String]]) => {
(argTask, config, failOnError, scalaSource in Compile, scalastyleTarget, streams) map {
(args, config, failOnError, sourceDir, output, streams) => Tasks.doScalastyle(args, config, failOnError, sourceDir, output, streams)
}
}
},
scalastyle <<= scalastyleTask(Compile),
scalastyle in Test <<= scalastyleTask(Test),
generateConfig <<= inputTask {
(args: TaskKey[Seq[String]]) => {
(args, config, streams) map {
Expand All @@ -73,6 +72,14 @@ object ScalastylePlugin extends Plugin {
}
}
)

def scalastyleTask(conf: Configuration) = inputTask {
(argTask: TaskKey[Seq[String]]) => {
(argTask, config in conf, failOnError, scalaSource in conf, scalastyleTarget in conf, streams) map {
(args, config, failOnError, sourceDir, output, streams) => Tasks.doScalastyle(args, config, failOnError, sourceDir, output, streams)
}
}
}
}

object PluginKeys {
Expand Down
20 changes: 20 additions & 0 deletions src/sbt-test/test-scalastyle/config/build.sbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
org.scalastyle.sbt.ScalastylePlugin.Settings

version := "0.1"

scalaVersion := "2.10.0"

org.scalastyle.sbt.PluginKeys.config in Test := file("scalastyle-test-config.xml")

val containsMessage = taskKey[Boolean]("contains message")

containsMessage := {
val search = "File length exceeds"
val filename = "target/scalastyle-test-result.xml"
val lines = sbt.IO.readLines(file(filename))
val contains = lines.find(s => s.contains(search)).isDefined
if (!contains) {
error("Could not find " + search + " in " + filename)
}
contains
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sbt.version=0.13.0
9 changes: 9 additions & 0 deletions src/sbt-test/test-scalastyle/config/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
resolvers += "sonatype-snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

{
val pluginVersion = System.getProperty("plugin.version")
if(pluginVersion == null)
throw new RuntimeException("""|The system property 'plugin.version' is not defined.
|Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
else addSbtPlugin("org.scalastyle" % "scalastyle-sbt-plugin" % pluginVersion)
}
13 changes: 13 additions & 0 deletions src/sbt-test/test-scalastyle/config/scalastyle-test-config.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<scalastyle>
<name>Scalastyle standard configuration</name>
<check level="warning" class="org.scalastyle.file.FileLengthChecker" enabled="true">
<parameters>
<parameter name="maxFileLength"><![CDATA[5]]></parameter>
</parameters>
</check>
<check level="warning" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
<parameters>
<parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
</parameters>
</check>
</scalastyle>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

object Main extends App {
println("hello")
}

object foo {
println("hello")
}

4 changes: 4 additions & 0 deletions src/sbt-test/test-scalastyle/config/test
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# scalastyle alternative config file
> clean
> test:scalastyle
> containsMessage

0 comments on commit 1d2b2dd

Please sign in to comment.