diff --git a/node_modules/c9/docker-helpers.js b/node_modules/c9/docker-helpers.js new file mode 100644 index 00000000..e4b67a9f --- /dev/null +++ b/node_modules/c9/docker-helpers.js @@ -0,0 +1,31 @@ + +var dockerHelpers = { + getUsernameFromContainerName: function (containerName) { + if (containerName.split("-").length < 3) return ""; + return containerName.replace(/^container-/, "") + .replace(/-[a-zA-Z]+$/, "") + .replace(/-[0-9]+$/, "") + .split("-")[0]; + }, + + getProjectNameFromContainerName: function (containerName) { + if (containerName.split("-").length < 3) return ""; + return containerName.replace(/^container-/, "") + .replace(/-[a-zA-Z]+$/, "") + .replace(/-[0-9]+$/, "") + .split("-") + .splice(1) + .join("-"); + }, + + getProjectIdFromContainerName: function (containerName) { + if (containerName.split("-").length < 3) return ""; + return containerName.replace(/^container-/, "") + .replace(/-[a-zA-Z]+$/, "") + .split("-") + .splice(-1) + .join("-"); + } +} + +module.exports = dockerHelpers; \ No newline at end of file diff --git a/node_modules/c9/docker-helpers_test.js b/node_modules/c9/docker-helpers_test.js new file mode 100644 index 00000000..32af8bdd --- /dev/null +++ b/node_modules/c9/docker-helpers_test.js @@ -0,0 +1,60 @@ +"use strict"; +"use mocha"; + +require("c9/inline-mocha")(module); +var assert = require("assert"); +var faker = require("faker"); +var dockerHelpers = require("c9/docker-helpers"); + +describe("docker-helpers", function() { + + describe("getUsernameFromContainerName", function () { + it("should work", function() { + assert.equal(dockerHelpers.getUsernameFromContainerName("container-stefko-demo-project-884917"), "stefko"); + assert.equal(dockerHelpers.getUsernameFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "scollins"); + assert.equal(dockerHelpers.getUsernameFromContainerName("jakrawczt-test-3-jkr-1633955"), "jakrawczt"); + assert.equal(dockerHelpers.getUsernameFromContainerName("thn85-p18-1016460"), "thn85"); + assert.equal(dockerHelpers.getUsernameFromContainerName("thn85-proj-18239823-1016490"), "thn85"); + assert.equal(dockerHelpers.getUsernameFromContainerName("artawil-etutor_11plus-wp-1422098"), "artawil"); + assert.equal(dockerHelpers.getUsernameFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "johns66139"); + assert.equal(dockerHelpers.getUsernameFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "johns66139"); + assert.equal(dockerHelpers.getUsernameFromContainerName("yuro_yaya-nice-access-bot-1753521"), "yuro_yaya"); + assert.equal(dockerHelpers.getUsernameFromContainerName("d9canary"), ""); + assert.equal(dockerHelpers.getUsernameFromContainerName("selenium-9213"), ""); + assert.equal(dockerHelpers.getUsernameFromContainerName("/selenium-9213"), ""); + }); + }); + + describe("getProjectNameFromContainerName", function() { + it("should work", function() { + assert.equal(dockerHelpers.getProjectNameFromContainerName("container-stefko-demo-project-884917"), "demo-project"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "booking_admin"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("jakrawczt-test-3-jkr-1633955"), "test-3-jkr"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("thn85-p18-1016460"), "p18"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("thn85-proj-18239823-1016490"), "proj-18239823"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("artawil-etutor_11plus-wp-1422098"), "etutor_11plus-wp"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "nice-access-bot"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "nice-access-bot"); + assert.equal(dockerHelpers.getProjectNameFromContainerName("d9canary"), ""); + assert.equal(dockerHelpers.getProjectNameFromContainerName("selenium-9213"), ""); + assert.equal(dockerHelpers.getProjectNameFromContainerName("/selenium-9213"), ""); + }); + }); + + describe("getProjectIdFromContainerName", function() { + it("should work", function() { + assert.equal(dockerHelpers.getProjectIdFromContainerName("container-stefko-demo-project-884917"), "884917"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("container-scollins-booking_admin-1667108-yORDDrjnsOiiLveG"), "1667108"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("jakrawczt-test-3-jkr-1633955"), "1633955"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("thn85-p18-1016460"), "1016460"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("thn85-proj-18239823-1016490"), "1016490"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("artawil-etutor_11plus-wp-1422098"), "1422098"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("container-johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "1753521"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("johns66139-nice-access-bot-1753521-SDcuzVdxeUNhwhpo"), "1753521"); + assert.equal(dockerHelpers.getProjectIdFromContainerName("d9canary"), ""); + assert.equal(dockerHelpers.getProjectIdFromContainerName("selenium-9213"), ""); + assert.equal(dockerHelpers.getProjectIdFromContainerName("/selenium-9213"), ""); + }); + }); + +}); diff --git a/node_modules/c9/gce.js b/node_modules/c9/gce.js new file mode 100644 index 00000000..1a5691b0 --- /dev/null +++ b/node_modules/c9/gce.js @@ -0,0 +1,40 @@ +var childProcess = require("child_process"); + + +function findServers(pattern, options, callback) { + if (!callback && typeof options == "function") { + return findServers(pattern, {}, options); + } + + childProcess.exec("gssh --print-names " + pattern, function (err, stdout) { + if (err) return callback(err); + + var serverNames = stdout.split("\n") + .filter(function(name) { return !!name; }) + .map(function (name) { return name.replace(/ubuntu@/, ""); }); + + return callback(null, serverNames); + }); + +} + +function runCommand(pattern, command, options, callback) { + if (!callback && typeof options == "function") { + return runCommand(pattern, command, {}, options); + } + + var parallel = "" + if (options.parallel) { + parallel = " -P" + } + + var gsshCommand = "gssh " + parallel + " " + pattern + " '" + command + "'"; + childProcess.exec(gsshCommand, function (err, stdout) { + return callback(err, stdout); + }); +} + +module.exports = { + find: findServers, + run: runCommand +} \ No newline at end of file diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js index 3ce6bd52..0eba62a4 100644 --- a/node_modules/vfs-local/localfs.js +++ b/node_modules/vfs-local/localfs.js @@ -157,6 +157,8 @@ module.exports = function setup(fsOptions) { // Export the API var vfs = wrapDomain({ + fsOptions: fsOptions, + // File management resolve: resolve, stat: stat, diff --git a/package.json b/package.json index 2d36e4b1..6a948e4e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "c9", "description": "New Cloud9 Client", - "version": "3.1.1212", + "version": "3.1.1245", "author": "Ajax.org B.V. ", "private": true, "main": "bin/c9", @@ -56,7 +56,7 @@ "c9" ], "c9plugins": { - "c9.ide.language": "#76ce872cdc", + "c9.ide.language": "#9ec48a2b65", "c9.ide.language.css": "#be07d72209", "c9.ide.language.generic": "#a4023db7f6", "c9.ide.language.html": "#9be847c0ce", @@ -64,9 +64,9 @@ "c9.ide.language.javascript": "#c6d102471f", "c9.ide.language.javascript.immediate": "#c8b1e5767a", "c9.ide.language.javascript.eslint": "#3127e1eba1", - "c9.ide.language.javascript.tern": "#45e5f5b0e5", + "c9.ide.language.javascript.tern": "#bf1072b11a", "c9.ide.language.javascript.infer": "#0561c69d67", - "c9.ide.language.jsonalyzer": "#243e11bd42", + "c9.ide.language.jsonalyzer": "#bf12af3d0a", "c9.ide.collab": "#4b93a497cd", "c9.ide.local": "#a6e689e33b", "c9.ide.find": "#e33fbaed2f", @@ -91,7 +91,7 @@ "c9.ide.imgeditor": "#612e75ef4f", "c9.ide.immediate": "#a962119bec", "c9.ide.installer": "#0fde9f0067", - "c9.ide.language.python": "#4fad6f5a80", + "c9.ide.language.python": "#675ddb4c8f", "c9.ide.language.go": "#8f6d0beae7", "c9.ide.mount": "#86c8985f34", "c9.ide.navigate": "#1fbb7cd53b", @@ -105,9 +105,9 @@ "c9.ide.recentfiles": "#7c099abf40", "c9.ide.remote": "#301d2ab519", "c9.ide.processlist": "#2b12cd1bdd", - "c9.ide.run": "#bca3e70d61", + "c9.ide.run": "#53d351200a", "c9.ide.run.build": "#0598fff697", - "c9.ide.run.debug.xdebug": "#a1b39e0ac4", + "c9.ide.run.debug.xdebug": "#9956689819", "c9.ide.save": "#f8aaf93ea1", "c9.ide.scm": "#ca3c94b84f", "c9.ide.terminal.monitor": "#1ccac33b0d", diff --git a/plugins/c9.fs/mock/python/app/__init__.py b/plugins/c9.fs/mock/python/app/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/plugins/c9.fs/mock/python/app/tests/__init__.py b/plugins/c9.fs/mock/python/app/tests/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/plugins/c9.fs/mock/python/app/tests/__init__.py @@ -0,0 +1 @@ + diff --git a/plugins/c9.fs/mock/python/app/tests/tests.py b/plugins/c9.fs/mock/python/app/tests/tests.py new file mode 100644 index 00000000..51e01f29 --- /dev/null +++ b/plugins/c9.fs/mock/python/app/tests/tests.py @@ -0,0 +1,4 @@ +from ..user.models import User + +def test_user(): + return User() diff --git a/plugins/c9.fs/mock/python/app/user/__init__.py b/plugins/c9.fs/mock/python/app/user/__init__.py new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/plugins/c9.fs/mock/python/app/user/__init__.py @@ -0,0 +1 @@ + diff --git a/plugins/c9.fs/mock/python/app/user/models.py b/plugins/c9.fs/mock/python/app/user/models.py new file mode 100644 index 00000000..b7ae594e --- /dev/null +++ b/plugins/c9.fs/mock/python/app/user/models.py @@ -0,0 +1,3 @@ +class User(): + def __repr__(self): + return '' diff --git a/plugins/c9.fs/mock/python/test_user.py b/plugins/c9.fs/mock/python/test_user.py new file mode 100644 index 00000000..3867f0f3 --- /dev/null +++ b/plugins/c9.fs/mock/python/test_user.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +from app.tests.tests import test_user +from doesntexist import badimport + +print(test_user()) + +bad_call() + +badimport.foo() \ No newline at end of file