diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index d9658df84..13fc597c4 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2027,8 +2027,35 @@ "isErrorCode": true } }, + "git_submodule_set_ignore": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, + "git_submodule_set_update": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, + "git_submodule_set_url": { + "isAsync": true, + "return": { + "isErrorCode": true + } + }, "git_submodule_status": { - "ignore": true + "isAsync": true, + "args": { + "status": { + "isReturn": true, + "shouldAlloc": true + } + }, + "return": { + "isErrorCode": true + } }, "git_submodule_sync": { "isAsync": true, diff --git a/test/tests/submodule.js b/test/tests/submodule.js index 6b920c811..b2fd923cc 100644 --- a/test/tests/submodule.js +++ b/test/tests/submodule.js @@ -16,18 +16,18 @@ describe("Submodule", function() { return RepoUtils.createRepository(repoPath) .then(function(repo) { test.repository = repo; + return Repository.open(local("../repos/workdir")); + }) + .then(function(repo) { + test.workdirRepository = repo; }); }); it("can walk over the submodules", function() { - var repo; + var repo = this.workdirRepository; var submoduleName = "vendor/libgit2"; - return Repository.open(local("../repos/workdir")) - .then(function(_repo) { - repo = _repo; - return repo.getSubmoduleNames(); - }) + return repo.getSubmoduleNames() .then(function(submodules) { assert.equal(submodules.length, 1); @@ -43,6 +43,56 @@ describe("Submodule", function() { }); }); + it("can get submodule status", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.status(repo, submoduleName, Submodule.IGNORE.NONE) + .then(function(status) { + assert.equal(Submodule.STATUS.IN_CONFIG, status); + }); + }); + + it("can set submodule ignore", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.setIgnore(repo, submoduleName, Submodule.IGNORE.ALL) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(Submodule.IGNORE.ALL, submodule.ignore()); + }); + }); + + it("can set submodule url", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + var submoduleUrl = "https://github.com/githubtraining/hellogitworld.git"; + + return Submodule.setUrl(repo, submoduleName, submoduleUrl) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(submoduleUrl, submodule.url()); + }); + }); + + it("can set submodule update", function() { + var repo = this.workdirRepository; + var submoduleName = "vendor/libgit2"; + + return Submodule.setUpdate(repo, submoduleName, Submodule.UPDATE.NONE) + .then(function() { + return Submodule.lookup(repo, submoduleName); + }) + .then(function(submodule) { + assert.equal(Submodule.UPDATE.NONE, submodule.updateStrategy()); + }); + }); + it("can setup and finalize submodule add", function() { var repo = this.repository; var submodulePath = "hellogitworld";