mirror of
https://github.com/TeamAmaze/AmazeFileManager.git
synced 2026-10-23 08:49:18 +08:00
Dirty fix for ShadowContentResolver.openOutputStream(Uri, String)
For test to pass, by adding implementation.
This commit is contained in:
+27
-24
@@ -27,6 +27,30 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.amaze.filemanager.file_operations.exceptions.ShellNotRunningException;
|
||||
import com.amaze.filemanager.file_operations.exceptions.StreamNotFoundException;
|
||||
import com.amaze.filemanager.filesystem.EditableFileAbstraction;
|
||||
import com.amaze.filemanager.filesystem.FileUtil;
|
||||
import com.amaze.filemanager.filesystem.root.ConcatenateFileCommand;
|
||||
import com.amaze.filemanager.shadows.ShadowContentResolver;
|
||||
import com.amaze.filemanager.shadows.ShadowMultiDex;
|
||||
|
||||
import org.apache.ftpserver.util.IoUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.shadow.api.Shadow;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -38,31 +62,9 @@ import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.apache.ftpserver.util.IoUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
|
||||
import com.amaze.filemanager.file_operations.exceptions.ShellNotRunningException;
|
||||
import com.amaze.filemanager.file_operations.exceptions.StreamNotFoundException;
|
||||
import com.amaze.filemanager.filesystem.EditableFileAbstraction;
|
||||
import com.amaze.filemanager.filesystem.FileUtil;
|
||||
import com.amaze.filemanager.filesystem.root.ConcatenateFileCommand;
|
||||
import com.amaze.filemanager.shadows.ShadowMultiDex;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@Config(
|
||||
shadows = {ShadowMultiDex.class},
|
||||
shadows = {ShadowMultiDex.class, ShadowContentResolver.class},
|
||||
sdk = {JELLY_BEAN, KITKAT, P})
|
||||
public class WriteTextFileCallableTest {
|
||||
|
||||
@@ -75,7 +77,8 @@ public class WriteTextFileCallableTest {
|
||||
Context ctx = ApplicationProvider.getApplicationContext();
|
||||
ContentResolver cr = ctx.getContentResolver();
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
shadowOf(cr).registerOutputStream(uri, bout);
|
||||
ShadowContentResolver scr = Shadow.extract(cr);
|
||||
scr.registerOutputStream(uri, bout);
|
||||
|
||||
WriteTextFileCallable task =
|
||||
new WriteTextFileCallable(
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.amaze.filemanager.shadows
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import org.robolectric.annotation.Implementation
|
||||
import org.robolectric.annotation.Implements
|
||||
import org.robolectric.shadows.ShadowContentResolver
|
||||
import java.io.OutputStream
|
||||
|
||||
/**
|
||||
* [ShadowContentResolver] implementation to include
|
||||
* [ContentResolver.openOutputStream] with Uri and open mode arguments.
|
||||
*
|
||||
* @see ContentResolver.openOutputStream(uri, String)
|
||||
*/
|
||||
@Implements(ContentResolver::class)
|
||||
class ShadowContentResolver : ShadowContentResolver() {
|
||||
|
||||
/**
|
||||
* Implements [ContentResolver.openOutputStream] with open mode parameter.
|
||||
*
|
||||
* Simply delegate to one without open mode.
|
||||
*/
|
||||
@Implementation
|
||||
fun openOutputStream(uri: Uri, mode: String): OutputStream? = super.openOutputStream(uri)
|
||||
}
|
||||
Reference in New Issue
Block a user