forked from Mirror/pmbootstrap
While at it, also remove unnecessary "#!/usr/bin/env python3" in files that only get imported, and adjust other empty/comment lines in the beginnings of the files for consistency. This makes files easier to read, and makes the pmbootstrap codebase more consistent with the build.postmarketos.org codebase.
67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
# Copyright 2020 Oliver Smith
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
import os
|
|
import sys
|
|
import pytest
|
|
import glob
|
|
import filecmp
|
|
|
|
import pmb_test # noqa
|
|
import pmb.parse.apkindex
|
|
import pmb.helpers.logging
|
|
import pmb.config
|
|
|
|
|
|
@pytest.fixture
|
|
def args(request):
|
|
import pmb.parse
|
|
sys.argv = ["pmbootstrap.py", "chroot"]
|
|
args = pmb.parse.arguments()
|
|
args.log = args.work + "/log_testsuite.txt"
|
|
pmb.helpers.logging.init(args)
|
|
request.addfinalizer(args.logfd.close)
|
|
return args
|
|
|
|
|
|
def test_keys(args):
|
|
# Get the alpine-keys apk filename
|
|
pmb.chroot.init(args)
|
|
version = pmb.parse.apkindex.package(args, "alpine-keys")["version"]
|
|
pattern = (args.work + "/cache_apk_" + args.arch_native + "/alpine-keys-" +
|
|
version + ".*.apk")
|
|
filename = os.path.basename(glob.glob(pattern)[0])
|
|
|
|
# Extract it to a temporary folder
|
|
temp = "/tmp/test_keys_extract"
|
|
temp_outside = args.work + "/chroot_native" + temp
|
|
if os.path.exists(temp_outside):
|
|
pmb.chroot.root(args, ["rm", "-r", temp])
|
|
pmb.chroot.user(args, ["mkdir", "-p", temp])
|
|
pmb.chroot.user(args, ["tar", "xvf", "/var/cache/apk/" + filename],
|
|
working_dir=temp)
|
|
|
|
# Get all relevant key file names as {"filename": "full_outside_path"}
|
|
keys_upstream = {}
|
|
for arch in pmb.config.build_device_architectures + ["x86_64"]:
|
|
pattern = temp_outside + "/usr/share/apk/keys/" + arch + "/*.pub"
|
|
for path in glob.glob(pattern):
|
|
keys_upstream[os.path.basename(path)] = path
|
|
assert len(keys_upstream)
|
|
|
|
# Check if the keys are mirrored correctly
|
|
mirror_path_keys = pmb.config.apk_keys_path
|
|
for key, original_path in keys_upstream.items():
|
|
mirror_path = mirror_path_keys + "/" + key
|
|
assert filecmp.cmp(mirror_path, original_path, False)
|
|
|
|
# Find postmarketOS keys
|
|
keys_pmos = ["build.postmarketos.org.rsa.pub"]
|
|
for key in keys_pmos:
|
|
assert os.path.exists(mirror_path_keys + "/" + key)
|
|
|
|
# Find outdated keys, which need to be removed
|
|
glob_result = glob.glob(mirror_path_keys + "/*.pub")
|
|
assert len(glob_result)
|
|
for path in glob_result:
|
|
key = os.path.basename(key)
|
|
assert key in keys_pmos or key in keys_upstream
|