diff --git a/test/repository_test.dart b/test/repository_test.dart index 457ccfb..7a047c9 100644 --- a/test/repository_test.dart +++ b/test/repository_test.dart @@ -374,74 +374,6 @@ void main() { throwsA(isA()), ); }); - - group('stash', () { - late Signature stasher; - setUp(() { - stasher = Signature.create( - name: 'Stasher', - email: 'stasher@email.com', - ); - }); - - tearDown(() => stasher.free()); - - test('successfully saves changes to stash', () { - File('${tmpDir}file').writeAsStringSync( - 'edit', - mode: FileMode.append, - ); - - repo.stash(stasher: stasher, includeUntracked: true); - expect(repo.status.isEmpty, true); - }); - - test('successfully applies changes from stash', () { - File('${tmpDir}file').writeAsStringSync( - 'edit', - mode: FileMode.append, - ); - - repo.stash(stasher: stasher); - expect(repo.status.isEmpty, true); - - repo.stashApply(); - expect(repo.status, contains('file')); - }); - - test('successfully drops stash', () { - File('${tmpDir}file').writeAsStringSync( - 'edit', - mode: FileMode.append, - ); - - repo.stash(stasher: stasher); - repo.stashDrop(); - expect(() => repo.stashApply(), throwsA(isA())); - }); - - test('successfully pops from stash', () { - File('${tmpDir}file').writeAsStringSync( - 'edit', - mode: FileMode.append, - ); - - repo.stash(stasher: stasher); - repo.stashPop(); - expect(repo.status, contains('file')); - expect(() => repo.stashApply(), throwsA(isA())); - }); - - test('returns list of stashes', () { - File('${tmpDir}file').writeAsStringSync( - 'edit', - mode: FileMode.append, - ); - - repo.stash(stasher: stasher); - expect(repo.stashList.length, 1); - }); - }); }); }); } diff --git a/test/stash_test.dart b/test/stash_test.dart new file mode 100644 index 0000000..48656e4 --- /dev/null +++ b/test/stash_test.dart @@ -0,0 +1,95 @@ +import 'dart:io'; +import 'package:test/test.dart'; +import 'package:libgit2dart/libgit2dart.dart'; +import 'helpers/util.dart'; + +void main() { + late Repository repo; + late Signature stasher; + final tmpDir = '${Directory.systemTemp.path}/patch_testrepo/'; + + setUp(() async { + if (await Directory(tmpDir).exists()) { + await Directory(tmpDir).delete(recursive: true); + } + await copyRepo( + from: Directory('test/assets/testrepo/'), + to: await Directory(tmpDir).create(), + ); + repo = Repository.open(tmpDir); + stasher = Signature.create( + name: 'Stasher', + email: 'stasher@email.com', + ); + }); + + tearDown(() async { + stasher.free(); + repo.free(); + await Directory(tmpDir).delete(recursive: true); + }); + + group('Stash', () { + test('successfully saves changes to stash', () { + File('${tmpDir}file').writeAsStringSync( + 'edit', + mode: FileMode.append, + ); + + repo.stash(stasher: stasher, includeUntracked: true); + expect(repo.status.isEmpty, true); + }); + + test('successfully applies changes from stash', () { + File('${tmpDir}file').writeAsStringSync( + 'edit', + mode: FileMode.append, + ); + + repo.stash(stasher: stasher); + expect(repo.status.isEmpty, true); + + repo.stashApply(); + expect(repo.status, contains('file')); + }); + + test('successfully drops stash', () { + File('${tmpDir}file').writeAsStringSync( + 'edit', + mode: FileMode.append, + ); + + repo.stash(stasher: stasher); + final stash = repo.stashList.first; + repo.stashDrop(stash.index); + expect(() => repo.stashApply(), throwsA(isA())); + }); + + test('successfully pops from stash', () { + File('${tmpDir}file').writeAsStringSync( + 'edit', + mode: FileMode.append, + ); + + repo.stash(stasher: stasher); + repo.stashPop(); + expect(repo.status, contains('file')); + expect(() => repo.stashApply(), throwsA(isA())); + }); + + test('returns list of stashes', () { + File('${tmpDir}file').writeAsStringSync( + 'edit', + mode: FileMode.append, + ); + + repo.stash(stasher: stasher, message: 'WIP'); + + final stash = repo.stashList.first; + + expect(repo.stashList.length, 1); + expect(stash.index, 0); + expect(stash.message, 'On master: WIP'); + }); + }); +}