Browse Source

Fix project temp folders

tags/5.2-RC1
Duarte Meneses 9 years ago
parent
commit
c4f18158c6

+ 18
- 4
sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectTempFolderProvider.java View File

@@ -33,11 +33,17 @@ public class ProjectTempFolderProvider extends LifecycleProviderAdapter {
static final String TMP_NAME = ".sonartmp";
private DefaultTempFolder projectTempFolder;

public TempFolder provide(BootstrapProperties bootstrapProps) {
public TempFolder provide(AnalysisProperties props) {
if (projectTempFolder == null) {
String workingDirPath = StringUtils.defaultIfBlank(bootstrapProps.property(CoreProperties.WORKING_DIRECTORY), CoreProperties.WORKING_DIRECTORY_DEFAULT_VALUE);
Path workingDir = Paths.get(workingDirPath);
Path tempDir = workingDir.resolve(TMP_NAME).normalize();
String workingDirPath = StringUtils.defaultIfBlank(props.property(CoreProperties.WORKING_DIRECTORY), CoreProperties.WORKING_DIRECTORY_DEFAULT_VALUE);
Path workingDir = Paths.get(workingDirPath).normalize();
if(!workingDir.isAbsolute()) {
Path base = getBasePath(props);
workingDir = base.resolve(workingDir);
}
Path tempDir = workingDir.resolve(TMP_NAME);
try {
Files.createDirectories(tempDir);
} catch (IOException e) {
@@ -48,4 +54,12 @@ public class ProjectTempFolderProvider extends LifecycleProviderAdapter {
}
return projectTempFolder;
}
private Path getBasePath(AnalysisProperties props) {
String baseDir = props.property("sonar.projectBaseDir");
if(baseDir == null) {
throw new IllegalStateException("sonar.projectBaseDir needs to be specified");
}
return Paths.get(baseDir);
}
}

+ 4
- 3
sonar-batch/src/test/java/org/sonar/batch/bootstrap/ProjectTempFolderProviderTest.java View File

@@ -46,7 +46,7 @@ public class ProjectTempFolderProviderTest {
File workingDir = temp.newFolder();
File tmpDir = new File(workingDir, ProjectTempFolderProvider.TMP_NAME);

TempFolder tempFolder = tempFolderProvider.provide(new BootstrapProperties(ImmutableMap.of(CoreProperties.WORKING_DIRECTORY, workingDir.getAbsolutePath())));
TempFolder tempFolder = tempFolderProvider.provide(new AnalysisProperties(ImmutableMap.of(CoreProperties.WORKING_DIRECTORY, workingDir.getAbsolutePath()), ""));
tempFolder.newDir();
tempFolder.newFile();
assertThat(tmpDir).exists();
@@ -55,10 +55,11 @@ public class ProjectTempFolderProviderTest {

@Test
public void createTempFolder() throws IOException {
File defaultDir = new File(CoreProperties.WORKING_DIRECTORY_DEFAULT_VALUE, ProjectTempFolderProvider.TMP_NAME);
File workingDir = temp.newFolder();
File defaultDir = new File(new File(workingDir, CoreProperties.WORKING_DIRECTORY_DEFAULT_VALUE), ProjectTempFolderProvider.TMP_NAME);

try {
TempFolder tempFolder = tempFolderProvider.provide(new BootstrapProperties(Collections.<String, String>emptyMap()));
TempFolder tempFolder = tempFolderProvider.provide(new AnalysisProperties(ImmutableMap.of("sonar.projectBaseDir", workingDir.getAbsolutePath()), ""));
tempFolder.newDir();
tempFolder.newFile();
assertThat(defaultDir).exists();

Loading…
Cancel
Save