Skip to content

Commit

Permalink
Merge pull request godotengine#96565 from Geometror/improve-test-gene…
Browse files Browse the repository at this point in the history
…rator

[Tests] `create_test` script: Improve argument description and snake_case name conversion
  • Loading branch information
akien-mga committed Sep 4, 2024
2 parents 9b4a965 + ec7ca6b commit 139f998
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions tests/create_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,16 @@ def main():
os.chdir(os.path.dirname(os.path.realpath(__file__)))

parser = argparse.ArgumentParser(description="Creates a new unit test file.")
parser.add_argument("name", type=str, help="The unit test name in PascalCase notation")
parser.add_argument(
"name",
type=str,
help="Specifies the class or component name to be tested, in PascalCase (e.g., MeshInstance3D). The name will be prefixed with 'test_' for the header file and 'Test' for the namespace.",
)
parser.add_argument(
"path",
type=str,
nargs="?",
help="The path to the unit test file relative to the tests folder (default: .)",
help="The path to the unit test file relative to the tests folder (e.g. core). This should correspond to the relative path of the class or component being tested. (default: .)",
default=".",
)
parser.add_argument(
Expand All @@ -29,9 +33,10 @@ def main():
)
args = parser.parse_args()

snake_case_regex = re.compile(r"(?<!^)(?=[A-Z])")
name_snake_case = snake_case_regex.sub("_", args.name).lower()

snake_case_regex = re.compile(r"(?<!^)(?=[A-Z, 0-9])")
# Replace 2D, 3D, and 4D with 2d, 3d, and 4d, respectively. This avoids undesired splits like node_3_d.
prefiltered_name = re.sub(r"([234])D", lambda match: match.group(1).lower() + "d", args.name)
name_snake_case = snake_case_regex.sub("_", prefiltered_name).lower()
file_path = os.path.normpath(os.path.join(args.path, f"test_{name_snake_case}.h"))

print(file_path)
Expand Down

0 comments on commit 139f998

Please sign in to comment.