Adding upstream version 0.0~git20250520.a1d9079+dfsg.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
590ac7ff5f
commit
20149b7f3a
456 changed files with 70406 additions and 0 deletions
203
cmd/gomobile/init_test.go
Normal file
203
cmd/gomobile/init_test.go
Normal file
|
@ -0,0 +1,203 @@
|
|||
// Copyright 2015 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
var gopath string
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
if runtime.GOOS == "android" || runtime.GOOS == "ios" {
|
||||
t.Skipf("not available on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
if _, err := exec.LookPath("diff"); err != nil {
|
||||
t.Skip("command diff not found, skipping")
|
||||
}
|
||||
buf := new(bytes.Buffer)
|
||||
gopathorig := os.Getenv("GOPATH")
|
||||
defer func() {
|
||||
xout = os.Stderr
|
||||
buildN = false
|
||||
buildX = false
|
||||
os.Setenv("GOPATH", gopathorig)
|
||||
}()
|
||||
xout = buf
|
||||
buildN = true
|
||||
buildX = true
|
||||
|
||||
// Test that first GOPATH element is chosen correctly.
|
||||
var err error
|
||||
gopath, err = os.MkdirTemp("", "gomobile-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
paths := []string{gopath, "/path2", "/path3"}
|
||||
if goos == "windows" {
|
||||
gopath = filepath.ToSlash(`C:\GOPATH1`)
|
||||
paths = []string{gopath, `C:\PATH2`, `C:\PATH3`}
|
||||
}
|
||||
os.Setenv("GOPATH", strings.Join(paths, string(os.PathListSeparator)))
|
||||
os.Setenv("GOROOT_BOOTSTRAP", "go1.4")
|
||||
if goos == "windows" {
|
||||
os.Setenv("HOMEDRIVE", "C:")
|
||||
}
|
||||
|
||||
emptymod, err := os.MkdirTemp("", "gomobile-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(emptymod)
|
||||
|
||||
// Create go.mod, but without Go files.
|
||||
f, err := os.Create(filepath.Join(emptymod, "go.mod"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer f.Close()
|
||||
if _, err := f.WriteString("module example.com/m\n"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := f.Sync(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
dirs := []struct {
|
||||
dir string
|
||||
name string
|
||||
}{
|
||||
{
|
||||
dir: ".",
|
||||
name: "current",
|
||||
},
|
||||
{
|
||||
dir: emptymod,
|
||||
name: "emptymod",
|
||||
},
|
||||
}
|
||||
for _, dir := range dirs {
|
||||
dir := dir
|
||||
t.Run(dir.name, func(t *testing.T) {
|
||||
wd, err := os.Getwd()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.Chdir(dir.dir); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.Chdir(wd)
|
||||
|
||||
if err := runInit(cmdInit); err != nil {
|
||||
t.Log(buf.String())
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if dir.name == "emptymod" {
|
||||
return
|
||||
}
|
||||
|
||||
diff, err := diffOutput(buf.String(), initTmpl)
|
||||
if err != nil {
|
||||
t.Fatalf("computing diff failed: %v", err)
|
||||
}
|
||||
if diff != "" {
|
||||
t.Errorf("unexpected output:\n%s", diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func diffOutput(got string, wantTmpl *template.Template) (string, error) {
|
||||
got = filepath.ToSlash(got)
|
||||
|
||||
wantBuf := new(bytes.Buffer)
|
||||
data, err := defaultOutputData("")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := wantTmpl.Execute(wantBuf, data); err != nil {
|
||||
return "", err
|
||||
}
|
||||
want := wantBuf.String()
|
||||
if got != want {
|
||||
return diff(got, want)
|
||||
}
|
||||
return "", nil
|
||||
}
|
||||
|
||||
type outputData struct {
|
||||
GOOS string
|
||||
GOARCH string
|
||||
GOPATH string
|
||||
NDKARCH string
|
||||
EXE string // .extension for executables. (ex. ".exe" for windows)
|
||||
Xproj string
|
||||
Xcontents string
|
||||
Xinfo infoplistTmplData
|
||||
}
|
||||
|
||||
func defaultOutputData(teamID string) (outputData, error) {
|
||||
projPbxproj := new(bytes.Buffer)
|
||||
if err := projPbxprojTmpl.Execute(projPbxproj, projPbxprojTmplData{
|
||||
TeamID: teamID,
|
||||
}); err != nil {
|
||||
return outputData{}, err
|
||||
}
|
||||
|
||||
data := outputData{
|
||||
GOOS: goos,
|
||||
GOARCH: goarch,
|
||||
GOPATH: gopath,
|
||||
NDKARCH: archNDK(),
|
||||
Xproj: projPbxproj.String(),
|
||||
Xcontents: contentsJSON,
|
||||
Xinfo: infoplistTmplData{BundleID: "org.golang.todo.basic", Name: "Basic"},
|
||||
}
|
||||
if goos == "windows" {
|
||||
data.EXE = ".exe"
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
var initTmpl = template.Must(template.New("output").Parse(`GOMOBILE={{.GOPATH}}/pkg/gomobile
|
||||
rm -r -f "$GOMOBILE"
|
||||
mkdir -p $GOMOBILE
|
||||
WORK={{.GOPATH}}/pkg/gomobile/work
|
||||
GOMODCACHE={{.GOPATH}}/pkg/mod go install -x golang.org/x/mobile/cmd/gobind@latest
|
||||
cp $OPENAL_PATH/include/AL/al.h $GOMOBILE/include/AL/al.h
|
||||
mkdir -p $GOMOBILE/include/AL
|
||||
cp $OPENAL_PATH/include/AL/alc.h $GOMOBILE/include/AL/alc.h
|
||||
mkdir -p $GOMOBILE/include/AL
|
||||
mkdir -p $WORK/build/armeabi
|
||||
PWD=$WORK/build/armeabi cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=armv7a-linux-androideabi16
|
||||
PWD=$WORK/build/armeabi $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make
|
||||
cp $WORK/build/armeabi/libopenal.so $GOMOBILE/lib/armeabi-v7a/libopenal.so
|
||||
mkdir -p $GOMOBILE/lib/armeabi-v7a
|
||||
mkdir -p $WORK/build/arm64
|
||||
PWD=$WORK/build/arm64 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=aarch64-linux-android21
|
||||
PWD=$WORK/build/arm64 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make
|
||||
cp $WORK/build/arm64/libopenal.so $GOMOBILE/lib/arm64-v8a/libopenal.so
|
||||
mkdir -p $GOMOBILE/lib/arm64-v8a
|
||||
mkdir -p $WORK/build/x86
|
||||
PWD=$WORK/build/x86 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=i686-linux-android16
|
||||
PWD=$WORK/build/x86 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make
|
||||
cp $WORK/build/x86/libopenal.so $GOMOBILE/lib/x86/libopenal.so
|
||||
mkdir -p $GOMOBILE/lib/x86
|
||||
mkdir -p $WORK/build/x86_64
|
||||
PWD=$WORK/build/x86_64 cmake $OPENAL_PATH -DCMAKE_TOOLCHAIN_FILE=$OPENAL_PATH/XCompile-Android.txt -DHOST=x86_64-linux-android21
|
||||
PWD=$WORK/build/x86_64 $NDK_PATH/prebuilt/{{.NDKARCH}}/bin/make
|
||||
cp $WORK/build/x86_64/libopenal.so $GOMOBILE/lib/x86_64/libopenal.so
|
||||
mkdir -p $GOMOBILE/lib/x86_64
|
||||
rm -r -f "$WORK"
|
||||
`))
|
Loading…
Add table
Add a link
Reference in a new issue