| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -4,6 +4,7 @@ var promisify = require("promisify-node"); | |||
| 4 | 4 | var fse = promisify(require("fs-extra")); | |
| 5 | 5 | ||
| 6 | 6 | var garbageCollect = require("../utils/garbage_collect.js"); | |
| 7 | + var leakTest = require("../utils/leak_test"); | ||
| 7 | 8 | ||
| 8 | 9 | var local = path.join.bind(path, __dirname); | |
| 9 | 10 | ||
@@ -627,30 +628,9 @@ describe("Commit", function() { | |||
| 627 | 628 | it("does not leak", function() { | |
| 628 | 629 | var test = this; | |
| 629 | 630 | ||
| 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 | - }); | ||
| 631 | + return leakTest(NodeGit.Commit, function() { | ||
| 632 | + return NodeGit.Commit.lookup(test.repository, oid); | ||
| 633 | + }); | ||
| 654 | 634 | }); | |
| 655 | 635 | ||
| 656 | 636 | it("duplicates signature", function() { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,6 +2,8 @@ var assert = require("assert"); | |||
| 2 | 2 | var path = require("path"); | |
| 3 | 3 | var local = path.join.bind(path, __dirname); | |
| 4 | 4 | ||
| 5 | + var leakTest = require("../utils/leak_test"); | ||
| 6 | + | ||
| 5 | 7 | describe("Oid", function() { | |
| 6 | 8 | var NodeGit = require("../../"); | |
| 7 | 9 | var Oid = NodeGit.Oid; | |
@@ -70,4 +72,12 @@ describe("Oid", function() { | |||
| 70 | 72 | var oid2 = Oid.fromString("13c633665257696a3800b0a39ff636b4593f918f"); | |
| 71 | 73 | assert(!this.oid.equal(oid2)); | |
| 72 | 74 | }); | |
| 75 | + | ||
| 76 | + it("does not leak", function() { | ||
| 77 | + return leakTest(Oid, function() { | ||
| 78 | + return Promise.resolve( | ||
| 79 | + Oid.fromString("13c633665257696a3800b0a39ff636b4593f918f") | ||
| 80 | + ); | ||
| 81 | + }); | ||
| 82 | + }); | ||
| 73 | 83 | }); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,33 @@ | |||
| 1 | + var assert = require("assert"); | ||
| 2 | + | ||
| 3 | + var garbageCollect = require("./garbage_collect"); | ||
| 4 | + | ||
| 5 | + function leakTest(Type, getInstance) { | ||
| 6 | + garbageCollect(); | ||
| 7 | + var startSelfFreeingCount = Type.getSelfFreeingInstanceCount(); | ||
| 8 | + var startNonSelfFreeingCount = Type.getNonSelfFreeingConstructedCount(); | ||
| 9 | + | ||
| 10 | + var resolve; | ||
| 11 | + var promise = new Promise(function(_resolve) { resolve = _resolve; }); | ||
| 12 | + | ||
| 13 | + getInstance() | ||
| 14 | + .then(function() { | ||
| 15 | + var selfFreeingCount = Type.getSelfFreeingInstanceCount(); | ||
| 16 | + assert.equal(startSelfFreeingCount + 1, selfFreeingCount); | ||
| 17 | + // get out of this promise chain to help GC get rid of the commit | ||
| 18 | + setTimeout(resolve, 0); | ||
| 19 | + }); | ||
| 20 | + | ||
| 21 | + return promise | ||
| 22 | + .then(function() { | ||
| 23 | + garbageCollect(); | ||
| 24 | + var endSelfFreeingCount = Type.getSelfFreeingInstanceCount(); | ||
| 25 | + var endNonSelfFreeingCount = Type.getNonSelfFreeingConstructedCount(); | ||
| 26 | + // any new self-freeing commits should have been freed | ||
| 27 | + assert.equal(startSelfFreeingCount, endSelfFreeingCount); | ||
| 28 | + // no new non-self-freeing commits should have been constructed | ||
| 29 | + assert.equal(startNonSelfFreeingCount, endNonSelfFreeingCount); | ||
| 30 | + }); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + module.exports = leakTest; | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments