pmbootstrap-meow/test/static_code_analysis.sh
Martijn Braam 1921fc5f27
Add sideload command
The sideload command runs the supplied names through the pmbootstrap
buildsystem to make sure they're up-to-date, then uses scp from the host
to copy the built apks to /tmp on the phone and installs them through
ssh.

If the --install-key option is set then it will also copy over the apk
key that's used for signing the packages built by pmbootstrap in case
the postmarketOS install on the device isn't build by the same machine
as you're sideloading from.
2020-12-08 17:42:30 +01:00

139 lines
3.9 KiB
Bash
Executable file

#!/bin/sh
# Copyright 2020 Oliver Smith
# SPDX-License-Identifier: AGPL-3.0-or-later
set -e
DIR="$(cd "$(dirname "$0")" && pwd -P)"
cd "$DIR/.."
# Make sure that the work folder format is up to date, and that there are no
# mounts from aborted test cases (#1595)
./pmbootstrap.py work_migrate
./pmbootstrap.py -q shutdown
# Install needed packages
echo "Initializing Alpine chroot (details: 'pmbootstrap log')"
./pmbootstrap.py -q chroot -- apk -q add \
shellcheck \
python3 \
py3-flake8 || return 1
rootfs_native="$(./pmbootstrap.py config work)/chroot_native"
command="$rootfs_native/lib/ld-musl-$(uname -m).so.1"
command="$command --library-path=$rootfs_native/lib:$rootfs_native/usr/lib"
shellcheck_command="$command $rootfs_native/usr/bin/shellcheck"
flake8_command="$command $rootfs_native/usr/bin/python3 $rootfs_native/usr/bin/flake8"
# Shell: shellcheck
find . -name '*.sh' |
while read -r file; do
echo "Test with shellcheck: $file"
cd "$DIR/../$(dirname "$file")"
$shellcheck_command -e SC1008 -x "$(basename "$file")"
done
# Python: flake8
# E501: max line length
# F401: imported, but not used, does not make sense in __init__ files
# E402: module import not on top of file, not possible for testcases
# E722: do not use bare except
cd "$DIR"/..
echo "Test with flake8: *.py"
# Note: omitting a virtualenv if it is here (e.g. gitlab CI)
py_files="$(find . -not -path '*/venv/*' -name '*.py')"
_ignores="E501,E402,E722,W504,W605"
# shellcheck disable=SC2086
$flake8_command --exclude=__init__.py --ignore "$_ignores" $py_files
# shellcheck disable=SC2086
$flake8_command --filename=__init__.py --ignore "F401,$_ignores" $py_files
# Enforce max line length of 79 characters (#1986). We are iteratively fixing
# up the source files to adhere to this rule, so only check the ones that were
# fixed for now. Eventually, E501 can be removed from _ignores above, and this
# whole block can be removed.
echo "Test with flake8: *.py (E501)"
py_files="
.gitlab/check_mr_settings.py
pmb/aportgen/device.py
pmb/build/__init__.py
pmb/build/autodetect.py
pmb/build/checksum.py
pmb/build/menuconfig.py
pmb/build/newapkbuild.py
pmb/chroot/__init__.py
pmb/chroot/binfmt.py
pmb/chroot/distccd.py
pmb/chroot/mount.py
pmb/chroot/other.py
pmb/chroot/shutdown.py
pmb/chroot/user.py
pmb/config/pmaports.py
pmb/config/save.py
pmb/config/workdir.py
pmb/export/__init__.py
pmb/export/frontend.py
pmb/export/symlinks.py
pmb/flasher/__init__.py
pmb/helpers/__init__.py
pmb/helpers/apk.py
pmb/helpers/aportupgrade.py
pmb/helpers/args.py
pmb/helpers/file.py
pmb/helpers/git.py
pmb/helpers/lint.py
pmb/helpers/mount.py
pmb/helpers/package.py
pmb/helpers/repo.py
pmb/helpers/repo_missing.py
pmb/helpers/run.py
pmb/helpers/status.py
pmb/helpers/ui.py
pmb/install/__init__.py
pmb/install/recovery.py
pmb/parse/__init__.py
pmb/parse/arch.py
pmb/parse/arguments.py
pmb/parse/cpuinfo.py
pmb/parse/version.py
pmb/qemu/__init__.py
pmb/sideload/__init__.py
pmbootstrap.py
test/pmb_test/__init__.py
test/pmb_test/const.py
test/pmb_test/git.py
test/test_aportgen.py
test/test_bootimg.py
test/test_config_init.py
test/test_config_pmaports.py
test/test_config_workdir.py
test/test_cross_compile_distcc.py
test/test_crossdirect.py
test/test_envkernel.py
test/test_file.py
test/test_folder_size.py
test/test_frontend.py
test/test_helpers_git.py
test/test_helpers_lint.py
test/test_helpers_package.py
test/test_helpers_pmaports.py
test/test_helpers_repo.py
test/test_helpers_repo_missing.py
test/test_helpers_status.py
test/test_helpers_ui.py
test/test_install.py
test/test_kconfig_check.py
test/test_keys.py
test/test_mount.py
test/test_newapkbuild.py
test/test_parse_apkindex.py
test/test_parse_deviceinfo.py
test/test_questions.py
test/test_run_core.py
test/test_shell_escape.py
test/test_version.py
test/test_version_validate.py
"
# shellcheck disable=SC2086
$flake8_command --select="E501" $py_files
# Done
echo "Success!"