testthat icon indicating copy to clipboard operation
testthat copied to clipboard

Provide optional `recursive` argument to `test_dir()`

Open s-fleck opened this issue 2 years ago • 4 comments

Would it be possible to add a recursive argument to test_dir() so that it (optionally) also looks for test files in sub-directories?

Motivation: I have a workflow where I put long running tests - or tests that needs stuff like database access - in subfolders of the /test directory. This works really well as they are not automatically executed by devtools::test(), but I can still manually trigger them. I even made a package to support this worklfow (testthis).

Now if I want to run all tests in a directory and it's subdirectories at once, I have to resort to some really ugly code where i just use with_mock to override the test file discovery of testthat:

  testthat::with_mock(
    devtools::test(...),
    `testthat::find_test_scripts` = find_test_scripts_mock
  )

I'd really love to be able to remove this abomination from my package, especially since with_mock() is deprecated.

s-fleck avatar Apr 16 '22 13:04 s-fleck

I'd be happy to review a PR that implemented this.

hadley avatar Sep 19 '22 19:09 hadley

Hello @hadley , I submitted a PR #1850 that gives test_dir() the optional ability to recurse through nested test directories. Would you mind taking a look?

radbasa avatar Oct 09 '23 12:10 radbasa

@radbasa thanks! I'll take a look when I'm next working on testthat.

hadley avatar Oct 09 '23 19:10 hadley