From fd9882ab0e0ebfc5f477738328bf40429e06ffee Mon Sep 17 00:00:00 2001 From: John Haley Date: Fri, 27 Mar 2015 10:26:58 -0700 Subject: [PATCH 1/3] Add `Graph.aheadBehind` and tests --- generate/input/descriptor.json | 13 +++++++- generate/templates/filters/returns_info.js | 6 ++++ generate/templates/partials/convert_to_v8.cc | 2 +- test/tests/graph.js | 31 ++++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 test/tests/graph.js diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index 0d3a1b81d..c763c0138 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -743,7 +743,18 @@ "graph": { "functions": { "git_graph_ahead_behind": { - "ignore": true + "args": { + "ahead": { + "isReturn": true + }, + "behind": { + "isReturn": true + } + }, + "isAsync": true, + "return": { + "isErrorCode": true + } } } }, diff --git a/generate/templates/filters/returns_info.js b/generate/templates/filters/returns_info.js index ff36e0c51..7eaf26e7a 100644 --- a/generate/templates/filters/returns_info.js +++ b/generate/templates/filters/returns_info.js @@ -1,3 +1,5 @@ +var isPointer = require("./is_pointer"); + module.exports = function(fn, argReturnsOnly, isAsync) { var result = []; var args = fn.args || []; @@ -11,6 +13,10 @@ module.exports = function(fn, argReturnsOnly, isAsync) { return_info.parsedName = isAsync ? "baton->" + return_info.name : return_info.name; return_info.isCppClassIntType = ~['Uint32', 'Int32'].indexOf(return_info.cppClassName); + return_info.needsDereference + = isAsync && + return_info.cppClassName == "Number" && + isPointer(return_info.cType); return_info.parsedClassName = (return_info.cppClassName || '').toLowerCase() + "_t"; return_info.returnNameOrName = return_info.returnName || return_info.name; return_info.jsOrCppClassName = return_info.jsClassName || return_info.cppClassName; diff --git a/generate/templates/partials/convert_to_v8.cc b/generate/templates/partials/convert_to_v8.cc index 1d2053791..aba2d9c97 100644 --- a/generate/templates/partials/convert_to_v8.cc +++ b/generate/templates/partials/convert_to_v8.cc @@ -22,7 +22,7 @@ {% if isCppClassIntType %} to = NanNew<{{ cppClassName }}>(({{ parsedClassName }}){{= parsedName =}}); {% else %} - to = NanNew<{{ cppClassName }}>({{= parsedName =}}); + to = NanNew<{{ cppClassName }}>({% if needsDereference %}*{% endif %}{{= parsedName =}}); {% endif %} {% elsif cppClassName == 'External' %} diff --git a/test/tests/graph.js b/test/tests/graph.js new file mode 100644 index 000000000..f90867a28 --- /dev/null +++ b/test/tests/graph.js @@ -0,0 +1,31 @@ +var assert = require("assert"); +var path = require("path"); +var local = path.join.bind(path, __dirname); + +describe("Graph", function() { + var NodeGit = require("../../"); + var Repository = NodeGit.Repository; + var Graph = NodeGit.Graph; + + var reposPath = local("../repos/workdir"); + + beforeEach(function() { + var test = this; + + return Repository.open(reposPath) + .then(function(repository) { + test.repository = repository; + }); + }); + + it.only("can get commits ahead/behind for 2 different commits", function() { + return Graph.aheadBehind( + this.repository, + "32789a79e71fbc9e04d3eff7425e1771eb595150", + "1729c73906bb8467f4095c2f4044083016b4dfde") + .then(function(result) { + assert.equal(result.ahead, 1); + assert.equal(result.behind, 1); + }); + }); +}); From 860b8f1b761767417103eb72c95da310927a5a9d Mon Sep 17 00:00:00 2001 From: John Haley Date: Fri, 27 Mar 2015 10:44:26 -0700 Subject: [PATCH 2/3] Remove `.only` --- test/tests/graph.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tests/graph.js b/test/tests/graph.js index f90867a28..10f4db12b 100644 --- a/test/tests/graph.js +++ b/test/tests/graph.js @@ -18,7 +18,7 @@ describe("Graph", function() { }); }); - it.only("can get commits ahead/behind for 2 different commits", function() { + it("can get commits ahead/behind for 2 different commits", function() { return Graph.aheadBehind( this.repository, "32789a79e71fbc9e04d3eff7425e1771eb595150", From d0a018f76d0352965663c71526135056863e2bba Mon Sep 17 00:00:00 2001 From: John Haley Date: Fri, 27 Mar 2015 12:08:52 -0700 Subject: [PATCH 3/3] Allocate return values on `git_graph_ahead_behind` --- generate/input/descriptor.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index c763c0138..6085baea8 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -745,9 +745,11 @@ "git_graph_ahead_behind": { "args": { "ahead": { + "shouldAlloc": true, "isReturn": true }, "behind": { + "shouldAlloc": true, "isReturn": true } },