File tree Expand file tree Collapse file tree 1 file changed +14
-1
lines changed
crate_universe/src/utils/starlark Expand file tree Collapse file tree 1 file changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -63,7 +63,7 @@ impl FromStr for Label {
63
63
type Err = anyhow:: Error ;
64
64
65
65
fn from_str ( s : & str ) -> Result < Self , Self :: Err > {
66
- let re = Regex :: new ( r"^(@@?[\w\d\-_\.]*)?(//)?([\w\d\-_\./+]+)?(:([\+\w\d\-_\./]+))?$" ) ?;
66
+ let re = Regex :: new ( r"^(@@?[\w\d\-_\.~ ]*)?(//)?([\w\d\-_\./+]+)?(:([\+\w\d\-_\./]+))?$" ) ?;
67
67
let cap = re
68
68
. captures ( s)
69
69
. with_context ( || format ! ( "Failed to parse label from string: {s}" ) ) ?;
@@ -449,6 +449,19 @@ mod test {
449
449
assert_eq ! ( label. target( ) , "target" ) ;
450
450
}
451
451
452
+ #[ test]
453
+ fn full_label_bzlmod_with_tilde ( ) {
454
+ let label = Label :: from_str ( "@@repo~name//package/sub_package:target" ) . unwrap ( ) ;
455
+ assert_eq ! ( label. to_string( ) , "@@repo~name//package/sub_package:target" ) ;
456
+ assert ! ( label. is_absolute( ) ) ;
457
+ assert_eq ! (
458
+ label. repository( ) ,
459
+ Some ( & Repository :: Canonical ( String :: from( "repo~name" ) ) )
460
+ ) ;
461
+ assert_eq ! ( label. package( ) , Some ( "package/sub_package" ) ) ;
462
+ assert_eq ! ( label. target( ) , "target" ) ;
463
+ }
464
+
452
465
#[ test]
453
466
fn full_label_with_slash_after_colon ( ) {
454
467
let label = Label :: from_str ( "@repo//package/sub_package:subdir/target" ) . unwrap ( ) ;
You can’t perform that action at this time.
0 commit comments