diff --git a/lib/libgit2dart.dart b/lib/libgit2dart.dart index d5e207f..84dbb7b 100644 --- a/lib/libgit2dart.dart +++ b/lib/libgit2dart.dart @@ -1,5 +1,12 @@ export 'src/repository.dart'; export 'src/config.dart'; +export 'src/commit.dart'; +export 'src/index.dart'; +export 'src/odb.dart'; +export 'src/oid.dart'; +export 'src/reference.dart'; +export 'src/reflog.dart'; +export 'src/tree.dart'; export 'src/signature.dart'; export 'src/error.dart'; export 'src/enums.dart'; diff --git a/lib/src/bindings/commit.dart b/lib/src/bindings/commit.dart index 336a19f..f63c78a 100644 --- a/lib/src/bindings/commit.dart +++ b/lib/src/bindings/commit.dart @@ -10,14 +10,16 @@ import '../util.dart'; /// /// Throws a [LibGit2Error] if error occured. Pointer lookup(Pointer repo, Pointer id) { - final out = calloc>(); - final error = libgit2.git_commit_lookup(out, repo, id); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_commit_lookup(out, repo, id); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the encoding for the message of a commit, as a string representing a standard encoding name. @@ -26,6 +28,7 @@ Pointer lookup(Pointer repo, Pointer id) { /// in that case UTF-8 is assumed. String messageEncoding(Pointer commit) { final result = libgit2.git_commit_message_encoding(commit); + if (result == nullptr) { return 'utf-8'; } else { diff --git a/lib/src/bindings/config.dart b/lib/src/bindings/config.dart index aebb24c..1369c83 100644 --- a/lib/src/bindings/config.dart +++ b/lib/src/bindings/config.dart @@ -11,30 +11,33 @@ import '../util.dart'; /// /// Throws a [LibGit2Error] if error occured. Pointer newConfig() { - final out = calloc>(); - final error = libgit2.git_config_new(out); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_config_new(out); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Create a new config instance containing a single on-disk file /// /// Throws a [LibGit2Error] if error occured. Pointer open(String path) { - final out = calloc>(); - final pathC = path.toNativeUtf8().cast(); - final error = libgit2.git_config_open_ondisk(out, pathC); - calloc.free(pathC); + return using((Arena arena) { + final out = arena>(); + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_config_open_ondisk(out, pathC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Open the global, XDG and system configuration files @@ -45,14 +48,16 @@ Pointer open(String path) { /// /// Throws a [LibGit2Error] if error occured. Pointer openDefault() { - final out = calloc>(); - final error = libgit2.git_config_open_default(out); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_config_open_default(out); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Locate the path to the global configuration file @@ -69,16 +74,17 @@ Pointer openDefault() { /// /// Throws an error if file has not been found. String findGlobal() { - final out = calloc(sizeOf()); - final error = libgit2.git_config_find_global(out); - final path = out.ref.ptr.cast().toDartString(); - calloc.free(out); + return using((Arena arena) { + final out = arena(sizeOf()); + final error = libgit2.git_config_find_global(out); + final path = out.ref.ptr.cast().toDartString(); - if (error != 0) { - throw Error(); - } else { - return path; - } + if (error != 0) { + throw Error(); + } else { + return path; + } + }); } /// Locate the path to the system configuration file @@ -87,16 +93,17 @@ String findGlobal() { /// /// Throws a [LibGit2Error] if error occured. String findSystem() { - final out = calloc(); - final error = libgit2.git_config_find_system(out); - final path = out.ref.ptr.cast().toDartString(); - calloc.free(out); + return using((Arena arena) { + final out = arena(); + final error = libgit2.git_config_find_system(out); + final path = out.ref.ptr.cast().toDartString(); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return path; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return path; + } + }); } /// Locate the path to the global xdg compatible configuration file @@ -106,16 +113,17 @@ String findSystem() { /// /// Throws a [LibGit2Error] if error occured. String findXdg() { - final out = calloc(); - final error = libgit2.git_config_find_xdg(out); - final path = out.ref.ptr.cast().toDartString(); - calloc.free(out); + return using((Arena arena) { + final out = arena(); + final error = libgit2.git_config_find_xdg(out); + final path = out.ref.ptr.cast().toDartString(); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return path; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return path; + } + }); } /// Create a snapshot of the configuration. @@ -126,32 +134,33 @@ String findXdg() { /// /// Throws a [LibGit2Error] if error occured. Pointer snapshot(Pointer config) { - final out = calloc>(); - final error = libgit2.git_config_snapshot(out, config); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_config_snapshot(out, config); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the value of a config variable. /// /// Throws a [LibGit2Error] if error occured. String getValue(Pointer cfg, String variable) { - final out = calloc>(); - final name = variable.toNativeUtf8().cast(); - final error = libgit2.git_config_get_entry(out, cfg, name); - final value = out.value; - calloc.free(out); - calloc.free(name); + return using((Arena arena) { + final out = arena>(); + final name = variable.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_config_get_entry(out, cfg, name); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return value.ref.value.cast().toDartString(); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value.ref.value.cast().toDartString(); + } + }); } /// Set the value of a boolean config variable in the config file with the @@ -159,14 +168,15 @@ String getValue(Pointer cfg, String variable) { /// /// Throws a [LibGit2Error] if error occured. void setBool(Pointer cfg, String variable, bool value) { - final name = variable.toNativeUtf8().cast(); - final valueC = value ? 1 : 0; - final error = libgit2.git_config_set_bool(cfg, name, valueC); - calloc.free(name); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final valueC = value ? 1 : 0; + final error = libgit2.git_config_set_bool(cfg, name, valueC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Set the value of an integer config variable in the config file with the @@ -174,13 +184,14 @@ void setBool(Pointer cfg, String variable, bool value) { /// /// Throws a [LibGit2Error] if error occured. void setInt(Pointer cfg, String variable, int value) { - final name = variable.toNativeUtf8().cast(); - final error = libgit2.git_config_set_int64(cfg, name, value); - calloc.free(name); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_config_set_int64(cfg, name, value); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Set the value of a string config variable in the config file with the @@ -188,34 +199,34 @@ void setInt(Pointer cfg, String variable, int value) { /// /// Throws a [LibGit2Error] if error occured. void setString(Pointer cfg, String variable, String value) { - final name = variable.toNativeUtf8().cast(); - final valueC = value.toNativeUtf8().cast(); - final error = libgit2.git_config_set_string(cfg, name, valueC); - calloc.free(name); - calloc.free(valueC); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final valueC = value.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_config_set_string(cfg, name, valueC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Iterate over all the config variables. Map getEntries(Pointer cfg) { - final iterator = calloc>(); - final entry = calloc>(); - libgit2.git_config_iterator_new(iterator, cfg); - var error = 0; - final entries = {}; + return using((Arena arena) { + final iterator = arena>(); + final entry = arena>(); + libgit2.git_config_iterator_new(iterator, cfg); + var error = 0; + final entries = {}; - while (error != -31) { - error = libgit2.git_config_next(entry, iterator.value); - entries[entry.value.ref.name.cast().toDartString()] = - entry.value.ref.value.cast().toDartString(); - } - calloc.free(entry); - calloc.free(iterator); + while (error != -31) { + error = libgit2.git_config_next(entry, iterator.value); + entries[entry.value.ref.name.cast().toDartString()] = + entry.value.ref.value.cast().toDartString(); + } - return entries; + return entries; + }); } /// Delete a config variable from the config file with the highest level @@ -223,13 +234,14 @@ Map getEntries(Pointer cfg) { /// /// Throws a [LibGit2Error] if error occured. void delete(Pointer cfg, String variable) { - final name = variable.toNativeUtf8().cast(); - final error = libgit2.git_config_delete_entry(cfg, name); - calloc.free(name); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_config_delete_entry(cfg, name); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Iterate over the values of a multivar @@ -241,29 +253,27 @@ List multivarValues( String variable, String? regexp, ) { - final name = variable.toNativeUtf8().cast(); - final regexpC = regexp?.toNativeUtf8().cast() ?? nullptr; - final iterator = calloc>(); - final entry = calloc>(); - libgit2.git_config_multivar_iterator_new(iterator, cfg, name, regexpC); - var error = 0; - final entries = []; + return using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final regexpC = + regexp?.toNativeUtf8(allocator: arena).cast() ?? nullptr; + final iterator = arena>(); + final entry = arena>(); + libgit2.git_config_multivar_iterator_new(iterator, cfg, name, regexpC); + var error = 0; + final entries = []; - while (error == 0) { - error = libgit2.git_config_next(entry, iterator.value); - if (error != -31) { - entries.add(entry.value.ref.value.cast().toDartString()); - } else { - break; + while (error == 0) { + error = libgit2.git_config_next(entry, iterator.value); + if (error != -31) { + entries.add(entry.value.ref.value.cast().toDartString()); + } else { + break; + } } - } - calloc.free(name); - calloc.free(regexpC); - calloc.free(iterator); - calloc.free(entry); - - return entries; + return entries; + }); } /// Set the value of a multivar config variable in the config file with the @@ -276,14 +286,12 @@ void setMultivar( String regexp, String value, ) { - final name = variable.toNativeUtf8().cast(); - final regexpC = regexp.toNativeUtf8().cast(); - final valueC = value.toNativeUtf8().cast(); - libgit2.git_config_set_multivar(cfg, name, regexpC, valueC); - - calloc.free(name); - calloc.free(regexpC); - calloc.free(valueC); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final regexpC = regexp.toNativeUtf8(allocator: arena).cast(); + final valueC = value.toNativeUtf8(allocator: arena).cast(); + libgit2.git_config_set_multivar(cfg, name, regexpC, valueC); + }); } /// Deletes one or several values from a multivar in the config file @@ -295,12 +303,11 @@ void deleteMultivar( String variable, String regexp, ) { - final name = variable.toNativeUtf8().cast(); - final regexpC = regexp.toNativeUtf8().cast(); - libgit2.git_config_delete_multivar(cfg, name, regexpC); - - calloc.free(name); - calloc.free(regexpC); + using((Arena arena) { + final name = variable.toNativeUtf8(allocator: arena).cast(); + final regexpC = regexp.toNativeUtf8(allocator: arena).cast(); + libgit2.git_config_delete_multivar(cfg, name, regexpC); + }); } /// Free the configuration and its associated memory and files. diff --git a/lib/src/bindings/index.dart b/lib/src/bindings/index.dart index 9a9eb34..01cafa2 100644 --- a/lib/src/bindings/index.dart +++ b/lib/src/bindings/index.dart @@ -62,11 +62,12 @@ Pointer writeTree(Pointer index) { /// Find the first position of any entries which point to given path in the Git index. bool find(Pointer index, String path) { - final pathC = path.toNativeUtf8().cast(); - final result = libgit2.git_index_find(nullptr, index, pathC); - calloc.free(pathC); + return using((Arena arena) { + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final result = libgit2.git_index_find(nullptr, index, pathC); - return result == git_error_code.GIT_ENOTFOUND ? false : true; + return result == git_error_code.GIT_ENOTFOUND ? false : true; + }); } /// Get the count of entries currently in the index. @@ -97,15 +98,16 @@ Pointer getByPath( String path, int stage, ) { - final pathC = path.toNativeUtf8().cast(); - final result = libgit2.git_index_get_bypath(index, pathC, stage); - calloc.free(pathC); + return using((Arena arena) { + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final result = libgit2.git_index_get_bypath(index, pathC, stage); - if (result == nullptr) { - throw ArgumentError.value('$path was not found'); - } else { - return result; - } + if (result == nullptr) { + throw ArgumentError.value('$path was not found'); + } else { + return result; + } + }); } /// Clear the contents (all the entries) of an index object. @@ -150,13 +152,14 @@ void add(Pointer index, Pointer sourceEntry) { /// /// Throws a [LibGit2Error] if error occured. void addByPath(Pointer index, String path) { - final pathC = path.toNativeUtf8().cast(); - final error = libgit2.git_index_add_bypath(index, pathC); - calloc.free(pathC); + using((Arena arena) { + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_index_add_bypath(index, pathC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Add or update index entries matching files in the working directory. @@ -169,35 +172,32 @@ void addByPath(Pointer index, String path) { /// /// Throws a [LibGit2Error] if error occured. void addAll(Pointer index, List pathspec) { - var pathspecC = calloc(); - final List> pathPointers = - pathspec.map((e) => e.toNativeUtf8().cast()).toList(); - final Pointer> strArray = calloc(pathspec.length); + using((Arena arena) { + var pathspecC = arena(); + final List> pathPointers = pathspec + .map((e) => e.toNativeUtf8(allocator: arena).cast()) + .toList(); + final Pointer> strArray = arena(pathspec.length); - for (var i = 0; i < pathspec.length; i++) { - strArray[i] = pathPointers[i]; - } + for (var i = 0; i < pathspec.length; i++) { + strArray[i] = pathPointers[i]; + } - pathspecC.ref.strings = strArray; - pathspecC.ref.count = pathspec.length; + pathspecC.ref.strings = strArray; + pathspecC.ref.count = pathspec.length; - final error = libgit2.git_index_add_all( - index, - pathspecC, - 0, - nullptr, - nullptr, - ); + final error = libgit2.git_index_add_all( + index, + pathspecC, + 0, + nullptr, + nullptr, + ); - calloc.free(pathspecC); - calloc.free(strArray); - for (var p in pathPointers) { - calloc.free(p); - } - - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Write an existing index object from memory back to disk using an atomic file lock. @@ -215,47 +215,45 @@ void write(Pointer index) { /// /// Throws a [LibGit2Error] if error occured. void remove(Pointer index, String path, int stage) { - final pathC = path.toNativeUtf8().cast(); - final error = libgit2.git_index_remove(index, pathC, stage); - calloc.free(pathC); + using((Arena arena) { + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_index_remove(index, pathC, stage); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Remove all matching index entries. /// /// Throws a [LibGit2Error] if error occured. void removeAll(Pointer index, List pathspec) { - final pathspecC = calloc(); - final List> pathPointers = - pathspec.map((e) => e.toNativeUtf8().cast()).toList(); - final Pointer> strArray = calloc(pathspec.length); + using((Arena arena) { + final pathspecC = arena(); + final List> pathPointers = pathspec + .map((e) => e.toNativeUtf8(allocator: arena).cast()) + .toList(); + final Pointer> strArray = arena(pathspec.length); - for (var i = 0; i < pathspec.length; i++) { - strArray[i] = pathPointers[i]; - } + for (var i = 0; i < pathspec.length; i++) { + strArray[i] = pathPointers[i]; + } - pathspecC.ref.strings = strArray; - pathspecC.ref.count = pathspec.length; + pathspecC.ref.strings = strArray; + pathspecC.ref.count = pathspec.length; - final error = libgit2.git_index_remove_all( - index, - pathspecC, - nullptr, - nullptr, - ); + final error = libgit2.git_index_remove_all( + index, + pathspecC, + nullptr, + nullptr, + ); - calloc.free(pathspecC); - calloc.free(strArray); - for (var p in pathPointers) { - calloc.free(p); - } - - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Get the repository this index relates to. diff --git a/lib/src/bindings/oid.dart b/lib/src/bindings/oid.dart index 1cd4216..7ee200b 100644 --- a/lib/src/bindings/oid.dart +++ b/lib/src/bindings/oid.dart @@ -42,16 +42,17 @@ Pointer fromSHA(String hex) { /// /// Throws a [LibGit2Error] if error occured. String toSHA(Pointer id) { - final out = calloc.allocate(40); - final error = libgit2.git_oid_fmt(out, id); - final result = out.cast().toDartString(length: 40); - malloc.free(out); + return using((Arena arena) { + final out = arena(40); + final error = libgit2.git_oid_fmt(out, id); + final result = out.cast().toDartString(length: 40); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return result; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return result; + } + }); } /// Compare two oid structures. diff --git a/lib/src/bindings/reference.dart b/lib/src/bindings/reference.dart index 41e81fa..2c5faa8 100644 --- a/lib/src/bindings/reference.dart +++ b/lib/src/bindings/reference.dart @@ -35,14 +35,16 @@ Pointer target(Pointer ref) { /// /// Throws a [LibGit2Error] if error occured. Pointer resolve(Pointer ref) { - final out = calloc>(); - final error = libgit2.git_reference_resolve(out, ref); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_reference_resolve(out, ref); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Lookup a reference by name in a repository. @@ -53,16 +55,17 @@ Pointer resolve(Pointer ref) { /// /// Throws a [LibGit2Error] if error occured. Pointer lookup(Pointer repo, String name) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final error = libgit2.git_reference_lookup(out, repo, nameC); - calloc.free(nameC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_reference_lookup(out, repo, nameC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Lookup a reference by DWIMing its short name. @@ -72,24 +75,27 @@ Pointer lookup(Pointer repo, String name) { /// /// Throws a [LibGit2Error] if error occured. Pointer lookupDWIM(Pointer repo, String name) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final error = libgit2.git_reference_dwim(out, repo, nameC); - calloc.free(nameC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_reference_dwim(out, repo, nameC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the full name of a reference. String name(Pointer ref) { - var result = calloc(); - result = libgit2.git_reference_name(ref); + return using((Arena arena) { + var result = arena(); + result = libgit2.git_reference_name(ref); - return result.cast().toDartString(); + return result.cast().toDartString(); + }); } /// Get the reference's short name. @@ -120,25 +126,25 @@ Pointer rename( bool force, String? logMessage, ) { - final out = calloc>(); - final newNameC = newName.toNativeUtf8().cast(); - final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; - final error = libgit2.git_reference_rename( - out, - ref, - newNameC, - forceC, - logMessageC, - ); - calloc.free(newNameC); - calloc.free(logMessageC); + return using((Arena arena) { + final out = arena>(); + final newNameC = newName.toNativeUtf8(allocator: arena).cast(); + final forceC = force == true ? 1 : 0; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; + final error = libgit2.git_reference_rename( + out, + ref, + newNameC, + forceC, + logMessageC, + ); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Fill a list with all the references that can be found in a repository. @@ -148,36 +154,38 @@ Pointer rename( /// /// Throws a [LibGit2Error] if error occured. List list(Pointer repo) { - var array = calloc(); - final error = libgit2.git_reference_list(array, repo); - var result = []; + return using((Arena arena) { + var array = arena(); + final error = libgit2.git_reference_list(array, repo); + var result = []; - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - for (var i = 0; i < array.ref.count; i++) { - result.add( - array.ref.strings.elementAt(i).value.cast().toDartString()); + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + for (var i = 0; i < array.ref.count; i++) { + result.add( + array.ref.strings.elementAt(i).value.cast().toDartString()); + } } - } - calloc.free(array); - return result; + return result; + }); } /// Check if a reflog exists for the specified reference. /// /// Throws a [LibGit2Error] if error occured. bool hasLog(Pointer repo, String name) { - final refname = name.toNativeUtf8().cast(); - final error = libgit2.git_reference_has_log(repo, refname); - calloc.free(refname); + return using((Arena arena) { + final refname = name.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_reference_has_log(repo, refname); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return error == 1 ? true : false; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return error == 1 ? true : false; + } + }); } /// Check if a reference is a local branch. @@ -233,26 +241,26 @@ Pointer createDirect( bool force, String? logMessage, ) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; - final error = libgit2.git_reference_create( - out, - repo, - nameC, - oid, - forceC, - logMessageC, - ); - calloc.free(nameC); - calloc.free(logMessageC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final forceC = force == true ? 1 : 0; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; + final error = libgit2.git_reference_create( + out, + repo, + nameC, + oid, + forceC, + logMessageC, + ); - if (error < 0) { - throw (LibGit2Error(libgit2.git_error_last())); - } else { - return out.value; - } + if (error < 0) { + throw (LibGit2Error(libgit2.git_error_last())); + } else { + return out.value; + } + }); } /// Create a new symbolic reference. @@ -284,28 +292,27 @@ Pointer createSymbolic( bool force, String? logMessage, ) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final targetC = target.toNativeUtf8().cast(); - final forceC = force == true ? 1 : 0; - final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; - final error = libgit2.git_reference_symbolic_create( - out, - repo, - nameC, - targetC, - forceC, - logMessageC, - ); - calloc.free(nameC); - calloc.free(targetC); - calloc.free(logMessageC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final targetC = target.toNativeUtf8().cast(); + final forceC = force == true ? 1 : 0; + final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; + final error = libgit2.git_reference_symbolic_create( + out, + repo, + nameC, + targetC, + forceC, + logMessageC, + ); - if (error < 0) { - throw (LibGit2Error(libgit2.git_error_last())); - } else { - return out.value; - } + if (error < 0) { + throw (LibGit2Error(libgit2.git_error_last())); + } else { + return out.value; + } + }); } /// Delete an existing reference. @@ -338,16 +345,18 @@ Pointer setTarget( Pointer oid, String? logMessage, ) { - final out = calloc>(); - final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; - final error = libgit2.git_reference_set_target(out, ref, oid, logMessageC); - calloc.free(logMessageC); + return using((Arena arena) { + final out = arena>(); + final logMessageC = + logMessage?.toNativeUtf8(allocator: arena).cast() ?? nullptr; + final error = libgit2.git_reference_set_target(out, ref, oid, logMessageC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Create a new reference with the same name as the given reference but a different @@ -366,19 +375,20 @@ Pointer setTargetSymbolic( String target, String? logMessage, ) { - final out = calloc>(); - final targetC = target.toNativeUtf8().cast(); - final logMessageC = logMessage?.toNativeUtf8().cast() ?? nullptr; - final error = - libgit2.git_reference_symbolic_set_target(out, ref, targetC, logMessageC); - calloc.free(targetC); - calloc.free(logMessageC); + return using((Arena arena) { + final out = arena>(); + final targetC = target.toNativeUtf8(allocator: arena).cast(); + final logMessageC = + logMessage?.toNativeUtf8(allocator: arena).cast() ?? nullptr; + final error = libgit2.git_reference_symbolic_set_target( + out, ref, targetC, logMessageC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Compare two references. @@ -397,10 +407,12 @@ bool compare(Pointer ref1, Pointer ref2) { /// the characters '~', '^', ':', '\', '?', '[', and '*', and the sequences ".." /// and "@{" which have special meaning to revparse. bool isValidName(String name) { - final refname = name.toNativeUtf8().cast(); - final result = libgit2.git_reference_is_valid_name(refname); - calloc.free(refname); - return result == 1 ? true : false; + return using((Arena arena) { + final refname = name.toNativeUtf8(allocator: arena).cast(); + final result = libgit2.git_reference_is_valid_name(refname); + + return result == 1 ? true : false; + }); } /// Free the given reference. diff --git a/lib/src/bindings/reflog.dart b/lib/src/bindings/reflog.dart index ba6cb88..0a1894c 100644 --- a/lib/src/bindings/reflog.dart +++ b/lib/src/bindings/reflog.dart @@ -13,16 +13,17 @@ import '../util.dart'; /// /// Throws a [LibGit2Error] if error occured. Pointer read(Pointer repo, String name) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final error = libgit2.git_reflog_read(out, repo, nameC); - calloc.free(nameC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_reflog_read(out, repo, nameC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the number of log entries in a reflog. diff --git a/lib/src/bindings/repository.dart b/lib/src/bindings/repository.dart index ca44f9a..68c0942 100644 --- a/lib/src/bindings/repository.dart +++ b/lib/src/bindings/repository.dart @@ -10,16 +10,17 @@ import '../util.dart'; /// /// Throws a [LibGit2Error] if error occured. Pointer open(String path) { - final out = calloc>(); - final pathC = path.toNativeUtf8().cast(); - final error = libgit2.git_repository_open(out, pathC); - calloc.free(pathC); + return using((Arena arena) { + final out = arena>(); + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_repository_open(out, pathC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } - - return out.value; + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Attempt to open an already-existing bare repository at [bare_path]. @@ -28,16 +29,17 @@ Pointer open(String path) { /// /// Throws a [LibGit2Error] if error occured. Pointer openBare(String barePath) { - final out = calloc>(); - final barePathC = barePath.toNativeUtf8().cast(); - final error = libgit2.git_repository_open_bare(out, barePathC); - calloc.free(barePathC); + return using((Arena arena) { + final out = arena>(); + final barePathC = barePath.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_repository_open_bare(out, barePathC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } - - return out.value; + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Look for a git repository and return its path. The lookup start from [startPath] @@ -48,41 +50,40 @@ Pointer openBare(String barePath) { /// /// Throws a [LibGit2Error] if error occured. String discover(String startPath, String ceilingDirs) { - final out = calloc(sizeOf()); - final startPathC = startPath.toNativeUtf8().cast(); - final ceilingDirsC = ceilingDirs.toNativeUtf8().cast(); - final error = - libgit2.git_repository_discover(out, startPathC, 0, ceilingDirsC); - var result = ''; + return using((Arena arena) { + final out = arena(sizeOf()); + final startPathC = startPath.toNativeUtf8(allocator: arena).cast(); + final ceilingDirsC = + ceilingDirs.toNativeUtf8(allocator: arena).cast(); + final error = + libgit2.git_repository_discover(out, startPathC, 0, ceilingDirsC); - if (error == git_error_code.GIT_ENOTFOUND) { - return result; - } else if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } - - result = out.ref.ptr.cast().toDartString(); - calloc.free(out); - calloc.free(startPathC); - calloc.free(ceilingDirsC); - - return result; + if (error == git_error_code.GIT_ENOTFOUND) { + return ''; + } else if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.ref.ptr.cast().toDartString(); + } + }); } /// Creates a new Git repository in the given folder. /// /// Throws a [LibGit2Error] if error occured. Pointer init(String path, bool isBare) { - final out = calloc>(); - final pathC = path.toNativeUtf8().cast(); - final isBareC = isBare ? 1 : 0; - final error = libgit2.git_repository_init(out, pathC, isBareC); + return using((Arena arena) { + final out = arena>(); + final pathC = path.toNativeUtf8(allocator: arena).cast(); + final isBareC = isBare ? 1 : 0; + final error = libgit2.git_repository_init(out, pathC, isBareC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } - - return out.value; + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Returns the path to the `.git` folder for normal repositories or the @@ -124,13 +125,15 @@ String getNamespace(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. void setNamespace(Pointer repo, String? namespace) { - final nmspace = namespace?.toNativeUtf8().cast() ?? nullptr; - final error = libgit2.git_repository_set_namespace(repo, nmspace); - calloc.free(nmspace); + using((Arena arena) { + final nmspace = + namespace?.toNativeUtf8(allocator: arena).cast() ?? nullptr; + final error = libgit2.git_repository_set_namespace(repo, nmspace); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Check if a repository is bare or not. @@ -162,14 +165,16 @@ bool isEmpty(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer head(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_head(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_head(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Check if a repository's HEAD is detached. @@ -208,33 +213,32 @@ bool isBranchUnborn(Pointer repo) { /// If both are set, this name and email will be used to write to the reflog. /// Pass NULL to unset. When unset, the identity will be taken from the repository's configuration. void setIdentity(Pointer repo, String? name, String? email) { - final nameC = name?.toNativeUtf8().cast() ?? nullptr; - final emailC = email?.toNativeUtf8().cast() ?? nullptr; + using((Arena arena) { + final nameC = name?.toNativeUtf8(allocator: arena).cast() ?? nullptr; + final emailC = + email?.toNativeUtf8(allocator: arena).cast() ?? nullptr; - libgit2.git_repository_set_ident(repo, nameC, emailC); - - calloc.free(nameC); - calloc.free(emailC); + libgit2.git_repository_set_ident(repo, nameC, emailC); + }); } /// Retrieve the configured identity to use for reflogs. Map identity(Pointer repo) { - final name = calloc>(); - final email = calloc>(); - libgit2.git_repository_ident(name, email, repo); - var identity = {}; + return using((Arena arena) { + final name = arena>(); + final email = arena>(); + libgit2.git_repository_ident(name, email, repo); + var identity = {}; + + if (name.value == nullptr && email.value == nullptr) { + return identity; + } else { + identity[name.value.cast().toDartString()] = + email.value.cast().toDartString(); + } - if (name.value == nullptr && email.value == nullptr) { return identity; - } else { - identity[name.value.cast().toDartString()] = - email.value.cast().toDartString(); - } - - calloc.free(name); - calloc.free(email); - - return identity; + }); } /// Get the configuration file for this repository. @@ -246,14 +250,16 @@ Map identity(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer config(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_config(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_config(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get a snapshot of the repository's configuration. @@ -265,14 +271,16 @@ Pointer config(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer configSnapshot(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_config_snapshot(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_config_snapshot(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the Index file for this repository. @@ -284,14 +292,16 @@ Pointer configSnapshot(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer index(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_index(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_index(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Determine if the repository was a shallow clone. @@ -318,16 +328,16 @@ bool isWorktree(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. String message(Pointer repo) { - final out = calloc(); - final error = libgit2.git_repository_message(out, repo); - final result = out.ref.ptr.cast().toDartString(); - calloc.free(out); + return using((Arena arena) { + final out = arena(sizeOf()); + final error = libgit2.git_repository_message(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return result; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.ref.ptr.cast().toDartString(); + } + }); } /// Remove git's prepared message. @@ -344,14 +354,16 @@ void removeMessage(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer odb(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_odb(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_odb(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Get the Reference Database Backend for this repository. @@ -364,14 +376,16 @@ Pointer odb(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer refdb(Pointer repo) { - final out = calloc>(); - final error = libgit2.git_repository_refdb(out, repo); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_refdb(out, repo); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Make the repository HEAD point to the specified reference. @@ -387,13 +401,14 @@ Pointer refdb(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. void setHead(Pointer repo, String ref) { - final refname = ref.toNativeUtf8().cast(); - final error = libgit2.git_repository_set_head(repo, refname); - calloc.free(refname); + using((Arena arena) { + final refname = ref.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_repository_set_head(repo, refname); - if (error < 0 && error != -1) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Make the repository HEAD directly point to the commit. @@ -408,7 +423,7 @@ void setHead(Pointer repo, String ref) { void setHeadDetached(Pointer repo, Pointer commitish) { final error = libgit2.git_repository_set_head_detached(repo, commitish); - if (error < 0 && (error != -1 || error != -3)) { + if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); } } @@ -427,7 +442,7 @@ void setHeadDetachedFromAnnotated( final error = libgit2.git_repository_set_head_detached_from_annotated(repo, commitish); - if (error < 0 && (error != -1 || error != -3)) { + if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); } } @@ -447,15 +462,16 @@ void setWorkdir( String path, bool updateGitlink, ) { - final workdir = path.toNativeUtf8().cast(); - final updateGitlinkC = updateGitlink ? 1 : 0; - final error = - libgit2.git_repository_set_workdir(repo, workdir, updateGitlinkC); - calloc.free(workdir); + using((Arena arena) { + final workdir = path.toNativeUtf8(allocator: arena).cast(); + final updateGitlinkC = updateGitlink ? 1 : 0; + final error = + libgit2.git_repository_set_workdir(repo, workdir, updateGitlinkC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + }); } /// Determines the status of a git repository - ie, whether an operation @@ -495,14 +511,16 @@ String workdir(Pointer repo) { /// /// Throws a [LibGit2Error] if error occured. Pointer wrapODB(Pointer odb) { - final out = calloc>(); - final error = libgit2.git_repository_wrap_odb(out, odb); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_repository_wrap_odb(out, odb); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Find a single object, as specified by a [spec] string. @@ -510,24 +528,25 @@ Pointer wrapODB(Pointer odb) { /// The returned object should be released when no longer needed. /// /// Throws a [LibGit2Error] if error occured. -Pointer> revParseSingle( +Pointer revParseSingle( Pointer repo, String spec, ) { - final out = calloc>(); - final specC = spec.toNativeUtf8().cast(); - final error = libgit2.git_revparse_single( - out, - repo, - specC, - ); - calloc.free(specC); + return using((Arena arena) { + final out = arena>(); + final specC = spec.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_revparse_single( + out, + repo, + specC, + ); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } - - return out; + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Free a previously allocated repository. diff --git a/lib/src/bindings/signature.dart b/lib/src/bindings/signature.dart index a3a0364..df2fd84 100644 --- a/lib/src/bindings/signature.dart +++ b/lib/src/bindings/signature.dart @@ -16,36 +16,36 @@ Pointer create( int time, int offset, ) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final emailC = email.toNativeUtf8().cast(); - final error = libgit2.git_signature_new(out, nameC, emailC, time, offset); - calloc.free(nameC); - calloc.free(emailC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final emailC = email.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_signature_new(out, nameC, emailC, time, offset); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Create a new action signature with a timestamp of 'now'. /// /// Throws a [LibGit2Error] if error occured. Pointer now(String name, String email) { - final out = calloc>(); - final nameC = name.toNativeUtf8().cast(); - final emailC = email.toNativeUtf8().cast(); - final error = libgit2.git_signature_now(out, nameC, emailC); - calloc.free(nameC); - calloc.free(emailC); + return using((Arena arena) { + final out = arena>(); + final nameC = name.toNativeUtf8(allocator: arena).cast(); + final emailC = email.toNativeUtf8(allocator: arena).cast(); + final error = libgit2.git_signature_now(out, nameC, emailC); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Free an existing signature. diff --git a/lib/src/bindings/tree.dart b/lib/src/bindings/tree.dart index 0935e45..fbeea80 100644 --- a/lib/src/bindings/tree.dart +++ b/lib/src/bindings/tree.dart @@ -11,14 +11,16 @@ Pointer id(Pointer tree) => libgit2.git_tree_id(tree); /// /// Throws a [LibGit2Error] if error occured. Pointer lookup(Pointer repo, Pointer id) { - final out = calloc>(); - final error = libgit2.git_tree_lookup(out, repo, id); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_tree_lookup(out, repo, id); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Lookup a tree object from the repository, given a prefix of its identifier (short id). @@ -29,14 +31,16 @@ Pointer lookupPrefix( Pointer id, int len, ) { - final out = calloc>(); - final error = libgit2.git_tree_lookup_prefix(out, repo, id, len); + return using((Arena arena) { + final out = arena>(); + final error = libgit2.git_tree_lookup_prefix(out, repo, id, len); - if (error < 0) { - throw LibGit2Error(libgit2.git_error_last()); - } else { - return out.value; - } + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } else { + return out.value; + } + }); } /// Close an open tree. diff --git a/test/commit_test.dart b/test/commit_test.dart index 6f48a1c..a694967 100644 --- a/test/commit_test.dart +++ b/test/commit_test.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:test/test.dart'; import 'package:libgit2dart/libgit2dart.dart'; -import 'package:libgit2dart/src/commit.dart'; import 'helpers/util.dart'; void main() { diff --git a/test/config_test.dart b/test/config_test.dart index 93e7e5a..4588674 100644 --- a/test/config_test.dart +++ b/test/config_test.dart @@ -1,8 +1,7 @@ import 'dart:io'; import 'package:test/test.dart'; -import 'package:libgit2dart/src/config.dart'; -import 'package:libgit2dart/src/error.dart'; +import 'package:libgit2dart/libgit2dart.dart'; void main() { final tmpDir = Directory.systemTemp.path; diff --git a/test/index_test.dart b/test/index_test.dart index 684e042..a25882a 100644 --- a/test/index_test.dart +++ b/test/index_test.dart @@ -1,9 +1,7 @@ import 'dart:io'; -import 'package:libgit2dart/libgit2dart.dart'; import 'package:test/test.dart'; -import 'package:libgit2dart/src/index.dart'; - +import 'package:libgit2dart/libgit2dart.dart'; import 'helpers/util.dart'; void main() { diff --git a/test/odb_test.dart b/test/odb_test.dart index 329b9d4..ff9a8a5 100644 --- a/test/odb_test.dart +++ b/test/odb_test.dart @@ -1,10 +1,7 @@ import 'dart:io'; import 'package:test/test.dart'; -import 'package:libgit2dart/src/repository.dart'; -import 'package:libgit2dart/src/odb.dart'; -import 'package:libgit2dart/src/oid.dart'; - +import 'package:libgit2dart/libgit2dart.dart'; import 'helpers/util.dart'; void main() { diff --git a/test/oid_test.dart b/test/oid_test.dart index 36f8a40..829fa8c 100644 --- a/test/oid_test.dart +++ b/test/oid_test.dart @@ -1,5 +1,5 @@ import 'package:test/test.dart'; -import 'package:libgit2dart/src/oid.dart'; +import 'package:libgit2dart/libgit2dart.dart'; void main() { const sha = '9d81c715ff606057fa448e558c7458467a86c8c7'; @@ -20,8 +20,7 @@ void main() { test('returns sha hex string', () { final oid = Oid.fromSHA(sha); - final hex = oid.sha; - expect(hex, equals(sha)); + expect(oid.sha, equals(sha)); }); group('compare', () { diff --git a/test/reflog_test.dart b/test/reflog_test.dart index da136cd..9d564ad 100644 --- a/test/reflog_test.dart +++ b/test/reflog_test.dart @@ -1,9 +1,7 @@ import 'dart:io'; import 'package:test/test.dart'; -import 'package:libgit2dart/src/repository.dart'; -import 'package:libgit2dart/src/reflog.dart'; - +import 'package:libgit2dart/libgit2dart.dart'; import 'helpers/util.dart'; void main() { diff --git a/test/repository_test.dart b/test/repository_test.dart index cc2f8be..e43384e 100644 --- a/test/repository_test.dart +++ b/test/repository_test.dart @@ -214,6 +214,11 @@ void main() { }); group('setHead', () { + late Reference head; + + setUp(() => head = repo.head); + tearDown(() => head.free()); + test('successfully sets head when target is reference', () { expect(repo.head.name, 'refs/heads/master'); expect(repo.head.target.sha, lastCommit);