11use std:: env;
2-
32use std:: path:: Path ;
3+ use std:: str:: FromStr ;
44
55use anyhow:: Result ;
66use assert_fs:: fixture:: ChildPath ;
77use assert_fs:: prelude:: * ;
88use insta:: assert_json_snapshot;
99
10+ use uv_pep508:: ExtraName ;
11+
12+ use crate :: pyproject:: PyProjectToml ;
1013use crate :: workspace:: { DiscoveryOptions , ProjectWorkspace } ;
1114
1215async fn workspace_test ( folder : & str ) -> ( ProjectWorkspace , String ) {
@@ -76,7 +79,8 @@ async fn albatross_in_example() {
7679 ],
7780 "optional-dependencies": null
7881 },
79- "tool": null
82+ "tool": null,
83+ "dependency-groups": null
8084 }
8185 }
8286 }
@@ -128,7 +132,8 @@ async fn albatross_project_in_excluded() {
128132 ],
129133 "optional-dependencies": null
130134 },
131- "tool": null
135+ "tool": null,
136+ "dependency-groups": null
132137 }
133138 }
134139 }
@@ -237,7 +242,8 @@ async fn albatross_root_workspace() {
237242 "override-dependencies": null,
238243 "constraint-dependencies": null
239244 }
240- }
245+ },
246+ "dependency-groups": null
241247 }
242248 }
243249 }
@@ -326,7 +332,8 @@ async fn albatross_virtual_workspace() {
326332 "override-dependencies": null,
327333 "constraint-dependencies": null
328334 }
329- }
335+ },
336+ "dependency-groups": null
330337 }
331338 }
332339 }
@@ -377,7 +384,8 @@ async fn albatross_just_project() {
377384 ],
378385 "optional-dependencies": null
379386 },
380- "tool": null
387+ "tool": null,
388+ "dependency-groups": null
381389 }
382390 }
383391 }
@@ -528,7 +536,8 @@ async fn exclude_package() -> Result<()> {
528536 "override-dependencies": null,
529537 "constraint-dependencies": null
530538 }
531- }
539+ },
540+ "dependency-groups": null
532541 }
533542 }
534543 }
@@ -629,7 +638,8 @@ async fn exclude_package() -> Result<()> {
629638 "override-dependencies": null,
630639 "constraint-dependencies": null
631640 }
632- }
641+ },
642+ "dependency-groups": null
633643 }
634644 }
635645 }
@@ -743,7 +753,8 @@ async fn exclude_package() -> Result<()> {
743753 "override-dependencies": null,
744754 "constraint-dependencies": null
745755 }
746- }
756+ },
757+ "dependency-groups": null
747758 }
748759 }
749760 }
@@ -831,7 +842,8 @@ async fn exclude_package() -> Result<()> {
831842 "override-dependencies": null,
832843 "constraint-dependencies": null
833844 }
834- }
845+ },
846+ "dependency-groups": null
835847 }
836848 }
837849 }
@@ -840,3 +852,21 @@ async fn exclude_package() -> Result<()> {
840852
841853 Ok ( ( ) )
842854}
855+
856+ #[ test]
857+ fn read_dependency_groups ( ) {
858+ let toml = r#"
859+ [dependency-groups]
860+ test = ["a"]
861+ "# ;
862+
863+ let result =
864+ PyProjectToml :: from_string ( toml. to_string ( ) ) . expect ( "Deserialization should succeed" ) ;
865+ let groups = result
866+ . dependency_groups
867+ . expect ( "`dependency-groups` should be present" ) ;
868+ let test = groups
869+ . get ( & ExtraName :: from_str ( "test" ) . unwrap ( ) )
870+ . expect ( "Group `test` should be present" ) ;
871+ assert_eq ! ( test, & [ "a" . to_string( ) ] ) ;
872+ }
0 commit comments