From 9a6bbc29739a9e8bded01fd31e8011e1f52edc24 Mon Sep 17 00:00:00 2001 From: Fabrice Bellingard Date: Wed, 5 Sep 2012 12:44:04 +0200 Subject: [PATCH] SONAR-3777 Move Batch Bootstrapper classes from Sonar to Sonar Runner --- pom.xml | 1 - sonar-batch-bootstrapper/infinitest.args | 1 - sonar-batch-bootstrapper/infinitest.filters | 3 - sonar-batch-bootstrapper/pom.xml | 36 ---- .../bootstrapper/BootstrapClassLoader.java | 121 ------------- .../bootstrapper/BootstrapException.java | 36 ---- .../batch/bootstrapper/Bootstrapper.java | 167 ------------------ .../bootstrapper/BootstrapperIOUtils.java | 98 ---------- .../bootstrapper/BootstrapperVersion.java | 52 ------ .../batch/bootstrapper/package-info.java | 24 --- .../org/sonar/batch/bootstrapper/version.txt | 1 - .../BootstrapClassLoaderTest.java | 60 ------- .../batch/bootstrapper/BootstrapperTest.java | 64 ------- .../bootstrapper/BootstrapperVersionTest.java | 35 ---- 14 files changed, 699 deletions(-) delete mode 100644 sonar-batch-bootstrapper/infinitest.args delete mode 100644 sonar-batch-bootstrapper/infinitest.filters delete mode 100644 sonar-batch-bootstrapper/pom.xml delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapClassLoader.java delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapException.java delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/Bootstrapper.java delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperIOUtils.java delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperVersion.java delete mode 100644 sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/package-info.java delete mode 100644 sonar-batch-bootstrapper/src/main/resources/org/sonar/batch/bootstrapper/version.txt delete mode 100644 sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapClassLoaderTest.java delete mode 100644 sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperTest.java delete mode 100644 sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperVersionTest.java diff --git a/pom.xml b/pom.xml index 75f145e4281..7a456d5ccff 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,6 @@ sonar-application sonar-batch - sonar-batch-bootstrapper sonar-batch-maven-compat sonar-channel sonar-check-api diff --git a/sonar-batch-bootstrapper/infinitest.args b/sonar-batch-bootstrapper/infinitest.args deleted file mode 100644 index ed9f41dadc7..00000000000 --- a/sonar-batch-bootstrapper/infinitest.args +++ /dev/null @@ -1 +0,0 @@ --Djava.awt.headless=true \ No newline at end of file diff --git a/sonar-batch-bootstrapper/infinitest.filters b/sonar-batch-bootstrapper/infinitest.filters deleted file mode 100644 index 172859d4062..00000000000 --- a/sonar-batch-bootstrapper/infinitest.filters +++ /dev/null @@ -1,3 +0,0 @@ -# These tests fail in Eclipse. Until they are fixed, let's ignore them - -.*BootstrapperVersionTest diff --git a/sonar-batch-bootstrapper/pom.xml b/sonar-batch-bootstrapper/pom.xml deleted file mode 100644 index 136dd99f491..00000000000 --- a/sonar-batch-bootstrapper/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - 4.0.0 - - - org.codehaus.sonar - sonar - 3.3-SNAPSHOT - - - sonar-batch-bootstrapper - Sonar :: Batch Bootstrapper - Provides API to bootstrap Sonar Batch. - - - - junit - junit - test - - - org.easytesting - fest-assert - test - - - - - - - src/main/resources - true - - - - diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapClassLoader.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapClassLoader.java deleted file mode 100644 index 53f0d413cbc..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapClassLoader.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import java.io.IOException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.Enumeration; - -/** - * Special {@link URLClassLoader} to execute Sonar, which restricts loading from parent. - */ -public class BootstrapClassLoader extends URLClassLoader { - - private final String[] unmaskedPackages; - - public BootstrapClassLoader(ClassLoader parent, String... unmaskedPackages) { - super(new URL[0], parent); - this.unmaskedPackages = unmaskedPackages; - } - - /** - * {@inheritDoc} Visibility of a method has been relaxed to public. - */ - @Override - public void addURL(URL url) { - super.addURL(url); - } - - /** - * {@inheritDoc} Visibility of a method has been relaxed to public. - */ - @Override - public Class findClass(String name) throws ClassNotFoundException { - return super.findClass(name); - } - - /** - * @return true, if class can be loaded from parent ClassLoader - */ - boolean canLoadFromParent(String name) { - for (String pkg : unmaskedPackages) { - if (name.startsWith(pkg + ".")) { - return true; - } - } - return false; - } - - /** - * Same behavior as in {@link URLClassLoader#loadClass(String, boolean)}, except loading from parent. - */ - @Override - protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - // First, check if the class has already been loaded - Class c = findLoadedClass(name); - if (c == null) { - try { - // Load from parent - if (getParent() != null && canLoadFromParent(name)) { - c = getParent().loadClass(name); - } else { - // Load from system - - // I don't know for other vendors, but for Oracle JVM : - // - ClassLoader.getSystemClassLoader() is sun.misc.Launcher$AppClassLoader. It contains app classpath. - // - ClassLoader.getSystemClassLoader().getParent() is sun.misc.Launcher$ExtClassLoader. It contains core JVM - ClassLoader systemClassLoader = getSystemClassLoader(); - if (systemClassLoader.getParent() != null) { - systemClassLoader = systemClassLoader.getParent(); - } - c = systemClassLoader.loadClass(name); - } - } catch (ClassNotFoundException e) { - // If still not found, then invoke findClass in order - // to find the class. - c = findClass(name); - } - } - if (resolve) { - resolveClass(c); - } - return c; - } - - /** - * Unlike {@link URLClassLoader#getResource(String)} don't return resource from parent. - * See http://jira.codehaus.org/browse/SONAR-2276 - */ - @Override - public URL getResource(String name) { - return findResource(name); - } - - /** - * Unlike {@link URLClassLoader#getResources(String)} don't return resources from parent. - * See http://jira.codehaus.org/browse/SONAR-2276 - */ - @Override - public Enumeration getResources(String name) throws IOException { - return findResources(name); - } - -} diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapException.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapException.java deleted file mode 100644 index 32d8953c2ce..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapException.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -public class BootstrapException extends RuntimeException { - - public BootstrapException(String message) { - super(message); - } - - public BootstrapException(Throwable cause) { - super(cause); - } - - public BootstrapException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/Bootstrapper.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/Bootstrapper.java deleted file mode 100644 index 5f8f17af020..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/Bootstrapper.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; - -public class Bootstrapper { - - private static final String VERSION_PATH = "/api/server/version"; - private static final String BATCH_PATH = "/batch/"; - - public static final int CONNECT_TIMEOUT_MILLISECONDS = 30000; - public static final int READ_TIMEOUT_MILLISECONDS = 60000; - - private File bootDir; - private String serverUrl; - private String productToken; - private String serverVersion; - - /** - * @param productToken part of User-Agent request-header field - see http://tools.ietf.org/html/rfc1945#section-10.15 - */ - public Bootstrapper(String productToken, String serverUrl, File workDir) { - this.productToken = productToken; - bootDir = new File(workDir, "batch"); - bootDir.mkdirs(); - if (serverUrl.endsWith("/")) { - this.serverUrl = serverUrl.substring(0, serverUrl.length() - 1); - } else { - this.serverUrl = serverUrl; - } - } - - /** - * @return server url - */ - public String getServerUrl() { - return serverUrl; - } - - /** - * @return server version - */ - public String getServerVersion() { - if (serverVersion == null) { - try { - serverVersion = remoteContent(VERSION_PATH); - } catch (IOException e) { - throw new BootstrapException(e.getMessage(), e); - } - } - return serverVersion; - } - - /** - * Download batch files from server and creates {@link BootstrapClassLoader}. - * To use this method version of Sonar should be at least 2.6. - * - * @param urls additional URLs for loading classes and resources - * @param parent parent ClassLoader - * @param unmaskedPackages only classes and resources from those packages would be available for loading from parent - */ - public BootstrapClassLoader createClassLoader(URL[] urls, ClassLoader parent, String... unmaskedPackages) { - BootstrapClassLoader classLoader = new BootstrapClassLoader(parent, unmaskedPackages); - List files = downloadBatchFiles(); - for (URL url : urls) { - classLoader.addURL(url); - } - for (File file : files) { - try { - classLoader.addURL(file.toURI().toURL()); - } catch (MalformedURLException e) { - throw new BootstrapException(e); - } - } - return classLoader; - } - - private void remoteContentToFile(String path, File toFile) { - InputStream input = null; - FileOutputStream output = null; - String fullUrl = serverUrl + path; - try { - HttpURLConnection connection = newHttpConnection(new URL(fullUrl)); - output = new FileOutputStream(toFile, false); - input = connection.getInputStream(); - BootstrapperIOUtils.copyLarge(input, output); - } catch (IOException e) { - BootstrapperIOUtils.closeQuietly(output); - BootstrapperIOUtils.deleteFileQuietly(toFile); - throw new BootstrapException("Fail to download the file: " + fullUrl, e); - } finally { - BootstrapperIOUtils.closeQuietly(input); - BootstrapperIOUtils.closeQuietly(output); - } - } - - String remoteContent(String path) throws IOException { - String fullUrl = serverUrl + path; - HttpURLConnection conn = newHttpConnection(new URL(fullUrl)); - Reader reader = new InputStreamReader((InputStream) conn.getContent()); - try { - int statusCode = conn.getResponseCode(); - if (statusCode != HttpURLConnection.HTTP_OK) { - throw new IOException("Status returned by url : '" + fullUrl + "' is invalid : " + statusCode); - } - return BootstrapperIOUtils.toString(reader); - } finally { - BootstrapperIOUtils.closeQuietly(reader); - conn.disconnect(); - } - } - - /** - * By convention, the product tokens are listed in order of their significance for identifying the application. - */ - String getUserAgent() { - return "sonar-bootstrapper/" + BootstrapperVersion.getVersion() + " " + productToken; - } - - HttpURLConnection newHttpConnection(URL url) throws IOException { - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setConnectTimeout(CONNECT_TIMEOUT_MILLISECONDS); - connection.setReadTimeout(READ_TIMEOUT_MILLISECONDS); - connection.setInstanceFollowRedirects(true); - connection.setRequestMethod("GET"); - connection.setRequestProperty("User-Agent", getUserAgent()); - return connection; - } - - private List downloadBatchFiles() { - try { - List files = new ArrayList(); - String libs = remoteContent(BATCH_PATH); - for (String lib : libs.split(",")) { - File file = new File(bootDir, lib); - remoteContentToFile(BATCH_PATH + lib, file); - files.add(file); - } - return files; - } catch (Exception e) { - throw new BootstrapException(e); - } - } -} diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperIOUtils.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperIOUtils.java deleted file mode 100644 index e0dbe70478c..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperIOUtils.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import java.io.*; - -public final class BootstrapperIOUtils { - - private BootstrapperIOUtils() { - // only static methods - } - - /** - * The default buffer size to use. - */ - private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; - - /** - * Unconditionally close a Closeable. - */ - public static void closeQuietly(Closeable closeable) { - try { - if (closeable != null) { - closeable.close(); - } - } catch (IOException ioe) { // NOSONAR - } - } - - /** - * Get the contents of a Reader as a String. - */ - public static String toString(Reader input) throws IOException { - StringWriter sw = new StringWriter(); - copyLarge(input, sw); - return sw.toString(); - } - - /** - * Copy bytes from an InputStream to an OutputStream. - */ - public static long copyLarge(InputStream input, OutputStream output) throws IOException { - byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; - long count = 0; - int n = 0; - while (-1 != (n = input.read(buffer))) { - output.write(buffer, 0, n); - count += n; - } - return count; - } - - /** - * Copy chars from a Reader to a Writer. - */ - public static long copyLarge(Reader input, Writer output) throws IOException { - char[] buffer = new char[DEFAULT_BUFFER_SIZE]; - long count = 0; - int n = 0; - while (-1 != (n = input.read(buffer))) { - output.write(buffer, 0, n); - count += n; - } - return count; - } - - /** - * Deletes a file (not a directory). - */ - public static boolean deleteFileQuietly(File file) { - if (file == null) { - return false; - } - try { - return file.delete(); - } catch (Exception e) { - return false; - } - } - -} diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperVersion.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperVersion.java deleted file mode 100644 index 84e408b1a20..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/BootstrapperVersion.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -public enum BootstrapperVersion { - - INSTANCE; - - private static final String PROPERTIES_PATH = "/org/sonar/batch/bootstrapper/version.txt"; - private String version; - - public static String getVersion() { - return INSTANCE.version; - } - - private BootstrapperVersion() { - InputStream input = getClass().getResourceAsStream(PROPERTIES_PATH); - try { - Properties properties = new Properties(); - properties.load(input); - this.version = properties.getProperty("version"); - - } catch (IOException e) { - // Can not load the version - this.version = ""; - - } finally { - BootstrapperIOUtils.closeQuietly(input); - } - } -} diff --git a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/package-info.java b/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/package-info.java deleted file mode 100644 index 7e5aa05f58d..00000000000 --- a/sonar-batch-bootstrapper/src/main/java/org/sonar/batch/bootstrapper/package-info.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ - -/** - * Provides API to bootstrap Sonar Batch. - */ -package org.sonar.batch.bootstrapper; \ No newline at end of file diff --git a/sonar-batch-bootstrapper/src/main/resources/org/sonar/batch/bootstrapper/version.txt b/sonar-batch-bootstrapper/src/main/resources/org/sonar/batch/bootstrapper/version.txt deleted file mode 100644 index defbd48204e..00000000000 --- a/sonar-batch-bootstrapper/src/main/resources/org/sonar/batch/bootstrapper/version.txt +++ /dev/null @@ -1 +0,0 @@ -version=${project.version} diff --git a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapClassLoaderTest.java b/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapClassLoaderTest.java deleted file mode 100644 index 05c4718b4a2..00000000000 --- a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapClassLoaderTest.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import static org.fest.assertions.Assertions.assertThat; - -public class BootstrapClassLoaderTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void shouldRestrictLoadingFromParent() throws Exception { - BootstrapClassLoader classLoader = new BootstrapClassLoader(getClass().getClassLoader(), "org.sonar.ant"); - assertThat(classLoader.canLoadFromParent("org.sonar.ant.Launcher")).isTrue(); - assertThat(classLoader.canLoadFromParent("org.objectweb.asm.ClassVisitor")).isFalse(); - } - - @Test - public void use_isolated_system_classloader_when_parent_is_excluded() throws ClassNotFoundException { - thrown.expect(ClassNotFoundException.class); - thrown.expectMessage("org.junit.Test"); - ClassLoader parent = getClass().getClassLoader(); - BootstrapClassLoader classLoader = new BootstrapClassLoader(parent); - - // JUnit is available in the parent classloader (classpath used to execute this test) but not in the core JVM - assertThat(classLoader.loadClass("java.lang.String", false)).isNotNull(); - classLoader.loadClass("org.junit.Test", false); - } - - @Test - public void find_in_parent_when_matches_unmasked_packages() throws ClassNotFoundException { - ClassLoader parent = getClass().getClassLoader(); - BootstrapClassLoader classLoader = new BootstrapClassLoader(parent, "org.junit"); - - // JUnit is available in the parent classloader (classpath used to execute this test) but not in the core JVM - assertThat(classLoader.loadClass("org.junit.Test", false)).isNotNull(); - } -} diff --git a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperTest.java b/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperTest.java deleted file mode 100644 index d649b4e3faa..00000000000 --- a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import org.junit.Test; - -import java.io.File; -import java.io.IOException; - -import static org.fest.assertions.Assertions.assertThat; - -public class BootstrapperTest { - - @Test - public void shouldRemoveLastUrlSlash() { - Bootstrapper bootstrapper = new Bootstrapper("", "http://test/", new File("target")); - assertThat(bootstrapper.getServerUrl()).isEqualTo("http://test"); - } - - @Test(expected = Exception.class) - public void shouldFailIfCanNotConnectServer() { - Bootstrapper bootstrapper = new Bootstrapper("", "http://unknown.foo", new File("target")); - bootstrapper.getServerVersion(); - } - - @Test - public void shouldReturnUserAgent() { - Bootstrapper bootstrapper = new Bootstrapper("test/0.1", "http://unknown.foo", new File("target")); - String userAgent = bootstrapper.getUserAgent(); - - assertThat(userAgent.length()).isGreaterThan(0); - assertThat(userAgent).startsWith("sonar-bootstrapper/"); - assertThat(userAgent).endsWith(" test/0.1"); - } - - @Test - public void shouldReturnValidVersion() { - Bootstrapper bootstrapper = new Bootstrapper("", "http://test", new File("target")) { - @Override - String remoteContent(String path) throws IOException { - return "2.6"; - } - }; - assertThat(bootstrapper.getServerVersion()).isEqualTo("2.6"); - } - -} diff --git a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperVersionTest.java b/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperVersionTest.java deleted file mode 100644 index f9a7651f2f7..00000000000 --- a/sonar-batch-bootstrapper/src/test/java/org/sonar/batch/bootstrapper/BootstrapperVersionTest.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.batch.bootstrapper; - -import org.junit.Test; - -import static org.fest.assertions.Assertions.assertThat; - -public class BootstrapperVersionTest { - - @Test - public void shouldLoadVersion() { - String version = BootstrapperVersion.getVersion(); - assertThat(version).contains("."); - assertThat(version).doesNotContain("$"); - } - -} -- 2.39.5