Signed-off-by: Andrew DeMaria <lostonamountain@gmail.com>master
parent
18e793c64d
commit
667367280f
@ -0,0 +1,32 @@ |
|||||||
|
package org.libresonic.player.service; |
||||||
|
|
||||||
|
import junit.framework.TestCase; |
||||||
|
import org.apache.commons.io.FileUtils; |
||||||
|
import org.libresonic.player.TestCaseUtils; |
||||||
|
import org.springframework.context.ApplicationContext; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
|
||||||
|
public class StartupTestCase extends TestCase { |
||||||
|
|
||||||
|
private static String baseResources = "/org/libresonic/player/service/mediaScannerServiceTestCase/"; |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void setUp() throws Exception { |
||||||
|
super.setUp(); |
||||||
|
} |
||||||
|
|
||||||
|
public void testStartup() throws Exception { |
||||||
|
String homeParent = TestCaseUtils.libresonicHomePathForTest(); |
||||||
|
System.setProperty("libresonic.home", TestCaseUtils.libresonicHomePathForTest()); |
||||||
|
TestCaseUtils.cleanLibresonicHomeForTest(); |
||||||
|
File dbDirectory = new File(homeParent, "/db"); |
||||||
|
FileUtils.forceMkdir(dbDirectory); |
||||||
|
org.libresonic.player.util.FileUtils.copyResourcesRecursively(getClass().getResource("/db/pre-liquibase/db"), new File(homeParent)); |
||||||
|
|
||||||
|
// load spring context
|
||||||
|
ApplicationContext context = TestCaseUtils.loadSpringApplicationContext(baseResources); |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,123 @@ |
|||||||
|
package org.libresonic.player.util; |
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils; |
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.io.FileInputStream; |
||||||
|
import java.io.FileNotFoundException; |
||||||
|
import java.io.FileOutputStream; |
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
import java.io.OutputStream; |
||||||
|
import java.net.JarURLConnection; |
||||||
|
import java.net.URL; |
||||||
|
import java.net.URLConnection; |
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.jar.JarEntry; |
||||||
|
import java.util.jar.JarFile; |
||||||
|
|
||||||
|
public class FileUtils { |
||||||
|
public static boolean copyFile(final File toCopy, final File destFile) { |
||||||
|
try { |
||||||
|
return FileUtils.copyStream(new FileInputStream(toCopy), new FileOutputStream(destFile)); |
||||||
|
} catch (final FileNotFoundException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean copyFilesRecusively( |
||||||
|
final File toCopy, final File destDir |
||||||
|
) { |
||||||
|
assert destDir.isDirectory(); |
||||||
|
|
||||||
|
if (!toCopy.isDirectory()) { |
||||||
|
return FileUtils.copyFile(toCopy, new File(destDir, toCopy.getName())); |
||||||
|
} else { |
||||||
|
final File newDestDir = new File(destDir, toCopy.getName()); |
||||||
|
if (!newDestDir.exists() && !newDestDir.mkdir()) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
for (final File child : toCopy.listFiles()) { |
||||||
|
if (!FileUtils.copyFilesRecusively(child, newDestDir)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean copyJarResourcesRecursively( |
||||||
|
final File destDir, final JarURLConnection jarConnection |
||||||
|
) throws IOException { |
||||||
|
|
||||||
|
final JarFile jarFile = jarConnection.getJarFile(); |
||||||
|
|
||||||
|
for (final Enumeration<JarEntry> e = jarFile.entries(); e.hasMoreElements(); ) { |
||||||
|
final JarEntry entry = e.nextElement(); |
||||||
|
if (entry.getName().startsWith(jarConnection.getEntryName())) { |
||||||
|
final String filename = StringUtils.removeStart( |
||||||
|
entry.getName(), //
|
||||||
|
jarConnection.getEntryName()); |
||||||
|
|
||||||
|
final File f = new File(destDir, filename); |
||||||
|
if (!entry.isDirectory()) { |
||||||
|
final InputStream entryInputStream = jarFile.getInputStream(entry); |
||||||
|
if (!FileUtils.copyStream(entryInputStream, f)) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
entryInputStream.close(); |
||||||
|
} else { |
||||||
|
if (!FileUtils.ensureDirectoryExists(f)) { |
||||||
|
throw new IOException("Could not create directory: " + f.getAbsolutePath()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public static boolean copyResourcesRecursively(final URL originUrl, final File destination) { |
||||||
|
try { |
||||||
|
final URLConnection urlConnection = originUrl.openConnection(); |
||||||
|
if (urlConnection instanceof JarURLConnection) { |
||||||
|
return FileUtils.copyJarResourcesRecursively(destination, (JarURLConnection) urlConnection); |
||||||
|
} else { |
||||||
|
return FileUtils.copyFilesRecusively(new File(originUrl.getPath()), destination); |
||||||
|
} |
||||||
|
} catch (final IOException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean copyStream(final InputStream is, final File f) { |
||||||
|
try { |
||||||
|
return FileUtils.copyStream(is, new FileOutputStream(f)); |
||||||
|
} catch (final FileNotFoundException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean copyStream(final InputStream is, final OutputStream os) { |
||||||
|
try { |
||||||
|
final byte[] buf = new byte[1024]; |
||||||
|
|
||||||
|
int len = 0; |
||||||
|
while ((len = is.read(buf)) > 0) { |
||||||
|
os.write(buf, 0, len); |
||||||
|
} |
||||||
|
is.close(); |
||||||
|
os.close(); |
||||||
|
return true; |
||||||
|
} catch (final IOException e) { |
||||||
|
e.printStackTrace(); |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
private static boolean ensureDirectoryExists(final File f) { |
||||||
|
return f.exists() || f.mkdir(); |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -0,0 +1,17 @@ |
|||||||
|
#HSQL Database Engine 1.8.0.5 |
||||||
|
#Sun Dec 18 21:11:59 MST 2016 |
||||||
|
hsqldb.script_format=0 |
||||||
|
runtime.gc_interval=0 |
||||||
|
sql.enforce_strict_size=false |
||||||
|
hsqldb.cache_size_scale=8 |
||||||
|
readonly=false |
||||||
|
hsqldb.nio_data_file=true |
||||||
|
hsqldb.cache_scale=14 |
||||||
|
version=1.8.0 |
||||||
|
hsqldb.default_table_type=memory |
||||||
|
hsqldb.cache_file_scale=1 |
||||||
|
hsqldb.log_size=200 |
||||||
|
modified=yes |
||||||
|
hsqldb.cache_version=1.7.0 |
||||||
|
hsqldb.original_version=1.8.0 |
||||||
|
hsqldb.compatible_version=1.8.0 |
Loading…
Reference in new issue