Merge pull request #14939 from jeromecoutant/PR_PIN_ALIAS

Standard Pin Names validation script update
pull/14831/head
Martin Kojtal 2021-07-22 15:04:00 +02:00 committed by GitHub
commit 0f5e062b69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 71 additions and 30 deletions

View File

@ -260,7 +260,7 @@ def check_duplicate_markers(test_mode=False):
return errors return errors
def target_has_arduino_form_factor(target_name): def target_has_form_factor(target_name, form_factor):
"""Check if the target has the Arduino form factor.""" """Check if the target has the Arduino form factor."""
mbed_os_root = pathlib.Path(__file__).absolute().parents[3] mbed_os_root = pathlib.Path(__file__).absolute().parents[3]
@ -272,7 +272,7 @@ def target_has_arduino_form_factor(target_name):
if target_name in target_data: if target_name in target_data:
if "supported_form_factors" in target_data[target_name]: if "supported_form_factors" in target_data[target_name]:
form_factors = target_data[target_name]["supported_form_factors"] form_factors = target_data[target_name]["supported_form_factors"]
if "ARDUINO_UNO" in form_factors: if form_factor in form_factors:
return True return True
return False return False
@ -440,6 +440,22 @@ def legacy_assignment_check(pin_name_content):
invalid_items.append({"key": key, "val": val, "message": message}) invalid_items.append({"key": key, "val": val, "message": message})
return invalid_items return invalid_items
def legacy_alias_check(pin_name_content):
invalid_items = []
legacy_assignments = dict(
re.findall(
r"^\s*((?:SPI|I2C)_\w*)\s*=\s*([a-zA-Z0-9_]+)",
pin_name_content,
re.MULTILINE,
)
)
for key, val in legacy_assignments.items():
message = "legacy assignment; SPI_xxx and I2C_xxx must be #define'd"
invalid_items.append({"key": key, "val": val, "message": message})
return invalid_items
def legacy_uart_check(pin_name_dict): def legacy_uart_check(pin_name_dict):
invalid_items = [] invalid_items = []
if "CONSOLE_TX" not in pin_name_dict or "CONSOLE_RX" not in pin_name_dict: if "CONSOLE_TX" not in pin_name_dict or "CONSOLE_RX" not in pin_name_dict:
@ -448,6 +464,13 @@ def legacy_uart_check(pin_name_dict):
return invalid_items return invalid_items
def legacy_arduino_uno_check(arduino_form_factor):
invalid_items = []
if arduino_form_factor == True:
message = "ARDUINO form factor is deprecated, should be replaced by ARDUINO_UNO"
invalid_items.append({"key": "", "val": "", "message": message})
return invalid_items
def print_summary(report): def print_summary(report):
targets = set([case["platform_name"] for case in report]) targets = set([case["platform_name"] for case in report])
@ -662,12 +685,24 @@ test_cases = [
"case_function": legacy_assignment_check, "case_function": legacy_assignment_check,
"case_input": "content", "case_input": "content",
}, },
{
"suite_name": "generic",
"case_name": "alias",
"case_function": legacy_alias_check,
"case_input": "content",
},
{ {
"suite_name": "generic", "suite_name": "generic",
"case_name": "uart", "case_name": "uart",
"case_function": legacy_uart_check, "case_function": legacy_uart_check,
"case_input": "content", "case_input": "content",
}, },
{
"suite_name": "generic",
"case_name": "arduino_formfactor",
"case_function": legacy_arduino_uno_check,
"case_input": "arduino_form_factor",
},
{ {
"suite_name": "arduino_uno", "suite_name": "arduino_uno",
"case_name": "duplicate", "case_name": "duplicate",
@ -718,21 +753,27 @@ def validate_pin_names(args):
pin_name_dict = pin_name_to_dict(pin_name_content) pin_name_dict = pin_name_to_dict(pin_name_content)
arduino_support = target_has_arduino_form_factor(target) arduino_uno_support = target_has_form_factor(target, "ARDUINO_UNO")
arduino_support = target_has_form_factor(target, "ARDUINO")
for case in test_cases: for case in test_cases:
if suites: if suites:
if case["suite_name"] not in suites: if case["suite_name"] not in suites:
continue continue
else: else:
if not arduino_support and case["suite_name"] == "arduino_uno": if not arduino_uno_support and case["suite_name"] == "arduino_uno":
continue continue
if not arduino_uno_support and not arduino_support and case["case_name"] == "arduino_formfactor":
continue
if case["case_input"] == "dict": if case["case_input"] == "dict":
case_input = pin_name_dict case_input = pin_name_dict
elif case["case_input"] == "content": elif case["case_input"] == "content":
case_input = pin_name_content case_input = pin_name_content
elif case["case_input"] == "arduino_form_factor":
case_input = arduino_support
case_output = case["case_function"](case_input) case_output = case["case_function"](case_input)
case_result = "FAILED" if case_output else "PASSED" case_result = "FAILED" if case_output else "PASSED"