• Show log

    Commit

  • Hash : 6f6340af
    Author : Patrick Steinhardt
    Date : 2019-07-18T11:57:55

    ignore: fix determining whether a shorter pattern negates another
    
    When computing whether we need to store a negative pattern, we iterate
    through all previously known patterns and check whether the negative
    pattern undoes any of the previous ones. In doing so we call `wildmatch`
    and check it's return for any negative error values. If there was a
    negative return, we will abort and bubble up that error to the caller.
    
    In fact, this check for negative values stems from the time where we
    still used `fnmatch` instead of `wildmatch`. For `fnmatch`, negative
    values indicate a "real" error, while for `wildmatch` a negative value
    may be returned if the matching was prematurely aborted. A premature
    abort may for example also happen if the pattern matches a prefix of the
    haystack if the pattern is shorter. Returning an error in that case is
    the wrong thing to do.
    
    Fix the code to compare for equality with `WM_MATCH`, only. Negative
    values returned by `wildmatch` are perfectly fine and thus should be
    ignored. Add a test that verifies we do not see the error.
    

  • 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.

    Memory leak checks

    These are automatically run as part of CI, but if you want to check locally:

    Linux

    Uses valgrind:

    $ cmake -DBUILD_CLAR=ON -DVALGRIND=ON ..
    $ cmake --build .
    $ valgrind --leak-check=full --show-reachable=yes --num-callers=50 --suppressions=../libgit2_clar.supp \
      ./libgit2_clar

    macOS

    Uses leaks, which requires XCode installed:

    $ MallocStackLogging=1 MallocScribble=1 MallocLogFile=/dev/null CLAR_AT_EXIT="leaks -quiet \$PPID" \
      ./libgit2_clar