llvm-project/lldb/test/Shell/ScriptInterpreter/Python/command_relative_import.test
Jonas Devlieghere 00bb397b0d [lldb] Support Python imports relative the to the current file being sourced
Make it possible to use a relative path in command script import to the
location of the file being sourced. This allows the user to put Python
scripts next to LLDB command files and importing them without having to
specify an absolute path.

To enable this behavior pass `-c` to `command script import`. The
argument can only be used when sourcing the command from a file.

rdar://68310384

Differential revision: https://reviews.llvm.org/D89334
2020-10-27 09:20:45 -07:00

32 lines
1.2 KiB
Plaintext

# REQUIRES: python
# RUN: rm -rf %t && mkdir -p %t/foo/bar/baz
# RUN: split-file %S/Inputs/relative.split %t/foo
# RUN: split-file %S/Inputs/hello.split %t/foo/bar
# RUN: mv %t/foo/bar/hello.py %t/foo/bar/baz
# RUN: echo 'command source %t/foo/bar/hello.in' >> %t/foo/zip.in
# RUN: %lldb --script-language python \
# RUN: -o 'command source %t/foo/magritte.in' \
# RUN: -o 'command source %t/foo/zip.in' \
# RUN: -o 'command source %t/foo/magritte.in' \
# RUN; -o 'zip' \
# RUN: -o 'hello'
# RUN -o 'magritte' 2>&1 | FileCheck %s
# The first time importing 'magritte' fails because we didn't pass -c.
# CHECK: ModuleNotFoundError: No module named 'magritte'
# CHECK-NOT: Ceci n'est pas une pipe
# CHECK: 95126
# CHECK: Hello, World!
# The second time importing 'magritte' works, even without passing -c because
# we added '%t/foo' to the Python path when importing 'zip'.
# CHECK: Ceci n'est pas une pipe
# Cannot use `-o` here because the driver puts the commands in a file and
# sources them.
command script import -c %t/foo/magritte.py
quit
# RUN: cat %s | %lldb --script-language python 2>&1 | FileCheck %s --check-prefix ERROR
# ERROR: error: command script import -c can only be specified from a command file