Commit Graph

15 Commits

Author SHA1 Message Date
Daniel Watkins
ff20740633 feat(pytest): populate parameterized test instances (#36)
Co-authored-by: Rónán Carrigan <rcarriga@tcd.ie>
2023-11-12 11:01:00 +00:00
Rónán Carrigan
438744e274 fix(pytest): wrap pytest types 2022-11-10 14:57:14 +00:00
Daniel Watkins
52624d1306 refactor(pytest): move remaining imports to module-level (#32)
We introduced a module-level import dependency on pytest in #29: this
makes our importing consistent.
2022-11-10 08:23:16 +00:00
Daniel Watkins
458f35723f feat(pytest): prefix diagnostic messages with parameterized test ID (#33)
Given a test like:

```py
@pytest.mark.parametrize("a,b", [("b", "c"), ("c", "d")])
def test_a(a, b):
    assert False
```

This modifies the diagnostic message from:

```
neotest: assert False
neotest: assert False
```

to:

```

neotest: [b-c] assert False
neotest: [c-d] assert False
```

This is the same internal value which `pytest` uses for parametrized
instances in its output, so it should be fully consistent.

Without this, the diagnostic messages aren't very useful for
parametrized tests: you can't identify _which_ of the multiple test
which execute the given line are failing.

Fixes: #30
2022-11-10 08:22:04 +00:00
Daniel Watkins
c85a02089d feat(pytest): use pytest_runtest_makereport for consistent exception handling (#29)
* include type of unhandled pytest exc_repr in error message

This makes triage of such issues a little simpler.

* pytest: expect the more general ExceptionRepr class

This is the (abstract) supertype of the currently-used
ExceptionChainRepr, and defines all of the attributes currently used by
the code.

(This changes results in sensible output for `ReprExceptionInfo`
instances, which is what my pytest invocations were generating.)

* pytest: use pytest_runtest_makereport for consistent exception handling

The `report` passed to `pytest_runtest_logreport` has a different
internal exception representation depending on the `--tb` option with
which `pytest` is configured: some of these representations do not
include the traceback frames to allow us to calculate line numbers.

`pytest_runtest_makereport`, however, has access to the original
`ExceptionInfo` object when an exception is raised: this commit switches
to using a `pytest_runtest_makereport` hookwrapper, so we can access the
pytest-generated report as before, but get exception handling
independent of `--tb` setting.

Fixes: #28
2022-11-08 09:23:58 +00:00
Jongwook Choi
276881193d feat(pytest): exception breakpoints when running with dap strategy (#25)
When running neotest with the DAP strategy (nvim-dap), e.g.

    require("neotest").run.run({ strategy = "dap" })

we make the pydebug debugger stop at "exception breakpoints"
where the exception is thrown out of a pytest method.

This will be very helpful for users to debug failing unit tests.
2022-11-02 09:36:05 +00:00
Rónán Carrigan
ba7069a030 fix(pytest): don't reverse namespaces
See #26
2022-10-31 14:14:52 +00:00
Jongwook Choi
2dc9c95fe9 refactor(pytest): PytestNeotestAdapter (#24)
Having `NeotestResultCollector` (a pytest plugin) as a inner local
class would make the code a bit difficult to read due to quite much
indentation. This commit does refactoring on NeotestResultCollector
to make it a module-level class with a reference to NeotestAdapter.

This refactoring would make easier adding more pytest plugins
(e.g., debugger integration) in the future.

There should be no changes in behaviors.
2022-10-29 13:23:40 +01:00
Rónán Carrigan
8aca335334 fix(pytest): use rootdir instead of rootpath
See #21
2022-10-20 08:03:18 +01:00
Rónán Carrigan
20df51e06f feat: mark deselected tests as skipped
See #13
2022-08-03 22:29:45 +01:00
Rónán Carrigan
aaf83100b6 feat: streamed results 2022-07-23 15:02:35 +01:00
Rónán Carrigan
16ed9f6079 fix(pytest): handle xfail exc repr
See #5
2022-06-09 21:15:17 +01:00
Rónán Carrigan
42d6488760 feat: cyan colour for skipped tests 2022-02-28 09:06:55 +00:00
Rónán Carrigan
a02e6d5acb feat: async build_spec 2022-02-06 21:18:33 +00:00
Rónán Carrigan
b162ba1b42 feat: init commit 2022-01-02 23:15:23 +00:00