--focus-file should work with failing test location
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
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.
I was hoping there is some internal "list of locations" and we could walk that backwards until we find the first "location"
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.
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
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.
Good luck, thx! :D