1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-22 15:06:54 -05:00

refactor(cli): Remove unnecessary conversion into BTreeMap (#8498)

This commit removes unnecessary conversion into BTreeMap. The value
that gets converted into BTreeMap is _originally_ BTreeMap, so this
conversion is just superfluous.

Additionally, a test is added so that we can make sure the keys in the
emitted lockfile are sorted alphabetically.
This commit is contained in:
Yusuke Tanaka 2020-11-26 21:16:48 +09:00 committed by GitHub
parent a1a806ae0c
commit 60e980c781
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -34,9 +34,7 @@ impl Lockfile {
if !self.write { if !self.write {
return Ok(()); return Ok(());
} }
// Will perform sort so output is deterministic let j = json!(&self.map);
let map: BTreeMap<_, _> = self.map.iter().collect();
let j = json!(map);
let s = serde_json::to_string_pretty(&j).unwrap(); let s = serde_json::to_string_pretty(&j).unwrap();
let mut f = std::fs::OpenOptions::new() let mut f = std::fs::OpenOptions::new()
.write(true) .write(true)
@ -192,9 +190,30 @@ mod tests {
.read_to_string(&mut contents) .read_to_string(&mut contents)
.expect("Unable to read the file"); .expect("Unable to read the file");
assert!(contents.contains( let contents_json =
"fedebba9bb82cce293196f54b21875b649e457f0eaf55556f1e318204947a28f" serde_json::from_str::<serde_json::Value>(&contents).unwrap();
)); // sha-256 hash of the source 'Here is some source code' let object = contents_json.as_object().unwrap();
assert_eq!(
object
.get("https://deno.land/std@0.71.0/textproto/mod.ts")
.and_then(|v| v.as_str()),
// sha-256 hash of the source 'Here is some source code'
Some("fedebba9bb82cce293196f54b21875b649e457f0eaf55556f1e318204947a28f")
);
// confirm that keys are sorted alphabetically
let mut keys = object.keys().map(|k| k.as_str());
assert_eq!(
keys.next(),
Some("https://deno.land/std@0.71.0/async/delay.ts")
);
assert_eq!(keys.next(), Some("https://deno.land/std@0.71.0/io/util.ts"));
assert_eq!(
keys.next(),
Some("https://deno.land/std@0.71.0/textproto/mod.ts")
);
assert!(keys.next().is_none());
teardown(temp_dir); teardown(temp_dir);
} }