@@ -4,7 +4,6 @@ var promisify = require("promisify-node");
44var fse = promisify ( require ( "fs-extra" ) ) ;
55
66var garbageCollect = require ( "../utils/garbage_collect.js" ) ;
7- var leakTest = require ( "../utils/leak_test" ) ;
87
98var local = path . join . bind ( path , __dirname ) ;
109
@@ -368,11 +367,11 @@ describe("Commit", function() {
368367 } ) . then ( function ( reflog ) {
369368 var reflogEntry = reflog . entryByIndex ( 0 ) ;
370369 assert . equal (
371- reflogEntry . message ( ) ,
370+ NodeGit . Reflog . entryMessage ( reflogEntry ) ,
372371 customReflogMessage
373372 ) ;
374373 assert . equal (
375- reflogEntry . idNew ( ) . toString ( ) ,
374+ NodeGit . Reflog . entryIdNew ( reflogEntry ) . toString ( ) ,
376375 oid
377376 ) ;
378377 // only setTarget should have added to the entrycount
@@ -628,9 +627,30 @@ describe("Commit", function() {
628627 it ( "does not leak" , function ( ) {
629628 var test = this ;
630629
631- return leakTest ( NodeGit . Commit , function ( ) {
632- return NodeGit . Commit . lookup ( test . repository , oid ) ;
633- } ) ;
630+ garbageCollect ( ) ;
631+ var Commit = NodeGit . Commit ;
632+ var startSelfFreeingCount = Commit . getSelfFreeingInstanceCount ( ) ;
633+ var startNonSelfFreeingCount = Commit . getNonSelfFreeingConstructedCount ( ) ;
634+
635+ var resolve ;
636+ var promise = new Promise ( function ( _resolve ) { resolve = _resolve ; } ) ;
637+
638+ NodeGit . Commit . lookup ( test . repository , oid )
639+ . then ( function ( ) {
640+ // get out of this promise chain to help GC get rid of the commit
641+ setTimeout ( resolve , 0 ) ;
642+ } ) ;
643+
644+ return promise
645+ . then ( function ( ) {
646+ garbageCollect ( ) ;
647+ var endSelfFreeingCount = Commit . getSelfFreeingInstanceCount ( ) ;
648+ var endNonSelfFreeingCount = Commit . getNonSelfFreeingConstructedCount ( ) ;
649+ // any new self-freeing commits should have been freed
650+ assert . equal ( startSelfFreeingCount , endSelfFreeingCount ) ;
651+ // no new non-self-freeing commits should have been constructed
652+ assert . equal ( startNonSelfFreeingCount , endNonSelfFreeingCount ) ;
653+ } ) ;
634654 } ) ;
635655
636656 it ( "duplicates signature" , function ( ) {
0 commit comments