On 2021-04-28 13:20:54 +0200, Hans-Christoph Steiner wrote: > Package: release.debian.org > Severity: normal > User: release.debian.org@packages.debian.org > Usertags: unblock > > Please unblock package fdroidserver > > F-Droid is built on Debian and is a community with the same goals as > Debian, modeled after Debian. The F-Droid community maintains stable > release branches for fdroidserver that are devoted to each Debian > release. buster has 1.1.x and bullseye has 2.0.x. I am both package > maintainer and upstream on this package, and a Debian Developer. The > 2.0.1 release includes only narrow bug and compatibility fixes. This > package has an extensive autopkgtest suite. The autopkgtests currently fail on ppc64el. If they were fixed, the package would migrate without an action from our side. Best Sebastian > > These are specific issues that are fixed: > > * corrupt app icons are published, instead of valid PNGs #987717 > * stop setting up source repo when running lint/rewritemeta > https://gitlab.com/fdroid/fdroidserver/commit/92438bbf78532b89fb7619601cf75c95e7d7f0a0 > * use latest SPDX license info > https://gitlab.com/fdroid/fdroidserver/commit/eca7b23fc9f742d9420ec068cf0d60e5bdcf497e > * crash on bad fastlane/triple-t files > https://gitlab.com/fdroid/fdroidserver/commit/cfbee12ad2a1385aaf0aa7d9076924373639d189 > * crash on bad repo file: > https://gitlab.com/fdroid/fdroidserver/commit/240139baf9778536251b9deee4c0e071a2333ebb > > > Previous stable updates to fdroidserver are here: > > * #960885 > * #935809 > * #856358 > * #773166 > > -------------------------------------------------------------------- > > Here's the debdiff, note that the majority of the changes are to test > files, which are also part of the autopkgtest run: > > > diff -Nru fdroidserver-2.0/CHANGELOG.md fdroidserver-2.0.1/CHANGELOG.md > --- fdroidserver-2.0/CHANGELOG.md 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/CHANGELOG.md 2021-03-09 18:21:30.000000000 +0100 > @@ -4,6 +4,20 @@ > > The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) > > +## [2.0.1] - 2020-03-09 > + > +### Fixed > + > +* metadata: stop setting up source repo when running lint/rewritemeta > +* scanner: show error if scan_binary fails to run apkanalyzer > +* common: properly parse version from NDK's source.properties > +* update: stop extracting and storing XML icons, they're useless > +* index: raise error rather than crash on bad repo file > +* update: handle large, corrupt, or inaccessible fastlane/triple-t files > +* Update SPDX License List > +* checkupdates: set User-Agent to make gitlab.com happy > +* Run push_binary_transparency only once > + > ## [2.0] - 2020-01-31 > > For a more complete overview, see the [2.0 > diff -Nru fdroidserver-2.0/debian/changelog fdroidserver-2.0.1/debian/changelog > --- fdroidserver-2.0/debian/changelog 2021-02-02 13:28:22.000000000 +0100 > +++ fdroidserver-2.0.1/debian/changelog 2021-03-09 18:26:20.000000000 +0100 > @@ -1,3 +1,9 @@ > +fdroidserver (2.0.1-1) unstable; urgency=medium > + > + * New upstream version 2.0.1 > + > + -- Hans-Christoph Steiner <hans@eds.org> Tue, 09 Mar 2021 18:26:20 +0100 > + > fdroidserver (2.0-1) unstable; urgency=medium > > * New upstream version 2.0 > diff -Nru fdroidserver-2.0/examples/fdroid_fetchsrclibs.py fdroidserver-2.0.1/examples/fdroid_fetchsrclibs.py > --- fdroidserver-2.0/examples/fdroid_fetchsrclibs.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/examples/fdroid_fetchsrclibs.py 2021-03-09 18:21:30.000000000 +0100 > @@ -21,7 +21,7 @@ > options = parser.parse_args() > common.options = options > pkgs = common.read_pkg_args(options.appid, True) > - allapps = metadata.read_metadata(pkgs) > + allapps = metadata.read_metadata(pkgs, check_vcs=True) > apps = common.read_app_args(options.appid, allapps, True) > srclib_dir = os.path.join('build', 'srclib') > os.makedirs(srclib_dir, exist_ok=True) > diff -Nru fdroidserver-2.0/fdroidserver/build.py fdroidserver-2.0.1/fdroidserver/build.py > --- fdroidserver-2.0/fdroidserver/build.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/build.py 2021-03-09 18:21:30.000000000 +0100 > @@ -1013,7 +1013,7 @@ > > # Read all app and srclib metadata > pkgs = common.read_pkg_args(options.appid, True) > - allapps = metadata.read_metadata(pkgs, options.refresh, sort_by_time=True) > + allapps = metadata.read_metadata(pkgs, options.refresh, sort_by_time=True, check_vcs=True) > apps = common.read_app_args(options.appid, allapps, True) > > for appid, app in list(apps.items()): > diff -Nru fdroidserver-2.0/fdroidserver/checkupdates.py fdroidserver-2.0.1/fdroidserver/checkupdates.py > --- fdroidserver-2.0/fdroidserver/checkupdates.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/checkupdates.py 2021-03-09 18:21:30.000000000 +0100 > @@ -35,6 +35,7 @@ > from . import _ > from . import common > from . import metadata > +from . import net > from .exception import VCSException, NoSubmodulesException, FDroidException, MetaDataException > > > @@ -63,7 +64,7 @@ > vercode = None > if len(urlcode) > 0: > logging.debug("...requesting {0}".format(urlcode)) > - req = urllib.request.Request(urlcode, None) > + req = urllib.request.Request(urlcode, None, headers=net.HEADERS) > resp = urllib.request.urlopen(req, None, 20) # nosec B310 scheme is filtered above > page = resp.read().decode('utf-8') > > diff -Nru fdroidserver-2.0/fdroidserver/common.py fdroidserver-2.0.1/fdroidserver/common.py > --- fdroidserver-2.0/fdroidserver/common.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/common.py 2021-03-09 18:21:30.000000000 +0100 > @@ -3819,7 +3819,7 @@ > with open(ndk_release_txt, 'r') as fp: > components.append((os.path.basename(ndk_path), fp.read()[:-1])) > > - pattern = re.compile('^Pkg.Revision=(.+)', re.MULTILINE) > + pattern = re.compile(r'^Pkg.Revision *= *(.+)', re.MULTILINE) > for root, dirs, files in os.walk(sdk_path): > if 'source.properties' in files: > source_properties = os.path.join(root, 'source.properties') > diff -Nru fdroidserver-2.0/fdroidserver/deploy.py fdroidserver-2.0.1/fdroidserver/deploy.py > --- fdroidserver-2.0/fdroidserver/deploy.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/deploy.py 2021-03-09 18:21:30.000000000 +0100 > @@ -802,10 +802,10 @@ > if config.get('virustotal_apikey'): > upload_to_virustotal(repo_section, config.get('virustotal_apikey')) > > - binary_transparency_remote = config.get('binary_transparency_remote') > - if binary_transparency_remote: > - push_binary_transparency(BINARY_TRANSPARENCY_DIR, > - binary_transparency_remote) > + binary_transparency_remote = config.get('binary_transparency_remote') > + if binary_transparency_remote: > + push_binary_transparency(BINARY_TRANSPARENCY_DIR, > + binary_transparency_remote) > > if config.get('wiki_server') and config.get('wiki_path'): > update_wiki() > diff -Nru fdroidserver-2.0/fdroidserver/lint.py fdroidserver-2.0.1/fdroidserver/lint.py > --- fdroidserver-2.0/fdroidserver/lint.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/lint.py 2021-03-09 18:21:30.000000000 +0100 > @@ -683,6 +683,7 @@ > 'Artistic-1.0-cl8', > 'Artistic-2.0', > 'Beerware', > + 'BSD-1-Clause', > 'BSD-2-Clause', > 'BSD-2-Clause-FreeBSD', > 'BSD-2-Clause-Patent', > @@ -692,6 +693,8 @@ > 'BSD-4-Clause', > 'BSL-1.0', > 'BitTorrent-1.1', > + 'CAL-1.0', > + 'CAL-1.0-Combined-Work-Exception', > 'CATOSL-1.1', > 'CC-BY-4.0', > 'CC-BY-SA-4.0', > @@ -763,6 +766,7 @@ > 'MS-RL', > 'MirOS', > 'Motosoto', > + 'MulanPSL-2.0', > 'Multics', > 'NASA-1.3', > 'NCSA', > @@ -778,9 +782,12 @@ > 'ODbL-1.0', > 'OFL-1.0', > 'OFL-1.1', > + 'OFL-1.1-RFN', > + 'OFL-1.1-no-RFN', > 'OGTSL', > 'OLDAP-2.3', > 'OLDAP-2.7', > + 'OLDAP-2.8', > 'OSET-PL-2.1', > 'OSL-1.0', > 'OSL-1.1', > @@ -804,7 +811,9 @@ > 'SPL-1.0', > 'SimPL-2.0', > 'Sleepycat', > + 'UCL-1.0', > 'UPL-1.0', > + 'Unicode-DFS-2016', > 'Unlicense', > 'VSL-1.0', > 'Vim', > diff -Nru fdroidserver-2.0/fdroidserver/metadata.py fdroidserver-2.0.1/fdroidserver/metadata.py > --- fdroidserver-2.0/fdroidserver/metadata.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/metadata.py 2021-03-09 18:21:30.000000000 +0100 > @@ -541,7 +541,7 @@ > srclibs[srclibname] = parse_yaml_srclib(metadatapath) > > > -def read_metadata(appids={}, refresh=True, sort_by_time=False): > +def read_metadata(appids={}, refresh=True, sort_by_time=False, check_vcs=False): > """Return a list of App instances sorted newest first > > This reads all of the metadata files in a 'data' repository, then > @@ -597,7 +597,7 @@ > if appid in apps: > _warn_or_exception(_("Found multiple metadata files for {appid}") > .format(appid=appid)) > - app = parse_metadata(metadatapath, appid in appids, refresh) > + app = parse_metadata(metadatapath, check_vcs, refresh) > check_metadata(app) > apps[app.id] = app > > diff -Nru fdroidserver-2.0/fdroidserver/scanner.py fdroidserver-2.0.1/fdroidserver/scanner.py > --- fdroidserver-2.0/fdroidserver/scanner.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/scanner.py 2021-03-09 18:21:30.000000000 +0100 > @@ -106,6 +106,9 @@ > logging.info("Scanning APK for known non-free classes.") > result = common.SdkToolsPopen(["apkanalyzer", "dex", "packages", "--defined-only", apkfile], output=False) > problems = 0 > + if result.returncode != 0: > + problems += 1 > + logging.error(result.output) > for suspect, regexp in CODE_SIGNATURES.items(): > matches = regexp.findall(result.output) > if matches: > diff -Nru fdroidserver-2.0/fdroidserver/update.py fdroidserver-2.0.1/fdroidserver/update.py > --- fdroidserver-2.0/fdroidserver/update.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver/update.py 2021-03-09 18:21:30.000000000 +0100 > @@ -768,23 +768,41 @@ > > > def _set_localized_text_entry(app, locale, key, f): > - limit = config['char_limits'][key] > - localized = _get_localized_dict(app, locale) > - with open(f, errors='replace') as fp: > - text = fp.read()[:limit] > - if len(text) > 0: > - if key in ('name', 'summary', 'video'): # hardcoded as a single line > - localized[key] = text.strip('\n') > - else: > - localized[key] = text > + """Read a fastlane/triple-t metadata file and add an entry to the app > + > + This reads more than the limit, in case there is leading or > + trailing whitespace to be stripped > + > + """ > + try: > + limit = config['char_limits'][key] > + localized = _get_localized_dict(app, locale) > + with open(f, errors='replace') as fp: > + text = fp.read(limit * 2) > + if len(text) > 0: > + if key in ('name', 'summary', 'video'): # hardcoded as a single line > + localized[key] = text.strip('\n')[:limit] > + else: > + localized[key] = text[:limit] > + except Exception as e: > + logging.error(_('{path}: {error}').format(path=f, error=str(e))) > > > def _set_author_entry(app, key, f): > - limit = config['char_limits']['author'] > - with open(f, errors='replace') as fp: > - text = fp.read()[:limit] > - if len(text) > 0: > - app[key] = text.strip() > + """read a fastlane/triple-t author file and add the entry to the app > + > + This reads more than the limit, in case there is leading or > + trailing whitespace to be stripped > + > + """ > + try: > + limit = config['char_limits']['author'] > + with open(f, errors='replace') as fp: > + text = fp.read(limit * 2) > + if len(text) > 0: > + app[key] = text.strip()[:limit] > + except Exception as e: > + logging.error(_('{path}: {error}').format(path=f, error=str(e))) > > > def _strip_and_copy_image(in_file, outpath): > @@ -1396,7 +1414,7 @@ > > """ > icons_src = dict() > - density_re = re.compile(r'^res/(.*)/{}\.(png|xml)$'.format(icon_name)) > + density_re = re.compile(r'^res/(.*)/{}\.png$'.format(icon_name)) > with zipfile.ZipFile(apkfile) as zf: > for filename in zf.namelist(): > m = density_re.match(filename) > @@ -1659,7 +1677,7 @@ > .format(apkfilename=apkfile) + str(e)) > > # extract icons from APK zip file > - iconfilename = "%s.%s" % (apk['packageName'], apk['versionCode']) > + iconfilename = "%s.%s.png" % (apk['packageName'], apk['versionCode']) > try: > empty_densities = extract_apk_icons(iconfilename, apk, apkzip, repodir) > finally: > @@ -1746,8 +1764,6 @@ > if m and m.group(4) == 'png': > density = screen_resolutions[m.group(2)] > pngs[m.group(3) + '/' + density] = m.group(0) > - > - icon_type = None > empty_densities = [] > for density in screen_densities: > if density not in apk['icons_src']: > @@ -1755,7 +1771,7 @@ > continue > icon_src = apk['icons_src'][density] > icon_dir = get_icon_dir(repo_dir, density) > - icon_type = '.png' > + icon_dest = os.path.join(icon_dir, icon_filename) > > # Extract the icon files per density > if icon_src.endswith('.xml'): > @@ -1766,48 +1782,44 @@ > icon_src = name > if icon_src.endswith('.xml'): > empty_densities.append(density) > - icon_type = '.xml' > - icon_dest = os.path.join(icon_dir, icon_filename + icon_type) > - > + continue > try: > with open(icon_dest, 'wb') as f: > f.write(get_icon_bytes(apkzip, icon_src)) > - apk['icons'][density] = icon_filename + icon_type > + apk['icons'][density] = icon_filename > except (zipfile.BadZipFile, ValueError, KeyError) as e: > logging.warning("Error retrieving icon file: %s %s", icon_dest, e) > del apk['icons_src'][density] > empty_densities.append(density) > > # '-1' here is a remnant of the parsing of aapt output, meaning "no DPI specified" > - if '-1' in apk['icons_src']: > + if '-1' in apk['icons_src'] and not apk['icons_src']['-1'].endswith('.xml'): > icon_src = apk['icons_src']['-1'] > - icon_type = icon_src[-4:] > - icon_path = os.path.join(get_icon_dir(repo_dir, '0'), icon_filename + icon_type) > + icon_path = os.path.join(get_icon_dir(repo_dir, '0'), icon_filename) > with open(icon_path, 'wb') as f: > f.write(get_icon_bytes(apkzip, icon_src)) > - if icon_type == '.png': > - im = None > - try: > - im = Image.open(icon_path) > - dpi = px_to_dpi(im.size[0]) > - for density in screen_densities: > - if density in apk['icons']: > - break > - if density == screen_densities[-1] or dpi >= int(density): > - apk['icons'][density] = icon_filename + icon_type > - shutil.move(icon_path, > - os.path.join(get_icon_dir(repo_dir, density), icon_filename + icon_type)) > - empty_densities.remove(density) > - break > - except Exception as e: > - logging.warning(_("Failed reading {path}: {error}") > - .format(path=icon_path, error=e)) > - finally: > - if im and hasattr(im, 'close'): > - im.close() > + im = None > + try: > + im = Image.open(icon_path) > + dpi = px_to_dpi(im.size[0]) > + for density in screen_densities: > + if density in apk['icons']: > + break > + if density == screen_densities[-1] or dpi >= int(density): > + apk['icons'][density] = icon_filename > + shutil.move(icon_path, > + os.path.join(get_icon_dir(repo_dir, density), icon_filename)) > + empty_densities.remove(density) > + break > + except Exception as e: > + logging.warning(_("Failed reading {path}: {error}") > + .format(path=icon_path, error=e)) > + finally: > + if im and hasattr(im, 'close'): > + im.close() > > if apk['icons']: > - apk['icon'] = icon_filename + icon_type > + apk['icon'] = icon_filename > > return empty_densities > > @@ -1822,7 +1834,6 @@ > :param repo_dir: The directory of the APK's repository > > """ > - icon_filename += '.png' > # First try resizing down to not lose quality > last_density = None > for density in screen_densities: > @@ -2297,7 +2308,13 @@ > options.use_date_from_apk) > cachechanged = cachechanged or fcachechanged > apks += files > + appid_has_apks = set() > + appid_has_repo_files = set() > for apk in apks: > + if apk['apkName'].endswith('.apk'): > + appid_has_apks.add(apk['packageName']) > + else: > + appid_has_repo_files.add(apk['packageName']) > if apk['packageName'] not in apps: > if options.create_metadata: > create_metadata_from_template(apk) > @@ -2316,6 +2333,15 @@ > else: > logging.warning(msg + '\n\t' + _('Use `fdroid update -c` to create it.')) > > + mismatch_errors = '' > + for appid in appid_has_apks: > + if appid in appid_has_repo_files: > + appid_files = ', '.join(glob.glob(os.path.join('repo', appid + '_[0-9]*.*'))) > + mismatch_errors += (_('{appid} has both APKs and files: {files}') > + .format(appid=appid, files=appid_files)) + '\n' > + if mismatch_errors: > + raise FDroidException(mismatch_errors) > + > # Scan the archive repo for apks as well > if len(repodirs) > 1: > archapks, cc = process_apks(apkcache, repodirs[1], knownapks, options.use_date_from_apk) > diff -Nru fdroidserver-2.0/fdroidserver.egg-info/PKG-INFO fdroidserver-2.0.1/fdroidserver.egg-info/PKG-INFO > --- fdroidserver-2.0/fdroidserver.egg-info/PKG-INFO 2021-02-02 13:20:01.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver.egg-info/PKG-INFO 2021-03-09 18:22:29.000000000 +0100 > @@ -1,6 +1,6 @@ > Metadata-Version: 2.1 > Name: fdroidserver > -Version: 2.0 > +Version: 2.0.1 > Summary: F-Droid Server Tools > Home-page: https://f-droid.org > Author: The F-Droid Project > diff -Nru fdroidserver-2.0/fdroidserver.egg-info/SOURCES.txt fdroidserver-2.0.1/fdroidserver.egg-info/SOURCES.txt > --- fdroidserver-2.0/fdroidserver.egg-info/SOURCES.txt 2021-02-02 13:20:01.000000000 +0100 > +++ fdroidserver-2.0.1/fdroidserver.egg-info/SOURCES.txt 2021-03-09 18:22:29.000000000 +0100 > @@ -629,6 +629,13 @@ > tests/build-tools/28.0.3/aapt-output-obb.mainpatch.current_1619.txt > tests/build-tools/28.0.3/aapt-output-souch.smsbypass_9.txt > tests/extra/manual-vmtools-test.py > +tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties > +tests/get_android_tools_versions/android-ndk/r11c/source.properties > +tests/get_android_tools_versions/android-ndk/r17c/source.properties > +tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties > +tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties > +tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties > +tests/get_android_tools_versions/android-sdk/tools/source.properties > tests/getsig/getsig.java > tests/getsig/make.sh > tests/getsig/run.sh > diff -Nru fdroidserver-2.0/MANIFEST.in fdroidserver-2.0.1/MANIFEST.in > --- fdroidserver-2.0/MANIFEST.in 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/MANIFEST.in 2021-03-09 18:21:30.000000000 +0100 > @@ -551,6 +551,13 @@ > include tests/exception.TestCase > include tests/extra/manual-vmtools-test.py > include tests/funding-usernames.yaml > +include tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties > +include tests/get_android_tools_versions/android-ndk/r11c/source.properties > +include tests/get_android_tools_versions/android-ndk/r17c/source.properties > +include tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties > +include tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties > +include tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties > +include tests/get_android_tools_versions/android-sdk/tools/source.properties > include tests/getsig/getsig.java > include tests/getsig/make.sh > include tests/getsig/run.sh > diff -Nru fdroidserver-2.0/PKG-INFO fdroidserver-2.0.1/PKG-INFO > --- fdroidserver-2.0/PKG-INFO 2021-02-02 13:20:01.000000000 +0100 > +++ fdroidserver-2.0.1/PKG-INFO 2021-03-09 18:22:30.000000000 +0100 > @@ -1,6 +1,6 @@ > Metadata-Version: 2.1 > Name: fdroidserver > -Version: 2.0 > +Version: 2.0.1 > Summary: F-Droid Server Tools > Home-page: https://f-droid.org > Author: The F-Droid Project > diff -Nru fdroidserver-2.0/setup.py fdroidserver-2.0.1/setup.py > --- fdroidserver-2.0/setup.py 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/setup.py 2021-03-09 18:21:30.000000000 +0100 > @@ -53,7 +53,7 @@ > long_description = fh.read() > > setup(name='fdroidserver', > - version='2.0', > + version='2.0.1', > description='F-Droid Server Tools', > long_description=long_description, > long_description_content_type='text/markdown', > diff -Nru fdroidserver-2.0/tests/common.TestCase fdroidserver-2.0.1/tests/common.TestCase > --- fdroidserver-2.0/tests/common.TestCase 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/common.TestCase 2021-03-09 18:21:30.000000000 +0100 > @@ -1627,6 +1627,21 @@ > {'AutoName': testvalue, 'id': 'nope'}]: > self.assertEqual(testvalue, fdroidserver.common.get_app_display_name(app)) > > + def test_get_android_tools_versions(self): > + sdk_path = os.path.join(self.basedir, 'get_android_tools_versions') > + fdroidserver.common.config = {'sdk_path': sdk_path} > + components = fdroidserver.common.get_android_tools_versions() > + expected = ( > + ('android-ndk/android-ndk-r21d', '21.3.6528147'), > + ('android-ndk/r11c', '11.2.2725575'), > + ('android-ndk/r17c', '17.2.4988734'), > + ('android-sdk/patcher/v4', '1'), > + ('android-sdk/platforms/android-30', '3'), > + ('android-sdk/skiaparser/1', '6'), > + ('android-sdk/tools', '26.1.1'), > + ) > + self.assertSequenceEqual(expected, sorted(components)) > + > > if __name__ == "__main__": > os.chdir(os.path.dirname(__file__)) > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/android-ndk-r21d/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,2 @@ > +Pkg.Desc = Android NDK > +Pkg.Revision = 21.3.6528147 > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/r11c/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/r11c/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/r11c/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/r11c/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,2 @@ > +Pkg.Desc = Android NDK > +Pkg.Revision = 11.2.2725575 > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/r17c/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/r17c/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-ndk/r17c/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-ndk/r17c/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,2 @@ > +Pkg.Desc = Android NDK > +Pkg.Revision = 17.2.4988734 > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/patcher/v4/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,18 @@ > +# > +# Copyright (C) 2016 The Android Open Source Project > +# > +# Licensed under the Apache License, Version 2.0 (the "License"); > +# you may not use this file except in compliance with the License. > +# You may obtain a copy of the License at > +# > +# http://www.apache.org/licenses/LICENSE-2.0 > +# > +# Unless required by applicable law or agreed to in writing, software > +# distributed under the License is distributed on an "AS IS" BASIS, > +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > +# See the License for the specific language governing permissions and > +# limitations under the License. > +# > +Pkg.Revision=1 > +Pkg.Path=patcher;v4 > +Pkg.Desc=SDK Patch Applier v4 > \ No newline at end of file > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/platforms/android-30/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,9 @@ > +Pkg.Desc=Android SDK Platform 11 > +Pkg.UserSrc=false > +Platform.Version=11 > +Platform.CodeName= > +Pkg.Revision=3 > +AndroidVersion.ApiLevel=30 > +Layoutlib.Api=15 > +Layoutlib.Revision=1 > +Platform.MinToolsRev=22 > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/skiaparser/1/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,3 @@ > +Pkg.Revision=6 > +Pkg.Path=skiaparser;1 > +Pkg.Desc=Layout Inspector image server for API 29-30 > diff -Nru fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/tools/source.properties fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/tools/source.properties > --- fdroidserver-2.0/tests/get_android_tools_versions/android-sdk/tools/source.properties 1970-01-01 01:00:00.000000000 +0100 > +++ fdroidserver-2.0.1/tests/get_android_tools_versions/android-sdk/tools/source.properties 2021-03-09 18:21:30.000000000 +0100 > @@ -0,0 +1,6 @@ > +Pkg.UserSrc=false > +Pkg.Revision=26.1.1 > +Platform.MinPlatformToolsRev=20 > +Pkg.Dependencies=emulator > +Pkg.Path=tools > +Pkg.Desc=Android SDK Tools > diff -Nru fdroidserver-2.0/tests/index.TestCase fdroidserver-2.0.1/tests/index.TestCase > --- fdroidserver-2.0/tests/index.TestCase 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/index.TestCase 2021-03-09 18:21:30.000000000 +0100 > @@ -354,6 +354,15 @@ > 'https://gitlab.com/group/project/-/raw/master/fdroid'], > fdroidserver.index.get_mirror_service_urls(url)) > > + def test_v1_sort_packages_with_invalid(self): > + i = [{'packageName': 'org.smssecure.smssecure', > + 'apkName': 'smssecure-custom.fake', > + 'signer': None, > + 'versionCode': 11111}] > + > + fdroidserver.index.v1_sort_packages( > + i, fdroidserver.common.load_stats_fdroid_signing_key_fingerprints()) > + > > if __name__ == "__main__": > os.chdir(os.path.dirname(__file__)) > diff -Nru fdroidserver-2.0/tests/repo/index-v1.json fdroidserver-2.0.1/tests/repo/index-v1.json > --- fdroidserver-2.0/tests/repo/index-v1.json 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/repo/index-v1.json 2021-03-09 18:21:30.000000000 +0100 > @@ -54,7 +54,6 @@ > "name": "Caffeine Tile", > "summary": "Test app for extracting icons when an XML one is default", > "added": 1539129600000, > - "icon": "info.zwanenburg.caffeinetile.4.xml", > "packageName": "info.zwanenburg.caffeinetile", > "lastUpdated": 1539129600000 > }, > diff -Nru fdroidserver-2.0/tests/repo/index.xml fdroidserver-2.0.1/tests/repo/index.xml > --- fdroidserver-2.0/tests/repo/index.xml 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/repo/index.xml 2021-03-09 18:21:30.000000000 +0100 > @@ -53,7 +53,6 @@ > <lastupdated>2018-10-10</lastupdated> > <name>Caffeine Tile</name> > <summary>Test app for extracting icons when an XML one is default</summary> > - <icon>info.zwanenburg.caffeinetile.4.xml</icon> > <desc>No description available</desc> > <license>Unknown</license> > <categories>Development</categories> > diff -Nru fdroidserver-2.0/tests/run-tests fdroidserver-2.0.1/tests/run-tests > --- fdroidserver-2.0/tests/run-tests 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/run-tests 2021-03-09 18:21:30.000000000 +0100 > @@ -735,8 +735,9 @@ > $fdroid init > $fdroid update --create-metadata --verbose > $fdroid readmeta > -$fdroid deploy --local-copy-dir=/tmp/fdroid > -$fdroid deploy --local-copy-dir=/tmp/fdroid --verbose > +LOCAL_COPY_DIR=`create_test_dir`/fdroid > +$fdroid deploy --local-copy-dir=$LOCAL_COPY_DIR > +$fdroid deploy --local-copy-dir=$LOCAL_COPY_DIR --verbose > > # now test the errors work > set +e > diff -Nru fdroidserver-2.0/tests/update.TestCase fdroidserver-2.0.1/tests/update.TestCase > --- fdroidserver-2.0/tests/update.TestCase 2021-02-01 22:53:44.000000000 +0100 > +++ fdroidserver-2.0.1/tests/update.TestCase 2021-03-09 18:21:30.000000000 +0100 > @@ -11,6 +11,7 @@ > import os > import random > import shutil > +import string > import subprocess > import sys > import tempfile > @@ -706,8 +707,7 @@ > > apk_info = fdroidserver.update.scan_apk('repo/info.zwanenburg.caffeinetile_4.apk') > self.assertEqual(apk_info.get('versionName'), '1.3') > - self.assertEqual(apk_info['icons_src'], {'160': 'res/drawable/ic_coffee_on.xml', > - '-1': 'res/drawable/ic_coffee_on.xml'}) > + self.assertEqual(apk_info['icons_src'], {}) > > apk_info = fdroidserver.update.scan_apk('repo/com.politedroid_6.apk') > self.assertEqual(apk_info.get('versionName'), '1.5') > @@ -1309,6 +1309,73 @@ > self.assertIsNotNone(fdroidserver.update.sanitize_funding_yml_entry(' WhyIncludeWhitespace ')) > self.assertIsNotNone(fdroidserver.update.sanitize_funding_yml_entry(['first', 'second'])) > > + def test_set_localized_text_entry(self): > + tmptestsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, > + dir=self.tmpdir) > + os.chdir(tmptestsdir) > + config = dict() > + fdroidserver.common.fill_config_defaults(config) > + fdroidserver.update.config = config > + fdroidserver.update.options = fdroidserver.common.options > + > + files = { > + 'full-description.txt': 'description', > + 'short-description.txt': 'summary', > + 'title.txt': 'name', > + 'video-url.txt': 'video', > + } > + > + for f, key in files.items(): > + limit = config['char_limits'][key] > + with open(f, 'w') as fp: > + fp.write(''.join(random.choice(string.ascii_letters) for i in range(limit + 100))) > + locale = 'ru_US' > + app = dict() > + fdroidserver.update._set_localized_text_entry(app, locale, key, f) > + self.assertEqual(limit, len(app['localized'][locale][key])) > + > + f = 'badlink-' + f > + os.symlink('/path/to/nowhere', f) > + app = dict() > + fdroidserver.update._set_localized_text_entry(app, locale, key, f) > + self.assertIsNone(app['localized'].get(locale, {}).get(key)) > + > + def test_set_author_entry(self): > + tmptestsdir = tempfile.mkdtemp(prefix=inspect.currentframe().f_code.co_name, > + dir=self.tmpdir) > + os.chdir(tmptestsdir) > + config = dict() > + fdroidserver.common.fill_config_defaults(config) > + fdroidserver.update.config = config > + fdroidserver.update.options = fdroidserver.common.options > + > + f = 'contact-website.txt' > + key = 'author' > + url = 'https://f-droid.org/' > + limit = config['char_limits']['author'] > + with open(f, 'w') as fp: > + fp.write(url) > + fp.write('\n') > + app = dict() > + fdroidserver.update._set_author_entry(app, key, f) > + self.assertEqual(url, app[key]) > + > + f = 'limits.txt' > + key = 'author' > + limit = config['char_limits']['author'] > + for key in ('authorEmail', 'authorPhone', 'authorWebSite'): > + with open(f, 'w') as fp: > + fp.write(''.join(random.choice(string.ascii_letters) for i in range(limit + 100))) > + app = dict() > + fdroidserver.update._set_author_entry(app, key, f) > + self.assertEqual(limit, len(app[key])) > + > + f = 'badlink.txt' > + os.symlink('/path/to/nowhere', f) > + app = dict() > + fdroidserver.update._set_author_entry(app, key, f) > + self.assertIsNone(app.get(key)) > + > > if __name__ == "__main__": > os.chdir(os.path.dirname(__file__)) > > > > > > unblock fdroidserver/2.0.1-1 > > -- System Information: > Debian Release: 10.9 > APT prefers stable-updates > APT policy: (500, 'stable-updates'), (500, 'stable'), (100, 'proposed-updates') > Architecture: amd64 (x86_64) > > Kernel: Linux 4.19.0-16-amd64 (SMP w/8 CPU cores) > Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) > Shell: /bin/sh linked to /usr/bin/dash > Init: systemd (via /run/systemd/system) > LSM: AppArmor: enabled > -- Sebastian Ramacher
Attachment:
signature.asc
Description: PGP signature