From 0dba1de29f90497797298953803c756e1e6b68fd Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Tue, 10 May 2022 19:45:27 +0300 Subject: [PATCH] feat(repository): add ability to compare objects Add naive objects comparison based on repository path. Use with caution, previously loaded into memory index, odb, etc. might be different. --- lib/src/repository.dart | 9 +++++++-- test/repository_test.dart | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/src/repository.dart b/lib/src/repository.dart index 372fb15..92ec689 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 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))); + }); }); }