[llvm] e9b7983 - [llvm-lit] Fix Unhashable TypeError when using lit's internal shell (#101590)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 14 14:49:23 PDT 2024
Author: Harini0924
Date: 2024-08-14T14:49:19-07:00
New Revision: e9b7983fc6826eceb819a3cdb0301c401847ade4
URL: https://github.com/llvm/llvm-project/commit/e9b7983fc6826eceb819a3cdb0301c401847ade4
DIFF: https://github.com/llvm/llvm-project/commit/e9b7983fc6826eceb819a3cdb0301c401847ade4.diff
LOG: [llvm-lit] Fix Unhashable TypeError when using lit's internal shell (#101590)
When using the lit internal shell with the command:
```
LIT_USE_INTERNAL_SHELL=1 ninja check-compiler-rt
```
The follow error is encountered:
```
File "TestRunner.py", line 770, in _executeShCmd
inproc_builtin = inproc_builtins.get(args[0], None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'GlobItem'
```
This error is in a compiler-rt file:
```
TestCases/Linux/long-object-path.cpp
```
This error occurs because `args[0]` is of type `GlobItem`, which is not
hashable, leading to a `TypeError` when it is passed in
`inproc_builtins.get()`. To resolve this issue, I have updated the
implementation to ensure that `args[0]` is hashable before it is used in
`inproc_builtins`.
fixes: #102389
[link to
RFC](https://discourse.llvm.org/t/rfc-enabling-the-lit-internal-shell-by-default/80179)
Added:
Modified:
llvm/utils/lit/lit/TestRunner.py
Removed:
################################################################################
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index da7fa86fd39173..cc903f9e3a1520 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -767,6 +767,10 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
# echo-appending to a file.
# FIXME: Standardize on the builtin echo implementation. We can use a
# temporary file to sidestep blocking pipe write issues.
+
+ # Ensure args[0] is hashable.
+ args[0] = expand_glob(args[0], cmd_shenv.cwd)[0]
+
inproc_builtin = inproc_builtins.get(args[0], None)
if inproc_builtin and (args[0] != "echo" or len(cmd.commands) == 1):
# env calling an in-process builtin is useless, so we take the safe
More information about the llvm-commits
mailing list