All checks were successful
Run Test Suite / test (push) Successful in 35s
HTML isnt great, but I guess there isnt much to color, or maybe its just the styles. The next step is making the colorschemes.
102 lines
5.2 KiB
Go
102 lines
5.2 KiB
Go
package syntax
|
|
|
|
import (
|
|
"testing"
|
|
|
|
sitter "github.com/tree-sitter/go-tree-sitter"
|
|
ts_bash "github.com/tree-sitter/tree-sitter-bash/bindings/go"
|
|
ts_csharp "github.com/tree-sitter/tree-sitter-c-sharp/bindings/go"
|
|
ts_c "github.com/tree-sitter/tree-sitter-c/bindings/go"
|
|
ts_cpp "github.com/tree-sitter/tree-sitter-cpp/bindings/go"
|
|
ts_css "github.com/tree-sitter/tree-sitter-css/bindings/go"
|
|
ts_go "github.com/tree-sitter/tree-sitter-go/bindings/go"
|
|
ts_html "github.com/tree-sitter/tree-sitter-html/bindings/go"
|
|
ts_java "github.com/tree-sitter/tree-sitter-java/bindings/go"
|
|
ts_js "github.com/tree-sitter/tree-sitter-javascript/bindings/go"
|
|
ts_json "github.com/tree-sitter/tree-sitter-json/bindings/go"
|
|
ts_python "github.com/tree-sitter/tree-sitter-python/bindings/go"
|
|
ts_ruby "github.com/tree-sitter/tree-sitter-ruby/bindings/go"
|
|
ts_rust "github.com/tree-sitter/tree-sitter-rust/bindings/go"
|
|
ts_ts "github.com/tree-sitter/tree-sitter-typescript/bindings/go"
|
|
)
|
|
|
|
func TestEmbeddedQueriesLoadAndCompile(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
loadQuery func() ([]byte, error)
|
|
expectNonNil bool
|
|
}{
|
|
{name: "go", loadQuery: loadGoHighlightsQuery, expectNonNil: true},
|
|
{name: "javascript", loadQuery: loadJavaScriptHighlightsQuery, expectNonNil: true},
|
|
{name: "typescript", loadQuery: loadTypeScriptHighlightsQuery, expectNonNil: true},
|
|
{name: "tsx", loadQuery: loadTSXHighlightsQuery, expectNonNil: true},
|
|
{name: "python", loadQuery: loadPythonHighlightsQuery, expectNonNil: true},
|
|
{name: "rust", loadQuery: loadRustHighlightsQuery, expectNonNil: true},
|
|
{name: "bash", loadQuery: loadBashHighlightsQuery, expectNonNil: true},
|
|
{name: "json", loadQuery: loadJSONHighlightsQuery, expectNonNil: true},
|
|
{name: "css", loadQuery: loadCSSHighlightsQuery, expectNonNil: true},
|
|
{name: "html", loadQuery: loadHTMLHighlightsQuery, expectNonNil: true},
|
|
{name: "c", loadQuery: loadCHighlightsQuery, expectNonNil: true},
|
|
{name: "cpp", loadQuery: loadCppHighlightsQuery, expectNonNil: true},
|
|
{name: "java", loadQuery: loadJavaHighlightsQuery, expectNonNil: true},
|
|
{name: "csharp", loadQuery: loadCSharpHighlightsQuery, expectNonNil: true},
|
|
{name: "ruby", loadQuery: loadRubyHighlightsQuery, expectNonNil: true},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
b, err := tc.loadQuery()
|
|
if err != nil {
|
|
t.Fatalf("failed loading embedded query: %v", err)
|
|
}
|
|
if tc.expectNonNil && b == nil {
|
|
t.Fatalf("expected non-nil embedded query bytes")
|
|
}
|
|
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestEmbeddedQueriesCompileKnownGood(t *testing.T) {
|
|
compileTests := []struct {
|
|
name string
|
|
loadQuery func() ([]byte, error)
|
|
newLanguage func() *sitter.Language
|
|
}{
|
|
{name: "go", loadQuery: loadGoHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_go.Language()) }},
|
|
{name: "javascript", loadQuery: loadJavaScriptHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_js.Language()) }},
|
|
{name: "typescript", loadQuery: loadTypeScriptHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_ts.LanguageTypescript()) }},
|
|
{name: "tsx", loadQuery: loadTSXHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_ts.LanguageTSX()) }},
|
|
{name: "python", loadQuery: loadPythonHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_python.Language()) }},
|
|
{name: "rust", loadQuery: loadRustHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_rust.Language()) }},
|
|
{name: "bash", loadQuery: loadBashHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_bash.Language()) }},
|
|
{name: "json", loadQuery: loadJSONHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_json.Language()) }},
|
|
{name: "css", loadQuery: loadCSSHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_css.Language()) }},
|
|
{name: "html", loadQuery: loadHTMLHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_html.Language()) }},
|
|
{name: "c", loadQuery: loadCHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_c.Language()) }},
|
|
{name: "cpp", loadQuery: loadCppHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_cpp.Language()) }},
|
|
{name: "java", loadQuery: loadJavaHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_java.Language()) }},
|
|
{name: "csharp", loadQuery: loadCSharpHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_csharp.Language()) }},
|
|
{name: "ruby", loadQuery: loadRubyHighlightsQuery, newLanguage: func() *sitter.Language { return sitter.NewLanguage(ts_ruby.Language()) }},
|
|
}
|
|
|
|
for _, tc := range compileTests {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
b, err := tc.loadQuery()
|
|
if err != nil {
|
|
t.Fatalf("failed loading embedded query: %v", err)
|
|
}
|
|
lang := tc.newLanguage()
|
|
if lang == nil {
|
|
t.Fatalf("language handle is nil")
|
|
}
|
|
|
|
q, qErr := sitter.NewQuery(lang, string(b))
|
|
if qErr != nil {
|
|
t.Fatalf("embedded query failed to compile: %v", qErr)
|
|
}
|
|
q.Close()
|
|
})
|
|
}
|
|
}
|