feat: 跨平台命令助手 kopsc 初始实现
- 意图命令按 OS/架构、Linux 发行版与容器运行时解析并执行对应底层命令 - 内置 docker.clearsafe、net.ports、pkg.refreshindex - --dry-run 预览、list/explain/platform/version 辅助命令 - 纯 Go 跨平台构建脚本 scripts/build
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParseTargetsDefault(t *testing.T) {
|
||||
got, err := parseTargets("")
|
||||
if err != nil {
|
||||
t.Fatalf("parseTargets(\"\") error: %v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(got, defaultTargets) {
|
||||
t.Fatalf("got %v, want default matrix %v", got, defaultTargets)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTargetsCustom(t *testing.T) {
|
||||
got, err := parseTargets(" linux/amd64 , windows/arm64 ,linux/amd64,")
|
||||
if err != nil {
|
||||
t.Fatalf("parseTargets error: %v", err)
|
||||
}
|
||||
want := []target{{"linux", "amd64"}, {"windows", "arm64"}}
|
||||
if !reflect.DeepEqual(got, want) {
|
||||
t.Fatalf("got %v, want %v", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTargetsInvalid(t *testing.T) {
|
||||
for _, spec := range []string{"linux", "/amd64", "linux/", " , "} {
|
||||
if _, err := parseTargets(spec); err == nil {
|
||||
t.Errorf("parseTargets(%q) should fail", spec)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestArtifactName(t *testing.T) {
|
||||
cases := []struct {
|
||||
version string
|
||||
t target
|
||||
want string
|
||||
}{
|
||||
{"1.2.3", target{"linux", "amd64"}, "kopsc-1.2.3-linux-amd64"},
|
||||
{"v1.2.3-2-gabc-dirty", target{"darwin", "arm64"}, "kopsc-v1.2.3-2-gabc-dirty-darwin-arm64"},
|
||||
{"dev", target{"windows", "amd64"}, "kopsc-dev-windows-amd64.exe"},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
if got := artifactName(tc.version, tc.t); got != tc.want {
|
||||
t.Errorf("artifactName(%q, %v) = %q, want %q", tc.version, tc.t, got, tc.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRunRejectsConflictingFlags(t *testing.T) {
|
||||
err := run([]string{"-host", "-targets", "linux/amd64"})
|
||||
if err == nil || !strings.Contains(err.Error(), "cannot be used together") {
|
||||
t.Fatalf("err = %v, want conflict error", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user