diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9828dbc4..1507e504 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,20 +33,19 @@ metadata_v0: - echo "accepted_formats = ('txt', 'yml')" >> config.py - ../tests/dump_internal_metadata_format.py - sed -i - -e '/kivy:\sfalse/d' + -e '/Liberapay:/d' + -e '/OpenCollective/d' metadata/dump_*/*.yaml - diff -uw metadata/dump_* -debian_testing: - image: debian:testing - only: - - master@fdroid/fdroidserver +debian_buster: + image: debian:buster script: - apt-get -qy update - apt-get -qy dist-upgrade - apt-get -qy install --no-install-recommends fdroidserver git gnupg python3-defusedxml python3-setuptools - - sed -i -e 's,testing,sid,g' -e 's,testing,sid,g' /etc/apt/sources.list + - echo "deb http://deb.debian.org/debian sid main" >> /etc/apt/sources.list - apt-get -qy update - apt-get install -y --no-install-recommends aapt androguard android-platform-tools-base zipalign - python3 -c 'import fdroidserver' @@ -135,7 +134,7 @@ lint_format_safety_bandit_checks: -x fdroidserver/dscanner.py,docker/install_agent.py,docker/drozer.py -r $CI_PROJECT_DIR fdroid || export EXITVALUE=1 - - safety check --full-report || export EXITVALUE=1 + - safety check --full-report --ignore=38224 || export EXITVALUE=1 - pylint --rcfile=.pylint-rcfile --output-format=colorized --reports=n fdroid makebuildserver diff --git a/CHANGELOG.md b/CHANGELOG.md index a76b7013..27fec605 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,20 @@ +### 1.1.4 (2019-08-15) + +* include bitcoin validation regex required by fdroiddata + +* merged Debian patches to fix test suite there + +### 1.1.3 (2019-07-03) + +* fixed test suite when run from source tarball + +* fixed test runs in Debian + +### 1.1.2 (2019-03-29) + +* fix bug while downloading repo index ([!636](https://gitlab.com/fdroid/fdroidserver/merge_requests/636)) + ### 1.1.1 (2019-02-03) * support APK Signature v2 and v3 diff --git a/MANIFEST.in b/MANIFEST.in index ba173c91..8be4dabf 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,9 +4,9 @@ include buildserver/provision-android-sdk include buildserver/provision-apt-get-install include buildserver/provision-apt-proxy include buildserver/provision-gradle -include buildserver/provision-pip include buildserver/setup-env-vars include buildserver/Vagrantfile +include CHANGELOG.md include completion/bash-completion include docker/Dockerfile include docker/drozer.py @@ -41,15 +41,513 @@ include locale/uk/LC_MESSAGES/fdroidserver.mo include locale/zh_Hans/LC_MESSAGES/fdroidserver.mo include locale/zh_Hant/LC_MESSAGES/fdroidserver.mo include makebuildserver -include README.rst +include README.md include tests/androguard_test.py include tests/bad-unicode-*.apk include tests/build.TestCase +include tests/build-tools/17.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/17.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/17.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/17.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/17.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/17.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/17.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/17.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/17.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/17.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/17.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/17.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/17.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/18.1.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/18.1.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/18.1.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/18.1.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/18.1.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/18.1.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/18.1.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/18.1.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/18.1.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/18.1.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/18.1.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/18.1.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/18.1.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/19.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/19.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/19.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/19.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/19.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/19.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/19.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/19.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/19.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/19.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/19.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/19.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/19.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/19.1.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/19.1.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/19.1.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/19.1.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/19.1.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/19.1.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/19.1.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/19.1.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/19.1.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/19.1.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/19.1.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/19.1.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/19.1.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/20.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/20.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/20.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/20.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/20.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/20.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/20.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/20.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/20.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/20.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/20.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/20.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/20.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/21.1.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/21.1.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/21.1.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/21.1.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/21.1.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/21.1.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/21.1.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/21.1.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/21.1.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/21.1.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/21.1.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/21.1.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/21.1.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/21.1.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/21.1.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/21.1.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/21.1.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/21.1.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/21.1.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/21.1.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/21.1.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/21.1.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/21.1.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/21.1.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/21.1.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/21.1.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/22.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/22.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/22.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/22.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/22.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/22.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/22.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/22.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/22.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/22.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/22.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/22.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/22.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/22.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/22.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/22.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/22.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/22.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/22.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/22.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/22.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/22.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/22.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/22.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/22.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/22.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/23.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/23.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/23.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/23.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/23.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/23.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/23.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/23.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/23.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/23.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/23.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/23.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/23.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/23.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/23.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/23.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/23.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/23.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/23.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/23.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/23.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/23.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/23.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/23.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/23.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/23.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/23.0.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/23.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/23.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/23.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/23.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/23.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/23.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/23.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/23.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/23.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/23.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/23.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/23.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/23.0.3/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/23.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/23.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/23.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/23.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/23.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/23.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/23.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/23.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/23.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/23.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/23.0.3/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/23.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/24.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/24.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/24.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/24.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/24.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/24.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/24.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/24.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/24.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/24.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/24.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/24.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/24.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/24.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/24.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/24.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/24.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/24.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/24.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/24.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/24.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/24.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/24.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/24.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/24.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/24.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/24.0.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/24.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/24.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/24.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/24.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/24.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/24.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/24.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/24.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/24.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/24.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/24.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/24.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/24.0.3/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/24.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/24.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/24.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/24.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/24.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/24.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/24.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/24.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/24.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/24.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/24.0.3/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/24.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/25.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/25.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/25.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/25.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/25.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/25.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/25.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/25.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/25.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/25.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/25.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/25.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/25.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/25.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/25.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/25.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/25.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/25.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/25.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/25.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/25.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/25.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/25.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/25.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/25.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/25.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/25.0.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/25.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/25.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/25.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/25.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/25.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/25.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/25.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/25.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/25.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/25.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/25.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/25.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/25.0.3/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/25.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/25.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/25.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/25.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/25.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/25.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/25.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/25.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/25.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/25.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/25.0.3/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/25.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/26.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/26.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/26.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/26.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/26.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/26.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/26.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/26.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/26.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/26.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/26.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/26.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/26.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/26.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/26.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/26.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/26.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/26.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/26.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/26.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/26.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/26.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/26.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/26.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/26.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/26.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/26.0.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/26.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/26.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/26.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/26.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/26.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/26.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/26.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/26.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/26.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/26.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/26.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/26.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/26.0.3/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/26.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/26.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/26.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/26.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/26.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/26.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/26.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/26.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/26.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/26.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/26.0.3/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/26.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/27.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/27.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/27.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/27.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/27.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/27.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/27.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/27.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/27.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/27.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/27.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/27.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/27.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/27.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/27.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/27.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/27.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/27.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/27.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/27.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/27.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/27.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/27.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/27.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/27.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/27.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/27.0.2/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/27.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/27.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/27.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/27.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/27.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/27.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/27.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/27.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/27.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/27.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/27.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/27.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/27.0.3/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/27.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/27.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/27.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/27.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/27.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/27.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/27.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/27.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/27.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/27.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/27.0.3/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/27.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/28.0.0/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/28.0.0/aapt-output-com.politedroid_3.txt +include tests/build-tools/28.0.0/aapt-output-com.politedroid_4.txt +include tests/build-tools/28.0.0/aapt-output-com.politedroid_5.txt +include tests/build-tools/28.0.0/aapt-output-com.politedroid_6.txt +include tests/build-tools/28.0.0/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/28.0.0/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/28.0.0/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/28.0.0/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/28.0.0/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/28.0.0/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/28.0.0/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/28.0.0/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/28.0.1/aapt-output-com.moez.QKSMS_182.txt +include tests/build-tools/28.0.1/aapt-output-com.politedroid_3.txt +include tests/build-tools/28.0.1/aapt-output-com.politedroid_4.txt +include tests/build-tools/28.0.1/aapt-output-com.politedroid_5.txt +include tests/build-tools/28.0.1/aapt-output-com.politedroid_6.txt +include tests/build-tools/28.0.1/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/28.0.1/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/28.0.1/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/28.0.1/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/28.0.1/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/28.0.1/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/28.0.1/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/28.0.1/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/28.0.2/aapt-output-com.politedroid_3.txt +include tests/build-tools/28.0.2/aapt-output-com.politedroid_4.txt +include tests/build-tools/28.0.2/aapt-output-com.politedroid_5.txt +include tests/build-tools/28.0.2/aapt-output-com.politedroid_6.txt +include tests/build-tools/28.0.2/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/28.0.2/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/28.0.2/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/28.0.2/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/28.0.2/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/28.0.2/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/28.0.2/aapt-output-org.droidtr.keyboard_34.txt +include tests/build-tools/28.0.2/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/28.0.3/aapt-output-com.example.test.helloworld_1.txt +include tests/build-tools/28.0.3/aapt-output-com.politedroid_3.txt +include tests/build-tools/28.0.3/aapt-output-com.politedroid_4.txt +include tests/build-tools/28.0.3/aapt-output-com.politedroid_5.txt +include tests/build-tools/28.0.3/aapt-output-com.politedroid_6.txt +include tests/build-tools/28.0.3/aapt-output-duplicate.permisssions_9999999.txt +include tests/build-tools/28.0.3/aapt-output-info.guardianproject.urzip_100.txt +include tests/build-tools/28.0.3/aapt-output-info.zwanenburg.caffeinetile_4.txt +include tests/build-tools/28.0.3/aapt-output-no.min.target.sdk_987.txt +include tests/build-tools/28.0.3/aapt-output-obb.main.oldversion_1444412523.txt +include tests/build-tools/28.0.3/aapt-output-obb.mainpatch.current_1619.txt +include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101613.txt +include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101615.txt +include tests/build-tools/28.0.3/aapt-output-obb.main.twoversions_1101617.txt +include tests/build-tools/28.0.3/aapt-output-souch.smsbypass_9.txt +include tests/build-tools/generate.sh +include tests/check-fdroid-apk include tests/common.TestCase include tests/complete-ci-tests include tests/config.py include tests/description-parsing.py +include tests/dummy-keystore.jks include tests/dump_internal_metadata_format.py +include tests/exception.TestCase include tests/extra/convert_metadata_to_yaml_then_txt.sh include tests/extra/manual-vmtools-test.py include tests/getsig/getsig.java @@ -63,6 +561,8 @@ include tests/import_proxy.py include tests/import.TestCase include tests/index.TestCase include tests/install.TestCase +include tests/IsMD5Disabled.java +include tests/janus.apk include tests/keystore.jks include tests/lint.TestCase include tests/metadata/apk/info.guardianproject.urzip.yaml @@ -73,6 +573,7 @@ include tests/metadata/dump/com.politedroid.yaml include tests/metadata/dump/org.adaway.yaml include tests/metadata/dump/org.smssecure.smssecure.yaml include tests/metadata/dump/org.videolan.vlc.yaml +include tests/metadata/duplicate.permisssions.yml include tests/metadata/fake.ota.update.txt include tests/metadata/info.guardianproject.checkey/en-US/description.txt include tests/metadata/info.guardianproject.checkey/en-US/phoneScreenshots/checkey-phone.png @@ -87,18 +588,27 @@ include tests/metadata/info.guardianproject.urzip/en-US/short_description.txt include tests/metadata/info.guardianproject.urzip/en-US/title.txt include tests/metadata/info.guardianproject.urzip/en-US/video.txt include tests/metadata/info.guardianproject.urzip.yml +include tests/metadata/info.zwanenburg.caffeinetile.yml +include tests/metadata/no.min.target.sdk.yml include tests/metadata/obb.main.oldversion.txt include tests/metadata/obb.mainpatch.current.txt include tests/metadata/obb.main.twoversions.txt include tests/metadata/org.adaway.json include tests/metadata/org.fdroid.ci.test.app.txt include tests/metadata/org.fdroid.fdroid.txt +include tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.RSA +include tests/metadata/org.smssecure.smssecure/signatures/134/28969C09.SF +include tests/metadata/org.smssecure.smssecure/signatures/134/MANIFEST.MF +include tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.RSA +include tests/metadata/org.smssecure.smssecure/signatures/135/28969C09.SF +include tests/metadata/org.smssecure.smssecure/signatures/135/MANIFEST.MF include tests/metadata/org.smssecure.smssecure.txt include tests/metadata/org.videolan.vlc.yml include tests/metadata/raw.template.txt include tests/metadata-rewrite-yml/app.with.special.build.params.yml include tests/metadata-rewrite-yml/fake.ota.update.yml include tests/metadata-rewrite-yml/org.fdroid.fdroid.yml +include tests/metadata/souch.smsbypass.txt include tests/metadata.TestCase include tests/openssl-version-check-test.py include tests/org.bitbucket.tickytacky.mirrormirror_1.apk @@ -106,17 +616,23 @@ include tests/org.bitbucket.tickytacky.mirrormirror_2.apk include tests/org.bitbucket.tickytacky.mirrormirror_3.apk include tests/org.bitbucket.tickytacky.mirrormirror_4.apk include tests/org.dyndns.fules.ck_20.apk +include tests/publish.TestCase include tests/repo/categories.txt +include tests/repo/com.example.test.helloworld_1.apk include tests/repo/com.politedroid_3.apk include tests/repo/com.politedroid_4.apk include tests/repo/com.politedroid_5.apk include tests/repo/com.politedroid_6.apk +include tests/repo/duplicate.permisssions_9999999.apk include tests/repo/fake.ota.update_1234.zip +include tests/repo/index-v1.json include tests/repo/index.xml +include tests/repo/info.zwanenburg.caffeinetile_4.apk include tests/repo/main.1101613.obb.main.twoversions.obb include tests/repo/main.1101615.obb.main.twoversions.obb include tests/repo/main.1434483388.obb.main.oldversion.obb include tests/repo/main.1619.obb.mainpatch.current.obb +include tests/repo/no.min.target.sdk_987.apk include tests/repo/obb.main.oldversion_1444412523.apk include tests/repo/obb.mainpatch.current_1619_another-release-key.apk include tests/repo/obb.mainpatch.current_1619.apk @@ -154,19 +670,45 @@ include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot5.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot6.png include tests/repo/org.videolan.vlc/en-US/sevenInchScreenshots/screenshot8.png include tests/repo/patch.1619.obb.mainpatch.current.obb +include tests/repo/souch.smsbypass_9.apk include tests/repo/urzip-*.apk +include tests/repo/v1.v2.sig_1020.apk include tests/run-tests +include tests/scanner.TestCase +include tests/server.TestCase include tests/signatures.TestCase include tests/signindex/guardianproject.jar include tests/signindex/guardianproject-v1.jar include tests/signindex/testy.jar include tests/signindex/unsigned.jar +include tests/source-files/at.bitfire.davdroid/build.gradle +include tests/source-files/com.kunzisoft.testcase/build.gradle +include tests/source-files/com.nextcloud.client/build.gradle +include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/full_description.txt +include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/short_description.txt +include tests/source-files/com.nextcloud.client.dev/src/generic/fastlane/metadata/android/en-US/title.txt +include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/full_description.txt +include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/short_description.txt +include tests/source-files/com.nextcloud.client.dev/src/versionDev/fastlane/metadata/android/en-US/title.txt +include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/full_description.txt +include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/short_description.txt +include tests/source-files/com.nextcloud.client/src/generic/fastlane/metadata/android/en-US/title.txt +include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/full_description.txt +include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/short_description.txt +include tests/source-files/com.nextcloud.client/src/versionDev/fastlane/metadata/android/en-US/title.txt +include tests/source-files/eu.siacs.conversations/build.gradle +include tests/source-files/eu.siacs.conversations/metadata/en-US/name.txt include tests/source-files/fdroid/fdroidclient/AndroidManifest.xml include tests/source-files/fdroid/fdroidclient/build.gradle +include tests/source-files/firebase-suspect/app/build.gradle +include tests/source-files/firebase-suspect/build.gradle +include tests/source-files/firebase-whitelisted/app/build.gradle +include tests/source-files/firebase-whitelisted/build.gradle include tests/source-files/open-keychain/open-keychain/build.gradle include tests/source-files/open-keychain/open-keychain/OpenKeychain/build.gradle include tests/source-files/osmandapp/osmand/build.gradle include tests/source-files/Zillode/syncthing-silk/build.gradle +include tests/SpeedoMeterApp.main_1.apk include tests/stats/known_apks.txt include tests/testcommon.py include tests/update.TestCase @@ -175,3 +717,7 @@ include tests/urzip-badcert.apk include tests/urzip-badsig.apk include tests/urzip-release.apk include tests/urzip-release-unsigned.apk +include tests/v2.only.sig_2.apk +include tests/valid-package-names/random-package-names +include tests/valid-package-names/RandomPackageNames.java +include tests/valid-package-names/test.py diff --git a/completion/bash-completion b/completion/bash-completion index 531f9131..d00a767a 100644 --- a/completion/bash-completion +++ b/completion/bash-completion @@ -275,7 +275,7 @@ __complete_mirror() { __complete_nightly() { opts="-v -q" - lopts="--show-secret-var" + lopts="--show-secret-var --archive-older" __complete_options } @@ -288,7 +288,7 @@ __complete_stats() { __complete_deploy() { opts="-i -v -q" lopts="--identity-file --local-copy-dir --sync-from-local-copy-dir - --verbose --quiet --no-checksum" + --verbose --quiet --no-checksum --no-keep-git-mirror-archive" __complete_options } diff --git a/fdroidserver/index.py b/fdroidserver/index.py index d8477dc5..eb04d597 100644 --- a/fdroidserver/index.py +++ b/fdroidserver/index.py @@ -317,13 +317,17 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing parent.appendChild(el) def addElementCheckLocalized(name, app, key, doc, parent, default=''): - '''Fill in field from metadata or localized block + """Fill in field from metadata or localized block For name/summary/description, they can come only from the app source, or from a dir in fdroiddata. They can be entirely missing from the metadata file if there is localized versions. This will fetch those from the localized version if its not available in the metadata file. - ''' + + Attributes should be alpha-sorted, so they must be added in + alpha- sort order. + + """ el = doc.createElement(name) value = app.get(key) @@ -349,21 +353,20 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing doc.appendChild(root) repoel = doc.createElement("repo") - - repoel.setAttribute("name", repodict['name']) + repoel.setAttribute("icon", os.path.basename(repodict['icon'])) if 'maxage' in repodict: repoel.setAttribute("maxage", str(repodict['maxage'])) - repoel.setAttribute("icon", os.path.basename(repodict['icon'])) + repoel.setAttribute("name", repodict['name']) + pubkey, repo_pubkey_fingerprint = extract_pubkey() + repoel.setAttribute("pubkey", pubkey.decode('utf-8')) + repoel.setAttribute("timestamp", '%d' % repodict['timestamp'].timestamp()) repoel.setAttribute("url", repodict['address']) + repoel.setAttribute("version", str(repodict['version'])) + addElement('description', repodict['description'], doc, repoel) for mirror in repodict.get('mirrors', []): addElement('mirror', mirror, doc, repoel) - repoel.setAttribute("version", str(repodict['version'])) - repoel.setAttribute("timestamp", '%d' % repodict['timestamp'].timestamp()) - - pubkey, repo_pubkey_fingerprint = extract_pubkey() - repoel.setAttribute("pubkey", pubkey.decode('utf-8')) root.appendChild(repoel) for command in ('install', 'uninstall'): @@ -442,6 +445,7 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing addElementNonEmpty('litecoin', app.Litecoin, doc, apel) addElementNonEmpty('flattr', app.FlattrID, doc, apel) addElementNonEmpty('liberapay', app.LiberapayID, doc, apel) + addElementNonEmpty('openCollective', app.OpenCollective, doc, apel) # These elements actually refer to the current version (i.e. which # one is recommended. They are historically mis-named, and need @@ -541,16 +545,16 @@ def make_v0(apps, apks, repodir, repodict, requestsdict, fdroid_signing_key_fing for permission in sorted_permissions: permel = doc.createElement('uses-permission') - permel.setAttribute('name', permission[0]) if permission[1] is not None: permel.setAttribute('maxSdkVersion', '%d' % permission[1]) apkel.appendChild(permel) + permel.setAttribute('name', permission[0]) for permission_sdk_23 in sorted(apk['uses-permission-sdk-23']): permel = doc.createElement('uses-permission-sdk-23') - permel.setAttribute('name', permission_sdk_23[0]) if permission_sdk_23[1] is not None: permel.setAttribute('maxSdkVersion', '%d' % permission_sdk_23[1]) apkel.appendChild(permel) + permel.setAttribute('name', permission_sdk_23[0]) if 'nativecode' in apk: addElement('nativecode', ','.join(sorted(apk['nativecode'])), doc, apkel) addElementNonEmpty('features', ','.join(sorted(apk['features'])), doc, apkel) @@ -717,6 +721,7 @@ def download_repo_index(url_str, etag=None, verify_fingerprint=True, timeout=600 with tempfile.NamedTemporaryFile() as fp: fp.write(download) + fp.flush() index, public_key, public_key_fingerprint = get_index_from_jar(fp.name, fingerprint) index["repo"]["pubkey"] = hexlify(public_key).decode() index["repo"]["fingerprint"] = public_key_fingerprint diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 465954cc..6f8a768e 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -139,9 +139,11 @@ regex_checks = { ], 'Donate': http_checks + [ (re.compile(r'.*flattr\.com'), - _("Flattr donation methods belong in the FlattrID flag")), + _("Flattr donation methods belong in the FlattrID: field")), (re.compile(r'.*liberapay\.com'), - _("Liberapay donation methods belong in the LiberapayID flag")), + _("Liberapay donation methods belong in the Liberapay: field")), + (re.compile(r'.*opencollective\.com'), + _("OpenCollective donation methods belong in the OpenCollective: field")), ], 'Changelog': http_checks, 'Author Name': [ diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index bbf8d70b..57c675c7 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -36,6 +36,10 @@ from fdroidserver.exception import MetaDataException, FDroidException srclibs = None warnings_action = None +# validates usernames based on a loose collection of rules from GitHub, GitLab, +# Liberapay and issuehunt. This is mostly to block abuse. +VALID_USERNAME_REGEX = re.compile(r'^[a-z\d](?:[a-z\d/._-]){0,38}$', re.IGNORECASE) + def warn_or_exception(value): '''output warning or Exception depending on -W''' @@ -65,7 +69,9 @@ app_fields = set([ 'Changelog', 'Donate', 'FlattrID', + 'Liberapay', 'LiberapayID', + 'OpenCollective', 'Bitcoin', 'Litecoin', 'Name', @@ -109,7 +115,9 @@ yaml_app_field_order = [ 'Changelog', 'Donate', 'FlattrID', + 'Liberapay', 'LiberapayID', + 'OpenCollective', 'Bitcoin', 'Litecoin', '\n', @@ -168,7 +176,9 @@ class App(dict): self.Changelog = '' self.Donate = None self.FlattrID = None + self.Liberapay = None self.LiberapayID = None + self.OpenCollective = None self.Bitcoin = None self.Litecoin = None self.Name = None @@ -440,10 +450,18 @@ valuetypes = { r'^[0-9a-z]+$', ['FlattrID']), + FieldValidator("Liberapay", + VALID_USERNAME_REGEX, + ['Liberapay']), + FieldValidator("Liberapay ID", r'^[0-9]+$', ['LiberapayID']), + FieldValidator("Open Collective", + r'^[0-9A-Za-z-]+$', + ['OpenCollective']), + FieldValidator("HTTP link", r'^http[s]?://', ["WebSite", "SourceCode", "IssueTracker", "Translation", "Changelog", "Donate"]), @@ -453,11 +471,11 @@ valuetypes = { ["AuthorEmail"]), FieldValidator("Bitcoin address", - r'^[a-zA-Z0-9]{27,34}$', + r'^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$', ["Bitcoin"]), FieldValidator("Litecoin address", - r'^L[a-zA-Z0-9]{33}$', + r'^[LM3][a-km-zA-HJ-NP-Z1-9]{26,33}$', ["Litecoin"]), FieldValidator("Repo Type", @@ -1481,6 +1499,7 @@ def write_plaintext_metadata(mf, app, w_comment, w_field, w_build): w_field_nonempty('Donate') w_field_nonempty('FlattrID') w_field_nonempty('LiberapayID') + w_field_nonempty('OpenCollective') w_field_nonempty('Bitcoin') w_field_nonempty('Litecoin') mf.write('\n') diff --git a/fdroidserver/nightly.py b/fdroidserver/nightly.py index 9579ae50..b67a4097 100644 --- a/fdroidserver/nightly.py +++ b/fdroidserver/nightly.py @@ -39,7 +39,7 @@ from . import common # hard coded defaults for Android ~/.android/debug.keystore files # https://developers.google.com/android/guides/client-auth KEYSTORE_FILE = os.path.join(os.getenv('HOME'), '.android', 'debug.keystore') -PASSWORD = 'android' +PASSWORD = 'android' # nosec B105 standard hardcoded password for debug keystores KEY_ALIAS = 'androiddebugkey' DISTINGUISHED_NAME = 'CN=Android Debug,O=Android,C=US' @@ -102,6 +102,8 @@ def main(): help=_('The file to be included in the repo (path or glob)')) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) + parser.add_argument("--archive-older", type=int, default=20, + help=_("Set maximum releases in repo before older ones are archived")) # TODO add --with-btlog options = parser.parse_args() @@ -230,9 +232,12 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base, config += "repo_name = '%s'\n" % repo_git_base config += "repo_url = '%s'\n" % repo_url config += "repo_icon = 'icon.png'\n" + config += "repo_description = 'Nightly builds from %s'\n" % git_user_email config += "archive_name = '%s'\n" % (repo_git_base + ' archive') config += "archive_url = '%s'\n" % (repo_base + '/archive') config += "archive_icon = 'icon.png'\n" + config += "archive_description = 'Old nightly builds that have been archived.'\n" + config += "archive_older = %i\n" % options.archive_older config += "servergitmirrors = '%s'\n" % servergitmirror config += "keystore = '%s'\n" % KEYSTORE_FILE config += "repo_keyalias = '%s'\n" % KEY_ALIAS @@ -293,7 +298,8 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base, if not options.no_deploy: try: - subprocess.check_call(['fdroid', 'server', 'update', '--verbose'], cwd=repo_basedir) + cmd = ['fdroid', 'server', 'update', '--verbose', '--no-keep-git-mirror-archive'] + subprocess.check_call(cmd, cwd=repo_basedir) except subprocess.CalledProcessError: logging.error(_('cannot publish update, did you set the deploy key?') + '\n' + deploy_key_url) diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index ac9a3f44..1369d177 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -280,7 +280,7 @@ def main(): signaturefile, signedfile, manifest = signingfiles with open(signaturefile, 'rb') as f: - devfp = common.signer_fingerprint_short(common.get_signature(f.read())) + devfp = common.signer_fingerprint_short(common.get_certificate(f.read())) devsigned = '{}_{}_{}.apk'.format(appid, vercode, devfp) devsignedtmp = os.path.join(tmp_dir, devsigned) shutil.copy(apkfile, devsignedtmp) diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 2d9e2a1d..5f315736 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -109,6 +109,7 @@ def scan_source(build_dir, build=metadata.Build()): 's3.amazonaws.com/repo.commonsware.com', # CommonsWare 'plugins.gradle.org/m2', # Gradle plugin repo 'maven.google.com', # Google Maven Repo, https://developer.android.com/studio/build/dependencies.html#google-maven + 'file:///usr/share/maven-repo', # local repo on Debian installs ] ] diff --git a/fdroidserver/server.py b/fdroidserver/server.py index ac9cba03..ce210f84 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -355,6 +355,10 @@ def update_servergitmirrors(servergitmirrors, repo_section): if os.path.isdir(dotgit) and _get_size(git_mirror_path) > 1000000000: logging.warning('Deleting git-mirror history, repo is too big (1 gig max)') shutil.rmtree(dotgit) + if options.no_keep_git_mirror_archive and _get_size(git_mirror_path) > 1000000000: + logging.warning('Deleting archive, repo is too big (1 gig max)') + archive_path = os.path.join(git_mirror_path, 'fdroid', 'archive') + shutil.rmtree(archive_path, ignore_errors=True) # rsync is very particular about trailing slashes common.local_rsync(options, @@ -626,6 +630,8 @@ def main(): help=_("Specify a local folder to sync the repo to")) parser.add_argument("--no-checksum", action="store_true", default=False, help=_("Don't use rsync checksums")) + parser.add_argument("--no-keep-git-mirror-archive", action="store_true", default=False, + help=_("If a git mirror gets to big, allow the archive to be deleted")) options = parser.parse_args() config = common.read_config(options) diff --git a/hooks/pre-commit b/hooks/pre-commit index 94c55888..369b3620 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -53,10 +53,11 @@ fi # * E501: line too long (82 > 79 characters) # - Recommended for readability but not enforced # - Some lines are awkward to wrap around a char limit +# * E741: ambiguous variable name 'l' # * W503: line break before binary operator # - Quite pedantic -PEP8_IGNORE="E123,E501,W503" +PEP8_IGNORE="E123,E501,E741,W503" err() { echo >&2 ERROR: "$@" diff --git a/setup.cfg b/setup.cfg index ed171a15..d4887223 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,8 +1,8 @@ # uploading here requires Python 3.5.3+ or setuptools 27+, -# use instead: twine upload dist/fdroidserver*.tar.gz* +# use instead: twine upload --sign dist/fdroidserver*.tar.gz [aliases] -release = versioncheck compile_catalog register sdist upload --sign +release = versioncheck compile_catalog sdist # All this below is for Babel config. Ideally we would only use # Babel, but it is still missing some key features that gettext gives diff --git a/setup.py b/setup.py index 6a4aac60..31de6e30 100755 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ class VersionCheckCommand(Command): print('ERROR: Release version mismatch! setup.py (%s) does not match git (%s)' % (version, version_git)) sys.exit(1) - print('Upload using: twine upload dist/fdroidserver*.tar.gz*') + print('Upload using: twine upload --sign dist/fdroidserver-%s.tar.gz' % version) def get_data_files(): @@ -49,10 +49,14 @@ def get_data_files(): return data_files +with open("README.md", "r") as fh: + long_description = fh.read() + + setup(name='fdroidserver', - version='1.1.1', + version='1.1.9', description='F-Droid Server Tools', - long_description='README.md', + long_description=long_description, long_description_content_type='text/markdown', author='The F-Droid Project', author_email='team@f-droid.org', @@ -80,7 +84,7 @@ setup(name='fdroidserver', 'python-vagrant', 'PyYAML', 'qrcode', - 'ruamel.yaml >= 0.13', + 'ruamel.yaml >= 0.15', 'requests >= 2.5.2, != 2.11.0, != 2.12.2, != 2.18.0', 'docker-py >= 1.9, < 2.0', ], diff --git a/tests/common.TestCase b/tests/common.TestCase index b976376f..5defdac5 100755 --- a/tests/common.TestCase +++ b/tests/common.TestCase @@ -340,10 +340,16 @@ class CommonTest(unittest.TestCase): fdroidserver.common.config = config self.assertTrue(fdroidserver.common.verify_apk_signature('bad-unicode-πÇÇ现代通用字-български-عربي1.apk')) - self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_1.apk')) - self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_2.apk')) - self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_3.apk')) - self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_4.apk')) + if 'apksigner' in fdroidserver.common.config: # apksigner considers MD5 signatures valid + self.assertTrue(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_1.apk')) + self.assertTrue(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_2.apk')) + self.assertTrue(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_3.apk')) + self.assertTrue(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_4.apk')) + else: + self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_1.apk')) + self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_2.apk')) + self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_3.apk')) + self.assertFalse(fdroidserver.common.verify_apk_signature('org.bitbucket.tickytacky.mirrormirror_4.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('org.dyndns.fules.ck_20.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('urzip.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-badcert.apk')) @@ -563,6 +569,7 @@ class CommonTest(unittest.TestCase): def test_sign_apk(self): try: + fdroidserver.common.find_sdk_tools_cmd('aapt') fdroidserver.common.find_sdk_tools_cmd('zipalign') except fdroidserver.exception.FDroidException: print('\n\nSKIPPING test_sign_apk, zipalign is not installed!\n') diff --git a/tests/metadata.TestCase b/tests/metadata.TestCase index 486dca09..d7b72f71 100755 --- a/tests/metadata.TestCase +++ b/tests/metadata.TestCase @@ -39,6 +39,64 @@ class MetadataTest(unittest.TestCase): os.makedirs(self.tmpdir) os.chdir(self.basedir) + def test_FieldValidator_BitcoinAddress(self): + validator = None + for vali in fdroidserver.metadata.valuetypes: + if vali.name == 'Bitcoin address': + validator = vali + break + self.assertIsNotNone(validator, "could not find 'Bitcoin address' validator") + + fdroidserver.metadata.warnings_action = 'error' + + # some valid addresses (P2PKH, P2SH, Bech32) + self.assertIsNone(validator.check('1BrrrrErsrWetrTrnrrrrm4GFg7xJaNVN2', 'fake.app.id')) + self.assertIsNone(validator.check('3JrrrrWrEZr3rNrrvrecrnyirrnqRhWNLy', 'fake.app.id')) + self.assertIsNone(validator.check('bc1qar0srrr7xrkvr5lr43lrdnwrre5rgtrzrf5rrq', 'fake.app.id')) + + # some invalid addresses + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '21BvMrSYsrWrtrrlL5A10mlGFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '5Hrgr3ur5rGLrfKrrrrrrHSrqJrroGrrzrQrrrrrrLNrsrDrrrA', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '92rr46rUrgTrrromrVrirW6r1rrrdrerrdbJrrrhrCsYrrrrrrc', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'K1BvMrSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'L1BvMrSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'tb1qw5r8drrejxrrg4y5rrrrrraryrrrrwrkxrjrsx', 'fake.app.id') + + def test_FieldValidator_LitecoinAddress(self): + validator = None + for vali in fdroidserver.metadata.valuetypes: + if vali.name == 'Litecoin address': + validator = vali + break + self.assertIsNotNone(validator, "could not find 'Litecoin address' validator") + + fdroidserver.metadata.warnings_action = 'error' + + # some valid addresses (L, M, 3) + self.assertIsNone(validator.check('LgeGrrrrJAxyXprrPrrBrrX5Qrrrrrrrrd', 'fake.app.id')) + self.assertIsNone(validator.check('MrrrrrrrJAxyXpanPtrrRAX5QHxvUJo8id', 'fake.app.id')) + self.assertIsNone(validator.check('3rereVr9rAryrranrrrrrAXrrHx', 'fake.app.id')) + + # some invalid addresses (various special use/testnet addresses, invalid chars) + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '21BvMrSYsrWrtrrrn5Au4l4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '5Hrgr3ur5rGLrfKrrrrrr1SrqJrroGrrzrQrrrrrrLNrsrDrrrA', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + '92rr46rUrgTrrromrVrirW6r1rrrdrerrdbJrrrhrCsYrrrrrrc', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'K1BvMrSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'L0000rSYsrWrtrrrn5Au4m4GFr7rrarrN2', 'fake.app.id') + self.assertRaises(fdroidserver.exception.MetaDataException, validator.check, + 'tb1qw5r8drrejxrrg4y5rrrrrraryrrrrwrkxrjrsx', 'fake.app.id') + def test_read_metadata(self): def _build_yaml_representer(dumper, data): @@ -54,6 +112,7 @@ class MetadataTest(unittest.TestCase): config['ndk_paths'] = dict() config['accepted_formats'] = ['json', 'txt', 'yml'] fdroidserver.common.config = config + fdroidserver.metadata.warnings_action = None apps = fdroidserver.metadata.read_metadata(xref=True) for appid in ('org.smssecure.smssecure', 'org.adaway', @@ -73,6 +132,7 @@ class MetadataTest(unittest.TestCase): def test_rewrite_yaml_fakeotaupdate(self): testdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, dir=self.tmpdir) fdroidserver.common.config = {'accepted_formats': ['txt', 'yml']} + fdroidserver.metadata.warnings_action = None # rewrite metadata allapps = fdroidserver.metadata.read_metadata(xref=True) diff --git a/tests/metadata/dump/com.politedroid.yaml b/tests/metadata/dump/com.politedroid.yaml index cc1bebbe..4837a93c 100644 --- a/tests/metadata/dump/com.politedroid.yaml +++ b/tests/metadata/dump/com.politedroid.yaml @@ -17,12 +17,14 @@ Disabled: null Donate: null FlattrID: null IssueTracker: https://github.com/miguelvps/PoliteDroid/issues +Liberapay: null LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '1.5' +OpenCollective: null Provides: null Repo: https://github.com/miguelvps/PoliteDroid.git RepoType: git diff --git a/tests/metadata/dump/org.adaway.yaml b/tests/metadata/dump/org.adaway.yaml index 577d0449..ebabcb37 100644 --- a/tests/metadata/dump/org.adaway.yaml +++ b/tests/metadata/dump/org.adaway.yaml @@ -40,12 +40,14 @@ Disabled: null Donate: http://sufficientlysecure.org/index.php/adaway FlattrID: '369138' IssueTracker: https://github.com/dschuermann/ad-away/issues -LiberapayID: null +Liberapay: null +LiberapayID: '1234567890' License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '' +OpenCollective: null Provides: org.sufficientlysecure.adaway Repo: https://github.com/dschuermann/ad-away.git RepoType: git diff --git a/tests/metadata/dump/org.smssecure.smssecure.yaml b/tests/metadata/dump/org.smssecure.smssecure.yaml index 42e59f07..a979e9c1 100644 --- a/tests/metadata/dump/org.smssecure.smssecure.yaml +++ b/tests/metadata/dump/org.smssecure.smssecure.yaml @@ -37,12 +37,14 @@ Disabled: null Donate: null FlattrID: null IssueTracker: https://github.com/SMSSecure/SMSSecure/issues +Liberapay: null LiberapayID: null License: GPL-3.0-only Litecoin: null MaintainerNotes: '' Name: null NoSourceSince: '' +OpenCollective: null Provides: null Repo: https://github.com/SMSSecure/SMSSecure RepoType: git diff --git a/tests/metadata/dump/org.videolan.vlc.yaml b/tests/metadata/dump/org.videolan.vlc.yaml index 70638ad5..39d628d4 100644 --- a/tests/metadata/dump/org.videolan.vlc.yaml +++ b/tests/metadata/dump/org.videolan.vlc.yaml @@ -24,6 +24,7 @@ Disabled: null Donate: http://www.videolan.org/contribute.html#money FlattrID: null IssueTracker: http://www.videolan.org/support/index.html#bugs +Liberapay: null LiberapayID: null License: GPL-3.0-only Litecoin: null @@ -45,6 +46,7 @@ MaintainerNotes: 'Instructions and dependencies here: http://wiki.videolan.org/A ' Name: null NoSourceSince: '' +OpenCollective: null Provides: null Repo: git://git.videolan.org/vlc-ports/android.git RepoType: git diff --git a/tests/metadata/info.guardianproject.checkey.txt b/tests/metadata/info.guardianproject.checkey.txt index c6d7557c..1ad98833 100644 --- a/tests/metadata/info.guardianproject.checkey.txt +++ b/tests/metadata/info.guardianproject.checkey.txt @@ -5,6 +5,7 @@ Source Code:https://github.com/guardianproject/checkey Issue Tracker:https://dev.guardianproject.info/projects/checkey/issues Translation:https://www.transifex.com/otf/checkey Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk +Liberapay:GuardianProject Auto Name:Checkey diff --git a/tests/metadata/info.guardianproject.urzip.yml b/tests/metadata/info.guardianproject.urzip.yml index 8bb3cd1e..bab1d763 100644 --- a/tests/metadata/info.guardianproject.urzip.yml +++ b/tests/metadata/info.guardianproject.urzip.yml @@ -1,6 +1,8 @@ AutoName: Urzip:本地应用的信息 AutoUpdateMode: None Bitcoin: 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk +LiberapayID: '9999999' +OpenCollective: f-droid-just-testing Categories: - Development - GuardianProject diff --git a/tests/metadata/obb.main.oldversion.txt b/tests/metadata/obb.main.oldversion.txt index 0a4e4956..52095f10 100644 --- a/tests/metadata/obb.main.oldversion.txt +++ b/tests/metadata/obb.main.oldversion.txt @@ -2,6 +2,7 @@ Categories:Development License:GPL-3.0-only Source Code:https://github.com/eighthave/urzip Bitcoin:1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk +Liberapay:12334 Auto Name:OBB Main Old Version diff --git a/tests/metadata/org.adaway.json b/tests/metadata/org.adaway.json index df71f112..c74017f5 100644 --- a/tests/metadata/org.adaway.json +++ b/tests/metadata/org.adaway.json @@ -22,6 +22,7 @@ "Donate": "http://sufficientlysecure.org/index.php/adaway", "FlattrID": "369138", "IssueTracker": "https://github.com/dschuermann/ad-away/issues", + "LiberapayID": "1234567890", "License": "GPL-3.0-only", "Provides": "org.sufficientlysecure.adaway", "Repo": "https://github.com/dschuermann/ad-away.git", diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json index a5a1d1e9..9ce9ddb9 100644 --- a/tests/repo/index-v1.json +++ b/tests/repo/index-v1.json @@ -104,6 +104,7 @@ "Development" ], "suggestedVersionCode": "99999999", + "liberapay": "12334", "license": "GPL-3.0-only", "name": "OBB Main Old Version", "sourceCode": "https://github.com/eighthave/urzip", @@ -184,8 +185,10 @@ "suggestedVersionCode": "2147483647", "description": "

It\u2019s Urzip \u662f\u4e00\u4e2a\u83b7\u5f97\u5df2\u5b89\u88c5 APK \u76f8\u5173\u4fe1\u606f\u7684\u5b9e\u7528\u5de5\u5177\u3002\u5b83\u4ece\u60a8\u7684\u8bbe\u5907\u4e0a\u5df2\u5b89\u88c5\u7684\u6240\u6709\u5e94\u7528\u5f00\u59cb\uff0c\u4e00\u952e\u89e6\u6478\u5373\u53ef\u663e\u793a APK \u7684\u6307\u7eb9\uff0c\u5e76\u4e14\u63d0\u4f9b\u5230\u8fbe virustotal.com \u548c androidobservatory.org \u7684\u5feb\u6377\u94fe\u63a5\uff0c\u8ba9\u60a8\u65b9\u4fbf\u5730\u4e86\u89e3\u7279\u5b9a APK \u7684\u6863\u6848\u3002\u5b83\u8fd8\u53ef\u4ee5\u8ba9\u60a8\u5bfc\u51fa\u7b7e\u540d\u8bc1\u4e66\u548c\u751f\u6210 ApkSignaturePin Pin \u6587\u4ef6\u4f9b TrustedIntents \u5e93\u4f7f\u7528\u3002

\u2605 Urzip \u652f\u6301\u4e0b\u5217\u8bed\u8a00\uff1a Deutsch, English, espa\u00f1ol, suomi, \u65e5\u672c\u8a9e, \ud55c\uad6d\uc5b4, Norsk, portugu\u00eas (Portugal), \u0420\u0443\u0441\u0441\u043a\u0438\u0439, Sloven\u0161\u010dina, T\u00fcrk\u00e7e \u6ca1\u770b\u5230\u60a8\u7684\u8bed\u8a00\uff1f\u5e2e\u5fd9\u7ffb\u8bd1\u672c\u5e94\u7528\u5427\uff1a https://www.transifex.com/projects/p/urzip

\u2605 \u81f4\u7528\u6237\uff1a\u6211\u4eec\u8fd8\u7f3a\u5c11\u4f60\u559c\u6b22\u7684\u529f\u80fd\uff1f\u53d1\u73b0\u4e86\u4e00\u4e2a bug\uff1f\u8bf7\u544a\u8bc9\u6211\u4eec\uff01\u6211\u4eec\u4e50\u4e8e\u542c\u53d6\u60a8\u7684\u610f\u89c1\u3002\u8bf7\u53d1\u9001\u7535\u5b50\u90ae\u4ef6\u81f3: support@guardianproject.info \u6216\u8005\u52a0\u5165\u6211\u4eec\u7684\u804a\u5929\u5ba4 https://guardianproject.info/contact

", "issueTracker": "https://dev.guardianproject.info/projects/urzip/issues", + "liberapayID": "9999999", "license": "GPL-3.0-only", "name": "urzip-\u03c0\u00c7\u00c7\u03c0\u00c7\u00c7\u73b0\u4ee3\u6c49\u8bed\u901a\u7528\u5b57-\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438-\u0639\u0631\u0628\u064a1234", + "openCollective": "f-droid-just-testing", "sourceCode": "https://github.com/guardianproject/urzip", "summary": "\u4e00\u4e2a\u5b9e\u7528\u5de5\u5177\uff0c\u83b7\u53d6\u5df2\u5b89\u88c5\u5728\u60a8\u7684\u8bbe\u5907\u4e0a\u7684\u5e94\u7528\u7684\u6709\u5173\u4fe1\u606f", "webSite": "https://dev.guardianproject.info/projects/urzip", @@ -677,4 +680,4 @@ } ] } -} \ No newline at end of file +} diff --git a/tests/repo/index.xml b/tests/repo/index.xml index 313e8876..20b526dc 100644 --- a/tests/repo/index.xml +++ b/tests/repo/index.xml @@ -357,6 +357,8 @@ https://github.com/guardianproject/urzip https://dev.guardianproject.info/projects/urzip/issues 1Fi5xUHiAPRKxHvyUGVFGt9extBe8Srdbk + 9999999 + f-droid-just-testing 2147483647 diff --git a/tests/run-tests b/tests/run-tests index 63e3b71b..c6248954 100755 --- a/tests/run-tests +++ b/tests/run-tests @@ -128,7 +128,7 @@ set -x # show each command as it is executed echo_header "run commit hooks" cd $WORKSPACE -./hooks/pre-commit +test -x ./hooks/pre-commit && ./hooks/pre-commit #------------------------------------------------------------------------------# @@ -305,80 +305,85 @@ cp $WORKSPACE/tests/urzip.apk \ $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py $fdroid update --pretty --nosign -echo "This will fail when jarsigner allows MD5 for APK signatures" -test `grep '' archive/index.xml | wc -l` -eq 5 -test `grep '' repo/index.xml | wc -l` -eq 7 - +if which apksigner; then + test `grep '' archive/index.xml | wc -l` -eq 2 + test `grep '' repo/index.xml | wc -l` -eq 10 +else + echo "This will fail when jarsigner allows MD5 for APK signatures" + test `grep '' archive/index.xml | wc -l` -eq 5 + test `grep '' repo/index.xml | wc -l` -eq 7 +fi #------------------------------------------------------------------------------# -echo_header 'test per-app "Archive Policy"' +if ! which apksigner; then + echo_header 'test per-app "Archive Policy"' -REPOROOT=`create_test_dir` -cd $REPOROOT -fdroid_init_with_prebuilt_keystore -echo "accepted_formats = ['txt']" >> config.py -test -d metadata || mkdir metadata -cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ -test -d repo || mkdir repo -cp $WORKSPACE/tests/repo/com.politedroid_[0-9].apk repo/ -$sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py + REPOROOT=`create_test_dir` + cd $REPOROOT + fdroid_init_with_prebuilt_keystore + echo "accepted_formats = ['txt']" >> config.py + test -d metadata || mkdir metadata + cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ + test -d repo || mkdir repo + cp $WORKSPACE/tests/repo/com.politedroid_[0-9].apk repo/ + $sed -i.tmp 's,archive_older = [0-9],archive_older = 3,' config.py -$fdroid update --pretty --nosign -test `grep '' archive/index.xml | wc -l` -eq 0 -test `grep '' repo/index.xml | wc -l` -eq 4 -grep -F com.politedroid_3.apk repo/index.xml -grep -F com.politedroid_4.apk repo/index.xml -grep -F com.politedroid_5.apk repo/index.xml -grep -F com.politedroid_6.apk repo/index.xml -test -e repo/com.politedroid_3.apk -test -e repo/com.politedroid_4.apk -test -e repo/com.politedroid_5.apk -test -e repo/com.politedroid_6.apk + $fdroid update --pretty --nosign + test `grep '' archive/index.xml | wc -l` -eq 0 + test `grep '' repo/index.xml | wc -l` -eq 4 + grep -F com.politedroid_3.apk repo/index.xml + grep -F com.politedroid_4.apk repo/index.xml + grep -F com.politedroid_5.apk repo/index.xml + grep -F com.politedroid_6.apk repo/index.xml + test -e repo/com.politedroid_3.apk + test -e repo/com.politedroid_4.apk + test -e repo/com.politedroid_5.apk + test -e repo/com.politedroid_6.apk -echo "enable one app in the repo" -$sed -i.tmp 's,^Archive Policy:4,Archive Policy:1,' metadata/com.politedroid.txt -$fdroid update --pretty --nosign -test `grep '' archive/index.xml | wc -l` -eq 3 -test `grep '' repo/index.xml | wc -l` -eq 1 -grep -F com.politedroid_3.apk archive/index.xml -grep -F com.politedroid_4.apk archive/index.xml -grep -F com.politedroid_5.apk archive/index.xml -grep -F com.politedroid_6.apk repo/index.xml -test -e archive/com.politedroid_3.apk -test -e archive/com.politedroid_4.apk -test -e archive/com.politedroid_5.apk -test -e repo/com.politedroid_6.apk + echo "enable one app in the repo" + $sed -i.tmp 's,^Archive Policy:4,Archive Policy:1,' metadata/com.politedroid.txt + $fdroid update --pretty --nosign + test `grep '' archive/index.xml | wc -l` -eq 3 + test `grep '' repo/index.xml | wc -l` -eq 1 + grep -F com.politedroid_3.apk archive/index.xml + grep -F com.politedroid_4.apk archive/index.xml + grep -F com.politedroid_5.apk archive/index.xml + grep -F com.politedroid_6.apk repo/index.xml + test -e archive/com.politedroid_3.apk + test -e archive/com.politedroid_4.apk + test -e archive/com.politedroid_5.apk + test -e repo/com.politedroid_6.apk -echo "remove all apps from the repo" -$sed -i.tmp 's,^Archive Policy:1,Archive Policy:0,' metadata/com.politedroid.txt -$fdroid update --pretty --nosign -test `grep '' archive/index.xml | wc -l` -eq 4 -test `grep '' repo/index.xml | wc -l` -eq 0 -grep -F com.politedroid_3.apk archive/index.xml -grep -F com.politedroid_4.apk archive/index.xml -grep -F com.politedroid_5.apk archive/index.xml -grep -F com.politedroid_6.apk archive/index.xml -test -e archive/com.politedroid_3.apk -test -e archive/com.politedroid_4.apk -test -e archive/com.politedroid_5.apk -test -e archive/com.politedroid_6.apk -! test -e repo/com.politedroid_6.apk - -echo "move back one from archive to the repo" -$sed -i.tmp 's,^Archive Policy:0,Archive Policy:1,' metadata/com.politedroid.txt -$fdroid update --pretty --nosign -test `grep '' archive/index.xml | wc -l` -eq 3 -test `grep '' repo/index.xml | wc -l` -eq 1 -grep -F com.politedroid_3.apk archive/index.xml -grep -F com.politedroid_4.apk archive/index.xml -grep -F com.politedroid_5.apk archive/index.xml -grep -F com.politedroid_6.apk repo/index.xml -test -e archive/com.politedroid_3.apk -test -e archive/com.politedroid_4.apk -test -e archive/com.politedroid_5.apk -! test -e archive/com.politedroid_6.apk -test -e repo/com.politedroid_6.apk + echo "remove all apps from the repo" + $sed -i.tmp 's,^Archive Policy:1,Archive Policy:0,' metadata/com.politedroid.txt + $fdroid update --pretty --nosign + test `grep '' archive/index.xml | wc -l` -eq 4 + test `grep '' repo/index.xml | wc -l` -eq 0 + grep -F com.politedroid_3.apk archive/index.xml + grep -F com.politedroid_4.apk archive/index.xml + grep -F com.politedroid_5.apk archive/index.xml + grep -F com.politedroid_6.apk archive/index.xml + test -e archive/com.politedroid_3.apk + test -e archive/com.politedroid_4.apk + test -e archive/com.politedroid_5.apk + test -e archive/com.politedroid_6.apk + ! test -e repo/com.politedroid_6.apk + echo "move back one from archive to the repo" + $sed -i.tmp 's,^Archive Policy:0,Archive Policy:1,' metadata/com.politedroid.txt + $fdroid update --pretty --nosign + test `grep '' archive/index.xml | wc -l` -eq 3 + test `grep '' repo/index.xml | wc -l` -eq 1 + grep -F com.politedroid_3.apk archive/index.xml + grep -F com.politedroid_4.apk archive/index.xml + grep -F com.politedroid_5.apk archive/index.xml + grep -F com.politedroid_6.apk repo/index.xml + test -e archive/com.politedroid_3.apk + test -e archive/com.politedroid_4.apk + test -e archive/com.politedroid_5.apk + ! test -e archive/com.politedroid_6.apk + test -e repo/com.politedroid_6.apk +fi #------------------------------------------------------------------------------# @@ -505,29 +510,31 @@ test -e repo/org.bitbucket.tickytacky.mirrormirror_3.apk test -e repo/org.bitbucket.tickytacky.mirrormirror_4.apk test -e archive/urzip-badsig.apk -$sed -i.tmp '/allow_disabled_algorithms/d' config.py -$fdroid update --pretty --nosign -test `grep '' archive/index.xml | wc -l` -eq 5 -test `grep '' repo/index.xml | wc -l` -eq 3 -grep -F org.bitbucket.tickytacky.mirrormirror_1.apk archive/index.xml -grep -F org.bitbucket.tickytacky.mirrormirror_2.apk archive/index.xml -grep -F org.bitbucket.tickytacky.mirrormirror_3.apk archive/index.xml -grep -F org.bitbucket.tickytacky.mirrormirror_4.apk archive/index.xml -grep -F com.politedroid_3.apk archive/index.xml -grep -F com.politedroid_4.apk repo/index.xml -grep -F com.politedroid_5.apk repo/index.xml -grep -F com.politedroid_6.apk repo/index.xml -! grep -F urzip-badsig.apk repo/index.xml -! grep -F urzip-badsig.apk archive/index.xml -test -e archive/org.bitbucket.tickytacky.mirrormirror_1.apk -test -e archive/org.bitbucket.tickytacky.mirrormirror_2.apk -test -e archive/org.bitbucket.tickytacky.mirrormirror_3.apk -test -e archive/org.bitbucket.tickytacky.mirrormirror_4.apk -test -e archive/com.politedroid_3.apk -test -e archive/urzip-badsig.apk -test -e repo/com.politedroid_4.apk -test -e repo/com.politedroid_5.apk -test -e repo/com.politedroid_6.apk +if ! which apksigner; then + $sed -i.tmp '/allow_disabled_algorithms/d' config.py + $fdroid update --pretty --nosign + test `grep '' archive/index.xml | wc -l` -eq 5 + test `grep '' repo/index.xml | wc -l` -eq 3 + grep -F org.bitbucket.tickytacky.mirrormirror_1.apk archive/index.xml + grep -F org.bitbucket.tickytacky.mirrormirror_2.apk archive/index.xml + grep -F org.bitbucket.tickytacky.mirrormirror_3.apk archive/index.xml + grep -F org.bitbucket.tickytacky.mirrormirror_4.apk archive/index.xml + grep -F com.politedroid_3.apk archive/index.xml + grep -F com.politedroid_4.apk repo/index.xml + grep -F com.politedroid_5.apk repo/index.xml + grep -F com.politedroid_6.apk repo/index.xml + ! grep -F urzip-badsig.apk repo/index.xml + ! grep -F urzip-badsig.apk archive/index.xml + test -e archive/org.bitbucket.tickytacky.mirrormirror_1.apk + test -e archive/org.bitbucket.tickytacky.mirrormirror_2.apk + test -e archive/org.bitbucket.tickytacky.mirrormirror_3.apk + test -e archive/org.bitbucket.tickytacky.mirrormirror_4.apk + test -e archive/com.politedroid_3.apk + test -e archive/urzip-badsig.apk + test -e repo/com.politedroid_4.apk + test -e repo/com.politedroid_5.apk + test -e repo/com.politedroid_6.apk +fi #------------------------------------------------------------------------------# @@ -636,19 +643,21 @@ $fdroid install || true #------------------------------------------------------------------------------# -echo_header "create a source tarball" +# only run this test if running from a git repo, not all files are in the tarball +if [ -e .git/config ]; then + echo_header "create a source tarball" -cd $WORKSPACE -./setup.py compile_catalog sdist - -REPOROOT=`create_test_dir` -cd $REPOROOT -tar xzf `ls -1 $WORKSPACE/dist/fdroidserver-*.tar.gz | sort -n | tail -1` -cd $REPOROOT -./fdroidserver-*/fdroid init -copy_apks_into_repo $REPOROOT -./fdroidserver-*/fdroid update --create-metadata --verbose + cd $WORKSPACE + ./setup.py compile_catalog sdist + REPOROOT=`create_test_dir` + cd $REPOROOT + tar xzf `ls -1 $WORKSPACE/dist/fdroidserver-*.tar.gz | sort -n | tail -1` + cd $REPOROOT + ./fdroidserver-*/fdroid init + copy_apks_into_repo $REPOROOT + ./fdroidserver-*/fdroid update --create-metadata --verbose +fi #------------------------------------------------------------------------------# echo_header "test config checks of local_copy_dir" @@ -1104,6 +1113,35 @@ if have_git_2_3; then fi +#------------------------------------------------------------------------------# +echo_header 'test extracting and publishing with developer signature' + +REPOROOT=`create_test_dir` +cd $REPOROOT +fdroid_init_with_prebuilt_keystore +echo "accepted_formats = ['txt']" >> config.py +echo 'keydname = "CN=Birdman, OU=Cell, O=Alcatraz, L=Alcatraz, S=California, C=US"' >> config.py +test -d metadata || mkdir metadata +cp $WORKSPACE/tests/metadata/com.politedroid.txt metadata/ +test -d repo || mkdir repo +test -d unsigned || mkdir unsigned +cp $WORKSPACE/tests/repo/com.politedroid_6.apk unsigned/ +$fdroid signatures unsigned/com.politedroid_6.apk +test -d metadata/com.politedroid/signatures/6 +test -f metadata/com.politedroid/signatures/6/MANIFEST.MF +test -f metadata/com.politedroid/signatures/6/RELEASE.RSA +test -f metadata/com.politedroid/signatures/6/RELEASE.SF +! test -f repo/com.politedroid_6.apk +$fdroid publish +test -f repo/com.politedroid_6.apk +if which jarsigner; then + jarsigner -verify repo/com.politedroid_6.apk +fi +if which apksigner; then + apksigner verify repo/com.politedroid_6.apk +fi + + #------------------------------------------------------------------------------# # remove this to prevent git conflicts and complaining diff --git a/tests/update.TestCase b/tests/update.TestCase index 1210c78e..f9a46d88 100755 --- a/tests/update.TestCase +++ b/tests/update.TestCase @@ -408,13 +408,16 @@ class UpdateTest(unittest.TestCase): print('USE_ANDROGUARD', use_androguard) - apksigner = fdroidserver.common.find_sdk_tools_cmd('apksigner') - if use_androguard and apksigner: # v2 parsing needs both - config['apksigner'] = apksigner - apk_info = fdroidserver.update.scan_apk('v2.only.sig_2.apk') - self.assertIsNone(apk_info.get('maxSdkVersion')) - self.assertEqual(apk_info.get('versionName'), 'v2-only') - self.assertEqual(apk_info.get('versionCode'), 2) + try: + apksigner = fdroidserver.common.find_sdk_tools_cmd('apksigner') + if use_androguard and apksigner: # v2 parsing needs both + config['apksigner'] = apksigner + apk_info = fdroidserver.update.scan_apk('v2.only.sig_2.apk') + self.assertIsNone(apk_info.get('maxSdkVersion')) + self.assertEqual(apk_info.get('versionName'), 'v2-only') + self.assertEqual(apk_info.get('versionCode'), 2) + except fdroidserver.exception.FDroidException: + print('WARNING: skipping v2-only test since apksigner cannot be found') apk_info = fdroidserver.update.scan_apk('repo/v1.v2.sig_1020.apk') self.assertIsNone(apk_info.get('maxSdkVersion')) @@ -622,6 +625,10 @@ class UpdateTest(unittest.TestCase): self.assertFalse(os.path.exists(os.path.join('archive', apkName))) self.assertTrue(os.path.exists(os.path.join('repo', apkName))) + if os.path.exists('/usr/bin/apksigner') or 'apksigner' in config: + print('SKIPPING: apksigner installed and it allows MD5 signatures') + return + javac = config['jarsigner'].replace('jarsigner', 'javac') v = subprocess.check_output([javac, '-version'], stderr=subprocess.STDOUT)[6:-1].decode('utf-8') if LooseVersion(v) < LooseVersion('1.8.0_132'):