mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2025-01-11 01:40:59 +00:00
Merge branch 'master' into dev
This commit is contained in:
commit
f7697007e5
@ -12,8 +12,8 @@ android {
|
|||||||
resValue "string", "app_name", "NewPipe"
|
resValue "string", "app_name", "NewPipe"
|
||||||
minSdkVersion 19
|
minSdkVersion 19
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 900
|
versionCode 910
|
||||||
versionName "0.19.0"
|
versionName "0.19.1"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
@ -25,6 +25,9 @@ class AppDatabaseTest {
|
|||||||
private const val DEFAULT_DURATION = 480L
|
private const val DEFAULT_DURATION = 480L
|
||||||
private const val DEFAULT_UPLOADER_NAME = "Uploader Test"
|
private const val DEFAULT_UPLOADER_NAME = "Uploader Test"
|
||||||
private const val DEFAULT_THUMBNAIL = "https://example.com/example.jpg"
|
private const val DEFAULT_THUMBNAIL = "https://example.com/example.jpg"
|
||||||
|
|
||||||
|
private const val DEFAULT_SECOND_SERVICE_ID = 0
|
||||||
|
private const val DEFAULT_SECOND_URL = "https://www.youtube.com/watch?v=ncQU6iBn5Fc"
|
||||||
}
|
}
|
||||||
|
|
||||||
@get:Rule val testHelper = MigrationTestHelper(InstrumentationRegistry.getInstrumentation(),
|
@get:Rule val testHelper = MigrationTestHelper(InstrumentationRegistry.getInstrumentation(),
|
||||||
@ -45,6 +48,26 @@ class AppDatabaseTest {
|
|||||||
put("uploader", DEFAULT_UPLOADER_NAME)
|
put("uploader", DEFAULT_UPLOADER_NAME)
|
||||||
put("thumbnail_url", DEFAULT_THUMBNAIL)
|
put("thumbnail_url", DEFAULT_THUMBNAIL)
|
||||||
})
|
})
|
||||||
|
insert("streams", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
||||||
|
// put("uid", null)
|
||||||
|
put("service_id", DEFAULT_SECOND_SERVICE_ID)
|
||||||
|
put("url", DEFAULT_SECOND_URL)
|
||||||
|
// put("title", null)
|
||||||
|
// put("stream_type", null)
|
||||||
|
// put("duration", null)
|
||||||
|
// put("uploader", null)
|
||||||
|
// put("thumbnail_url", null)
|
||||||
|
})
|
||||||
|
insert("streams", SQLiteDatabase.CONFLICT_FAIL, ContentValues().apply {
|
||||||
|
// put("uid", null)
|
||||||
|
put("service_id", DEFAULT_SERVICE_ID)
|
||||||
|
// put("url", null)
|
||||||
|
// put("title", null)
|
||||||
|
// put("stream_type", null)
|
||||||
|
// put("duration", null)
|
||||||
|
// put("uploader", null)
|
||||||
|
// put("thumbnail_url", null)
|
||||||
|
})
|
||||||
close()
|
close()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,9 +76,11 @@ class AppDatabaseTest {
|
|||||||
|
|
||||||
val migratedDatabaseV3 = getMigratedDatabase()
|
val migratedDatabaseV3 = getMigratedDatabase()
|
||||||
val listFromDB = migratedDatabaseV3.streamDAO().all.blockingFirst()
|
val listFromDB = migratedDatabaseV3.streamDAO().all.blockingFirst()
|
||||||
assertEquals(1, listFromDB.size)
|
|
||||||
|
|
||||||
val streamFromMigratedDatabase = listFromDB.first()
|
// Only expect 2, the one with the null url will be ignored
|
||||||
|
assertEquals(2, listFromDB.size)
|
||||||
|
|
||||||
|
val streamFromMigratedDatabase = listFromDB[0]
|
||||||
assertEquals(DEFAULT_SERVICE_ID, streamFromMigratedDatabase.serviceId)
|
assertEquals(DEFAULT_SERVICE_ID, streamFromMigratedDatabase.serviceId)
|
||||||
assertEquals(DEFAULT_URL, streamFromMigratedDatabase.url)
|
assertEquals(DEFAULT_URL, streamFromMigratedDatabase.url)
|
||||||
assertEquals(DEFAULT_TITLE, streamFromMigratedDatabase.title)
|
assertEquals(DEFAULT_TITLE, streamFromMigratedDatabase.title)
|
||||||
@ -67,6 +92,20 @@ class AppDatabaseTest {
|
|||||||
assertNull(streamFromMigratedDatabase.textualUploadDate)
|
assertNull(streamFromMigratedDatabase.textualUploadDate)
|
||||||
assertNull(streamFromMigratedDatabase.uploadDate)
|
assertNull(streamFromMigratedDatabase.uploadDate)
|
||||||
assertNull(streamFromMigratedDatabase.isUploadDateApproximation)
|
assertNull(streamFromMigratedDatabase.isUploadDateApproximation)
|
||||||
|
|
||||||
|
val secondStreamFromMigratedDatabase = listFromDB[1]
|
||||||
|
assertEquals(DEFAULT_SECOND_SERVICE_ID, secondStreamFromMigratedDatabase.serviceId)
|
||||||
|
assertEquals(DEFAULT_SECOND_URL, secondStreamFromMigratedDatabase.url)
|
||||||
|
assertEquals("", secondStreamFromMigratedDatabase.title)
|
||||||
|
// Should fallback to VIDEO_STREAM
|
||||||
|
assertEquals(StreamType.VIDEO_STREAM, secondStreamFromMigratedDatabase.streamType)
|
||||||
|
assertEquals(0, secondStreamFromMigratedDatabase.duration)
|
||||||
|
assertEquals("", secondStreamFromMigratedDatabase.uploader)
|
||||||
|
assertEquals("", secondStreamFromMigratedDatabase.thumbnailUrl)
|
||||||
|
assertNull(secondStreamFromMigratedDatabase.viewCount)
|
||||||
|
assertNull(secondStreamFromMigratedDatabase.textualUploadDate)
|
||||||
|
assertNull(secondStreamFromMigratedDatabase.uploadDate)
|
||||||
|
assertNull(secondStreamFromMigratedDatabase.isUploadDateApproximation)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getMigratedDatabase(): AppDatabase {
|
private fun getMigratedDatabase(): AppDatabase {
|
||||||
|
@ -81,8 +81,16 @@ public class Migrations {
|
|||||||
" duration INTEGER NOT NULL, uploader TEXT NOT NULL, thumbnail_url TEXT, view_count INTEGER, textual_upload_date TEXT, upload_date INTEGER," +
|
" duration INTEGER NOT NULL, uploader TEXT NOT NULL, thumbnail_url TEXT, view_count INTEGER, textual_upload_date TEXT, upload_date INTEGER," +
|
||||||
" is_upload_date_approximation INTEGER)");
|
" is_upload_date_approximation INTEGER)");
|
||||||
|
|
||||||
database.execSQL("INSERT INTO streams_new (uid, service_id, url, title, stream_type, duration, uploader, thumbnail_url, view_count, textual_upload_date, upload_date, is_upload_date_approximation)"+
|
database.execSQL("INSERT INTO streams_new (uid, service_id, url, title, stream_type," +
|
||||||
" SELECT uid, service_id, url, title, stream_type, duration, uploader, thumbnail_url, NULL, NULL, NULL, NULL FROM streams");
|
"duration, uploader, thumbnail_url, view_count," +
|
||||||
|
"textual_upload_date, upload_date, is_upload_date_approximation) " +
|
||||||
|
|
||||||
|
"SELECT uid, service_id, url, ifnull(title, ''), ifnull(stream_type, 'VIDEO_STREAM')," +
|
||||||
|
"ifnull(duration, 0), ifnull(uploader, ''), ifnull(thumbnail_url, ''), NULL," +
|
||||||
|
"NULL, NULL, NULL " +
|
||||||
|
|
||||||
|
"FROM streams " +
|
||||||
|
"WHERE url IS NOT NULL");
|
||||||
|
|
||||||
database.execSQL("DROP TABLE streams");
|
database.execSQL("DROP TABLE streams");
|
||||||
database.execSQL("ALTER TABLE streams_new RENAME TO streams");
|
database.execSQL("ALTER TABLE streams_new RENAME TO streams");
|
||||||
|
1
fastlane/metadata/android/en-US/changelogs/910.txt
Normal file
1
fastlane/metadata/android/en-US/changelogs/910.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Fixed database migration which prevented NewPipe from starting in some rare cases.
|
Loading…
Reference in New Issue
Block a user