github.com/triarius/goreleaser@v1.12.5/internal/builders/buildtarget/targets_test.go (about) 1 package buildtarget 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/triarius/goreleaser/pkg/config" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestAllBuildTargets(t *testing.T) { 12 build := config.Build{ 13 GoBinary: "go", 14 Goos: []string{ 15 "linux", 16 "darwin", 17 "freebsd", 18 "openbsd", 19 "windows", 20 "js", 21 "ios", 22 }, 23 Goarch: []string{ 24 "386", 25 "amd64", 26 "arm", 27 "arm64", 28 "wasm", 29 "mips", 30 "mips64", 31 "mipsle", 32 "mips64le", 33 "riscv64", 34 "loong64", 35 }, 36 Goarm: []string{ 37 "6", 38 "7", 39 }, 40 Gomips: []string{ 41 "hardfloat", 42 "softfloat", 43 }, 44 Goamd64: []string{ 45 "v1", 46 "v2", 47 "v3", 48 "v4", 49 }, 50 Ignore: []config.IgnoredBuild{ 51 { 52 Goos: "linux", 53 Goarch: "arm", 54 Goarm: "7", 55 }, { 56 Goos: "openbsd", 57 Goarch: "arm", 58 }, { 59 Goarch: "mips64", 60 Gomips: "hardfloat", 61 }, { 62 Goarch: "mips64le", 63 Gomips: "softfloat", 64 }, { 65 Goarch: "amd64", 66 Goamd64: "v3", 67 }, 68 }, 69 } 70 71 t.Run("go 1.18", func(t *testing.T) { 72 result, err := List(build) 73 require.NoError(t, err) 74 require.Equal(t, []string{ 75 "linux_386", 76 "linux_amd64_v1", 77 "linux_amd64_v2", 78 "linux_amd64_v4", 79 "linux_arm_6", 80 "linux_arm64", 81 "linux_mips_hardfloat", 82 "linux_mips_softfloat", 83 "linux_mips64_softfloat", 84 "linux_mipsle_hardfloat", 85 "linux_mipsle_softfloat", 86 "linux_mips64le_hardfloat", 87 "linux_riscv64", 88 "linux_loong64", 89 "darwin_amd64_v1", 90 "darwin_amd64_v2", 91 "darwin_amd64_v4", 92 "darwin_arm64", 93 "freebsd_386", 94 "freebsd_amd64_v1", 95 "freebsd_amd64_v2", 96 "freebsd_amd64_v4", 97 "freebsd_arm_6", 98 "freebsd_arm_7", 99 "freebsd_arm64", 100 "openbsd_386", 101 "openbsd_amd64_v1", 102 "openbsd_amd64_v2", 103 "openbsd_amd64_v4", 104 "openbsd_arm64", 105 "windows_386", 106 "windows_amd64_v1", 107 "windows_amd64_v2", 108 "windows_amd64_v4", 109 "windows_arm_6", 110 "windows_arm_7", 111 "windows_arm64", 112 "js_wasm", 113 "ios_arm64", 114 }, result) 115 }) 116 117 t.Run("invalid goos", func(t *testing.T) { 118 _, err := List(config.Build{ 119 Goos: []string{"invalid"}, 120 Goarch: []string{"amd64"}, 121 Goamd64: []string{"v2"}, 122 }) 123 require.EqualError(t, err, "invalid goos: invalid") 124 }) 125 126 t.Run("invalid goarch", func(t *testing.T) { 127 _, err := List(config.Build{ 128 Goos: []string{"linux"}, 129 Goarch: []string{"invalid"}, 130 }) 131 require.EqualError(t, err, "invalid goarch: invalid") 132 }) 133 134 t.Run("invalid goarm", func(t *testing.T) { 135 _, err := List(config.Build{ 136 Goos: []string{"linux"}, 137 Goarch: []string{"arm"}, 138 Goarm: []string{"invalid"}, 139 }) 140 require.EqualError(t, err, "invalid goarm: invalid") 141 }) 142 143 t.Run("invalid gomips", func(t *testing.T) { 144 _, err := List(config.Build{ 145 Goos: []string{"linux"}, 146 Goarch: []string{"mips"}, 147 Gomips: []string{"invalid"}, 148 }) 149 require.EqualError(t, err, "invalid gomips: invalid") 150 }) 151 152 t.Run("invalid goamd64", func(t *testing.T) { 153 _, err := List(config.Build{ 154 Goos: []string{"linux"}, 155 Goarch: []string{"amd64"}, 156 Goamd64: []string{"invalid"}, 157 }) 158 require.EqualError(t, err, "invalid goamd64: invalid") 159 }) 160 } 161 162 func TestGoosGoarchCombos(t *testing.T) { 163 platforms := []struct { 164 os string 165 arch string 166 valid bool 167 }{ 168 // valid targets: 169 {"aix", "ppc64", true}, 170 {"android", "386", true}, 171 {"android", "amd64", true}, 172 {"android", "arm", true}, 173 {"android", "arm64", true}, 174 {"darwin", "amd64", true}, 175 {"darwin", "arm64", true}, 176 {"dragonfly", "amd64", true}, 177 {"freebsd", "386", true}, 178 {"freebsd", "amd64", true}, 179 {"freebsd", "arm", true}, 180 {"illumos", "amd64", true}, 181 {"ios", "arm64", true}, 182 {"linux", "386", true}, 183 {"linux", "amd64", true}, 184 {"linux", "arm", true}, 185 {"linux", "arm64", true}, 186 {"linux", "mips", true}, 187 {"linux", "mipsle", true}, 188 {"linux", "mips64", true}, 189 {"linux", "mips64le", true}, 190 {"linux", "ppc64", true}, 191 {"linux", "ppc64le", true}, 192 {"linux", "s390x", true}, 193 {"linux", "riscv64", true}, 194 {"linux", "loong64", true}, 195 {"netbsd", "386", true}, 196 {"netbsd", "amd64", true}, 197 {"netbsd", "arm", true}, 198 {"openbsd", "386", true}, 199 {"openbsd", "amd64", true}, 200 {"openbsd", "arm", true}, 201 {"plan9", "386", true}, 202 {"plan9", "amd64", true}, 203 {"plan9", "arm", true}, 204 {"solaris", "amd64", true}, 205 {"windows", "386", true}, 206 {"windows", "amd64", true}, 207 {"windows", "arm", true}, 208 {"windows", "arm64", true}, 209 {"js", "wasm", true}, 210 // invalid targets 211 {"darwin", "386", false}, 212 {"darwin", "arm", false}, 213 {"windows", "riscv64", false}, 214 } 215 for _, p := range platforms { 216 t.Run(fmt.Sprintf("%v %v valid=%v", p.os, p.arch, p.valid), func(t *testing.T) { 217 require.Equal(t, p.valid, valid(target{p.os, p.arch, "", "", ""})) 218 }) 219 } 220 } 221 222 func TestList(t *testing.T) { 223 t.Run("success", func(t *testing.T) { 224 targets, err := List(config.Build{ 225 Goos: []string{"linux"}, 226 Goarch: []string{"amd64"}, 227 Goamd64: []string{"v2"}, 228 GoBinary: "go", 229 }) 230 require.NoError(t, err) 231 require.Equal(t, []string{"linux_amd64_v2"}, targets) 232 }) 233 234 t.Run("success with dir", func(t *testing.T) { 235 targets, err := List(config.Build{ 236 Goos: []string{"linux"}, 237 Goarch: []string{"amd64"}, 238 Goamd64: []string{"v2"}, 239 GoBinary: "go", 240 Dir: "./testdata", 241 }) 242 require.NoError(t, err) 243 require.Equal(t, []string{"linux_amd64_v2"}, targets) 244 }) 245 }