diff --git a/src/doc/man/cargo-metadata.md b/src/doc/man/cargo-metadata.md index 33951fddd..3ef6e8d68 100644 --- a/src/doc/man/cargo-metadata.md +++ b/src/doc/man/cargo-metadata.md @@ -180,6 +180,8 @@ The output has the following format: "categories": [ "command-line-utilities" ], + /* Optional string that is the default binary picked by cargo run. */ + "default_run": null, /* Array of keywords from the manifest. */ "keywords": [ "cli" diff --git a/src/doc/man/generated_txt/cargo-metadata.txt b/src/doc/man/generated_txt/cargo-metadata.txt index 8dcd2227e..97a1940f6 100644 --- a/src/doc/man/generated_txt/cargo-metadata.txt +++ b/src/doc/man/generated_txt/cargo-metadata.txt @@ -175,6 +175,8 @@ OUTPUT FORMAT "categories": [ "command-line-utilities" ], + /* Optional string that is the default binary picked by cargo run. */ + "default_run": null, /* Array of keywords from the manifest. */ "keywords": [ "cli" diff --git a/src/doc/src/commands/cargo-metadata.md b/src/doc/src/commands/cargo-metadata.md index b59e26387..7d856a49a 100644 --- a/src/doc/src/commands/cargo-metadata.md +++ b/src/doc/src/commands/cargo-metadata.md @@ -180,6 +180,8 @@ The output has the following format: "categories": [ "command-line-utilities" ], + /* Optional string that is the default binary picked by cargo run. */ + "default_run": null, /* Array of keywords from the manifest. */ "keywords": [ "cli" diff --git a/src/etc/man/cargo-metadata.1 b/src/etc/man/cargo-metadata.1 index 2c20cc788..dfe79583c 100644 --- a/src/etc/man/cargo-metadata.1 +++ b/src/etc/man/cargo-metadata.1 @@ -177,6 +177,8 @@ The output has the following format: "categories": [ "command\-line\-utilities" ], + /* Optional string that is the default binary picked by cargo run. */ + "default_run": null, /* Array of keywords from the manifest. */ "keywords": [ "cli" diff --git a/tests/testsuite/metadata.rs b/tests/testsuite/metadata.rs index 5f0ef4bf7..a6545582e 100644 --- a/tests/testsuite/metadata.rs +++ b/tests/testsuite/metadata.rs @@ -1532,6 +1532,126 @@ fn package_edition_2018() { .run(); } +#[cargo_test] +fn package_default_run() { + let p = project() + .file("src/lib.rs", "") + .file("src/bin/a.rs", r#"fn main() { println!("hello A"); }"#) + .file("src/bin/b.rs", r#"fn main() { println!("hello B"); }"#) + .file( + "Cargo.toml", + r#" + [project] + name = "foo" + version = "0.1.0" + authors = ["wycats@example.com"] + edition = "2018" + default-run = "a" + "#, + ) + .build(); + p.cargo("metadata") + .with_json( + r#" + { + "packages": [ + { + "authors": [ + "wycats@example.com" + ], + "categories": [], + "default_run": "a", + "dependencies": [], + "description": null, + "edition": "2018", + "features": {}, + "id": "foo 0.1.0 (path+file:[..])", + "keywords": [], + "license": null, + "license_file": null, + "links": null, + "manifest_path": "[..]Cargo.toml", + "metadata": null, + "publish": null, + "name": "foo", + "readme": null, + "repository": null, + "homepage": null, + "documentation": null, + "source": null, + "targets": [ + { + "crate_types": [ + "lib" + ], + "doc": true, + "doctest": true, + "test": true, + "edition": "2018", + "kind": [ + "lib" + ], + "name": "foo", + "src_path": "[..]src/lib.rs" + }, + { + "crate_types": [ + "bin" + ], + "doc": true, + "doctest": false, + "test": true, + "edition": "2018", + "kind": [ + "bin" + ], + "name": "a", + "src_path": "[..]src/bin/a.rs", + "test": true + }, + { + "crate_types": [ + "bin" + ], + "doc": true, + "doctest": false, + "test": true, + "edition": "2018", + "kind": [ + "bin" + ], + "name": "b", + "src_path": "[..]src/bin/b.rs", + "test": true + } + ], + "version": "0.1.0" + } + ], + "resolve": { + "nodes": [ + { + "dependencies": [], + "deps": [], + "features": [], + "id": "foo 0.1.0 (path+file:[..])" + } + ], + "root": "foo 0.1.0 (path+file:[..])" + }, + "target_directory": "[..]", + "version": 1, + "workspace_members": [ + "foo 0.1.0 (path+file:[..])" + ], + "workspace_root": "[..]", + "metadata": null + } + "#, + ) + .run(); +} + #[cargo_test] fn target_edition_2018() { let p = project()