Beispiel #1
0
int Runner::runCommandLine(int argc, const char *argv[]) const {
  typedef std::deque<std::string> TestNames;
  Runner subrunner;
  for (int index = 1; index < argc; ++index) {
    std::string opt = argv[index];
    if (opt == "--list-tests") {
      listTests();
      return 0;
    } else if (opt == "--test-auto") {
      preventDialogOnCrash();
    } else if (opt == "--test") {
      ++index;
      if (index < argc) {
        unsigned int testNameIndex;
        if (testIndex(argv[index], testNameIndex)) {
          subrunner.add(tests_[testNameIndex]);
        } else {
          fprintf(stderr, "Test '%s' does not exist!\n", argv[index]);
          return 2;
        }
      } else {
        printUsage(argv[0]);
        return 2;
      }
    } else {
      printUsage(argv[0]);
      return 2;
    }
  }
  bool succeeded;
  if (subrunner.testCount() > 0) {
    succeeded = subrunner.runAllTest(subrunner.testCount() > 1);
  } else {
    succeeded = runAllTest(true);
  }
  return succeeded ? 0 : 1;
}