Skip to content

Commit 3a500cd

Browse files
committed
Merge pull request nodegit#461 from nodegit/ol-strarray-in-structs
Adds support for strarray in structs
2 parents b18a789 + b09fa02 commit 3a500cd

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

generate/input/descriptor.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1605,6 +1605,11 @@
16051605
}
16061606
}
16071607
},
1608+
"strarray": {
1609+
"dependencies": [
1610+
"../include/str_array_converter.h"
1611+
]
1612+
},
16081613
"stream": {
16091614
"ignore": true,
16101615
"cDependencies": [

generate/templates/partials/field_accessors.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
NanAssignPersistent(wrapper->{{ field.name }}, {{ field.name }});
4545

46-
wrapper->raw->{{ field.name }} = {% if not field.cType | isPointer %}*{% endif %}ObjectWrap::Unwrap<{{ field.cppClassName }}>({{ field.name }}->ToObject())->GetValue();
46+
wrapper->raw->{{ field.name }} = {% if not field.cType | isPointer %}*{% endif %}{% if field.cppClassName == 'GitStrarray' %}StrArrayConverter::Convert({{ field.name }}->ToObject()){% else %}ObjectWrap::Unwrap<{{ field.cppClassName }}>({{ field.name }}->ToObject())->GetValue(){% endif %};
4747

4848
{% elsif field.isCallbackFunction %}
4949
if (wrapper->{{ field.name }} != NULL) {

test/tests/checkout.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
var assert = require("assert");
22
var path = require("path");
3+
var fse = require("fs-extra");
34
var local = path.join.bind(path, __dirname);
45

56
describe("Checkout", function() {
67
var NodeGit = require("../../");
78
var Repository = NodeGit.Repository;
89
var Checkout = NodeGit.Checkout;
910

11+
var readMeName = "README.md";
12+
var packageJsonName = "package.json";
1013
var packageJsonOid = "0fa56e90e096a4c24c785206b826ab914ea3de1e";
1114
var reposPath = local("../repos/workdir");
15+
var readMePath = local("../repos/workdir/" + readMeName);
16+
var packageJsonPath = local("../repos/workdir/" + packageJsonName);
1217

1318
beforeEach(function() {
1419
var test = this;
@@ -33,6 +38,42 @@ describe("Checkout", function() {
3338
});
3439
});
3540

41+
it("can force checkout a single file", function() {
42+
var test = this;
43+
44+
var packageContent = fse.readFileSync(packageJsonPath, "utf-8");
45+
var readmeContent = fse.readFileSync(readMePath, "utf-8");
46+
47+
assert.notEqual(packageContent, "");
48+
assert.notEqual(readmeContent, "");
49+
50+
fse.outputFileSync(readMePath, "");
51+
fse.outputFileSync(packageJsonPath, "");
52+
53+
var opts = {
54+
checkoutStrategy: Checkout.STRATEGY.FORCE,
55+
paths: packageJsonName
56+
};
57+
58+
return Checkout.head(test.repository, opts)
59+
.then(function() {
60+
var resetPackageContent = fse.readFileSync(packageJsonPath, "utf-8");
61+
var resetReadmeContent = fse.readFileSync(readMePath, "utf-8");
62+
63+
assert.equal(resetPackageContent, packageContent);
64+
assert.equal(resetReadmeContent, "");
65+
66+
var resetOpts = {
67+
checkoutStrategy: Checkout.STRATEGY.FORCE
68+
};
69+
70+
return Checkout.head(test.repository, resetOpts);
71+
}).then(function() {
72+
var resetContent = fse.readFileSync(readMePath, "utf-8");
73+
assert.equal(resetContent, readmeContent);
74+
});
75+
});
76+
3677
it("can checkout by tree", function() {
3778
var test = this;
3879

0 commit comments

Comments
 (0)