1. 07 Jun, 2019 1 commit
    • tests: allow for simple data-driven tests · 394951ad
      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)..
      ```
      Patrick Steinhardt committed
  2. 06 Jun, 2019 4 commits
  3. 05 Jun, 2019 3 commits
  4. 24 May, 2019 11 commits
  5. 23 May, 2019 1 commit
  6. 22 May, 2019 8 commits
  7. 21 May, 2019 11 commits
  8. 20 May, 2019 1 commit