From 8e0f32eb5421d71846700ffe4f11d2958a33f1b1 Mon Sep 17 00:00:00 2001 From: Terin Stock Date: Sat, 13 Jan 2018 13:23:39 -0800 Subject: feat(main): support modifying built platforms 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 --- main_test.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 main_test.go (limited to 'main_test.go') 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) + } +} -- cgit 1.4.1