From c5d0f760057550db122b8158456ad3bb5576841c Mon Sep 17 00:00:00 2001 From: Antoine Fontaine Date: Thu, 14 May 2020 05:29:16 +0200 Subject: [PATCH] pmb.parse.kconfig: add tests (MR 1916) --- test/test_kconfig_check.py | 46 ++++++++++++++++ .../bad-array-missing-some-options | 53 +++++++++++++++++++ .../kconfig_check/bad-missing-required-option | 32 +++++++++++ .../kconfig_check/bad-wrong-option-set | 33 ++++++++++++ test/testdata/kconfig_check/good | 47 ++++++++++++++++ test/testdata/kconfig_check/good-anbox | 50 +++++++++++++++++ 6 files changed, 261 insertions(+) create mode 100644 test/test_kconfig_check.py create mode 100644 test/testdata/kconfig_check/bad-array-missing-some-options create mode 100644 test/testdata/kconfig_check/bad-missing-required-option create mode 100644 test/testdata/kconfig_check/bad-wrong-option-set create mode 100644 test/testdata/kconfig_check/good create mode 100644 test/testdata/kconfig_check/good-anbox diff --git a/test/test_kconfig_check.py b/test/test_kconfig_check.py new file mode 100644 index 00000000..78ff2737 --- /dev/null +++ b/test/test_kconfig_check.py @@ -0,0 +1,46 @@ +# Copyright 2020 Antoine Fontaine +# Copyright 2020 Oliver Smith +# SPDX-License-Identifier: GPL-3.0-or-later +import pytest +import sys + +import pmb_test +import pmb_test.const +import pmb.parse.kconfig + + +@pytest.fixture +def args(tmpdir, request): + import pmb.parse + sys.argv = ["pmbootstrap.py", "kconfig", "check"] + 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_kconfig_check(args): + # basic checks, from easiers to hard-ish + dir = f"{pmb_test.const.testdata}/kconfig_check/" + assert not pmb.parse.kconfig.check_file(args, dir + + "bad-missing-required-option") + assert pmb.parse.kconfig.check_file(args, dir + "good") + assert not pmb.parse.kconfig.check_file(args, dir + "bad-wrong-option-set") + assert pmb.parse.kconfig.check_file(args, dir + "good-anbox", + anbox=True) + assert not pmb.parse.kconfig.check_file(args, dir + + "bad-array-missing-some-options", + anbox=True) + + # tests on real devices + + # it's a postmarketOS device, it will have the required options + assert pmb.parse.kconfig.check(args, "nokia-n900") + + # supports Anbox (with pmb:kconfigcheck-anbox) + assert pmb.parse.kconfig.check(args, "postmarketos-allwinner") + + # testing the force param: nokia-n900 will never have anbox support + assert not pmb.parse.kconfig.check(args, "nokia-n900", + force_anbox_check=True) diff --git a/test/testdata/kconfig_check/bad-array-missing-some-options b/test/testdata/kconfig_check/bad-array-missing-some-options new file mode 100644 index 00000000..c0905332 --- /dev/null +++ b/test/testdata/kconfig_check/bad-array-missing-some-options @@ -0,0 +1,53 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 5.3.2 Kernel Configuration +# + +# +# Compiler: gcc (Alpine 9.2.0) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y +CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# + +# the required options +CONFIG_BLK_DEV_INITRD=y +CONFIG_CGROUPS=y +CONFIG_DEVTMPFS=y +CONFIG_DM_CRYPT=y +CONFIG_SYSVIPC=y +CONFIG_VT=y +CONFIG_UEVENT_HELPER=y +CONFIG_LBDAF=y +CONFIG_EXT4_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_TMPFS_XATTR=y +CONFIG_ASHMEM=y +CONFIG_ANDROID_BINDER_IPC=y +# CONFIG_ANDROID_BINDERFS is not set + +### although hwbinder contains "binder", it shouldn't be valid +CONFIG_ANDROID_BINDER_DEVICES="hwbinder" + +CONFIG_NETFILTER_XTABLES=y +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +CONFIG_IP_NF_MANGLE=y +CONFIG_FUSE_FS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_TUN=y +CONFIG_VETH=y +CONFIG_VLAN_8021Q=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_VLAN_FILTERING=y diff --git a/test/testdata/kconfig_check/bad-missing-required-option b/test/testdata/kconfig_check/bad-missing-required-option new file mode 100644 index 00000000..b2eff871 --- /dev/null +++ b/test/testdata/kconfig_check/bad-missing-required-option @@ -0,0 +1,32 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 5.3.2 Kernel Configuration +# + +# +# Compiler: gcc (Alpine 9.2.0) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y +CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# + +# the required options +CONFIG_BLK_DEV_INITRD=y +CONFIG_CGROUPS=y +CONFIG_DEVTMPFS=y +CONFIG_DM_CRYPT=y +### this option is missing: +# CONFIG_SYSVIPC is not set +CONFIG_VT=y +CONFIG_UEVENT_HELPER=y +CONFIG_LBDAF=y diff --git a/test/testdata/kconfig_check/bad-wrong-option-set b/test/testdata/kconfig_check/bad-wrong-option-set new file mode 100644 index 00000000..2abe5a93 --- /dev/null +++ b/test/testdata/kconfig_check/bad-wrong-option-set @@ -0,0 +1,33 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 5.3.2 Kernel Configuration +# + +# +# Compiler: gcc (Alpine 9.2.0) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y +CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# + +# the required options +CONFIG_BLK_DEV_INITRD=y +CONFIG_CGROUPS=y +CONFIG_DEVTMPFS=y +CONFIG_DM_CRYPT=y +CONFIG_SYSVIPC=y +CONFIG_VT=y +CONFIG_UEVENT_HELPER=y +CONFIG_LBDAF=y +### here's one wrong option set: +ANDROID_PARANOID_NETWORK=y diff --git a/test/testdata/kconfig_check/good b/test/testdata/kconfig_check/good new file mode 100644 index 00000000..2f0f91fb --- /dev/null +++ b/test/testdata/kconfig_check/good @@ -0,0 +1,47 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 5.3.2 Kernel Configuration +# + +# +# Compiler: gcc (Alpine 9.2.0) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y +CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# + +# the required options +CONFIG_BLK_DEV_INITRD=y +CONFIG_CGROUPS=y +CONFIG_DEVTMPFS=y +CONFIG_DM_CRYPT=y +CONFIG_SYSVIPC=y +CONFIG_VT=y +CONFIG_UEVENT_HELPER=y +CONFIG_LBDAF=y +### here's one explicitely disabled: +# ANDROID_PARANOID_NETWORK is not set +### here's one set to module: +CONFIG_EXT4_FS=m +### here's a line set to no: +CONFIG_KINETO_GAN=n + +# a bit of random stuff +CONFIG_LOCALVERSION="-nokia-n900" +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y diff --git a/test/testdata/kconfig_check/good-anbox b/test/testdata/kconfig_check/good-anbox new file mode 100644 index 00000000..c3cae03d --- /dev/null +++ b/test/testdata/kconfig_check/good-anbox @@ -0,0 +1,50 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 5.3.2 Kernel Configuration +# + +# +# Compiler: gcc (Alpine 9.2.0) 9.2.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=90200 +CONFIG_CLANG_VERSION=0 +CONFIG_CC_CAN_LINK=y +CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y +CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# + +# the required options +CONFIG_BLK_DEV_INITRD=y +CONFIG_CGROUPS=y +CONFIG_DEVTMPFS=y +CONFIG_DM_CRYPT=y +CONFIG_SYSVIPC=y +CONFIG_VT=y +CONFIG_UEVENT_HELPER=y +CONFIG_LBDAF=y +CONFIG_EXT4_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_TMPFS_XATTR=y +CONFIG_ASHMEM=y +CONFIG_ANDROID_BINDER_IPC=y +# CONFIG_ANDROID_BINDERFS is not set +CONFIG_ANDROID_BINDER_DEVICES="binder,vndbinder,hwbinder" +CONFIG_NETFILTER_XTABLES=y +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +CONFIG_IP_NF_MANGLE=y +CONFIG_FUSE_FS=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_TUN=y +CONFIG_VETH=y +CONFIG_VLAN_8021Q=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_VLAN_FILTERING=y