mirror of
https://github.com/SkinnyMind/libgit2dart.git
synced 2025-05-04 20:29:08 -04:00
feat: add ability to get and set libgit2 global options (#59)
This commit is contained in:
parent
3900ec92cc
commit
c35d336a56
3 changed files with 1127 additions and 281 deletions
|
@ -20,10 +20,202 @@ void main() {
|
|||
'directories', () {
|
||||
final oldValue = Libgit2.ownerValidation;
|
||||
Libgit2.ownerValidation = !oldValue;
|
||||
expect(Libgit2.ownerValidation, equals(!oldValue));
|
||||
expect(Libgit2.ownerValidation, isNot(oldValue));
|
||||
|
||||
// Set it back
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.ownerValidation = oldValue;
|
||||
});
|
||||
|
||||
test('sets and returns the maximum mmap window size', () {
|
||||
final oldValue = Libgit2.mmapWindowSize;
|
||||
Libgit2.mmapWindowSize = 420 * 1024;
|
||||
expect(Libgit2.mmapWindowSize, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.mmapWindowSize = oldValue;
|
||||
});
|
||||
|
||||
test(
|
||||
'sets and returns the maximum memory that will be mapped in total by '
|
||||
'the library', () {
|
||||
final oldValue = Libgit2.mmapWindowMappedLimit;
|
||||
Libgit2.mmapWindowMappedLimit = 420 * 1024;
|
||||
expect(Libgit2.mmapWindowMappedLimit, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.mmapWindowMappedLimit = oldValue;
|
||||
});
|
||||
|
||||
test(
|
||||
'sets and returns the maximum number of files that will be mapped '
|
||||
'at any time by the library', () {
|
||||
final oldValue = Libgit2.mmapWindowFileLimit;
|
||||
Libgit2.mmapWindowFileLimit = 69;
|
||||
expect(Libgit2.mmapWindowFileLimit, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.mmapWindowFileLimit = oldValue;
|
||||
});
|
||||
|
||||
test('sets and returns the search path for a given level of config data',
|
||||
() {
|
||||
const paths = '/tmp/global:/tmp/another';
|
||||
Libgit2.setConfigSearchPath(level: GitConfigLevel.global, path: paths);
|
||||
expect(Libgit2.getConfigSearchPath(GitConfigLevel.global), paths);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.setConfigSearchPath(level: GitConfigLevel.global, path: null);
|
||||
});
|
||||
|
||||
test(
|
||||
'sets the maximum data size for the given type of object '
|
||||
'to be considered eligible for caching in memory', () {
|
||||
expect(
|
||||
() => Libgit2.setCacheObjectLimit(type: GitObject.blob, value: 420),
|
||||
returnsNormally,
|
||||
);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.setCacheObjectLimit(type: GitObject.blob, value: 0);
|
||||
});
|
||||
|
||||
test('sets the maximum cache size', () {
|
||||
expect(Libgit2.cachedMemory.allowed, 256 * (1024 * 1024));
|
||||
|
||||
Libgit2.setCacheMaxSize(128 * (1024 * 1024));
|
||||
|
||||
expect(Libgit2.cachedMemory.allowed, 128 * (1024 * 1024));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.setCacheMaxSize(256 * (1024 * 1024));
|
||||
});
|
||||
|
||||
test('returns CachedMemory object', () {
|
||||
expect(Libgit2.cachedMemory.allowed, 256 * (1024 * 1024));
|
||||
expect(Libgit2.cachedMemory.toString(), contains('CachedMemory{'));
|
||||
});
|
||||
|
||||
test('disables and enables caching', () {
|
||||
expect(() => Libgit2.disableCaching(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableCaching();
|
||||
});
|
||||
|
||||
test('sets and returns the default template path', () {
|
||||
final oldValue = Libgit2.templatePath;
|
||||
Libgit2.templatePath = '/tmp/template';
|
||||
expect(Libgit2.templatePath, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.templatePath = oldValue;
|
||||
});
|
||||
|
||||
test('sets location for ssl certificates', () {
|
||||
expect(
|
||||
() => Libgit2.setSSLCertLocations(file: 'etc/ssl/cert.pem'),
|
||||
returnsNormally,
|
||||
);
|
||||
expect(
|
||||
() => Libgit2.setSSLCertLocations(path: 'etc/ssl/certs/'),
|
||||
returnsNormally,
|
||||
);
|
||||
});
|
||||
|
||||
test('throws when trying to set both ssl certificates location to null',
|
||||
() {
|
||||
expect(
|
||||
() => Libgit2.setSSLCertLocations(),
|
||||
throwsA(isA<ArgumentError>()),
|
||||
);
|
||||
});
|
||||
|
||||
test('sets and returns the User-Agent header', () {
|
||||
final oldValue = Libgit2.userAgent;
|
||||
Libgit2.userAgent = 'Mozilla/5.0';
|
||||
expect(Libgit2.userAgent, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.userAgent = oldValue;
|
||||
});
|
||||
|
||||
test('disables and enables strict object creation', () {
|
||||
expect(() => Libgit2.disableStrictObjectCreation(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableStrictObjectCreation();
|
||||
});
|
||||
|
||||
test('disables and enables strict symbolic reference creation', () {
|
||||
expect(() => Libgit2.disableStrictSymbolicRefCreation(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableStrictSymbolicRefCreation();
|
||||
});
|
||||
|
||||
test(
|
||||
'disables and enables the use of offset deltas when creating packfiles',
|
||||
() {
|
||||
expect(() => Libgit2.disableOffsetDelta(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableOffsetDelta();
|
||||
});
|
||||
|
||||
test('enables and disables the fsync of files in gitdir', () {
|
||||
expect(() => Libgit2.enableFsyncGitdir(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.disableFsyncGitdir();
|
||||
});
|
||||
|
||||
test('disables and enables strict hash verification', () {
|
||||
expect(() => Libgit2.disableStrictHashVerification(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableStrictHashVerification();
|
||||
});
|
||||
|
||||
test('disables and enables check for unsaved changes in index', () {
|
||||
expect(() => Libgit2.disableUnsavedIndexSafety(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableUnsavedIndexSafety();
|
||||
});
|
||||
|
||||
test('sets and returns the pack maximum objects', () {
|
||||
final oldValue = Libgit2.packMaxObjects;
|
||||
Libgit2.packMaxObjects = 69;
|
||||
expect(Libgit2.packMaxObjects, isNot(oldValue));
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.packMaxObjects = oldValue;
|
||||
});
|
||||
|
||||
test('disables and enables check for unsaved changes in index', () {
|
||||
expect(() => Libgit2.disablePackKeepFileChecks(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enablePackKeepFileChecks();
|
||||
});
|
||||
|
||||
test(
|
||||
'disables and enables check for unsaved changes in index',
|
||||
testOn: '!windows',
|
||||
() {
|
||||
expect(() => Libgit2.disableHttpExpectContinue(), returnsNormally);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.enableHttpExpectContinue();
|
||||
},
|
||||
);
|
||||
|
||||
test('sets and returns the list of git extensions', () {
|
||||
Libgit2.extensions = ['newext', 'anotherext'];
|
||||
expect(Libgit2.extensions, ['noop', 'newext', 'anotherext']);
|
||||
|
||||
// Reset to avoid side effects in later tests
|
||||
Libgit2.extensions = ['!newext', '!anotherext'];
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue