From 28b19f4aca462181b17aaffd25d0a5edf069e31b Mon Sep 17 00:00:00 2001 From: Camila Macedo Date: Tue, 10 Sep 2024 20:23:11 +0100 Subject: [PATCH] add better coverage to pkg/machinery/marker To ensure that current code implementation is well tested and changes will not break it --- pkg/machinery/marker_test.go | 68 +++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/pkg/machinery/marker_test.go b/pkg/machinery/marker_test.go index 5daca7b96d1..5bef4c9b0e8 100644 --- a/pkg/machinery/marker_test.go +++ b/pkg/machinery/marker_test.go @@ -21,7 +21,7 @@ import ( . "github.com/onsi/gomega" ) -var _ = Describe("NerMarkerFor", func() { +var _ = Describe("NewMarkerFor", func() { DescribeTable("should create valid markers for known extensions", func(path, comment string) { Expect(NewMarkerFor(path, "").comment).To(Equal(comment)) }, Entry("for go files", "file.go", "//"), @@ -54,6 +54,65 @@ var _ = Describe("NewMarkerFor", func() { }) }) +var _ = Describe("NewMarkerForImports", func() { + Context("String", func() { + DescribeTable("should return the correct string representation for import markers", + func(marker Marker, str string) { Expect(marker.String()).To(Equal(str)) }, + Entry("for go import marker", NewMarkerFor("test.go", "import \"my/package\""), "// +kubebuilder:scaffold:import \"my/package\""), + Entry("for go import marker with alias", NewMarkerFor("test.go", "import alias \"my/package\""), "// +kubebuilder:scaffold:import alias \"my/package\""), + Entry("for multiline go import marker", NewMarkerFor("test.go", "import (\n\"my/package\"\n)"), "// +kubebuilder:scaffold:import (\n\"my/package\"\n)"), + Entry("for multiline go import marker with alias", NewMarkerFor("test.go", "import (\nalias \"my/package\"\n)"), "// +kubebuilder:scaffold:import (\nalias \"my/package\"\n)"), + ) + }) + + It("should detect import in Go file", func() { + line := "// +kubebuilder:scaffold:import \"my/package\"" + marker := NewMarkerFor("test.go", "import \"my/package\"") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) + + It("should detect import with alias in Go file", func() { + line := "// +kubebuilder:scaffold:import alias \"my/package\"" + marker := NewMarkerFor("test.go", "import alias \"my/package\"") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) + + It("should detect multiline import in Go file", func() { + line := "// +kubebuilder:scaffold:import (\n\"my/package\"\n)" + marker := NewMarkerFor("test.go", "import (\n\"my/package\"\n)") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) + + It("should detect multiline import with alias in Go file", func() { + line := "// +kubebuilder:scaffold:import (\nalias \"my/package\"\n)" + marker := NewMarkerFor("test.go", "import (\nalias \"my/package\"\n)") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) +}) + +var _ = Describe("NewMarkerForImports with different formatting", func() { + Context("String", func() { + DescribeTable("should handle variations in spacing and formatting for import markers", + func(marker Marker, str string) { Expect(marker.String()).To(Equal(str)) }, + Entry("go import marker with extra spaces", NewMarkerFor("test.go", "import \"my/package\""), "// +kubebuilder:scaffold:import \"my/package\""), + Entry("go import marker with spaces around alias", NewMarkerFor("test.go", "import alias \"my/package\""), "// +kubebuilder:scaffold:import alias \"my/package\""), + Entry("go import marker with newline", NewMarkerFor("test.go", "import \n\"my/package\""), "// +kubebuilder:scaffold:import \n\"my/package\""), + ) + }) + + It("should detect import with spaces in Go file", func() { + line := "// +kubebuilder:scaffold:import \"my/package\"" + marker := NewMarkerFor("test.go", "import \"my/package\"") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) + + It("should detect import with alias and spaces in Go file", func() { + line := "// +kubebuilder:scaffold:import alias \"my/package\"" + marker := NewMarkerFor("test.go", "import alias \"my/package\"") + Expect(marker.EqualsLine(line)).To(BeTrue()) + }) +}) + var _ = Describe("NewMarkerWithPrefixFor", func() { Context("String", func() { DescribeTable("should return the right string representation", @@ -83,3 +142,10 @@ var _ = Describe("NewMarkerWithPrefixFor", func() { ) }) }) + +var _ = Describe("NewMarkerFor with unsupported extensions", func() { + It("should panic for unsupported extensions", func() { + Expect(func() { NewMarkerFor("file.txt", "test") }).To(Panic()) + Expect(func() { NewMarkerFor("file.md", "test") }).To(Panic()) + }) +})