feat: add more toString overrides for debugging

This commit is contained in:
Aleksey Kulikov 2021-10-13 19:23:34 +03:00
parent beed516c89
commit 9f346c99f7
26 changed files with 175 additions and 18 deletions

View file

@ -13,7 +13,7 @@ To run all tests and generate coverage report use the following commands:
```sh ```sh
$ dart pub global activate coverage $ dart pub global activate coverage
$ dart test --coverage="coverage" $ dart test --coverage="coverage"
$ format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.packages --report-on=lib $ format_coverage --lcov --check-ignore --in=coverage --out=coverage/lcov.info --packages=.packages --report-on=lib
``` ```
To view the generated coverage report you can use [lcov](https://github.com/linux-test-project/lcov): To view the generated coverage report you can use [lcov](https://github.com/linux-test-project/lcov):

View file

@ -132,6 +132,15 @@ class BlameHunk {
/// specified by [originCommitOid]. /// specified by [originCommitOid].
String get originPath => String get originPath =>
_blameHunkPointer.ref.orig_path.cast<Utf8>().toDartString(); _blameHunkPointer.ref.orig_path.cast<Utf8>().toDartString();
@override
String toString() {
return 'BlameHunk{linesCount: $linesCount, isBoundary: $isBoundary, '
'finalStartLineNumber: $finalStartLineNumber, finalCommitter: $finalCommitter, '
'finalCommitOid: $finalCommitOid, originStartLineNumber: $originStartLineNumber, '
'originCommitter: $originCommitter, originCommitOid: $originCommitOid, '
'originPath: $originPath}';
}
} }
class _BlameIterator implements Iterator<BlameHunk> { class _BlameIterator implements Iterator<BlameHunk> {

View file

@ -136,4 +136,9 @@ class Blob {
/// Releases memory allocated for blob object. /// Releases memory allocated for blob object.
void free() => bindings.free(_blobPointer); void free() => bindings.free(_blobPointer);
@override
String toString() {
return 'Blob{oid: $oid, isBinary: $isBinary, size: $size}';
}
} }

View file

@ -150,6 +150,6 @@ class Branch {
@override @override
String toString() { String toString() {
return 'Branch{name: $name, target: $target}'; return 'Branch{name: $name, target: $target, isHead: $isHead, isCheckedOut: $isCheckedOut}';
} }
} }

View file

@ -109,5 +109,8 @@ class Commit {
void free() => bindings.free(_commitPointer); void free() => bindings.free(_commitPointer);
@override @override
String toString() => 'Commit{oid: $oid}'; String toString() {
return 'Commit{oid: $oid, message: $message, messageEncoding: $messageEncoding, '
'time: $time, committer: $committer, author: $author}';
}
} }

View file

@ -14,6 +14,9 @@ class Username implements Credentials {
@override @override
GitCredential get credentialType => GitCredential.username; GitCredential get credentialType => GitCredential.username;
@override
String toString() => 'Username{username: $username}';
} }
/// Plain-text username and password credential. /// Plain-text username and password credential.
@ -28,6 +31,11 @@ class UserPass implements Credentials {
@override @override
GitCredential get credentialType => GitCredential.userPassPlainText; GitCredential get credentialType => GitCredential.userPassPlainText;
@override
String toString() {
return 'UserPass{username: $username, password: $password}';
}
} }
/// Passphrase-protected ssh key credential. /// Passphrase-protected ssh key credential.
@ -53,6 +61,12 @@ class Keypair implements Credentials {
@override @override
GitCredential get credentialType => GitCredential.sshKey; GitCredential get credentialType => GitCredential.sshKey;
@override
String toString() {
return 'Keypair{username: $username, pubKey: $pubKey, privateKey: $privateKey, '
'passPhrase: $passPhrase}';
}
} }
/// Ssh key credential used for querying an ssh-agent. /// Ssh key credential used for querying an ssh-agent.
@ -89,4 +103,10 @@ class KeypairFromMemory implements Credentials {
@override @override
GitCredential get credentialType => GitCredential.sshMemory; GitCredential get credentialType => GitCredential.sshMemory;
@override
String toString() {
return 'KeypairFromAgent{username: $username, pubKey: $pubKey, privateKey: $privateKey, '
'passPhrase: $passPhrase}';
}
} }

View file

@ -119,6 +119,11 @@ class Diff {
/// Releases memory allocated for diff object. /// Releases memory allocated for diff object.
void free() => bindings.free(_diffPointer); void free() => bindings.free(_diffPointer);
@override
String toString() {
return 'Diff{length: $length}';
}
} }
class DiffDelta { class DiffDelta {
@ -166,6 +171,12 @@ class DiffDelta {
/// Represents the "to" side of the diff. /// Represents the "to" side of the diff.
DiffFile get newFile => DiffFile(_diffDeltaPointer.ref.new_file); DiffFile get newFile => DiffFile(_diffDeltaPointer.ref.new_file);
@override
String toString() {
return 'DiffDelta{status: $status, flags: $flags, similarity: $similarity, '
'numberOfFiles: $numberOfFiles, oldFile: $oldFile, newFile: $newFile}';
}
} }
/// Description of one side of a delta. /// Description of one side of a delta.
@ -200,6 +211,11 @@ class DiffFile {
GitFilemode get mode { GitFilemode get mode {
return GitFilemode.values.singleWhere((e) => _diffFile.mode == e.value); return GitFilemode.values.singleWhere((e) => _diffFile.mode == e.value);
} }
@override
String toString() {
return 'DiffFile{oid: $oid, path: $path, size: $size, flags: $flags, mode: $mode}';
}
} }
class DiffStats { class DiffStats {
@ -234,6 +250,11 @@ class DiffStats {
/// Releases memory allocated for diff stats object. /// Releases memory allocated for diff stats object.
void free() => bindings.statsFree(_diffStatsPointer); void free() => bindings.statsFree(_diffStatsPointer);
@override
String toString() {
return 'DiffStats{insertions: $insertions, deletions: $deletions, filesChanged: $filesChanged}';
}
} }
class DiffHunk { class DiffHunk {
@ -293,6 +314,12 @@ class DiffHunk {
} }
return lines; return lines;
} }
@override
String toString() {
return 'DiffHunk{linesCount: $linesCount, index: $index, oldStart: $oldStart, '
'oldLines: $oldLines, newStart: $newStart, newLines: $newLines, header: $header}';
}
} }
class DiffLine { class DiffLine {
@ -325,4 +352,10 @@ class DiffLine {
/// Returns content of the diff line. /// Returns content of the diff line.
String get content => String get content =>
_diffLinePointer.ref.content.cast<Utf8>().toDartString(); _diffLinePointer.ref.content.cast<Utf8>().toDartString();
@override
String toString() {
return 'DiffLine{oldLineNumber: $oldLineNumber, newLineNumber: $newLineNumber, '
'numLines: $numLines, contentOffset: $contentOffset, content: $content}';
}
} }

View file

@ -220,6 +220,9 @@ class Index with IterableMixin<IndexEntry> {
/// Releases memory allocated for index object. /// Releases memory allocated for index object.
void free() => bindings.free(_indexPointer); void free() => bindings.free(_indexPointer);
@override
String toString() => 'Index{hasConflicts: $hasConflicts}';
@override @override
Iterator<IndexEntry> get iterator => _IndexIterator(_indexPointer); Iterator<IndexEntry> get iterator => _IndexIterator(_indexPointer);
} }
@ -261,7 +264,7 @@ class IndexEntry {
@override @override
String toString() { String toString() {
return 'IndexEntry{path: $path, sha: $sha}'; return 'IndexEntry{oid: $oid, path: $path, mode: $mode}';
} }
String _oidToHex(git_oid oid) { String _oidToHex(git_oid oid) {
@ -306,7 +309,7 @@ class ConflictEntry {
@override @override
String toString() => String toString() =>
'ConflictEntry{ancestor: $ancestor, our: $our, their: $their}'; 'ConflictEntry{ancestor: $ancestor, our: $our, their: $their, path: $_path}';
} }
class _IndexIterator implements Iterator<IndexEntry> { class _IndexIterator implements Iterator<IndexEntry> {

View file

@ -101,4 +101,9 @@ class Note {
/// Releases memory allocated for note object. /// Releases memory allocated for note object.
void free() => bindings.free(_notePointer); void free() => bindings.free(_notePointer);
@override
String toString() {
return 'Note{oid: $oid, message: $message, annotatedOid: $annotatedOid}';
}
} }

View file

@ -125,4 +125,9 @@ class OdbObject {
/// Releases memory allocated for odbObject object. /// Releases memory allocated for odbObject object.
void free() => bindings.objectFree(_odbObjectPointer); void free() => bindings.objectFree(_odbObjectPointer);
@override
String toString() {
return 'OdbObject{oid: $oid, type: $type, size: $size}';
}
} }

View file

@ -70,4 +70,9 @@ class PackBuilder {
/// Releases memory allocated for packbuilder object. /// Releases memory allocated for packbuilder object.
void free() => bindings.free(_packbuilderPointer); void free() => bindings.free(_packbuilderPointer);
@override
String toString() {
return 'PackBuilder{length: $length, writtenLength: $writtenLength}';
}
} }

View file

@ -155,4 +155,7 @@ class Patch {
} }
bindings.free(_patchPointer); bindings.free(_patchPointer);
} }
@override
String toString() => 'Patch{size: $size, delta: $delta}';
} }

View file

@ -137,4 +137,7 @@ class RebaseOperation {
? '' ? ''
: _rebaseOperationPointer.ref.exec.cast<Utf8>().toDartString(); : _rebaseOperationPointer.ref.exec.cast<Utf8>().toDartString();
} }
@override
String toString() => 'RebaseOperation{type: $type, oid: $oid}';
} }

View file

@ -272,14 +272,15 @@ class Reference {
); );
} }
@override
int get hashCode => _refPointer.address.hashCode;
/// Releases memory allocated for reference object. /// Releases memory allocated for reference object.
void free() => bindings.free(_refPointer); void free() => bindings.free(_refPointer);
@override
int get hashCode => _refPointer.address.hashCode;
@override @override
String toString() { String toString() {
return 'Reference{name: $name, target: $target}'; return 'Reference{name: $name, target: $target, type: $type, isBranch: $isBranch, '
'isNote: $isNote, isRemote: $isRemote, isTag: $isTag}';
} }
} }

View file

@ -50,7 +50,7 @@ class RefLogEntry {
Signature get committer => Signature(bindings.entryCommiter(_entryPointer)); Signature get committer => Signature(bindings.entryCommiter(_entryPointer));
@override @override
String toString() => 'ReflogEntry{message: $message}'; String toString() => 'ReflogEntry{message: $message, committer: $committer}';
} }
class _RefLogIterator implements Iterator<RefLogEntry> { class _RefLogIterator implements Iterator<RefLogEntry> {

View file

@ -65,4 +65,9 @@ class Refspec {
name: name, name: name,
); );
} }
@override
String toString() {
return 'Refspec{source: $source, destination: $destination, force: $force, string: $string}';
}
} }

View file

@ -263,6 +263,11 @@ class Remote {
/// Releases memory allocated for remote object. /// Releases memory allocated for remote object.
void free() => bindings.free(_remotePointer); void free() => bindings.free(_remotePointer);
@override
String toString() {
return 'Remote{name: $name, url: $url, pushUrl: $pushUrl, refspecCount: $refspecCount}';
}
} }
/// Provides callers information about the progress of indexing a packfile, either /// Provides callers information about the progress of indexing a packfile, either
@ -295,4 +300,11 @@ class TransferProgress {
/// Returns number of bytes received up to now. /// Returns number of bytes received up to now.
int get receivedBytes => _transferProgressPointer.ref.received_bytes; int get receivedBytes => _transferProgressPointer.ref.received_bytes;
@override
String toString() {
return 'TransferProgress{totalObjects: $totalObjects, indexedObjects: $indexedObjects, '
'receivedObjects: $receivedObjects, localObjects: $localObjects, totalDeltas: $totalDeltas, '
'indexedDeltas: $indexedDeltas, receivedBytes: $receivedBytes}';
}
} }

View file

@ -308,6 +308,14 @@ class Repository {
/// Releases memory allocated for repository object. /// Releases memory allocated for repository object.
void free() => bindings.free(_repoPointer); void free() => bindings.free(_repoPointer);
@override
String toString() {
return 'Repository{path: $path, commonDir: $commonDir, namespace: $namespace, '
'isBare: $isBare, isEmpty: $isEmpty, isHeadDetached: $isHeadDetached, '
'isBranchUnborn: $isBranchUnborn, isShallow: $isShallow, isWorktree: $isWorktree, '
'state: $state, workdir: $workdir}';
}
/// Returns the configuration file for this repository. /// Returns the configuration file for this repository.
/// ///
/// If a configuration file has not been set, the default config set for the repository /// If a configuration file has not been set, the default config set for the repository

View file

@ -63,6 +63,11 @@ class RevParse {
spec: spec, spec: spec,
)); ));
} }
@override
String toString() {
return 'RevParse{object: $object, reference: $reference}';
}
} }
class RevSpec { class RevSpec {
@ -89,4 +94,9 @@ class RevSpec {
.where((e) => _revSpecPointer.ref.flags & e.value == e.value) .where((e) => _revSpecPointer.ref.flags & e.value == e.value)
.toSet(); .toSet();
} }
@override
String toString() {
return 'RevSpec{from: $from, to: $to, flags: $flags}';
}
} }

View file

@ -75,12 +75,12 @@ class Signature {
other._signaturePointer.ref.when.sign); other._signaturePointer.ref.when.sign);
} }
@override
int get hashCode => _signaturePointer.address.hashCode;
/// Releases memory allocated for signature object. /// Releases memory allocated for signature object.
void free() => bindings.free(_signaturePointer); void free() => bindings.free(_signaturePointer);
@override
int get hashCode => _signaturePointer.address.hashCode;
@override @override
String toString() { String toString() {
return 'Signature{name: $name, email: $email, time: $time, offset: $offset}'; return 'Signature{name: $name, email: $email, time: $time, offset: $offset}';

View file

@ -106,6 +106,6 @@ class Stash {
@override @override
String toString() { String toString() {
return 'Stash{index: $index, message: $message, sha: ${oid.sha}}'; return 'Stash{index: $index, message: $message, oid: $oid}';
} }
} }

View file

@ -279,4 +279,11 @@ class Submodule {
/// Releases memory allocated for submodule object. /// Releases memory allocated for submodule object.
void free() => bindings.free(_submodulePointer); void free() => bindings.free(_submodulePointer);
@override
String toString() {
return 'Submodule{name: $name, path: $path, url: $url, status: $status, '
'branch: $branch, headOid: $headOid, indexOid: $indexOid, workdirOid: $workdirOid, '
'ignore: $ignore, updateRule: $updateRule}';
}
} }

View file

@ -133,4 +133,9 @@ class Tag {
/// Releases memory allocated for tag object. /// Releases memory allocated for tag object.
void free() => bindings.free(_tagPointer); void free() => bindings.free(_tagPointer);
@override
String toString() {
return 'Tag{oid: $oid, name: $name, message: $message, target: $target, tagger: $tagger}';
}
} }

View file

@ -132,6 +132,11 @@ class Tree {
/// Releases memory allocated for tree object. /// Releases memory allocated for tree object.
void free() => bindings.free(_treePointer); void free() => bindings.free(_treePointer);
@override
String toString() {
return 'Tree{oid: $oid, length: $length}';
}
} }
class TreeEntry { class TreeEntry {
@ -194,12 +199,12 @@ class TreeEntry {
1); 1);
} }
@override
int get hashCode => _treeEntryPointer.address.hashCode;
/// Releases memory allocated for tree entry object. /// Releases memory allocated for tree entry object.
void free() => bindings.entryFree(_treeEntryPointer); void free() => bindings.entryFree(_treeEntryPointer);
@override @override
String toString() => 'TreeEntry{oid: $oid, name: $name}'; int get hashCode => _treeEntryPointer.address.hashCode;
@override
String toString() => 'TreeEntry{oid: $oid, name: $name, filemode: $filemode}';
} }

View file

@ -81,4 +81,9 @@ class TreeBuilder {
/// Releases memory allocated for tree builder object and all the entries. /// Releases memory allocated for tree builder object and all the entries.
void free() => bindings.free(_treeBuilderPointer); void free() => bindings.free(_treeBuilderPointer);
@override
String toString() {
return 'TreeBuilder{length: $length}';
}
} }

View file

@ -61,4 +61,9 @@ class Worktree {
/// Releases memory allocated for worktree object. /// Releases memory allocated for worktree object.
void free() => bindings.free(_worktreePointer); void free() => bindings.free(_worktreePointer);
@override
String toString() {
return 'Worktree{name: $name, path: $path}';
}
} }