summaryrefslogtreecommitdiff
path: root/tests/config
Commit message (Collapse)AuthorAgeFilesLines
* config: test all multivars are updatedEdward Thomson2015-05-041-6/+16
| | | | | | If a multivar exists within two sections (of the same name) then they should both be updated in a `set_multivar`. Ensure that this is the case.
* config: use wildcard in test instead of empty exprEdward Thomson2015-05-041-1/+1
|
* config: cleanup some now-unused variablesEdward Thomson2015-05-041-2/+0
|
* Test setting config var under duplicate header.Ryan Roden-Corrent2015-05-041-0/+49
| | | | | | | | | | Add a test that exposes a bug in config_write. It is valid to have multiple separate headers for the same config section, but config_write will exit after finding the first matching section in certain situations. This test proves that config_write will duplicate a variable that already exists instead of overwriting it if the variable is defined under a duplicate section header.
* config: examine whole file when writingEdward Thomson2015-05-041-0/+37
| | | | | | | | | | | | | | | | Previously we would try to be clever when writing the configuration file and try to stop parsing (and simply copy the rest of the old file) when we either found the value we were trying to write, or when we left the section that value was in, the assumption being that there was no more work to do. Regrettably, you can have another section with the same name later in the file, and we must cope with that gracefully, thus we read the whole file in order to write a new file. Now, writing a file looks even more than reading. Pull the config parsing out into its own function that can be used by both reading and writing the configuration.
* config: test overwriting cvar in multiple regionsEdward Thomson2015-05-041-0/+36
|
* config: ensure we can write to an empty fileEdward Thomson2015-05-041-0/+72
|
* config: ensure we can write to an empty fileEdward Thomson2015-04-231-0/+35
|
* config: test that we validate the keyEdward Thomson2015-04-231-0/+35
|
* Specify mock config file content in test.Ryan Roden-Corrent2015-04-211-4/+11
| | | | | Instead of using a config file in resources, include the config file content to be tested directly in the test.
* Unittest to validate config entry deletion bug.Ryan Roden-Corrent2015-04-211-0/+31
| | | | | | Add a unittest to validate bug #3043, where a duplicate empty config header could cause deletion of a config entry to fail silently. The bug is currently unresolved and this test will fail.
* config_file: comment char can be invalid escapeEdward Thomson2015-04-201-0/+11
| | | | | | Don't assume that comment chars are comment chars, they may be (an attempt to be escaped). If so, \; is not a valid escape sequence, complain.
* config_file: parse multilines generouslyEdward Thomson2015-04-201-6/+34
| | | | | Combine unquoting and multiline detection to avoid ambiguity when parsing.
* Fix checking of return value for regcomp.Patrick Steinhardt2015-04-101-0/+12
| | | | | | | | The regcomp function returns a non-zero value if compilation of a regular expression fails. In most places we only check for negative values, but positive values indicate an error, as well. Fix this tree-wide, fixing a segmentation fault when calling git_config_iterator_glob_new with an invalid regexp.
* Plug a few leaksCarlos Martín Nieto2015-03-041-0/+1
|
* config: borrow refcounted referencescmn/config-borrow-entryCarlos Martín Nieto2015-03-0310-140/+169
| | | | | | | | | | | | | | | This changes the get_entry() method to return a refcounted version of the config entry, which you have to free when you're done. This allows us to avoid freeing the memory in which the entry is stored on a refresh, which may happen at any time for a live config. For this reason, get_string() has been forbidden on live configs and a new function get_string_buf() has been added, which stores the string in a git_buf which the user then owns. The functions which parse the string value takea advantage of the borrowing to parse safely and then release the entry.
* Add test for include.path inside included configYury G. Kudryashov2015-02-131-0/+22
| | | | | | It fails at least on my computer, though it may depend on some unpredictable factors (say, will realloc() extend the memory segment in place, or it will allocate new memory).
* config: add parsing and getter for pathscmn/config-get-pathCarlos Martín Nieto2015-01-141-0/+46
|
* tests: use p_ instead of posix func directlyEdward Thomson2014-12-101-2/+2
|
* Clean up issues include.path issues found during code review.John Fultz2014-11-021-3/+4
| | | | | | | | * Error-handling is cleaned up to only let a file-not-found error through, not other sorts of errors. And when a file-not-found error happens, we clean up the error. * Test now checks that file-not-found introduces no error. And other minor cleanups.
* Make config reading continue after hitting a missing include file.John Fultz2014-11-011-0/+15
| | | | | | | | | | | For example, if you have [include] path = foo and foo didn't exist, git_config_open_ondisk() would just give up on the rest of the file. Now it ignores the unresolved include without error and continues reading the rest of the file.
* config test: clean up memory leakEdward Thomson2014-10-261-0/+1
|
* config: remove the refresh function and backend fieldcmn/config-refresh-removeCarlos Martín Nieto2014-10-233-92/+0
| | | | | | We have been refreshing on read and write for a while now, so git_config_refresh() is at best a no-op, and might just end up wasting cycles.
* Change the length of the file so that the change is picked up.Alan Rogers2014-10-231-2/+2
|
* Add a test to make sure a new snapshot has the new value.Alan Rogers2014-10-231-1/+14
|
* config: Add test cases that have trailing spaces before comment charsLinquize2014-10-041-0/+12
|
* config: a multiline var can start immediatelyCarlos Martín Nieto2014-08-091-0/+13
| | | | | | | | | | | | | | | | | In the check for multiline, we traverse the backslashes from the end backwards and int the end assert that we haven't gone past the beginning of the line. We make sure of this in the loop condition, but we also check in the return value. However, for certain configurations, a line in a multiline variable might be empty to aid formatting. In that case, 'end' == 'start', since we ended up looking at the first char which made it a multiline. There is no need for the (end > start) check in the return, since the loop guarantees we won't go further back than the first char in the line, and we do accept the first char to be the final backslash. This fixes #2483.
* Add unit test to test add section without lf at EOFLinquize2014-07-161-0/+16
|
* Merge pull request #2313 from libgit2/cmn/remote-deleteVicent Marti2014-05-162-0/+32
|\ | | | | Remote deletion
| * tests: Introduce count_config_entries_match() helpernulltoken2014-04-302-0/+32
| |
* | Better search path sandboxingrb/restore-search-pathsRussell Belfer2014-05-152-27/+3
| | | | | | | | | | | | | | There are a number of tests that modify the global or system search paths during the tests. This adds a helper function to make it easier to restore those paths and makes sure that they are getting restored in a manner that preserves test isolation.
* | Merge pull request #2188 from libgit2/cmn/config-snapshotRussell Belfer2014-05-124-9/+97
|\ \ | | | | | | Configuration snapshotting
| * | config: refresh on deleteCarlos Martín Nieto2014-04-181-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | When we delete an entry, we also want to refresh the configuration to catch any changes that happened externally. This allows us to simplify the logic, as we no longer need to delete these variables internally. The whole state will be refreshed and the deleted entries won't be there.
| * | config: refresh before reading a valueCarlos Martín Nieto2014-04-182-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the isolation of complex reads, we can now try to refresh the on-disk file before reading a value from it. This changes the semantics a bit, as before we could be sure that a string we got from the configuration was valid until we wrote or refreshed. This is no longer the case, as a read can also invalidate the pointer.
| * | config: refresh the values on writeCarlos Martín Nieto2014-04-181-1/+1
| | | | | | | | | | | | | | | | | | When writing out, parse the resulting file instead of adding or replacing the value locally. This has the effect of reading external changes as well.
| * | config: implement config snapshottingCarlos Martín Nieto2014-04-181-0/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to have consistent views of the config files for remotes, submodules et al. and a configuration that represents what is currently stored on-disk, we need a way to provide a view of the configuration that does not change. The goal here is to provide the snapshotting part by creating a read-only copy of the state of the configuration at a particular point in time, which does not change when a repository's main config changes.
| * | config: document current write behaviour in a testCarlos Martín Nieto2014-04-181-0/+27
| |/ | | | | | | | | | | | | On set, we set/add the value written to the config's internal values, but we do not refresh old values. Document this in a test in preparation for the refresh changes.
* | Improve handling of fake home directoryRussell Belfer2014-05-021-8/+27
|/ | | | | | | | | | There are a few tests that set up a fake home directory and a fake GLOBAL search path so that we can test things in global ignore or attribute or config files. This cleans up that code to work more robustly even if there is a test failure. This also fixes some valgrind warnings where scanning search paths for separators could end up doing a little bit of sketchy data access when coming to the end of search list.
* Remove converting user error to GIT_EUSERRussell Belfer2013-12-112-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the behavior of callbacks so that the callback error code is not converted into GIT_EUSER and instead we propagate the return value through to the caller. Instead of using the giterr_capture and giterr_restore functions, we now rely on all functions to pass back the return value from a callback. To avoid having a return value with no error message, the user can call the public giterr_set_str or some such function to set an error message. There is a new helper 'giterr_set_callback' that functions can invoke after making a callback which ensures that some error message was set in case the callback did not set one. In places where the sign of the callback return value is meaningful (e.g. positive to skip, negative to abort), only the negative values are returned back to the caller, obviously, since the other values allow for continuing the loop. The hardest parts of this were in the checkout code where positive return values were overloaded as meaningful values for checkout. I fixed this by adding an output parameter to many of the internal checkout functions and removing the overload. This added some code, but it is probably a better implementation. There is some funkiness in the network code where user provided callbacks could be returning a positive or a negative value and we want to rely on that to cancel the loop. There are still a couple places where an user error might get turned into GIT_EUSER there, I think, though none exercised by the tests.
* Improve GIT_EUSER handlingRussell Belfer2013-12-113-20/+83
| | | | | | | | | | | This adds giterr_user_cancel to return GIT_EUSER and clear any error message that is sitting around. As a result of using that in places, we need to be more thorough with capturing errors that happen inside a callback when used internally. To help with that, this also adds giterr_capture and giterr_restore so that when we internally use a foreach-type function that clears errors and converts them to GIT_EUSER, it is easier to restore not just the return value, but the actual error message text.
* Rename tests-clar to testsBen Straub2013-11-1414-0/+1780