Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d97443d
start pixi
bollwyvl Mar 22, 2025
f04b825
Merge remote-tracking branch 'upstream/main' into add-pixi
bollwyvl Mar 22, 2025
23f6f86
fix setup-pixi
bollwyvl Mar 22, 2025
10d5333
just replace old ci, add diff summary
bollwyvl Mar 22, 2025
3f85504
dist-hash depends on dist-pypi and dist-npm
bollwyvl Mar 22, 2025
8d5a25b
skip yarn if possible in CI
bollwyvl Mar 22, 2025
226c596
more cache
bollwyvl Mar 22, 2025
b9ad198
tighten up summary
bollwyvl Mar 22, 2025
b027768
start matrix job
bollwyvl Mar 22, 2025
07feb44
ensure uv in more envs
bollwyvl Mar 22, 2025
80bd1c2
fix pre vm, itest job name
bollwyvl Mar 22, 2025
99501d9
use a constraints file
bollwyvl Mar 22, 2025
0fc825c
work on dev tasks
bollwyvl Mar 23, 2025
6bebcc4
yaml string
bollwyvl Mar 23, 2025
0734f98
some atest timeouts
bollwyvl Mar 23, 2025
72d9f9f
rework combine with raw rebot
bollwyvl Mar 23, 2025
c3aff53
more ci atest
bollwyvl Mar 23, 2025
bfa8fa4
add rfgha
bollwyvl Mar 23, 2025
87f7163
split tests, pin robocop
bollwyvl Mar 25, 2025
27883e7
work on julia
bollwyvl Mar 26, 2025
88e9584
more julia, atest
bollwyvl Mar 26, 2025
e7aad30
add some atest skips
bollwyvl Mar 29, 2025
b758f3c
more test skips, rework firefox setup for warnings
bollwyvl Mar 29, 2025
94258e7
collapse setup-js and fix-js-dedupe
bollwyvl Mar 29, 2025
ff15e12
apply latest black/yarn.lock changes to avoid further commit confusion
bollwyvl Mar 29, 2025
72ef14b
remove husky to avoid obnoxious log warnings
bollwyvl Mar 29, 2025
9c2cb4b
win itest debug, fix atest pre invocation
bollwyvl Mar 29, 2025
eed4764
reorder ci matrix by os
bollwyvl Mar 29, 2025
9ad3e5f
de-randomize atest order, fail fast atest to get some kind of report out
bollwyvl Mar 29, 2025
7f8b860
actually ignore fail-fast ci error, slightly narrower logs
bollwyvl Mar 29, 2025
e293b04
further isolate rerun failures, log less about status
bollwyvl Mar 29, 2025
cedf07f
fail itest on warnings
bollwyvl Mar 30, 2025
47275db
cross-platform ci, fix some integrity warnings
bollwyvl Mar 30, 2025
c8d46f0
more julia setup
bollwyvl Mar 30, 2025
39c65ba
more ls-based skipping, port management
bollwyvl Mar 30, 2025
d66d73e
more windows ci itest/atest tweaks
bollwyvl Mar 30, 2025
283a72a
more win ci
bollwyvl Mar 30, 2025
a6e3ffd
use continue-on-error
bollwyvl Mar 30, 2025
404d255
pre-cache windows node_modules
bollwyvl Mar 31, 2025
0ffe4ec
restore tectonic caching
bollwyvl Apr 1, 2025
920dfe7
tag more persistent atest fails
bollwyvl Apr 2, 2025
5533ef1
more async fixture
bollwyvl Apr 2, 2025
f2da6af
relock with lab/notebook rc
bollwyvl Apr 3, 2025
ae6dbbf
more win, start testing lab 4.4 final
bollwyvl Apr 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
562 changes: 206 additions & 356 deletions .github/workflows/job.test.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ build/
dist/
lib/
*.egg-info/
python_packages/*/*-*/

# Sphinx documentation
docs/_build/
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.eggs/
.mypy_cache
.pixi/
.pytest_cache
.venv/
**/_*.d.ts
Expand Down
67 changes: 51 additions & 16 deletions atest/_resources/Keywords.resource
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,13 @@ Setup Server and Browser
... env:JUPYTER_NO_CONFIG=${EMPTY}
Set Global Variable ${SERVER} ${server}
IF ${wait_for_lsp_log}
Wait Until File Contains ${LAB LOG}
... The following Language Servers will be available
Wait Until File Contains ${LAB LOG}
... The following Language Servers will be available
... retries=120
ELSE
# Jupyter Server X.X.X is running at:
Wait Until File Contains ${LAB LOG}
... is running at:
Wait Until File Contains ${LAB LOG}
... is running at:
END
Open JupyterLab
Read Page Config
Expand Down Expand Up @@ -144,18 +145,52 @@ Wait For Splash
Execute Javascript window.onbeforeunload \= function (){}

Open JupyterLab
Set Environment Variable MOZ_HEADLESS ${HEADLESS}
${geckodriver} = Which geckodriver
Should Not Be Equal As Strings ${geckodriver} None
... geckodriver not found, do you need to install firefox-geckodriver?
${options} = Make Firefox Options
Open Browser ${URL}lab?reset&token=${TOKEN}
... browser=firefox
... executable_path=${geckodriver}
... service_log_path=${GECKODRIVER LOG}
... options=${options}
Open Firefox
Go To ${URL}lab?reset&token=${TOKEN}
Wait Until Keyword Succeeds 3x 5s Wait For Splash

Open Firefox
[Documentation] Start an instrumented firefox.
[Arguments] ${downloads}=${OUTPUT_DIR}${/}downloads
${geckodriver} = Which geckodriver
${firefox} = Which firefox
Should Not Be Empty ${geckodriver}
... geckodriver was not found: ensure it, and firefox, are installed and on $PATH
Set Environment Variable MOZ_HEADLESS ${HEADLESS}
Create Directory ${downloads}
${ff_options} = Get Firefox Options
... ${firefox}
... ui.prefersReducedMotion=${1}
... devtools.console.stdout.content=${True}
... browser.download.folderList=${2}
... browser.download.manager.showWhenStarting=${FALSE}
... browser.download.dir=${downloads}
${geckolog} = Set Variable ${OUTPUT DIR}${/}logs${/}geckodriver.log
${geckolog} = Set Variable ${geckolog.replace('\\', '/')}
${geckodriver} = Set Variable ${geckodriver.replace('\\', '/')}

Open Browser
... about:blank
... headlessfirefox
... options=${ff_options}
... service=log_output='${geckolog}'; executable_path='${geckodriver}'

Get Firefox Options
[Documentation] Initialize and configure Firefox options
[Arguments] ${firefox} &{prefs}
${ff_options} = Evaluate selenium.webdriver.firefox.options.Options()
... selenium.webdriver.firefox.options
${ff_options.binary_location} = Set Variable ${firefox}
Set Firefox Preferences ${ff_options} &{prefs}
RETURN ${ff_options}

Set Firefox Preferences
[Documentation] Set Firefox options
[Arguments] ${ff_options} &{prefs}
FOR ${pref} ${value} IN &{prefs}
Call Method ${ff_options} set_preference ${pref} ${value}
END

Close JupyterLab
Close All Browsers

Expand Down Expand Up @@ -343,8 +378,8 @@ Enter Cell Editor
Click Element css:.jp-Cell:nth-child(${cell_nr}) .cm-line:nth-child(${line})
# So it should be focused after click right? Well, not when using this driver
# in JupyterLab 4.1 - we still need to press enter apparently.
${focused} Get Element Count css:.jp-Cell:nth-child(${cell_nr}) .cm-focused
Run Keyword If ${focused} == 0 Press Keys None ENTER
${focused} = Get Element Count css:.jp-Cell:nth-child(${cell_nr}) .cm-focused
IF ${focused} == 0 Press Keys None ENTER
Wait Until Page Contains Element css:.jp-Cell:nth-child(${cell_nr}) .cm-focused
# clicking on line does not appear sufficient in CM6 (but still useful because it ensures we have it in view
Execute JavaScript
Expand Down
1 change: 1 addition & 0 deletions atest/suites/01_Editor.robot
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ Python (pyright)
... Jump to Definition=${def}

R
[Tags] ls:r-language-server
${def} = Set Variable lastToken:fib
Editor Shows Features for Language R example.R Diagnostics=Put spaces around all infix operators
... Jump to Definition=${def}
Expand Down
1 change: 1 addition & 0 deletions atest/suites/03_Notebook.robot
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ Moving Cells Around
[Teardown] Clean Up After Working With File Python.ipynb

Foreign Extractors
[Tags] gh:1111
${file} = Set Variable Foreign extractors.ipynb
Configure JupyterLab Plugin
... {"language_servers": {"texlab": {"serverSettings": {"chktex.onOpenAndSave": true}}, "bash-langauge-server": {"bashIde.enableSourceErrorDiagnostics": true}}, "pylsp": {"priority": 1000}}
Expand Down
1 change: 1 addition & 0 deletions atest/suites/04_Interface/Statusbar.robot
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Troubleshooting And Help Is Offered For Known Non-Installed Servers
[Documentation] When specification of a language server has been configured
... or provided, but the server is not installed (or detected) the user
... should get help on installation and/or troubleshooting
[Tags] gh:1111
Prepare File for Editing Python status example.klingon
Wait Until Element Contains ${STATUSBAR} Initialized (additional servers needed) timeout=60s
Click Element ${STATUSBAR}
Expand Down
12 changes: 10 additions & 2 deletions atest/suites/05_Features/Completion.robot
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,14 @@ Invalidates On Focus Loss
Enter Cell Editor 1 line=2

Uses LSP Completions When Kernel Response Times Out
[Tags] requires:busy-indicator
[Tags] requires:busy-indicator gh:1111
Configure JupyterLab Plugin {"kernelResponseTimeout": 1, "waitForBusyKernel": true}
... plugin id=${COMPLETION PLUGIN ID}
Should Complete While Kernel Is Busy

Uses LSP Completions When Kernel Is Busy
[Documentation] When kernel is not available the best thing is to show some suggestions (LSP) rather than none.
[Tags] requires:busy-indicator
[Tags] requires:busy-indicator gh:1111
Configure JupyterLab Plugin {"kernelResponseTimeout": -1, "waitForBusyKernel": false}
... plugin id=${COMPLETION PLUGIN ID}
Should Complete While Kernel Is Busy
Expand Down Expand Up @@ -141,6 +141,7 @@ Works In File Editor
[Teardown] Clean Up After Working With File completion.py

Completes In Strings Or Python Dictionaries
[Tags] gh:1111
[Setup] Prepare File for Editing Python completion completion.py
Place Cursor In File Editor At 16 0
Wait Until Fully Initialized
Expand Down Expand Up @@ -232,6 +233,7 @@ Completion Works For Tokens Separated By Space

Kernel And LSP Completions Merge Prefix Conflicts Are Resolved
[Documentation] Reconciliate Python kernel returning prefixed completions and LSP (pylsp) not-prefixed ones
[Tags] gh:1111
Configure JupyterLab Plugin {"kernelResponseTimeout": -1, "waitForBusyKernel": false}
... plugin id=${COMPLETION PLUGIN ID}
# For more details see: https://github.com/jupyter-lsp/jupyterlab-lsp/issues/30#issuecomment-576003987
Expand Down Expand Up @@ -307,6 +309,7 @@ Works With Incorrect Theme
Wait Until Page Contains Element ${COMPLETER_BOX} .jp-Completer-monogram

Completes Correctly With R Double And Triple Colon
[Tags] gh:1111 ls:r-language-server
[Setup] Prepare File for Editing R completion completion.R
Place Cursor In File Editor At 2 7
Wait Until Fully Initialized
Expand All @@ -324,6 +327,7 @@ Completes Correctly With R Double And Triple Colon
[Teardown] Clean Up After Working With File completion.R

Completes Large Namespaces
[Tags] ls:r-language-server
[Setup] Prepare File for Editing R completion completion.R
Place Cursor In File Editor At 6 7
Wait Until Fully Initialized
Expand All @@ -332,6 +336,7 @@ Completes Large Namespaces
[Teardown] Clean Up After Working With File completion.R

Shows Documentation With CompletionItem Resolve
[Tags] ls:r-language-server
[Setup] Prepare File for Editing R completion completion.R
Configure JupyterLab Plugin {"showDocumentationPanel": true} plugin id=${MANAGER PLUGIN ID}
Place Cursor In File Editor At 8 7
Expand All @@ -351,13 +356,15 @@ Shows Documentation With CompletionItem Resolve
Shows Only Relevant Suggestions In Known Magics
# https://github.com/jupyter-lsp/jupyterlab-lsp/issues/559
# h<tab>
[Tags] gh:1111
Enter Cell Editor 20 line=2
Trigger Completer
Completer Should Suggest help
Completer Should Not Suggest from
Completer Should Suggest hash

Completes In R Magics
[Tags] gh:1111 ls:r-language-server
# Proper completion in R magics needs to be tested as:
# - R magic extractor uses a tailor-made replacer function, not tested elsewhere
# - R lanugage server is very sensitive to off-by-one errors (see https://github.com/REditorSupport/languageserver/issues/395)
Expand All @@ -376,6 +383,7 @@ Completes In R Magics
Completer Should Suggest library

Completes Paths In Strings
[Tags] gh:1111
Enter Cell Editor 26
Wait For Our Completer To Initialize
Press Keys None LEFT
Expand Down
2 changes: 1 addition & 1 deletion atest/suites/05_Features/Highlights.robot
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Highlights work at the end of a token
Should Not Highlight Token gist

Highlights are changed when moving cursor between cells
[Documentation] GH431
[Tags] gh:431 gh:1111
Enter Cell Editor 1 line=2
Press Keys None END # cursor after the token in second line (`test|`)
Should Highlight Token test
Expand Down
1 change: 1 addition & 0 deletions atest/suites/05_Features/Jump.robot
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ Jumps To References From Context Menu
[Teardown] Clean Up After Working With File jump_references.py

Ctrl Click And Jumping Back Works
[Tags] gh:1111
[Setup] Prepare File for Editing Python editor jump.py
Configure JupyterLab Plugin {"modifierKey": "Accel"} plugin id=${JUMP PLUGIN ID}
Wait Until Fully Initialized
Expand Down
1 change: 1 addition & 0 deletions atest/suites/05_Features/Syntax_highlighting.robot
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Syntax Highlighting Mode Changes In Cells Dominated By Foreign Documents
should be equal ${mode} javascript

Highlighing Mode Works For Multiple Documents
[Tags] gh:1111
${mode} = Get Mode Of A Cell 4
should be equal ${mode} javascript
${mode} = Get Mode Of A Cell 6
Expand Down
6 changes: 5 additions & 1 deletion atest/suites/07_Configuration.robot
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,15 @@ Python Nested

Python Dotted
[Documentation] pyflakes is enabled by default, but flake8 is not
[Tags] gh:1111
Settings Should Change Editor Diagnostics Python style.py pylsp
... {"pylsp.plugins.flake8.enabled": true, "pylsp.plugins.pyflakes.enabled": false}
... undefined name 'foo' (pyflakes)
... undefined name 'foo' (flake8)

Python (server-side via overrides JSON)
[Documentation] same as "Python" but changing the defaults in server specification via `overrides.json`
[Tags] gh:1111
Settings Should Change Editor Diagnostics Python style.py pylsp-with-override-json
... settings=100
... before=undefined name 'foo' (pyflakes)
Expand All @@ -35,6 +37,7 @@ Python (server-side via overrides JSON)

Python (server-side via spec)
[Documentation] same as "Python" but changing the defaults in server specification via `workspace_configuration`
[Tags] gh:1111
Settings Should Change Editor Diagnostics Python style.py pylsp-with-override-spec
... settings=100
... before=undefined name 'foo' (pyflakes)
Expand All @@ -51,6 +54,7 @@ YAML

Markdown
[Documentation] different englishes spell colou?r differently
[Tags] gh:1111
Settings Should Change Editor Diagnostics
... Markdown
... example.md
Expand All @@ -61,7 +65,7 @@ Markdown

LaTeX
[Documentation] diagnostics only appear if configured
[Tags] language:latex
[Tags] language:latex gh:1111
${needs reload} = Set Variable "${OS}" == "Windows"
Settings Should Change Editor Diagnostics LaTeX example.tex texlab
... {"chktex.onOpenAndSave": true, "chktex.onEdit": true}
Expand Down
3 changes: 1 addition & 2 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
""" Documentation configuration and workflow for jupyter-starters
"""
"""Documentation configuration and workflow for jupyter-starters"""

# pylint: disable=invalid-name,redefined-builtin,import-error

Expand Down
4 changes: 0 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
"eslint-plugin-jest": "^27.1.6",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "^7.31.11",
"husky": "^3.0.9",
"lerna": "~6.5.0",
"npm-run-all": "^4.1.5",
"precise-commits": "^1.0.2",
Expand All @@ -29,9 +28,6 @@
"yaml-language-server": "^1.0.0",
"yarn-berry-deduplicate": "^6.1.1"
},
"husky": {
"hooks": {}
},
"prettier": {
"arrowParens": "avoid",
"singleQuote": true,
Expand Down
Loading
Loading