summaryrefslogtreecommitdiffstats
path: root/tests/run-make-fulldeps/many-crates-but-no-match
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-make-fulldeps/many-crates-but-no-match')
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/Makefile35
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs4
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs4
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs4
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs1
-rw-r--r--tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs3
6 files changed, 51 insertions, 0 deletions
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/Makefile b/tests/run-make-fulldeps/many-crates-but-no-match/Makefile
new file mode 100644
index 000000000..ca0ab8e9e
--- /dev/null
+++ b/tests/run-make-fulldeps/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.
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs
new file mode 100644
index 000000000..3fed5a38e
--- /dev/null
+++ b/tests/run-make-fulldeps/many-crates-but-no-match/crateA1.rs
@@ -0,0 +1,4 @@
+#![crate_name="crateA"]
+
+// Base crate
+pub fn func<T>() {}
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs
new file mode 100644
index 000000000..8db07a015
--- /dev/null
+++ b/tests/run-make-fulldeps/many-crates-but-no-match/crateA2.rs
@@ -0,0 +1,4 @@
+#![crate_name="crateA"]
+
+// Base crate
+pub fn func<T>() { println!("hello"); }
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs
new file mode 100644
index 000000000..a1e8e40a3
--- /dev/null
+++ b/tests/run-make-fulldeps/many-crates-but-no-match/crateA3.rs
@@ -0,0 +1,4 @@
+#![crate_name="crateA"]
+
+// Base crate
+pub fn foo<T>() { println!("world!"); }
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs
new file mode 100644
index 000000000..4ccd65d65
--- /dev/null
+++ b/tests/run-make-fulldeps/many-crates-but-no-match/crateB.rs
@@ -0,0 +1 @@
+extern crate crateA;
diff --git a/tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs b/tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs
new file mode 100644
index 000000000..a8b817ec6
--- /dev/null
+++ b/tests/run-make-fulldeps/many-crates-but-no-match/crateC.rs
@@ -0,0 +1,3 @@
+extern crate crateB;
+
+fn main() {}