Rough regression test for #13266.
All it checks, unfortunately, is that you actually printed at least two lines for crateA paths and at least one line for crateB paths. But that's enough to capture the spirit of the bug, I think. I did not bother trying to verify that the paths themselves reflected where the crates end up.
This commit is contained in:
parent
4afd060a59
commit
f4cde4eddc
34
src/test/run-make/many-crates-but-no-match/Makefile
Normal file
34
src/test/run-make/many-crates-but-no-match/Makefile
Normal file
@ -0,0 +1,34 @@
|
||||
-include ../tools.mk
|
||||
|
||||
# Modelled after compile-fail/changing-crates test, but this one puts
|
||||
# more than one (mismatching) candidate crate into the search path,
|
||||
# which did not appear directly expressible in compile-fail/aux-build
|
||||
# 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
|
||||
grep "error: found possibly newer version of crate \`crateA\` which \`crateB\` depends on" $(LOG)
|
||||
grep "note: perhaps this crate needs to be recompiled?" $(LOG)
|
||||
grep "note: crate \`crateA\` path #1:" $(LOG)
|
||||
grep "note: crate \`crateA\` path #2:" $(LOG)
|
||||
grep "note: crate \`crateB\` path #1:" $(LOG)
|
14
src/test/run-make/many-crates-but-no-match/crateA1.rs
Normal file
14
src/test/run-make/many-crates-but-no-match/crateA1.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_id="crateA"]
|
||||
|
||||
// Base crate
|
||||
pub fn func<T>() {}
|
14
src/test/run-make/many-crates-but-no-match/crateA2.rs
Normal file
14
src/test/run-make/many-crates-but-no-match/crateA2.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_id="crateA"]
|
||||
|
||||
// Base crate
|
||||
pub fn func<T>() { println!("hello"); }
|
14
src/test/run-make/many-crates-but-no-match/crateA3.rs
Normal file
14
src/test/run-make/many-crates-but-no-match/crateA3.rs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![crate_id="crateA"]
|
||||
|
||||
// Base crate
|
||||
pub fn foo<T>() { println!("world!"); }
|
11
src/test/run-make/many-crates-but-no-match/crateB.rs
Normal file
11
src/test/run-make/many-crates-but-no-match/crateB.rs
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate crateA;
|
13
src/test/run-make/many-crates-but-no-match/crateC.rs
Normal file
13
src/test/run-make/many-crates-but-no-match/crateC.rs
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
extern crate crateB;
|
||||
|
||||
fn main() {}
|
Loading…
x
Reference in New Issue
Block a user