singleRun = async (
  mocha,
  {exit, passOnFailingTestSuite},
  fileCollectParams
) => {
  const fileCollectionObj = collectFiles(fileCollectParams);

  if (fileCollectionObj.unmatchedFiles.length > 0) {
    return handleUnmatchedFiles(mocha, fileCollectionObj.unmatchedFiles);
  }

  debug('single run with %d file(s)', fileCollectionObj.files.length);
  mocha.files = fileCollectionObj.files;

  // handles ESM modules
  await mocha.loadFilesAsync();
  return mocha.run(
    createExitHandler({exit, passOnFailingTestSuite})
  );
}
Collect and load test files, then run mocha instance.
@param {Mocha} mocha - Mocha instance
@param {Options} [opts] - Command line options
@param {boolean} [opts.exit] - Whether or not to force-exit after tests are complete
@param {boolean} [opts.passOnFailingTestSuite] - Whether or not to fail test run if tests were failed
@param {Object} fileCollectParams - Parameters that control test
  file collection. See `lib/cli/collect-files.js`.
@returns {Promise<Runner>}
@private