feat(reference): add ability to get shorthand name of reference

This commit is contained in:
Aleksey Kulikov 2021-08-06 17:17:45 +03:00
parent 371d52b7f8
commit a1884b4dac
3 changed files with 30 additions and 1 deletions

View file

@ -73,6 +73,15 @@ String name(Pointer<git_reference> ref) {
return result.cast<Utf8>().toDartString();
}
/// Get the reference's short name.
///
/// This will transform the reference name into a name "human-readable" version.
/// If no shortname is appropriate, it will return the full name.
String shorthand(Pointer<git_reference> ref) {
final result = libgit2.git_reference_shorthand(ref);
return result.cast<Utf8>().toDartString();
}
/// Fill a list with all the references that can be found in a repository.
///
/// The string array will be filled with the names of all references;

View file

@ -165,6 +165,12 @@ class Reference {
/// Returns the full name of a reference.
String get name => bindings.name(_refPointer);
/// Returns the reference's short name.
///
/// This will transform the reference name into a name "human-readable" version.
/// If no shortname is appropriate, it will return the full name.
String get shorthand => bindings.shorthand(_refPointer);
/// Returns a list with all the references that can be found in a repository.
///
/// Throws a [LibGit2Error] if error occured.

View file

@ -272,11 +272,25 @@ void main() {
ref.free();
});
test('returns the full name of a reference', () {
test('returns the full name', () {
expect(repo.head.name, 'refs/heads/master');
repo.head.free();
});
test('returns the short name', () {
final ref = repo.createReference(
name: 'refs/remotes/origin/master',
target: lastCommit,
);
expect(repo.head.shorthand, 'master');
expect(ref.shorthand, 'origin/master');
repo.head.free();
ref.delete();
ref.free();
});
test('returns a map with all the references of repository', () {
expect(
repo.references,