{"id":45474756,"url":"https://github.com/nchaugen/tabletest-vscode","last_synced_at":"2026-04-06T12:01:58.011Z","repository":{"id":339929477,"uuid":"1163878298","full_name":"nchaugen/tabletest-vscode","owner":"nchaugen","description":"Extension for VS Code providing formatting and syntax highlighting for TableTest tables in Java and Kotlin.","archived":false,"fork":false,"pushed_at":"2026-04-06T10:23:57.000Z","size":710,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-06T11:29:53.664Z","etag":null,"topics":["bdd","java","junit","kotlin","tabletest","tdd","testing","vscode-extension"],"latest_commit_sha":null,"homepage":"https://tabletest.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nchaugen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-22T09:46:47.000Z","updated_at":"2026-04-06T10:23:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nchaugen/tabletest-vscode","commit_stats":null,"previous_names":["nchaugen/tabletest-vscode"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/nchaugen/tabletest-vscode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nchaugen%2Ftabletest-vscode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nchaugen%2Ftabletest-vscode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nchaugen%2Ftabletest-vscode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nchaugen%2Ftabletest-vscode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nchaugen","download_url":"https://codeload.github.com/nchaugen/tabletest-vscode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nchaugen%2Ftabletest-vscode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31471469,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T08:36:52.050Z","status":"ssl_error","status_checked_at":"2026-04-06T08:36:51.267Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bdd","java","junit","kotlin","tabletest","tdd","testing","vscode-extension"],"created_at":"2026-02-22T14:50:02.178Z","updated_at":"2026-04-06T12:01:58.004Z","avatar_url":"https://github.com/nchaugen.png","language":"TypeScript","readme":"# TableTest (VS Code)\n\nIDE support for TableTest tables used in JUnit data-driven tests.\n\nWebsite and docs: [tabletest.org](https://tabletest.org)\n\nWorks in both desktop VS Code and VS Code for the Web (`vscode.dev`, `github.dev`, and compatible browser-hosted environments).\n\n## What is TableTest?\n\nTableTest is a JUnit extension for writing data-driven tests as readable tables instead of repetitive test methods.\n\n- Each column represents an input parameter or expected output\n- Each row represents a test case\n\nThis style keeps test data clear, maintainable, and easy to extend.\n\n## Features\n\n- Rich syntax highlighting for TableTest tables:\n  - Header cells, including distinct styling for expected-value columns ending with `?`\n  - `//` table comments\n  - Map keys (quoted or unquoted)\n  - Nested list/set/map structures\n- Table auto-formatting with aligned `|` columns\n- Cell value normalisation for lists/sets/maps\n- Support for Java, Kotlin, and standalone `.table` files\n- Warnings for invalid table cell syntax, including:\n  - unquoted map keys that need quoting (for example `[key with spaces: value]`)\n  - trailing-comma empty elements (for example `[a, b,]`)\n  - map entries without values (for example `[key:]`)\n  - map values with extra top-level colons (for example `[a: b:c:d]`)\n- Automatic language injection for `@TableTest` in Java and Kotlin, plus fully-qualified Java `@org.tabletest.junit.TableTest(...)`\n\n## Supported contexts\n\n| Context | Highlighting | Formatting |\n| --- | --- | --- |\n| `.table` file | ✅ `source.tabletest` grammar | ✅ Standard `Format Document` / `Format Selection` |\n| Java / Kotlin `@TableTest(...)` triple-quoted string | ✅ Injection grammar (`source.java` / `source.kotlin`) | ✅ `TableTest: Format All Tables in Document` |\n| Java `@TableTest({ ... })` string-array table | ✅ Java injection grammar | ✅ `TableTest: Format All Tables in Document` |\n\nFormatting in Java/Kotlin is intentionally exposed as a command so normal Java/Kotlin formatter entry points are not overridden.\n\n## VS Code for the Web\n\nThe extension also runs as a web extension in browser-hosted VS Code.\n\n- `.table` language features work in the browser host.\n- Java and Kotlin support still depends on the corresponding language support being available in that environment.\n- `tabletest.format.extraIndentLevel` works as normal in the browser host.\n- Browser-hosted VS Code does not read Java formatter XML from `java.format.settings.url`; when `tabletest.format.extraIndentLevel` is not explicitly configured, Java falls back to the built-in TableTest default indentation.\n\n## Installation\n\nFrom VS Code:\n1. Open Extensions (`Ctrl+Shift+X` / `Cmd+Shift+X`)\n2. Search for `TableTest`\n3. Install the extension published by `tabletest`\n\nDirect links:\n- VS Code Marketplace: [TableTest for VS Code](https://marketplace.visualstudio.com/items?itemName=tabletest.tabletest)\n- Companion IntelliJ plugin: [TableTest on JetBrains Marketplace](https://plugins.jetbrains.com/plugin/27334-tabletest)\n\nCommand line:\n\n```bash\ncode --install-extension tabletest.tabletest\n```\n\nFrom local package (`.vsix`):\n1. Open Extensions view\n2. `...` menu -\u003e `Install from VSIX...`\n3. Select your `.vsix` file\n\n## Getting started\n\n1. Add TableTest dependency to your project alongside JUnit.\n\nMaven:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.tabletest\u003c/groupId\u003e\n  \u003cartifactId\u003etabletest-junit\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.0\u003c/version\u003e\n  \u003cscope\u003etest\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n\nGradle:\n\n```groovy\ntestImplementation \"org.tabletest:tabletest-junit:1.0.0\"\n```\n\n2. Create a test using `@TableTest` and write test data as a table in the annotation.\n3. Format your tables with `TableTest: Format All Tables in Document` from Command Palette.\n4. Use standard VS Code shortcut to comment/uncomment lines: `Ctrl+/` (Windows/Linux) or `Cmd+/` (macOS).\n5. Use standard VS Code shortcut to move lines up/down: `Alt+Up/Down` (Windows/Linux) or `Option+Up/Down` (macOS).\n\n## Table syntax\n\nCell values can be:\n- Empty\n- Unquoted text\n- Single-quoted or double-quoted strings\n- Line comments: `// comment`\n- Lists: `[a, b, c]`\n- Sets: `{a, b, c}`\n- Maps: `[k: v, \"x\": y, 'z': w]`\n- Nested combinations of the above\n\n## Example\n\nBefore:\n\n```text\na|b\n[1,2]|[k:v]\n```\n\nAfter:\n\n```text\na      | b\n[1, 2] | [k: v]\n```\n\n## Java/Kotlin usage\n\nUse Command Palette:\n- `TableTest: Format All Tables in Document`\n\nTypical annotation forms:\n- `@TableTest(\"\"\"...\"\"\")`\n- `@TableTest(value = \"\"\"...\"\"\")`\n- `@org.tabletest.junit.TableTest(\"\"\"...\"\"\")` (Java)\n- `@TableTest({ \"header|value\", \"row|value\" })` (Java)\n- `@TableTest(value = { \"header|value\", \"row|value\" })` (Java)\n\n## Configuration\n\n- `tabletest.format.extraIndentLevel` (user-configurable; by default Kotlin behaves as `0`, while Java follows formatter continuation indentation)\n  - Adds extra indentation levels to formatted rows inside Java/Kotlin `@TableTest` triple-quoted strings and Java string-array tables.\n  - For Java, when this setting is not explicitly configured, TableTest reads `java.format.settings.url` profile values (`continuation_indentation_for_array_initializer` / `continuation_indentation`) and falls back to `2` levels if unavailable.\n  - In browser-hosted VS Code, `java.format.settings.url` is not read; Java falls back to `2` levels unless this TableTest setting is explicitly configured.\n  - Indent width follows VS Code formatting options (`tabSize` / `insertSpaces`) and respects EditorConfig-applied indentation.\n\n## Limitations\n\n- Annotation extraction in Java/Kotlin uses a lightweight scanner, not a full parser.\n- `value` is extracted only from a direct supported literal:\n  - triple-quoted literal (`\"\"\"...\"\"\"`), or\n  - Java static string-array literal (`{\"...\", \"...\"}`).\n- For implicit Java string-array formatting, the formatter normalises boundaries to `@TableTest({` ... `})`.\n- Implicit extraction is only used when there is exactly one positional argument and no named arguments.\n- Diagnostics currently focus on syntax problems inside recognisable table cells, including malformed list/set/map values and unquoted map keys that require quoting.\n\n## Contributing\n\nDeveloper documentation and release workflow are in `CONTRIBUTING.md`.\n\nCommon local test commands:\n- Fast unit suite: `npm test` or `npm run test:unit`\n- Strict VS Code integration suite: `npm run test:integration:strict`\n- Browser-hosted web integration smoke suite: `npm run test:integration:web`\n- Full local suite matching CI gates: `npm run test:full`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnchaugen%2Ftabletest-vscode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnchaugen%2Ftabletest-vscode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnchaugen%2Ftabletest-vscode/lists"}