feat(repository): add ability to clone repository

This commit is contained in:
Aleksey Kulikov 2021-09-24 12:07:11 +03:00
parent 3c1a6b4ab4
commit 5680fd8674
3 changed files with 136 additions and 1 deletions

View file

@ -0,0 +1,68 @@
import 'dart:io';
import 'package:test/test.dart';
import 'package:libgit2dart/libgit2dart.dart';
import 'helpers/util.dart';
void main() {
late Repository repo;
late Directory tmpDir;
final cloneDir = Directory('${Directory.systemTemp.path}/cloned');
setUp(() async {
tmpDir = await setupRepo(Directory('test/assets/testrepo/'));
repo = Repository.open(tmpDir.path);
if (await cloneDir.exists()) {
cloneDir.delete(recursive: true);
}
});
tearDown(() async {
repo.free();
await tmpDir.delete(recursive: true);
cloneDir.delete(recursive: true);
});
group('Repository.clone', () {
test('successfully clones repository', () async {
final clonedRepo = Repository.clone(
url: tmpDir.path,
localPath: cloneDir.path,
);
expect(clonedRepo.isEmpty, false);
expect(clonedRepo.isBare, false);
clonedRepo.free();
});
test('successfully clones repository as bare', () async {
final clonedRepo = Repository.clone(
url: tmpDir.path,
localPath: cloneDir.path,
bare: true,
);
expect(clonedRepo.isEmpty, false);
expect(clonedRepo.isBare, true);
clonedRepo.free();
});
test('successfully clones repository with provided checkout branch name',
() async {
final clonedRepo = Repository.clone(
url: tmpDir.path,
localPath: cloneDir.path,
bare: true,
checkoutBranch: 'feature',
);
expect(clonedRepo.isEmpty, false);
expect(clonedRepo.isBare, true);
expect(clonedRepo.head.name, 'refs/heads/feature');
clonedRepo.free();
});
});
}