From ecfa6e12b8bb77e2e3d703d3ddcc767c5277bb95 Mon Sep 17 00:00:00 2001 From: Onsi Fakhouri Date: Wed, 6 Oct 2021 09:20:09 -0600 Subject: [PATCH] ginkgo unfocus now removes Focus decorations --- ginkgo/unfocus/unfocus_command.go | 21 ++++++++++++------- .../focused_fixture/focused_fixture_test.go | 4 ++++ .../internal/focused_fixture_test.go | 4 ++++ integration/integration_suite_test.go | 3 --- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/ginkgo/unfocus/unfocus_command.go b/ginkgo/unfocus/unfocus_command.go index af1f91c82..85b7f2bbc 100644 --- a/ginkgo/unfocus/unfocus_command.go +++ b/ginkgo/unfocus/unfocus_command.go @@ -125,7 +125,7 @@ func writeBackup(path string, data []byte) (string, error) { return t.Name(), nil } -func updateFile(path string, data []byte, eliminations []int64) error { +func updateFile(path string, data []byte, eliminations [][]int64) error { to, err := os.Create(path) if err != nil { return fmt.Errorf("error opening file for writing '%s': %w\n", path, err) @@ -134,14 +134,15 @@ func updateFile(path string, data []byte, eliminations []int64) error { from := bytes.NewReader(data) var cursor int64 - for _, byteToEliminate := range eliminations { - if _, err := io.CopyN(to, from, byteToEliminate-cursor); err != nil { + for _, eliminationRange := range eliminations { + positionToEliminate, lengthToEliminate := eliminationRange[0], eliminationRange[1] + if _, err := io.CopyN(to, from, positionToEliminate-cursor); err != nil { return fmt.Errorf("error copying data: %w", err) } - cursor = byteToEliminate + 1 + cursor = positionToEliminate + lengthToEliminate - if _, err := from.Seek(1, io.SeekCurrent); err != nil { + if _, err := from.Seek(lengthToEliminate, io.SeekCurrent); err != nil { return fmt.Errorf("error seeking to position in buffer: %w", err) } } @@ -153,16 +154,22 @@ func updateFile(path string, data []byte, eliminations []int64) error { return nil } -func scanForFocus(file *ast.File) (eliminations []int64) { +func scanForFocus(file *ast.File) (eliminations [][]int64) { ast.Inspect(file, func(n ast.Node) bool { if c, ok := n.(*ast.CallExpr); ok { if i, ok := c.Fun.(*ast.Ident); ok { if isFocus(i.Name) { - eliminations = append(eliminations, int64(i.Pos()-file.Pos())) + eliminations = append(eliminations, []int64{int64(i.Pos() - file.Pos()), 1}) } } } + if i, ok := n.(*ast.Ident); ok { + if i.Name == "Focus" { + eliminations = append(eliminations, []int64{int64(i.Pos() - file.Pos()), 6}) + } + } + return true }) diff --git a/integration/_fixtures/focused_fixture/focused_fixture_test.go b/integration/_fixtures/focused_fixture/focused_fixture_test.go index 86a2d35b4..9afb04b1b 100644 --- a/integration/_fixtures/focused_fixture/focused_fixture_test.go +++ b/integration/_fixtures/focused_fixture/focused_fixture_test.go @@ -27,6 +27,10 @@ var _ = Describe("FocusedFixture", func() { }) + It("focused", Focus, func() { + + }) + FSpecify("focused", func() { }) diff --git a/integration/_fixtures/focused_fixture/internal/focused_fixture_test.go b/integration/_fixtures/focused_fixture/internal/focused_fixture_test.go index 86a2d35b4..9afb04b1b 100644 --- a/integration/_fixtures/focused_fixture/internal/focused_fixture_test.go +++ b/integration/_fixtures/focused_fixture/internal/focused_fixture_test.go @@ -27,6 +27,10 @@ var _ = Describe("FocusedFixture", func() { }) + It("focused", Focus, func() { + + }) + FSpecify("focused", func() { }) diff --git a/integration/integration_suite_test.go b/integration/integration_suite_test.go index e22ea65dc..2d4de0adb 100644 --- a/integration/integration_suite_test.go +++ b/integration/integration_suite_test.go @@ -48,9 +48,6 @@ var _ = SynchronizedBeforeSuite(func() []byte { var _ = BeforeEach(func() { fm = NewFixtureManager(fmt.Sprintf("tmp_%d", GinkgoParallelNode())) - if !DEBUG { - DeferCleanup(fm.Cleanup) - } }) var _ = AfterEach(func() {