diff --git a/lib/src/repository.dart b/lib/src/repository.dart index 372fb15..52e21c7 100644 --- a/lib/src/repository.dart +++ b/lib/src/repository.dart @@ -1,8 +1,8 @@ import 'dart:ffi'; +import 'package:equatable/equatable.dart'; import 'package:ffi/ffi.dart'; import 'package:libgit2dart/libgit2dart.dart'; - import 'package:libgit2dart/src/bindings/attr.dart' as attr_bindings; import 'package:libgit2dart/src/bindings/describe.dart' as describe_bindings; import 'package:libgit2dart/src/bindings/graph.dart' as graph_bindings; @@ -12,8 +12,10 @@ import 'package:libgit2dart/src/bindings/repository.dart' as bindings; import 'package:libgit2dart/src/bindings/reset.dart' as reset_bindings; import 'package:libgit2dart/src/bindings/status.dart' as status_bindings; import 'package:libgit2dart/src/util.dart'; +import 'package:meta/meta.dart'; -class Repository { +@immutable +class Repository extends Equatable { /// Initializes a new instance of the [Repository] class from provided /// pointer to repository object in memory. /// @@ -741,6 +743,9 @@ class Repository { return packbuilder.writtenLength; } + + @override + List get props => [path]; } // coverage:ignore-start @@ -821,10 +826,14 @@ class RepositoryCallback { final String? originUrl; } -class Identity { +@immutable +class Identity extends Equatable { /// Identity to use for reflogs. const Identity({required this.name, required this.email}); final String name; final String email; + + @override + List get props => [name, email]; } diff --git a/test/repository_empty_test.dart b/test/repository_empty_test.dart index 7375895..21aecdb 100644 --- a/test/repository_empty_test.dart +++ b/test/repository_empty_test.dart @@ -85,6 +85,7 @@ void main() { final identity = repo.identity; expect(identity.name, 'name'); expect(identity.email, 'email@email.com'); + expect(identity, equals(repo.identity)); }); test('unsets identity', () { diff --git a/test/repository_test.dart b/test/repository_test.dart index 34e0a25..7d155c3 100644 --- a/test/repository_test.dart +++ b/test/repository_test.dart @@ -249,5 +249,9 @@ void main() { test('returns string representation of Repository object', () { expect(repo.toString(), contains('Repository{')); }); + + test('supports value comparison', () { + expect(repo, equals(Repository.open(tmpDir.path))); + }); }); }