github.com/SkycoinProject/gomobile@v0.0.0-20190312151609-d3739f865fa6/cmd/gomobile/init_test.go (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package main 6 7 import ( 8 "bytes" 9 "os" 10 "path/filepath" 11 "strings" 12 "testing" 13 "text/template" 14 ) 15 16 var gopath string 17 18 func TestInit(t *testing.T) { 19 buf := new(bytes.Buffer) 20 gopathorig := os.Getenv("GOPATH") 21 defer func() { 22 xout = os.Stderr 23 buildN = false 24 buildX = false 25 os.Setenv("GOPATH", gopathorig) 26 }() 27 xout = buf 28 buildN = true 29 buildX = true 30 31 // Test that first GOPATH element is chosen correctly. 32 gopath = "/GOPATH1" 33 paths := []string{gopath, "/path2", "/path3"} 34 if goos == "windows" { 35 gopath = filepath.ToSlash(`C:\GOPATH1`) 36 paths = []string{gopath, `C:\PATH2`, `C:\PATH3`} 37 } 38 os.Setenv("GOPATH", strings.Join(paths, string(os.PathListSeparator))) 39 os.Setenv("GOROOT_BOOTSTRAP", "go1.4") 40 if goos == "windows" { 41 os.Setenv("HOMEDRIVE", "C:") 42 } 43 44 err := runInit(cmdInit) 45 if err != nil { 46 t.Log(buf.String()) 47 t.Fatal(err) 48 } 49 50 diff, err := diffOutput(buf.String(), initTmpl) 51 if err != nil { 52 t.Fatalf("computing diff failed: %v", err) 53 } 54 if diff != "" { 55 t.Errorf("unexpected output:\n%s", diff) 56 } 57 } 58 59 func diffOutput(got string, wantTmpl *template.Template) (string, error) { 60 got = filepath.ToSlash(got) 61 62 wantBuf := new(bytes.Buffer) 63 data := defaultOutputData() 64 if err := wantTmpl.Execute(wantBuf, data); err != nil { 65 return "", err 66 } 67 want := wantBuf.String() 68 if got != want { 69 return diff(got, want) 70 } 71 return "", nil 72 } 73 74 type outputData struct { 75 GOOS string 76 GOARCH string 77 GOPATH string 78 NDKARCH string 79 EXE string // .extension for executables. (ex. ".exe" for windows) 80 Xproj string 81 Xcontents string 82 Xinfo infoplistTmplData 83 } 84 85 func defaultOutputData() outputData { 86 data := outputData{ 87 GOOS: goos, 88 GOARCH: goarch, 89 GOPATH: gopath, 90 NDKARCH: archNDK(), 91 Xproj: projPbxproj, 92 Xcontents: contentsJSON, 93 Xinfo: infoplistTmplData{BundleID: "org.golang.todo.basic", Name: "Basic"}, 94 } 95 if goos == "windows" { 96 data.EXE = ".exe" 97 } 98 return data 99 } 100 101 var initTmpl = template.Must(template.New("output").Parse(`GOMOBILE={{.GOPATH}}/pkg/gomobile 102 rm -r -f "$GOMOBILE" 103 mkdir -p $GOMOBILE 104 WORK={{.GOPATH}}/pkg/gomobile/work 105 go install -x golang.org/x/mobile/cmd/gobind 106 cp $OPENAL_PATH/include/AL/al.h $GOMOBILE/include/AL/al.h 107 mkdir -p $GOMOBILE/include/AL 108 cp $OPENAL_PATH/include/AL/alc.h $GOMOBILE/include/AL/alc.h 109 mkdir -p $GOMOBILE/include/AL 110 mkdir -p $WORK/build/armeabi 111 PWD=$WORK/build/armeabi cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=armv7a-linux-androideabi16 112 PWD=$WORK/build/armeabi $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make 113 cp $WORK/build/armeabi/libopenal.so $GOMOBILE/lib/armeabi-v7a/libopenal.so 114 mkdir -p $GOMOBILE/lib/armeabi-v7a 115 mkdir -p $WORK/build/arm64 116 PWD=$WORK/build/arm64 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=aarch64-linux-android21 117 PWD=$WORK/build/arm64 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make 118 cp $WORK/build/arm64/libopenal.so $GOMOBILE/lib/arm64-v8a/libopenal.so 119 mkdir -p $GOMOBILE/lib/arm64-v8a 120 mkdir -p $WORK/build/x86 121 PWD=$WORK/build/x86 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=i686-linux-android16 122 PWD=$WORK/build/x86 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make 123 cp $WORK/build/x86/libopenal.so $GOMOBILE/lib/x86/libopenal.so 124 mkdir -p $GOMOBILE/lib/x86 125 mkdir -p $WORK/build/x86_64 126 PWD=$WORK/build/x86_64 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=x86_64-linux-android21 127 PWD=$WORK/build/x86_64 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make 128 cp $WORK/build/x86_64/libopenal.so $GOMOBILE/lib/x86_64/libopenal.so 129 mkdir -p $GOMOBILE/lib/x86_64 130 rm -r -f "$WORK" 131 `))