Skip to content

Commit 23579f4

Browse files
author
owen-jones-diffblue
authored
Merge pull request diffblue#581 from diffblue/owen-jones-diffblue/use-check-call-when-compiling-tests
Use check_call when compiling tests
2 parents 671d95e + d656297 commit 23579f4

File tree

27 files changed

+46
-46
lines changed

27 files changed

+46
-46
lines changed

regression/end_to_end/early_check/test_early_check.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1111
def test_early_check_catch_impossible_taint_flow_01(load_strategy):
1212
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
13-
subprocess.call(["ant"])
13+
subprocess.check_call(["ant"])
1414
with run_security_analyser_pipeline(
1515
"build",
1616
"rules.json",
@@ -29,7 +29,7 @@ def test_early_check_catch_impossible_taint_flow_01(load_strategy):
2929
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
3030
def test_early_check_catch_impossible_taint_flow_02(load_strategy):
3131
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
32-
subprocess.call(["ant"])
32+
subprocess.check_call(["ant"])
3333
with run_security_analyser_pipeline(
3434
"build",
3535
"rules.json",
@@ -48,7 +48,7 @@ def test_early_check_catch_impossible_taint_flow_02(load_strategy):
4848
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
4949
def test_early_check_miss_impossible_taint_flow_01(load_strategy):
5050
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
51-
subprocess.call(["ant"])
51+
subprocess.check_call(["ant"])
5252
with run_security_analyser_pipeline(
5353
"build",
5454
"rules.json",
@@ -67,7 +67,7 @@ def test_early_check_miss_impossible_taint_flow_01(load_strategy):
6767
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
6868
def test_early_check_miss_impossible_taint_flow_02(load_strategy):
6969
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
70-
subprocess.call(["ant"])
70+
subprocess.check_call(["ant"])
7171
with run_security_analyser_pipeline(
7272
"build",
7373
"rules.json",

regression/end_to_end/entry_point/test_entry_point.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class 'B' and 'X' is a derived class from 'B' not reimplementing 'f'.
2020
then, the test will pass, but passing 'Child.foo' leads to a failure.
2121
"""
2222
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
23-
subprocess.call(["ant"])
23+
subprocess.check_call(["ant"])
2424
with run_security_analyser_pipeline(
2525
"build",
2626
"rules.json",

regression/end_to_end/general001/test_general001.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general001(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_01_rules.json",

regression/end_to_end/general002/test_general002.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general002(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_02_rules.json",

regression/end_to_end/general003/test_general003.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general003(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_03_rules.json",

regression/end_to_end/general004/test_general004.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general004(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_04_rules.json",

regression/end_to_end/general005/test_general005.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general005(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_05_rules.json",

regression/end_to_end/general006/test_general006.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def test_general006(load_strategy):
1111
# Compiling this test with ant is hard because of the dependency on Tomcat. Eventually we should use Maven to
1212
# build all of the tests as part of building security-scanner. For now, we use a pre-compiled file.
1313
# with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
14-
# subprocess.call(["ant"])
14+
# subprocess.check_call(["ant"])
1515
with run_security_analyser_pipeline(
1616
"taint_traces_06.war",
1717
"taint_traces_06_rules.json",

regression/end_to_end/general007/test_general007.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_general007(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"taint_traces_07_rules.json",

regression/end_to_end/interprocedural00/test_interprocedural00.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_interprocedural00(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
traces = run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/interprocedural01/test_interprocedural01.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1212
def test_interprocedural01(load_strategy):
1313
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
14-
subprocess.call(["ant"])
14+
subprocess.check_call(["ant"])
1515
traces = run_security_analyser_pipeline(
1616
"build",
1717
"rules.json",

regression/end_to_end/multitaint/test_multitaint.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_multitaint(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
traces = run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/object_with_extra_fields/test_object_with_extra_fields.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_start_with_passed_object(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",
@@ -24,7 +24,7 @@ def test_start_with_passed_object(load_strategy):
2424
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
2525
def test_start_with_passed_array_of_objects(load_strategy):
2626
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
27-
subprocess.call(["ant"])
27+
subprocess.check_call(["ant"])
2828
with run_security_analyser_pipeline(
2929
"build",
3030
"rules.json",
@@ -39,7 +39,7 @@ def test_start_with_passed_array_of_objects(load_strategy):
3939
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
4040
def test_start_with_passed_self(load_strategy):
4141
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
42-
subprocess.call(["ant"])
42+
subprocess.check_call(["ant"])
4343
with run_security_analyser_pipeline(
4444
"build",
4545
"rules.json",
@@ -54,7 +54,7 @@ def test_start_with_passed_self(load_strategy):
5454
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
5555
def test_start_with_passed_self_simple(load_strategy):
5656
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
57-
subprocess.call(["ant"])
57+
subprocess.check_call(["ant"])
5858
with run_security_analyser_pipeline(
5959
"build",
6060
"rules.json",
@@ -69,7 +69,7 @@ def test_start_with_passed_self_simple(load_strategy):
6969
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
7070
def test_start_with_passed_self_array_simple(load_strategy):
7171
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
72-
subprocess.call(["ant"])
72+
subprocess.check_call(["ant"])
7373
with run_security_analyser_pipeline(
7474
"build",
7575
"rules.json",
@@ -84,7 +84,7 @@ def test_start_with_passed_self_array_simple(load_strategy):
8484
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
8585
def test_start_with_passed_self_array_field(load_strategy):
8686
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
87-
subprocess.call(["ant"])
87+
subprocess.check_call(["ant"])
8888
with run_security_analyser_pipeline(
8989
"build",
9090
"rules.json",
@@ -100,7 +100,7 @@ def test_start_with_passed_self_array_field(load_strategy):
100100
def ZZZtest_start_with_passed_self_array_array(load_strategy):
101101
# Disabled (by ZZZ prefix), because JBMC does not terminate.
102102
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
103-
subprocess.call(["ant"])
103+
subprocess.check_call(["ant"])
104104
with run_security_analyser_pipeline(
105105
"build",
106106
"rules.json",
@@ -115,7 +115,7 @@ def ZZZtest_start_with_passed_self_array_array(load_strategy):
115115
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
116116
def test_call_nondetWithNull(load_strategy):
117117
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
118-
subprocess.call(["ant"])
118+
subprocess.check_call(["ant"])
119119
with run_security_analyser_pipeline(
120120
"build",
121121
"rules.json",
@@ -130,7 +130,7 @@ def test_call_nondetWithNull(load_strategy):
130130
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
131131
def test_call_nondetWithNull_twice(load_strategy):
132132
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
133-
subprocess.call(["ant"])
133+
subprocess.check_call(["ant"])
134134
with run_security_analyser_pipeline(
135135
"build",
136136
"rules.json",

regression/end_to_end/overloaded_source/test_overloaded_source.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_overloaded_source(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
with run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/taint_array_from_elements/test_taint_array_from_elements.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_taint_array_from_elements(load_strategy):
2020
to function calls.
2121
"""
2222
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
23-
subprocess.call(["ant"])
23+
subprocess.check_call(["ant"])
2424
traces = run_security_analyser_pipeline(
2525
"build",
2626
"rules.json",

regression/end_to_end/taint_array_of_wrapped/test_taint_array_of_wrapped.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def test_taint_array_of_wrapped(load_strategy):
3737
struct @__CPROVER_primitive_taint_wrapper_int { int @__CPROVER__super; _Bool @__CPROVER_com_diffblue_security_Tainted_int; }
3838
"""
3939
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
40-
subprocess.call(["ant"])
40+
subprocess.check_call(["ant"])
4141
with run_security_analyser_pipeline(
4242
"build",
4343
"rules.json",

regression/end_to_end/taint_over_downcast/test_taint_over_downcast.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_taint_over_downcast(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
traces = run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/taint_over_list/test_taint_over_list.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def test_taint_over_list(load_strategy):
1111
# This test fails with the full-slicer on because it removes code from
1212
# ArrayList.add.
1313
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
14-
subprocess.call(["ant"])
14+
subprocess.check_call(["ant"])
1515
traces = run_security_analyser_pipeline(
1616
"build",
1717
"rules.json",

regression/end_to_end/taint_over_list_models/test_taint_over_list_models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1111
def test_taint_over_list_models(load_strategy):
1212
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
13-
subprocess.call(["ant"])
13+
subprocess.check_call(["ant"])
1414
traces = run_security_analyser_pipeline(
1515
"build",
1616
"rules.json",

regression/end_to_end/taint_two_tokens/test_taint_two_tokens.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@fasteners.interprocess_locked('.build_lock')
99
def test_taint_two_tokens(load_strategy):
1010
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
11-
subprocess.call(["ant"])
11+
subprocess.check_call(["ant"])
1212
with run_security_analyser_pipeline(
1313
"build",
1414
"rules.json",

regression/end_to_end/tainted-array-type/test_tainted_array_type.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_user_class(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
traces = run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/tainted-integers/test_tainted_integers.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_tainted_integers_taint_flows_inwards(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant", "compile1"])
12+
subprocess.check_call(["ant", "compile1"])
1313
with run_security_analyser_pipeline(
1414
"build_flow_in",
1515
"rules.json",
@@ -23,7 +23,7 @@ def test_tainted_integers_taint_flows_inwards(load_strategy):
2323
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
2424
def test_tainted_integers_taint_flows_outwards(load_strategy):
2525
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
26-
subprocess.call(["ant", "compile2"])
26+
subprocess.check_call(["ant", "compile2"])
2727
with run_security_analyser_pipeline(
2828
"build_flow_out",
2929
"rules.json",
@@ -37,7 +37,7 @@ def test_tainted_integers_taint_flows_outwards(load_strategy):
3737
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
3838
def test_tainted_integers_single_function(load_strategy):
3939
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
40-
subprocess.call(["ant", "compile3"])
40+
subprocess.check_call(["ant", "compile3"])
4141
with run_security_analyser_pipeline(
4242
"build_single_function",
4343
"rules.json",
@@ -51,7 +51,7 @@ def test_tainted_integers_single_function(load_strategy):
5151
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
5252
def test_tainted_integers_taint_stored_in_array(load_strategy):
5353
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
54-
subprocess.call(["ant", "compile4"])
54+
subprocess.check_call(["ant", "compile4"])
5555
with run_security_analyser_pipeline(
5656
"build_stored_in_array",
5757
"rules.json",
@@ -65,7 +65,7 @@ def test_tainted_integers_taint_stored_in_array(load_strategy):
6565
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
6666
def test_tainted_integers_taint_stored_in_fields(load_strategy):
6767
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
68-
subprocess.call(["ant", "compile5"])
68+
subprocess.check_call(["ant", "compile5"])
6969
with run_security_analyser_pipeline(
7070
"build_stored_in_fields",
7171
"rules.json",
@@ -79,7 +79,7 @@ def test_tainted_integers_taint_stored_in_fields(load_strategy):
7979
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
8080
def test_tainted_integers_dependent_taint(load_strategy):
8181
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
82-
subprocess.call(["ant", "compile6"])
82+
subprocess.check_call(["ant", "compile6"])
8383
with run_security_analyser_pipeline(
8484
"build_dependent_taint",
8585
"rules.json",
@@ -94,7 +94,7 @@ def test_tainted_integers_dependent_taint(load_strategy):
9494
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
9595
def test_tainted_integers_dependent_taint_in_summary(load_strategy):
9696
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
97-
subprocess.call(["ant", "compile7"])
97+
subprocess.check_call(["ant", "compile7"])
9898
with run_security_analyser_pipeline(
9999
"build_dependent_taint_in_summary",
100100
"rules.json",

regression/end_to_end/tainted-string-type-concat/test_tainted_string_type_concat.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1010
def test_taint_crossing_substr_and_concatenation(load_strategy):
1111
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
12-
subprocess.call(["ant"])
12+
subprocess.check_call(["ant"])
1313
traces = run_security_analyser_pipeline(
1414
"build",
1515
"rules.json",

regression/end_to_end/tainted-string-type/test_tainted_string_type.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
99
def test_tainted_string(load_strategy):
1010
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
11-
subprocess.call(["ant"])
11+
subprocess.check_call(["ant"])
1212
traces = pipeline_executor.run_security_analyser_pipeline(
1313
"build",
1414
"rules.json",

regression/end_to_end/tainted-user-class/test_tainted_user_class.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1212
def test_user_class(load_strategy):
1313
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
14-
subprocess.call(["ant", "compile_test"])
14+
subprocess.check_call(["ant", "compile_test"])
1515
traces = run_security_analyser_pipeline(
1616
"build_test",
1717
"rules.json",
@@ -31,7 +31,7 @@ def test_user_subclass(load_strategy):
3131
IF !((struct test *)anonlocal::3a)->@__CPROVER_XXX THEN GOTO 5
3232
"""
3333
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
34-
subprocess.call(["ant"])
34+
subprocess.check_call(["ant"])
3535
traces = run_security_analyser_pipeline(
3636
"build_subclass",
3737
"subclass_rules.json",

regression/end_to_end/xxe01/test_xxe01.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
@fasteners.interprocess_locked(os.path.join(os.path.dirname(__file__), ".build_lock"))
1212
def test_xxe01(load_strategy):
1313
with utils.working_dir(os.path.abspath(os.path.dirname(__file__))):
14-
subprocess.call(["ant"])
14+
subprocess.check_call(["ant"])
1515
with run_security_analyser_pipeline(
1616
"build",
1717
"rules.json",

0 commit comments

Comments
 (0)