Use symlink instead of hardlink, which was accidentally used on API < 19.
At the same time, also changed visibility of methods to package local to remove need for test class.
This commit is contained in:
parent
95d8537187
commit
64bc13de8a
@ -1,27 +0,0 @@
|
||||
package org.fdroid.fdroid.compat;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.os.Build;
|
||||
|
||||
import org.fdroid.fdroid.data.SanitizedFile;
|
||||
|
||||
/**
|
||||
* Used to expose the protected methods from FileCompat in a public manner so
|
||||
* that they can be called from a test harness.
|
||||
*/
|
||||
public class FileCompatForTest extends FileCompat {
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
public static void symlinkOsTest(SanitizedFile source, SanitizedFile dest) {
|
||||
symlinkOs(source, dest);
|
||||
}
|
||||
|
||||
public static void symlinkRuntimeTest(SanitizedFile source, SanitizedFile dest) {
|
||||
symlinkRuntime(source, dest);
|
||||
}
|
||||
|
||||
public static void symlinkLibcoreTest(SanitizedFile source, SanitizedFile dest) {
|
||||
symlinkLibcore(source, dest);
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package org.fdroid.fdroid;
|
||||
package org.fdroid.fdroid.compat;
|
||||
|
||||
import android.app.Instrumentation;
|
||||
import android.content.Context;
|
||||
@ -9,7 +9,7 @@ import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
import android.util.Log;
|
||||
|
||||
import org.fdroid.fdroid.compat.FileCompatForTest;
|
||||
import org.fdroid.fdroid.Utils;
|
||||
import org.fdroid.fdroid.data.SanitizedFile;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
@ -64,21 +64,21 @@ public class FileCompatTest {
|
||||
|
||||
@Test
|
||||
public void testSymlinkRuntime() {
|
||||
FileCompatForTest.symlinkRuntimeTest(sourceFile, destFile);
|
||||
FileCompat.symlinkRuntime(sourceFile, destFile);
|
||||
assertTrue(destFile.getAbsolutePath() + " should exist after symlinking", destFile.exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSymlinkLibcore() {
|
||||
assumeTrue(Build.VERSION.SDK_INT >= 19);
|
||||
FileCompatForTest.symlinkLibcoreTest(sourceFile, destFile);
|
||||
FileCompat.symlinkLibcore(sourceFile, destFile);
|
||||
assertTrue(destFile.getAbsolutePath() + " should exist after symlinking", destFile.exists());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSymlinkOs() {
|
||||
assumeTrue(Build.VERSION.SDK_INT >= 21);
|
||||
FileCompatForTest.symlinkOsTest(sourceFile, destFile);
|
||||
FileCompat.symlinkOs(sourceFile, destFile);
|
||||
assertTrue(destFile.getAbsolutePath() + " should exist after symlinking", destFile.exists());
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ public class FileCompat {
|
||||
private static class Symlink21 {
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
public void symlink(SanitizedFile source, SanitizedFile dest) {
|
||||
void symlink(SanitizedFile source, SanitizedFile dest) {
|
||||
try {
|
||||
android.system.Os.symlink(source.getAbsolutePath(), dest.getAbsolutePath());
|
||||
} catch (ErrnoException e) {
|
||||
@ -54,13 +54,14 @@ public class FileCompat {
|
||||
}
|
||||
|
||||
@TargetApi(21)
|
||||
protected static void symlinkOs(SanitizedFile source, SanitizedFile dest) {
|
||||
static void symlinkOs(SanitizedFile source, SanitizedFile dest) {
|
||||
new Symlink21().symlink(source, dest);
|
||||
}
|
||||
|
||||
protected static void symlinkRuntime(SanitizedFile source, SanitizedFile dest) {
|
||||
static void symlinkRuntime(SanitizedFile source, SanitizedFile dest) {
|
||||
String[] commands = {
|
||||
FDroidApp.SYSTEM_DIR_NAME + "/bin/ln",
|
||||
"-s",
|
||||
source.getAbsolutePath(),
|
||||
dest.getAbsolutePath(),
|
||||
};
|
||||
@ -74,7 +75,7 @@ public class FileCompat {
|
||||
}
|
||||
}
|
||||
|
||||
protected static void symlinkLibcore(SanitizedFile source, SanitizedFile dest) {
|
||||
static void symlinkLibcore(SanitizedFile source, SanitizedFile dest) {
|
||||
try {
|
||||
Object os = Class.forName("libcore.io.Libcore").getField("os").get(null);
|
||||
Method symlink = os.getClass().getMethod("symlink", String.class, String.class);
|
||||
|
Loading…
x
Reference in New Issue
Block a user