• Show log

    Commit

  • Hash : 394951ad
    Author : Patrick Steinhardt
    Date : 2019-06-07T14:11:29

    tests: allow for simple data-driven tests
    
    Right now, we're not able to use data-driven tests at all. E.g.
    given a set of tests which we'd like to repeat with different
    test data, one has to hand-write any outer loop that iterates
    over the test data and then call each of the test functions. Next
    to being bothersome, this also has the downside that error
    reporting is quite lacking, as one never knows which test data
    actually produced failures.
    
    So let's implement the ability to re-run complete test modules
    with changing test data. To retain backwards compatibility and
    enable trivial addition of new runs with changed test data, we
    simply extend clar's generate.py. Instead of scanning for a
    single `_initialize` function, each test module may now implement
    multiple `_initialize_foo` functions. The generated test harness
    will then run all test functions for each of the provided
    initializer functions, making it possible to provide different
    test data inside of each of the initializer functions. Example:
    
    ```
    void test_git_example__initialize_with_nonbare_repo(void)
    {
    	g_repo = cl_git_sandbox_init("testrepo");
    }
    
    void test_git_example__initialize_with_bare_repo(void)
    {
    	g_repo = cl_git_sandbox_init("testrepo.git");
    }
    
    void test_git_example__cleanup(void)
    {
    	cl_git_sandbox_cleanup();
    }
    
    void test_git_example__test1(void)
    {
    	test1();
    }
    
    void test_git_example__test2(void)
    {
    	test2();
    }
    ```
    
    Executing this test module will cause the following output:
    
    ```
    $ ./libgit2_clar -sgit::example
    git::example (with nonbare repo)..
    git::example (with bare repo)..
    ```
    

  • README.md

  • Writing Clar tests for libgit2

    For information on the Clar testing framework and a detailed introduction please visit:

    https://github.com/vmg/clar

    • Write your modules and tests. Use good, meaningful names.

    • Make sure you actually build the tests by setting:

        cmake -DBUILD_CLAR=ON build/
    • Test:

        ./build/libgit2_clar
    • Make sure everything is fine.

    • Send your pull request. That’s it.