@@ -140,23 +140,40 @@ def arg_filtered_tests(pav_cfg: "PavConfig", args: argparse.Namespace,
140140
141141 args .tests = ids
142142
143- if 'all' in args .tests :
144- for arg , default in filters .TEST_FILTER_DEFAULTS .items ():
145- if hasattr (args , arg ) and default != getattr (args , arg ):
146- break
143+ has_filter_defaults = False
144+
145+ for arg , default in filters .TEST_FILTER_DEFAULTS .items ():
146+ if hasattr (args , arg ) and default != getattr (args , arg ):
147+ has_filter_defaults = True
148+ break
149+
150+ # "all" takes priority over everything else
151+ if "all" in args .tests :
152+ args .tests = ["all" ]
153+ elif "last" in args .tests :
154+ args .tests = ["last" ]
155+ elif len (args .tests ) == 0 :
156+ if has_filter_defaults or args .filter is not None :
157+ args .tests = ["all" ]
147158 else :
148- output .fprint (verbose , "Using default search filters: The current system, user, and "
149- "created less than 1 day ago." , color = output .CYAN )
150- args .filter = make_filter_query ()
159+ args .tests = ["last" ]
160+
161+ if "all" in args .tests and args .filter is not None and not has_filter_defaults :
162+ output .fprint (verbose , "Using default search filters: The current system, user, and "
163+ "created less than 1 day ago." , color = output .CYAN )
164+ args .filter = make_filter_query ()
151165
152166 if args .filter is None :
153167 filter_func = filters .const (True ) # Always return True
154168 else :
155- filter_func = filters .parse_query (args .filter )
169+ try :
170+ filter_func = filters .parse_query (args .filter )
171+ except filters .FilterParseError :
172+ raise PavilionError (f"Invalid syntax in filter query: { args .filter } " )
156173
157174 order_func , order_asc = filters .get_sort_opts (sort_by , "TEST" )
158175
159- if ' all' in args .tests :
176+ if " all" in args .tests :
160177 tests = dir_db .SelectItems ([], [])
161178 working_dirs = set (map (lambda cfg : cfg ['working_dir' ],
162179 pav_cfg .configs .values ()))
@@ -177,9 +194,6 @@ def arg_filtered_tests(pav_cfg: "PavConfig", args: argparse.Namespace,
177194
178195 return tests
179196
180- if not args .tests :
181- args .tests .append ('last' )
182-
183197 test_paths = test_list_to_paths (pav_cfg , args .tests , verbose )
184198
185199 return dir_db .select_from (
@@ -194,13 +208,15 @@ def arg_filtered_tests(pav_cfg: "PavConfig", args: argparse.Namespace,
194208
195209
196210def make_filter_query () -> str :
197- template = 'user={} and created<{}'
211+ """Construct the default filter query, which targets tests created
212+ by the current user on the current system more recently than 1 day ago."""
213+
214+ template = 'user={} and created>1 day'
198215
199216 user = utils .get_login ()
200- time = (dt .datetime .now () - dt .timedelta (days = 1 )).isoformat ()
201217 sysname = sys_vars .get_vars (defer = True ).get ('sys_name' )
202218
203- fargs = [user , time ]
219+ fargs = [user ]
204220
205221 if sysname is not None and len (sysname ) > 0 :
206222 template += ' and sys_name={}'
@@ -250,7 +266,10 @@ def arg_filtered_series(pav_cfg: config.PavConfig, args: argparse.Namespace,
250266 if args .filter is None :
251267 filter_func = filters .const (True ) # Always return True
252268 else :
253- filter_func = filters .parse_query (args .filter )
269+ try :
270+ filter_func = filters .parse_query (args .filter )
271+ except filters .FilterParseError :
272+ raise PavilionError (f"Invalid syntax in filter query: { args .filter } " )
254273
255274 found_series = dir_db .select (
256275 pav_cfg = pav_cfg ,
0 commit comments