0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-11-25 17:31:41 +01:00
mongodb/buildscripts/util/testname.py

73 lines
2.2 KiB
Python

"""Functions for working with resmoke test names."""
import os
HOOK_DELIMITER = ":"
def is_resmoke_hook(test_name):
"""Determine whether the given test name is for a resmoke hook."""
return test_name.find(HOOK_DELIMITER) != -1
def split_test_hook_name(hook_name):
"""
Split a hook name into the test name and the resmoke hook name.
Note: This method uses ':' to separate the test name from the resmoke hook name. If the test
name has a ':' in it (such as burn_in_test.py tests), it will not work correctly.
"""
assert is_resmoke_hook(hook_name) is True
hook_name_parts = hook_name.split(HOOK_DELIMITER)
return hook_name_parts[0], hook_name_parts[1]
def get_short_name_from_test_file(test_file):
"""Determine the short name a test would use based on the given test_file."""
return os.path.splitext(os.path.basename(test_file))[0]
def normalize_test_file(test_file):
"""
Normalize the given test file.
If 'test_file' represents a Windows-style path, then it is converted to a POSIX-style path
with
- backslashes (\\) as the path separator replaced with forward slashes (/) and
- the ".exe" extension, if present, removed.
If 'test_file' already represents a POSIX-style path, then it is returned unmodified.
"""
if "\\" in test_file:
posix_test_file = test_file.replace("\\", "/")
(test_file_root, test_file_ext) = os.path.splitext(posix_test_file)
if test_file_ext == ".exe":
return test_file_root
return posix_test_file
return test_file
def denormalize_test_file(test_file):
"""Return a list containing 'test_file' as both a POSIX-style and a Windows-style path.
The conversion process may involving replacing forward slashes (/) as the path separator
with backslashes (\\), as well as adding a ".exe" extension if 'test_file' has no file
extension.
"""
test_file = normalize_test_file(test_file)
if "/" in test_file:
windows_test_file = test_file.replace("/", "\\")
if not os.path.splitext(test_file)[1]:
windows_test_file += ".exe"
return [test_file, windows_test_file]
return [test_file]