use std::path::PathBuf;
-use rustc_hash::{FxHashMap, FxHashSet};
+use rustc_hash::FxHashSet;
use serde::Deserialize;
/// Roots and crates that compose this Rust project.
pub(crate) edition: Edition,
pub(crate) deps: Vec<Dep>,
- // This is the preferred method of providing cfg options.
#[serde(default)]
pub(crate) cfg: FxHashSet<String>,
- // These two are here for transition only.
- #[serde(default)]
- pub(crate) atom_cfgs: FxHashSet<String>,
- #[serde(default)]
- pub(crate) key_value_cfgs: FxHashMap<String, String>,
-
pub(crate) out_dir: Option<PathBuf>,
pub(crate) proc_macro_dylib_path: Option<PathBuf>,
}
assert!(krate.cfg.contains(&"feature=feature_2".to_string()));
assert!(krate.cfg.contains(&"other=value".to_string()));
}
-
- #[test]
- fn test_crate_deserialization_old_json() {
- let raw_json = json!( {
- "crate_id": 2,
- "root_module": "this/is/a/file/path.rs",
- "deps": [
- {
- "crate": 1,
- "name": "some_dep_crate"
- },
- ],
- "edition": "2015",
- "atom_cfgs": [
- "atom_1",
- "atom_2",
- ],
- "key_value_cfgs": {
- "feature": "feature_1",
- "feature": "feature_2",
- "other": "value",
- },
- });
-
- let krate: Crate = serde_json::from_value(raw_json).unwrap();
-
- assert!(krate.atom_cfgs.contains(&"atom_1".to_string()));
- assert!(krate.atom_cfgs.contains(&"atom_2".to_string()));
- assert!(krate.key_value_cfgs.contains_key(&"feature".to_string()));
- assert_eq!(krate.key_value_cfgs.get("feature"), Some(&"feature_2".to_string()));
- assert!(krate.key_value_cfgs.contains_key(&"other".to_string()));
- assert_eq!(krate.key_value_cfgs.get("other"), Some(&"value".to_string()));
- }
}