aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy/servo_tidy
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2023-03-21 18:52:46 +0100
committerMartin Robinson <mrobinson@igalia.com>2023-03-22 15:37:56 +0100
commitec9cbeefd88176e4fb85d1066beafa9eec19d51e (patch)
tree2dda9ca8c59bce80bec9b0c5cb9d93c8ecb21cf1 /python/tidy/servo_tidy
parent259ccff4919d5a764fc38cd8ebb0f7eaa0ad12c0 (diff)
downloadservo-ec9cbeefd88176e4fb85d1066beafa9eec19d51e.tar.gz
servo-ec9cbeefd88176e4fb85d1066beafa9eec19d51e.zip
Merge forbidden panic check into test-tidy
This cleans up the GitHub actions yaml a bit and ensures that developers are running this check locally before submitting changes. In addition, it allows adding tests for this check. Finally, this change fixes the tidy tests by upgrading voluptuous for Python 3.10 as well as by reverting an inadvertent change for NixOS compatibility on one of the dummy testing files.
Diffstat (limited to 'python/tidy/servo_tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index a48fb4adc5d..8426574887b 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -536,6 +536,18 @@ def check_rust(file_name, lines):
is_lib_rs_file = file_name.endswith("lib.rs")
+ PANIC_NOT_ALLOWED_PATHS = [
+ os.path.join("*", "components", "compositing", "compositor.rs"),
+ os.path.join("*", "components", "constellation", "*"),
+ os.path.join("*", "ports", "winit", "headed_window.rs"),
+ os.path.join("*", "ports", "winit", "headless_window.rs"),
+ os.path.join("*", "ports", "winit", "embedder.rs"),
+ os.path.join("*", "rust_tidy.rs"), # This is for the tests.
+ ]
+ is_panic_not_allowed_rs_file = any([
+ glob.fnmatch.fnmatch(file_name, path) for path in PANIC_NOT_ALLOWED_PATHS])
+ print(file_name)
+
prev_open_brace = False
multi_line_string = False
prev_crate = {}
@@ -547,6 +559,7 @@ def check_rust(file_name, lines):
decl_message = "{} is not in alphabetical order"
decl_expected = "\n\t\033[93mexpected: {}\033[0m"
decl_found = "\n\t\033[91mfound: {}\033[0m"
+ panic_message = "unwrap() or panic!() found in code which should not panic."
for idx, original_line in enumerate(map(lambda line: line.decode("utf-8"), lines)):
# simplify the analysis
@@ -677,6 +690,11 @@ def check_rust(file_name, lines):
# not a feature attribute line, so empty previous name
prev_feature_name = ""
+ if is_panic_not_allowed_rs_file:
+ match = re.search(r"unwrap\(|panic!\(", line)
+ if match:
+ yield (idx + 1, panic_message)
+
# modules must be in the same line and alphabetically sorted
if line.startswith("mod ") or line.startswith("pub mod "):
# strip /(pub )?mod/ from the left and ";" from the right