ginkgo icon indicating copy to clipboard operation
ginkgo copied to clipboard

--focus-file should work with failing test location

Open grosser opened this issue 1 year ago • 6 comments

test:

# foo_test.go
1: It("foo", func(){
2:  Fail("bar")
3: })

the test output will show foo_test.go:2 as causing the failure, and it would be nice if

ginkgo --focus-file foo_test.go:2

but it does not, only foo_test.go:1 works since that is where the It is I have not looked into how hard it would be, but ideally any line number would execute the test above it so for example if there is an It at 1 and 4 then running with --focus-file line 1,2,3 should focus 1

grosser avatar May 09 '24 10:05 grosser

hey @grosser I agree that this would be much nicer. I think it's a bit tricky to do as it would entail parsing the AST tree to find the It (or innermost Describe/Context) that contains the line in question.

onsi avatar May 21 '24 16:05 onsi

I was hoping there is some internal "list of locations" and we could walk that backwards until we find the first "location"

grosser avatar May 21 '24 17:05 grosser

there is a data structure that contains all the ginkgo nodes and their locations. but there are edge cases:

Describe(“foo”, func() { //L1
It(“bar”, func() { //L2
  …
})

It(“baz”, func() { //L3
 …
})
})

the data structure has L1, L2, and L3 associated with he describe and the two Its. what should run if the user picks the line at L3-1? it’s in the describe, not either of the two its, so both its should run. but there’s no way to be sure since there can be arbitrary amounts of white space in between the two its.

perhaps it would be better to not worry about such edge cases and simply pick the closest node less than or equal to the provided line number and run that. that would be fairly simply to implement and might get us 90% of the way there.

onsi avatar May 21 '24 17:05 onsi

L3-1 should be L3, since the logic is "something failed in this IT, so run this IT" it should not be "the closest node" since an error above an IT can never be from that it, so logic is find next node to the top

grosser avatar May 21 '24 18:05 grosser

I think we’re on the same page - just miscommunications on the coordinate system. i can work on this, it shouldn’t be a difficult change.

onsi avatar May 21 '24 19:05 onsi

Good luck, thx! :D

grosser avatar May 21 '24 19:05 grosser