summaryrefslogtreecommitdiffstats
path: root/tests/run-make/many-crates-but-no-match/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-make/many-crates-but-no-match/Makefile')
-rw-r--r--tests/run-make/many-crates-but-no-match/Makefile35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/run-make/many-crates-but-no-match/Makefile b/tests/run-make/many-crates-but-no-match/Makefile
new file mode 100644
index 000000000..ca0ab8e9e
--- /dev/null
+++ b/tests/run-make/many-crates-but-no-match/Makefile
@@ -0,0 +1,35 @@
+include ../tools.mk
+
+# Modelled after ui/changing-crates.rs test, but this one puts
+# more than one (mismatching) candidate crate into the search path,
+# which did not appear directly expressible in UI testing infrastructure.
+#
+# Note that we move the built libraries into target direcrtories rather than
+# use the `--out-dir` option because the `../tools.mk` file already bakes a
+# use of `--out-dir` into the definition of $(RUSTC).
+
+A1=$(TMPDIR)/a1
+A2=$(TMPDIR)/a2
+A3=$(TMPDIR)/a3
+
+# A hack to match distinct lines of output from a single run.
+LOG=$(TMPDIR)/log.txt
+
+all:
+ mkdir -p $(A1) $(A2) $(A3)
+ $(RUSTC) --crate-type=rlib crateA1.rs
+ mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A1)
+ $(RUSTC) --crate-type=rlib -L $(A1) crateB.rs
+ $(RUSTC) --crate-type=rlib crateA2.rs
+ mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A2)
+ $(RUSTC) --crate-type=rlib crateA3.rs
+ mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A3)
+ # Ensure crateC fails to compile since A1 is "missing" and A2/A3 hashes do not match
+ $(RUSTC) -L $(A2) -L $(A3) crateC.rs >$(LOG) 2>&1 || true
+ $(CGREP) \
+ 'found possibly newer version of crate `crateA` which `crateB` depends on' \
+ 'note: perhaps that crate needs to be recompiled?' \
+ 'crate `crateA`:' \
+ 'crate `crateB`:' \
+ < $(LOG)
+ # the 'crate `crateA`' will match two entries.