From c6448ee39eaf5cba6676239576a745cc5dabc154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 7 May 2019 20:46:36 +0200 Subject: [PATCH 1/3] test: run check-directives.sh as part of the test suite --- meson.build | 10 ++++++++++ tools/check-directives.sh | 14 ++++++++------ travis-ci/managers/debian.sh | 1 - travis-ci/managers/fedora.sh | 1 - 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/meson.build b/meson.build index 9506274239..3bbe79f41f 100644 --- a/meson.build +++ b/meson.build @@ -2927,6 +2927,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] diff --git a/tools/check-directives.sh b/tools/check-directives.sh index 46f770222f..a90fb604ae 100755 --- a/tools/check-directives.sh +++ b/tools/check-directives.sh @@ -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 diff --git a/travis-ci/managers/debian.sh b/travis-ci/managers/debian.sh index 72ffcee439..8a3a0e9c87 100755 --- a/travis-ci/managers/debian.sh +++ b/travis-ci/managers/debian.sh @@ -47,7 +47,6 @@ for phase in "${PHASES[@]}"; do docker exec $ENV_VARS -it $CONT_NAME meson --werror -Dtests=unsafe -Dslow-tests=true -Dsplit-usr=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 diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh index 760ed5b1ea..bb1b79be4b 100755 --- a/travis-ci/managers/fedora.sh +++ b/travis-ci/managers/fedora.sh @@ -50,7 +50,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 build From 9fd1a0babd3df076b91222c067a707c82537d920 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 10 May 2019 10:33:37 +0200 Subject: [PATCH 2/3] tests: install perl for CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is useful for various tests (test-directives, test-udev, …). --- travis-ci/managers/debian.sh | 5 ++++- travis-ci/managers/fedora.sh | 10 +++++++++- travis-ci/managers/xenial.sh | 38 ++++++++++++++++++++++++++++++++++-- travis-ci/requirements.txt | 1 + 4 files changed, 50 insertions(+), 4 deletions(-) diff --git a/travis-ci/managers/debian.sh b/travis-ci/managers/debian.sh index 8a3a0e9c87..c34bf4ba5f 100755 --- a/travis-ci/managers/debian.sh +++ b/travis-ci/managers/debian.sh @@ -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" diff --git a/travis-ci/managers/fedora.sh b/travis-ci/managers/fedora.sh index bb1b79be4b..71c794821f 100755 --- a/travis-ci/managers/fedora.sh +++ b/travis-ci/managers/fedora.sh @@ -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" diff --git a/travis-ci/managers/xenial.sh b/travis-ci/managers/xenial.sh index 33b40e63c5..7c7e163e4e 100755 --- a/travis-ci/managers/xenial.sh +++ b/travis-ci/managers/xenial.sh @@ -2,11 +2,45 @@ 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)} diff --git a/travis-ci/requirements.txt b/travis-ci/requirements.txt index 9928e3fc87..5ef30d5d3f 100644 --- a/travis-ci/requirements.txt +++ b/travis-ci/requirements.txt @@ -1,4 +1,5 @@ dnf-plugins-core meson ninja-build +perl python From f7ebc1e29878d079f7ac1178b458229de051293b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 20 May 2019 15:48:05 +0200 Subject: [PATCH 3/3] travis: use variable to avoid one call --- travis-ci/managers/xenial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/travis-ci/managers/xenial.sh b/travis-ci/managers/xenial.sh index 7c7e163e4e..865d63170f 100755 --- a/travis-ci/managers/xenial.sh +++ b/travis-ci/managers/xenial.sh @@ -43,7 +43,7 @@ apt-get build-dep systemd -y 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