Skip to content

Commit df35228

Browse files
author
Albert Meltzer
committed
Read alternative sources from project as well
Make sure to filter out those falling under output dirs.
1 parent d419039 commit df35228

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/main/scala/org/antipathy/mvn_scalafmt/SourcesBuilder.scala

+6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class SourcesBuilder(project: MavenProject) {
1212

1313
private val sources = Set.newBuilder[File]
1414
private val build = project.getBuild()
15+
private val outpath = getCanonicalFile(build.getDirectory()).toPath()
1516

1617
private[mvn_scalafmt] def resultSet(): Set[File] =
1718
try sources.result()
@@ -22,11 +23,13 @@ class SourcesBuilder(project: MavenProject) {
2223
def addMain(dirs: JList[File]): Unit =
2324
if (!add(dirs)) {
2425
appendPrimary(build.getSourceDirectory())
26+
appendAlternative(project.getCompileSourceRoots())
2527
}
2628

2729
def addTest(dirs: JList[File]): Unit =
2830
if (!add(dirs)) {
2931
appendPrimary(build.getTestSourceDirectory())
32+
appendAlternative(project.getTestCompileSourceRoots())
3033
}
3134

3235
private def add(dirs: JList[File]): Boolean = {
@@ -46,4 +49,7 @@ class SourcesBuilder(project: MavenProject) {
4649
private def appendPrimary(dir: String): Unit =
4750
sources += getCanonicalFile(dir + "/../scala")
4851

52+
private def appendAlternative(altDirs: JList[String]): Unit =
53+
sources ++= altDirs.asScala.map(getCanonicalFile).filter(!_.toPath().startsWith(outpath))
54+
4955
}

src/test/scala/org/antipathy/mvn_scalafmt/SourcesBuilderSpec.scala

+28-1
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,41 @@ class SourcesBuilderSpec extends AnyFlatSpec with Matchers {
7575
builder.resultSet() shouldBe empty
7676
}
7777

78+
it should "add empty both, filtering" in {
79+
val mavenBuild = new Build() {
80+
setSourceDirectory("/foo/src/main/java")
81+
setTestSourceDirectory("/foo/src/test/java")
82+
}
83+
val project = getMavenProject(mavenBuild)
84+
project.addCompileSourceRoot("/foo/src/main/scala")
85+
project.addCompileSourceRoot("/out/src/main/scala")
86+
project.addCompileSourceRoot("/out2/src/main/scala")
87+
project.addTestCompileSourceRoot("/foo/src/test/scala")
88+
project.addTestCompileSourceRoot("/out/src/test/scala")
89+
project.addTestCompileSourceRoot("/out2/src/test/scala")
90+
91+
val builder = new SourcesBuilder(project)
92+
builder.addMain(null)
93+
builder.addTest(null)
94+
builder.resultSet() shouldBe Set[File](
95+
"/foo/src/main/scala",
96+
"/out2/src/main/scala",
97+
"/foo/src/test/scala",
98+
"/out2/src/test/scala"
99+
)
100+
builder.resultSet() shouldBe empty
101+
}
102+
78103
}
79104

80105
private object SourcesBuilderSpec {
81106

82-
def getMavenProject(mavenBuild: Build = null) =
107+
def getMavenProject(mavenBuild: Build = new Build()) = {
108+
mavenBuild.setDirectory("/out")
83109
new MavenProject(new Model { setBuild(mavenBuild) }) {
84110
setFile(new File("/xyz/pom.xml")) // sets basedir
85111
}
112+
}
86113

87114
implicit def implicitStringToFile(file: String): File = new File(file)
88115

0 commit comments

Comments
 (0)