Fix tests being non-deterministic

This commit is contained in:
Lukas Wirth 2024-04-19 11:43:16 +02:00
parent 0485a85ee2
commit cdb8c3a327
10 changed files with 221 additions and 175 deletions

View file

@ -295,11 +295,30 @@ pub struct CrateData {
pub is_proc_macro: bool, pub is_proc_macro: bool,
} }
#[derive(Default, Debug, Clone, PartialEq, Eq)] #[derive(Default, Clone, PartialEq, Eq)]
pub struct Env { pub struct Env {
entries: FxHashMap<String, String>, entries: FxHashMap<String, String>,
} }
impl fmt::Debug for Env {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
struct EnvDebug<'s>(Vec<(&'s String, &'s String)>);
impl fmt::Debug for EnvDebug<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_map().entries(self.0.iter().copied()).finish()
}
}
f.debug_struct("Env")
.field("entries", &{
let mut entries: Vec<_> = self.entries.iter().collect();
entries.sort();
EnvDebug(entries)
})
.finish()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct Dependency { pub struct Dependency {
pub crate_id: CrateId, pub crate_id: CrateId,
@ -660,8 +679,16 @@ impl Env {
self.entries.get(env).cloned() self.entries.get(env).cloned()
} }
pub fn iter(&self) -> impl Iterator<Item = (&str, &str)> { pub fn extend_from_other(&mut self, other: &Env) {
self.entries.iter().map(|(k, v)| (k.as_str(), v.as_str())) self.entries.extend(other.entries.iter().map(|(x, y)| (x.to_owned(), y.to_owned())));
}
}
impl From<Env> for Vec<(String, String)> {
fn from(env: Env) -> Vec<(String, String)> {
let mut entries: Vec<_> = env.entries.into_iter().collect();
entries.sort();
entries
} }
} }

View file

@ -58,13 +58,6 @@ impl CfgOptions {
self.enabled.insert(CfgAtom::KeyValue { key, value }); self.enabled.insert(CfgAtom::KeyValue { key, value });
} }
pub fn difference<'a>(
&'a self,
other: &'a CfgOptions,
) -> impl Iterator<Item = &'a CfgAtom> + 'a {
self.enabled.difference(&other.enabled)
}
pub fn apply_diff(&mut self, diff: CfgDiff) { pub fn apply_diff(&mut self, diff: CfgDiff) {
for atom in diff.enable { for atom in diff.enable {
self.enabled.insert(atom); self.enabled.insert(atom);

View file

@ -407,8 +407,7 @@ impl ProcMacroExpander for Expander {
call_site: Span, call_site: Span,
mixed_site: Span, mixed_site: Span,
) -> Result<tt::Subtree<Span>, ProcMacroExpansionError> { ) -> Result<tt::Subtree<Span>, ProcMacroExpansionError> {
let env = env.iter().map(|(k, v)| (k.to_owned(), v.to_owned())).collect(); match self.0.expand(subtree, attrs, env.clone(), def_site, call_site, mixed_site) {
match self.0.expand(subtree, attrs, env, def_site, call_site, mixed_site) {
Ok(Ok(subtree)) => Ok(subtree), Ok(Ok(subtree)) => Ok(subtree),
Ok(Err(err)) => Err(ProcMacroExpansionError::Panic(err.0)), Ok(Err(err)) => Err(ProcMacroExpansionError::Panic(err.0)),
Err(err) => Err(ProcMacroExpansionError::System(err.to_string())), Err(err) => Err(ProcMacroExpansionError::System(err.to_string())),

View file

@ -11,6 +11,7 @@ pub mod msg;
mod process; mod process;
mod version; mod version;
use base_db::Env;
use indexmap::IndexSet; use indexmap::IndexSet;
use paths::AbsPathBuf; use paths::AbsPathBuf;
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
@ -152,16 +153,13 @@ impl ProcMacro {
&self, &self,
subtree: &tt::Subtree<Span>, subtree: &tt::Subtree<Span>,
attr: Option<&tt::Subtree<Span>>, attr: Option<&tt::Subtree<Span>>,
env: Vec<(String, String)>, env: Env,
def_site: Span, def_site: Span,
call_site: Span, call_site: Span,
mixed_site: Span, mixed_site: Span,
) -> Result<Result<tt::Subtree<Span>, PanicMessage>, ServerError> { ) -> Result<Result<tt::Subtree<Span>, PanicMessage>, ServerError> {
let version = self.process.lock().unwrap_or_else(|e| e.into_inner()).version(); let version = self.process.lock().unwrap_or_else(|e| e.into_inner()).version();
let current_dir = env let current_dir = env.get("CARGO_MANIFEST_DIR");
.iter()
.find(|(name, _)| name == "CARGO_MANIFEST_DIR")
.map(|(_, value)| value.clone());
let mut span_data_table = IndexSet::default(); let mut span_data_table = IndexSet::default();
let def_site = span_data_table.insert_full(def_site).0; let def_site = span_data_table.insert_full(def_site).0;
@ -172,7 +170,7 @@ impl ProcMacro {
macro_name: self.name.to_string(), macro_name: self.name.to_string(),
attributes: attr.map(|subtree| FlatTree::new(subtree, version, &mut span_data_table)), attributes: attr.map(|subtree| FlatTree::new(subtree, version, &mut span_data_table)),
lib: self.dylib_path.to_path_buf().into(), lib: self.dylib_path.to_path_buf().into(),
env, env: env.into(),
current_dir, current_dir,
has_global_spans: ExpnGlobals { has_global_spans: ExpnGlobals {
serialize: version >= HAS_GLOBAL_SPANS, serialize: version >= HAS_GLOBAL_SPANS,

View file

@ -98,6 +98,11 @@ fn get_test_json_file<T: DeserializeOwned>(file: &str) -> T {
} }
} }
fn replace_cargo(s: &mut String) {
let path = toolchain::Tool::Cargo.path().to_string().escape_debug().collect::<String>();
*s = s.replace(&path, "$CARGO$");
}
fn replace_root(s: &mut String, direction: bool) { fn replace_root(s: &mut String, direction: bool) {
if direction { if direction {
let root = if cfg!(windows) { r#"C:\\ROOT\"# } else { "/ROOT/" }; let root = if cfg!(windows) { r#"C:\\ROOT\"# } else { "/ROOT/" };
@ -156,7 +161,9 @@ fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacro
fn check_crate_graph(crate_graph: CrateGraph, expect: ExpectFile) { fn check_crate_graph(crate_graph: CrateGraph, expect: ExpectFile) {
let mut crate_graph = format!("{crate_graph:#?}"); let mut crate_graph = format!("{crate_graph:#?}");
replace_root(&mut crate_graph, false); replace_root(&mut crate_graph, false);
replace_cargo(&mut crate_graph);
replace_fake_sys_root(&mut crate_graph); replace_fake_sys_root(&mut crate_graph);
expect.assert_eq(&crate_graph); expect.assert_eq(&crate_graph);
} }

View file

@ -17,7 +17,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -25,20 +24,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -77,7 +78,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -85,20 +85,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -144,7 +146,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -152,20 +153,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "an_example", "CARGO_CRATE_NAME": "an_example",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -211,7 +214,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -219,20 +221,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "it", "CARGO_CRATE_NAME": "it",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -278,7 +282,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"feature=default", "feature=default",
"feature=std", "feature=std",
], ],
@ -286,7 +289,6 @@
potential_cfg_options: Some( potential_cfg_options: Some(
CfgOptions( CfgOptions(
[ [
"debug_assertions",
"feature=align", "feature=align",
"feature=const-extern-fn", "feature=const-extern-fn",
"feature=default", "feature=default",
@ -299,20 +301,22 @@
), ),
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "libc", "CARGO_CRATE_NAME": "libc",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_AUTHORS": "The Rust Project Developers",
"CARGO_PKG_DESCRIPTION": "Raw FFI bindings to platform libraries like libc.\n",
"CARGO_PKG_HOMEPAGE": "https://github.com/rust-lang/libc",
"CARGO_PKG_LICENSE": "MIT OR Apache-2.0",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_NAME": "libc", "CARGO_PKG_NAME": "libc",
"CARGO_PKG_VERSION_PATCH": "98", "CARGO_PKG_README": "README.md",
"CARGO": "cargo", "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/libc",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "2", "CARGO_PKG_VERSION_MINOR": "2",
"CARGO_PKG_VERSION_PATCH": "98",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },

View file

@ -17,7 +17,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -25,20 +24,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -77,7 +78,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -85,20 +85,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -144,7 +146,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -152,20 +153,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "an_example", "CARGO_CRATE_NAME": "an_example",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -211,7 +214,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
"test", "test",
], ],
@ -219,20 +221,22 @@
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "it", "CARGO_CRATE_NAME": "it",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -278,7 +282,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"feature=default", "feature=default",
"feature=std", "feature=std",
], ],
@ -286,7 +289,6 @@
potential_cfg_options: Some( potential_cfg_options: Some(
CfgOptions( CfgOptions(
[ [
"debug_assertions",
"feature=align", "feature=align",
"feature=const-extern-fn", "feature=const-extern-fn",
"feature=default", "feature=default",
@ -299,20 +301,22 @@
), ),
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "libc", "CARGO_CRATE_NAME": "libc",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_AUTHORS": "The Rust Project Developers",
"CARGO_PKG_DESCRIPTION": "Raw FFI bindings to platform libraries like libc.\n",
"CARGO_PKG_HOMEPAGE": "https://github.com/rust-lang/libc",
"CARGO_PKG_LICENSE": "MIT OR Apache-2.0",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_NAME": "libc", "CARGO_PKG_NAME": "libc",
"CARGO_PKG_VERSION_PATCH": "98", "CARGO_PKG_README": "README.md",
"CARGO": "cargo", "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/libc",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "2", "CARGO_PKG_VERSION_MINOR": "2",
"CARGO_PKG_VERSION_PATCH": "98",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },

View file

@ -17,27 +17,28 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -76,27 +77,28 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "hello_world", "CARGO_CRATE_NAME": "hello_world",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -142,27 +144,28 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "an_example", "CARGO_CRATE_NAME": "an_example",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -208,27 +211,28 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"rust_analyzer", "rust_analyzer",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "it", "CARGO_CRATE_NAME": "it",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_MANIFEST_DIR": "$ROOT$hello-world",
"CARGO_PKG_HOMEPAGE": "", "CARGO_PKG_AUTHORS": "",
"CARGO_PKG_DESCRIPTION": "", "CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_LICENSE": "",
"CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_NAME": "hello-world", "CARGO_PKG_NAME": "hello-world",
"CARGO_PKG_VERSION_PATCH": "0", "CARGO_PKG_README": "",
"CARGO": "cargo",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_REPOSITORY": "",
"CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.1.0",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "1", "CARGO_PKG_VERSION_MINOR": "1",
"CARGO_PKG_VERSION_PATCH": "0",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },
@ -274,7 +278,6 @@
), ),
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions",
"feature=default", "feature=default",
"feature=std", "feature=std",
], ],
@ -282,7 +285,6 @@
potential_cfg_options: Some( potential_cfg_options: Some(
CfgOptions( CfgOptions(
[ [
"debug_assertions",
"feature=align", "feature=align",
"feature=const-extern-fn", "feature=const-extern-fn",
"feature=default", "feature=default",
@ -295,20 +297,22 @@
), ),
env: Env { env: Env {
entries: { entries: {
"CARGO_PKG_LICENSE": "", "CARGO": "$CARGO$",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_AUTHORS": "",
"CARGO_CRATE_NAME": "libc", "CARGO_CRATE_NAME": "libc",
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.98",
"CARGO_PKG_AUTHORS": "The Rust Project Developers",
"CARGO_PKG_DESCRIPTION": "Raw FFI bindings to platform libraries like libc.\n",
"CARGO_PKG_HOMEPAGE": "https://github.com/rust-lang/libc",
"CARGO_PKG_LICENSE": "MIT OR Apache-2.0",
"CARGO_PKG_LICENSE_FILE": "", "CARGO_PKG_LICENSE_FILE": "",
"CARGO_PKG_HOMEPAGE": "",
"CARGO_PKG_DESCRIPTION": "",
"CARGO_PKG_NAME": "libc", "CARGO_PKG_NAME": "libc",
"CARGO_PKG_VERSION_PATCH": "98", "CARGO_PKG_README": "README.md",
"CARGO": "cargo", "CARGO_PKG_REPOSITORY": "https://github.com/rust-lang/libc",
"CARGO_PKG_REPOSITORY": "", "CARGO_PKG_RUST_VERSION": "",
"CARGO_PKG_VERSION": "0.2.98",
"CARGO_PKG_VERSION_MAJOR": "0",
"CARGO_PKG_VERSION_MINOR": "2", "CARGO_PKG_VERSION_MINOR": "2",
"CARGO_PKG_VERSION_PATCH": "98",
"CARGO_PKG_VERSION_PRE": "", "CARGO_PKG_VERSION_PRE": "",
}, },
}, },

View file

@ -16,6 +16,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -53,6 +54,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -82,6 +84,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -111,6 +114,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -140,6 +144,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -184,6 +189,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -213,6 +219,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -299,6 +306,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -328,6 +336,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,
@ -357,6 +366,7 @@
cfg_options: CfgOptions( cfg_options: CfgOptions(
[ [
"debug_assertions", "debug_assertions",
"miri",
], ],
), ),
potential_cfg_options: None, potential_cfg_options: None,

View file

@ -209,7 +209,7 @@ impl ChangeFixture {
assert!(default_crate_root.is_none()); assert!(default_crate_root.is_none());
default_crate_root = Some(file_id); default_crate_root = Some(file_id);
default_cfg.extend(meta.cfg.into_iter()); default_cfg.extend(meta.cfg.into_iter());
default_env.extend(meta.env.iter().map(|(x, y)| (x.to_owned(), y.to_owned()))); default_env.extend_from_other(&meta.env);
} }
source_change.change_file(file_id, Some(text)); source_change.change_file(file_id, Some(text));