@@ -378,6 +378,77 @@ def test_cargo_provider_workspace_member_without_version_key(
378378 assert lock_file .read_text () == dedent (expected_lock_content )
379379
380380
381+ def test_cargo_provider_workspace_member_with_fixed_version_key (
382+ config : BaseConfig ,
383+ chdir : Path ,
384+ ):
385+ """Test workspace member that has fixed version key (should not crash)."""
386+ workspace_toml = """\
387+ [workspace]
388+ members = ["member_with_fixed_version"]
389+
390+ [workspace.package]
391+ version = "0.1.0"
392+ """
393+
394+ # Create a member that has fixed version key
395+ member_content = """\
396+ [package]
397+ name = "member_with_fixed_version"
398+ version = "1.0.0"
399+ """
400+
401+ lock_content = """\
402+ [[package]]
403+ name = "member_with_fixed_version"
404+ version = "1.0.0"
405+ source = "registry+https://github.com/rust-lang/crates.io-index"
406+ checksum = "123abc"
407+ """
408+
409+ expected_workspace_toml = """\
410+ [workspace]
411+ members = ["member_with_fixed_version"]
412+
413+ [workspace.package]
414+ version = "42.1"
415+ """
416+
417+ expected_lock_content = """\
418+ [[package]]
419+ name = "member_with_fixed_version"
420+ version = "1.0.0"
421+ source = "registry+https://github.com/rust-lang/crates.io-index"
422+ checksum = "123abc"
423+ """
424+
425+ # Create the workspace file
426+ filename = CargoProvider .filename
427+ file = chdir / filename
428+ file .write_text (dedent (workspace_toml ))
429+
430+ # Create the member directory and file
431+ os .mkdir (chdir / "member_with_fixed_version" )
432+ member_file = chdir / "member_with_fixed_version" / "Cargo.toml"
433+ member_file .write_text (dedent (member_content ))
434+
435+ # Create the lock file
436+ lock_filename = CargoProvider .lock_filename
437+ lock_file = chdir / lock_filename
438+ lock_file .write_text (dedent (lock_content ))
439+
440+ config .settings ["version_provider" ] = "cargo"
441+
442+ provider = get_provider (config )
443+ assert isinstance (provider , CargoProvider )
444+ assert provider .get_version () == "0.1.0"
445+
446+ # This should not crash even though the member has fixed version key
447+ provider .set_version ("42.1" )
448+ assert file .read_text () == dedent (expected_workspace_toml )
449+ assert lock_file .read_text () == dedent (expected_lock_content )
450+
451+
381452def test_cargo_provider_workspace_member_without_workspace_key (
382453 config : BaseConfig ,
383454 chdir : Path ,
0 commit comments