@@ -76,6 +76,105 @@ class SourceFileIndexerTest extends Specification {
7676 thrown(MojoExecutionException )
7777 }
7878
79+ void " searchActualFilesLocation returns null when file is not in the index" () {
80+ given :
81+ File baseDir = Files . createTempDirectory(" project-notfound" ). toFile()
82+ File srcDir = new File (baseDir, " src/main/java" )
83+ srcDir. mkdirs()
84+ File testFile = new File (srcDir, " Existing.java" )
85+ testFile. text = " class Existing {}"
86+
87+ MavenProject project = Mock (MavenProject )
88+ project. getBasedir() >> baseDir
89+ project. getResources() >> []
90+ project. getTestResources() >> []
91+ project. getCompileSourceRoots() >> [srcDir. getAbsolutePath()]
92+ project. getTestCompileSourceRoots() >> []
93+
94+ MavenSession session = Mock (MavenSession )
95+ session. getExecutionRootDirectory() >> baseDir. getAbsolutePath()
96+ session. getCurrentProject() >> project
97+
98+ SourceFileIndexer indexer = new SourceFileIndexer ()
99+ indexer. buildListSourceFiles(session)
100+
101+ when :
102+ String result = indexer. searchActualFilesLocation(" NonExistent.java" )
103+
104+ then :
105+ result == null
106+
107+ cleanup :
108+ baseDir. deleteDir()
109+ }
110+
111+ void " buildListSourceFiles scans nested subdirectories" () {
112+ given :
113+ File baseDir = Files . createTempDirectory(" project-nested" ). toFile()
114+ File srcDir = new File (baseDir, " src/main/java" )
115+ File subPkg = new File (srcDir, " com/example" )
116+ subPkg. mkdirs()
117+ File nestedFile = new File (subPkg, " Service.java" )
118+ nestedFile. text = " class Service {}"
119+
120+ MavenProject project = Mock (MavenProject )
121+ project. getBasedir() >> baseDir
122+ project. getResources() >> []
123+ project. getTestResources() >> []
124+ project. getCompileSourceRoots() >> [srcDir. getAbsolutePath()]
125+ project. getTestCompileSourceRoots() >> []
126+
127+ MavenSession session = Mock (MavenSession )
128+ session. getExecutionRootDirectory() >> baseDir. getAbsolutePath()
129+ session. getCurrentProject() >> project
130+
131+ SourceFileIndexer indexer = new SourceFileIndexer ()
132+
133+ when :
134+ indexer. buildListSourceFiles(session)
135+ String found = indexer. searchActualFilesLocation(" Service.java" )
136+
137+ then :
138+ found != null
139+ found. endsWith(" com/example/Service.java" )
140+
141+ cleanup :
142+ baseDir. deleteDir()
143+ }
144+
145+ void " buildListSourceFiles includes files from test source roots" () {
146+ given :
147+ File baseDir = Files . createTempDirectory(" project-testsrc" ). toFile()
148+ File testSrcDir = new File (baseDir, " src/test/java" )
149+ testSrcDir. mkdirs()
150+ File testFile = new File (testSrcDir, " FooTest.java" )
151+ testFile. text = " class FooTest {}"
152+
153+ MavenProject project = Mock (MavenProject )
154+ project. getBasedir() >> baseDir
155+ project. getResources() >> []
156+ project. getTestResources() >> []
157+ project. getCompileSourceRoots() >> []
158+ project. getTestCompileSourceRoots() >> [testSrcDir. getAbsolutePath()]
159+
160+ MavenSession session = Mock (MavenSession )
161+ session. getExecutionRootDirectory() >> baseDir. getAbsolutePath()
162+ session. getCurrentProject() >> project
163+
164+ SourceFileIndexer indexer = new SourceFileIndexer ()
165+
166+ when :
167+ indexer. buildListSourceFiles(session)
168+ String found = indexer. searchActualFilesLocation(" FooTest.java" )
169+
170+ then :
171+ found != null
172+ found. endsWith(" FooTest.java" )
173+
174+ cleanup :
175+ baseDir. deleteDir()
176+ }
177+
79178 private static Resource resource (File dir ) {
80179 Resource res = new Resource ()
81180 res. setDirectory(dir. getAbsolutePath())
0 commit comments