refactor!: use Finalizer to automatically free allocated memory for objects

BREAKING CHANGE: signature change for remote and repository callbacks
during repository clone operation.
This commit is contained in:
Aleksey Kulikov 2022-04-21 14:07:11 +03:00
parent 94c40f9a94
commit b589097c8c
73 changed files with 1073 additions and 1618 deletions

View file

@ -47,8 +47,6 @@ void main() {
expect(submodule.ignore, GitSubmoduleIgnore.none);
expect(submodule.updateRule, GitSubmoduleUpdate.checkout);
expect(submodule.toString(), contains('Submodule{'));
submodule.free();
});
test('throws when trying to lookup and submodule not found', () {
@ -92,24 +90,20 @@ void main() {
Submodule.update(repo: repo, name: testSubmodule);
final submoduleRepo = submodule.open();
final subHead = submoduleRepo.head;
expect(submoduleRepo, isA<Repository>());
expect(subHead.target.sha, submoduleHeadSha);
expect(submoduleRepo.head.target.sha, submoduleHeadSha);
expect(
submodule.workdirOid?.sha,
'49322bb17d3acc9146f98c97d078513228bbf3c0',
);
subHead.free();
submoduleRepo.free();
submodule.free();
});
test('throws when trying to open repository for not initialized submodule',
() {
final submodule = Submodule.lookup(repo: repo, name: testSubmodule);
expect(() => submodule.open(), throwsA(isA<LibGit2Error>()));
submodule.free();
});
test('adds submodule', () {
@ -125,7 +119,6 @@ void main() {
expect(submoduleRepo.isEmpty, false);
submoduleRepo.free();
submodule.free();
});
test('throws when trying to add submodule with wrong url', () {
@ -170,9 +163,6 @@ void main() {
expect(updatedSubmodule.branch, 'updated');
expect(updatedSubmodule.ignore, GitSubmoduleIgnore.all);
expect(updatedSubmodule.updateRule, GitSubmoduleUpdate.rebase);
updatedSubmodule.free();
submodule.free();
});
test('syncs', () {
@ -205,13 +195,8 @@ void main() {
'https://updated.com/',
);
updatedSubmRepoConfig.free();
submRepo.free();
updatedSubmRepo.free();
updatedSubmodule.free();
submRepoConfig.free();
repoConfig.free();
submodule.free();
});
test('reloads info', () {
@ -222,8 +207,6 @@ void main() {
submodule.reload();
expect(submodule.url, 'updated');
submodule.free();
});
test('returns status for a submodule', () {
@ -259,8 +242,11 @@ void main() {
GitSubmoduleStatus.inWorkdir,
},
);
});
submodule.free();
test('manually releases allocated memory', () {
final submodule = Submodule.lookup(repo: repo, name: testSubmodule);
expect(() => submodule.free(), returnsNormally);
});
});
}