Ok(s)
});
- // Forward compatibility: if `orig` uses rootless format
- // from the future, do the same.
- let use_root_key = if let Ok(ref orig) = orig {
- !orig.starts_with("[[package]]")
- } else {
- true
- };
-
let toml = toml::Value::try_from(WorkspaceResolve {
ws: ws,
resolve: resolve,
- use_root_key: use_root_key,
+ use_root_key: false,
}).unwrap();
let mut out = String::new();
- // Note that we do not use e.toml.to_string() as we want to control the
- // exact format the toml is in to ensure pretty diffs between updates to the
- // lockfile.
- if let Some(root) = toml.get("root") {
- out.push_str("[root]\n");
- emit_package(root.as_table().unwrap(), &mut out);
- }
-
let deps = toml["package"].as_array().unwrap();
for dep in deps.iter() {
let dep = dep.as_table().unwrap();
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "bar"
version = "0.0.1"
dependencies = [
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "bar"
version = "0.0.1"
dependencies = [
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "foo"
version = "0.0.1"
dependencies = [
let lock0 = p.read_lockfile();
- assert!(lock0.starts_with("[root]\n"));
+ assert!(lock0.starts_with("[[package]]\n"));
let lock1 = lock0.replace("\n", "\r\n");
{
let lock2 = p.read_lockfile();
- assert!(lock2.starts_with("[root]\r\n"));
+ assert!(lock2.starts_with("[[package]]\r\n"));
assert_eq!(lock1, lock2);
}
let rev = repo.revparse_single("HEAD").unwrap().id();
File::create(&foo.root().join("Cargo.lock")).unwrap().write_all(format!(r#"
- [root]
+ [[package]]
name = "foo"
version = "0.0.0"
dependencies = [
"#)
.file("bar/src/lib.rs", "fn main() {}")
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "foo"
version = "0.1.0"
dependencies = [ "bar 0.1.0" ]
fn oldest_lockfile_still_works() {
Package::new("foo", "0.1.0").publish();
+ let expected_lock_file =
+r#"[[package]]
+name = "bar"
+version = "0.0.1"
+dependencies = [
+ "foo 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "foo"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum foo 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "[..]"
+"#;
+
let lockfile = r#"
[root]
name = "bar"
execs().with_status(0));
let lock = p.read_lockfile();
- assert!(lock.starts_with(lockfile.trim()));
+ for (l, r) in expected_lock_file.lines().zip(lock.lines()) {
+ assert!(lines_match(l, r), "Lines differ:\n{}\n\n{}", l, r);
+ }
+
+ assert_eq!(lock.lines().count(), expected_lock_file.lines().count());
}
#[test]
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
-[root]
+[[package]]
name = "bar"
version = "0.0.1"
dependencies = [
let lock = p.read_lockfile();
assert!(lock.starts_with(r#"
-[root]
+[[package]]
name = "bar"
version = "0.0.1"
dependencies = [
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
-[root]
+[[package]]
name = "bar"
version = "0.0.1"
dependencies = [
"#)
.file("src/lib.rs", "")
.file("Cargo.lock", r#"
-[root]
+[[package]]
name = "bar"
version = "0.0.1"
dependencies = [
"#, git.url()))
.file("src/lib.rs", "")
.file("Cargo.lock", &format!(r#"
-[root]
+[[package]]
name = "bar"
version = "0.0.1"
dependencies = [
let actual = p.read_lockfile();
let expected = "\
-[root]
+[[package]]
name = \"bar\"
version = \"0.0.1\"
dependencies = [
"serde:0.8.0" = { path = "serde" }
"#)
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "local"
version = "0.0.1"
dependencies = [
"#)
.file("a/src/main.rs", "fn main() {}")
.file("Cargo.lock", r#"
- [root]
+ [[package]]
name = "a"
version = "0.1.0"