mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
4af75901b5
Add two test files that auto-discover and validate every single-file
extension in examples/extensions/:
- all_extensions_load_test.go: Verifies all 32 extensions load into the
Yaegi interpreter without errors (syntax, imports, Init signature).
- all_extensions_sanity_test.go: Six generalized sanity checks:
- Lifecycle: SessionStart → SessionShutdown round-trip
- CommandSanity: non-empty names/descriptions, no spaces/leading slash,
non-nil Execute, no duplicates
- ToolSanity: non-empty names/descriptions, at least one executor,
valid JSON parameters, no duplicates
- ZeroValueEvents: all 22 event types fired as zero-value structs
- WidgetSanity: non-empty IDs, consistent keys, valid placements
- IdempotentLifecycle: repeated SessionStart/SessionShutdown
Shared extensionFiles() helper auto-discovers extensions so new files
are automatically covered.
28 lines
706 B
Go
28 lines
706 B
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mark3labs/kit/pkg/extensions/test"
|
|
)
|
|
|
|
// TestAllExtensions_Load is a smoke test that verifies every single-file
|
|
// example extension in this directory can be loaded by the Yaegi interpreter
|
|
// without errors. This catches syntax errors, missing symbols, bad imports,
|
|
// and Init signature mismatches.
|
|
func TestAllExtensions_Load(t *testing.T) {
|
|
files := extensionFiles(t)
|
|
|
|
for _, file := range files {
|
|
t.Run(file, func(t *testing.T) {
|
|
harness := test.New(t)
|
|
ext := harness.LoadFile(file)
|
|
if ext == nil {
|
|
t.Fatalf("%s: extension should not be nil after loading", file)
|
|
}
|
|
})
|
|
}
|
|
|
|
t.Logf("successfully loaded %d extensions", len(files))
|
|
}
|