77"""
88from rez .tests .util import TestBase
99from rez .packages import iter_packages
10- from rez .package_filter import PackageFilter , PackageFilterList , GlobRule
10+ from rez .vendor .version .requirement import Requirement
11+ from rez .package_filter import PackageFilter , PackageFilterList , GlobRule , \
12+ RegexRule , RangeRule , TimestampRule
1113
1214
1315class TestPackageFilter (TestBase ):
@@ -71,7 +73,7 @@ def test_empty_filter_list(self):
7173 )
7274
7375 def test_glob_filter (self ):
74- """Very simply filter test
76+ """Test the glob filter.
7577 """
7678 fltr = PackageFilter ()
7779 fltr .add_exclusion (GlobRule ("timestamped-*.5" ))
@@ -89,6 +91,54 @@ def test_glob_filter(self):
8991 ]
9092 )
9193
94+ def test_regex_filter (self ):
95+ """Test the regex filter.
96+ """
97+ fltr = PackageFilter ()
98+ fltr .add_exclusion (RegexRule ("timestamped-1.[1|2].*" ))
99+
100+ self ._test (
101+ fltr ,
102+ "timestamped" ,
103+ [
104+ "1.0.5" ,
105+ "1.0.6" ,
106+ "2.0.0" ,
107+ "2.1.0" ,
108+ "2.1.5"
109+ ]
110+ )
111+
112+ def test_range_filter (self ):
113+ """Test the range filter.
114+ """
115+ fltr = PackageFilter ()
116+ fltr .add_exclusion (RangeRule (Requirement ("timestamped-1.1+" )))
117+
118+ self ._test (
119+ fltr ,
120+ "timestamped" ,
121+ [
122+ "1.0.5" ,
123+ "1.0.6"
124+ ]
125+ )
126+
127+ def test_timestamp_filter (self ):
128+ """Test the timestamp filter.
129+ """
130+ fltr = PackageFilter ()
131+ fltr .add_exclusion (TimestampRule (6999 , family = "timestamped" ))
132+
133+ self ._test (
134+ fltr ,
135+ "timestamped" ,
136+ [
137+ "2.1.0" ,
138+ "2.1.5"
139+ ]
140+ )
141+
92142 def test_otherfam_filter (self ):
93143 """Test that a filter on a different fam has no effect
94144 """
0 commit comments