mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-04 09:39:56 +08:00

* Add some clarifying comments * Remove special handling of window parameters * Improve internal method exclusion * Add test for internal method exclusion * Remove useless blank field from app options This is a leftover from an older version of the static analyser. It should have been removed long ago. * Remove redundant godebug setting gotypesalias=1 is the default starting with go1.23 * Use new range for syntax to simplify code * Remove generator dependency on github.com/samber/lo * Ensure generator testing tasks do not use the test cache * Rename cyclic types test * Test for cyclic imports * Fix import cycle between model files * Sort class aliases after their aliased class * Test class aliases * Fix length of default value for array types * Test array initialization * Add changelog * Update changelog * Fix contrived marking technique in model sorting algorithm * Update binding example * Update test data --------- Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
117 lines
2.2 KiB
Go
117 lines
2.2 KiB
Go
package generator
|
|
|
|
import (
|
|
"encoding/json"
|
|
"errors"
|
|
"go/types"
|
|
"os"
|
|
"path"
|
|
"path/filepath"
|
|
"slices"
|
|
"testing"
|
|
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/pterm/pterm"
|
|
"github.com/wailsapp/wails/v3/internal/generator/config"
|
|
)
|
|
|
|
func TestAnalyser(t *testing.T) {
|
|
type testParams struct {
|
|
name string
|
|
want []string
|
|
}
|
|
|
|
// Gather tests from cases directory.
|
|
entries, err := os.ReadDir("testcases")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
tests := make([]testParams, 0, len(entries)+1)
|
|
|
|
for _, entry := range entries {
|
|
if !entry.IsDir() {
|
|
continue
|
|
}
|
|
|
|
test := testParams{
|
|
name: entry.Name(),
|
|
want: make([]string, 0),
|
|
}
|
|
|
|
want, err := os.Open(filepath.Join("testcases", entry.Name(), "bound_types.json"))
|
|
if err != nil {
|
|
if !errors.Is(err, os.ErrNotExist) {
|
|
t.Fatal(err)
|
|
}
|
|
} else {
|
|
err = json.NewDecoder(want).Decode(&test.want)
|
|
want.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
for i := range test.want {
|
|
test.want[i] = path.Clean("github.com/wailsapp/wails/v3/internal/generator/testcases/" + test.name + test.want[i])
|
|
}
|
|
slices.Sort(test.want)
|
|
|
|
tests = append(tests, test)
|
|
}
|
|
|
|
// Add global test.
|
|
{
|
|
all := testParams{
|
|
name: "...",
|
|
}
|
|
|
|
for _, test := range tests {
|
|
all.want = append(all.want, test.want...)
|
|
}
|
|
slices.Sort(all.want)
|
|
|
|
tests = append(tests, all)
|
|
}
|
|
|
|
// Resolve system package paths.
|
|
systemPaths, err := ResolveSystemPaths(nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for _, test := range tests {
|
|
pkgPattern := "github.com/wailsapp/wails/v3/internal/generator/testcases/" + test.name
|
|
|
|
t.Run("pkg="+test.name, func(t *testing.T) {
|
|
pkgs, err := LoadPackages(nil, pkgPattern)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for _, pkg := range pkgs {
|
|
for _, err := range pkg.Errors {
|
|
pterm.Warning.Println(err)
|
|
}
|
|
}
|
|
|
|
got := make([]string, 0)
|
|
|
|
services, err := FindServices(pkgs, systemPaths, config.DefaultPtermLogger(nil))
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
for obj := range services {
|
|
got = append(got, types.TypeString(obj.Type(), nil))
|
|
}
|
|
|
|
slices.Sort(got)
|
|
|
|
if diff := cmp.Diff(test.want, got); diff != "" {
|
|
t.Errorf("Found services mismatch (-want +got):\n%s", diff)
|
|
}
|
|
})
|
|
}
|
|
}
|