diff --git a/.travis.yml b/.travis.yml index 4bc9d776a..9c05e3edb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,5 @@ before_install: - ( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | android update sdk --no-ui --all --force --filter build-tools-22.0.1,build-tools-21.1.2,build-tools-21.1.1,build-tools-19.1.0,android-22,android-21,android-19,platform-tools,extra-android-support,extra-android-m2repository install: echo "Installation done" script: - - ./gradlew assemble -S -q - - ./gradlew --info OpenKeychain-Test:testDebug + - ./gradlew testDebug jacocoTestReport coveralls --info diff --git a/OpenKeychain-Test/build.gradle b/OpenKeychain-Test/build.gradle deleted file mode 100644 index 2bf35b3d1..000000000 --- a/OpenKeychain-Test/build.gradle +++ /dev/null @@ -1,121 +0,0 @@ -buildscript { - repositories { - jcenter() - } - - dependencies { - // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information - classpath 'com.novoda:gradle-android-test-plugin:0.10.4' - } -} - -apply plugin: 'java' -apply plugin: 'android-test' -apply plugin: 'jacoco' - -dependencies { - testCompile 'junit:junit:4.11' - testCompile 'com.google.android:android:4.1.1.4' - testCompile('com.squareup:fest-android:1.0.8') { exclude module: 'support-v4' } - testCompile 'org.apache.maven:maven-ant-tasks:2.1.3' - testCompile ('org.robolectric:robolectric:2.4') { - exclude module: 'classworlds' - exclude module: 'maven-artifact' - exclude module: 'maven-artifact-manager' - exclude module: 'maven-error-diagnostics' - exclude module: 'maven-model' - exclude module: 'maven-plugin-registry' - exclude module: 'maven-profile' - exclude module: 'maven-project' - exclude module: 'maven-settings' - exclude module: 'nekohtml' - exclude module: 'plexus-container-default' - exclude module: 'plexus-interpolation' - exclude module: 'plexus-utils' - exclude module: 'support-v4' // crazy but my android studio don't like this dependency and to fix it remove .idea and re import project - exclude module: 'wagon-file' - exclude module: 'wagon-http-lightweight' - exclude module: 'wagon-http-shared' - exclude module: 'wagon-provider-api' - } -} - -test { - exclude '**/*$*' -} - -android { - projectUnderTest ':OpenKeychain' -} - -jacoco { - toolVersion = "0.7.2.201409121644" -} - - -def coverageSourceDirs = [ - '../OpenKeychain/src/main/java', - '../OpenKeychain/src/gen', - '../OpenKeychain/build/source/apt/debug', - '../OpenKeychain/build/source/generated/buildConfig/debug', - '../OpenKeychain/build/source/generated/r/debug' - ] - -jacocoTestReport { - reports { - xml.enabled = true - html.destination "${buildDir}/jacocoHtml" - } - // class R is used, but usage will not be covered, so ignore this class from report - classDirectories = fileTree(dir: '../OpenKeychain/build/intermediates/classes/debug/org/sufficientlysecure/keychain', exclude: [ 'R*.class' ]) - additionalSourceDirs = files(coverageSourceDirs) - executionData = files('build/jacoco/testDebug.exec') -} - -// new workaround to force add custom output dirs for android studio -task addTest { - def file = file(project.name + ".iml") - doLast { - try { - def parsedXml = (new XmlParser()).parse(file) - def node = parsedXml.component[1] - def outputNode = parsedXml.component[1].output[0] - def outputTestNode = parsedXml.component[1].'output-test'[0] - def rewrite = false - - new Node(node, 'sourceFolder', ['url': 'file://$MODULE_DIR$/' + "${it}", 'isTestSource': "true"]) - - if(outputNode == null) { - new Node(node, 'output', ['url': 'file://$MODULE_DIR$/build/resources/testDebug']) - } else { - if(outputNode.attributes['url'] != 'file://$MODULE_DIR$/build/resources/testDebug') { - outputNode.attributes = ['url': 'file://$MODULE_DIR$/build/resources/testDebug'] - rewrite = true - } - } - - if(outputTestNode == null) { - new Node(node, 'output-test', ['url': 'file://$MODULE_DIR$/build/test-classes/debug']) - } else { - if(outputTestNode.attributes['url'] != 'file://$MODULE_DIR$/build/test-classes/debug') { - outputTestNode.attributes = ['url': 'file://$MODULE_DIR$/build/test-classes/debug'] - rewrite = true - } - } - - if(rewrite) { - def writer = new StringWriter() - new XmlNodePrinter(new PrintWriter(writer)).print(parsedXml) - file.text = writer.toString() - } - } catch (FileNotFoundException e) { - // iml not found, common on command line only builds - } - - } -} - -// always do the addtest on prebuild -gradle.projectsEvaluated { - testDebugClasses.dependsOn(addTest) -} diff --git a/OpenKeychain/build.gradle b/OpenKeychain/build.gradle index a4caa1fe7..3c239d44b 100644 --- a/OpenKeychain/build.gradle +++ b/OpenKeychain/build.gradle @@ -1,5 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'witness' +apply plugin: 'jacoco' +apply plugin: 'com.github.kt3k.coveralls' dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information @@ -10,8 +12,15 @@ dependencies { compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.android.support:recyclerview-v7:22.1.0' compile 'com.android.support:cardview-v7:22.1.0' + + // Unit tests in the local JVM with Robolectric + // https://developer.android.com/training/testing/unit-testing/local-unit-tests.html + // https://github.com/nenick/AndroidStudioAndRobolectric + // http://www.vogella.com/tutorials/Robolectric/article.html + testCompile 'junit:junit:4.12' + testCompile 'org.robolectric:robolectric:3.0-rc3' - // UI testing libs + // UI testing with Espresso androidTestCompile 'com.android.support.test:runner:0.2' androidTestCompile 'com.android.support.test:rules:0.2' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.1' @@ -98,7 +107,9 @@ android { defaultConfig { minSdkVersion 15 targetSdkVersion 22 - + versionCode 32300 + versionName "3.2.3" + applicationId "org.sufficientlysecure.keychain" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } @@ -111,6 +122,26 @@ android { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + + // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE. + buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.account\"" + + // Reference them in .xml files. + resValue "string", "account_type", "org.sufficientlysecure.keychain.account" + } + + debug { + applicationIdSuffix ".debug" + + // Reference them in the java files with e.g. BuildConfig.ACCOUNT_TYPE. + buildConfigField "String", "ACCOUNT_TYPE", "\"org.sufficientlysecure.keychain.debug.account\"" + + // Reference them in .xml files. + resValue "string", "account_type", "org.sufficientlysecure.keychain.debug.account" + + // Disabled: only works for androidTest not test! + // Enable code coverage (Jacoco) + //testCoverageEnabled true } } @@ -163,6 +194,37 @@ android { } } +task jacocoTestReport(type:JacocoReport) { + group = "Reporting" + description = "Generate Jacoco coverage reports" + + classDirectories = fileTree( + dir: "${buildDir}/intermediates/classes/debug", + excludes: ['**/R.class', + '**/R$*.class', + '**/*$ViewInjector*.*', + '**/BuildConfig.*', + '**/Manifest*.*'] + ) + + sourceDirectories = files("${buildDir.parent}/src/main/java") + additionalSourceDirs = files([ + "${buildDir}/generated/source/buildConfig/debug", + "${buildDir}/generated/source/r/debug" + ]) + executionData = files("${buildDir}/jacoco/testDebug.exec") + + reports { + xml.enabled = true + html.enabled = true + } +} + +// Fix for: No report file available: [/home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/cobertura/coverage.xml, /home/travis/build/open-keychain/open-keychain/OpenKeychain/build/reports/jacoco/test/jacocoTestReport.xml] +coveralls { + jacocoReportPath 'build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml' +} + // NOTE: This disables Lint! tasks.whenTaskAdded { task -> if (task.name.contains('lint')) { diff --git a/OpenKeychain/src/debug/res/drawable-hdpi/ic_launcher.png b/OpenKeychain/src/debug/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 000000000..bb5104aec Binary files /dev/null and b/OpenKeychain/src/debug/res/drawable-hdpi/ic_launcher.png differ diff --git a/OpenKeychain/src/debug/res/drawable-mdpi/ic_launcher.png b/OpenKeychain/src/debug/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 000000000..e709f735d Binary files /dev/null and b/OpenKeychain/src/debug/res/drawable-mdpi/ic_launcher.png differ diff --git a/OpenKeychain/src/debug/res/drawable-xhdpi/ic_launcher.png b/OpenKeychain/src/debug/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 000000000..fb4f2737a Binary files /dev/null and b/OpenKeychain/src/debug/res/drawable-xhdpi/ic_launcher.png differ diff --git a/OpenKeychain/src/debug/res/drawable-xxhdpi/ic_launcher.png b/OpenKeychain/src/debug/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..37d0958ff Binary files /dev/null and b/OpenKeychain/src/debug/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/OpenKeychain/src/debug/res/drawable-xxxhdpi/ic_launcher.png b/OpenKeychain/src/debug/res/drawable-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..e5183fb05 Binary files /dev/null and b/OpenKeychain/src/debug/res/drawable-xxxhdpi/ic_launcher.png differ diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml index f10547a0b..75d94ae69 100644 --- a/OpenKeychain/src/main/AndroidManifest.xml +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -2,9 +2,7 @@ + android:installLocation="auto"> @@ -808,9 +803,9 @@ + android:writePermission="${applicationId}.WRITE_TEMPORARY_STORAGE" /> diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 3aa58d024..b6e6a819f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -31,14 +31,17 @@ public final class Constants { public static final boolean DEBUG_LOG_DB_QUERIES = false; public static final boolean DEBUG_SYNC_REMOVE_CONTACTS = false; - public static final String TAG = "Keychain"; + public static final String TAG = DEBUG ? "Keychain D" : "Keychain"; public static final String PACKAGE_NAME = "org.sufficientlysecure.keychain"; - public static final String ACCOUNT_NAME = "OpenKeychain"; - public static final String ACCOUNT_TYPE = PACKAGE_NAME + ".account"; + public static final String ACCOUNT_NAME = DEBUG ? "OpenKeychain D" : "OpenKeychain"; + public static final String ACCOUNT_TYPE = BuildConfig.ACCOUNT_TYPE; public static final String CUSTOM_CONTACT_DATA_MIME_TYPE = "vnd.android.cursor.item/vnd.org.sufficientlysecure.keychain.key"; + public static final String PROVIDER_AUTHORITY = BuildConfig.APPLICATION_ID + ".provider"; + public static final String TEMPSTORAGE_AUTHORITY = BuildConfig.APPLICATION_ID + ".tempstorage"; + // as defined in http://tools.ietf.org/html/rfc3156, section 7 public static final String NFC_MIME = "application/pgp-keys"; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java index 710dbf8aa..98f19e98f 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/KeychainApplication.java @@ -128,8 +128,6 @@ public class KeychainApplication extends Application { /** * Add OpenKeychain account to Android to link contacts with keys - * - * @param context */ public static void setupAccountAsNeeded(Context context) { try { @@ -165,7 +163,7 @@ public class KeychainApplication extends Application { int edgeDrawableId = context.getResources().getIdentifier("overscroll_edge", "drawable", "android"); Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId); androidEdge.setColorFilter(brandColor, PorterDuff.Mode.SRC_IN); - } catch (Resources.NotFoundException e) { + } catch (Exception ignored) { } } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java index d5283f01f..0d9a4ac16 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainContract.java @@ -90,7 +90,7 @@ public class KeychainContract { String PACKAGE_NAME = "package_name"; // foreign key to api_apps.package_name } - public static final String CONTENT_AUTHORITY = Constants.PACKAGE_NAME + ".provider"; + public static final String CONTENT_AUTHORITY = Constants.PROVIDER_AUTHORITY; private static final Uri BASE_CONTENT_URI_INTERNAL = Uri .parse("content://" + CONTENT_AUTHORITY); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryStorageProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryStorageProvider.java index a3d00a9a7..74f7c6513 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryStorageProvider.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/TemporaryStorageProvider.java @@ -45,7 +45,8 @@ public class TemporaryStorageProvider extends ContentProvider { private static final String COLUMN_ID = "id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_TIME = "time"; - private static final Uri BASE_URI = Uri.parse("content://org.sufficientlysecure.keychain.tempstorage/"); + public static final String CONTENT_AUTHORITY = Constants.TEMPSTORAGE_AUTHORITY; + private static final Uri BASE_URI = Uri.parse("content://" + CONTENT_AUTHORITY); private static final int DB_VERSION = 2; private static File cacheDir; diff --git a/OpenKeychain/src/main/res/xml/account_desc.xml b/OpenKeychain/src/main/res/xml/account_desc.xml index d29395202..6d8d76b02 100644 --- a/OpenKeychain/src/main/res/xml/account_desc.xml +++ b/OpenKeychain/src/main/res/xml/account_desc.xml @@ -1,5 +1,5 @@ diff --git a/OpenKeychain/src/main/res/xml/sync_adapter_desc.xml b/OpenKeychain/src/main/res/xml/sync_adapter_desc.xml index 6871e1a5d..a134fdebe 100644 --- a/OpenKeychain/src/main/res/xml/sync_adapter_desc.xml +++ b/OpenKeychain/src/main/res/xml/sync_adapter_desc.xml @@ -1,7 +1,7 @@ cache = new ParcelableFileCache(Robolectric.application, "test.pcl"); + ParcelableFileCache cache = new ParcelableFileCache(RuntimeEnvironment.application, "test.pcl"); ArrayList list = new ArrayList(); diff --git a/OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/util/TestingUtils.java b/OpenKeychain/src/test/java/org/sufficientlysecure/keychain/util/TestingUtils.java similarity index 100% rename from OpenKeychain-Test/src/test/java/org/sufficientlysecure/keychain/util/TestingUtils.java rename to OpenKeychain/src/test/java/org/sufficientlysecure/keychain/util/TestingUtils.java diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/COPYING b/OpenKeychain/src/test/resources/OpenPGP-Haskell/COPYING similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/COPYING rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/COPYING diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/README b/OpenKeychain/src/test/resources/OpenPGP-Haskell/README similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/README rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/README diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000001-006.public_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000001-006.public_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000001-006.public_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000001-006.public_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000002-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000002-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000002-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000002-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000003-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000003-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000003-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000003-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000004-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000004-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000004-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000004-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000005-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000005-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000005-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000005-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000006-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000006-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000006-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000006-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000007-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000007-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000007-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000007-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000008-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000008-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000008-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000008-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000009-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000009-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000009-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000009-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000010-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000010-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000010-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000010-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000011-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000011-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000011-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000011-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000012-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000012-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000012-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000012-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000013-014.public_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000013-014.public_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000013-014.public_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000013-014.public_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000014-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000014-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000014-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000014-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000015-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000015-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000015-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000015-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000016-006.public_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000016-006.public_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000016-006.public_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000016-006.public_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000017-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000017-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000017-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000017-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000018-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000018-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000018-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000018-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000019-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000019-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000019-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000019-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000020-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000020-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000020-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000020-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000021-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000021-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000021-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000021-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000022-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000022-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000022-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000022-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000023-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000023-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000023-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000023-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000024-014.public_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000024-014.public_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000024-014.public_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000024-014.public_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000025-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000025-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000025-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000025-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000026-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000026-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000026-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000026-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000027-006.public_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000027-006.public_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000027-006.public_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000027-006.public_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000028-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000028-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000028-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000028-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000029-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000029-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000029-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000029-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000030-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000030-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000030-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000030-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000031-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000031-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000031-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000031-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000032-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000032-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000032-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000032-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000033-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000033-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000033-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000033-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000034-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000034-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000034-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000034-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000035-006.public_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000035-006.public_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000035-006.public_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000035-006.public_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000036-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000036-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000036-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000036-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000037-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000037-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000037-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000037-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000038-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000038-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000038-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000038-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000039-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000039-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000039-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000039-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000040-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000040-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000040-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000040-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000041-017.attribute b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000041-017.attribute similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000041-017.attribute rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000041-017.attribute diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000042-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000042-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000042-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000042-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000043-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000043-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000043-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000043-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000044-014.public_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000044-014.public_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000044-014.public_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000044-014.public_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000045-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000045-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000045-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000045-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000046-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000046-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000046-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000046-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000047-005.secret_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000047-005.secret_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000047-005.secret_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000047-005.secret_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000048-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000048-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000048-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000048-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000049-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000049-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000049-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000049-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000050-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000050-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000050-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000050-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000051-007.secret_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000051-007.secret_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000051-007.secret_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000051-007.secret_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000052-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000052-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000052-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000052-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000053-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000053-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000053-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000053-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000054-005.secret_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000054-005.secret_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000054-005.secret_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000054-005.secret_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000055-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000055-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000055-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000055-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000056-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000056-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000056-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000056-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000057-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000057-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000057-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000057-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000058-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000058-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000058-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000058-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000059-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000059-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000059-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000059-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000060-007.secret_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000060-007.secret_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000060-007.secret_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000060-007.secret_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000061-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000061-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000061-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000061-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000062-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000062-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000062-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000062-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000063-005.secret_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000063-005.secret_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000063-005.secret_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000063-005.secret_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000064-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000064-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000064-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000064-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000065-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000065-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000065-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000065-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000066-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000066-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000066-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000066-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000067-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000067-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000067-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000067-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000068-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000068-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000068-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000068-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000069-005.secret_key b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000069-005.secret_key similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000069-005.secret_key rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000069-005.secret_key diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000070-013.user_id b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000070-013.user_id similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000070-013.user_id rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000070-013.user_id diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000071-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000071-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000071-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000071-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000072-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000072-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000072-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000072-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000073-017.attribute b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000073-017.attribute similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000073-017.attribute rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000073-017.attribute diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000074-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000074-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000074-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000074-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000075-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000075-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000075-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000075-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000076-007.secret_subkey b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000076-007.secret_subkey similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000076-007.secret_subkey rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000076-007.secret_subkey diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000077-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000077-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000077-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000077-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000078-012.ring_trust b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000078-012.ring_trust similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/000078-012.ring_trust rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/000078-012.ring_trust diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/002182-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/002182-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/002182-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/002182-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000005-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000005-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000005-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000005-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000017-002.sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000017-002.sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000017-002.sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/3F5BBA0B0694BEB6000017-002.sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-bzip2.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-bzip2.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-bzip2.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-bzip2.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-zlib.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-zlib.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-zlib.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig-zlib.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/compressedsig.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/onepass_sig b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/onepass_sig similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/onepass_sig rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/onepass_sig diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/pubring.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/pubring.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/pubring.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/pubring.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/secring.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/secring.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/secring.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/secring.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/symmetrically_encrypted b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/symmetrically_encrypted similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/symmetrically_encrypted rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/symmetrically_encrypted diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa-sha384.txt.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa-sha384.txt.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa-sha384.txt.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa-sha384.txt.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-dsa.gpg diff --git a/OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-rsa.gpg b/OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-rsa.gpg similarity index 100% rename from OpenKeychain-Test/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-rsa.gpg rename to OpenKeychain/src/test/resources/OpenPGP-Haskell/tests/data/uncompressed-ops-rsa.gpg diff --git a/OpenKeychain-Test/src/test/resources/public-key-canonicalize.blob b/OpenKeychain/src/test/resources/public-key-canonicalize.blob similarity index 100% rename from OpenKeychain-Test/src/test/resources/public-key-canonicalize.blob rename to OpenKeychain/src/test/resources/public-key-canonicalize.blob diff --git a/OpenKeychain-Test/src/test/resources/public-key-for-sample.blob b/OpenKeychain/src/test/resources/public-key-for-sample.blob similarity index 100% rename from OpenKeychain-Test/src/test/resources/public-key-for-sample.blob rename to OpenKeychain/src/test/resources/public-key-for-sample.blob diff --git a/OpenKeychain-Test/src/test/resources/sample-altered.txt b/OpenKeychain/src/test/resources/sample-altered.txt similarity index 100% rename from OpenKeychain-Test/src/test/resources/sample-altered.txt rename to OpenKeychain/src/test/resources/sample-altered.txt diff --git a/OpenKeychain-Test/src/test/resources/sample.txt b/OpenKeychain/src/test/resources/sample.txt similarity index 100% rename from OpenKeychain-Test/src/test/resources/sample.txt rename to OpenKeychain/src/test/resources/sample.txt diff --git a/OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc b/OpenKeychain/src/test/resources/test-keys/bad_user_id_encoding.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/bad_user_id_encoding.asc rename to OpenKeychain/src/test/resources/test-keys/bad_user_id_encoding.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/broken_cert_version.asc b/OpenKeychain/src/test/resources/test-keys/broken_cert_version.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/broken_cert_version.asc rename to OpenKeychain/src/test/resources/test-keys/broken_cert_version.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc b/OpenKeychain/src/test/resources/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc rename to OpenKeychain/src/test/resources/test-keys/cooperpair/9E669861368BCA0BE42DAF7DDDA252EBB8EBE1AF.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/cooperpair/A55120427374F3F7AA5F1166DDA252EBB8EBE1AF.asc b/OpenKeychain/src/test/resources/test-keys/cooperpair/A55120427374F3F7AA5F1166DDA252EBB8EBE1AF.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/cooperpair/A55120427374F3F7AA5F1166DDA252EBB8EBE1AF.asc rename to OpenKeychain/src/test/resources/test-keys/cooperpair/A55120427374F3F7AA5F1166DDA252EBB8EBE1AF.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/cooperpair/readme b/OpenKeychain/src/test/resources/test-keys/cooperpair/readme similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/cooperpair/readme rename to OpenKeychain/src/test/resources/test-keys/cooperpair/readme diff --git a/OpenKeychain-Test/src/test/resources/test-keys/divert_to_card_sec.asc b/OpenKeychain/src/test/resources/test-keys/divert_to_card_sec.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/divert_to_card_sec.asc rename to OpenKeychain/src/test/resources/test-keys/divert_to_card_sec.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/mailvelope_07_no_key_flags.asc b/OpenKeychain/src/test/resources/test-keys/mailvelope_07_no_key_flags.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/mailvelope_07_no_key_flags.asc rename to OpenKeychain/src/test/resources/test-keys/mailvelope_07_no_key_flags.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/stripped_flags.asc b/OpenKeychain/src/test/resources/test-keys/stripped_flags.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/stripped_flags.asc rename to OpenKeychain/src/test/resources/test-keys/stripped_flags.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/symantec_public.asc b/OpenKeychain/src/test/resources/test-keys/symantec_public.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/symantec_public.asc rename to OpenKeychain/src/test/resources/test-keys/symantec_public.asc diff --git a/OpenKeychain-Test/src/test/resources/test-keys/symantec_secret.asc b/OpenKeychain/src/test/resources/test-keys/symantec_secret.asc similarity index 100% rename from OpenKeychain-Test/src/test/resources/test-keys/symantec_secret.asc rename to OpenKeychain/src/test/resources/test-keys/symantec_secret.asc diff --git a/README.md b/README.md index c48a146db..7520f06c2 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,12 @@ Select everything for the newest SDK Platform, API 22, and also API 21 ### Run Tests 1. Use OpenJDK instead of Oracle JDK -2. Execute ``./gradlew test`` +2. Execute ``./gradlew clean testDebug --continue`` + +### Run Jacoco Test Coverage +1. Use OpenJDK instead of Oracle JDK +2. Execute ``./gradlew clean testDebug jacocoTestReport`` +3. Report is here: OpenKeychain/build/reports/jacoco/jacocoTestReport/html/index.html ### Development with Android Studio diff --git a/build.gradle b/build.gradle index 538fb17f9..f1d71b18f 100644 --- a/build.gradle +++ b/build.gradle @@ -5,10 +5,12 @@ buildscript { dependencies { // NOTE: Always use fixed version codes not dynamic ones, e.g. 0.7.3 instead of 0.7.+, see README for more information - classpath 'com.android.tools.build:gradle:1.1.3' + classpath 'com.android.tools.build:gradle:1.2.3' classpath files('gradle-witness.jar') // bintray dependency to satisfy dependency of openpgp-api lib classpath 'com.novoda:bintray-release:0.2.7' + + classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1' } } @@ -19,7 +21,7 @@ allprojects { } task wrapper(type: Wrapper) { - gradleVersion = '2.3' + gradleVersion = '2.4' } subprojects { @@ -28,7 +30,7 @@ subprojects { } } -// Ignore tests for external dependency +// Ignore tests for external spongycastle project(':extern:spongycastle') { subprojects { // Need to re-apply the plugin here otherwise the test property below can't be set. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6e00d9230..49cf64134 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,5 +3,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip -distributionSha256Sum=010dd9f31849abc3d5644e282943b1c1c355f8e2635c5789833979ce590a3774 \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip +distributionSha256Sum=c4eaecc621a81f567ded1aede4a5ddb281cc02a03a6a87c4f5502add8fc2f16f \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 1b9038344..baf7e0e64 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,4 +8,3 @@ include ':extern:spongycastle:prov' include ':extern:minidns' include ':extern:KeybaseLib:Lib' include ':extern:safeslinger-exchange' -include ':OpenKeychain-Test'