Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

--focus-file should work with failing test location #1413

Open
grosser opened this issue May 9, 2024 · 6 comments
Open

--focus-file should work with failing test location #1413

grosser opened this issue May 9, 2024 · 6 comments

Comments

@grosser
Copy link
Contributor

grosser commented May 9, 2024

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

@onsi
Copy link
Owner

onsi commented May 21, 2024

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.

@grosser
Copy link
Contributor Author

grosser commented May 21, 2024

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

@onsi
Copy link
Owner

onsi commented May 21, 2024

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.

@grosser
Copy link
Contributor Author

grosser commented May 21, 2024

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

@onsi
Copy link
Owner

onsi commented May 21, 2024

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.

@grosser
Copy link
Contributor Author

grosser commented May 21, 2024

Good luck, thx! :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants