Support running from JARs in JGitTestUtil
Buck invokes JUnit tests from compiled JARs, not class directories. When copying a resource back to the filesystem a jar: style URL is obtained from the ClassLoader. Change-Id: I28d702484ec13b0b309b87990da867050e4b5ec6
This commit is contained in:
parent
7f7dd171df
commit
573d36a464
|
@ -46,8 +46,10 @@
|
|||
package org.eclipse.jgit.junit;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.Writer;
|
||||
import java.lang.reflect.Method;
|
||||
|
@ -124,13 +126,44 @@ public static File getTestResourceFile(final String fileName) {
|
|||
// loaded previously
|
||||
return new File("tst", fileName);
|
||||
}
|
||||
if ("jar".equals(url.getProtocol())) {
|
||||
try {
|
||||
File tmp = File.createTempFile("tmp_", "_" + fileName);
|
||||
copyTestResource(fileName, tmp);
|
||||
return tmp;
|
||||
} catch (IOException err) {
|
||||
throw new RuntimeException("Cannot create temporary file", err);
|
||||
}
|
||||
}
|
||||
try {
|
||||
return new File(url.toURI());
|
||||
} catch (IllegalArgumentException e) {
|
||||
throw new IllegalArgumentException(e.getMessage() + " " + url);
|
||||
} catch (URISyntaxException e) {
|
||||
return new File(url.getPath());
|
||||
}
|
||||
}
|
||||
|
||||
public static void copyTestResource(String name, File dest)
|
||||
throws IOException {
|
||||
URL url = cl().getResource(CLASSPATH_TO_RESOURCES + name);
|
||||
if (url == null)
|
||||
throw new FileNotFoundException(name);
|
||||
InputStream in = url.openStream();
|
||||
try {
|
||||
FileOutputStream out = new FileOutputStream(dest);
|
||||
try {
|
||||
byte[] buf = new byte[4096];
|
||||
for (int n; (n = in.read(buf)) > 0;)
|
||||
out.write(buf, 0, n);
|
||||
} finally {
|
||||
out.close();
|
||||
}
|
||||
} finally {
|
||||
in.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static ClassLoader cl() {
|
||||
return JGitTestUtil.class.getClassLoader();
|
||||
}
|
||||
|
|
|
@ -66,11 +66,11 @@ public void setUp() throws Exception {
|
|||
};
|
||||
final File packDir = new File(db.getObjectDatabase().getDirectory(), "pack");
|
||||
for (String n : packs) {
|
||||
copyFile(JGitTestUtil.getTestResourceFile(n + ".pack"), new File(packDir, n + ".pack"));
|
||||
copyFile(JGitTestUtil.getTestResourceFile(n + ".idx"), new File(packDir, n + ".idx"));
|
||||
JGitTestUtil.copyTestResource(n + ".pack", new File(packDir, n + ".pack"));
|
||||
JGitTestUtil.copyTestResource(n + ".idx", new File(packDir, n + ".idx"));
|
||||
}
|
||||
|
||||
copyFile(JGitTestUtil.getTestResourceFile("packed-refs"), new File(db
|
||||
.getDirectory(), "packed-refs"));
|
||||
JGitTestUtil.copyTestResource("packed-refs",
|
||||
new File(db.getDirectory(), "packed-refs"));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue