-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(toml): Add support for open namespaces
- Loading branch information
Showing
4 changed files
with
198 additions
and
57 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -20,14 +20,15 @@ fn within_namespace_requires_feature() { | |
.masquerade_as_nightly_cargo(&["open-namespaces"]) | ||
.with_status(101) | ||
.with_stderr( | ||
"\ | ||
[ERROR] invalid character `:` in package name: `foo::bar`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) | ||
--> Cargo.toml:3:24 | ||
| | ||
3 | name = \"foo::bar\" | ||
| ^^^^^^^^^^ | ||
| | ||
", | ||
r#"error: failed to parse manifest at `[CWD]/Cargo.toml` | ||
Caused by: | ||
feature `open-namespaces` is required | ||
The package requires the Cargo feature called `open-namespaces`, but that feature is not stabilized in this version of Cargo ([..]). | ||
Consider adding `cargo-features = ["open-namespaces"]` to the top of Cargo.toml (above the [package] table) to tell Cargo you are opting in to use this unstable feature. | ||
See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#open-namespaces for more information about the status of this feature. | ||
"#, | ||
) | ||
.run() | ||
} | ||
|
@@ -51,17 +52,50 @@ fn implicit_lib_within_namespace() { | |
|
||
p.cargo("read-manifest") | ||
.masquerade_as_nightly_cargo(&["open-namespaces"]) | ||
.with_status(101) | ||
.with_stderr( | ||
"\ | ||
[ERROR] invalid character `:` in package name: `foo::bar`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) | ||
--> Cargo.toml:5:24 | ||
| | ||
5 | name = \"foo::bar\" | ||
| ^^^^^^^^^^ | ||
| | ||
", | ||
.with_json( | ||
r#"{ | ||
"authors": [], | ||
"categories": [], | ||
"default_run": null, | ||
"dependencies": [], | ||
"description": null, | ||
"documentation": null, | ||
"edition": "2015", | ||
"features": {}, | ||
"homepage": null, | ||
"id": "path+file://[..]#foo::[email protected]", | ||
"keywords": [], | ||
"license": null, | ||
"license_file": null, | ||
"links": null, | ||
"manifest_path": "[CWD]/Cargo.toml", | ||
"metadata": null, | ||
"name": "foo::bar", | ||
"publish": null, | ||
"readme": null, | ||
"repository": null, | ||
"rust_version": null, | ||
"source": null, | ||
"targets": [ | ||
{ | ||
"crate_types": [ | ||
"lib" | ||
], | ||
"doc": true, | ||
"doctest": true, | ||
"edition": "2015", | ||
"kind": [ | ||
"lib" | ||
], | ||
"name": "foo::bar", | ||
"src_path": "[CWD]/src/lib.rs", | ||
"test": true | ||
} | ||
], | ||
"version": "0.0.1" | ||
}"#, | ||
) | ||
.with_stderr("") | ||
.run() | ||
} | ||
|
||
|
@@ -84,17 +118,50 @@ fn implicit_bin_within_namespace() { | |
|
||
p.cargo("read-manifest") | ||
.masquerade_as_nightly_cargo(&["open-namespaces"]) | ||
.with_status(101) | ||
.with_stderr( | ||
"\ | ||
[ERROR] invalid character `:` in package name: `foo::bar`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) | ||
--> Cargo.toml:5:24 | ||
| | ||
5 | name = \"foo::bar\" | ||
| ^^^^^^^^^^ | ||
| | ||
", | ||
.with_json( | ||
r#"{ | ||
"authors": [], | ||
"categories": [], | ||
"default_run": null, | ||
"dependencies": [], | ||
"description": null, | ||
"documentation": null, | ||
"edition": "2015", | ||
"features": {}, | ||
"homepage": null, | ||
"id": "path+file://[..]#foo::[email protected]", | ||
"keywords": [], | ||
"license": null, | ||
"license_file": null, | ||
"links": null, | ||
"manifest_path": "[CWD]/Cargo.toml", | ||
"metadata": null, | ||
"name": "foo::bar", | ||
"publish": null, | ||
"readme": null, | ||
"repository": null, | ||
"rust_version": null, | ||
"source": null, | ||
"targets": [ | ||
{ | ||
"crate_types": [ | ||
"bin" | ||
], | ||
"doc": true, | ||
"doctest": false, | ||
"edition": "2015", | ||
"kind": [ | ||
"bin" | ||
], | ||
"name": "foo::bar", | ||
"src_path": "[CWD]/src/main.rs", | ||
"test": true | ||
} | ||
], | ||
"version": "0.0.1" | ||
}"#, | ||
) | ||
.with_stderr("") | ||
.run() | ||
} | ||
|
||
|
@@ -116,22 +183,69 @@ fn explicit_bin_within_namespace() { | |
"#, | ||
) | ||
.file("src/lib.rs", "") | ||
.file("src/foo-bar/main.rs", "fn main() {}") | ||
.file("src/bin/foo-bar/main.rs", "fn main() {}") | ||
.build(); | ||
|
||
p.cargo("read-manifest") | ||
.masquerade_as_nightly_cargo(&["open-namespaces"]) | ||
.with_status(101) | ||
.with_stderr( | ||
"\ | ||
[ERROR] invalid character `:` in package name: `foo::bar`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) | ||
--> Cargo.toml:5:24 | ||
| | ||
5 | name = \"foo::bar\" | ||
| ^^^^^^^^^^ | ||
| | ||
", | ||
.with_json( | ||
r#"{ | ||
"authors": [], | ||
"categories": [], | ||
"default_run": null, | ||
"dependencies": [], | ||
"description": null, | ||
"documentation": null, | ||
"edition": "2015", | ||
"features": {}, | ||
"homepage": null, | ||
"id": "path+file://[..]#foo::[email protected]", | ||
"keywords": [], | ||
"license": null, | ||
"license_file": null, | ||
"links": null, | ||
"manifest_path": "[CWD]/Cargo.toml", | ||
"metadata": null, | ||
"name": "foo::bar", | ||
"publish": null, | ||
"readme": null, | ||
"repository": null, | ||
"rust_version": null, | ||
"source": null, | ||
"targets": [ | ||
{ | ||
"crate_types": [ | ||
"lib" | ||
], | ||
"doc": true, | ||
"doctest": true, | ||
"edition": "2015", | ||
"kind": [ | ||
"lib" | ||
], | ||
"name": "foo::bar", | ||
"src_path": "[CWD]/src/lib.rs", | ||
"test": true | ||
}, | ||
{ | ||
"crate_types": [ | ||
"bin" | ||
], | ||
"doc": true, | ||
"doctest": false, | ||
"edition": "2015", | ||
"kind": [ | ||
"bin" | ||
], | ||
"name": "foo-bar", | ||
"src_path": "[CWD]/src/bin/foo-bar/main.rs", | ||
"test": true | ||
} | ||
], | ||
"version": "0.0.1" | ||
}"#, | ||
) | ||
.with_stderr("") | ||
.run() | ||
} | ||
|
||
|
@@ -164,14 +278,14 @@ fn main() {} | |
"edition": "2021", | ||
"features": {}, | ||
"homepage": null, | ||
"id": "path+file://[..]#foo--[email protected]", | ||
"id": "path+file://[..]#foo::[email protected]", | ||
"keywords": [], | ||
"license": null, | ||
"license_file": null, | ||
"links": null, | ||
"manifest_path": "[CWD]/foo::bar.rs", | ||
"metadata": null, | ||
"name": "foo--bar", | ||
"name": "foo::bar", | ||
"publish": [], | ||
"readme": null, | ||
"repository": null, | ||
|
@@ -188,7 +302,7 @@ fn main() {} | |
"kind": [ | ||
"bin" | ||
], | ||
"name": "foo--bar", | ||
"name": "foo::bar", | ||
"src_path": "[..]/foo::bar.rs", | ||
"test": true | ||
} | ||
|
@@ -197,14 +311,12 @@ fn main() {} | |
} | ||
"#, | ||
) | ||
.with_stderr( | ||
"\ | ||
", | ||
) | ||
.with_stderr("") | ||
.run(); | ||
} | ||
|
||
#[cargo_test] | ||
#[cfg(unix)] // until we get proper packaging support | ||
fn publish_namespaced() { | ||
let registry = RegistryBuilder::new().http_api().http_index().build(); | ||
|
||
|
@@ -232,12 +344,14 @@ fn publish_namespaced() { | |
.with_status(101) | ||
.with_stderr( | ||
"\ | ||
[ERROR] invalid character `:` in package name: `foo::bar`, characters must be Unicode XID characters (numbers, `-`, `_`, or most letters) | ||
--> Cargo.toml:5:24 | ||
| | ||
5 | name = \"foo::bar\" | ||
| ^^^^^^^^^^ | ||
| | ||
[UPDATING] crates.io index | ||
[WARNING] manifest has no documentation, homepage or repository. | ||
See https://doc.rust-lang.org/cargo/reference/manifest.html#package-metadata for more info. | ||
Packaging foo::bar v0.0.1 ([CWD]) | ||
[ERROR] failed to prepare local package for uploading | ||
Caused by: | ||
cannot publish with `open-namespaces` | ||
", | ||
) | ||
.run(); | ||
|