@@ -68,38 +68,38 @@ use matcher::StringMatcher;
68
68
/// # Examples:
69
69
///
70
70
/// ```rust
71
- /// use rattler_conda_types::{MatchSpec, VersionSpec, StringMatcher, PackageName, Channel};
71
+ /// use rattler_conda_types::{MatchSpec, VersionSpec, StringMatcher, PackageName, Channel, ParseStrictness::* };
72
72
/// use std::str::FromStr;
73
73
/// use std::sync::Arc;
74
74
///
75
- /// let spec = MatchSpec::from_str("foo 1.0 py27_0").unwrap();
75
+ /// let spec = MatchSpec::from_str("foo 1.0 py27_0", Strict ).unwrap();
76
76
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
77
- /// assert_eq!(spec.version, Some(VersionSpec::from_str("1.0").unwrap()));
77
+ /// assert_eq!(spec.version, Some(VersionSpec::from_str("1.0", Strict ).unwrap()));
78
78
/// assert_eq!(spec.build, Some(StringMatcher::from_str("py27_0").unwrap()));
79
79
///
80
- /// let spec = MatchSpec::from_str("foo=1.0=py27_0").unwrap();
80
+ /// let spec = MatchSpec::from_str("foo=1.0=py27_0", Strict ).unwrap();
81
81
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
82
- /// assert_eq!(spec.version, Some(VersionSpec::from_str("==1.0").unwrap()));
82
+ /// assert_eq!(spec.version, Some(VersionSpec::from_str("==1.0", Strict ).unwrap()));
83
83
/// assert_eq!(spec.build, Some(StringMatcher::from_str("py27_0").unwrap()));
84
84
///
85
- /// let spec = MatchSpec::from_str(r#"conda-forge::foo[version="1.0.*"]"#).unwrap();
85
+ /// let spec = MatchSpec::from_str(r#"conda-forge::foo[version="1.0.*"]"#, Strict ).unwrap();
86
86
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
87
- /// assert_eq!(spec.version, Some(VersionSpec::from_str("1.0.*").unwrap()));
87
+ /// assert_eq!(spec.version, Some(VersionSpec::from_str("1.0.*", Strict ).unwrap()));
88
88
/// assert_eq!(spec.channel, Some(Channel::from_str("conda-forge", &Default::default()).map(|channel| Arc::new(channel)).unwrap()));
89
89
///
90
- /// let spec = MatchSpec::from_str("conda-forge/linux-64::foo>=1.0").unwrap();
90
+ /// let spec = MatchSpec::from_str("conda-forge/linux-64::foo>=1.0", Strict ).unwrap();
91
91
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
92
- /// assert_eq!(spec.version, Some(VersionSpec::from_str(">=1.0").unwrap()));
92
+ /// assert_eq!(spec.version, Some(VersionSpec::from_str(">=1.0", Strict ).unwrap()));
93
93
/// assert_eq!(spec.channel, Some(Channel::from_str("conda-forge", &Default::default()).map(|channel| Arc::new(channel)).unwrap()));
94
94
/// assert_eq!(spec.subdir, Some("linux-64".to_string()));
95
95
///
96
- /// let spec = MatchSpec::from_str("*/linux-64::foo>=1.0").unwrap();
96
+ /// let spec = MatchSpec::from_str("*/linux-64::foo>=1.0", Strict ).unwrap();
97
97
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
98
- /// assert_eq!(spec.version, Some(VersionSpec::from_str(">=1.0").unwrap()));
98
+ /// assert_eq!(spec.version, Some(VersionSpec::from_str(">=1.0", Strict ).unwrap()));
99
99
/// assert_eq!(spec.channel, Some(Channel::from_str("*", &Default::default()).map(|channel| Arc::new(channel)).unwrap()));
100
100
/// assert_eq!(spec.subdir, Some("linux-64".to_string()));
101
101
///
102
- /// let spec = MatchSpec::from_str(r#"foo[build="py2*"]"#).unwrap();
102
+ /// let spec = MatchSpec::from_str(r#"foo[build="py2*"]"#, Strict ).unwrap();
103
103
/// assert_eq!(spec.name, Some(PackageName::new_unchecked("foo")));
104
104
/// assert_eq!(spec.build, Some(StringMatcher::from_str("py2*").unwrap()));
105
105
/// ```
@@ -404,32 +404,34 @@ mod tests {
404
404
405
405
use rattler_digest:: { parse_digest_from_hex, Md5 , Sha256 } ;
406
406
407
- use crate :: { MatchSpec , NamelessMatchSpec , PackageName , PackageRecord , Version } ;
407
+ use crate :: {
408
+ MatchSpec , NamelessMatchSpec , PackageName , PackageRecord , ParseStrictness :: * , Version ,
409
+ } ;
408
410
use insta:: assert_snapshot;
409
411
use std:: hash:: { Hash , Hasher } ;
410
412
411
413
#[ test]
412
414
fn test_matchspec_format_eq ( ) {
413
- let spec = MatchSpec :: from_str ( "conda-forge::mamba[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97, md5=dede6252c964db3f3e41c7d30d07f6bf]" ) . unwrap ( ) ;
415
+ let spec = MatchSpec :: from_str ( "conda-forge::mamba[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97, md5=dede6252c964db3f3e41c7d30d07f6bf]" , Strict ) . unwrap ( ) ;
414
416
let spec_as_string = spec. to_string ( ) ;
415
- let rebuild_spec = MatchSpec :: from_str ( & spec_as_string) . unwrap ( ) ;
417
+ let rebuild_spec = MatchSpec :: from_str ( & spec_as_string, Strict ) . unwrap ( ) ;
416
418
417
419
assert_eq ! ( spec, rebuild_spec) ;
418
420
}
419
421
420
422
#[ test]
421
423
fn test_nameless_matchspec_format_eq ( ) {
422
- let spec = NamelessMatchSpec :: from_str ( "*[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97, md5=dede6252c964db3f3e41c7d30d07f6bf]" ) . unwrap ( ) ;
424
+ let spec = NamelessMatchSpec :: from_str ( "*[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97, md5=dede6252c964db3f3e41c7d30d07f6bf]" , Strict ) . unwrap ( ) ;
423
425
let spec_as_string = spec. to_string ( ) ;
424
- let rebuild_spec = NamelessMatchSpec :: from_str ( & spec_as_string) . unwrap ( ) ;
426
+ let rebuild_spec = NamelessMatchSpec :: from_str ( & spec_as_string, Strict ) . unwrap ( ) ;
425
427
426
428
assert_eq ! ( spec, rebuild_spec) ;
427
429
}
428
430
429
431
#[ test]
430
432
fn test_hash_match ( ) {
431
- let spec1 = MatchSpec :: from_str ( "tensorflow 2.6.*" ) . unwrap ( ) ;
432
- let spec2 = MatchSpec :: from_str ( "tensorflow 2.6.*" ) . unwrap ( ) ;
433
+ let spec1 = MatchSpec :: from_str ( "tensorflow 2.6.*" , Strict ) . unwrap ( ) ;
434
+ let spec2 = MatchSpec :: from_str ( "tensorflow 2.6.*" , Strict ) . unwrap ( ) ;
433
435
assert_eq ! ( spec1, spec2) ;
434
436
435
437
let mut hasher = std:: collections:: hash_map:: DefaultHasher :: new ( ) ;
@@ -445,8 +447,8 @@ mod tests {
445
447
446
448
#[ test]
447
449
fn test_hash_no_match ( ) {
448
- let spec1 = MatchSpec :: from_str ( "tensorflow 2.6.0.*" ) . unwrap ( ) ;
449
- let spec2 = MatchSpec :: from_str ( "tensorflow 2.6.*" ) . unwrap ( ) ;
450
+ let spec1 = MatchSpec :: from_str ( "tensorflow 2.6.0.*" , Strict ) . unwrap ( ) ;
451
+ let spec2 = MatchSpec :: from_str ( "tensorflow 2.6.*" , Strict ) . unwrap ( ) ;
450
452
assert_ne ! ( spec1, spec2) ;
451
453
452
454
let mut hasher = std:: collections:: hash_map:: DefaultHasher :: new ( ) ;
@@ -474,24 +476,30 @@ mod tests {
474
476
)
475
477
} ;
476
478
477
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" ) . unwrap ( ) ;
479
+ let spec = MatchSpec :: from_str ( "mamba[version==1.0, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" , Strict ) . unwrap ( ) ;
478
480
assert ! ( !spec. matches( & record) ) ;
479
481
480
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, sha256=f44c4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" ) . unwrap ( ) ;
482
+ let spec = MatchSpec :: from_str ( "mamba[version==1.0, sha256=f44c4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" , Strict ) . unwrap ( ) ;
481
483
assert ! ( spec. matches( & record) ) ;
482
484
483
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=aaaa6252c964db3f3e41c7d30d07f6bf]" )
484
- . unwrap ( ) ;
485
+ let spec = MatchSpec :: from_str (
486
+ "mamba[version==1.0, md5=aaaa6252c964db3f3e41c7d30d07f6bf]" ,
487
+ Strict ,
488
+ )
489
+ . unwrap ( ) ;
485
490
assert ! ( !spec. matches( & record) ) ;
486
491
487
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf]" )
488
- . unwrap ( ) ;
492
+ let spec = MatchSpec :: from_str (
493
+ "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf]" ,
494
+ Strict ,
495
+ )
496
+ . unwrap ( ) ;
489
497
assert ! ( spec. matches( & record) ) ;
490
498
491
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf, sha256=f44c4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" ) . unwrap ( ) ;
499
+ let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf, sha256=f44c4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" , Strict ) . unwrap ( ) ;
492
500
assert ! ( spec. matches( & record) ) ;
493
501
494
- let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" ) . unwrap ( ) ;
502
+ let spec = MatchSpec :: from_str ( "mamba[version==1.0, md5=dede6252c964db3f3e41c7d30d07f6bf, sha256=aaac4bc9c6916ecc0e33137431645b029ade22190c7144eead61446dcbcc6f97]" , Strict ) . unwrap ( ) ;
495
503
assert ! ( !spec. matches( & record) ) ;
496
504
}
497
505
@@ -506,7 +514,7 @@ mod tests {
506
514
507
515
assert_snapshot ! ( specs
508
516
. into_iter( )
509
- . map( |s| MatchSpec :: from_str( s) . unwrap( ) )
517
+ . map( |s| MatchSpec :: from_str( s, Strict ) . unwrap( ) )
510
518
. map( |s| s. to_string( ) )
511
519
. collect:: <Vec <String >>( )
512
520
. join( "\n " ) ) ;
0 commit comments