This commit is contained in:
parent
aae75197e9
commit
b802d878f3
5 changed files with 55 additions and 31 deletions
|
@ -20,8 +20,8 @@ func TestExecutable(t *testing.T) {
|
|||
for _, arch := range archList {
|
||||
t.Run(fmt.Sprintf("%s-%s", os, arch), func(t *testing.T) {
|
||||
for _, file := range fileList {
|
||||
global.HostOS = os
|
||||
global.HostArch = arch
|
||||
global.OS = os
|
||||
global.Arch = arch
|
||||
b := build.New(file)
|
||||
exe := filepath.Base(b.Executable())
|
||||
|
||||
|
@ -35,6 +35,6 @@ func TestExecutable(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
global.HostOS = runtime.GOOS
|
||||
global.HostArch = runtime.GOARCH
|
||||
global.OS = runtime.GOOS
|
||||
global.Arch = runtime.GOARCH
|
||||
}
|
|
@ -10,14 +10,14 @@ func New(files ...string) *Build {
|
|||
Files: files,
|
||||
}
|
||||
|
||||
switch global.HostArch {
|
||||
switch global.Arch {
|
||||
case "amd64":
|
||||
b.Arch = X86
|
||||
case "arm64":
|
||||
b.Arch = ARM
|
||||
}
|
||||
|
||||
switch global.HostOS {
|
||||
switch global.OS {
|
||||
case "linux":
|
||||
b.OS = Linux
|
||||
case "darwin":
|
||||
|
|
27
src/global/findLibrary.go
Normal file
27
src/global/findLibrary.go
Normal file
|
@ -0,0 +1,27 @@
|
|||
package global
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// findLibrary tries to go up each directory from the working directory and check for the existence of a "lib" directory.
|
||||
// This is needed for tests to work correctly.
|
||||
func findLibrary() {
|
||||
dir := WorkingDirectory
|
||||
|
||||
for {
|
||||
Library = filepath.Join(dir, "lib")
|
||||
stat, err := os.Stat(Library)
|
||||
|
||||
if err == nil && stat.IsDir() {
|
||||
return
|
||||
}
|
||||
|
||||
if dir == "/" {
|
||||
panic("standard library not found")
|
||||
}
|
||||
|
||||
dir = filepath.Dir(dir)
|
||||
}
|
||||
}
|
|
@ -9,20 +9,20 @@ import (
|
|||
|
||||
// Global variables that are useful in all packages.
|
||||
var (
|
||||
Arch string
|
||||
Executable string
|
||||
Library string
|
||||
OS string
|
||||
Root string
|
||||
WorkingDirectory string
|
||||
HostOS string
|
||||
HostArch string
|
||||
)
|
||||
|
||||
// init is the very first thing that's executed.
|
||||
// It disables the GC and initializes global variables.
|
||||
func init() {
|
||||
debug.SetGCPercent(-1)
|
||||
HostOS = runtime.GOOS
|
||||
HostArch = runtime.GOARCH
|
||||
OS = runtime.GOOS
|
||||
Arch = runtime.GOARCH
|
||||
|
||||
var err error
|
||||
Executable, err = os.Executable()
|
||||
|
@ -50,25 +50,4 @@ func init() {
|
|||
if err != nil || !stat.IsDir() {
|
||||
findLibrary()
|
||||
}
|
||||
}
|
||||
|
||||
// findLibrary tries to go up each directory from the working directory and check for the existence of a "lib" directory.
|
||||
// This is needed for tests to work correctly.
|
||||
func findLibrary() {
|
||||
dir := WorkingDirectory
|
||||
|
||||
for {
|
||||
Library = filepath.Join(dir, "lib")
|
||||
stat, err := os.Stat(Library)
|
||||
|
||||
if err == nil && stat.IsDir() {
|
||||
return
|
||||
}
|
||||
|
||||
if dir == "/" {
|
||||
panic("standard library not found")
|
||||
}
|
||||
|
||||
dir = filepath.Dir(dir)
|
||||
}
|
||||
}
|
18
src/global/init_test.go
Normal file
18
src/global/init_test.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
package global_test
|
||||
|
||||
import (
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
"git.urbach.dev/cli/q/src/global"
|
||||
"git.urbach.dev/go/assert"
|
||||
)
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
assert.Equal(t, global.Arch, runtime.GOARCH)
|
||||
assert.True(t, len(global.Executable) > 0)
|
||||
assert.True(t, len(global.Library) > 0)
|
||||
assert.Equal(t, global.OS, runtime.GOOS)
|
||||
assert.True(t, len(global.Root) > 0)
|
||||
assert.True(t, len(global.WorkingDirectory) > 0)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue