Skip to content

Commit f510f17

Browse files
vk9ScrapCodes
authored andcommitted
Added testConfigLocation option to support separate scala style config for source directory [Fixes #19]
1 parent 91f860a commit f510f17

File tree

5 files changed

+101
-9
lines changed

5 files changed

+101
-9
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Default phase of execution is `verify`. The following is an example of a configu
2929
<sourceDirectory>${project.basedir}/src/main/scala</sourceDirectory>
3030
<testSourceDirectory>${project.basedir}/src/test/scala</testSourceDirectory>
3131
<configLocation>${project.basedir}/lib/scalastyle_config.xml</configLocation>
32+
<testConfigLocation>${project.basedir}/lib/scalastyle_test_config.xml</testConfigLocation>
3233
<outputFile>${project.basedir}/scalastyle-output.xml</outputFile>
3334
<outputEncoding>UTF-8</outputEncoding>
3435
</configuration>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
invoker.goals=clean compile
2+
invoker.buildResult=failure

src/it/test_config/pom.xml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<groupId>it.scalastyle-maven-plugin</groupId>
8+
<artifactId>basic</artifactId>
9+
<version>1.0-SNAPSHOT</version>
10+
<name>Test for basic criteria</name>
11+
<description>Test for basic criteria</description>
12+
<packaging>pom</packaging>
13+
<dependencies>
14+
</dependencies>
15+
16+
<build>
17+
<plugins>
18+
<plugin>
19+
<groupId>@project.groupId@</groupId>
20+
<artifactId>@project.artifactId@</artifactId>
21+
<version>@project.version@</version>
22+
<configuration>
23+
<verbose>true</verbose>
24+
<failOnViolation>true</failOnViolation>
25+
<includeTestSourceDirectory>true</includeTestSourceDirectory>
26+
<failOnWarning>false</failOnWarning>
27+
<sourceDirectory>${src.it}/testsrc</sourceDirectory>
28+
<sourceDirectories>
29+
<dir>${src.it}/testsrc</dir>
30+
</sourceDirectories>
31+
<testSourceDirectories>
32+
<dir>${src.it}/testsrc2</dir>
33+
</testSourceDirectories>
34+
<configLocation>${src.it}/scalastyle_config.xml</configLocation>
35+
<testConfigLocation>${src.it}/scalastyle_error.xml</testConfigLocation>
36+
</configuration>
37+
<executions>
38+
<execution>
39+
<id>scalastyle</id>
40+
<phase>compile</phase>
41+
<goals>
42+
<goal>check</goal>
43+
</goals>
44+
</execution>
45+
</executions>
46+
</plugin>
47+
</plugins>
48+
</build>
49+
</project>

src/it/test_config/validate.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
try {
2+
3+
def file = new File(basedir, 'target')
4+
assert !file.exists()
5+
6+
assert new File(basedir, "build.log").readLines().grep(~/.*warning.*Foobar.scala message=File length exceeds.*/).size() == 1
7+
assert new File(basedir, "build.log").readLines().grep(~/.*error.*Foobar2.scala message=File length exceeds.*/).size() == 1
8+
9+
return true
10+
11+
} catch(Throwable e) {
12+
e.printStackTrace()
13+
return false
14+
}

src/main/java/org/scalastyle/maven/plugin/ScalastyleViolationCheckMojo.java

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public class ScalastyleViolationCheckMojo extends AbstractMojo {
6161

6262
/**
6363
* <p>
64-
* Specifies the location of the scalstyle XML configuration file to use.
64+
* Specifies the location of the scalstyle XML configuration file for source directory.
6565
* </p>
6666
* <p>
6767
* Potential values are a filesystem path, a URL, or a classpath resource.
@@ -77,6 +77,24 @@ public class ScalastyleViolationCheckMojo extends AbstractMojo {
7777
@Parameter(property = "scalastyle.config.location", required = true, defaultValue = "default_config.xml")
7878
private String configLocation;
7979

80+
/**
81+
* <p>
82+
* Specifies the location of the scalstyle XML configuration file for test source directory.
83+
* </p>
84+
* <p>
85+
* Potential values are a filesystem path, a URL, or a classpath resource.
86+
* </p>
87+
* <p>
88+
* This parameter is resolved as file, classpath resource then URL.
89+
* </p>
90+
* <p>
91+
* Source directory config location is used if non is specified in configuration
92+
* </p>
93+
* <p/>
94+
*/
95+
@Parameter(property = "scalastyle.test.config.location")
96+
private String testConfigLocation;
97+
8098
/**
8199
* Specifies the path and filename to save the Scalastyle output.
82100
*/
@@ -208,12 +226,21 @@ public void execute() throws MojoFailureException, MojoExecutionException {
208226

209227
private void performCheck() throws MojoFailureException, MojoExecutionException {
210228
try {
211-
ScalastyleConfiguration configuration = ScalastyleConfiguration.readFromXml(getConfigFile(configLocation));
229+
ScalastyleConfiguration srcConfiguration = ScalastyleConfiguration.readFromXml(getConfigFile(configLocation));
230+
ScalastyleConfiguration testConfiguration = srcConfiguration;
231+
232+
if (testConfigLocation != null) {
233+
testConfiguration = ScalastyleConfiguration.readFromXml(getConfigFile(testConfigLocation));
234+
}
235+
212236
long start = now();
213237
final scala.Option<ClassLoader> none = scala.Option$.MODULE$.apply(null);
214238
ScalastyleChecker<FileSpec> sc = new ScalastyleChecker<FileSpec>(none);
215239

216-
List<Message<FileSpec>> messages = sc.checkFilesAsJava(configuration, getFilesToProcess());
240+
List<Message<FileSpec>> messages = new ArrayList<Message<FileSpec>>();
241+
messages.addAll(sc.checkFilesAsJava(srcConfiguration, getSrcFilesToProcess()));
242+
messages.addAll(sc.checkFilesAsJava(testConfiguration, getTestFilesToProcess()));
243+
217244

218245
Config config = ConfigFactory.load(sc.getClass().getClassLoader());
219246
OutputResult outputResult = new TextOutput<FileSpec>(config, verbose, quiet).output(messages);
@@ -307,13 +334,12 @@ private URLClassLoader getClassLoaderWithProjectResources() throws MojoFailureEx
307334
return new URLClassLoader(urls.toArray(new URL[urls.size()]), Thread.currentThread().getContextClassLoader());
308335
}
309336

310-
private List<FileSpec> getFilesToProcess() {
311-
List<FileSpec> all = new ArrayList<FileSpec>();
312-
313-
all.addAll(getFiles("sourceDirectory", sourceDirectoriesAsList(), inputEncoding));
314-
all.addAll(getFiles("testSourceDirectory", testSourceDirectoriesAsList(), inputEncoding));
337+
private List<FileSpec> getSrcFilesToProcess() {
338+
return getFiles("sourceDirectory", sourceDirectoriesAsList(), inputEncoding);
339+
}
315340

316-
return all;
341+
private List<FileSpec> getTestFilesToProcess() {
342+
return getFiles("testSourceDirectory", testSourceDirectoriesAsList(), inputEncoding);
317343
}
318344

319345
private List<FileSpec> getFiles(String name, List<File> dirs, String encoding) {

0 commit comments

Comments
 (0)