]> source.dussan.org Git - sonarqube.git/commitdiff
Fix some quality flaws
authorSimon Brandhof <simon.brandhof@gmail.com>
Fri, 23 Mar 2012 06:40:31 +0000 (07:40 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Fri, 23 Mar 2012 06:40:31 +0000 (07:40 +0100)
sonar-core/src/main/java/org/sonar/core/plugins/PluginInstaller.java
sonar-server/src/main/java/org/sonar/server/plugins/ClassLoaderUtils.java
sonar-server/src/test/java/org/sonar/server/plugins/ApplicationDeployerTest.java

index 3be1816658c5698c230d3f15055e32e744f675ff..94c2c6f4bad65b707e62b3c639cd81fcd6f9be55 100644 (file)
@@ -62,11 +62,7 @@ public class PluginInstaller {
 
       if (metadata.getPathsToInternalDeps().length > 0) {
         // needs to unzip the jar
-        ZipUtils.unzip(pluginFile, pluginBasedir, new ZipUtils.ZipEntryFilter() {
-          public boolean accept(ZipEntry entry) {
-            return entry.getName().startsWith("META-INF/lib");
-          }
-        });
+        ZipUtils.unzip(pluginFile, pluginBasedir, new LibFilter());
         for (String depPath : metadata.getPathsToInternalDeps()) {
           File dependency = new File(pluginBasedir, depPath);
           if (!dependency.isFile() || !dependency.exists()) {
@@ -91,6 +87,12 @@ public class PluginInstaller {
     }
   }
 
+  private static class LibFilter implements ZipUtils.ZipEntryFilter {
+    public boolean accept(ZipEntry entry) {
+      return entry.getName().startsWith("META-INF/lib");
+    }
+  }
+
   public DefaultPluginMetadata extractMetadata(File file, boolean isCore) {
     try {
       PluginManifest manifest = new PluginManifest(file);
@@ -133,7 +135,7 @@ public class PluginInstaller {
       metadata.setName(pluginInstance.getName());
 
     } catch (Exception e) {
-      throw new RuntimeException("The metadata main class can not be created. Plugin file=" + pluginFile.getName() + ", class=" + mainClass, e);
+      throw new IllegalStateException("The metadata main class can not be created. Plugin file=" + pluginFile.getName() + ", class=" + mainClass, e);
     }
   }
 }
index c99e4b7debbf2cb2f612d0cec47dc94f6c6f5d2d..100c72a64667e658244cb0dcdec5ebc3f7d60848 100644 (file)
@@ -28,6 +28,7 @@ import org.apache.commons.lang.StringUtils;
 import javax.annotation.Nullable;
 import java.io.File;
 import java.io.IOException;
+import java.io.UnsupportedEncodingException;
 import java.net.URL;
 import java.net.URLDecoder;
 import java.util.Collection;
index 9226491e0fe9c2a98a80f1dbf952e7a7485a5d08..cb350f6ad08d5bae592389f70e4c360bb93f9800 100644 (file)
@@ -23,17 +23,17 @@ import org.apache.commons.io.FileUtils;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
+import org.sonar.api.platform.PluginMetadata;
 import org.sonar.api.platform.PluginRepository;
 import org.sonar.api.platform.ServerFileSystem;
 
 import java.io.File;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.util.Collections;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -67,6 +67,22 @@ public class ApplicationDeployerTest {
     assertThat(new File(appDir, "app/views/fake/index.html.erb").exists(), is(true));
   }
 
+  @Test
+  public void deployRubyRailsApps_no_apps() throws Exception {
+    ServerFileSystem fileSystem = mock(ServerFileSystem.class);
+    File tempDir = this.temp.getRoot();
+    when(fileSystem.getTempDir()).thenReturn(tempDir);
+
+    PluginRepository pluginRepository = mock(PluginRepository.class);
+    when(pluginRepository.getMetadata()).thenReturn(Collections.<PluginMetadata>emptyList());
+    new ApplicationDeployer(fileSystem, pluginRepository).start();
+
+    File appDir = new File(tempDir, "ror");
+    assertThat(appDir.isDirectory(), is(true));
+    assertThat(appDir.exists(), is(true));
+    assertThat(FileUtils.listFiles(appDir, null, true).size(), is(0));
+  }
+
   @Test
   public void prepareRubyRailsRootDirectory() throws Exception {
     ServerFileSystem fileSystem = mock(ServerFileSystem.class);
@@ -79,4 +95,21 @@ public class ApplicationDeployerTest {
     assertThat(dir.exists(), is(true));
     assertThat(dir.getCanonicalPath(), is(new File(tempDir, "ror").getCanonicalPath()));
   }
+
+  @Test
+  public void prepareRubyRailsRootDirectory_delete_existing_dir() throws Exception {
+    ServerFileSystem fileSystem = mock(ServerFileSystem.class);
+    File tempDir = this.temp.getRoot();
+    when(fileSystem.getTempDir()).thenReturn(tempDir);
+
+    File file = new File(tempDir, "ror/foo/bar.txt");
+    FileUtils.writeStringToFile(file, "foooo");
+
+    File dir = new ApplicationDeployer(fileSystem, mock(PluginRepository.class)).prepareRubyRailsRootDirectory();
+
+    assertThat(dir.isDirectory(), is(true));
+    assertThat(dir.exists(), is(true));
+    assertThat(dir.getCanonicalPath(), is(new File(tempDir, "ror").getCanonicalPath()));
+    assertThat(FileUtils.listFiles(new File(tempDir, "ror"), null, true).size(), is(0));
+  }
 }