diff options
Diffstat (limited to 'hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java')
-rw-r--r-- | hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java b/hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java index 6c80563119a..966f96d82c3 100644 --- a/hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java +++ b/hostsidetests/scopedstorage/device/src/android/scopedstorage/cts/device/ScopedStorageDeviceTest.java @@ -74,7 +74,6 @@ import static android.scopedstorage.cts.lib.TestUtils.installAppWithStoragePermi import static android.scopedstorage.cts.lib.TestUtils.isAppInstalled; import static android.scopedstorage.cts.lib.TestUtils.listAs; import static android.scopedstorage.cts.lib.TestUtils.openWithMediaProvider; -import static android.scopedstorage.cts.lib.TestUtils.pollForExternalStorageState; import static android.scopedstorage.cts.lib.TestUtils.queryFile; import static android.scopedstorage.cts.lib.TestUtils.queryFileExcludingPending; import static android.scopedstorage.cts.lib.TestUtils.queryImageFile; @@ -82,7 +81,6 @@ import static android.scopedstorage.cts.lib.TestUtils.queryVideoFile; import static android.scopedstorage.cts.lib.TestUtils.readExifMetadataFromTestApp; import static android.scopedstorage.cts.lib.TestUtils.revokePermission; import static android.scopedstorage.cts.lib.TestUtils.setAttrAs; -import static android.scopedstorage.cts.lib.TestUtils.setupDefaultDirectories; import static android.scopedstorage.cts.lib.TestUtils.uninstallApp; import static android.scopedstorage.cts.lib.TestUtils.uninstallAppNoThrow; import static android.scopedstorage.cts.lib.TestUtils.updateDisplayNameWithMediaProvider; @@ -119,14 +117,12 @@ import android.os.FileUtils; import android.os.ParcelFileDescriptor; import android.os.Process; import android.provider.MediaStore; -import android.scopedstorage.cts.lib.TestUtils; import android.system.ErrnoException; import android.system.Os; import android.system.StructStat; import android.util.Log; import androidx.annotation.Nullable; -import androidx.test.runner.AndroidJUnit4; import com.android.cts.install.lib.TestApp; @@ -137,6 +133,9 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameter; +import org.junit.runners.Parameterized.Parameters; import java.io.File; import java.io.FileDescriptor; @@ -153,8 +152,8 @@ import java.util.List; /** * Device-side test suite to verify scoped storage business logic. */ -@RunWith(AndroidJUnit4.class) -public class ScopedStorageDeviceTest { +@RunWith(Parameterized.class) +public class ScopedStorageDeviceTest extends ScopedStorageBaseDeviceTest { public static final String STR_DATA1 = "Just some random text"; public static final byte[] BYTES_DATA1 = STR_DATA1.getBytes(); @@ -209,20 +208,12 @@ public class ScopedStorageDeviceTest { private static final String OPSTR_MANAGE_EXTERNAL_STORAGE = permissionToOp(Manifest.permission.MANAGE_EXTERNAL_STORAGE); - @BeforeClass - public static void verifyTestsWillRunOnPrimaryVolume() throws Exception { - TestUtils.resetDefaultExternalStorageVolume(); - TestUtils.assertDefaultVolumeIsPrimary(); - } + @Parameter(0) + public String mVolumeName; - @BeforeClass - public static void createPublicVolume() throws Exception { - // Create a public volume. It's not used in this test right now, but it makes for a less - // flaky test to create here. ScopedStoragePublicVolumeDeviceTest will be folded into - // this test later, as a prametererized option, as tracked in b/159593019. - if (TestUtils.getCurrentPublicVolumeName() == null) { - TestUtils.createNewPublicVolume(); - } + @Parameters + public static Iterable<? extends Object> data() { + return ScopedStorageDeviceTest.getTestParameters(); } @BeforeClass @@ -245,14 +236,6 @@ public class ScopedStorageDeviceTest { Manifest.permission.WRITE_EXTERNAL_STORAGE)).isTrue(); } - @BeforeClass - public static void setupStorage() throws Exception { - if (!getContext().getPackageManager().isInstantApp()) { - pollForExternalStorageState(); - getExternalFilesDir().mkdirs(); - } - } - @After public void tearDown() throws Exception { executeShellCommand("rm -r /sdcard/Android/data/com.android.shell"); @@ -260,7 +243,8 @@ public class ScopedStorageDeviceTest { @Before public void setupExternalStorage() { - setupDefaultDirectories(); + super.setupExternalStorage(mVolumeName); + Log.i(TAG, "Using volume : " + mVolumeName); } /** @@ -1113,6 +1097,36 @@ public class ScopedStorageDeviceTest { } } + @Test + public void testInsertDefaultPrimaryCaseInsensitiveCheck() throws Exception { + final File podcastsDir = getPodcastsDir(); + final File podcastsDirLowerCase = + new File(getExternalStorageDir(), Environment.DIRECTORY_PODCASTS.toLowerCase()); + final File fileInPodcastsDirLowerCase = new File(podcastsDirLowerCase, AUDIO_FILE_NAME); + try { + // Delete the directory if it already exists + if (podcastsDir.exists()) { + deleteAsLegacyApp(podcastsDir); + } + assertThat(podcastsDir.exists()).isFalse(); + assertThat(podcastsDirLowerCase.exists()).isFalse(); + + // Create the directory with lower case + assertThat(podcastsDirLowerCase.mkdir()).isTrue(); + // Because of case-insensitivity, even though directory is created + // with lower case, we should be able to see both directory names. + assertThat(podcastsDirLowerCase.exists()).isTrue(); + assertThat(podcastsDir.exists()).isTrue(); + + // File creation with lower case path of podcasts directory should not fail + assertThat(fileInPodcastsDirLowerCase.createNewFile()).isTrue(); + } finally { + fileInPodcastsDirLowerCase.delete(); + deleteAsLegacyApp(podcastsDirLowerCase); + podcastsDir.mkdirs(); + } + } + private void createDeleteCreate(File create, File delete) throws Exception { try { assertThat(create.createNewFile()).isTrue(); |