diff --git a/src/cargo/util/toml/targets.rs b/src/cargo/util/toml/targets.rs index afc4f258f695..04ded3ecdaa5 100644 --- a/src/cargo/util/toml/targets.rs +++ b/src/cargo/util/toml/targets.rs @@ -154,18 +154,20 @@ fn clean_lib( let lib = match toml_lib { Some(lib) => { if let Some(ref name) = lib.name { - // XXX: other code paths dodge this validation if name.contains('-') { anyhow::bail!("library target names cannot contain hyphens: {}", name) } } Some(TomlTarget { - name: lib.name.clone().or_else(|| Some(package_name.to_owned())), + name: lib + .name + .clone() + .or_else(|| Some(package_name.replace("-", "_"))), ..lib.clone() }) } None => inferred.as_ref().map(|lib| TomlTarget { - name: Some(package_name.to_string()), + name: Some(package_name.replace("-", "_")), path: Some(PathValue(lib.clone())), ..TomlTarget::new() }), diff --git a/tests/testsuite/artifact_dep.rs b/tests/testsuite/artifact_dep.rs index 64aa9d8afbc2..57fa79a4d312 100644 --- a/tests/testsuite/artifact_dep.rs +++ b/tests/testsuite/artifact_dep.rs @@ -815,10 +815,8 @@ fn lib_with_selected_dashed_bin_artifact_and_lib_true() { env!("CARGO_BIN_DIR_BAR_BAZ"); let _b = include_bytes!(env!("CARGO_BIN_FILE_BAR_BAZ_baz-suffix")); - let _b = include_bytes!(env!("CARGO_STATICLIB_FILE_BAR_BAZ")); - let _b = include_bytes!(env!("CARGO_STATICLIB_FILE_BAR_BAZ_bar-baz")); - let _b = include_bytes!(env!("CARGO_CDYLIB_FILE_BAR_BAZ")); - let _b = include_bytes!(env!("CARGO_CDYLIB_FILE_BAR_BAZ_bar-baz")); + let _b = include_bytes!(env!("CARGO_STATICLIB_FILE_BAR_BAZ_bar_baz")); + let _b = include_bytes!(env!("CARGO_CDYLIB_FILE_BAR_BAZ_bar_baz")); } "#, ) diff --git a/tests/testsuite/collisions.rs b/tests/testsuite/collisions.rs index 77e05dd9c6d6..0d370d92ed3d 100644 --- a/tests/testsuite/collisions.rs +++ b/tests/testsuite/collisions.rs @@ -534,7 +534,7 @@ fn collision_with_root() { [DOWNLOADING] crates ... [DOWNLOADED] foo-macro v1.0.0 [..] warning: output filename collision. -The lib target `foo-macro` in package `foo-macro v1.0.0` has the same output filename as the lib target `foo-macro` in package `foo-macro v1.0.0 [..]`. +The lib target `foo_macro` in package `foo-macro v1.0.0` has the same output filename as the lib target `foo_macro` in package `foo-macro v1.0.0 [..]`. Colliding filename is: [CWD]/target/doc/foo_macro/index.html The targets should have unique names. This is a known bug where multiple crates with the same name use diff --git a/tests/testsuite/doc.rs b/tests/testsuite/doc.rs index 481df859045f..3144b43a5476 100644 --- a/tests/testsuite/doc.rs +++ b/tests/testsuite/doc.rs @@ -2089,7 +2089,7 @@ fn doc_test_in_workspace() { ) .build(); p.cargo("test --doc -vv") - .with_stderr_contains("[DOCTEST] crate-a") + .with_stderr_contains("[DOCTEST] crate_a") .with_stdout_contains( " running 1 test @@ -2098,7 +2098,7 @@ test crate-a/src/lib.rs - (line 1) ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out[..] ", ) - .with_stderr_contains("[DOCTEST] crate-b") + .with_stderr_contains("[DOCTEST] crate_b") .with_stdout_contains( " running 1 test diff --git a/tests/testsuite/metadata.rs b/tests/testsuite/metadata.rs index fbead4dea97e..f6fa6cfabbd8 100644 --- a/tests/testsuite/metadata.rs +++ b/tests/testsuite/metadata.rs @@ -1616,7 +1616,7 @@ fn workspace_metadata_with_dependencies_and_resolve() { "kind": [ "lib" ], - "name": "non-artifact", + "name": "non_artifact", "src_path": "[..]/foo/non-artifact/src/lib.rs", "test": true } @@ -3110,7 +3110,7 @@ fn filter_platform() { "crate_types": [ "lib" ], - "name": "alt-dep", + "name": "alt_dep", "src_path": "[..]/alt-dep-0.0.1/src/lib.rs", "edition": "2015", "test": true, @@ -3154,7 +3154,7 @@ fn filter_platform() { "crate_types": [ "lib" ], - "name": "cfg-dep", + "name": "cfg_dep", "src_path": "[..]/cfg-dep-0.0.1/src/lib.rs", "edition": "2015", "test": true, @@ -3198,7 +3198,7 @@ fn filter_platform() { "crate_types": [ "lib" ], - "name": "host-dep", + "name": "host_dep", "src_path": "[..]/host-dep-0.0.1/src/lib.rs", "edition": "2015", "test": true, @@ -3242,7 +3242,7 @@ fn filter_platform() { "crate_types": [ "lib" ], - "name": "normal-dep", + "name": "normal_dep", "src_path": "[..]/normal-dep-0.0.1/src/lib.rs", "edition": "2015", "test": true, diff --git a/tests/testsuite/test.rs b/tests/testsuite/test.rs index 5f6528109bee..d8fff6b8208d 100644 --- a/tests/testsuite/test.rs +++ b/tests/testsuite/test.rs @@ -4671,9 +4671,9 @@ fn test_workspaces_cwd() { .build(); p.cargo("test --workspace --all") - .with_stderr_contains("[DOCTEST] root-crate") - .with_stderr_contains("[DOCTEST] nested-crate") - .with_stderr_contains("[DOCTEST] deep-crate") + .with_stderr_contains("[DOCTEST] root_crate") + .with_stderr_contains("[DOCTEST] nested_crate") + .with_stderr_contains("[DOCTEST] deep_crate") .with_stdout_contains("test test_unit_root_cwd ... ok") .with_stdout_contains("test test_unit_nested_cwd ... ok") .with_stdout_contains("test test_unit_deep_cwd ... ok") @@ -4683,33 +4683,33 @@ fn test_workspaces_cwd() { .run(); p.cargo("test -p root-crate --all") - .with_stderr_contains("[DOCTEST] root-crate") + .with_stderr_contains("[DOCTEST] root_crate") .with_stdout_contains("test test_unit_root_cwd ... ok") .with_stdout_contains("test test_integration_root_cwd ... ok") .run(); p.cargo("test -p nested-crate --all") - .with_stderr_contains("[DOCTEST] nested-crate") + .with_stderr_contains("[DOCTEST] nested_crate") .with_stdout_contains("test test_unit_nested_cwd ... ok") .with_stdout_contains("test test_integration_nested_cwd ... ok") .run(); p.cargo("test -p deep-crate --all") - .with_stderr_contains("[DOCTEST] deep-crate") + .with_stderr_contains("[DOCTEST] deep_crate") .with_stdout_contains("test test_unit_deep_cwd ... ok") .with_stdout_contains("test test_integration_deep_cwd ... ok") .run(); p.cargo("test --all") .cwd("nested-crate") - .with_stderr_contains("[DOCTEST] nested-crate") + .with_stderr_contains("[DOCTEST] nested_crate") .with_stdout_contains("test test_unit_nested_cwd ... ok") .with_stdout_contains("test test_integration_nested_cwd ... ok") .run(); p.cargo("test --all") .cwd("very/deeply/nested/deep-crate") - .with_stderr_contains("[DOCTEST] deep-crate") + .with_stderr_contains("[DOCTEST] deep_crate") .with_stdout_contains("test test_unit_deep_cwd ... ok") .with_stdout_contains("test test_integration_deep_cwd ... ok") .run();