]> granicus.if.org Git - strace/commitdiff
tests: check -D option
authorDmitry V. Levin <ldv@altlinux.org>
Fri, 4 Oct 2019 21:58:20 +0000 (21:58 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Fri, 4 Oct 2019 21:58:20 +0000 (21:58 +0000)
* tests/strace-D.test: New test.
* tests/strace-D.expected: New file.
* tests/Makefile.am (MISC_TESTS): Add strace-D.test.
(EXTRA_DIST): Add strace-D.expected.

tests/Makefile.am
tests/strace-D.expected [new file with mode: 0644]
tests/strace-D.test [new file with mode: 0755]

index bd9f5465b148c2b3435df85b37059aec386031ac..57f7ad3a754046dd34d2d91f9ab586cfbbc0b6a6 100644 (file)
@@ -363,6 +363,7 @@ MISC_TESTS = \
        status-none-threads.test \
        status-unfinished-threads.test \
        strace-C.test \
+       strace-D.test \
        strace-E.test \
        strace-S.test \
        strace-T.test \
@@ -455,6 +456,7 @@ EXTRA_DIST = \
        stack-fcall.h \
        status-detached.expected \
        strace-C.expected \
+       strace-D.expected \
        strace-E.expected \
        strace-T.expected \
        strace-ff.expected \
diff --git a/tests/strace-D.expected b/tests/strace-D.expected
new file mode 100644 (file)
index 0000000..78c9d2d
--- /dev/null
@@ -0,0 +1 @@
++++ exited with 0 +++
diff --git a/tests/strace-D.test b/tests/strace-D.test
new file mode 100755 (executable)
index 0000000..031d765
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# Check -D option.
+#
+# Copyright (c) 2019 Dmitry V. Levin <ldv@altlinux.org>
+# All rights reserved.
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+. "${srcdir=.}/init.sh"
+
+check_prog sed
+
+get_parent_pid()
+{
+       sed '/^PPid:[[:space:]]*/!d;s///'
+}
+
+get_tracer_pid()
+{
+       sed '/^TracerPid:[[:space:]]*/!d;s///'
+}
+
+status_file=/proc/self/status
+[ -f "$status_file" ] ||
+       framework_skip_ "$status_file is not available"
+
+set -- sed -n -E '/^(P|Tracer)Pid:/p' "$status_file"
+"$@" > "$LOG" ||
+       framework_skip_ "$* does not work"
+
+# not traced: PPid > 0, TracerPid == 0
+[ "$(get_parent_pid < "$LOG")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$LOG")" -eq 0 ] ||
+       dump_log_and_fail_with "$*: unexpected output"
+
+# !-D: PPid > 0, TracerPid > 0, PPid == TracerPid
+run_strace -a14 -q -enone "$@" > "$OUT"
+[ "$(get_parent_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_parent_pid < "$OUT")" = "$(get_tracer_pid < "$OUT")" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+# -D: PPid > 0, TracerPid > 0, PPid != TracerPid
+run_strace -a14 -D -q -enone "$@" > "$OUT"
+[ "$(get_parent_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_tracer_pid < "$OUT")" -gt 0 ] &&
+[ "$(get_parent_pid < "$OUT")" != "$(get_tracer_pid < "$OUT")" ] || {
+       cat < "$OUT" > "$LOG"
+       dump_log_and_fail_with "$STRACE $args: unexpected output"
+}
+match_diff
+
+exit 0