Index: utils/lit/lit/TestRunner.py =================================================================== --- utils/lit/lit/TestRunner.py +++ utils/lit/lit/TestRunner.py @@ -60,6 +60,7 @@ def __init__(self, cwd, env): self.cwd = cwd + self.prevCwd = cwd self.env = dict(env) class TimeoutHelper(object): @@ -749,6 +750,10 @@ raise ValueError("'cd' supports only one argument") newdir = cmd.commands[0].args[1] # Update the cwd in the parent environment. + if newdir == '-': + shenv.prevCwd,shenv.cwd = shenv.cwd,shenv.prevCwd + return 0 + shenv.prevCwd = shenv.cwd if os.path.isabs(newdir): shenv.cwd = newdir else: Index: utils/lit/tests/Inputs/shtest-shell/cd.txt =================================================================== --- /dev/null +++ utils/lit/tests/Inputs/shtest-shell/cd.txt @@ -0,0 +1,21 @@ +# Check cd and cd - +# +# RUN: mkdir -p %t/foo +# RUN: mkdir -p %t/bar +# RUN: mkdir -p %t/baz +# RUN: cd %t/foo +# RUN: pwd | FileCheck --check-prefix=FOO_PATH %s +# RUN: cd %t/bar +# RUN: pwd | FileCheck --check-prefix=BAR_PATH %s +# RUN: cd - +# RUN: pwd | FileCheck --check-prefix=FOO_PATH %s +# RUN: cd - +# RUN: pwd | FileCheck --check-prefix=BAR_PATH %s +# RUN: cd %t/baz +# RUN: pwd | FileCheck --check-prefix=BAZ_PATH %s +# RUN: cd - +# RUN: pwd | FileCheck --check-prefix=BAR_PATH %s + +# FOO_PATH: foo +# BAR_PATH: bar +# BAZ_PATH: baz Index: utils/lit/tests/shtest-shell.py =================================================================== --- utils/lit/tests/shtest-shell.py +++ utils/lit/tests/shtest-shell.py @@ -26,6 +26,8 @@ # CHECK: error: command failed with exit status: 1 # CHECK: *** +# CHECK: PASS: shtest-shell :: cd.txt + # CHECK: FAIL: shtest-shell :: colon-error.txt # CHECK: *** TEST 'shtest-shell :: colon-error.txt' FAILED *** # CHECK: $ ":"