Esempio n. 1
0
int main(int argc, char **argv)
{
    ArgumentSet args;
    ArgumentMap kwargs;

    process_args(argc, argv, args, kwargs);
    
    if(kwargs.count("help"))
    {
        usage(argc, argv);
        return 0;
    }

    if(kwargs.count("list"))
    {
        UnitTestDriver::s_driver().list_tests();
        return 0;
    }
    
    if(kwargs.count("sizes"))
    {
        set_test_sizes(kwargs["sizes"]);
    }
    else
    {
        set_test_sizes("default");
    }

    bool passed = UnitTestDriver::s_driver().run_tests(args, kwargs);

    if (kwargs.count("concise"))
        std::cout << ((passed) ? "PASSED" : "FAILED") << std::endl;
   
    return (passed) ? EXIT_SUCCESS : EXIT_FAILURE;
}
Esempio n. 2
0
int main(int argc, char *argv[])
{
   QCoreApplication app(argc, argv);

   QString title = "This is a ctags wrapper. Does not require sooo many options.\nVersion: ";
   title.append(BUILD_VERSION);

   ArgumentParser parser(argc, argv);
   parser.set_title(title);

   parser.add_argument("--clear",       "store_true",  "clear");
   parser.add_argument("--gen",       "store_true",  "gen");
   parser.add_argument("--help",       "store_true",  "help");
   parser.add_argument("-h",           "store_true",  "help");

   ArgumentMap vm = parser.parse_args();
   
   if (app.arguments().count() == 1)
   {
      parser.print_help();
      return 1;
   }

   if (vm.count("help") > 0)
   {
      parser.print_help();
      return 0;
   }

   QString path = QPath::join( QStringList()<<DATA_PATH << qos.env["PROJECT"] );
   QString tagfile = QPath::join(path,"c.txt");

   if (vm.count("clear") > 0)
   {
      if (!qos.remove(tagfile) )
         return 1;
   }

   if (vm.count("gen") > 0)
   {
      if (!qos.is_dir(path))
      {
         if (!qos.makedirs(path))
         {
            qos.printerr("Could not create folders");
            return 1;
         }
      }
      QString cwd = qos.getcwd();
      QSubProcess proc;
      proc.start( QStringList()<<"ctags"<<"-a"<<"--tag-relative=no"<<"-R"<<"-f"<<tagfile<<" "<<cwd);
   }


   QTimer::singleShot(1,&app, SLOT(quit()));

   return app.exec();
}
Esempio n. 3
0
bool UnitTestDriver::run_tests(std::vector<UnitTest *>& tests_to_run, const ArgumentMap& kwargs)
{
    std::time_t start_time = std::time(0);

    bool verbose = kwargs.count("verbose");
    bool concise = kwargs.count("concise");
    
    std::vector< TestResult > test_results;

    if (verbose && concise)
    {
        std::cout << "--verbose and --concise cannot be used together" << std::endl;
        exit(EXIT_FAILURE);
    }

    if (!concise)
        std::cout << "Running " << tests_to_run.size() << " unit tests." << std::endl;

    for(size_t i = 0; i < tests_to_run.size(); i++){
        UnitTest& test = *tests_to_run[i];

        if (verbose)
            std::cout << "Running " << test.name << "..." << std::flush;

        try
        {
            // time the test
            std::clock_t start = std::clock();

            // run the test
            test.run();

            // test passed
            record_result(TestResult(Pass, std::clock() - start, test), test_results);
        } 
        catch (unittest::UnitTestFailure& f)
        {
            record_result(TestResult(Failure, std::numeric_limits<std::clock_t>::max(), test, f.message), test_results);
        }
        catch (unittest::UnitTestKnownFailure& f)
        {
            record_result(TestResult(KnownFailure, std::numeric_limits<std::clock_t>::max(), test, f.message), test_results);
        }
        catch (std::bad_alloc& e)
        {
            record_result(TestResult(Error, std::numeric_limits<std::clock_t>::max(), test, e.what()), test_results);
        }
        catch (unittest::UnitTestError& e)
        {
            record_result(TestResult(Error, std::numeric_limits<std::clock_t>::max(), test, e.message), test_results);
        }

        // immediate report
        if (!concise)
        {
            if (verbose)
            {
                switch(test_results.back().status)
                {
                    case Pass:
                        std::cout << "\r[PASS] ";
                        std::cout << std::setw(10) << 1000.f * float(test_results.back().elapsed) / CLOCKS_PER_SEC << " ms";
                        break;
                    case Failure:
                        std::cout << "\r[FAILURE]           "; break;
                    case KnownFailure:
                        std::cout << "\r[KNOWN FAILURE]     "; break;
                    case Error:
                        std::cout << "\r[ERROR]             "; break;
                    default:
                        break;
                }

                std::cout << " " << test.name << std::endl;
            }
            else
            {
                switch(test_results.back().status)
                {
                    case Pass:
                        std::cout << "."; break;
                    case Failure:
                        std::cout << "F"; break;
                    case KnownFailure:
                        std::cout << "K"; break;
                    case Error:
                        std::cout << "E"; break;
                    default:
                        break;
                }
            }
        }

        if (!post_test_sanity_check(test, concise))
        {
            return false;
        }

        std::cout.flush();
    }

    double elapsed_minutes = double(std::time(0) - start_time) / 60;

    // summary report
    if (!concise)
        report_results(test_results, elapsed_minutes);


    // if any failures or errors return false
    for(size_t i = 0; i < test_results.size(); i++)
        if (test_results[i].status != Pass && test_results[i].status != KnownFailure)
            return false;

    // all tests pass or are known failures
    return true;
}
Esempio n. 4
0
int main(int argc, char *argv[])
{
   QCoreApplication app(argc,argv);

   ArgumentParser parser(argc, argv);
   parser.add_argument("--get",  "store_true",  "get");
   parser.add_argument("--list", "store_true",  "list");
   parser.add_argument("--upload",               "upload");
   parser.add_argument("--delete",  "store_true", "delete");
   parser.add_argument("-h",  "store_true",  "help");
   parser.add_argument("--help","store_true","help");

   parser.add_notes(notes);

   ArgumentMap vm = parser.parse_args();
   QStringList args = parser.get_args();

   if (vm.count("help") > 0 || app.arguments().count() == 1)
   {
      parser.print_help();
      app.exit(0);
      return 0;
   }

   if (parser.error != "")
   {
      qCritical() << parser.error;
      app.exit(1);
      return 1;
   }

   TemplateMgr tpl;

   if (vm.count("list") > 0)
   {
      QStringList temps = tpl.templates();
      for(int i=0;i<temps.count();i++)
      {
         QOSystem::printerr(temps[i]);
      }
   }
   else if (vm.count("upload") > 0)
   {
      if (args.count() != 1)
      {
         QOSystem::printerr("Invalid number of arguments");
         app.exit(1);
      }
      QString src = args[0];
      QString val = vm["upload"];
      QString data;

      if (!QFileManager::readfile(src, data))
      {
         QOSystem::printerr("Could not read file");
         app.exit(1);
         return 1;
      }

      if (!tpl.setTemplate(val, src, data))
      {
         QOSystem::printerr("Could not set template");
         app.exit(1);
         return 1;
      }

      app.exit(0);
      return 0;
   }
   else if (vm.count("delete") > 0)
   {
      if (!tpl.removeTemplate(args[0]))
      {
         QOSystem::printerr("Could not remove template");
         app.exit(1);
         return 1;
      }
   }
   else if (vm.count("get") > 0)
   {
      TemplateItem item;
      QMap<QString,QString> dict;
      if (vm.count("env") > 0)
      {
         dict = QOSystem::getEnvDict();
      }

      if (!tpl.getTemplate(args[0], item, dict))
      {
         QOSystem::printerr("Could not get template");
         app.exit(1);
         return 1;
      }

      QOSystem::printerr(item.name);
      if (!QFileManager::writefile(item.name, item.data))
      {
         QOSystem::printerr("Could not write template");
         app.exit(1);
         return 1;
      }
   }

   return 0;
}