Skip to content

Commit f4cde4e

Browse files
committed
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.
1 parent 4afd060 commit f4cde4e

File tree

6 files changed

+100
-0
lines changed

6 files changed

+100
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
-include ../tools.mk
2+
3+
# Modelled after compile-fail/changing-crates test, but this one puts
4+
# more than one (mismatching) candidate crate into the search path,
5+
# which did not appear directly expressible in compile-fail/aux-build
6+
# infrastructure.
7+
#
8+
# Note that we move the built libraries into target direcrtories rather than
9+
# use the `--out-dir` option because the `../tools.mk` file already bakes a
10+
# use of `--out-dir` into the definition of $(RUSTC).
11+
12+
A1=$(TMPDIR)/a1
13+
A2=$(TMPDIR)/a2
14+
A3=$(TMPDIR)/a3
15+
16+
# A hack to match distinct lines of output from a single run.
17+
LOG=$(TMPDIR)/log.txt
18+
19+
all:
20+
mkdir -p $(A1) $(A2) $(A3)
21+
$(RUSTC) --crate-type=rlib crateA1.rs
22+
mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A1)
23+
$(RUSTC) --crate-type=rlib -L$(A1) crateB.rs
24+
$(RUSTC) --crate-type=rlib crateA2.rs
25+
mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A2)
26+
$(RUSTC) --crate-type=rlib crateA3.rs
27+
mv $(TMPDIR)/$(call RLIB_GLOB,crateA) $(A3)
28+
# Ensure crateC fails to compile since A1 is "missing" and A2/A3 hashes do not match
29+
$(RUSTC) -L$(A2) -L$(A3) crateC.rs >$(LOG) 2>&1 || true
30+
grep "error: found possibly newer version of crate \`crateA\` which \`crateB\` depends on" $(LOG)
31+
grep "note: perhaps this crate needs to be recompiled?" $(LOG)
32+
grep "note: crate \`crateA\` path #1:" $(LOG)
33+
grep "note: crate \`crateA\` path #2:" $(LOG)
34+
grep "note: crate \`crateB\` path #1:" $(LOG)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![crate_id="crateA"]
12+
13+
// Base crate
14+
pub fn func<T>() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![crate_id="crateA"]
12+
13+
// Base crate
14+
pub fn func<T>() { println!("hello"); }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![crate_id="crateA"]
12+
13+
// Base crate
14+
pub fn foo<T>() { println!("world!"); }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
extern crate crateA;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
extern crate crateB;
12+
13+
fn main() {}

0 commit comments

Comments
 (0)