Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions generate/input/descriptor.json
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,10 @@
"ignore": true
},
"git_config_get_string": {
"ignore": true
"isAsync": true,
"return": {
"isErrorCode": true
}
},
"git_config_iterator_free": {
"ignore": true
Expand All @@ -415,7 +418,10 @@
"ignore": true
},
"git_config_open_default": {
"ignore": true
"isAsync": true,
"return": {
"isErrorCode": true
}
},
"git_config_open_global": {
"ignore": true
Expand Down Expand Up @@ -443,6 +449,12 @@
},
"git_config_set_int32": {
"ignore": true
},
"git_config_set_string": {
"isAsync": true,
"return": {
"isErrorCode": true
}
}
}
},
Expand Down
75 changes: 75 additions & 0 deletions test/tests/config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
var assert = require("assert");
var path = require("path");
var local = path.join.bind(path, __dirname);
var promisify = require("promisify-node");

// Have to wrap exec, since it has a weird callback signature.
var exec = promisify(function(command, opts, callback) {
return require("child_process").exec(command, opts, callback);
});

describe("Config", function() {
var NodeGit = require("../../");

var reposPath = local("../repos/workdir");

it("can get and set a global value", function() {
var savedUserName;

function finallyFn() {
return exec("git config --global user.name \"" + savedUserName + "\"");
}

return exec("git config --global user.name")
.then(function(userName) {
savedUserName = userName.trim();

return exec(
"git config --global user.name \"" + savedUserName + "-test\"");
})
.then(function() {
return NodeGit.Config.openDefault();
})
.then(function(config) {
return config.getString("user.name");
})
.then(function(userNameFromNodeGit) {
assert.equal(savedUserName + "-test", userNameFromNodeGit);
})
.then(finallyFn, finallyFn);
});

it("can get and set a repo config value", function() {
var savedUserName;

function finallyFn() {
return exec("git config user.name \"" + savedUserName + "\"", {
cwd: reposPath
});
}

return exec("git config user.name", {
cwd: reposPath
})
.then(function(userName) {
savedUserName = userName.trim();

return exec("git config user.name \"" + savedUserName + "-test\"", {
cwd: reposPath
});
})
.then(function() {
return NodeGit.Repository.open(reposPath);
})
.then(function(repo) {
return repo.config();
})
.then(function(config) {
return config.getString("user.name");
})
.then(function(userNameFromNodeGit) {
assert.equal(savedUserName + "-test", userNameFromNodeGit);
})
.then(finallyFn, finallyFn);
});
});
24 changes: 13 additions & 11 deletions test/tests/remote.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,19 @@ describe("Remote", function() {
var url = "https://github.com/nodegit/test";
var url2 = "https://github.com/nodegit/test2";

function removeOrigins(repository) {
return Promise.all([
Remote.delete(repository, "origin1"),
Remote.delete(repository, "origin2"),
Remote.delete(repository, "origin3"),
Remote.delete(repository, "test2")
])
.catch(function() {
// We don't care if a remote was unable to be deleted. Just try to wipe
// everything and we'll start from a clean slate each time.
});
function removeOrigins(repo) {
return repo.getRemotes()
.then(function(remotes) {
var promises = [];

remotes.forEach(function(remote) {
if (remote !== "origin") {
promises.push(Remote.delete(repo, remote));
}
});

return Promise.all(promises);
});
}

beforeEach(function() {
Expand Down