Skip to content

Commit 4990d39

Browse files
committed
[llvm-lit] Resolve env subcommand required error
This patch addresses an issue where calling env without any arguments incorrectly returns a "requires subcommand" message. The patch modifies the env command to properly display the current environment variables even when no arguments are provided. Additionally, the test cases have been updated: instead of returning an error, the tests now pass and check if the environment variables are output correctly.
1 parent 3a9a919 commit 4990d39

File tree

3 files changed

+50
-19
lines changed

3 files changed

+50
-19
lines changed

llvm/utils/lit/lit/TestRunner.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -744,7 +744,9 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
744744
args = updateEnv(cmd_shenv, args)
745745
if not args:
746746
# Return the environment variables if no argument is provided
747-
return {key: value for key, value in cmd_shenv.env.items()}
747+
env_str = "\n".join(f"{key}={value}" for key, value in cmd_shenv.env.items())
748+
results.append(ShellCommandResult(j, env_str, "", 0 , timeoutHelper.timeoutReached(), []))
749+
return 0
748750
elif args[0] == "not":
749751
not_args.append(args.pop(0))
750752
not_count += 1
Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,30 @@
1-
# RUN: env
1+
# Check Default Environment
2+
# RUN: env | FileCheck -check-prefix=CHECK-2-EMPTY %s
3+
#
4+
# CHECK-2-EMPTY: BAR = 2
5+
# CHECK-2-EMPTY: FOO = 1
6+
7+
# Set Environment Variables
8+
# RUN: env FOO=2 BAR=1 | FileCheck -check-prefix=CHECK-2-VAL %s
9+
#
10+
# CHECK-2-VAL: BAR = 1
11+
# CHECK-2-VAL: FOO = 2
12+
13+
# Unset Environment Variables
14+
# RUN: env -u FOO -u BAR | FileCheck -check-prefix=CHECK-2-U %s
15+
#
16+
# CHECK-2-U-NOT: BAR
17+
# CHECK-2-U-NOT: FOO
18+
19+
# Mixed Set and Unset Environment Variables
20+
# RUN: env -u FOO BAR=1 -u BAR FOO=2 | FileCheck -check-prefix=CHECK-2-U-VAL %s
21+
#
22+
# CHECK-2-U-VAL-NOT: BAR
23+
# CHECK-2-U-VAL: FOO = 2
24+
25+
# Mixed Set and Unset with Additional Variable
26+
# RUN: env -u FOO BAR=1 -u BAR FOO=2 BAZ=3 | FileCheck -check-prefix=CHECK-3 %s
27+
#
28+
# CHECK-3-NOT: BAR
29+
# CHECK-3: BAZ = 3
30+
# CHECK-3: FOO = 2

llvm/utils/lit/tests/shtest-env.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,35 @@
99

1010
# CHECK: -- Testing: 16 tests{{.*}}
1111

12-
# CHECK: FAIL: shtest-env :: env-args-last-is-assign.txt ({{[^)]*}})
12+
# CHECK: PASS: shtest-env :: env-args-last-is-assign.txt ({{[^)]*}})
1313
# CHECK: env FOO=1
1414
# CHECK: # executed command: env FOO=1
15-
# CHECK: # | Error: 'env' requires a subcommand
16-
# CHECK: # error: command failed with exit status: {{.*}}
15+
# CHECK-NOT: {{^[^#]}}
16+
# CHECK: --
1717

18-
# CHECK: FAIL: shtest-env :: env-args-last-is-u-arg.txt ({{[^)]*}})
18+
# CHECK: PASS: shtest-env :: env-args-last-is-u-arg.txt ({{[^)]*}})
1919
# CHECK: env -u FOO
2020
# CHECK: # executed command: env -u FOO
21-
# CHECK: # | Error: 'env' requires a subcommand
22-
# CHECK: # error: command failed with exit status: {{.*}}
21+
# CHECK-NOT: {{^[^#]}}
22+
# CHECK: --
2323

24-
# CHECK: FAIL: shtest-env :: env-args-last-is-u.txt ({{[^)]*}})
24+
# CHECK: PASS: shtest-env :: env-args-last-is-u.txt ({{[^)]*}})
2525
# CHECK: env -u
2626
# CHECK: # executed command: env -u
27-
# CHECK: # | Error: 'env' requires a subcommand
28-
# CHECK: # error: command failed with exit status: {{.*}}
27+
# CHECK-NOT: {{^[^#]}}
28+
# CHECK: --
2929

30-
# CHECK: FAIL: shtest-env :: env-args-nested-none.txt ({{[^)]*}})
30+
# CHECK: PASS: shtest-env :: env-args-nested-none.txt ({{[^)]*}})
3131
# CHECK: env env env
3232
# CHECK: # executed command: env env env
33-
# CHECK: # | Error: 'env' requires a subcommand
34-
# CHECK: # error: command failed with exit status: {{.*}}
33+
# CHECK-NOT: {{^[^#]}}
34+
# CHECK: --
3535

36-
# CHECK: FAIL: shtest-env :: env-args-none.txt ({{[^)]*}})
36+
# CHECK: PASS: shtest-env :: env-args-none.txt ({{[^)]*}})
3737
# CHECK: env
3838
# CHECK: # executed command: env
39-
# CHECK: # | Error: 'env' requires a subcommand
40-
# CHECK: # error: command failed with exit status: {{.*}}
39+
# CHECK-NOT: {{^[^#]}}
40+
# CHECK: --
4141

4242
# CHECK: FAIL: shtest-env :: env-calls-cd.txt ({{[^)]*}})
4343
# CHECK: env -u FOO BAR=3 cd foobar
@@ -121,6 +121,6 @@
121121
# CHECK: --
122122

123123
# CHECK: Total Discovered Tests: 16
124-
# CHECK: Passed: 4 {{\([0-9]*\.[0-9]*%\)}}
125-
# CHECK: Failed: 12 {{\([0-9]*\.[0-9]*%\)}}
124+
# CHECK: Passed: 9 {{\([0-9]*\.[0-9]*%\)}}
125+
# CHECK: Failed: 7 {{\([0-9]*\.[0-9]*%\)}}
126126
# CHECK-NOT: {{.}}

0 commit comments

Comments
 (0)