'
+ '\n\ngenerated by GitLab CI Job #%s
'
+ % (os.getenv('CI_PROJECT_URL'), os.getenv('CI_JOB_ID'), os.getenv('CI_JOB_ID'))
+ )
+ try:
+ mr = project.mergerequests.create({
+ 'source_branch': branch.name,
+ 'target_project_id': 36527, # fdroid/fdroidserver
+ 'target_branch': 'master',
+ 'title': 'update to gradle v' + version,
+ 'description': description,
+ 'labels': ['fdroid-bot', 'gradle'],
+ 'remove_source_branch': True,
+ })
+ mr.save()
+ except gitlab.exceptions.GitlabCreateError as e:
+ if e.response_code == 409: # Another open merge request already exists for this source branch
+ print(e.error_message)
+ else:
+ raise e
diff --git a/tests/key-tricks.py b/tests/key-tricks.py
index a01bf0bf..7fc0f3ea 100755
--- a/tests/key-tricks.py
+++ b/tests/key-tricks.py
@@ -1,10 +1,9 @@
#!/usr/bin/env python3
import os
+import fdroidserver
import shutil
import sys
-
-import fdroidserver
from fdroidserver import common, nightly
if os.getenv('CI') is None:
diff --git a/tests/metadata-rewrite-yml/app.with.special.build.params.yml b/tests/metadata-rewrite-yml/app.with.special.build.params.yml
index 95c1695c..0fc97b65 100644
--- a/tests/metadata-rewrite-yml/app.with.special.build.params.yml
+++ b/tests/metadata-rewrite-yml/app.with.special.build.params.yml
@@ -1,5 +1,5 @@
AntiFeatures:
- - Tracking
+ - UpstreamNonFree
Categories:
- System
License: GPL-3.0-only
diff --git a/tests/metadata/app.with.special.build.params.yml b/tests/metadata/app.with.special.build.params.yml
index c58cadf1..d12c713c 100644
--- a/tests/metadata/app.with.special.build.params.yml
+++ b/tests/metadata/app.with.special.build.params.yml
@@ -1,5 +1,5 @@
AntiFeatures:
- - Tracking
+ - UpstreamNonFree
Categories:
- System
License: GPL-3.0-only
diff --git a/tests/metadata/com.politedroid.yml b/tests/metadata/com.politedroid.yml
index 87d13bcb..cd474d6c 100644
--- a/tests/metadata/com.politedroid.yml
+++ b/tests/metadata/com.politedroid.yml
@@ -22,6 +22,7 @@ Builds:
target: android-10
antifeatures:
- KnownVuln
+ - UpstreamNonFree
- NonFreeAssets
- versionName: '1.3'
@@ -42,6 +43,7 @@ Builds:
- yes
antifeatures:
- KnownVuln
+ - UpstreamNonFree
- NonFreeAssets
ArchivePolicy: 4 versions
diff --git a/tests/metadata/dump/app.with.special.build.params.yaml b/tests/metadata/dump/app.with.special.build.params.yaml
index fae6c9ae..9f2c61f6 100644
--- a/tests/metadata/dump/app.with.special.build.params.yaml
+++ b/tests/metadata/dump/app.with.special.build.params.yaml
@@ -2,7 +2,7 @@
---
AllowedAPKSigningKeys: []
AntiFeatures:
- Tracking: {}
+ UpstreamNonFree: {}
ArchivePolicy: 0
AuthorEmail: null
AuthorName: null
diff --git a/tests/metadata/dump/com.politedroid.yaml b/tests/metadata/dump/com.politedroid.yaml
index 01d55b82..b4d56c3e 100644
--- a/tests/metadata/dump/com.politedroid.yaml
+++ b/tests/metadata/dump/com.politedroid.yaml
@@ -19,6 +19,7 @@ Builds:
antifeatures:
KnownVuln: {}
NonFreeAssets: {}
+ UpstreamNonFree: {}
binary: null
build: ''
buildjni: []
@@ -126,6 +127,7 @@ Builds:
antifeatures:
KnownVuln: {}
NonFreeAssets: {}
+ UpstreamNonFree: {}
binary: null
build: ''
buildjni: []
diff --git a/tests/openssl-version-check-test.py b/tests/openssl-version-check-test.py
index 69a1ff59..d4022126 100755
--- a/tests/openssl-version-check-test.py
+++ b/tests/openssl-version-check-test.py
@@ -6,7 +6,6 @@
# This is used in update.has_known_vulnerability()
import re
-
import requests
# this list was generated using:
diff --git a/tests/repo/entry.json b/tests/repo/entry.json
index 85b6b14f..1eb017bc 100644
--- a/tests/repo/entry.json
+++ b/tests/repo/entry.json
@@ -3,8 +3,8 @@
"version": 20002,
"index": {
"name": "/index-v2.json",
- "sha256": "94dca5f4398d2a0167bbe69c790cdd66f1bc305ca5e362ee5e3f793e9f88e3cf",
- "size": 53355,
+ "sha256": "f0912b64db80168ee807f43ab3470bb709b6659aee05ad63057dcbcd1c97dc5e",
+ "size": 55186,
"numPackages": 11
},
"diffs": {}
diff --git a/tests/repo/index-v1.json b/tests/repo/index-v1.json
index 03f8f060..ed1cbcde 100644
--- a/tests/repo/index-v1.json
+++ b/tests/repo/index-v1.json
@@ -244,7 +244,8 @@
"added": 1498176000000,
"antiFeatures": [
"KnownVuln",
- "NonFreeAssets"
+ "NonFreeAssets",
+ "UpstreamNonFree"
],
"apkName": "com.politedroid_6.apk",
"hash": "70c2f776a2bac38a58a7d521f96ee0414c6f0fb1de973c3ca8b10862a009247d",
@@ -331,7 +332,8 @@
"added": 1498176000000,
"antiFeatures": [
"KnownVuln",
- "NonFreeAssets"
+ "NonFreeAssets",
+ "UpstreamNonFree"
],
"apkName": "com.politedroid_3.apk",
"hash": "665d03d61ebc642289fda697f71a59305b0202b16cafc5ffdae91cbe91f0b25d",
diff --git a/tests/repo/index-v2.json b/tests/repo/index-v2.json
index 263dffd2..96c2cfea 100644
--- a/tests/repo/index-v2.json
+++ b/tests/repo/index-v2.json
@@ -453,6 +453,49 @@
"ro": "Urmărire",
"zh-rCN": "跟踪用户"
}
+ },
+ "UpstreamNonFree": {
+ "description": {
+ "de": "Der Originalcode ist nicht völlig quelloffen",
+ "en-US": "The upstream source code is not entirely Free",
+ "fa": "کد مبدأ بالادستی کاملاً آزاد نیست",
+ "ro": "Codul sursa originar nu este în totalitatea lui software liber",
+ "zh-rCN": "上游源代码不是完全自由的"
+ },
+ "icon": {
+ "de": {
+ "name": "/icons/ic_antifeature_upstreamnonfree.xml",
+ "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86",
+ "size": 1442
+ },
+ "en-US": {
+ "name": "/icons/ic_antifeature_upstreamnonfree.xml",
+ "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86",
+ "size": 1442
+ },
+ "fa": {
+ "name": "/icons/ic_antifeature_upstreamnonfree.xml",
+ "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86",
+ "size": 1442
+ },
+ "ro": {
+ "name": "/icons/ic_antifeature_upstreamnonfree.xml",
+ "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86",
+ "size": 1442
+ },
+ "zh-rCN": {
+ "name": "/icons/ic_antifeature_upstreamnonfree.xml",
+ "sha256": "06a9af843ff56ecd7a270f98c0b19b3154edf3ffa854e6d50a84ef00d0ce1a86",
+ "size": 1442
+ }
+ },
+ "name": {
+ "de": "Originalcode nicht-quelloffen",
+ "en-US": "Upstream Non-Free",
+ "fa": "بالادست ناآزاد",
+ "ro": "Surse ne-libere",
+ "zh-rCN": "上游代码非自由"
+ }
}
},
"categories": {
@@ -584,7 +627,8 @@
"en-US": "1.5"
},
"NonFreeAssets": {},
- "NonFreeNet": {}
+ "NonFreeNet": {},
+ "UpstreamNonFree": {}
}
},
"5bdbfa071cca4b8d05ced41d6b28763595d6e8096cca5bbf0f9253c9a2622e5d": {
@@ -712,7 +756,8 @@
"en-US": "1.5"
},
"NonFreeAssets": {},
- "NonFreeNet": {}
+ "NonFreeNet": {},
+ "UpstreamNonFree": {}
}
}
}
diff --git a/tests/repo/index.xml b/tests/repo/index.xml
index 04e8f87d..4036a6f7 100644
--- a/tests/repo/index.xml
+++ b/tests/repo/index.xml
@@ -346,7 +346,7 @@ APK is called F-Droid Privileged Extension.
https://github.com/miguelvps/PoliteDroid/issues
1.5
6
- KnownVuln,NoSourceSince,NonFreeAssets,NonFreeNet
+ KnownVuln,NoSourceSince,NonFreeAssets,NonFreeNet,UpstreamNonFree
1.5
6
diff --git a/tests/shared_test_code.py b/tests/shared_test_code.py
index 3e34900b..59f515a7 100644
--- a/tests/shared_test_code.py
+++ b/tests/shared_test_code.py
@@ -20,8 +20,10 @@ import sys
import tempfile
import unittest
import unittest.mock
+
from pathlib import Path
+
GP_FINGERPRINT = 'B7C2EEFD8DAC7806AF67DFCD92EB18126BC08312A7F2D6F3862E46013C7A6135'
diff --git a/tests/test_api.py b/tests/test_api.py
index ba18caa6..6cb9a53b 100755
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -8,9 +8,9 @@ from unittest import mock
import fdroidserver
from fdroidserver import common, signindex
-
from .shared_test_code import GP_FINGERPRINT, mkdtemp
+
basedir = Path(__file__).parent
diff --git a/tests/test_build.py b/tests/test_build.py
index 578837ed..f7558c8c 100755
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -6,16 +6,15 @@ import sys
import tempfile
import textwrap
import unittest
+import yaml
from pathlib import Path
from unittest import mock
-import yaml
+from .shared_test_code import TmpCwd, mkdtemp
import fdroidserver.build
import fdroidserver.common
-from .shared_test_code import TmpCwd, mkdtemp
-
class FakeProcess:
output = 'fake output'
diff --git a/tests/test_checkupdates.py b/tests/test_checkupdates.py
index 107caf29..4cc76db3 100755
--- a/tests/test_checkupdates.py
+++ b/tests/test_checkupdates.py
@@ -1,19 +1,19 @@
#!/usr/bin/env python3
+import git
import os
import platform
import shutil
import tempfile
import time
import unittest
-from pathlib import Path
from unittest import mock
-
-import git
+from pathlib import Path
import fdroidserver
import fdroidserver.checkupdates
+
basedir = Path(__file__).parent
diff --git a/tests/test_common.py b/tests/test_common.py
index 3110b446..1f6ff947 100755
--- a/tests/test_common.py
+++ b/tests/test_common.py
@@ -1,44 +1,40 @@
#!/usr/bin/env python3
import difflib
+import git
import glob
-import gzip
import importlib
import json
import logging
import os
import re
+import ruamel.yaml
import shutil
import subprocess
import sys
import tempfile
-import textwrap
import time
import unittest
+import textwrap
+import gzip
from argparse import ArgumentParser
from datetime import datetime, timezone
-from pathlib import Path
-from unittest import mock
from zipfile import BadZipFile, ZipFile
+from unittest import mock
+from pathlib import Path
-import git
-import ruamel.yaml
import fdroidserver
+import fdroidserver.signindex
import fdroidserver.common
import fdroidserver.metadata
-import fdroidserver.signindex
-from fdroidserver._yaml import config_dump, yaml, yaml_dumper
+from .shared_test_code import TmpCwd, mkdtemp, mkdir_testfiles
from fdroidserver.common import ANTIFEATURES_CONFIG_NAME, CATEGORIES_CONFIG_NAME
-from fdroidserver.exception import (
- FDroidException,
- MetaDataException,
- VCSException,
- VerificationException,
-)
+from fdroidserver._yaml import yaml, yaml_dumper, config_dump
+from fdroidserver.exception import FDroidException, VCSException,\
+ MetaDataException, VerificationException
from fdroidserver.looseversion import LooseVersion
-from .shared_test_code import TmpCwd, mkdir_testfiles, mkdtemp
basedir = Path(__file__).parent
@@ -2419,9 +2415,8 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase):
@mock.patch('sdkmanager._generate_package_xml', lambda a, b, c: None)
def test_auto_install_ndk_mock_dl(self):
"""Test NDK installs by actually calling sdkmanager"""
- import importlib.metadata
-
import sdkmanager
+ import importlib.metadata
sdkmanager_version = LooseVersion(importlib.metadata.version('sdkmanager'))
if sdkmanager_version < LooseVersion('0.6.4'):
@@ -2784,6 +2779,7 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase):
'NonFreeDep',
'NonFreeNet',
'Tracking',
+ 'UpstreamNonFree',
],
list(antiFeatures.keys()),
)
@@ -2819,46 +2815,6 @@ class CommonTest(SetUpTearDownMixin, unittest.TestCase):
)
self.assertEqual(['en-US'], list(categories['GuardianProject']['name'].keys()))
- def test_load_localized_config_copy_icon(self):
- os.chdir(self.testdir)
- os.mkdir('config')
- Path('config/categories.yml').write_text('System:\n icon: system.png')
- source_file = 'config/system.png'
- Path(source_file).write_text('placeholder')
- time.sleep(0.01) # ensure reliable failure if mtime isn't preserved
- fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo')
- dest_file = f'repo/icons/{os.path.basename(source_file)}'
- self.assertEqual(os.path.getsize(source_file), os.path.getsize(dest_file))
- self.assertEqual(os.path.getmtime(source_file), os.path.getmtime(dest_file))
-
- def test_load_localized_config_copy_unchanged(self):
- """The destination file should only change if the source file did."""
- os.chdir(self.testdir)
- os.mkdir('config')
- Path('config/categories.yml').write_text('System:\n icon: system.png')
- source_file = 'config/system.png'
- Path(source_file).write_text('placeholder')
- fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo')
- delta = 0.01
- time.sleep(delta) # ensure reliable failure if file isn't preserved
- fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo')
- dest_file = f'repo/icons/{os.path.basename(source_file)}'
- self.assertAlmostEqual(
- os.path.getctime(source_file), os.path.getctime(dest_file), delta=delta
- )
-
- def test_load_localized_config_copy_over_dest(self):
- os.chdir(self.testdir)
- os.mkdir('config')
- Path('config/categories.yml').write_text('System:\n icon: system.png')
- source_file = Path('config/system.png')
- dest_file = Path(f'repo/icons/{os.path.basename(source_file)}')
- source_file.write_text('placeholder')
- dest_file.parent.mkdir(parents=True)
- dest_file.write_text('different contents')
- fdroidserver.common.load_localized_config(CATEGORIES_CONFIG_NAME, 'repo')
- self.assertEqual(os.path.getsize(source_file), os.path.getsize(dest_file))
-
def test_load_localized_config_0_file(self):
os.chdir(self.testdir)
os.mkdir('config')
diff --git a/tests/test_deploy.py b/tests/test_deploy.py
index 60d157c3..b821725c 100755
--- a/tests/test_deploy.py
+++ b/tests/test_deploy.py
@@ -11,8 +11,7 @@ from unittest import mock
import git
import fdroidserver
-
-from .shared_test_code import TmpCwd, VerboseFalseOptions, mkdtemp
+from .shared_test_code import TmpCwd, mkdtemp, VerboseFalseOptions
basedir = Path(__file__).parent
diff --git a/tests/test_exception.py b/tests/test_exception.py
index 01a6cd46..accc6653 100755
--- a/tests/test_exception.py
+++ b/tests/test_exception.py
@@ -1,7 +1,6 @@
#!/usr/bin/env python3
import unittest
-
import fdroidserver
diff --git a/tests/test_github.py b/tests/test_github.py
index f30ce0bb..39514c5d 100755
--- a/tests/test_github.py
+++ b/tests/test_github.py
@@ -3,9 +3,8 @@
import unittest
import unittest.mock
-import fdroidserver
-
from .shared_test_code import mock_urlopen
+import fdroidserver
class GithubApiTest(unittest.TestCase):
diff --git a/tests/test_gpgsign.py b/tests/test_gpgsign.py
index 84634874..f73b217e 100755
--- a/tests/test_gpgsign.py
+++ b/tests/test_gpgsign.py
@@ -5,10 +5,10 @@ import os
import shutil
import tempfile
import unittest
-from pathlib import Path
-from unittest.mock import MagicMock, patch
from fdroidserver import common, gpgsign
+from pathlib import Path
+from unittest.mock import MagicMock, patch
basedir = Path(__file__).parent
diff --git a/tests/test_gradlew-fdroid b/tests/test_gradlew-fdroid
new file mode 100755
index 00000000..26d9bf5b
--- /dev/null
+++ b/tests/test_gradlew-fdroid
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+red='\033[0;31m'
+green='\033[0;32m'
+nocolor='\033[0m'
+
+TEST_VALUE='HELLO WORLD!'
+
+run_test() {
+ cd $source_files/$1
+ printf "\n${1}:\n"
+ if ($basedir/gradlew-fdroid 2>/dev/null || true) | grep -Fo "$2"; then
+ printf "${green}passed: $1\n"
+ else
+ printf "${red}ERROR: $2 not found in $1\n"
+ ((exit_value++))
+ fi
+ printf $nocolor
+}
+
+download_cache_test() {
+ if $basedir/gradlew-fdroid helloWorld 2>/dev/null | grep -F "$TEST_VALUE"; then
+ printf "${green}passed: $1\n"
+ else
+ printf "${red}ERROR: \n"
+ $basedir/gradlew-fdroid helloWorld
+ ((exit_value++))
+ fi
+ printf $nocolor
+}
+
+exit_value=0
+basedir=$(cd $(dirname $0)/..; pwd)
+source_files=$basedir/tests/source-files
+export https_proxy=127.7.7.7:7 # fake proxy to block downloading
+
+run_test osmandapp/osmand 2.2.1
+run_test com.integreight.onesheeld 3.3
+run_test se.manyver/android 5.5
+run_test yuriykulikov/AlarmClock 5.1.1
+
+printf "\n\nforce test files to have Windows linefeeds:\n"
+tmpdir=`mktemp -d`
+cp -a $source_files/osmandapp $source_files/yuriykulikov $tmpdir/
+awk 'sub("$", "\r")' \
+ $source_files/yuriykulikov/AlarmClock/gradle/wrapper/gradle-wrapper.properties \
+ > $tmpdir/yuriykulikov/AlarmClock/gradle/wrapper/gradle-wrapper.properties
+awk 'sub("$", "\r")' \
+ $source_files/osmandapp/osmand/build.gradle \
+ > $tmpdir/osmandapp/osmand/build.gradle
+source_files=$tmpdir
+
+run_test yuriykulikov/AlarmClock 5.1.1
+run_test osmandapp/osmand 2.2.1
+
+cd $tmpdir
+mkdir -p download_cache_test/gradle/wrapper
+cd download_cache_test
+echo 'distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip' \
+ > gradle/wrapper/gradle-wrapper.properties
+printf "task helloWorld {\n\tdoLast {\n\t\tprintln '$TEST_VALUE'\n\t}\n}" > build.gradle
+
+export GRADLE_VERSION_DIR=$tmpdir/gradle/versions
+mkdir -p $GRADLE_VERSION_DIR
+
+unset https_proxy
+printf "download, unpack, and run: "
+download_cache_test 7.3
+printf "unpack and run: "
+rm -rf $GRADLE_VERSION_DIR/7.3/
+download_cache_test 7.3
+printf "just run: "
+download_cache_test 7.3
+
+exit $exit_value
diff --git a/tests/test_import_subcommand.py b/tests/test_import_subcommand.py
index 530e10fb..05e2c379 100755
--- a/tests/test_import_subcommand.py
+++ b/tests/test_import_subcommand.py
@@ -13,11 +13,11 @@ import git
import requests
import yaml
+from .shared_test_code import TmpCwd, mkdtemp, VerboseFalseOptions
+
import fdroidserver
import fdroidserver.import_subcommand
-from .shared_test_code import TmpCwd, VerboseFalseOptions, mkdtemp
-
basedir = Path(__file__).parent
logging.basicConfig(level=logging.DEBUG)
diff --git a/tests/test_index.py b/tests/test_index.py
index c8ff5cbe..b4973d79 100755
--- a/tests/test_index.py
+++ b/tests/test_index.py
@@ -3,23 +3,22 @@
import copy
import datetime
import glob
-import json
import os
-import shutil
-import tempfile
import unittest
-import zipfile
from pathlib import Path
-from unittest.mock import patch
-
-import requests
import yaml
+import zipfile
+from unittest.mock import patch
+import requests
+import tempfile
+import json
+import shutil
import fdroidserver
from fdroidserver import common, index, publish, signindex, update
-
from .shared_test_code import GP_FINGERPRINT, TmpCwd, mkdtemp
+
basedir = Path(__file__).parent
diff --git a/tests/test_init.py b/tests/test_init.py
index a038493b..179f06c7 100755
--- a/tests/test_init.py
+++ b/tests/test_init.py
@@ -8,7 +8,6 @@ import unittest
import fdroidserver.common
import fdroidserver.init
-
from .shared_test_code import mkdtemp
basedir = pathlib.Path(__file__).parent
diff --git a/tests/test_install.py b/tests/test_install.py
index aa239d4d..b4e404d5 100755
--- a/tests/test_install.py
+++ b/tests/test_install.py
@@ -3,6 +3,7 @@
import os
import textwrap
import unittest
+
from pathlib import Path
from unittest.mock import Mock, patch
diff --git a/tests/test_integration.py b/tests/test_integration.py
index 6d757b1e..76a7e82b 100755
--- a/tests/test_integration.py
+++ b/tests/test_integration.py
@@ -18,7 +18,6 @@ except ModuleNotFoundError:
from androguard.core.apk import get_apkid
from fdroidserver._yaml import yaml, yaml_dumper
-
from .shared_test_code import mkdir_testfiles
# TODO: port generic tests that use index.xml to index-v2 (test that
diff --git a/tests/test_lint.py b/tests/test_lint.py
index 37b7ce95..f0bf6b4d 100755
--- a/tests/test_lint.py
+++ b/tests/test_lint.py
@@ -9,13 +9,13 @@ import unittest
from pathlib import Path
from unittest import mock
+from .shared_test_code import mkdtemp
+
import fdroidserver.common
import fdroidserver.lint
import fdroidserver.metadata
from fdroidserver._yaml import config_dump
-from .shared_test_code import mkdtemp
-
basedir = Path(__file__).parent
@@ -510,7 +510,7 @@ class LintAntiFeaturesTest(unittest.TestCase):
def test_check_antiFeatures(self):
app = fdroidserver.metadata.App()
- app['AntiFeatures'] = ['Ads', 'Tracking']
+ app['AntiFeatures'] = ['Ads', 'UpstreamNonFree']
self.assertEqual([], list(fdroidserver.lint.check_antiFeatures(app)))
def test_check_antiFeatures_fails_one(self):
diff --git a/tests/test_main.py b/tests/test_main.py
index 68984088..50fda3e2 100755
--- a/tests/test_main.py
+++ b/tests/test_main.py
@@ -2,13 +2,12 @@
import os
import pkgutil
-import tempfile
import textwrap
import unittest
+import tempfile
from unittest import mock
import fdroidserver.__main__
-
from .shared_test_code import TmpCwd, TmpPyPath
diff --git a/tests/test_metadata.py b/tests/test_metadata.py
index 84040024..8c3f7591 100755
--- a/tests/test_metadata.py
+++ b/tests/test_metadata.py
@@ -4,24 +4,23 @@ import copy
import io
import os
import random
+import ruamel.yaml
import shutil
+import unittest
import tempfile
import textwrap
-import unittest
from collections import OrderedDict
from pathlib import Path
from unittest import mock
-import ruamel.yaml
-
import fdroidserver
from fdroidserver import metadata
-from fdroidserver._yaml import yaml
-from fdroidserver.common import DEFAULT_LOCALE
from fdroidserver.exception import MetaDataException
-
+from fdroidserver.common import DEFAULT_LOCALE
+from fdroidserver._yaml import yaml
from .shared_test_code import TmpCwd, mkdtemp
+
basedir = Path(__file__).parent
@@ -672,7 +671,7 @@ class MetadataTest(unittest.TestCase):
"""Definitions in .yml files should override the localized versions."""
app = metadata.parse_metadata('metadata/app.with.special.build.params.yml')
- self.assertEqual(app['AntiFeatures'], {'Tracking': {}})
+ self.assertEqual(app['AntiFeatures'], {'UpstreamNonFree': {}})
self.assertEqual(49, app['Builds'][-3]['versionCode'])
self.assertEqual(
@@ -961,6 +960,7 @@ class MetadataTest(unittest.TestCase):
- versionCode: 123
antifeatures:
- KnownVuln
+ - UpstreamNonFree
- NonFreeAssets
"""
)
@@ -971,7 +971,11 @@ class MetadataTest(unittest.TestCase):
'AntiFeatures': {'Ads': {}},
'Builds': [
{
- 'antifeatures': {'KnownVuln': {}, 'NonFreeAssets': {}},
+ 'antifeatures': {
+ 'KnownVuln': {},
+ 'NonFreeAssets': {},
+ 'UpstreamNonFree': {},
+ },
'versionCode': 123,
}
],
@@ -992,7 +996,7 @@ class MetadataTest(unittest.TestCase):
es: 2nd
az: zero
en-US: first
- Tracking:
+ UpstreamNonFree:
NonFreeAssets:
AntiFeatures:
NonFreeDep:
@@ -1014,7 +1018,7 @@ class MetadataTest(unittest.TestCase):
'antifeatures': {
'KnownVuln': {'az': 'zero', 'en-US': 'first', 'es': '2nd'},
'NonFreeAssets': {},
- 'Tracking': {},
+ 'UpstreamNonFree': {},
},
'versionCode': 123,
}
@@ -1868,6 +1872,7 @@ class MetadataTest(unittest.TestCase):
antifeatures:
- KnownVuln
- NonFreeAssets
+ - UpstreamNonFree
ArchivePolicy: 4
AutoUpdateMode: Version v%v
diff --git a/tests/test_net.py b/tests/test_net.py
index beacd9af..581edcfb 100755
--- a/tests/test_net.py
+++ b/tests/test_net.py
@@ -2,17 +2,16 @@
import os
import random
+import requests
import socket
import tempfile
import threading
import time
import unittest
-from pathlib import Path
from unittest.mock import MagicMock, patch
-import requests
-
from fdroidserver import net
+from pathlib import Path
class RetryServer:
diff --git a/tests/test_nightly.py b/tests/test_nightly.py
index fb1614b7..681df96d 100755
--- a/tests/test_nightly.py
+++ b/tests/test_nightly.py
@@ -2,19 +2,20 @@
import os
import platform
+import requests
import shutil
import subprocess
import tempfile
import time
import unittest
+import yaml
+
from pathlib import Path
from unittest.mock import patch
-import requests
-import yaml
-
from fdroidserver import common, exception, index, nightly
+
DEBUG_KEYSTORE = '/u3+7QAAAAIAAAABAAAAAQAPYW5kcm9pZGRlYnVna2V5AAABNYhAuskAAAK8MIICuDAOBgorBgEEASoCEQEBBQAEggKkqRnFlhidQmVff83bsAeewXPIsF0jiymzJnvrnUAQtCK0MV9uZonu37Mrj/qKLn56mf6QcvEoKvpCstZxzftgYYpAHWMVLM+hy2Z707QZEHlY7Ukppt8DItj+dXkeqGt7f8KzOb2AQwDbt9lm1fJb+MefLowTaubtvrLMcKIne43CbCu2D8HyN7RPWpEkVetA2Qgr5W4sa3tIUT80afqo9jzwJjKCspuxY9A1M8EIM3/kvyLo2B9r0cuWwRjYZXJ6gmTYI2ARNz0KQnCZUok14NDg+mZTb1B7AzRfb0lfjbA6grbzuAL+WaEpO8/LgGfuOh7QBZBT498TElOaFfQ9toQWA79wAmrQCm4OoFukpPIy2m/l6VjJSmlK5Q+CMOl/Au7OG1sUUCTvPaIr0XKnsiwDJ7a71n9garnPWHkvuWapSRCzCNgaUoGQjB+fTMJFFrwT8P1aLfM6onc3KNrDStoQZuYe5ngCLlNS56bENkVGvJBfdkboxtHZjqDXXON9jWGSOI527J3o2D5sjSVyx3T9XPrsL4TA/nBtdU+c/+M6aoASZR2VymzAKdMrGfj9kE5GXp8vv2vkJj9+OJ4Jm5yeczocc/Idtojjb1yg+sq1yY8kAQxgezpY1rpgi2jF3tSN01c23DNvAaSJLJX2ZuH8sD40ACc80Y1Qp1nUTdpwBZUeaeNruBwx4PHU8GnC71FwtiUpwNs0OoSl0pgDUJ3ODC5bs8B5QmW1wu1eg7I4mMSmCsNGW6VN3sFcu+WEqnmTxPoZombdFZKxsr2oq359Nn4bJ6Uc9PBz/sXsns7Zx1vND/oK/Jv5Y269UVAMeKX/eGpfnxzagW3tqGbOu12C2p9Azo5VxiU2fG/tmk2PjaG5hV/ywReco7I6C1p8OWM2fwAAAAEABVguNTA5AAAB6TCCAeUwggFOoAMCAQICBE89gTUwDQYJKoZIhvcNAQEFBQAwNzELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0FuZHJvaWQxFjAUBgNVBAMTDUFuZHJvaWQgRGVidWcwHhcNMTIwMjE2MjIyMDM3WhcNNDIwMjA4MjIyMDM3WjA3MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA3AKU7S7JXhUjEwxWP1/LPHXieh61SaA/+xbpqsPA+yjGz1sAcGAyuG6bjNAVm56pq7nkjJzicX7Wi83nUBo58DEC/quxOLdy0C4PEOSAeTnTT1RJIwMDvOgiL1GFCErvQ7gCH6zuAID/JRFbN6nIkhDjs2DYnSBl7aJJf8wCLc0CAwEAATANBgkqhkiG9w0BAQUFAAOBgQAoq/TJffA0l+ZGf89xndmHdxrO6qi+TzSlByvLZ4eFfCovTh1iO+Edrd5V1yXGLxyyvdsadMAFZT8SaxMrP5xxhJ0nra0APWYLpA96M//auMhQBWPgqPntwgvEZuEH7f0kdItjBJ39yijbG8xfgwid6XqNUo0TDDkp/wNWKpJ9tJe+2PrGw1NAvrgSydoH2j8DI1Eq'
DEBUG_KEYSTORE_KEY_FILE_NAME = (
'debug_keystore_QW+xRCJDGHXyyFtgCW8QRajj+6uYmsLwGWpCfYqYQ5M_id_rsa'
diff --git a/tests/test_publish.py b/tests/test_publish.py
index 82c670d7..cb47bff5 100755
--- a/tests/test_publish.py
+++ b/tests/test_publish.py
@@ -15,15 +15,17 @@ import os
import pathlib
import shutil
import sys
-import tempfile
import unittest
+import tempfile
from unittest import mock
-from fdroidserver import common, metadata, publish, signatures
+from fdroidserver import publish
+from fdroidserver import common
+from fdroidserver import metadata
+from fdroidserver import signatures
from fdroidserver._yaml import yaml
from fdroidserver.exception import FDroidException
-
-from .shared_test_code import VerboseFalseOptions, mkdtemp
+from .shared_test_code import mkdtemp, VerboseFalseOptions
basedir = pathlib.Path(__file__).parent
diff --git a/tests/test_rewritemeta.py b/tests/test_rewritemeta.py
index 4dcdd03f..5ad1b94d 100755
--- a/tests/test_rewritemeta.py
+++ b/tests/test_rewritemeta.py
@@ -1,14 +1,13 @@
#!/usr/bin/env python3
import os
+import unittest
import tempfile
import textwrap
-import unittest
from pathlib import Path
from unittest import mock
from fdroidserver import metadata, rewritemeta
-
from .shared_test_code import TmpCwd, mkdtemp
basedir = Path(__file__).parent
@@ -40,6 +39,7 @@ class RewriteMetaTest(unittest.TestCase):
'target': 'android-10',
'antifeatures': {
'KnownVuln': {},
+ 'UpstreamNonFree': {},
'NonFreeAssets': {},
},
},
diff --git a/tests/test_scanner.py b/tests/test_scanner.py
index 849476e6..d982ed4f 100755
--- a/tests/test_scanner.py
+++ b/tests/test_scanner.py
@@ -26,7 +26,6 @@ import fdroidserver.common
import fdroidserver.exception
import fdroidserver.metadata
import fdroidserver.scanner
-
from .shared_test_code import TmpCwd, mkdtemp, mock_open_to_str
basedir = pathlib.Path(__file__).parent
diff --git a/tests/test_signatures.py b/tests/test_signatures.py
index 4f7bd105..603ddf2c 100755
--- a/tests/test_signatures.py
+++ b/tests/test_signatures.py
@@ -6,9 +6,8 @@ import sys
import unittest
from tempfile import TemporaryDirectory
-from fdroidserver import common, signatures
-
from .shared_test_code import TmpCwd
+from fdroidserver import common, signatures
basedir = os.path.dirname(__file__)
diff --git a/tests/test_signindex.py b/tests/test_signindex.py
index 21d54585..149afb24 100755
--- a/tests/test_signindex.py
+++ b/tests/test_signindex.py
@@ -6,10 +6,10 @@ import shutil
import subprocess
import tempfile
import unittest
-from pathlib import Path
-from unittest.mock import patch
from fdroidserver import apksigcopier, common, exception, signindex, update
+from pathlib import Path
+from unittest.mock import patch
class Options:
diff --git a/tests/test_update.py b/tests/test_update.py
index 623f48cc..de39d8fd 100755
--- a/tests/test_update.py
+++ b/tests/test_update.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
import copy
+import git
import glob
import hashlib
import json
@@ -11,18 +12,16 @@ import shutil
import string
import subprocess
import sys
-import textwrap
import time
import unittest
+import yaml
import zipfile
+import textwrap
from binascii import hexlify
from datetime import datetime
from pathlib import Path
from unittest import mock
-import git
-import yaml
-
try:
# these were moved in androguard 4.0
from androguard.core.apk import APK
@@ -45,16 +44,15 @@ except ImportError:
except ImportError:
from yaml import Loader as FullLoader
-from PIL import PngImagePlugin
-
import fdroidserver.common
import fdroidserver.exception
import fdroidserver.metadata
import fdroidserver.update
from fdroidserver.common import CATEGORIES_CONFIG_NAME
from fdroidserver.looseversion import LooseVersion
-
from .shared_test_code import TmpCwd, mkdtemp
+from PIL import PngImagePlugin
+
DONATION_FIELDS = ('Donate', 'Liberapay', 'OpenCollective')
@@ -255,113 +253,6 @@ class UpdateTest(unittest.TestCase):
fdroidserver.update.insert_localized_app_metadata(apps)
self.assertEqual('42', apps[app.id]['localized']['en-US']['whatsNew'])
- def test_fastlane_with_subdir(self):
- """Test if fastlane in simple one-level subdir is found."""
- os.chdir(self.testdir)
- config = dict()
- fdroidserver.common.fill_config_defaults(config)
- fdroidserver.update.config = config
-
- app = fdroidserver.metadata.App()
- app.id = 'com.example.app'
- build_dir = f'build/{app.id}'
- flavor = 'flavor'
- subdir = 'subproject'
- apps = {app.id: app}
- build = fdroidserver.metadata.Build()
- build.versionCode = 42
- build.gradle = [flavor]
- build.subdir = subdir
- app['Builds'] = [build]
-
- first_value = 'first'
- first_dir = Path(f'{build_dir}/src/{flavor}/fastlane/metadata/android/en-US')
- first_dir.mkdir(parents=True)
- (first_dir / 'title.txt').write_text(first_value)
- fdroidserver.update.insert_localized_app_metadata(apps)
- self.assertEqual(first_value, apps[app.id]['localized']['en-US']['name'])
-
- second_value = 'second'
- second_dir = Path(f'{build_dir}/{subdir}/fastlane/metadata/android/en-US')
- second_dir.mkdir(parents=True)
- (second_dir / 'title.txt').write_text(second_value)
- fdroidserver.update.insert_localized_app_metadata(apps)
- self.assertEqual(second_value, apps[app.id]['localized']['en-US']['name'])
-
- def test_fastlane_with_schildichat(self):
- """Test if fastlane is found in this tangle of dirs and symlinks.
-
- https://github.com/SchildiChat/schildichat-android-next/tree/sc_v0.10.3-ex_25_6_2
- """
- os.chdir(self.testdir)
- config = dict()
- fdroidserver.common.fill_config_defaults(config)
- fdroidserver.update.config = config
-
- app = fdroidserver.metadata.App()
- app.id = 'chat.schildi.android'
- build_dir = f'build/{app.id}'
- flavors = ['fdroid', 'sc', 'default']
- subdir = 'app'
- apps = {app.id: app}
- build = fdroidserver.metadata.Build()
- build.versionCode = 42
- build.gradle = flavors
- build.subdir = subdir
- app['Builds'] = [build]
-
- wrong_value = 'wrong'
- wrong_dir = Path(f'{build_dir}/upstream_infra/fastlane/metadata/android/en-US')
- wrong_dir.mkdir(parents=True)
- (wrong_dir / 'title.txt').write_text(wrong_value)
-
- right_value = 'right'
- right_dir = Path(f'{build_dir}/metadata/en-US')
- right_dir.mkdir(parents=True)
- (right_dir / 'title.txt').write_text(right_value)
- _fastlane = Path('.fastlane/metadata')
- _fastlane.mkdir(parents=True)
- os.symlink('../../metadata', _fastlane / 'android')
- os.symlink('.fastlane', 'fastlane')
- fdroidserver.update.insert_localized_app_metadata(apps)
- self.assertEqual(right_value, apps[app.id]['localized']['en-US']['name'])
-
- def test_fastlane_with_multi_level_subdir(self):
- """Test if fastlane in multi-level subdir is found."""
- os.chdir(self.testdir)
- config = dict()
- fdroidserver.common.fill_config_defaults(config)
- fdroidserver.update.config = config
-
- app = fdroidserver.metadata.App()
- app.id = 'org.videolan.vlc'
- build_dir = f'build/{app.id}'
- subdir = 'application/app'
- apps = {app.id: app}
- build = fdroidserver.metadata.Build()
- build.versionCode = 42
- build.gradle = ['yes']
- build.subdir = subdir
- app['Builds'] = [build]
-
- first_value = 'first'
- first_dir = Path(f'{build_dir}/{subdir}/fastlane/metadata/android/en-US')
- first_dir.mkdir(parents=True)
- (first_dir / 'title.txt').write_text(first_value)
- fdroidserver.update.insert_localized_app_metadata(apps)
- self.assertEqual(first_value, apps[app.id]['localized']['en-US']['name'])
-
- # I'm not sure that it is correct behavior for this path to
- # override the above path, but it is how it is working now. It
- # seems to me it should be the other way around, but that is
- # really hard to implement using the current algorithm.
- second_value = 'second'
- second_dir = Path(f'{build_dir}/fastlane/metadata/android/en-US')
- second_dir.mkdir(parents=True)
- (second_dir / 'title.txt').write_text(second_value)
- fdroidserver.update.insert_localized_app_metadata(apps)
- self.assertEqual(second_value, apps[app.id]['localized']['en-US']['name'])
-
def test_name_title_scraping(self):
"""metadata file --> fdroiddata localized files --> fastlane/triple-t in app source --> APK"""
shutil.copytree(basedir, self.testdir, dirs_exist_ok=True)
@@ -1375,7 +1266,7 @@ class UpdateTest(unittest.TestCase):
if apk['packageName'] == 'com.politedroid' and apk['versionCode'] == 3:
antiFeatures = apk.get('antiFeatures')
self.assertTrue('KnownVuln' in antiFeatures)
- self.assertEqual(2, len(antiFeatures))
+ self.assertEqual(3, len(antiFeatures))
foundtest = True
self.assertTrue(foundtest)
diff --git a/tests/test_vcs.py b/tests/test_vcs.py
index a007feae..2b640a9e 100755
--- a/tests/test_vcs.py
+++ b/tests/test_vcs.py
@@ -7,8 +7,7 @@ from git import Repo
import fdroidserver.common
import fdroidserver.metadata
-
-from .shared_test_code import VerboseFalseOptions, mkdtemp
+from .shared_test_code import mkdtemp, VerboseFalseOptions
class VCSTest(unittest.TestCase):
diff --git a/tests/test_verify.py b/tests/test_verify.py
index e5a2f7c4..f9da9092 100755
--- a/tests/test_verify.py
+++ b/tests/test_verify.py
@@ -6,11 +6,13 @@ import shutil
import sys
import tempfile
import unittest
+
from pathlib import Path
from unittest.mock import patch
from fdroidserver import verify
+
TEST_APP_ENTRY = {
"1539780240.3885746": {
"local": {