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

Feat - Add Support for Nested Subtests #74

Open
sekerez opened this issue Feb 7, 2024 · 0 comments
Open

Feat - Add Support for Nested Subtests #74

sekerez opened this issue Feb 7, 2024 · 0 comments

Comments

@sekerez
Copy link

sekerez commented Feb 7, 2024

Summary

As far as I can tell, neotest-go currently lacks support to run individual nested subtests. Specificallly, it will fail to initiate the right sub-subtest when running the nearest test. I'm working on a PR to add support.

Root cause

The utils.get_prefix, which derives the test to pass to go test -run, assumes that subtests only go one level deep. I fixed that for now, but the results still aren't parsed correctly - I'll publish my PR once I fix that.

Reproduction steps

Create a test file as such:

package main

import (
	"testing"

	"github.com/test-go/testify/require"
)

func TestHello(t *testing.T) {
	t.Run("World", func(t *testing.T) {
		require.Equal(t, "Hello, World!", hello("World"))
	})
	t.Run("Afterlife", func(t *testing.T) {
		t.Run("Heaven", func(t *testing.T) {
			require.Equal(t, "Hello, Heaven!", hello("Heaven"))
		})
		t.Run("Hell", func(t *testing.T) {
			require.Equal(t, "Hello, Hell!", hello("Hell"))
		})
	})
}
  1. Hover over t.Run("World", ... and run require("neotest").run.run(), observe that the test runs correctly.
  2. Hover over t.Run("Heaven", .., and run require("neotest").run.run(), observe that the test is skipped.
folke pushed a commit to LazyVim/LazyVim that referenced this issue Jun 23, 2024
## What is this PR for?

This PR switches
[nvim-neotest/neotest-go](https://github.com/nvim-neotest/neotest-go)
for
[fredrikaverpil/neotest-golang](https://github.com/fredrikaverpil/neotest-golang).

## Does this PR fix an existing issue?

Neotest-go comes with some problems which are mitigated in
neotest-golang. A full description/background is available in the
project README, but here are some highlights:

### Neotest-go issues mitigated in neotest-golang

- Test Output in JSON, making it difficult to read:
[neotest-go#52](nvim-neotest/neotest-go#52)
- "Run nearest" runs all tests:
[neotest-go#83](nvim-neotest/neotest-go#83)
- Running test suite doesn't work:
[neotest-go#89](nvim-neotest/neotest-go#89)
- Diagnostics for table tests on the line of failure:
[neotest-go#75](nvim-neotest/neotest-go#75)
- Support for Nested Subtests:
[neotest-go#74](nvim-neotest/neotest-go#74)
- DAP support:
[neotest-go#12](nvim-neotest/neotest-go#12)

### Features

- Supports all [Neotest
usage](https://github.com/nvim-neotest/neotest#usage).
- Integrates with [nvim-dap-go](https://github.com/leoluz/nvim-dap-go)
for debugging of tests using delve.
- Inline diagnostics.
- Works great with
[andythigpen/nvim-coverage](https://github.com/andythigpen/nvim-coverage)
for displaying coverage in the sign column (per-Go package, or per-test
basis).
- Monorepo support (detect, run and debug tests in sub-projects).
- Supports table tests (relies on treesitter AST detection).
- Supports nested test functions.

## Notes

- I'm the author of
[fredrikaverpil/neotest-golang](https://github.com/fredrikaverpil/neotest-golang).


## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.
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

1 participant