From 5b0697b68c96824f98df2556fbf9aa738ede4b73 Mon Sep 17 00:00:00 2001 From: Andrew Wood Date: Sat, 30 Nov 2024 16:35:30 +0000 Subject: [PATCH] Add a test for --watchfd with a single file descriptor. --- tests/Watchfd_-_Single_descriptor.test | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 tests/Watchfd_-_Single_descriptor.test diff --git a/tests/Watchfd_-_Single_descriptor.test b/tests/Watchfd_-_Single_descriptor.test new file mode 100755 index 0000000..9ebe656 --- /dev/null +++ b/tests/Watchfd_-_Single_descriptor.test @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Check that watching a single file descriptor works as expected. + +# Dummy assignments for "shellcheck". +testSubject="${testSubject:-false}"; workFile1="${workFile1:-.tmp1}"; workFile2="${workFile1:-.tmp2}" + +# Skip the test if "-d" is not available. +if ! "${testSubject}" -h | grep -Fq ' -d'; then + echo "no \`--watchfd' / \`-d' option on this platform" + exit 77 +fi + +seq 1 100 > "${workFile1}" + +# Run a background process to perform a few reads from a file. +# NB we just export line to make shellcheck think it's used. +(export line; sleep 1; read -r line; sleep 1; read -r line; sleep 1) <"${workFile1}" & +pid=$! + +"${testSubject}" -d "${pid}:0" -f -i 0.5 >/dev/null 2>"${workFile2}" + +# There should be at least 2 different numbers starting the output lines. +positionsReported="$(tr '\r' '\n' < "${workFile2}" | awk '{print $1}' | sort -n | uniq)" +differentNumbers="$(printf "%s\n" "${positionsReported}" | grep -Ec .)" +if ! test "${differentNumbers}" -gt 1; then + printf "%s\n" "Expected at least 2 different numbers to be output" + printf "%s:\n%s\n" "Positions reported" "${positionsReported}" + printf "%s: %s\n" "Number of different values seen" "${differentNumbers}" + printf "%s\n" "Raw output:" + tr '\r' '\n' < "${workFile2}" + exit 1 +fi + +exit 0 + +# EOF