@@ -2,6 +2,7 @@ var assert = require("assert");
22var path = require ( "path" ) ;
33var local = path . join . bind ( path , __dirname ) ;
44
5+ var garbageCollect = require ( "../utils/garbage_collect.js" ) ;
56var exec = require ( "../../utils/execPromise" ) ;
67
78describe ( "Signature" , function ( ) {
@@ -83,4 +84,26 @@ describe("Signature", function() {
8384 } ) ;
8485 } ) ;
8586 } ) ;
87+
88+ it ( "duplicates time" , function ( ) {
89+ garbageCollect ( ) ;
90+ var Time = NodeGit . Time ;
91+ var startSelfFreeingCount = Time . getSelfFreeingInstanceCount ( ) ;
92+ var startNonSelfFreeingCount =
93+ Time . getNonSelfFreeingConstructedCount ( ) ;
94+ var time = Signature . now ( name , email ) . when ( ) ;
95+
96+ garbageCollect ( ) ;
97+ var endSelfFreeingCount = Time . getSelfFreeingInstanceCount ( ) ;
98+ var endNonSelfFreeingCount = Time . getNonSelfFreeingConstructedCount ( ) ;
99+ // we should get one duplicated, self-freeing time
100+ assert . equal ( startSelfFreeingCount + 1 , endSelfFreeingCount ) ;
101+ assert . equal ( startNonSelfFreeingCount , endNonSelfFreeingCount ) ;
102+
103+ time = null ;
104+ garbageCollect ( ) ;
105+ endSelfFreeingCount = Time . getSelfFreeingInstanceCount ( ) ;
106+ // the self-freeing time should get freed
107+ assert . equal ( startSelfFreeingCount , endSelfFreeingCount ) ;
108+ } ) ;
86109} ) ;
0 commit comments