From cfca5b0b8772a807e5b12577b30198515d6264bc Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Wed, 17 May 2023 10:45:57 +0200 Subject: [PATCH] Add/improve tests for debugger_visualizer change detection. --- .../debugger-visualizer-dep-info/Makefile | 7 +-- .../debugger-visualizer-dep-info/main.rs | 2 +- .../my_visualizers/bar.natvis | 1 + .../my_visualizers/bar.py | 1 - .../incremental-debugger-visualizer/Makefile | 51 +++++++++++++++++++ .../incremental-debugger-visualizer/foo.rs | 6 +++ 6 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.natvis delete mode 100644 tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.py create mode 100644 tests/run-make/incremental-debugger-visualizer/Makefile create mode 100644 tests/run-make/incremental-debugger-visualizer/foo.rs diff --git a/tests/run-make/debugger-visualizer-dep-info/Makefile b/tests/run-make/debugger-visualizer-dep-info/Makefile index 0a2493144ead..0877998a74fe 100644 --- a/tests/run-make/debugger-visualizer-dep-info/Makefile +++ b/tests/run-make/debugger-visualizer-dep-info/Makefile @@ -1,8 +1,9 @@ -# ignore-windows-gnu - include ../tools.mk +# This test makes sure that files referenced via #[debugger_visualizer] are +# included in `--emit dep-info` output. + all: $(RUSTC) --emit dep-info main.rs $(CGREP) "foo.py" < $(TMPDIR)/main.d - $(CGREP) "my_visualizers/bar.py" < $(TMPDIR)/main.d + $(CGREP) "my_visualizers/bar.natvis" < $(TMPDIR)/main.d diff --git a/tests/run-make/debugger-visualizer-dep-info/main.rs b/tests/run-make/debugger-visualizer-dep-info/main.rs index 6caf2afe9a57..3aede2215eac 100644 --- a/tests/run-make/debugger-visualizer-dep-info/main.rs +++ b/tests/run-make/debugger-visualizer-dep-info/main.rs @@ -3,7 +3,7 @@ fn main() { const _UNUSED: u32 = { mod inner { - #![debugger_visualizer(gdb_script_file = "my_visualizers/bar.py")] + #![debugger_visualizer(natvis_file = "my_visualizers/bar.natvis")] pub const XYZ: u32 = 123; } diff --git a/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.natvis b/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.natvis new file mode 100644 index 000000000000..c341a403902b --- /dev/null +++ b/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.natvis @@ -0,0 +1 @@ + diff --git a/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.py b/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.py deleted file mode 100644 index 1bb8bf6d7fd4..000000000000 --- a/tests/run-make/debugger-visualizer-dep-info/my_visualizers/bar.py +++ /dev/null @@ -1 +0,0 @@ -# empty diff --git a/tests/run-make/incremental-debugger-visualizer/Makefile b/tests/run-make/incremental-debugger-visualizer/Makefile new file mode 100644 index 000000000000..3084dde7e99d --- /dev/null +++ b/tests/run-make/incremental-debugger-visualizer/Makefile @@ -0,0 +1,51 @@ +include ../tools.mk + +# This test makes sure that changes to files referenced via #[debugger_visualizer] +# are picked up when compiling incrementally. + +# We have to copy the source to $(TMPDIR) because Github CI mounts the source +# directory as readonly. We need to apply modifications to some of the source +# file. +SRC_DIR := $(TMPDIR)/src + +INCR_CACHE_DIR := $(TMPDIR)/incremental + + +all: + rm -rf $(TMPDIR)/* + mkdir $(SRC_DIR) + cp -t $(SRC_DIR) ./foo.rs + echo "GDB script v1" > $(SRC_DIR)/foo.py + echo "Natvis v1" > $(SRC_DIR)/foo.natvis + $(RUSTC) $(SRC_DIR)/foo.rs \ + --crate-type=rlib \ + --emit metadata \ + -C incremental=$(INCR_CACHE_DIR) \ + -Z incremental-verify-ich + $(CGREP) "GDB script v1" < $(TMPDIR)/libfoo.rmeta + $(CGREP) "Natvis v1" < $(TMPDIR)/libfoo.rmeta + + # Change only the GDB script and check that the change has been picked up + echo "GDB script v2" > $(SRC_DIR)/foo.py + $(RUSTC) $(SRC_DIR)/foo.rs \ + --crate-type=rlib \ + --emit metadata \ + -C incremental=$(INCR_CACHE_DIR) \ + -Z incremental-verify-ich + + $(CGREP) "GDB script v2" < $(TMPDIR)/libfoo.rmeta + $(CGREP) -v "GDB script v1" < $(TMPDIR)/libfoo.rmeta + $(CGREP) "Natvis v1" < $(TMPDIR)/libfoo.rmeta + + # Now change the Natvis version and check that the change has been picked up + echo "Natvis v2" > $(SRC_DIR)/foo.natvis + $(RUSTC) $(SRC_DIR)/foo.rs \ + --crate-type=rlib \ + --emit metadata \ + -C incremental=$(INCR_CACHE_DIR) \ + -Z incremental-verify-ich + + $(CGREP) "GDB script v2" < $(TMPDIR)/libfoo.rmeta + $(CGREP) -v "GDB script v1" < $(TMPDIR)/libfoo.rmeta + $(CGREP) "Natvis v2" < $(TMPDIR)/libfoo.rmeta + $(CGREP) -v "Natvis v1" < $(TMPDIR)/libfoo.rmeta diff --git a/tests/run-make/incremental-debugger-visualizer/foo.rs b/tests/run-make/incremental-debugger-visualizer/foo.rs new file mode 100644 index 000000000000..8daa36a12d38 --- /dev/null +++ b/tests/run-make/incremental-debugger-visualizer/foo.rs @@ -0,0 +1,6 @@ +#![debugger_visualizer(natvis_file = "./foo.natvis")] +#![debugger_visualizer(gdb_script_file = "./foo.py")] + +pub struct Foo { + pub x: u32, +}