[clang] [Clang][Driver][Test] Created test for unsupported driver options (PR #120900)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 22 07:02:47 PST 2024
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {darker}-->
:warning: Python code formatter, darker found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
darker --check --diff -r 342fa15a44721799c9314c58df0d803f13f9d805...faf8597dbb58a08991e11e9c4b9a0aad2f0b4234 clang/utils/generate_unsupported_in_drivermode.py
``````````
</details>
<details>
<summary>
View the diff from darker here.
</summary>
``````````diff
--- generate_unsupported_in_drivermode.py 2024-12-22 14:42:36.000000 +0000
+++ generate_unsupported_in_drivermode.py 2024-12-22 15:02:21.191490 +0000
@@ -44,12 +44,12 @@
OPTION_FLANG = "FlangOption"
# Error messages output from each driver
ERROR_MSG_CC1AS = ": error: unknown argument"
ERROR_MSG_CC1 = "error: unknown argument"
-ERROR_MSG_CL = "" # TODO
-ERROR_MSG_DXC = "" # TODO
+ERROR_MSG_CL = "" # TODO
+ERROR_MSG_DXC = "" # TODO
ERROR_MSG_DEFAULT = "clang: error: unknown argument"
ERROR_MSG_FC1 = "error: unknown argument"
ERROR_MSG_FLANG = "flang: error: unknown argument"
# Lit CHECK prefixes
@@ -59,51 +59,56 @@
CHECK_PREFIX_DXC = PREFIX + OPTION_DXC
CHECK_PREFIX_DEFAULT = PREFIX + OPTION_DEFAULT
CHECK_PREFIX_FC1 = PREFIX + OPTION_FC1
CHECK_PREFIX_FLANG = PREFIX + OPTION_FLANG
-LIT_TEST_NOTE = ("; NOTE: This lit test was automatically generated to validate " +
- "unintentionally exposed arguments to various driver flavours.\n"
- "; NOTE: To make changes, see " + Path(__file__).resolve().as_posix()
- + " from which it was generated.\n\n")
+LIT_TEST_NOTE = (
+ "; NOTE: This lit test was automatically generated to validate "
+ + "unintentionally exposed arguments to various driver flavours.\n"
+ "; NOTE: To make changes, see "
+ + Path(__file__).resolve().as_posix()
+ + " from which it was generated.\n\n"
+)
+
def print_usage():
- """ Print valid usage of this script
- """
- sys.exit( "usage: python " + sys.argv[0] + " <path>/Options.td [<path>/llvm-tblgen]" )
+ """Print valid usage of this script"""
+ sys.exit("usage: python " + sys.argv[0] + " <path>/Options.td [<path>/llvm-tblgen]")
+
def find_file(file_name, search_path):
- """ Find the given file name under a search path
- """
+ """Find the given file name under a search path"""
result = []
for root, dir, files in os.walk(search_path):
if file_name in files:
result.append(os.path.join(root, file_name))
return result
+
def is_valid_file(path, expected_name):
- """ Is a file valid
+ """Is a file valid
Check if a given path is to a file, and if it matches the expected file name
"""
if path.is_file() and path.name == expected_name:
return True
else:
return False
+
def find_tablegen():
- """ Validate the TableGen executable
- """
+ """Validate the TableGen executable"""
result = shutil.which(LLVM_TABLEGEN)
if result is None:
sys.exit("Unable to find " + LLVM_TABLEGEN + ".\nExiting")
else:
print("TableGen found: " + result)
return result
+
def find_groups(group_sequence, options_json, option):
- """ Find the groups for a given option
+ """Find the groups for a given option
Note that groups can themselves be part of groups, hence the recursion
"""
group_json = options_json[option]["Group"]
if group_json is None:
@@ -116,14 +121,15 @@
group_sequence.append(group_json["def"])
return find_groups(group_sequence, options_json, option)
-class UnsupportedDriverOption():
+class UnsupportedDriverOption:
def __init__(self, driver, option):
self.driver = driver
self.option = option
+
# Validate the number of arguments have been passed
argc = len(sys.argv)
if argc < 2 or argc > 3:
print_usage()
@@ -165,12 +171,21 @@
tablegen = tablegen_input_path.resolve().as_posix()
else:
tablegen = find_tablegen()
# Run TableGen to convert Options.td to json
-options_json_str = subprocess.run([ tablegen, "-I", os.path.join(current_path, INCLUDE_PATH), options_td, "-dump-json"], stdout=subprocess.PIPE)
-options_json = json.loads(options_json_str.stdout.decode('utf-8'))
+options_json_str = subprocess.run(
+ [
+ tablegen,
+ "-I",
+ os.path.join(current_path, INCLUDE_PATH),
+ options_td,
+ "-dump-json",
+ ],
+ stdout=subprocess.PIPE,
+)
+options_json = json.loads(options_json_str.stdout.decode("utf-8"))
# Gather list of driver flavours
for i in options_json["!instanceof"]["OptionVisibility"]:
driver_sequence.append(i)
@@ -206,15 +221,25 @@
lit_file.write(LIT_TEST_NOTE)
for i in unsupported_sequence:
if i.driver == OPTION_CC1AS:
lit_file.write(
- "; RUN: not clang -cc1as -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_CC1AS + " %s\n")
+ "; RUN: not clang -cc1as -"
+ + i.option
+ + " -help 2>&1 | FileCheck -check-prefix="
+ + CHECK_PREFIX_CC1AS
+ + " %s\n"
+ )
continue
if i.driver == OPTION_CC1:
lit_file.write(
- "; RUN: not clang -cc1 -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_CC1 + " %s\n")
+ "; RUN: not clang -cc1 -"
+ + i.option
+ + " -help 2>&1 | FileCheck -check-prefix="
+ + CHECK_PREFIX_CC1
+ + " %s\n"
+ )
continue
# if i.driver == OPTION_CL:
# lit_file.write(
# "; RUN: not clang-cl -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_CL + " %s\n")
# continue
@@ -222,28 +247,45 @@
# lit_file.write(
# "; RUN: not clang-dxc -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_DXC + " %s\n")
# continue
if i.driver == OPTION_DEFAULT:
lit_file.write(
- "; RUN: not clang -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_DEFAULT + " %s\n")
+ "; RUN: not clang -"
+ + i.option
+ + " -help 2>&1 | FileCheck -check-prefix="
+ + CHECK_PREFIX_DEFAULT
+ + " %s\n"
+ )
continue
if i.driver == OPTION_FC1:
lit_file.write(
- "; RUN: not flang -fc1 -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_FC1 + " %s\n")
+ "; RUN: not flang -fc1 -"
+ + i.option
+ + " -help 2>&1 | FileCheck -check-prefix="
+ + CHECK_PREFIX_FC1
+ + " %s\n"
+ )
continue
if i.driver == OPTION_FLANG:
lit_file.write(
- "; RUN: not flang -" + i.option + " -help 2>&1 | FileCheck -check-prefix=" + CHECK_PREFIX_FLANG + " %s\n")
+ "; RUN: not flang -"
+ + i.option
+ + " -help 2>&1 | FileCheck -check-prefix="
+ + CHECK_PREFIX_FLANG
+ + " %s\n"
+ )
lit_file.write("; " + CHECK_PREFIX_CC1AS + ": " + ERROR_MSG_CC1AS + "\n")
lit_file.write("; " + CHECK_PREFIX_CC1 + ": " + ERROR_MSG_CC1 + "\n")
lit_file.write("; " + CHECK_PREFIX_CL + ": " + ERROR_MSG_CL + "\n")
lit_file.write("; " + CHECK_PREFIX_DXC + ": " + ERROR_MSG_DXC + "\n")
- lit_file.write("; " + CHECK_PREFIX_DEFAULT + ": " + ERROR_MSG_DEFAULT + "\n")
+ lit_file.write(
+ "; " + CHECK_PREFIX_DEFAULT + ": " + ERROR_MSG_DEFAULT + "\n"
+ )
lit_file.write("; " + CHECK_PREFIX_FC1 + ": " + ERROR_MSG_FC1 + "\n")
lit_file.write("; " + CHECK_PREFIX_FLANG + ": " + ERROR_MSG_FLANG + "\n")
- except(IOError, OSError):
+ except (IOError, OSError):
sys.exit("Error writing to " + "LIT_TEST_PATH. Exiting")
-except(FileNotFoundError, PermissionError, OSError):
+except (FileNotFoundError, PermissionError, OSError):
sys.exit("Error opening " + "LIT_TEST_PATH" + ". Exiting")
else:
lit_file.close()
``````````
</details>
https://github.com/llvm/llvm-project/pull/120900
More information about the cfe-commits
mailing list