diff --git a/spec/fixtures/autocomplete-superawesome.json b/spec/fixtures/autocomplete-superawesome.json new file mode 100644 index 000000000..f1a46b510 --- /dev/null +++ b/spec/fixtures/autocomplete-superawesome.json @@ -0,0 +1,17 @@ +{ + "releases": { + "latest": "1.0.0" + }, + "name": "autocomplete-superawesome", + "versions": { + "1.0.0": { + "dist": { + "tarball": "http://localhost:3000/tarball/test-module-1.0.0.tgz" + } + } + }, + "services": { + "provides": ["supercomplete"], + "consumes": [] + } +} diff --git a/spec/fixtures/service-delinter.json b/spec/fixtures/service-delinter.json new file mode 100644 index 000000000..0de6d9b39 --- /dev/null +++ b/spec/fixtures/service-delinter.json @@ -0,0 +1,22 @@ +{ + "name": "delinter", + "versions": { + "latest": "1.0.2", + "1.0.2": "1.0.2", + "1.0.1": "1.0.1", + "1.0.0": "1.0.0" + }, + "metadata": { + "name": "delinter", + "providers": { + "1.0.0": ["delinter-superawesome"], + "1.0.1": ["delinter-superawesome", "delinter-ludicrouslyawesome"], + "1.0.2": ["delinter-ludicrouslyawesome"] + }, + "consumers": { + "1.0.0": ["delinter"], + "1.0.1": ["delinter", "delinter-cubed"], + "1.0.2": ["delinter-cubed"] + } + } +} diff --git a/spec/fixtures/service-supercomplete.json b/spec/fixtures/service-supercomplete.json new file mode 100644 index 000000000..83d202f43 --- /dev/null +++ b/spec/fixtures/service-supercomplete.json @@ -0,0 +1,22 @@ +{ + "name": "supercomplete", + "versions": { + "latest": "1.2.3", + "1.2.2": "1.2.2", + "1.2.1": "1.2.1", + "1.2.0": "1.2.0", + "1.1.0": "1.1.0", + "1.0.0": "1.0.0" + }, + "metadata": { + "name": "supercomplete", + "providers": { + "1.0.0": ["autocomplete-superawesome"], + "1.2.0": ["autocomplete-superawesome", "autocomplete-ludicrouslyawesome"] + }, + "consumers": { + "1.0.0": ["supercomplete-plus"], + "1.2.0": ["supercomplete-plus", "supercomplete-squared"] + } + } +} diff --git a/spec/fixtures/services.json b/spec/fixtures/services.json new file mode 100644 index 000000000..5fd1b327c --- /dev/null +++ b/spec/fixtures/services.json @@ -0,0 +1,46 @@ +[ + { + "name": "supercomplete", + "versions": { + "latest": "1.2.3", + "1.2.2": "1.2.2", + "1.2.1": "1.2.1", + "1.2.0": "1.2.0", + "1.1.0": "1.1.0", + "1.0.0": "1.0.0" + }, + "metadata": { + "name": "supercomplete", + "providers": { + "1.0.0": ["autocomplete-superawesome"], + "1.2.0": ["autocomplete-superawesome", "autocomplete-ludicrouslyawesome"] + }, + "consumers": { + "1.0.0": ["supercomplete-plus"], + "1.2.0": ["supercomplete-plus", "supercomplete-squared"] + } + } + }, + { + "name": "delinter", + "versions": { + "latest": "1.0.2", + "1.0.2": "1.0.2", + "1.0.1": "1.0.1", + "1.0.0": "1.0.0" + }, + "metadata": { + "name": "delinter", + "providers": { + "1.0.0": ["delinter-superawesome"], + "1.0.1": ["delinter-superawesome", "delinter-ludicrouslyawesome"], + "1.0.2": ["delinter-ludicrouslyawesome"] + }, + "consumers": { + "1.0.0": ["delinter"], + "1.0.1": ["delinter", "delinter-cubed"], + "1.0.2": ["delinter-cubed"] + } + } + } +] diff --git a/spec/fixtures/supercomplete-plus.json b/spec/fixtures/supercomplete-plus.json new file mode 100644 index 000000000..07e5b5f75 --- /dev/null +++ b/spec/fixtures/supercomplete-plus.json @@ -0,0 +1,17 @@ +{ + "releases": { + "latest": "1.0.0" + }, + "name": "supercomplete-plus", + "versions": { + "1.0.0": { + "dist": { + "tarball": "http://localhost:3000/tarball/test-module-1.0.0.tgz" + } + } + }, + "services": { + "provides": [], + "consumes": ["supercomplete"] + } +} diff --git a/spec/install-spec.coffee b/spec/install-spec.coffee index 256c796d3..570173170 100644 --- a/spec/install-spec.coffee +++ b/spec/install-spec.coffee @@ -55,6 +55,18 @@ describe 'apm install', -> app.get '/packages/atom-2048', (request, response) -> response.sendfile path.join(__dirname, 'fixtures', 'atom-2048.json') + # Services + app.get '/services', (request, response) -> + response.sendfile path.join(__dirname, 'fixtures', 'services.json') + app.get '/services/supercomplete', (request, response) -> + response.sendfile path.join(__dirname, 'fixtures', 'service-supercomplete.json') + app.get '/services/delinter', (request, response) -> + response.sendfile path.join(__dirname, 'fixtures', 'service-delinter.json') + app.get '/packages/autocomplete-superawesome', (request, response) -> + response.sendfile path.join(__dirname, 'fixtures', 'autocomplete-superawesome.json') + app.get '/packages/supercomplete-plus', (request, response) -> + response.sendfile path.join(__dirname, 'fixtures', 'supercomplete-plus.json') + server = http.createServer(app) server.listen(3000) @@ -320,3 +332,16 @@ describe 'apm install', -> runs -> expect(callback.mostRecentCall.args[0]).toBeTruthy() + + fdescribe 'when a package has a required service dependency', -> + it 'fails if no services are installed with a required service', -> + callback = jasmine.createSpy('callback') + apm.run(['install', "autocomplete-superawesome"], callback) + + waitsFor 'waiting for install to complete', 600000, -> + callback.callCount is 1 + + runs -> + console.log 'hello' + console.log JSON.stringify(callback) + expect(callback.mostRecentCall.args[0]).toBeFalsy()