summaryrefslogtreecommitdiff
path: root/tests-clar/diff/patch.c
Commit message (Collapse)AuthorAgeFilesLines
* Implement regex pattern diff driverRussell Belfer2013-06-111-1/+1
| | | | | | | This implements the loading of regular expression pattern lists for diff drivers that search for function context in that way. This also changes the way that diff drivers update options and interface with xdiff APIs to make them a little more flexible.
* Reorganize diff and add basic diff driverRussell Belfer2013-06-101-1/+1
| | | | | | | | | | | | | | | | | | This is a significant reorganization of the diff code to break it into a set of more clearly distinct files and to document the new organization. Hopefully this will make the diff code easier to understand and to extend. This adds a new `git_diff_driver` object that looks of diff driver information from the attributes and the config so that things like function content in diff headers can be provided. The full driver spec is not implemented in the commit - this is focused on the reorganization of the code and putting the driver hooks in place. This also removes a few #includes from src/repository.h that were overbroad, but as a result required extra #includes in a variety of places since including src/repository.h no longer results in pulling in the whole world.
* Fix line numbering for patches with eofnlRussell Belfer2013-05-071-6/+122
| | | | | | | When a patch contained an eofnl change (i.e. the last line either gained or lost a newline), the oldno and newno line number values for the lines in the last hunk of the patch were not useful. This makes them behave in a more expected manner.
* More tests for files with no newline at endRussell Belfer2013-05-071-5/+30
|
* Add GIT_DIFF_LINE_CONTEXT_EOFNLRussell Belfer2013-05-071-7/+30
| | | | | | | | | | | | | | | | | | This adds a new line origin constant for the special line that is used when both files end without a newline. In the course of writing the tests for this, I was having problems with modifying a file but not having diff notice because it was the same size and modified less than one second from the start of the test, so I decided to start working on nanosecond timestamp support. This commit doesn't contain the nanosecond support, but it contains the reorganization of maybe_modified and the hooks so that if the nanosecond data were being read by stat() (or rather being copied by git_index_entry__init_from_stat), then the nsec would be taken into account. This new stuff could probably use some more tests, although there is some amount of it here.
* Improve diff config options handlingRussell Belfer2013-04-231-0/+78
| | | | | | | | | | | | | | This makes diff use the cvar cache for config options where possible, and also adds support for a number of other config options to diff including "diff.context", "diff.ignoreSubmodules", "diff.noprefix", "diff.mnemonicprefix", and "core.abbrev". To make this natural, this involved a rearrangement of the code that allocates the diff object vs. the code that initializes it based on the combination of options passed in by the user and read from the config. This commit includes tests for most of these new options as well.
* Move some low-level repo fns to include/git2/sysRussell Belfer2013-04-211-0/+2
|
* Fix a few leaksCarlos Martín Nieto2013-03-041-0/+2
| | | | | | | | | `git_diff_get_patch()` would unconditionally load the patch object and then simply leak it if the user hadn't requested it. Short-circuit loading the object if the user doesn't want it. The rest of the plugs are simply calling the free functions of objects allocated during the tests.
* Allow empty config object and use itRussell Belfer2013-03-011-6/+4
| | | | | | | This removes assertions that prevent us from having an empty git_config object and then updates some tests that were dependent on global config state to use an empty config before running anything.
* Control for core.autocrlf during testingRussell Belfer2013-03-011-2/+13
|
* Fix tests for find_similar and relatedRussell Belfer2013-02-221-9/+9
| | | | | | | | This fixes both a test that I broke in diff::patch where I was relying on the current state of the working directory for the renames test data and fixes an unstable test in diff::rename where the environment setting for the "diff.renames" config was being allowed to influence the test results.
* Fix MSVC compilation warningsnulltoken2013-02-051-3/+3
| | | | Fix #1308
* Free buffer at end of testRussell Belfer2013-01-301-0/+2
|
* Add helper for diff line statsRussell Belfer2013-01-301-0/+65
| | | | | | | | | | | | This adds a `git_diff_patch_line_stats()` API that gets the total number of adds, deletes, and context lines in a patch. This will make it a little easier to emulate `git diff --stat` and the like. Right now, this relies on generating the `git_diff_patch` object, which is a pretty heavyweight way to get stat information. At some future point, it would probably be nice to be able to get this information without allocating the entire `git_diff_patch`, but that's a much larger project.
* Fix diff patch line number calculationRussell Belfer2013-01-111-1/+109
| | | | | | | | This was just wrong. Added a test that verifying patch line numbers even for hunks further into a file and then fixed the algorithm. I needed to add a little extra state into the patch so that I could track old and new file numbers independently, but it should be okay.
* Fix warnings on Win64 buildRussell Belfer2012-11-271-1/+1
|
* Update diff callback param orderRussell Belfer2012-11-271-4/+4
| | | | | | | | This makes the diff functions that take callbacks both take the payload parameter after the callback function pointers and pass the payload as the last argument to the callback function instead of the first. This should make them consistent with other callbacks across the API.
* Fix diff API to better parameter orderRussell Belfer2012-11-141-2/+2
| | | | | The diff API is not in the parameter order one would expect from other libgit2 APIs. This fixes that.
* Add git_diff_patch_to_str APIRussell Belfer2012-10-241-0/+30
| | | | | This adds an API to generate a complete single-file patch text from a git_diff_patch object.
* Add const to all shared pointers in diff APIRussell Belfer2012-09-251-2/+2
| | | | | | | | | | There are a lot of places where the diff API gives the user access to internal data structures and many of these were being exposed through non-const pointers. This replaces them all with const pointers for any object that the user can access but is still owned internally to the git_diff_list or git_diff_patch objects. This will probably break some bindings... Sorry!
* Fix usage of "new" for fieldname in public headerRussell Belfer2012-05-021-2/+2
| | | | | | | | This should restore the ability to include libgit2 headers in C++ projects. Cherry picked 2de60205dfea2c4a422b2108a5e8605f97c2e895 from development into new-error-handling.
* tests-clar/diff: mark output_len unusedMichael Schubert2012-05-011-0/+1
|
* diff: provide more context to the consumer of the callbacksnulltoken2012-04-301-7/+37
| | | | Update the callback to provide some information related to the file change being processed and the range of the hunk, when applicable.
* diff: fix generation of the header of a removal patchnulltoken2012-04-251-0/+68