[Beignet] [PATCH v2] utest_run: Rewrite the function main, adding the arguments parse.

He Junyan junyan.he at linux.intel.com
Wed May 22 20:16:20 PDT 2013


After my test, it works well and make the utest more readable.
I am move our cases to piglit and it has its own test framework code.
I think we may not keep the utest there and i am translating
our cases to its framework.


On 05/20/2013 03:14 PM, Yi Sun wrote:
> Add three arguments:
>    -n <casename> : run a single case.
>    -a            : run all sub cases.
>    -l            : list all sub cases name.
>
> Signed-off-by: Yi Sun <yi.sun at intel.com>
>
> diff --git a/utests/utest.cpp b/utests/utest.cpp
> index fc3467e..193e931 100644
> --- a/utests/utest.cpp
> +++ b/utests/utest.cpp
> @@ -76,3 +76,13 @@ void UTest::runAll(void) {
>     }
>   }
>   
> +void UTest::listAllCases()
> +{
> +if (utestList == NULL) return;
> +  for (size_t i = 0; i < utestList->size(); ++i) {
> +    const UTest &utest = (*utestList)[i];
> +    if (utest.fn == NULL) continue;
> +    std::cout << utest.name << std::endl;
> +  }
> +
> +}
> diff --git a/utests/utest.hpp b/utests/utest.hpp
> index 338a4dc..5487911 100644
> --- a/utests/utest.hpp
> +++ b/utests/utest.hpp
> @@ -50,6 +50,8 @@ struct UTest
>     static void run(const char *name);
>     /*! Run all the tests */
>     static void runAll(void);
> +  /* List all the sub cases name*/
> +  static void listAllCases(void);
>   };
>   
>   /*! Register a new unit test */
> diff --git a/utests/utest_run.cpp b/utests/utest_run.cpp
> index e577b7b..3974bbb 100644
> --- a/utests/utest_run.cpp
> +++ b/utests/utest_run.cpp
> @@ -26,19 +26,67 @@
>   #include "utest_helper.hpp"
>   #include "utest_exception.hpp"
>   #include <iostream>
> +#include <getopt.h>
> +
> +static const char *shortopts = "n:la";
> +struct option longopts[] = {
> +{"name", required_argument, NULL, 'n'},
> +{"list", no_argument, NULL, 'l'},
> +{0, 0, 0, 0},
> +};
> +
> +void usage()
> +{
> +    std::cout << "\
> +Usage:\n\
> +  ./utest_run <option>\n\
> +\n\
> +  option:\n\
> +    -n <casename>: run sub-case named 'casename'\n\
> +    -l           : list all the available case name\n\
> +    -a           : run all test cases\n\
> +\
> +    "<< std::endl;
> +}
>   
>   int main(int argc, char *argv[])
>   {
> -  try {
> +
> +    int c;
>       cl_ocl_init();
> -    if (argc >= 2)
> -      for (int i = 1; i < argc; ++i)
> -        UTest::run(argv[i]);
> -    else
> -      UTest::runAll();
> +
> +    while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != -1)
> +    {
> +        switch (c)
> +        {
> +            case 'n':
> +                try {
> +                    UTest::run(optarg);
> +                }
> +                catch (Exception e){
> +                    std::cout << "  " << e.what() << "    [SUCCESS]" << std::endl;
> +                }
> +
> +                break;
> +
> +            case 'l':
> +                UTest::listAllCases();
> +                break;
> +
> +            case 'a':
> +                try {
> +                    UTest::runAll();
> +                }
> +                catch (Exception e){
> +                    std::cout << "  " << e.what() << "    [SUCCESS]" << std::endl;
> +                }
> +
> +                break;
> +            default: usage();
> +                exit(1);
> +        }
> +    }
> +
>       cl_ocl_destroy();
> -  } catch (Exception e) {
> -      std::cout << "  " << e.what() << "    [SUCCESS]" << std::endl;
> -  }
>   }
>   



More information about the Beignet mailing list