mirror of
https://github.com/Twigpine/zero.git
synced 2026-11-09 13:31:26 -10:00
84 lines
2.6 KiB
Go
84 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestParseBuildArgsUsesEnvAndCliOverrides(t *testing.T) {
|
|
env := func(key string) string {
|
|
values := map[string]string{
|
|
"ZERO_BUILD_GOOS": "linux",
|
|
"ZERO_BUILD_GOARCH": "arm64",
|
|
}
|
|
return values[key]
|
|
}
|
|
|
|
options, help, err := parseBuildArgs(nil, env)
|
|
if err != nil {
|
|
t.Fatalf("parseBuildArgs returned error: %v", err)
|
|
}
|
|
if help {
|
|
t.Fatal("parseBuildArgs help = true, want false")
|
|
}
|
|
if options.GOOS != "linux" || options.GOARCH != "arm64" {
|
|
t.Fatalf("env options = %#v", options)
|
|
}
|
|
|
|
options, help, err = parseBuildArgs([]string{"--goos=windows", "--goarch", "amd64", "--output", "dist/zero.exe"}, emptyEnv)
|
|
if err != nil {
|
|
t.Fatalf("parseBuildArgs CLI returned error: %v", err)
|
|
}
|
|
if help {
|
|
t.Fatal("parseBuildArgs CLI help = true, want false")
|
|
}
|
|
if options.GOOS != "windows" || options.GOARCH != "amd64" || options.Output != "dist/zero.exe" {
|
|
t.Fatalf("CLI options = %#v", options)
|
|
}
|
|
}
|
|
|
|
func TestParseBuildArgsRejectsMissingValues(t *testing.T) {
|
|
if _, _, err := parseBuildArgs([]string{"-o", "-h"}, emptyEnv); err == nil || !strings.Contains(err.Error(), "-o requires a value") {
|
|
t.Fatalf("parseBuildArgs -o error = %v", err)
|
|
}
|
|
if _, _, err := parseBuildArgs([]string{"--goarch", "-h"}, emptyEnv); err == nil || !strings.Contains(err.Error(), "--goarch requires a value") {
|
|
t.Fatalf("parseBuildArgs --goarch error = %v", err)
|
|
}
|
|
if _, _, err := parseBuildArgs([]string{"--goos="}, emptyEnv); err == nil || !strings.Contains(err.Error(), "--goos requires a value") {
|
|
t.Fatalf("parseBuildArgs --goos= error = %v", err)
|
|
}
|
|
}
|
|
|
|
func TestParseSmokeArgsAcceptsPathAlias(t *testing.T) {
|
|
options, help, err := parseSmokeArgs([]string{"--binary=dist/zero", "--goos", "linux", "--version", "0.1.0"})
|
|
if err != nil {
|
|
t.Fatalf("parseSmokeArgs returned error: %v", err)
|
|
}
|
|
if help {
|
|
t.Fatal("parseSmokeArgs help = true, want false")
|
|
}
|
|
if options.BinaryPath != "dist/zero" || options.GOOS != "linux" || options.Version != "0.1.0" {
|
|
t.Fatalf("smoke options = %#v", options)
|
|
}
|
|
}
|
|
|
|
func TestBuildHelpIncludesEnvironmentOverrides(t *testing.T) {
|
|
var stdout bytes.Buffer
|
|
var stderr bytes.Buffer
|
|
code := run([]string{"build", "--help"}, &stdout, &stderr)
|
|
if code != 0 {
|
|
t.Fatalf("run build --help code = %d stderr = %q", code, stderr.String())
|
|
}
|
|
output := stdout.String()
|
|
for _, want := range []string{"zero-release build", "--goos", "--goarch", "ZERO_BUILD_GOOS"} {
|
|
if !strings.Contains(output, want) {
|
|
t.Fatalf("build help missing %q: %s", want, output)
|
|
}
|
|
}
|
|
}
|
|
|
|
func emptyEnv(string) string {
|
|
return ""
|
|
}
|