Compare commits
1 commit
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94e8a6d35b |
49 changed files with 363 additions and 573 deletions
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
6
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -57,12 +57,6 @@ discussing on Gitter rather than raising an issue.
|
||||||
* Version of Vimspector: (e.g. output of `git rev-parse HEAD` if cloned or the
|
* Version of Vimspector: (e.g. output of `git rev-parse HEAD` if cloned or the
|
||||||
name of the tarball used to install otherwise)
|
name of the tarball used to install otherwise)
|
||||||
|
|
||||||
* Output of `:VimspectorDebugInfo`
|
|
||||||
|
|
||||||
```
|
|
||||||
paste here
|
|
||||||
```
|
|
||||||
|
|
||||||
* Output of `vim --version` or `nvim --version`
|
* Output of `vim --version` or `nvim --version`
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
8
.github/workflows/build.yaml
vendored
8
.github/workflows/build.yaml
vendored
|
|
@ -13,7 +13,7 @@ defaults:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
PythonLint:
|
PythonLint:
|
||||||
runs-on: ubuntu-18.04
|
runs-on: ubuntu-16.04
|
||||||
container: 'puremourning/vimspector:test'
|
container: 'puremourning/vimspector:test'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
@ -22,7 +22,7 @@ jobs:
|
||||||
- name: 'Run flake8'
|
- name: 'Run flake8'
|
||||||
run: '$HOME/.local/bin/flake8 python3/ *.py'
|
run: '$HOME/.local/bin/flake8 python3/ *.py'
|
||||||
VimscriptLint:
|
VimscriptLint:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
container: 'puremourning/vimspector:test'
|
container: 'puremourning/vimspector:test'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
@ -32,7 +32,7 @@ jobs:
|
||||||
run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/
|
run: $HOME/.local/bin/vint autoload/ compiler/ plugin/ tests/ syntax/
|
||||||
|
|
||||||
Linux:
|
Linux:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
container:
|
container:
|
||||||
image: 'puremourning/vimspector:test'
|
image: 'puremourning/vimspector:test'
|
||||||
options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
|
options: --cap-add=SYS_PTRACE --security-opt seccomp=unconfined
|
||||||
|
|
@ -156,7 +156,7 @@ jobs:
|
||||||
# SSH_PASS: ${{ secrets.SSH_PASS }} # [V]imspector
|
# SSH_PASS: ${{ secrets.SSH_PASS }} # [V]imspector
|
||||||
|
|
||||||
PublishRelease:
|
PublishRelease:
|
||||||
runs-on: 'ubuntu-18.04'
|
runs-on: 'ubuntu-16.04'
|
||||||
needs:
|
needs:
|
||||||
- Linux
|
- Linux
|
||||||
- MacOS
|
- MacOS
|
||||||
|
|
|
||||||
27
.github/workflows/lock_old_issues.yaml
vendored
27
.github/workflows/lock_old_issues.yaml
vendored
|
|
@ -1,27 +0,0 @@
|
||||||
name: "Lock Old Issues"
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *'
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lock:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: dessant/lock-threads@v2
|
|
||||||
with:
|
|
||||||
github-token: ${{ github.token }}
|
|
||||||
issue-lock-inactive-days: '60'
|
|
||||||
# issue-exclude-created-before: ''
|
|
||||||
# issue-exclude-labels: ''
|
|
||||||
# issue-lock-labels: ''
|
|
||||||
# issue-lock-comment: ''
|
|
||||||
# issue-lock-reason: 'resolved'
|
|
||||||
# pr-lock-inactive-days: '365'
|
|
||||||
# pr-exclude-created-before: ''
|
|
||||||
# pr-exclude-labels: ''
|
|
||||||
# pr-lock-labels: ''
|
|
||||||
# pr-lock-comment: ''
|
|
||||||
# pr-lock-reason: 'resolved'
|
|
||||||
process-only: 'issues'
|
|
||||||
|
|
@ -46,23 +46,6 @@ The GitHub issue tracker is for *bug reports* and *features requests* for the
|
||||||
Vimspector project, and on-topic comments and follow-ups to them. It is not for
|
Vimspector project, and on-topic comments and follow-ups to them. It is not for
|
||||||
general discussion, general support or for any other purpose.
|
general discussion, general support or for any other purpose.
|
||||||
|
|
||||||
Please **search the issue tracker for similar issues** before creating a new
|
|
||||||
one. There's no point in duplication; if an existing open issue addresses your
|
|
||||||
problem, please comment there instead of creating a duplicate. However, if the
|
|
||||||
issue you found is **closed as resolved** (e.g. with a PR or the original user's
|
|
||||||
problem was resolved), raise a **new issue**, because you've found a new
|
|
||||||
problem. Reference the original issue if you think that's useful information.
|
|
||||||
|
|
||||||
Closed issues which have been inactive for 60 days will be locked, this helps to
|
|
||||||
keep discussions focussed. If you believe you are still experiencing an issue
|
|
||||||
which has been closed, please raise a new issue, completing the issue template.
|
|
||||||
|
|
||||||
If you do find a similar _open_ issue, **don't just post 'me too' or similar**
|
|
||||||
responses. This almost never helps resolve the issue, and just causes noise for
|
|
||||||
the maintainers. Only post if it will aid the maintainers in solving the issue;
|
|
||||||
if there are existing diagnostics requested in the thread, perform
|
|
||||||
them and post the results.
|
|
||||||
|
|
||||||
Please do not be offended if your Issue or comment is closed or hidden, for any
|
Please do not be offended if your Issue or comment is closed or hidden, for any
|
||||||
of the following reasons:
|
of the following reasons:
|
||||||
|
|
||||||
|
|
@ -70,7 +53,6 @@ of the following reasons:
|
||||||
* The issue or comment is off-topic
|
* The issue or comment is off-topic
|
||||||
* The issue does not represent a Vimspector bug or feature request
|
* The issue does not represent a Vimspector bug or feature request
|
||||||
* The issue cannot be reasonably reproduced using the minimal vimrc
|
* The issue cannot be reasonably reproduced using the minimal vimrc
|
||||||
* The issue is a duplicate of an existing issue
|
|
||||||
* etc.
|
* etc.
|
||||||
|
|
||||||
Issue titles are important. It's not usually helpful to write a title like
|
Issue titles are important. It's not usually helpful to write a title like
|
||||||
|
|
|
||||||
89
README.md
89
README.md
|
|
@ -61,10 +61,9 @@ For detailed explanation of the `.vimspector.json` format, see the
|
||||||
* [Closing debugger](#closing-debugger)
|
* [Closing debugger](#closing-debugger)
|
||||||
* [Terminate debuggee](#terminate-debuggee)
|
* [Terminate debuggee](#terminate-debuggee)
|
||||||
* [Debug profile configuration](#debug-profile-configuration)
|
* [Debug profile configuration](#debug-profile-configuration)
|
||||||
* [C, C++, Rust, etc.](#c-c-rust-etc)
|
* [C, C , Rust, etc.](#c-c-rust-etc)
|
||||||
* [Data visualization / pretty printing](#data-visualization--pretty-printing)
|
* [C Remote debugging](#c-remote-debugging)
|
||||||
* [C++ Remote debugging](#c-remote-debugging)
|
* [C Remote launch and attach](#c-remote-launch-and-attach)
|
||||||
* [C++ Remote launch and attach](#c-remote-launch-and-attach)
|
|
||||||
* [Rust](#rust)
|
* [Rust](#rust)
|
||||||
* [Python](#python)
|
* [Python](#python)
|
||||||
* [Python Remote Debugging](#python-remote-debugging)
|
* [Python Remote Debugging](#python-remote-debugging)
|
||||||
|
|
@ -291,7 +290,7 @@ If you just want to try out vimspector without changing your vim config, there
|
||||||
are example projects for a number of languages in `support/test`, including:
|
are example projects for a number of languages in `support/test`, including:
|
||||||
|
|
||||||
* Python (`support/test/python/simple_python`)
|
* Python (`support/test/python/simple_python`)
|
||||||
* Go (`support/test/go/hello_world` and `support/test/go/name-starts-with-vowel`)
|
* Go (`support/test/go/hello_world`)
|
||||||
* Nodejs (`support/test/node/simple`)
|
* Nodejs (`support/test/node/simple`)
|
||||||
* Chrome (`support/test/chrome/`)
|
* Chrome (`support/test/chrome/`)
|
||||||
* etc.
|
* etc.
|
||||||
|
|
@ -1008,8 +1007,6 @@ be changed manually to "switch to" that thread.
|
||||||
to set the "focussed" thread to the currently selected one. If the selected
|
to set the "focussed" thread to the currently selected one. If the selected
|
||||||
line is a stack frame, set the focussed thread to the thread of that frame and
|
line is a stack frame, set the focussed thread to the thread of that frame and
|
||||||
jump to that frame in the code window.
|
jump to that frame in the code window.
|
||||||
* The current frame when a breakpoint is hit or if manuall jumping is also
|
|
||||||
highlighted.
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|
@ -1071,8 +1068,6 @@ information when something goes wrong that's not a Vim traceback.
|
||||||
If you just want to see the Vimspector log file, use `:VimspectorToggleLog`,
|
If you just want to see the Vimspector log file, use `:VimspectorToggleLog`,
|
||||||
which will tail it in a little window (doesn't work on Windows).
|
which will tail it in a little window (doesn't work on Windows).
|
||||||
|
|
||||||
You can see some debugging info with `:VimspectorDebugInfo`
|
|
||||||
|
|
||||||
## Closing debugger
|
## Closing debugger
|
||||||
|
|
||||||
To close the debugger, use:
|
To close the debugger, use:
|
||||||
|
|
@ -1177,38 +1172,6 @@ licensing.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Data visualization / pretty printing
|
|
||||||
|
|
||||||
Depending on the backend you need to enable pretty printing of complex types manually.
|
|
||||||
|
|
||||||
* LLDB: Pretty printing is enabled by default
|
|
||||||
|
|
||||||
* GDB: To enable gdb pretty printers, consider the snippet below.
|
|
||||||
It is not enough to have `set print pretty on` in your .gdbinit!
|
|
||||||
|
|
||||||
```
|
|
||||||
{
|
|
||||||
"configurations": {
|
|
||||||
"Launch": {
|
|
||||||
"adapter": "vscode-cpptools",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "<path to binary>",
|
|
||||||
...
|
|
||||||
"MIMode": "gdb"
|
|
||||||
"setupCommands": [
|
|
||||||
{
|
|
||||||
"description": "Enable pretty-printing for gdb",
|
|
||||||
"text": "-enable-pretty-printing",
|
|
||||||
"ignoreFailures": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### C++ Remote debugging
|
### C++ Remote debugging
|
||||||
|
|
||||||
The cpptools documentation describes how to attach cpptools to gdbserver using
|
The cpptools documentation describes how to attach cpptools to gdbserver using
|
||||||
|
|
@ -1401,8 +1364,6 @@ Requires:
|
||||||
* [Delve][delve-install] installed, e.g. `go get -u github.com/go-delve/delve/cmd/dlv`
|
* [Delve][delve-install] installed, e.g. `go get -u github.com/go-delve/delve/cmd/dlv`
|
||||||
* Delve to be in your PATH, or specify the `dlvToolPath` launch option
|
* Delve to be in your PATH, or specify the `dlvToolPath` launch option
|
||||||
|
|
||||||
NOTE: Vimspector uses the ["legacy" vscode-go debug adapter](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md) rather than the "built-in" DAP support in Delve. You can track https://github.com/puremourning/vimspector/issues/186 for that.
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"configurations": {
|
"configurations": {
|
||||||
|
|
@ -1420,7 +1381,7 @@ NOTE: Vimspector uses the ["legacy" vscode-go debug adapter](https://github.com/
|
||||||
```
|
```
|
||||||
|
|
||||||
See the vscode-go docs for
|
See the vscode-go docs for
|
||||||
[troubleshooting information](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md#troubleshooting)
|
[troubleshooting information](https://github.com/golang/vscode-go/blob/master/docs/debugging.md#troubleshooting)
|
||||||
|
|
||||||
## PHP
|
## PHP
|
||||||
|
|
||||||
|
|
@ -1739,26 +1700,22 @@ Vimsector uses them, they will not be replaced. So to customise the signs,
|
||||||
define them in your `vimrc`.
|
define them in your `vimrc`.
|
||||||
|
|
||||||
|
|
||||||
| Sign | Description | Priority |
|
| Sign | Description | Priority |
|
||||||
|---------------------------|-----------------------------------------|----------|
|
|------------------------|-------------------------------------|----------|
|
||||||
| `vimspectorBP` | Line breakpoint | 9 |
|
| `vimspectorBP` | Line breakpoint | 9 |
|
||||||
| `vimspectorBPCond` | Conditional line breakpoint | 9 |
|
| `vimspectorBPCond` | Conditional line breakpoint | 9 |
|
||||||
| `vimspectorBPDisabled` | Disabled breakpoint | 9 |
|
| `vimspectorBPDisabled` | Disabled breakpoint | 9 |
|
||||||
| `vimspectorPC` | Program counter (i.e. current line) | 200 |
|
| `vimspectorPC` | Program counter (i.e. current line) | 200 |
|
||||||
| `vimspectorPCBP` | Program counter and breakpoint | 200 |
|
| `vimspectorPCBP` | Program counter and breakpoint | 200 |
|
||||||
| `vimspectorCurrentThread` | Focussed thread in stack trace view | 200 |
|
|
||||||
| `vimspectorCurrentFrame` | Current stack frame in stack trace view | 200 |
|
|
||||||
|
|
||||||
The default symbols are the equivalent of something like the following:
|
The default symbols are the equivalent of something like the following:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
sign define vimspectorBP text=\ ● texthl=WarningMsg
|
sign define vimspectorBP text=\ ● texthl=WarningMsg
|
||||||
sign define vimspectorBPCond text=\ ◆ texthl=WarningMsg
|
sign define vimspectorBPCond text=\ ◆ texthl=WarningMsg
|
||||||
sign define vimspectorBPDisabled text=\ ● texthl=LineNr
|
sign define vimspectorBPDisabled text=\ ● texthl=LineNr
|
||||||
sign define vimspectorPC text=\ ▶ texthl=MatchParen linehl=CursorLine
|
sign define vimspectorPC text=\ ▶ texthl=MatchParen linehl=CursorLine
|
||||||
sign define vimspectorPCBP text=●▶ texthl=MatchParen linehl=CursorLine
|
sign define vimspectorPCBP text=●▶ texthl=MatchParen linehl=CursorLine
|
||||||
sign define vimspectorCurrentThread text=▶ texthl=MatchParen linehl=CursorLine
|
|
||||||
sign define vimspectorCurrentFrame text=▶ texthl=Special linehl=CursorLine
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If the signs don't display properly, your font probably doesn't contain these
|
If the signs don't display properly, your font probably doesn't contain these
|
||||||
|
|
@ -1766,13 +1723,11 @@ glyphs. You can easily change them by defining the sign in your vimrc. For
|
||||||
example, you could put this in your `vimrc` to use some simple ASCII symbols:
|
example, you could put this in your `vimrc` to use some simple ASCII symbols:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
sign define vimspectorBP text=o texthl=WarningMsg
|
sign define vimspectorBP text=o texthl=WarningMsg
|
||||||
sign define vimspectorBPCond text=o? texthl=WarningMsg
|
sign define vimspectorBPCond text=o? texthl=WarningMsg
|
||||||
sign define vimspectorBPDisabled text=o! texthl=LineNr
|
sign define vimspectorBPDisabled text=o! texthl=LineNr
|
||||||
sign define vimspectorPC text=\ > texthl=MatchParen
|
sign define vimspectorPC text=\ > texthl=MatchParen
|
||||||
sign define vimspectorPCBP text=o> texthl=MatchParen
|
sign define vimspectorPCBP text=o> texthl=MatchParen
|
||||||
sign define vimspectorCurrentThread text=> texthl=MatchParen
|
|
||||||
sign define vimspectorCurrentFrame text=> texthl=Special
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Sign priority
|
## Sign priority
|
||||||
|
|
|
||||||
|
|
@ -557,14 +557,6 @@ function! vimspector#ShowEvalBalloon( is_visual ) abort
|
||||||
\ . '", 0 )' )
|
\ . '", 0 )' )
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! vimspector#PrintDebugInfo() abort
|
|
||||||
if !s:Enabled()
|
|
||||||
return
|
|
||||||
endif
|
|
||||||
|
|
||||||
py3 _vimspector_session.PrintDebugInfo()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
" Boilerplate {{{
|
" Boilerplate {{{
|
||||||
let &cpoptions=s:save_cpo
|
let &cpoptions=s:save_cpo
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ GEM
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
zeitwerk (~> 2.2, >= 2.2.2)
|
zeitwerk (~> 2.2, >= 2.2.2)
|
||||||
addressable (2.8.0)
|
addressable (2.7.0)
|
||||||
public_suffix (>= 2.0.2, < 5.0)
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
|
|
@ -205,14 +205,14 @@ GEM
|
||||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||||
rb-inotify (~> 0.9, >= 0.9.10)
|
rb-inotify (~> 0.9, >= 0.9.10)
|
||||||
mercenary (0.3.6)
|
mercenary (0.3.6)
|
||||||
mini_portile2 (2.5.1)
|
mini_portile2 (2.5.0)
|
||||||
minima (2.5.1)
|
minima (2.5.1)
|
||||||
jekyll (>= 3.5, < 5.0)
|
jekyll (>= 3.5, < 5.0)
|
||||||
jekyll-feed (~> 0.9)
|
jekyll-feed (~> 0.9)
|
||||||
jekyll-seo-tag (~> 2.1)
|
jekyll-seo-tag (~> 2.1)
|
||||||
minitest (5.14.4)
|
minitest (5.14.4)
|
||||||
multipart-post (2.1.1)
|
multipart-post (2.1.1)
|
||||||
nokogiri (1.11.5)
|
nokogiri (1.11.3)
|
||||||
mini_portile2 (~> 2.5.0)
|
mini_portile2 (~> 2.5.0)
|
||||||
racc (~> 1.4)
|
racc (~> 1.4)
|
||||||
octokit (4.20.0)
|
octokit (4.20.0)
|
||||||
|
|
|
||||||
|
|
@ -722,7 +722,7 @@ Vimspector then orchestrates the various tools to set you up.
|
||||||
"variables": {
|
"variables": {
|
||||||
// Just an example of how to specify a variable manually rather than
|
// Just an example of how to specify a variable manually rather than
|
||||||
// vimspector asking for input from the user
|
// vimspector asking for input from the user
|
||||||
"ServiceName": "${fileBasenameNoExtension}"
|
"ServiceName": "${fileBasenameNoExtention}"
|
||||||
},
|
},
|
||||||
|
|
||||||
"adapter": "python-remote",
|
"adapter": "python-remote",
|
||||||
|
|
|
||||||
|
|
@ -115,9 +115,6 @@ command! -bar -nargs=? -complete=custom,vimspector#CompleteOutput
|
||||||
command! -bar
|
command! -bar
|
||||||
\ VimspectorToggleLog
|
\ VimspectorToggleLog
|
||||||
\ call vimspector#ToggleLog()
|
\ call vimspector#ToggleLog()
|
||||||
command! -bar
|
|
||||||
\ VimspectorDebugInfo
|
|
||||||
\ call vimspector#PrintDebugInfo()
|
|
||||||
command! -nargs=1 -complete=custom,vimspector#CompleteExpr
|
command! -nargs=1 -complete=custom,vimspector#CompleteExpr
|
||||||
\ VimspectorEval
|
\ VimspectorEval
|
||||||
\ call vimspector#Evaluate( <f-args> )
|
\ call vimspector#Evaluate( <f-args> )
|
||||||
|
|
|
||||||
|
|
@ -1270,37 +1270,6 @@ class DebugSession( object ):
|
||||||
self._stackTraceView.LoadThreads( True )
|
self._stackTraceView.LoadThreads( True )
|
||||||
|
|
||||||
|
|
||||||
@IfConnected()
|
|
||||||
@RequiresUI()
|
|
||||||
def PrintDebugInfo( self ):
|
|
||||||
def Line():
|
|
||||||
return ( "--------------------------------------------------------------"
|
|
||||||
"------------------" )
|
|
||||||
|
|
||||||
def Pretty( obj ):
|
|
||||||
if obj is None:
|
|
||||||
return [ "None" ]
|
|
||||||
return [ Line() ] + json.dumps( obj, indent=2 ).splitlines() + [ Line() ]
|
|
||||||
|
|
||||||
|
|
||||||
debugInfo = [
|
|
||||||
"Vimspector Debug Info",
|
|
||||||
Line(),
|
|
||||||
f"ConnectionType: { self._connection_type }",
|
|
||||||
"Adapter: " ] + Pretty( self._adapter ) + [
|
|
||||||
"Configuration: " ] + Pretty( self._configuration ) + [
|
|
||||||
f"API Prefix: { self._api_prefix }",
|
|
||||||
f"Launch/Init: { self._launch_complete } / { self._init_complete }",
|
|
||||||
f"Workspace Root: { self._workspace_root }",
|
|
||||||
"Launch Config: " ] + Pretty( self._launch_config ) + [
|
|
||||||
"Server Capabilities: " ] + Pretty( self._server_capabilities ) + [
|
|
||||||
]
|
|
||||||
|
|
||||||
self._outputView.ClearCategory( 'DebugInfo' )
|
|
||||||
self._outputView.Print( "DebugInfo", debugInfo )
|
|
||||||
self.ShowOutput( "DebugInfo" )
|
|
||||||
|
|
||||||
|
|
||||||
def OnEvent_loadedSource( self, msg ):
|
def OnEvent_loadedSource( self, msg ):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,12 @@ GADGETS = {
|
||||||
root,
|
root,
|
||||||
gadget ),
|
gadget ),
|
||||||
'all': {
|
'all': {
|
||||||
'version': '1.6.0',
|
'version': '0.27.0',
|
||||||
"adapters": {
|
"adapters": {
|
||||||
"vscode-cpptools": {
|
"vscode-cpptools": {
|
||||||
"name": "cppdbg",
|
"name": "cppdbg",
|
||||||
"command": [
|
"command": [
|
||||||
"${gadgetDir}/vscode-cpptools/debugAdapters/bin/OpenDebugAD7"
|
"${gadgetDir}/vscode-cpptools/debugAdapters/OpenDebugAD7"
|
||||||
],
|
],
|
||||||
"attach": {
|
"attach": {
|
||||||
"pidProperty": "processId",
|
"pidProperty": "processId",
|
||||||
|
|
@ -53,17 +53,17 @@ GADGETS = {
|
||||||
'linux': {
|
'linux': {
|
||||||
'file_name': 'cpptools-linux.vsix',
|
'file_name': 'cpptools-linux.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'c25299bcfb46b22d41aa3f125df7184e6282a35ff9fb69c47def744cb4778f55',
|
'3695202e1e75a03de18049323b66d868165123f26151f8c974a480eaf0205435',
|
||||||
},
|
},
|
||||||
'macos': {
|
'macos': {
|
||||||
'file_name': 'cpptools-osx-arm64.vsix',
|
'file_name': 'cpptools-osx.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'ceb3e8cdaa2b5bb45af50913ddd8402089969748af8d70f5d46480408287ba6f',
|
'cb061e3acd7559a539e5586f8d3f535101c4ec4e8a48195856d1d39380b5cf3c',
|
||||||
},
|
},
|
||||||
'windows': {
|
'windows': {
|
||||||
'file_name': 'cpptools-win32.vsix',
|
'file_name': 'cpptools-win32.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'ef7ac5831874a3c7dbf0feb826bfda2be579aff9b6d990622fff1d0d4ede00d1',
|
'aa294368ed16d48c59e49c8000e146eae5a19ad07b654efed5db8ec93b24229e',
|
||||||
"adapters": {
|
"adapters": {
|
||||||
"vscode-cpptools": {
|
"vscode-cpptools": {
|
||||||
"name": "cppdbg",
|
"name": "cppdbg",
|
||||||
|
|
@ -323,10 +323,10 @@ GADGETS = {
|
||||||
'${version}/${file_name}',
|
'${version}/${file_name}',
|
||||||
},
|
},
|
||||||
'all': {
|
'all': {
|
||||||
'version': 'v1.17.0',
|
'version': 'v1.14.9',
|
||||||
'file_name': 'php-debug-1.17.0.vsix',
|
'file_name': 'php-debug.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'd0fff272503414b6696cc737bc2e18e060fdd5e5dc4bcaf38ae7373afd8d8bc9',
|
'0c5709cbbffe26b12aa63a88142195a9a045a5d8fca7fe63d62c789fe601630d',
|
||||||
},
|
},
|
||||||
'adapters': {
|
'adapters': {
|
||||||
'vscode-php-debug': {
|
'vscode-php-debug': {
|
||||||
|
|
@ -394,12 +394,12 @@ GADGETS = {
|
||||||
'${version}/${file_name}',
|
'${version}/${file_name}',
|
||||||
},
|
},
|
||||||
'all': {
|
'all': {
|
||||||
'version': 'v1.6.6',
|
'version': 'v1.6.1',
|
||||||
},
|
},
|
||||||
'macos': {
|
'macos': {
|
||||||
'file_name': 'codelldb-aarch64-darwin.vsix',
|
'file_name': 'codelldb-x86_64-darwin.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'5adc3b9139eabdafd825bd5efc55df4424a203fb2b6087b425cd434956e7ec58',
|
'b1c998e7421beea9f3ba21aa5706210bb2249eba93c99b809247ee831075262f',
|
||||||
'make_executable': [
|
'make_executable': [
|
||||||
'adapter/codelldb',
|
'adapter/codelldb',
|
||||||
'lldb/bin/debugserver',
|
'lldb/bin/debugserver',
|
||||||
|
|
@ -410,7 +410,7 @@ GADGETS = {
|
||||||
'linux': {
|
'linux': {
|
||||||
'file_name': 'codelldb-x86_64-linux.vsix',
|
'file_name': 'codelldb-x86_64-linux.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'eda2cd9b3089dcc0524c273e91ffb5875fe08c930bf643739a2cd1846e1f98d6',
|
'f2a36cb6971fd95a467cf1a7620e160914e8f11bf82929932ee0aa5afbf6ae6a',
|
||||||
'make_executable': [
|
'make_executable': [
|
||||||
'adapter/codelldb',
|
'adapter/codelldb',
|
||||||
'lldb/bin/lldb',
|
'lldb/bin/lldb',
|
||||||
|
|
@ -421,7 +421,7 @@ GADGETS = {
|
||||||
'windows': {
|
'windows': {
|
||||||
'file_name': 'codelldb-x86_64-windows.vsix',
|
'file_name': 'codelldb-x86_64-windows.vsix',
|
||||||
'checksum':
|
'checksum':
|
||||||
'8ddebe8381a3d22dc3d95139c3797fda06b5cc34aadf300e13b1c516b9da95fe',
|
'ca6a6525bf7719dc95265dc630b3cc817a8c0393b756fd242b710805ffdfb940',
|
||||||
'make_executable': []
|
'make_executable': []
|
||||||
},
|
},
|
||||||
'adapters': {
|
'adapters': {
|
||||||
|
|
|
||||||
|
|
@ -358,8 +358,7 @@ def InstallCppTools( name, root, gadget ):
|
||||||
# It's hilarious, but the execute bits aren't set in the vsix. So they
|
# It's hilarious, but the execute bits aren't set in the vsix. So they
|
||||||
# actually have javascript code which does this. It's just a horrible horrible
|
# actually have javascript code which does this. It's just a horrible horrible
|
||||||
# hack that really is not funny.
|
# hack that really is not funny.
|
||||||
MakeExecutable(
|
MakeExecutable( os.path.join( extension, 'debugAdapters', 'OpenDebugAD7' ) )
|
||||||
os.path.join( extension, 'debugAdapters', 'bin', 'OpenDebugAD7' ) )
|
|
||||||
with open( os.path.join( extension, 'package.json' ) ) as f:
|
with open( os.path.join( extension, 'package.json' ) ) as f:
|
||||||
package = json.load( f )
|
package = json.load( f )
|
||||||
runtime_dependencies = package[ 'runtimeDependencies' ]
|
runtime_dependencies = package[ 'runtimeDependencies' ]
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ class TabBuffer( object ):
|
||||||
BUFFER_MAP = {
|
BUFFER_MAP = {
|
||||||
'console': 'Console',
|
'console': 'Console',
|
||||||
'stdout': 'Console',
|
'stdout': 'Console',
|
||||||
'output': 'Console',
|
|
||||||
'stderr': 'stderr',
|
'stderr': 'stderr',
|
||||||
'telemetry': None,
|
'telemetry': None,
|
||||||
}
|
}
|
||||||
|
|
@ -65,11 +64,8 @@ class OutputView( object ):
|
||||||
self._api_prefix = api_prefix
|
self._api_prefix = api_prefix
|
||||||
VIEWS.add( self )
|
VIEWS.add( self )
|
||||||
|
|
||||||
def Print( self, category, text: typing.Union[ str, list ] ):
|
def Print( self, categroy, text ):
|
||||||
if not isinstance( text, list ):
|
self._Print( 'server', text.splitlines() )
|
||||||
text = text.splitlines()
|
|
||||||
|
|
||||||
self._Print( category, text )
|
|
||||||
|
|
||||||
def OnOutput( self, event ):
|
def OnOutput( self, event ):
|
||||||
category = CategoryToBuffer( event.get( 'category' ) or 'output' )
|
category = CategoryToBuffer( event.get( 'category' ) or 'output' )
|
||||||
|
|
@ -108,26 +104,13 @@ class OutputView( object ):
|
||||||
|
|
||||||
def Clear( self ):
|
def Clear( self ):
|
||||||
for category, tab_buffer in self._buffers.items():
|
for category, tab_buffer in self._buffers.items():
|
||||||
self._CleanUpBuffer( category, tab_buffer )
|
if tab_buffer.is_job:
|
||||||
|
utils.CleanUpCommand( category, self._api_prefix )
|
||||||
|
utils.CleanUpHiddenBuffer( tab_buffer.buf )
|
||||||
|
|
||||||
# FIXME: nunmenu the WinBar ?
|
# FIXME: nunmenu the WinBar ?
|
||||||
self._buffers = {}
|
self._buffers = {}
|
||||||
|
|
||||||
|
|
||||||
def ClearCategory( self, category: str ):
|
|
||||||
if category not in self._buffers:
|
|
||||||
return
|
|
||||||
|
|
||||||
self._CleanUpBuffer( category, self._buffers[ category ] )
|
|
||||||
|
|
||||||
|
|
||||||
def _CleanUpBuffer( self, category: str, tab_buffer: TabBuffer ):
|
|
||||||
if tab_buffer.is_job:
|
|
||||||
utils.CleanUpCommand( category, self._api_prefix )
|
|
||||||
|
|
||||||
utils.CleanUpHiddenBuffer( tab_buffer.buf )
|
|
||||||
|
|
||||||
|
|
||||||
def WindowIsValid( self ):
|
def WindowIsValid( self ):
|
||||||
return self._window.valid
|
return self._window.valid
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,7 @@ DEFAULTS = {
|
||||||
'vimspectorBP': 9,
|
'vimspectorBP': 9,
|
||||||
'vimspectorBPCond': 9,
|
'vimspectorBPCond': 9,
|
||||||
'vimspectorBPDisabled': 9,
|
'vimspectorBPDisabled': 9,
|
||||||
'vimspectorCurrentThread': 200,
|
'vimspectorCurrentThread': 200
|
||||||
'vimspectorCurrentFrame': 200,
|
|
||||||
},
|
},
|
||||||
|
|
||||||
# Installer
|
# Installer
|
||||||
|
|
|
||||||
|
|
@ -102,8 +102,7 @@ class StackTraceView( object ):
|
||||||
self._scratch_buffers = []
|
self._scratch_buffers = []
|
||||||
|
|
||||||
# FIXME: This ID is by group, so should be module scope
|
# FIXME: This ID is by group, so should be module scope
|
||||||
self._current_thread_sign_id = 0 # 1 when used
|
self._next_sign_id = 1
|
||||||
self._current_frame_sign_id = 0 # 2 when used
|
|
||||||
|
|
||||||
utils.SetUpHiddenBuffer( self._buf, 'vimspector.StackTrace' )
|
utils.SetUpHiddenBuffer( self._buf, 'vimspector.StackTrace' )
|
||||||
utils.SetUpUIWindow( win )
|
utils.SetUpUIWindow( win )
|
||||||
|
|
@ -128,7 +127,6 @@ class StackTraceView( object ):
|
||||||
':call vimspector#SetCurrentThread()<CR>' )
|
':call vimspector#SetCurrentThread()<CR>' )
|
||||||
|
|
||||||
win.options[ 'cursorline' ] = False
|
win.options[ 'cursorline' ] = False
|
||||||
win.options[ 'signcolumn' ] = 'auto'
|
|
||||||
|
|
||||||
|
|
||||||
if not signs.SignDefined( 'vimspectorCurrentThread' ):
|
if not signs.SignDefined( 'vimspectorCurrentThread' ):
|
||||||
|
|
@ -138,13 +136,6 @@ class StackTraceView( object ):
|
||||||
texthl = 'MatchParen',
|
texthl = 'MatchParen',
|
||||||
linehl = 'CursorLine' )
|
linehl = 'CursorLine' )
|
||||||
|
|
||||||
if not signs.SignDefined( 'vimspectorCurrentFrame' ):
|
|
||||||
signs.DefineSign( 'vimspectorCurrentFrame',
|
|
||||||
text = '▶ ',
|
|
||||||
double_text = '▶',
|
|
||||||
texthl = 'Special',
|
|
||||||
linehl = 'CursorLine' )
|
|
||||||
|
|
||||||
self._line_to_frame = {}
|
self._line_to_frame = {}
|
||||||
self._line_to_thread = {}
|
self._line_to_thread = {}
|
||||||
|
|
||||||
|
|
@ -166,12 +157,9 @@ class StackTraceView( object ):
|
||||||
self._sources = {}
|
self._sources = {}
|
||||||
self._requesting_threads = StackTraceView.ThreadRequestState.NO
|
self._requesting_threads = StackTraceView.ThreadRequestState.NO
|
||||||
self._pending_thread_request = None
|
self._pending_thread_request = None
|
||||||
if self._current_thread_sign_id:
|
if self._next_sign_id:
|
||||||
signs.UnplaceSign( self._current_thread_sign_id, 'VimspectorStackTrace' )
|
signs.UnplaceSign( self._next_sign_id, 'VimspectorStackTrace' )
|
||||||
self._current_thread_sign_id = 0
|
self._next_sign_id = 0
|
||||||
if self._current_frame_sign_id:
|
|
||||||
signs.UnplaceSign( self._current_frame_sign_id, 'VimspectorStackTrace' )
|
|
||||||
self._current_frame_sign_id = 0
|
|
||||||
|
|
||||||
with utils.ModifiableScratchBuffer( self._buf ):
|
with utils.ModifiableScratchBuffer( self._buf ):
|
||||||
utils.ClearBuffer( self._buf )
|
utils.ClearBuffer( self._buf )
|
||||||
|
|
@ -285,10 +273,10 @@ class StackTraceView( object ):
|
||||||
self._line_to_frame.clear()
|
self._line_to_frame.clear()
|
||||||
self._line_to_thread.clear()
|
self._line_to_thread.clear()
|
||||||
|
|
||||||
if self._current_thread_sign_id:
|
if self._next_sign_id:
|
||||||
signs.UnplaceSign( self._current_thread_sign_id, 'VimspectorStackTrace' )
|
signs.UnplaceSign( self._next_sign_id, 'VimspectorStackTrace' )
|
||||||
else:
|
else:
|
||||||
self._current_thread_sign_id = 1
|
self._next_sign_id = 1
|
||||||
|
|
||||||
with utils.ModifiableScratchBuffer( self._buf ):
|
with utils.ModifiableScratchBuffer( self._buf ):
|
||||||
with utils.RestoreCursorPosition():
|
with utils.RestoreCursorPosition():
|
||||||
|
|
@ -302,7 +290,7 @@ class StackTraceView( object ):
|
||||||
f'({thread.State()})' )
|
f'({thread.State()})' )
|
||||||
|
|
||||||
if self._current_thread == thread.id:
|
if self._current_thread == thread.id:
|
||||||
signs.PlaceSign( self._current_thread_sign_id,
|
signs.PlaceSign( self._next_sign_id,
|
||||||
'VimspectorStackTrace',
|
'VimspectorStackTrace',
|
||||||
'vimspectorCurrentThread',
|
'vimspectorCurrentThread',
|
||||||
self._buf.name,
|
self._buf.name,
|
||||||
|
|
@ -433,7 +421,6 @@ class StackTraceView( object ):
|
||||||
# Should this set the current _Thread_ too ? If i jump to a frame in
|
# Should this set the current _Thread_ too ? If i jump to a frame in
|
||||||
# Thread 2, should that become the focussed thread ?
|
# Thread 2, should that become the focussed thread ?
|
||||||
self._current_frame = frame
|
self._current_frame = frame
|
||||||
self._DrawThreads()
|
|
||||||
return self._session.SetCurrentFrame( self._current_frame, reason )
|
return self._session.SetCurrentFrame( self._current_frame, reason )
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
@ -531,11 +518,6 @@ class StackTraceView( object ):
|
||||||
if not thread.IsExpanded():
|
if not thread.IsExpanded():
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._current_frame_sign_id:
|
|
||||||
signs.UnplaceSign( self._current_frame_sign_id, 'VimspectorStackTrace' )
|
|
||||||
else:
|
|
||||||
self._current_frame_sign_id = 2
|
|
||||||
|
|
||||||
for frame in thread.stacktrace:
|
for frame in thread.stacktrace:
|
||||||
if frame.get( 'source' ):
|
if frame.get( 'source' ):
|
||||||
source = frame[ 'source' ]
|
source = frame[ 'source' ]
|
||||||
|
|
@ -560,14 +542,6 @@ class StackTraceView( object ):
|
||||||
source[ 'name' ],
|
source[ 'name' ],
|
||||||
frame[ 'line' ] ) )
|
frame[ 'line' ] ) )
|
||||||
|
|
||||||
if ( self._current_frame is not None and
|
|
||||||
self._current_frame[ 'id' ] == frame[ 'id' ] ):
|
|
||||||
signs.PlaceSign( self._current_frame_sign_id,
|
|
||||||
'VimspectorStackTrace',
|
|
||||||
'vimspectorCurrentFrame',
|
|
||||||
self._buf.name,
|
|
||||||
line )
|
|
||||||
|
|
||||||
self._line_to_frame[ line ] = ( thread, frame )
|
self._line_to_frame[ line ] = ( thread, frame )
|
||||||
|
|
||||||
def _ResolveSource( self, source, and_then ):
|
def _ResolveSource( self, source, and_then ):
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ out_fd=1
|
||||||
|
|
||||||
while [ -n "$1" ]; do
|
while [ -n "$1" ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
"--basedir"|"--base-dir"|"--test-base")
|
"--basedir")
|
||||||
shift
|
shift
|
||||||
SetBaseDir $1
|
SetBaseDir $1
|
||||||
shift
|
shift
|
||||||
|
|
@ -36,7 +36,7 @@ while [ -n "$1" ]; do
|
||||||
INSTALL=$1
|
INSTALL=$1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
"--update"|"--upgrade")
|
"--update")
|
||||||
UPDATE=1
|
UPDATE=1
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ function s:SetUpTerminal()
|
||||||
let padding = 4
|
let padding = 4
|
||||||
let cols = max( [ min( [ &columns - left_bar - code - padding, 80 ] ), 10 ] )
|
let cols = max( [ min( [ &columns - left_bar - code - padding, 80 ] ), 10 ] )
|
||||||
call win_gotoid( terminal_win )
|
call win_gotoid( terminal_win )
|
||||||
execute string(cols) . 'wincmd |'
|
execute cols . 'wincmd |'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:CustomiseWinBar()
|
function! s:CustomiseWinBar()
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
# Manually updating shipped gadgets
|
|
||||||
|
|
||||||
Download the gadget files manuall from their official source into this dir.
|
|
||||||
Run `./checksum.py <list of files>` to get the checksums.
|
|
||||||
|
|
||||||
Update ../../python3/vimspector/gadgets.py with the new version and the
|
|
||||||
checksums.
|
|
||||||
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import hashlib
|
|
||||||
import sys
|
|
||||||
|
|
||||||
|
|
||||||
def GetChecksumSHA254( file_path ):
|
|
||||||
with open( file_path, 'rb' ) as existing_file:
|
|
||||||
return hashlib.sha256( existing_file.read() ).hexdigest()
|
|
||||||
|
|
||||||
|
|
||||||
for arg in sys.argv[ 1: ]:
|
|
||||||
print( f"{ arg } = { GetChecksumSHA254( arg ) }" )
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "https://puremourning.github.io/vimspector/schema/vimspector.schema.json",
|
|
||||||
"configurations": {
|
|
||||||
"Run Current Script": {
|
|
||||||
"adapter": "vscode-bash",
|
|
||||||
"autoselect": false,
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${file}",
|
|
||||||
"cwd": "${fileDirname}",
|
|
||||||
"args": [ "*${args}" ]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -15,15 +15,6 @@
|
||||||
"program": "${workspaceRoot}/test",
|
"program": "${workspaceRoot}/test",
|
||||||
"stopAtEntry": true
|
"stopAtEntry": true
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"cpptools": {
|
|
||||||
"adapter": "vscode-cpptools",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/test",
|
|
||||||
"stopOnEntry": true,
|
|
||||||
"MIMode": "lldb"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
def Settings( **kwargs ):
|
def Settings( **kwargs ):
|
||||||
return {
|
return {
|
||||||
'flags': [ '-x', 'c++', '-Wall', '-Wextra', '-std=c++17' ]
|
'flags': [ '-x', 'c++', '-Wall', '-Wextra' ]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
"configurations": {
|
|
||||||
"run-cmd": {
|
|
||||||
"adapter": "vscode-go",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"program": "${workspaceRoot}/cmd/namestartswithvowel/main.go",
|
|
||||||
"mode": "debug",
|
|
||||||
"dlvToolPath": "$HOME/go/bin/dlv",
|
|
||||||
"dlvLoadConfig": {
|
|
||||||
"maxArrayValues": 1000,
|
|
||||||
"maxStringLen": 1000
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"test-current-file": {
|
|
||||||
"adapter": "vscode-go",
|
|
||||||
"configuration": {
|
|
||||||
"request": "launch",
|
|
||||||
"mode": "test",
|
|
||||||
"program": "${fileDirname}",
|
|
||||||
"cwd": "${fileDirname}",
|
|
||||||
"dlvToolPath": "$GOPATH/bin/dlv",
|
|
||||||
"env": {},
|
|
||||||
"args": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,33 +0,0 @@
|
||||||
# Purpose
|
|
||||||
|
|
||||||
This example comes with two example vimspector configs for the Go programming language.
|
|
||||||
|
|
||||||
1) `run-cmd` will launch the main programme under `cmd/namestartswithvowel`.
|
|
||||||
1) `test-current-file` will run the tests in the current file in debug mode.
|
|
||||||
|
|
||||||
## Example use-cases
|
|
||||||
|
|
||||||
### run-cmd
|
|
||||||
|
|
||||||
* Open `cmd/namestartswithvowel/main.go`
|
|
||||||
* Add a breakpoint somewhere within the programme
|
|
||||||
* Start the debugger (`:call vimspector#Continue()` or your relevant keymapping)
|
|
||||||
* Select the first launch configuration (`1: run-cmd`)
|
|
||||||
|
|
||||||
### test-current-file
|
|
||||||
|
|
||||||
* Open `internal/vowels/vowels_test.go`
|
|
||||||
* Add a breakpoint somewhere within the test
|
|
||||||
* Start the debugger (`:call vimspector#Continue()` or your relevant keymapping)
|
|
||||||
* Select the second launch configuration (`2: test-current-file`)
|
|
||||||
|
|
||||||
## Additional Configuration
|
|
||||||
|
|
||||||
There are two additional configuration options specified under `run-cmd`; these parameters configure the maximum string/array size to be shown while debugging.
|
|
||||||
|
|
||||||
```
|
|
||||||
"dlvLoadConfig": {
|
|
||||||
"maxArrayValues": 1000,
|
|
||||||
"maxStringLen": 1000
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"example.com/internal/vowels"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
names := []string{"Simon", "Bob", "Jennifer", "Amy", "Duke", "Elizabeth"}
|
|
||||||
|
|
||||||
for _, n := range names {
|
|
||||||
if vowels.NameStartsWithVowel(n) {
|
|
||||||
fmt.Printf("%s starts with a vowel!\n", n)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("%s does not start with a vowel!\n", n)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
module example.com
|
|
||||||
|
|
||||||
go 1.16
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
package vowels
|
|
||||||
|
|
||||||
import "strings"
|
|
||||||
|
|
||||||
func NameStartsWithVowel(name string) bool {
|
|
||||||
s := strings.Split(strings.ToLower(name), "")
|
|
||||||
|
|
||||||
return s[0] == "a" || s[0] == "e" || s[0] == "i" || s[0] == "o" || s[0] == "u"
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package vowels
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestNameStartsWithVowel(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
input string
|
|
||||||
expectedOutput bool
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
input: "Simon",
|
|
||||||
expectedOutput: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
input: "Andy",
|
|
||||||
expectedOutput: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, tt := range testCases {
|
|
||||||
t.Run(fmt.Sprintf("%s should product %t", tt.input, tt.expectedOutput), func(t *testing.T) {
|
|
||||||
out := NameStartsWithVowel(tt.input)
|
|
||||||
if out != tt.expectedOutput {
|
|
||||||
t.Errorf("%s produced %t, when %t was expected", tt.input, out, tt.expectedOutput)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
16
support/test/python/simple_django/mysite/.vimspector.json
Normal file
16
support/test/python/simple_django/mysite/.vimspector.json
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"$shema": "https://puremourning.github.com/vimspector/schema/vimspector.schema.json",
|
||||||
|
"configurations": {
|
||||||
|
"django": {
|
||||||
|
"adapter": "debugpy",
|
||||||
|
"configuration": {
|
||||||
|
"request": "launch",
|
||||||
|
"stopOnEntry": true,
|
||||||
|
"python": "${VIRTUAL_ENV}/bin/python3",
|
||||||
|
"program": "${workspaceRoot}/manage.py",
|
||||||
|
"args": [ "runserver", "localhost:5555", "--noreload" ],
|
||||||
|
"django": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
support/test/python/simple_django/mysite/db.sqlite3
Normal file
BIN
support/test/python/simple_django/mysite/db.sqlite3
Normal file
Binary file not shown.
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
5
support/test/python/simple_django/mysite/example/apps.py
Normal file
5
support/test/python/simple_django/mysite/example/apps.py
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class PollsConfig(AppConfig):
|
||||||
|
name = 'example'
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
||||||
8
support/test/python/simple_django/mysite/example/urls.py
Normal file
8
support/test/python/simple_django/mysite/example/urls.py
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path( '', views.index, name='index' )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
|
|
||||||
|
def index(request):
|
||||||
|
return HttpResponse( "Hello, world" )
|
||||||
22
support/test/python/simple_django/mysite/manage.py
Executable file
22
support/test/python/simple_django/mysite/manage.py
Executable file
|
|
@ -0,0 +1,22 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
"""Django's command-line utility for administrative tasks."""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Run administrative tasks."""
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
|
||||||
|
try:
|
||||||
|
from django.core.management import execute_from_command_line
|
||||||
|
except ImportError as exc:
|
||||||
|
raise ImportError(
|
||||||
|
"Couldn't import Django. Are you sure it's installed and "
|
||||||
|
"available on your PYTHONPATH environment variable? Did you "
|
||||||
|
"forget to activate a virtual environment?"
|
||||||
|
) from exc
|
||||||
|
execute_from_command_line(sys.argv)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
16
support/test/python/simple_django/mysite/mysite/asgi.py
Normal file
16
support/test/python/simple_django/mysite/mysite/asgi.py
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
ASGI config for mysite project.
|
||||||
|
|
||||||
|
It exposes the ASGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/howto/deployment/asgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.asgi import get_asgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
|
||||||
|
|
||||||
|
application = get_asgi_application()
|
||||||
120
support/test/python/simple_django/mysite/mysite/settings.py
Normal file
120
support/test/python/simple_django/mysite/mysite/settings.py
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
"""
|
||||||
|
Django settings for mysite project.
|
||||||
|
|
||||||
|
Generated by 'django-admin startproject' using Django 3.1.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/topics/settings/
|
||||||
|
|
||||||
|
For the full list of settings and their values, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/ref/settings/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
|
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
|
||||||
|
|
||||||
|
|
||||||
|
# Quick-start development settings - unsuitable for production
|
||||||
|
# See https://docs.djangoproject.com/en/3.1/howto/deployment/checklist/
|
||||||
|
|
||||||
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
|
SECRET_KEY = '=a+s3wu_%ofwo63u6@&5-6_xn!j4i#m**7an_=85a-q(r&&448'
|
||||||
|
|
||||||
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
|
DEBUG = True
|
||||||
|
|
||||||
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
|
|
||||||
|
# Application definition
|
||||||
|
|
||||||
|
INSTALLED_APPS = [
|
||||||
|
'django.contrib.admin',
|
||||||
|
'django.contrib.auth',
|
||||||
|
'django.contrib.contenttypes',
|
||||||
|
'django.contrib.sessions',
|
||||||
|
'django.contrib.messages',
|
||||||
|
'django.contrib.staticfiles',
|
||||||
|
]
|
||||||
|
|
||||||
|
MIDDLEWARE = [
|
||||||
|
'django.middleware.security.SecurityMiddleware',
|
||||||
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
'django.middleware.csrf.CsrfViewMiddleware',
|
||||||
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
|
]
|
||||||
|
|
||||||
|
ROOT_URLCONF = 'mysite.urls'
|
||||||
|
|
||||||
|
TEMPLATES = [
|
||||||
|
{
|
||||||
|
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||||
|
'DIRS': [],
|
||||||
|
'APP_DIRS': True,
|
||||||
|
'OPTIONS': {
|
||||||
|
'context_processors': [
|
||||||
|
'django.template.context_processors.debug',
|
||||||
|
'django.template.context_processors.request',
|
||||||
|
'django.contrib.auth.context_processors.auth',
|
||||||
|
'django.contrib.messages.context_processors.messages',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
WSGI_APPLICATION = 'mysite.wsgi.application'
|
||||||
|
|
||||||
|
|
||||||
|
# Database
|
||||||
|
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
|
||||||
|
|
||||||
|
DATABASES = {
|
||||||
|
'default': {
|
||||||
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
|
'NAME': BASE_DIR / 'db.sqlite3',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Password validation
|
||||||
|
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
|
||||||
|
|
||||||
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
# Internationalization
|
||||||
|
# https://docs.djangoproject.com/en/3.1/topics/i18n/
|
||||||
|
|
||||||
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
|
TIME_ZONE = 'UTC'
|
||||||
|
|
||||||
|
USE_I18N = True
|
||||||
|
|
||||||
|
USE_L10N = True
|
||||||
|
|
||||||
|
USE_TZ = True
|
||||||
|
|
||||||
|
|
||||||
|
# Static files (CSS, JavaScript, Images)
|
||||||
|
# https://docs.djangoproject.com/en/3.1/howto/static-files/
|
||||||
|
|
||||||
|
STATIC_URL = '/static/'
|
||||||
22
support/test/python/simple_django/mysite/mysite/urls.py
Normal file
22
support/test/python/simple_django/mysite/mysite/urls.py
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
"""mysite URL Configuration
|
||||||
|
|
||||||
|
The `urlpatterns` list routes URLs to views. For more information please see:
|
||||||
|
https://docs.djangoproject.com/en/3.1/topics/http/urls/
|
||||||
|
Examples:
|
||||||
|
Function views
|
||||||
|
1. Add an import: from my_app import views
|
||||||
|
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
||||||
|
Class-based views
|
||||||
|
1. Add an import: from other_app.views import Home
|
||||||
|
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
||||||
|
Including another URLconf
|
||||||
|
1. Import the include() function: from django.urls import include, path
|
||||||
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
|
"""
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.urls import include, path
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('polls/', include('example.urls')),
|
||||||
|
path('admin/', admin.site.urls),
|
||||||
|
]
|
||||||
16
support/test/python/simple_django/mysite/mysite/wsgi.py
Normal file
16
support/test/python/simple_django/mysite/mysite/wsgi.py
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
WSGI config for mysite project.
|
||||||
|
|
||||||
|
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||||
|
|
||||||
|
For more information on this file, see
|
||||||
|
https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
|
||||||
|
|
||||||
|
application = get_wsgi_application()
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
asgiref==3.3.4
|
||||||
|
Django==3.2
|
||||||
|
pytz==2021.1
|
||||||
|
sqlparse==0.4.1
|
||||||
|
|
@ -99,7 +99,7 @@ function! ThisTestIsFlaky()
|
||||||
let g:test_is_flaky = v:true
|
let g:test_is_flaky = v:true
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! AssertMatchList( expected, actual ) abort
|
function! AssertMatchist( expected, actual ) abort
|
||||||
let ret = assert_equal( len( a:expected ), len( a:actual ) )
|
let ret = assert_equal( len( a:expected ), len( a:actual ) )
|
||||||
let len = min( [ len( a:expected ), len( a:actual ) ] )
|
let len = min( [ len( a:expected ), len( a:actual ) ] )
|
||||||
let idx = 0
|
let idx = 0
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -45,7 +45,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -56,7 +56,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -70,7 +70,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -81,7 +81,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -95,7 +95,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -106,7 +106,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -121,7 +121,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call cursor( 1, 1 )
|
call cursor( 1, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -132,7 +132,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -146,7 +146,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
" So we break out of the loop
|
" So we break out of the loop
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( notify_l )
|
\ ' .*: .*@threads.cpp:' . string( notify_l )
|
||||||
|
|
@ -157,7 +157,7 @@ function! Test_Multiple_Threads_Continue()
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -192,7 +192,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread [0-9]\+: .* (paused)',
|
\ '- Thread [0-9]\+: .* (paused)',
|
||||||
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
\ ' .*: .*@threads.cpp:' . string( thread_l )
|
||||||
|
|
@ -205,7 +205,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -218,7 +218,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -230,7 +230,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -244,7 +244,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -257,7 +257,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -273,7 +273,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -287,7 +287,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -304,7 +304,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
|
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -319,7 +319,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, thread_n, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -338,7 +338,7 @@ function! Test_Multiple_Threads_Step()
|
||||||
" So we break out of the loop
|
" So we break out of the loop
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( s:fn, notify_l, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
\ '+ Thread [0-9]\+: .* (paused)',
|
\ '+ Thread [0-9]\+: .* (paused)',
|
||||||
|
|
@ -366,7 +366,7 @@ function! Test_UpDownStack()
|
||||||
call vimspector#LaunchWithSettings( { 'configuration': 'run' } )
|
call vimspector#LaunchWithSettings( { 'configuration': 'run' } )
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -379,25 +379,11 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
call vimspector#DownFrame()
|
call vimspector#DownFrame()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -410,26 +396,11 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#UpFrame()
|
call vimspector#UpFrame()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -442,26 +413,11 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 3,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call feedkeys( "\<Plug>VimspectorUpFrame", 'x' )
|
call feedkeys( "\<Plug>VimspectorUpFrame", 'x' )
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 23, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 23, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -474,26 +430,11 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 4,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call feedkeys( "\<Plug>VimspectorDownFrame", 'x' )
|
call feedkeys( "\<Plug>VimspectorDownFrame", 'x' )
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 8, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -506,26 +447,11 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 3,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#DownFrame()
|
call vimspector#DownFrame()
|
||||||
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
call vimspector#test#signs#AssertCursorIsAtLineInBuffer( fn, 15, 1 )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Thread 1: MainThread (paused)',
|
\ '- Thread 1: MainThread (paused)',
|
||||||
\ ' 2: DoSomething@main.py:15',
|
\ ' 2: DoSomething@main.py:15',
|
||||||
|
|
@ -538,21 +464,6 @@ function! Test_UpDownStack()
|
||||||
\ '$' )
|
\ '$' )
|
||||||
\ )
|
\ )
|
||||||
\ } )
|
\ } )
|
||||||
call win_gotoid( g:vimspector_session_windows.stack_trace )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 1,
|
|
||||||
\ 'vimspectorCurrentThread',
|
|
||||||
\ 200 ) } )
|
|
||||||
call WaitForAssert( { ->
|
|
||||||
\ vimspector#test#signs#AssertSignGroupSingletonAtLine(
|
|
||||||
\ 'VimspectorStackTrace',
|
|
||||||
\ 2,
|
|
||||||
\ 'vimspectorCurrentFrame',
|
|
||||||
\ 200 ) } )
|
|
||||||
wincmd w
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
call vimspector#ClearBreakpoints()
|
call vimspector#ClearBreakpoints()
|
||||||
|
|
|
||||||
8
tests/testdata/cpp/simple/.vimspector.json
vendored
8
tests/testdata/cpp/simple/.vimspector.json
vendored
|
|
@ -12,7 +12,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": true,
|
"stopAtEntry": true,
|
||||||
"stopOnEntry": true,
|
"stopOnEntry": true,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"stopOnEntry": false,
|
"stopOnEntry": false,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"stopOnEntry": false,
|
"stopOnEntry": false,
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}"
|
"MImode": "${VIMSPECTOR_MIMODE}"
|
||||||
},
|
},
|
||||||
"breakpoints": {
|
"breakpoints": {
|
||||||
"exception": {
|
"exception": {
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
"configuration": {
|
"configuration": {
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${workspaceRoot}/${fileBasenameNoExtension}",
|
"program": "${workspaceRoot}/${fileBasenameNoExtension}",
|
||||||
"MIMode": "${VIMSPECTOR_MIMODE}",
|
"MImode": "${VIMSPECTOR_MIMODE}",
|
||||||
"externalConsole": false,
|
"externalConsole": false,
|
||||||
"args": [
|
"args": [
|
||||||
"CALCULATED_LIST", "${CALCULATED_LIST}",
|
"CALCULATED_LIST", "${CALCULATED_LIST}",
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' *+ t (Test): {...}',
|
\ ' *+ t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -212,7 +211,7 @@ function! Test_ExpandVariables()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -220,7 +219,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -231,7 +229,7 @@ function! Test_ExpandVariables()
|
||||||
" Step - stays expanded
|
" Step - stays expanded
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' - t (Test): {...}',
|
\ ' - t (Test): {...}',
|
||||||
|
|
@ -239,7 +237,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' - c (char): 0 ''\\0\{1,3}''',
|
\ ' - c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' - fffff (float): 0',
|
\ ' - fffff (float): 0',
|
||||||
\ ' + another_test (AnotherTest):\( {...}\)\?',
|
\ ' + another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -256,7 +253,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' + t (Test): {...}',
|
\ ' + t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -271,7 +267,6 @@ function! Test_ExpandVariables()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' + t (Test): {...}',
|
\ ' + t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -283,7 +278,7 @@ function! Test_ExpandVariables()
|
||||||
call setpos( '.', [ 0, 2, 1 ] )
|
call setpos( '.', [ 0, 2, 1 ] )
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' - t (Test): {...}',
|
\ ' - t (Test): {...}',
|
||||||
|
|
@ -291,7 +286,6 @@ function! Test_ExpandVariables()
|
||||||
\ ' \*- c (char): 99 ''c''',
|
\ ' \*- c (char): 99 ''c''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -308,7 +302,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -323,7 +316,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -339,7 +331,6 @@ function! Test_ExpandVariables()
|
||||||
\ assert_equal(
|
\ assert_equal(
|
||||||
\ [
|
\ [
|
||||||
\ '+ Scope: Locals',
|
\ '+ Scope: Locals',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -387,7 +378,7 @@ function! Test_ExpandWatch()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -406,7 +397,7 @@ function! Test_ExpandWatch()
|
||||||
" Step - stays expanded
|
" Step - stays expanded
|
||||||
call vimspector#StepOver()
|
call vimspector#StepOver()
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -458,7 +449,7 @@ function! Test_ExpandWatch()
|
||||||
call setpos( '.', [ 0, 3, 1 ] )
|
call setpos( '.', [ 0, 3, 1 ] )
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -616,7 +607,7 @@ function! Test_EvaluateFailure()
|
||||||
" Add a wtch
|
" Add a wtch
|
||||||
call vimspector#AddWatch( 'test' )
|
call vimspector#AddWatch( 'test' )
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: test',
|
\ 'Expression: test',
|
||||||
|
|
@ -667,7 +658,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -699,7 +690,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -733,7 +724,7 @@ function! Test_VariableEval()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Evaluation error',
|
\ 'Evaluation error',
|
||||||
\ ],
|
\ ],
|
||||||
|
|
@ -777,7 +768,7 @@ function! Test_VariableEvalExpand()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -795,7 +786,7 @@ function! Test_VariableEvalExpand()
|
||||||
call feedkeys( "jjjj\<CR>", 'xt' )
|
call feedkeys( "jjjj\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -815,7 +806,7 @@ function! Test_VariableEvalExpand()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -855,7 +846,6 @@ function! Test_SetVariableValue_Local()
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' *+ t (Test): {...}',
|
\ ' *+ t (Test): {...}',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -873,7 +863,7 @@ function! Test_SetVariableValue_Local()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -881,7 +871,6 @@ function! Test_SetVariableValue_Local()
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -900,7 +889,7 @@ with mock.patch( 'vimspector.utils.InputSave' ):
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -908,7 +897,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -920,7 +908,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( '1234' )
|
call vimspector#SetVariableValue( '1234' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -928,7 +916,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -940,7 +927,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( 'this is invalid' )
|
call vimspector#SetVariableValue( 'this is invalid' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '- Scope: Locals',
|
\ '- Scope: Locals',
|
||||||
\ ' \*- t (Test): {...}',
|
\ ' \*- t (Test): {...}',
|
||||||
|
|
@ -948,7 +935,6 @@ EOF
|
||||||
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
\ ' \*- c (char): 0 ''\\0\{1,3}''',
|
||||||
\ ' \*- fffff (float): 0',
|
\ ' \*- fffff (float): 0',
|
||||||
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
\ ' \*+ another_test (AnotherTest):\( {...}\)\?',
|
||||||
\ '+ Scope: Registers',
|
|
||||||
\ ],
|
\ ],
|
||||||
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
\ getbufline( winbufnr( g:vimspector_session_windows.variables ),
|
||||||
\ 1,
|
\ 1,
|
||||||
|
|
@ -997,7 +983,7 @@ function! Test_SetVariableValue_Watch()
|
||||||
call feedkeys( "\<CR>", 'xt' )
|
call feedkeys( "\<CR>", 'xt' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1026,7 +1012,7 @@ EOF
|
||||||
|
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1046,7 +1032,7 @@ EOF
|
||||||
call vimspector#SetVariableValue( '1234' )
|
call vimspector#SetVariableValue( '1234' )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ 'Watches: ----',
|
\ 'Watches: ----',
|
||||||
\ 'Expression: t',
|
\ 'Expression: t',
|
||||||
|
|
@ -1089,7 +1075,7 @@ function! Test_SetVariableValue_Balloon()
|
||||||
\ } )
|
\ } )
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
@ -1116,7 +1102,7 @@ with mock.patch( 'vimspector.utils.InputSave' ):
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
call WaitForAssert( {->
|
call WaitForAssert( {->
|
||||||
\ AssertMatchList(
|
\ AssertMatchist(
|
||||||
\ [
|
\ [
|
||||||
\ '{...}',
|
\ '{...}',
|
||||||
\ ' - i: 0',
|
\ ' - i: 0',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue