From cda2ff196540f3b1fe8639e4e647285b58bb6752 Mon Sep 17 00:00:00 2001 From: teor Date: Thu, 12 Dec 2019 16:15:29 +1000 Subject: [PATCH 1/4] practracker: Capture stderr output in test_practracker.sh And canonicalise file paths, so that output is consistent, even in out-of-tree builds. Capturing stderr output produces better diagnostics. Diagnostics for 32705. --- scripts/maint/practracker/test_practracker.sh | 11 ++++++++--- scripts/maint/practracker/testdata/ex0-expected.txt | 1 + scripts/maint/practracker/testdata/ex1-expected.txt | 1 + .../practracker/testdata/ex1-overbroad-expected.txt | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/scripts/maint/practracker/test_practracker.sh b/scripts/maint/practracker/test_practracker.sh index 9b107e071d..3c87bc31be 100755 --- a/scripts/maint/practracker/test_practracker.sh +++ b/scripts/maint/practracker/test_practracker.sh @@ -15,6 +15,11 @@ if test "${PRACTRACKER_DIR}" = "" || PRACTRACKER_DIR=$(dirname "$0") fi +# Change to the tor directory, and canonicalise PRACTRACKER_DIR, +# so paths in practracker output are consistent, even in out-of-tree builds +cd "${PRACTRACKER_DIR}"/../../.. +PRACTRACKER_DIR="scripts/maint/practracker" + TMPDIR="$(mktemp -d -t pracktracker.test.XXXXXX)" if test -z "${TMPDIR}" || test ! -d "${TMPDIR}" ; then echo >&2 "mktemp failed." @@ -52,18 +57,18 @@ echo "unit tests:" echo "ex0:" -run_practracker --exceptions "${DATA}/ex0.txt" > "${TMPDIR}/ex0-received.txt" +run_practracker --exceptions "${DATA}/ex0.txt" > "${TMPDIR}/ex0-received.txt" 2>&1 compare "${TMPDIR}/ex0-received.txt" "${DATA}/ex0-expected.txt" echo "ex1:" -run_practracker --exceptions "${DATA}/ex1.txt" > "${TMPDIR}/ex1-received.txt" +run_practracker --exceptions "${DATA}/ex1.txt" > "${TMPDIR}/ex1-received.txt" 2>&1 compare "${TMPDIR}/ex1-received.txt" "${DATA}/ex1-expected.txt" echo "ex1.overbroad:" -run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad > "${TMPDIR}/ex1-overbroad-received.txt" +run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad > "${TMPDIR}/ex1-overbroad-received.txt" 2>&1 compare "${TMPDIR}/ex1-overbroad-received.txt" "${DATA}/ex1-overbroad-expected.txt" diff --git a/scripts/maint/practracker/testdata/ex0-expected.txt b/scripts/maint/practracker/testdata/ex0-expected.txt index 502005edb1..dc41c8700a 100644 --- a/scripts/maint/practracker/testdata/ex0-expected.txt +++ b/scripts/maint/practracker/testdata/ex0-expected.txt @@ -1,3 +1,4 @@ +Unusual pattern permitted.h in scripts/maint/practracker/testdata problem file-size a.c 41 problem include-count a.c 6 problem function-size a.c:i_am_a_function() 9 diff --git a/scripts/maint/practracker/testdata/ex1-expected.txt b/scripts/maint/practracker/testdata/ex1-expected.txt index 58140a4d9a..7800a2cd0e 100644 --- a/scripts/maint/practracker/testdata/ex1-expected.txt +++ b/scripts/maint/practracker/testdata/ex1-expected.txt @@ -1,3 +1,4 @@ +Unusual pattern permitted.h in scripts/maint/practracker/testdata problem function-size a.c:i_am_a_function() 9 (warning) problem function-size a.c:another_function() 12 problem function-size b.c:foo() 4 diff --git a/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt b/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt index b757202dae..ed3cbb29fe 100644 --- a/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt +++ b/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt @@ -1,2 +1,3 @@ +Unusual pattern permitted.h in scripts/maint/practracker/testdata problem file-size a.c 45 -> 41 problem file-size z.c 100 -> 0 From eb55d85e757c62a483e0e4ccb231ec33a1df84f3 Mon Sep 17 00:00:00 2001 From: teor Date: Tue, 14 Jan 2020 17:20:36 +1000 Subject: [PATCH 2/4] practracker: Fail tests if any process exits unexpectedly Part of 32705. --- scripts/maint/practracker/test_practracker.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/maint/practracker/test_practracker.sh b/scripts/maint/practracker/test_practracker.sh index 3c87bc31be..43e7b0a321 100755 --- a/scripts/maint/practracker/test_practracker.sh +++ b/scripts/maint/practracker/test_practracker.sh @@ -1,5 +1,8 @@ #!/bin/sh +# Fail if any subprocess fails unexpectedly +set -e + umask 077 TMPDIR="" @@ -37,11 +40,11 @@ run_practracker() { --max-h-include-count=0 \ --max-include-count=0 \ --terse \ - "${DATA}/" "$@"; + "${DATA}/" "$@" || true } compare() { # we can't use cmp because we need to use -b for windows - diff -b -u "$@" > "${TMPDIR}/test-diff" + diff -b -u "$@" > "${TMPDIR}/test-diff" || true if test -z "$(cat "${TMPDIR}"/test-diff)"; then echo "OK" else @@ -53,7 +56,7 @@ compare() { echo "unit tests:" -"${PYTHON:-python}" "${PRACTRACKER_DIR}/practracker_tests.py" || exit 1 +"${PYTHON:-python}" "${PRACTRACKER_DIR}/practracker_tests.py" echo "ex0:" From fa038e561757d4280957db715da0a3392e8084f2 Mon Sep 17 00:00:00 2001 From: teor Date: Tue, 14 Jan 2020 17:23:41 +1000 Subject: [PATCH 3/4] practracker: Test practracker exit status Part of 32705. --- scripts/maint/practracker/test_practracker.sh | 2 +- scripts/maint/practracker/testdata/ex0-expected.txt | 1 + scripts/maint/practracker/testdata/ex1-expected.txt | 1 + scripts/maint/practracker/testdata/ex1-overbroad-expected.txt | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/maint/practracker/test_practracker.sh b/scripts/maint/practracker/test_practracker.sh index 43e7b0a321..28d3d82e66 100755 --- a/scripts/maint/practracker/test_practracker.sh +++ b/scripts/maint/practracker/test_practracker.sh @@ -40,7 +40,7 @@ run_practracker() { --max-h-include-count=0 \ --max-include-count=0 \ --terse \ - "${DATA}/" "$@" || true + "${DATA}/" "$@" || echo "practracker exit status: $?" } compare() { # we can't use cmp because we need to use -b for windows diff --git a/scripts/maint/practracker/testdata/ex0-expected.txt b/scripts/maint/practracker/testdata/ex0-expected.txt index dc41c8700a..c9fb83bac3 100644 --- a/scripts/maint/practracker/testdata/ex0-expected.txt +++ b/scripts/maint/practracker/testdata/ex0-expected.txt @@ -10,3 +10,4 @@ problem function-size b.c:bar() 5 problem file-size header.h 8 problem include-count header.h 4 problem dependency-violation header.h 3 +practracker exit status: 11 diff --git a/scripts/maint/practracker/testdata/ex1-expected.txt b/scripts/maint/practracker/testdata/ex1-expected.txt index 7800a2cd0e..2713338ae4 100644 --- a/scripts/maint/practracker/testdata/ex1-expected.txt +++ b/scripts/maint/practracker/testdata/ex1-expected.txt @@ -2,3 +2,4 @@ Unusual pattern permitted.h in scripts/maint/practracker/testdata problem function-size a.c:i_am_a_function() 9 (warning) problem function-size a.c:another_function() 12 problem function-size b.c:foo() 4 +practracker exit status: 2 diff --git a/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt b/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt index ed3cbb29fe..5ca480dc04 100644 --- a/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt +++ b/scripts/maint/practracker/testdata/ex1-overbroad-expected.txt @@ -1,3 +1,4 @@ Unusual pattern permitted.h in scripts/maint/practracker/testdata problem file-size a.c 45 -> 41 problem file-size z.c 100 -> 0 +practracker exit status: 3 From b910ae8cd18973d8cd846583599cf62a723b58fa Mon Sep 17 00:00:00 2001 From: teor Date: Tue, 14 Jan 2020 17:24:11 +1000 Subject: [PATCH 4/4] practracker: Wrap long lines in the test script --- scripts/maint/practracker/test_practracker.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/scripts/maint/practracker/test_practracker.sh b/scripts/maint/practracker/test_practracker.sh index 28d3d82e66..d2b7951031 100755 --- a/scripts/maint/practracker/test_practracker.sh +++ b/scripts/maint/practracker/test_practracker.sh @@ -60,18 +60,24 @@ echo "unit tests:" echo "ex0:" -run_practracker --exceptions "${DATA}/ex0.txt" > "${TMPDIR}/ex0-received.txt" 2>&1 +run_practracker --exceptions "${DATA}/ex0.txt" \ + > "${TMPDIR}/ex0-received.txt" 2>&1 -compare "${TMPDIR}/ex0-received.txt" "${DATA}/ex0-expected.txt" +compare "${TMPDIR}/ex0-received.txt" \ + "${DATA}/ex0-expected.txt" echo "ex1:" -run_practracker --exceptions "${DATA}/ex1.txt" > "${TMPDIR}/ex1-received.txt" 2>&1 +run_practracker --exceptions "${DATA}/ex1.txt" \ + > "${TMPDIR}/ex1-received.txt" 2>&1 -compare "${TMPDIR}/ex1-received.txt" "${DATA}/ex1-expected.txt" +compare "${TMPDIR}/ex1-received.txt" \ + "${DATA}/ex1-expected.txt" echo "ex1.overbroad:" -run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad > "${TMPDIR}/ex1-overbroad-received.txt" 2>&1 +run_practracker --exceptions "${DATA}/ex1.txt" --list-overbroad \ + > "${TMPDIR}/ex1-overbroad-received.txt" 2>&1 -compare "${TMPDIR}/ex1-overbroad-received.txt" "${DATA}/ex1-overbroad-expected.txt" +compare "${TMPDIR}/ex1-overbroad-received.txt" \ + "${DATA}/ex1-overbroad-expected.txt"