summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2022-12-13 15:44:17 -0500
committerTavian Barnes <tavianator@tavianator.com>2022-12-13 15:44:17 -0500
commitf3ba6a3e40d72e00d13e943d9338b60b4bee2e40 (patch)
treea898a272dfa433701e6836a4793351566b42d39c
parent7f303bec64c7a300f0f38e9938a8327cac9591e0 (diff)
downloadbfs-f3ba6a3e40d72e00d13e943d9338b60b4bee2e40.tar.xz
tests: Add a test for readdir() errors
-rw-r--r--tests/posix/readdir_error.sh21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/posix/readdir_error.sh b/tests/posix/readdir_error.sh
new file mode 100644
index 0000000..cca71f0
--- /dev/null
+++ b/tests/posix/readdir_error.sh
@@ -0,0 +1,21 @@
+clean_scratch
+mkfifo scratch/{pid,hup}
+
+(
+ # Create a zombie process
+ echo >/dev/null &
+ # Write the PID to scratch/pid
+ echo $! >scratch/pid
+ # Don't wait on the processes
+ exec cat scratch/hup >/dev/null
+) &
+
+# Kill cat on exit
+trap "echo >scratch/hup" EXIT
+
+# Read the zombie PID
+read -r pid <scratch/pid
+
+# On Linux, open(/proc/$pid/net) will succeed but readdir() will fail
+skip_unless test -r "/proc/$pid/net"
+fail invoke_bfs "/proc/$pid/net" >/dev/null