File: generate-test-scripts.py

package info (click to toggle)
android-platform-tools-apksig 35.0.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,584 kB
  • sloc: java: 30,195; sh: 323; python: 44; makefile: 32
file content (64 lines) | stat: -rwxr-xr-x 2,164 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python3

import os
import re
from pathlib import Path

basedir = Path(__file__).parent
resourcesdir = Path('src/test/resources/com/android/apksig')
sourcedir = Path(basedir / '../../src/test/java/com/android/apksig')
source = (sourcedir / 'ApkVerifierTest.java').read_text()

os.chdir(basedir.parent.parent)

sdk_nums = {
    'AndroidSdkVersion.N': 24,
    'AndroidSdkVersion.P': 28,
}

with open(basedir / 'ApkVerifierTest.sh', 'w') as fp:
    fp.write("""#!/bin/sh -e
set -x

# test -J args from apksigner shell script
apksigner -JXmx256M verify src/test/resources/com/android/apksig/v1-only-with-rsa-pkcs1-sha384-1.2.840.113549.1.1.1-1024.apk

""")

    for m in sorted(
        set(
            re.findall(
                r'''assertVerifiedForEach\(\s*"([^"]+)"''', source, flags=re.DOTALL
            )
        )
    ):
        for f in sorted(resourcesdir.glob(m.replace("%s", "*"))):
            fp.write(f"apksigner verify {f}\n")

    for f, msv in re.findall(r'''assertVerified\(\s*verifyForMinSdkVersion\(\s*"([^"]+)",\s*([^)]*)''', source, flags=re.DOTALL):
        print(f, msv)
        try:
            msv = int(msv)
        except ValueError as e:
            msv = sdk_nums[msv]
        fp.write(f"apksigner verify --min-sdk-version {msv} {str(resourcesdir)}/{f}\n")

    for f, msv in re.findall(r'''assertVerificationFailure\(\s*verifyForMinSdkVersion\(\s*"([^"]+)",\s*([^)]*)''', source, flags=re.DOTALL):
        print(f, msv)
        try:
            msv = int(msv)
        except ValueError as e:
            msv = sdk_nums[msv]
        fp.write(f"! apksigner verify --min-sdk-version {msv} {str(resourcesdir)}/{f}\n")

    for f in re.findall(r'''assertVerificationFailure\(\s*"([^"]+)"''', source, flags=re.DOTALL):
        fp.write(f"! apksigner verify {str(resourcesdir)}/{f}\n")


# for f in `grep -A1 'assertVerificationFailure(' src/test/java/com/android/apksig/ApkVerifierTest.java \
#   | grep -Eo ' "v[12]-.*\.apk"' \
#   | sed -e 's,^ ",src/test/resources/com/android/apksig/,' -e 's,",,g'`; do
#     echo '! apksigner verify' $f  >> $basedir/debian/tests/ApkVerifierTest.sh
# done

    fp.write("echo SUCCESS\n")