Skip to content

Commit 2d7554e

Browse files
authored
Merge pull request #3327 from Bluebugs/features/windows-gopherjs
Features/windows gopherjs
2 parents 423d71f + 72fd0b5 commit 2d7554e

File tree

5 files changed

+95
-55
lines changed

5 files changed

+95
-55
lines changed

cmd/fyne/internal/commands/build.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package commands
22

33
import (
44
"encoding/json"
5+
"errors"
56
"fmt"
67
"os"
78
"path/filepath"
@@ -173,6 +174,10 @@ func (b *Builder) build() error {
173174
goos = targetOS()
174175
}
175176

177+
if goos == "gopherjs" && runtime.GOOS == "windows" {
178+
return errors.New("gopherjs doesn't support Windows. Only wasm target is supported for the web output. You can also use fyne-cross to solve this")
179+
}
180+
176181
fyneGoModRunner := b.runner
177182
if b.runner == nil {
178183
fyneGoModRunner = newCommand("go")

cmd/fyne/internal/commands/build_test.go

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package commands
22

33
import (
44
"fmt"
5+
"runtime"
56
"testing"
67

78
"github.com/mcuadros/go-version"
@@ -164,39 +165,47 @@ func Test_BuildWasmReleaseVersion(t *testing.T) {
164165
}
165166

166167
func Test_BuildGopherJSReleaseVersion(t *testing.T) {
167-
expected := []mockRunner{
168-
{
169-
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
170-
mockReturn: mockReturn{
171-
ret: []byte("{ \"Module\": { \"Path\": \"fyne.io/fyne/v2\"} }"),
172-
},
173-
},
174-
{
175-
expectedValue: expectedValue{
176-
args: []string{"version"},
177-
osEnv: true,
178-
},
179-
mockReturn: mockReturn{
180-
ret: []byte(""),
181-
err: nil,
168+
expected := []mockRunner{}
169+
170+
if runtime.GOOS != "windows" {
171+
expected = []mockRunner{
172+
{
173+
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
174+
mockReturn: mockReturn{
175+
ret: []byte("{ \"Module\": { \"Path\": \"fyne.io/fyne/v2\"} }"),
176+
},
182177
},
183-
},
184-
{
185-
expectedValue: expectedValue{
186-
args: []string{"build", "--tags", "release"},
187-
osEnv: true,
188-
dir: "myTest",
178+
{
179+
expectedValue: expectedValue{
180+
args: []string{"version"},
181+
osEnv: true,
182+
},
183+
mockReturn: mockReturn{
184+
ret: []byte(""),
185+
err: nil,
186+
},
189187
},
190-
mockReturn: mockReturn{
191-
ret: []byte(""),
188+
{
189+
expectedValue: expectedValue{
190+
args: []string{"build", "--tags", "release"},
191+
osEnv: true,
192+
dir: "myTest",
193+
},
194+
mockReturn: mockReturn{
195+
ret: []byte(""),
196+
},
192197
},
193-
},
198+
}
194199
}
195200

196201
gopherJSBuildTest := &testCommandRuns{runs: expected, t: t}
197202
b := &Builder{appData: &appData{}, os: "gopherjs", srcdir: "myTest", release: true, runner: gopherJSBuildTest}
198203
err := b.build()
199-
assert.Nil(t, err)
204+
if runtime.GOOS == "windows" {
205+
assert.NotNil(t, err)
206+
} else {
207+
assert.Nil(t, err)
208+
}
200209
gopherJSBuildTest.verifyExpectation()
201210
}
202211

cmd/fyne/internal/commands/package.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"log"
1212
"os"
1313
"path/filepath"
14+
"runtime"
1415
"strconv"
1516
"strings"
1617

@@ -47,7 +48,7 @@ func Package() *cli.Command {
4748
&cli.StringFlag{
4849
Name: "target",
4950
Aliases: []string{"os"},
50-
Usage: "The mobile platform to target (android, android/arm, android/arm64, android/amd64, android/386, ios, iossimulator).",
51+
Usage: "The mobile platform to target (android, android/arm, android/arm64, android/amd64, android/386, ios, iossimulator, wasm, gopherjs, web).",
5152
Destination: &p.os,
5253
},
5354
&cli.StringFlag{
@@ -229,6 +230,10 @@ func (p *Packager) buildPackage(runner runner) ([]string, error) {
229230
return nil, err
230231
}
231232

233+
if runtime.GOOS == "windows" {
234+
return []string{bWasm.target}, nil
235+
}
236+
232237
bGopherJS := &Builder{
233238
os: "gopherjs",
234239
srcdir: p.srcDir,

cmd/fyne/internal/commands/package_test.go

Lines changed: 43 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,9 @@ func Test_PackageWasm(t *testing.T) {
234234
}
235235

236236
func Test_buildPackageGopherJS(t *testing.T) {
237+
if runtime.GOOS == "windows" {
238+
t.Skip()
239+
}
237240
expected := []mockRunner{
238241
{
239242
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
@@ -292,6 +295,9 @@ func Test_buildPackageGopherJS(t *testing.T) {
292295
}
293296

294297
func Test_PackageGopherJS(t *testing.T) {
298+
if runtime.GOOS == "windows" {
299+
t.Skip()
300+
}
295301
expected := []mockRunner{
296302
{
297303
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
@@ -471,7 +477,11 @@ func Test_BuildPackageWeb(t *testing.T) {
471477
files, err := p.buildPackage(webBuildTest)
472478
assert.Nil(t, err)
473479
assert.NotNil(t, files)
474-
assert.Equal(t, 2, len(files))
480+
expectedFiles := 2
481+
if runtime.GOOS == "windows" {
482+
expectedFiles = 1
483+
}
484+
assert.Equal(t, expectedFiles, len(files))
475485
}
476486

477487
func Test_PackageWeb(t *testing.T) {
@@ -499,33 +509,38 @@ func Test_PackageWeb(t *testing.T) {
499509
ret: []byte(""),
500510
},
501511
},
502-
{
503-
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
504-
mockReturn: mockReturn{
505-
ret: []byte("{ \"Module\": { \"Path\": \"fyne.io/fyne/v2\"} }"),
506-
},
507-
},
508-
{
509-
expectedValue: expectedValue{
510-
args: []string{"version"},
511-
osEnv: true,
512-
},
513-
mockReturn: mockReturn{
514-
ret: []byte(""),
515-
err: nil,
516-
},
517-
},
518-
{
519-
expectedValue: expectedValue{
520-
args: []string{"build",
521-
"-o", "myTest.js"},
522-
osEnv: true,
523-
dir: "myTest",
524-
},
525-
mockReturn: mockReturn{
526-
ret: []byte(""),
527-
},
528-
},
512+
}
513+
514+
if runtime.GOOS != "windows" {
515+
expected = append(expected, []mockRunner{
516+
{
517+
expectedValue: expectedValue{args: []string{"mod", "edit", "-json"}},
518+
mockReturn: mockReturn{
519+
ret: []byte("{ \"Module\": { \"Path\": \"fyne.io/fyne/v2\"} }"),
520+
},
521+
},
522+
{
523+
expectedValue: expectedValue{
524+
args: []string{"version"},
525+
osEnv: true,
526+
},
527+
mockReturn: mockReturn{
528+
ret: []byte(""),
529+
err: nil,
530+
},
531+
},
532+
{
533+
expectedValue: expectedValue{
534+
args: []string{"build",
535+
"-o", "myTest.js"},
536+
osEnv: true,
537+
dir: "myTest",
538+
},
539+
mockReturn: mockReturn{
540+
ret: []byte(""),
541+
},
542+
},
543+
}...)
529544
}
530545

531546
p := &Packager{

cmd/fyne/internal/commands/serve.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"fmt"
66
"net/http"
7+
"runtime"
78
"strconv"
89

910
"github.com/urfave/cli/v2"
@@ -20,6 +21,11 @@ type Server struct {
2021
func Serve() *cli.Command {
2122
s := &Server{appData: &appData{}}
2223

24+
target := "web"
25+
if runtime.GOOS == "windows" {
26+
target = "wasm"
27+
}
28+
2329
return &cli.Command{
2430
Name: "serve",
2531
Usage: "Package an application using WebAssembly and expose it via a web server.",
@@ -46,7 +52,7 @@ func Serve() *cli.Command {
4652
Name: "target",
4753
Aliases: []string{"os"},
4854
Usage: "The web runtime to target (wasm, gopherjs, web).",
49-
Value: "web",
55+
Value: target,
5056
Destination: &s.os,
5157
},
5258
},

0 commit comments

Comments
 (0)