Merge pull request #12510 from keszybz/test-directives

test: run check-directives.sh as part of the test suite
This commit is contained in:
Yu Watanabe 2019-05-21 08:35:10 +09:00 committed by GitHub
commit d7c5b3ec3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 13 deletions

View File

@ -2928,6 +2928,16 @@ endforeach
############################################################
check_directives_sh = find_program('tools/check-directives.sh')
if want_tests != 'false'
test('check-directives',
check_directives_sh,
args : project_source_root)
endif
############################################################
# Enable tests for all supported sanitizers
foreach tuple : sanitizers
sanitizer = tuple[0]

View File

@ -1,6 +1,8 @@
#!/bin/bash
set -e
which perl &>/dev/null || exit 77
function generate_directives() {
perl -aF'/[\s,]+/' -ne '
if (my ($s, $d) = ($F[0] =~ /^([^\s\.]+)\.([^\s\.]+)$/)) { $d{$s}{"$d="} = 1; }
@ -11,22 +13,22 @@ function generate_directives() {
ret=0
if ! diff \
<(generate_directives src/network/networkd-network-gperf.gperf | sort) \
<(cat test/fuzz/fuzz-network-parser/directives.network | sort); then
<(generate_directives "$1"/src/network/networkd-network-gperf.gperf | sort) \
<(cat "$1"/test/fuzz/fuzz-network-parser/directives.network | sort); then
echo "Looks like test/fuzz/fuzz-network-parser/directives.network hasn't been updated"
ret=1
fi
if ! diff \
<(generate_directives src/network/netdev/netdev-gperf.gperf | sort) \
<(cat test/fuzz/fuzz-netdev-parser/directives.netdev | sort); then
<(generate_directives "$1"/src/network/netdev/netdev-gperf.gperf | sort) \
<(cat "$1"/test/fuzz/fuzz-netdev-parser/directives.netdev | sort); then
echo "Looks like test/fuzz/fuzz-netdev-parser/directives.netdev hasn't been updated"
ret=1
fi
if ! diff \
<(generate_directives src/udev/net/link-config-gperf.gperf | sort) \
<(cat test/fuzz/fuzz-link-parser/directives.link | sort) ; then
<(generate_directives "$1"/src/udev/net/link-config-gperf.gperf | sort) \
<(cat "$1"/test/fuzz/fuzz-link-parser/directives.link | sort) ; then
echo "Looks like test/fuzz/fuzz-link-parser/directives.link hasn't been updated"
ret=1
fi

View File

@ -15,7 +15,10 @@ CONT_NAME="${CONT_NAME:-debian-$DEBIAN_RELEASE-$RANDOM}"
DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}"
DOCKER_RUN="${DOCKER_RUN:-docker run}"
REPO_ROOT="${REPO_ROOT:-$PWD}"
ADDITIONAL_DEPS=(python3-libevdev python3-pyparsing clang)
ADDITIONAL_DEPS=(python3-libevdev
python3-pyparsing
clang
perl)
function info() {
echo -e "\033[33;1m$1\033[0m"
@ -47,7 +50,6 @@ for phase in "${PHASES[@]}"; do
docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dsplit-usr=true -Dman=true build
$DOCKER_EXEC ninja -v -C build
docker exec -e "TRAVIS=$TRAVIS" -it $CONT_NAME ninja -C build test
$DOCKER_EXEC tools/check-directives.sh
;;
RUN_ASAN|RUN_CLANG_ASAN)
if [[ "$phase" = "RUN_CLANG_ASAN" ]]; then

View File

@ -15,7 +15,15 @@ CONT_NAME="${CONT_NAME:-fedora-$FEDORA_RELEASE-$RANDOM}"
DOCKER_EXEC="${DOCKER_EXEC:-docker exec -it $CONT_NAME}"
DOCKER_RUN="${DOCKER_RUN:-docker run}"
REPO_ROOT="${REPO_ROOT:-$PWD}"
ADDITIONAL_DEPS=(dnf-plugins-core python2 iputils hostname libasan python3-pyparsing python3-evdev libubsan clang llvm)
ADDITIONAL_DEPS=(dnf-plugins-core
python2 iputils
hostname libasan
python3-pyparsing
python3-evdev
libubsan
clang
llvm
perl)
function info() {
echo -e "\033[33;1m$1\033[0m"
@ -50,7 +58,6 @@ for phase in "${PHASES[@]}"; do
$DOCKER_EXEC meson --werror -Dtests=unsafe -Dslow-tests=true build
$DOCKER_EXEC ninja -v -C build
$DOCKER_EXEC ninja -C build test
$DOCKER_EXEC tools/check-directives.sh
;;
RUN_CLANG)
docker exec -e CC=clang -e CXX=clang++ -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dman=true build

View File

@ -2,14 +2,48 @@
set -e
set -x
PACKAGES=(cryptsetup-bin
gettext
iptables-dev
iputils-ping
isc-dhcp-client
itstool
kbd
libblkid-dev
libcap-dev
libcurl4-gnutls-dev
libgpg-error-dev
liblz4-dev
liblzma-dev
libmicrohttpd-dev
libmount-dev
libmount-dev
libqrencode-dev
libxkbcommon-dev
linux-image-virtual
mount
net-tools
ninja-build
perl
python-lxml
python3-evdev
python3-lxml
python3-pip
python3-pyparsing
python3-setuptools
qemu-system-x86
strace
unifont
util-linux)
bash -c "echo 'deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse' >>/etc/apt/sources.list"
apt-get update
apt-get build-dep systemd -y
apt-get install -y util-linux libmount-dev libblkid-dev liblzma-dev libqrencode-dev libmicrohttpd-dev iptables-dev liblz4-dev libcurl4-gnutls-dev unifont itstool kbd cryptsetup-bin net-tools isc-dhcp-client iputils-ping strace qemu-system-x86 linux-image-virtual mount libgpg-error-dev libxkbcommon-dev python-lxml python3-lxml python3-pip libcap-dev
apt-get install -y gettext python3-evdev python3-pyparsing libmount-dev python3-setuptools ninja-build
apt-get install -y "${PACKAGES[@]}"
pip3 install meson
cd ${REPO_ROOT:-$(pwd)}
cd ${REPO_ROOT:-$PWD}
sed -i 's/2\.30/2.27/' meson.build

View File

@ -1,4 +1,5 @@
dnf-plugins-core
meson
ninja-build
perl
python