mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-25 17:31:41 +01:00
73 lines
2.2 KiB
Python
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]
|