mirror of
https://github.com/espressif/esp-protocols.git
synced 2025-07-27 17:27:27 +02:00
43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
# SPDX-FileCopyrightText: 2025 Espressif Systems (Shanghai) CO LTD
|
|
# SPDX-License-Identifier: Unlicense OR CC0-1.0
|
|
|
|
# This script replaces the `@pytest` decorators in the test files
|
|
# based on the value of the `config` parameter in the `@pytest` decorator.
|
|
# to reuse mqtt test cases for mosquitto broker.
|
|
|
|
import re
|
|
import sys
|
|
|
|
|
|
def replace_decorators(in_file: str, out_file: str) -> None:
|
|
with open(in_file, 'r') as file:
|
|
content = file.read()
|
|
|
|
# we replace config decorators to differentiate between local mosquitto based tests
|
|
pattern = r"@pytest\.mark\.parametrize\(\s*'config'\s*,\s*\[\s*'(.*?)'\s*\]\s*,.*\)"
|
|
|
|
def replacement(match):
|
|
config_value = match.group(1)
|
|
if config_value == 'local_broker':
|
|
return '@pytest.mark.test_mosquitto'
|
|
else:
|
|
return '@pytest.mark.test_mqtt'
|
|
|
|
# Replace occurrences
|
|
updated_content = re.sub(pattern, replacement, content)
|
|
|
|
with open(out_file, 'w') as file:
|
|
file.write(updated_content)
|
|
|
|
|
|
# Main function to handle arguments
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) != 3:
|
|
print('Usage: python replace_decorators.py <in_file> <out_file>')
|
|
sys.exit(1)
|
|
|
|
in_file = sys.argv[1]
|
|
out_file = sys.argv[2]
|
|
replace_decorators(in_file, out_file)
|
|
print(f'Replacements completed')
|