refactor!: use Finalizer to automatically free allocated memory for objects (#48)

BREAKING CHANGE: signature change for remote and repository callbacks during repository clone operation.
This commit is contained in:
Aleksey Kulikov 2022-04-28 11:04:48 +03:00 committed by GitHub
parent 94c40f9a94
commit a3213a88a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
103 changed files with 2278 additions and 2595 deletions

View file

@ -19,7 +19,6 @@ void main() {
});
tearDown(() {
tree.free();
repo.free();
tmpDir.deleteSync(recursive: true);
});
@ -29,18 +28,14 @@ void main() {
final builder = TreeBuilder(repo: repo);
expect(builder, isA<TreeBuilder>());
expect(builder.toString(), contains('TreeBuilder{'));
builder.free();
});
test('initializes tree builder with provided tree', () {
final builder = TreeBuilder(repo: repo, tree: tree);
final oid = builder.write();
expect(builder, isA<TreeBuilder>());
expect(builder.length, tree.length);
expect(oid, tree.oid);
builder.free();
expect(builder.write(), tree.oid);
});
test('throws when trying to initialize and error occurs', () {
@ -56,8 +51,6 @@ void main() {
expect(builder.length, 4);
builder.clear();
expect(builder.length, 0);
builder.free();
});
test('builds the tree builder from entry of tree', () {
@ -72,8 +65,6 @@ void main() {
filemode: entry.filemode,
);
expect(builder[entry.name].name, entry.name);
builder.free();
});
test('throws when trying to add entry with invalid name or invalid oid',
@ -96,8 +87,6 @@ void main() {
),
throwsA(isA<LibGit2Error>()),
);
builder.free();
});
test('removes an entry', () {
@ -108,14 +97,17 @@ void main() {
builder.remove('.gitignore');
expect(() => builder['.gitignore'], throwsA(isA<ArgumentError>()));
expect(builder.length, tree.length - 1);
builder.free();
});
test('throws when trying to remove entry that is not in the tree', () {
final builder = TreeBuilder(repo: repo);
expect(() => builder.remove('not.there'), throwsA(isA<LibGit2Error>()));
builder.free();
expect(
() => TreeBuilder(repo: repo).remove('not.there'),
throwsA(isA<LibGit2Error>()),
);
});
test('manually releases allocated memory', () {
expect(() => TreeBuilder(repo: repo).free(), returnsNormally);
});
});
}