about summary refs log tree commit diff
path: root/main_test.go
diff options
context:
space:
mode:
authorTerin Stock <terinjokes@gmail.com>2018-01-13 13:23:39 -0800
committerTerin Stock <terinjokes@gmail.com>2018-01-17 13:42:24 -0800
commit8e0f32eb5421d71846700ffe4f11d2958a33f1b1 (patch)
tree33603cfe7125d0b142565b590afdfd9ea4420919 /main_test.go
parent4dabf654cdd8d1486e8c13bd99a7749fb299db63 (diff)
feat(main): support modifying built platforms v0.1.0
Bakelite now accepts a platform modification string vita the -platform
flag. This string format for adding and removing the built platforms,
including removing the default platforms entirely. It is processed left
to right.

  bakelite -platform '-windows +linux/s390x' [packages]

Would now build [packages] for all of the default platforms, except for
Windows, and also build for the linux/s390x platform.

  bakelite -platform '- +linux +darwin' [packages]

Would now build [packages] for the default platforms of only the Linux
and Darwin operating systems.

The platform modification string is parsed and turned into calls to
a structure following the builder pattern.

As the user can now modify the built platforms, Bakelite now exits with
a non-zero exit code if any of the platforms fail to build.

Change-Id: Iade51e17bbfda4e916394343a5f8cb3208f2b160
Diffstat (limited to 'main_test.go')
-rw-r--r--main_test.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/main_test.go b/main_test.go
new file mode 100644
index 0000000..4d3e91e
--- /dev/null
+++ b/main_test.go
@@ -0,0 +1,59 @@
+package main
+
+import (
+	"testing"
+
+	"github.com/google/go-cmp/cmp"
+	"github.com/google/go-cmp/cmp/cmpopts"
+)
+
+func TestParsePlatforms(t *testing.T) {
+	fields := []string{"+windows", "+plan9", "-windows/386"}
+	plb, _ := NewPlatformBuilder()
+
+	plb = parsePlatforms(plb, fields)
+
+	pl := plb.Build()
+	expected := []Platform{
+		{OS("windows"), Arch("amd64")},
+		{OS("plan9"), Arch("386")},
+		{OS("plan9"), Arch("amd64")},
+	}
+
+	if diff := cmp.Diff(expected, pl, cmpopts.SortSlices(lessPlatforms)); diff != "" {
+		t.Errorf("manifest differs. (-got +want):\n%s", diff)
+	}
+}
+
+func TestParsePlatformsRemoveOS(t *testing.T) {
+	fields := []string{"+windows", "+plan9", "-windows"}
+	plb, _ := NewPlatformBuilder()
+
+	plb = parsePlatforms(plb, fields)
+
+	pl := plb.Build()
+	expected := []Platform{
+		{OS("plan9"), Arch("386")},
+		{OS("plan9"), Arch("amd64")},
+	}
+
+	if diff := cmp.Diff(expected, pl, cmpopts.SortSlices(lessPlatforms)); diff != "" {
+		t.Errorf("manifest differs. (-got +want):\n%s", diff)
+	}
+}
+func TestParsePlatformRemoveNothing(t *testing.T) {
+	fields := []string{"+windows", "-"}
+	plb, _ := NewPlatformBuilder()
+
+	plb = parsePlatforms(plb, fields)
+
+	pl := plb.Build()
+	expected := []Platform{
+		{OS("windows"), Arch("amd64")},
+		{OS("windows"), Arch("386")},
+	}
+
+	if diff := cmp.Diff(expected, pl, cmpopts.SortSlices(lessPlatforms)); diff != "" {
+		t.Errorf("manifest differs. (-got +want):\n%s", diff)
+	}
+}