Files
testium_assist/README.md
François d05595dc74 Add VERSION file as the single source for the extension version
Mirrors testium's src/VERSION: scripts/sync-version.js copies VERSION into
package.json#version (enforcing strict semver X.Y.Z, required by the marketplace
/ Open VSX). Wired into 'npm run package' and vscode:prepublish, so the version
is always synced before a build/publish. Bump = edit VERSION.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 14:44:59 +02:00

106 lines
3.5 KiB
Markdown

# Testium Assist
Language support for [testium](https://git.beafrancois.fr/v-and-v/testium) `.tum`
test scripts: syntax highlighting, completion, hover, and (later)
diagnostics.
Works the same on **VSCode** and **VSCodium** — the extension uses
only the standard VSCode API and `vscode-languageclient`, no
Microsoft-proprietary surface.
## How it works
The extension is a thin LSP client that spawns the language server
shipped with testium itself (`testium lsp`). All the language
intelligence (item types, parameter completion, schema awareness)
lives in the testium repo — every new item type or parameter you add
upstream becomes available in the editor on the next testium upgrade,
without re-publishing this extension.
Two static parts live here, because they need to run *before* the LSP
has a chance to start:
- **Syntax highlighting** — a TextMate grammar under `syntaxes/`
delegates to the base YAML grammar and adds tokens for testium's
`$(name)`, `<| python expr |>`, and Jinja `{% … %}` / `{{ … }}`
constructs.
- **Editor configuration** — comment character, bracket pairs,
auto-close pairs for `$( )`, `<| |>`, `{% %}`, `{{ }}`.
## Requirements
- VSCode ≥ 1.80 (or any recent VSCodium build).
- A working `testium` installation with the `lsp` extra:
```sh
pip install 'testium[lsp]'
```
Or, when developing testium from source:
```sh
pip install -e /path/to/testium/src[lsp]
```
## Settings
| Setting | Default | Description |
|---|---|---|
| `testium.serverPath` | `testium` | Path to the `testium` executable. Set this to your venv's `bin/testium` if `testium` isn't on `$PATH`. |
| `testium.trace.server` | `off` | LSP trace level surfaced in the **Testium LSP** output channel. |
## Development
```sh
npm install
npm run compile # one-shot build
npm run watch # rebuild on save
```
Press **F5** in VSCode to launch a development host with the extension
loaded. Open any `.tum` file; the **Testium LSP** output channel shows
the language-server traffic when `testium.trace.server` is set to
`messages` or `verbose`.
## Versioning
The extension version lives in the `VERSION` file (single source of truth, like
testium's `src/VERSION`). It must be strict semver `X.Y.Z` — the marketplace and
Open VSX reject `X.Y`. `npm run sync-version` (run automatically by
`npm run package` and `vscode:prepublish`) copies it into `package.json`. To
release, bump `VERSION` and package.
## Packaging
```sh
npm run package # sync VERSION -> package.json, then vsce package
# or, when already in sync:
npx vsce package # produces testium-assist-<v>.vsix
```
To install locally without publishing:
- **Code/Codium UI** — `Extensions: Install from VSIX…` from the
command palette, pick the `.vsix`.
- **CLI** — `code --install-extension testium-assist-<v>.vsix` (or
`codium --install-extension …`).
## Publishing
The extension targets two registries:
- **VS Marketplace** (used by VSCode) — `npx vsce publish`. Requires a
Microsoft publisher account.
- **Open VSX** (used by VSCodium, Cursor, Gitpod, Theia, Eclipse Che) —
`npx ovsx publish`. Free and open.
Both consume the same `.vsix` artifact. A GitHub Actions workflow that
runs both on tag push is the typical setup.
## Status
This is the MVP: completion of test item type names at the start of a
new step. Hover, parameter completion, outline and diagnostics will
follow as the testium LSP server gains those features — no extension
re-publish needed.
## License
EUPL-1.2 — same as testium.