mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 02:33:55 +00:00
rewrite incremental-debugger-visualiser to rmake
This commit is contained in:
parent
a3b7c2993e
commit
ab71510704
@ -271,6 +271,28 @@ pub fn set_host_rpath(cmd: &mut Command) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Read the contents of a file that cannot simply be read by
|
||||||
|
/// read_to_string, due to invalid utf8 data, then assert that it contains `expected`.
|
||||||
|
#[track_caller]
|
||||||
|
pub fn invalid_utf8_contains_str<P: AsRef<Path>>(path: P, expected: &str) {
|
||||||
|
use std::io::Read;
|
||||||
|
let mut file = std::fs::File::open(path).unwrap();
|
||||||
|
let mut buffer = Vec::new();
|
||||||
|
file.read_to_end(&mut buffer).unwrap();
|
||||||
|
assert!(String::from_utf8_lossy(&buffer).contains(expected));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Read the contents of a file that cannot simply be read by
|
||||||
|
/// read_to_string, due to invalid utf8 data, then assert that it does not contain `expected`.
|
||||||
|
#[track_caller]
|
||||||
|
pub fn invalid_utf8_not_contains_str<P: AsRef<Path>>(path: P, expected: &str) {
|
||||||
|
use std::io::Read;
|
||||||
|
let mut file = std::fs::File::open(path).unwrap();
|
||||||
|
let mut buffer = Vec::new();
|
||||||
|
file.read_to_end(&mut buffer).unwrap();
|
||||||
|
assert!(!String::from_utf8_lossy(&buffer).contains(expected));
|
||||||
|
}
|
||||||
|
|
||||||
/// Copy a directory into another.
|
/// Copy a directory into another.
|
||||||
pub fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) {
|
pub fn copy_dir_all(src: impl AsRef<Path>, dst: impl AsRef<Path>) {
|
||||||
fn copy_dir_all_inner(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> io::Result<()> {
|
fn copy_dir_all_inner(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> io::Result<()> {
|
||||||
|
@ -67,7 +67,6 @@ run-make/inaccessible-temp-dir/Makefile
|
|||||||
run-make/include_bytes_deps/Makefile
|
run-make/include_bytes_deps/Makefile
|
||||||
run-make/incr-add-rust-src-component/Makefile
|
run-make/incr-add-rust-src-component/Makefile
|
||||||
run-make/incr-foreign-head-span/Makefile
|
run-make/incr-foreign-head-span/Makefile
|
||||||
run-make/incremental-debugger-visualizer/Makefile
|
|
||||||
run-make/incremental-session-fail/Makefile
|
run-make/incremental-session-fail/Makefile
|
||||||
run-make/inline-always-many-cgu/Makefile
|
run-make/inline-always-many-cgu/Makefile
|
||||||
run-make/interdependent-c-libraries/Makefile
|
run-make/interdependent-c-libraries/Makefile
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
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 ./foo.rs $(SRC_DIR)
|
|
||||||
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
|
|
61
tests/run-make/incremental-debugger-visualizer/rmake.rs
Normal file
61
tests/run-make/incremental-debugger-visualizer/rmake.rs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
use run_make_support::{
|
||||||
|
fs_wrapper, invalid_utf8_contains_str, invalid_utf8_not_contains_str, rustc,
|
||||||
|
};
|
||||||
|
use std::io::Read;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
fs_wrapper::create_file("foo.py");
|
||||||
|
fs_wrapper::write("foo.py", "GDB script v1");
|
||||||
|
fs_wrapper::create_file("foo.natvis");
|
||||||
|
fs_wrapper::write("foo.py", "Natvis v1");
|
||||||
|
rustc()
|
||||||
|
.input("foo.rs")
|
||||||
|
.crate_type("rlib")
|
||||||
|
.emit("metadata")
|
||||||
|
.incremental("incremental")
|
||||||
|
.arg("-Zincremental-verify-ich")
|
||||||
|
.run();
|
||||||
|
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "GDB script v1");
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "Natvis v1");
|
||||||
|
|
||||||
|
// Change only the GDB script and check that the change has been picked up
|
||||||
|
fs_wrapper::remove_file("foo.py");
|
||||||
|
fs_wrapper::create_file("foo.py");
|
||||||
|
fs_wrapper::write("foo.py", "GDB script v2");
|
||||||
|
rustc()
|
||||||
|
.input("foo.rs")
|
||||||
|
.crate_type("rlib")
|
||||||
|
.emit("metadata")
|
||||||
|
.incremental("incremental")
|
||||||
|
.arg("-Zincremental-verify-ich")
|
||||||
|
.run();
|
||||||
|
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "GDB script v2");
|
||||||
|
invalid_utf8_not_contains_str("libfoo.rmeta", "GDB script v1");
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "Natvis v1");
|
||||||
|
|
||||||
|
// Now change the Natvis version and check that the change has been picked up
|
||||||
|
fs_wrapper::remove_file("foo.natvis");
|
||||||
|
fs_wrapper::create_file("foo.natvis");
|
||||||
|
fs_wrapper::write("foo.py", "Natvis v2");
|
||||||
|
rustc()
|
||||||
|
.input("foo.rs")
|
||||||
|
.crate_type("rlib")
|
||||||
|
.emit("metadata")
|
||||||
|
.incremental("incremental")
|
||||||
|
.arg("-Zincremental-verify-ich")
|
||||||
|
.run();
|
||||||
|
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "GDB script v2");
|
||||||
|
invalid_utf8_not_contains_str("libfoo.rmeta", "GDB script v1");
|
||||||
|
invalid_utf8_not_contains_str("libfoo.rmeta", "Natvis v1");
|
||||||
|
invalid_utf8_contains_str("libfoo.rmeta", "Natvis v2");
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user