From 93ea6704dc41c2709dfc51d982f9ce1ae571d535 Mon Sep 17 00:00:00 2001 From: Adam Shannon Date: Mon, 24 Feb 2025 15:45:34 -0600 Subject: [PATCH] commands/package-web: check go1.24 ./lib/wasm/ for wasm_exec.js Co-authored-by: Jacalz --- cmd/fyne/internal/commands/package-web.go | 6 +++++- cmd/fyne/internal/commands/package_test.go | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/cmd/fyne/internal/commands/package-web.go b/cmd/fyne/internal/commands/package-web.go index 86cab4ea18..2de8c51808 100644 --- a/cmd/fyne/internal/commands/package-web.go +++ b/cmd/fyne/internal/commands/package-web.go @@ -71,7 +71,11 @@ func (w webData) packageWebInternal(appDir string, exeWasmSrc string, exeJSSrc s return err } - wasmExecSrc := filepath.Join(runtime.GOROOT(), "misc", "wasm", "wasm_exec.js") + goroot := runtime.GOROOT() + wasmExecSrc := filepath.Join(goroot, "lib", "wasm", "wasm_exec.js") + if !util.Exists(wasmExecSrc) { // Fallback for Go < 1.24: + wasmExecSrc = filepath.Join(goroot, "misc", "wasm", "wasm_exec.js") + } wasmExecDst := filepath.Join(appDir, "wasm_exec.js") err = util.CopyFile(wasmExecSrc, wasmExecDst) if err != nil { diff --git a/cmd/fyne/internal/commands/package_test.go b/cmd/fyne/internal/commands/package_test.go index a3bc944552..b796dda9cb 100644 --- a/cmd/fyne/internal/commands/package_test.go +++ b/cmd/fyne/internal/commands/package_test.go @@ -238,16 +238,27 @@ func Test_PackageWasm(t *testing.T) { return expectedEnsureSubDirRuns.verifyExpectation(t, parent, name) } + // Handle lookup for wasm_exec.js from lib folder in Go 1.24 and newer: + goroot := runtime.GOROOT() + wasmExecJSPath := filepath.Join(goroot, "lib", "wasm", "wasm_exec.js") + _, err := os.Stat(wasmExecJSPath) + execJSLibExists := err == nil || !os.IsNotExist(err) + expectedExistRuns := mockExistRuns{ expected: []mockExist{ {"myTest.wasm", false}, {"myTest.wasm", true}, + {wasmExecJSPath, execJSLibExists}, }, } utilExistsMock = func(path string) bool { return expectedExistRuns.verifyExpectation(t, path) } + if !execJSLibExists { // Expect location from Go < 1.24 to have been copied: + wasmExecJSPath = filepath.Join(goroot, "misc", "wasm", "wasm_exec.js") + } + expectedWriteFileRuns := mockWriteFileRuns{ expected: []mockWriteFile{ {filepath.Join("myTestTarget", "wasm", "index.html"), nil}, @@ -265,7 +276,7 @@ func Test_PackageWasm(t *testing.T) { expectedCopyFileRuns := mockCopyFileRuns{ expected: []mockCopyFile{ {source: "myTest.png", target: filepath.Join("myTestTarget", "wasm", "icon.png")}, - {source: filepath.Join(runtime.GOROOT(), "misc", "wasm", "wasm_exec.js"), target: filepath.Join("myTestTarget", "wasm", "wasm_exec.js")}, + {source: wasmExecJSPath, target: filepath.Join("myTestTarget", "wasm", "wasm_exec.js")}, {source: "myTest.wasm", target: filepath.Join("myTestTarget", "wasm", "myTest.wasm")}, }, } @@ -273,7 +284,7 @@ func Test_PackageWasm(t *testing.T) { return expectedCopyFileRuns.verifyExpectation(t, false, source, target) } - err := p.doPackage(wasmBuildTest) + err = p.doPackage(wasmBuildTest) assert.Nil(t, err) wasmBuildTest.verifyExpectation() expectedTotalCount(t, len(expectedEnsureSubDirRuns.expected), expectedEnsureSubDirRuns.current)