diff --git a/Gruntfile.js b/Gruntfile.js index 3e1c980e..1a66752b 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -9,27 +9,25 @@ module.exports = function(grunt) { ] }, jshint: { - options: { - jshintrc: '.jshintrc' + all: { + options: { + jshintrc: '.jshintrc' + }, + src: [ + 'bin/*', + 'lib/**/*.js', + 'Gruntfile.js', + ] }, - all: [ - 'bin/*', - 'lib/**/*.js', - 'test/**/*.js', - 'Gruntfile.js', - '!test/unit/fixtures/syntax-error/**/*.js', - - // This is commented out because there are - // too many errors to address. I went through - // half of them and still: - // - // >> 75 errors in 3 files - // - // There are a lot of undefined vars being used - // and without fully understanding these files, it's - // not worth the effort to fix them all. - // 'resources/**/*.js', - ] + tests: { + options: { + jshintrc: 'test/.jshintrc' + }, + src: [ + 'test/**/*.js', + '!test/unit/fixtures/syntax-error/**/*.js', + ] + } }, jscs: { all: [ diff --git a/bin/tessel-2.js b/bin/tessel-2.js index c04e6efe..e3ef5644 100755 --- a/bin/tessel-2.js +++ b/bin/tessel-2.js @@ -1,10 +1,15 @@ #!/usr/bin/env node +// System Objects var path = require('path'); + +// Third Party Dependencies var parser = require('nomnom').script('t2'); + +// Internal var controller = require('../lib/controller'); -var key = require('../lib/key'); var init = require('../lib/init'); +var key = require('../lib/key'); var logs = require('../lib/logs'); var Tessel = require('../lib/tessel/tessel'); var drivers = require('./tessel-install-drivers'); diff --git a/bin/tessel-install-drivers.js b/bin/tessel-install-drivers.js index fe3075db..f39052a6 100644 --- a/bin/tessel-install-drivers.js +++ b/bin/tessel-install-drivers.js @@ -1,8 +1,14 @@ #!/usr/bin/env node +// System Objects +var child_process = require('child_process'); var fs = require('fs'); + +// Third Party Dependencies +// ... + +// Internal var logs = require('../lib/logs'); -var child_process = require('child_process'); module.exports.install = function() { if (process.platform === 'linux') { diff --git a/lib/controller.js b/lib/controller.js index 5f756676..12e2315d 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -1,16 +1,23 @@ -var Tessel = require('./tessel/tessel'); -var logs = require('./logs'); -var Promise = require('bluebird'); -var _ = require('lodash'); -var discover = require('./discover'); -var sprintf = require('sprintf-js').sprintf; +// System Objects var cp = require('child_process'); +var util = require('util'); + +// Third Party Dependencies +var _ = require('lodash'); var async = require('async'); -var updates = require('./update-fetch'); -var inquirer = require('inquirer'); var colors = require('colors'); -var util = require('util'); +var inquirer = require('inquirer'); +var Promise = require('bluebird'); +var sprintf = require('sprintf-js').sprintf; + +// Internal +var discover = require('./discover'); +var logs = require('./logs'); +var updates = require('./update-fetch'); var provision = require('./tessel/provision'); +var Tessel = require('./tessel/tessel'); + + var controller = {}; var responses = { noAuth: 'No Authorized Tessels Found.', diff --git a/lib/discover.js b/lib/discover.js index 939c900f..320348e0 100644 --- a/lib/discover.js +++ b/lib/discover.js @@ -1,10 +1,18 @@ -var usb = require('./usb_connection'), - lan = require('./lan_connection'), - Tessel = require('./tessel/tessel'), - util = require('util'), - EventEmitter = require('events').EventEmitter, - debug = require('debug')('discovery'), - logs = require('./logs'); +// System Objects +var events = require('events'); +var util = require('util'); + +var Emitter = events.EventEmitter; + +// Third Party Dependencies +var debug = require('debug')('discovery'); + +// Internal +var lan = require('./lan_connection'); +var logs = require('./logs'); +var Tessel = require('./tessel/tessel'); +var usb = require('./usb_connection'); + function TesselSeeker() { this.lanScan = undefined; @@ -12,7 +20,7 @@ function TesselSeeker() { this.scanTimeout = undefined; } -util.inherits(TesselSeeker, EventEmitter); +util.inherits(TesselSeeker, Emitter); TesselSeeker.prototype.start = function(opts) { var self = this; diff --git a/lib/init.js b/lib/init.js index fa50959f..a7302a49 100644 --- a/lib/init.js +++ b/lib/init.js @@ -1,8 +1,16 @@ -var Promise = require('bluebird'), - path = require('path'), - fs = Promise.promisifyAll(require('fs')), - PZ = require('promzard').PromZard, - NPM = require('npm'); +// System Objects +var path = require('path'); +var fs; + +// Third Party Dependencies +var Promise = require('bluebird'); +var PZ = require('promzard').PromZard; +var NPM = require('npm'); + +// Internal +// ... + +fs = Promise.promisifyAll(require('fs')); var packageJson = path.resolve('./package.json'); var pkg, ctx, options; diff --git a/lib/lan_connection.js b/lib/lan_connection.js index 5dbab2a1..cb4a760b 100644 --- a/lib/lan_connection.js +++ b/lib/lan_connection.js @@ -1,13 +1,20 @@ -var ssh = require('ssh2'), - fs = require('fs'), - Promise = require('bluebird'), - mdns = require('mdns-js'), - shellescape = require('shell-escape'), - util = require('util'), - EventEmitter = require('events').EventEmitter, - path = require('path'), - Tessel = require('./tessel/tessel'), - debug = require('debug')('discovery:lan'); +// System Objects +var events = require('events'); +var path = require('path'); +var util = require('util'); + +var Emitter = events.EventEmitter; + +// Third Party Dependencies +var debug = require('debug')('discovery:lan'); +var fs = require('fs-extra'); +var mdns = require('mdns-js'); +var Promise = require('bluebird'); +var shellescape = require('shell-escape'); +var ssh = require('ssh2'); + +// Internal +var Tessel = require('./tessel/tessel'); //if you have another mdns daemon running, like avahi or bonjour, uncomment following line mdns.excludeInterface('0.0.0.0'); @@ -136,7 +143,7 @@ LAN.Scanner = function() { this.discovered = []; }; -util.inherits(LAN.Scanner, EventEmitter); +util.inherits(LAN.Scanner, Emitter); LAN.Scanner.prototype.start = function() { var self = this; diff --git a/lib/logs.js b/lib/logs.js index cd2e80b4..00a0d33a 100644 --- a/lib/logs.js +++ b/lib/logs.js @@ -1,5 +1,11 @@ -var colors = require('colors'), - util = require('util'); +// System Objects +var util = require('util'); + +// Third Party Dependencies +var colors = require('colors'); + +// Internal +// ... function warn() { console.error(colors.yellow('WARN'), util.format.apply(util, arguments)); diff --git a/lib/tessel/access-point.js b/lib/tessel/access-point.js index 7b030550..9c92c8e7 100644 --- a/lib/tessel/access-point.js +++ b/lib/tessel/access-point.js @@ -1,6 +1,14 @@ -var Tessel = require('./tessel'), - commands = require('./commands'), - logs = require('../logs'); +// System Objects +// ... + +// Third Party Dependencies +// ... + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); + function commitAndClose(tessel, status, resolve) { var waitForClose = function(remoteProcess) { diff --git a/lib/tessel/deploy.js b/lib/tessel/deploy.js index f32d7ca5..1f047007 100644 --- a/lib/tessel/deploy.js +++ b/lib/tessel/deploy.js @@ -1,15 +1,20 @@ -var Tessel = require('./tessel'); -var commands = require('./commands'); -var logs = require('../logs'); -var fs = require('fs-extra'); +// System Objects var path = require('path'); -var tar = require('tar'); + +// Third Party Dependencies +var browserify = require('browserify'); +var fs = require('fs-extra'); +var fsTemp = require('fs-temp'); +var glob = require('glob'); var Ignore = require('fstream-ignore'); var Reader = require('fstream').Reader; -var fsTemp = require('fs-temp'); -var browserify = require('browserify'); +var tar = require('tar'); var uglify = require('uglify-js'); -var glob = require('glob'); + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); var PUSH_START_SCRIPT_NAME = 'start'; var NODE_PUSH_SCRIPT = __dirname + '/../../resources/start_node_script.sh'; diff --git a/lib/tessel/erase.js b/lib/tessel/erase.js index ef576182..a91ccd2a 100644 --- a/lib/tessel/erase.js +++ b/lib/tessel/erase.js @@ -1,6 +1,13 @@ -var Tessel = require('./tessel'), - commands = require('./commands'), - logs = require('../logs'); +// System Objects +// ... + +// Third Party Dependencies +// ... + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); Tessel.prototype.eraseScript = function() { var self = this; diff --git a/lib/tessel/name.js b/lib/tessel/name.js index 2ab75c94..fe7bbe9c 100644 --- a/lib/tessel/name.js +++ b/lib/tessel/name.js @@ -1,6 +1,13 @@ -var Tessel = require('./tessel'), - commands = require('./commands'), - logs = require('../logs'); +// System Objects +// ... + +// Third Party Dependencies +// ... + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); var defaultNamePrefix = 'Tessel-'; diff --git a/lib/tessel/provision.js b/lib/tessel/provision.js index fee72f44..25cd5717 100644 --- a/lib/tessel/provision.js +++ b/lib/tessel/provision.js @@ -1,15 +1,23 @@ //creates a .tessel folder with ssh keys in your home directory and uses those ssh keys to authorize you to push code to the USB-connected Tessel -var util = require('util'); -var osenv = require('osenv'); -var fs = require('fs-extra'); + +// System Objects var path = require('path'); +var util = require('util'); + +// Third Party Dependencies var async = require('async'); -var Tessel = require('./tessel'); -var commands = require('./commands'); -var logs = require('../logs'); +var fs = require('fs-extra'); var NodeRSA = require('node-rsa'); +var osenv = require('osenv'); var sshpk = require('sshpk'); + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); + + var authPath = path.join(osenv.home(), '.tessel'); var idrsa = 'id_rsa'; var authKey = path.join(authPath, idrsa); diff --git a/lib/tessel/tessel.js b/lib/tessel/tessel.js index d85c99bd..2ef53ba0 100644 --- a/lib/tessel/tessel.js +++ b/lib/tessel/tessel.js @@ -109,10 +109,10 @@ Tessel.RUN_PATH = '/tmp/remote-script/'; module.exports = Tessel; -require('./provision'); -require('./name'); +require('./access-point'); require('./deploy'); require('./erase'); -require('./wifi'); +require('./name'); +require('./provision'); require('./update'); -require('./access-point'); +require('./wifi'); diff --git a/lib/tessel/update.js b/lib/tessel/update.js index 52d289e9..2458565b 100644 --- a/lib/tessel/update.js +++ b/lib/tessel/update.js @@ -1,10 +1,17 @@ -var Tessel = require('./tessel'); -var commands = require('./commands'); +// System Objects var path = require('path'); + +// Third Party Dependencies +// ... + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); var updates = require('../update-fetch'); + var updatePath = path.join('/tmp/', updates.OPENWRT_BINARY_FILE); var remoteVersioningFile = '/etc/tessel-version'; -var logs = require('.././logs'); /* Gathers openWRT and SAMD21 Firmware diff --git a/lib/tessel/wifi.js b/lib/tessel/wifi.js index 15b5d3ca..496e2ec9 100644 --- a/lib/tessel/wifi.js +++ b/lib/tessel/wifi.js @@ -1,6 +1,14 @@ -var Tessel = require('./tessel'), - commands = require('./commands'), - logs = require('../logs'); +// System Objects +// ... + +// Third Party Dependencies +// ... + +// Internal +var commands = require('./commands'); +var logs = require('../logs'); +var Tessel = require('./tessel'); + Tessel.prototype.findAvailableNetworks = function() { logs.info('Scanning for available networks...'); diff --git a/lib/update-fetch.js b/lib/update-fetch.js index cabf0c89..9e903f2d 100644 --- a/lib/update-fetch.js +++ b/lib/update-fetch.js @@ -1,12 +1,16 @@ +// System Objects var path = require('path'); -var urljoin = require('url-join'); -var request = require('request'); + +// Third Party Dependencies var gunzip = require('zlib').createGunzip(); var extract = require('tar-stream').extract(); -var logs = require('./logs'); -var streamToBuffer = require('stream-to-buffer'); var ProgressBar = require('progress'); +var request = require('request'); +var streamToBuffer = require('stream-to-buffer'); +var urljoin = require('url-join'); +// Internal +var logs = require('./logs'); const BUILD_SERVER_ROOT = 'https://builds.tessel.io/t2'; const FIRMWARE_PATH = urljoin(BUILD_SERVER_ROOT, 'firmware'); diff --git a/lib/usb/usb_daemon.js b/lib/usb/usb_daemon.js index cbd03d42..e257b7b8 100644 --- a/lib/usb/usb_daemon.js +++ b/lib/usb/usb_daemon.js @@ -1,6 +1,12 @@ -var protocol = require('usb-daemon-parser'), - USBProcess = require('./usb_process'), - async = require('async'); +// Built-ins +// ... + +// Third Party +var async = require('async'); +var protocol = require('usb-daemon-parser'); + +// Internal +var USBProcess = require('./usb_process'); var MAX_PROCESS_ID = 255; diff --git a/lib/usb/usb_process.js b/lib/usb/usb_process.js index c417c399..d749a588 100644 --- a/lib/usb/usb_process.js +++ b/lib/usb/usb_process.js @@ -1,7 +1,14 @@ -var stream = require('stream'), - protocol = require('usb-daemon-parser'), - util = require('util'), - EventEmitter = require('events').EventEmitter; +// Built-ins +var EventEmitter = require('events').EventEmitter; +var stream = require('stream'); +var util = require('util'); + +// Third Party +var protocol = require('usb-daemon-parser'); + +// Internal +// ... + // The largest packet we can send over USB var MAX_PACKET_SIZE = 255; @@ -256,7 +263,7 @@ function RemoteReadableStream(process, daemon, ackHeaderFunc) { // A flag indicating whether this stream was closed self.closed = false; - // This puts the stream into 'flowing mode' + // This puts the stream into 'flowing mode' // so that the stream emits ('end') events without 'data' listeners self.resume(); @@ -284,7 +291,7 @@ RemoteReadableStream.prototype.ack = function(numToAck) { var b = new Buffer(4); // Write the number as an unsigned 32 but int into the buffer b.writeUInt32LE(numToAck, 0); - // Write the header + // Write the header this.daemon.write(this.ackHeaderFunc(this.process.id, b)); // Write the data this.daemon.write(b); diff --git a/lib/usb_connection.js b/lib/usb_connection.js index bc4cfadb..6b0806a5 100644 --- a/lib/usb_connection.js +++ b/lib/usb_connection.js @@ -1,10 +1,20 @@ -var util = require('util'), - Duplex = require('stream').Duplex, - Promise = require('bluebird'), - EventEmitter = require('events').EventEmitter, - logs = require('./logs'), - debug = require('debug')('discovery:usb'), - DFU = require('./dfu'); +// System Objects +var util = require('util'); +var stream = require('stream'); +var Promise = require('bluebird'); +var events = require('events'); + +var Duplex = stream.Duplex; +var Emitter = events.EventEmitter; + +// Third Party Dependencies +var debug = require('debug')('discovery:usb'); + +// Internal +var DFU = require('./dfu'); +var logs = require('./logs'); + + var haveusb = true; try { @@ -317,7 +327,7 @@ function stopScan() { USB.Scanner = function() {}; -util.inherits(USB.Scanner, EventEmitter); +util.inherits(USB.Scanner, Emitter); USB.Scanner.prototype.start = function() { var self = this; diff --git a/test/.jshintrc b/test/.jshintrc new file mode 100644 index 00000000..f90f20e3 --- /dev/null +++ b/test/.jshintrc @@ -0,0 +1,65 @@ +{ + "loopfunc": true, + "laxcomma": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": false, + "newcap": false, + "noarg": true, + "sub": true, + "undef": true, + "boss": true, + "eqnull": true, + "node": true, + "strict": false, + "esnext": true, + "unused": true, + "globals": { + "exports": true, + "document": true, + "Promise": true, + "copy": true, + "IS_TEST_ENV": true, + "cp": true, + "events": true, + "path": true, + "stream": true, + "util": true, + "Emitter": true, + "Duplex": true, + "_": true, + "async": true, + "browserify": true, + "fs": true, + "fsTemp": true, + "Ignore": true, + "inquirer": true, + "mdns": true, + "mkdirp": true, + "NodeRSA": true, + "osenv": true, + "sinon": true, + "sshpk": true, + "ssh": true, + "tar": true, + "uglify": true, + "Tessel": true, + "commands": true, + "deploy": true, + "provision": true, + "controller": true, + "discover": true, + "logs": true, + "updates": true, + "lan": true, + "usb": true, + "Daemon": true, + "TesselSimulator": true, + "RemoteProcessSimulator": true, + "cli": true, + "LAN": true, + "TesselSeeker": true, + "USB": true + } +} diff --git a/test/common/bootstrap.js b/test/common/bootstrap.js index c9891988..ba2bddf5 100644 --- a/test/common/bootstrap.js +++ b/test/common/bootstrap.js @@ -1 +1,62 @@ global.IS_TEST_ENV = true; + +// System Objects +global.cp = require('child_process'); +global.events = require('events'); +global.path = require('path'); +global.stream = require('stream'); +global.util = require('util'); + +global.Emitter = events.EventEmitter; +global.Duplex = stream.Duplex; + + +// Third Party Dependencies +global._ = require('lodash'); +global.async = require('async'); +global.browserify = require('browserify'); +global.fs = require('fs-extra'); +global.fsTemp = require('fs-temp'); +global.Ignore = require('fstream-ignore'); +global.inquirer = require('inquirer'); +global.mdns = require('mdns-js'); +global.mkdirp = require('mkdirp'); +global.NodeRSA = require('node-rsa'); +global.osenv = require('osenv'); +global.sinon = require('sinon'); +global.sshpk = require('sshpk'); +global.ssh = require('ssh2'); +global.tar = require('tar'); +global.uglify = require('uglify-js'); + + +// Internal +// ./lib/tessel/* +global.Tessel = require('../../lib/tessel/tessel'); +global.commands = require('../../lib/tessel/commands'); +global.deploy = require('../../lib/tessel/deploy'); +global.provision = require('../../lib/tessel/provision'); + +// ./lib/* +global.controller = require('../../lib/controller'); +global.discover = require('../../lib/discover'); +global.logs = require('../../lib/logs'); +global.updates = require('../../lib/update-fetch'); +global.lan = require('../../lib/lan_connection'); +global.usb = require('../../lib/usb_connection'); + +// ./lib/usb/* +global.Daemon = require('../../lib/usb/usb_daemon'); + +// ./test/common/* +global.TesselSimulator = require('../common/tessel-simulator'); +global.RemoteProcessSimulator = require('../common/remote-process-simulator'); + +// ./bin/* +global.cli = require('../../bin/tessel-2'); + + +// Shorthands +global.LAN = lan.LAN; +global.TesselSeeker = discover.TesselSeeker; +global.USB = usb.USB; diff --git a/test/common/remote-process-simulator.js b/test/common/remote-process-simulator.js index eed5845b..ea079da1 100644 --- a/test/common/remote-process-simulator.js +++ b/test/common/remote-process-simulator.js @@ -1,6 +1,4 @@ -var stream = require('stream'); -var EventEmitter = require('events').EventEmitter; -var util = require('util'); +// Test dependencies are required and exposed in common/bootstrap.js function RemoteProcessSimulator() { var self = this; @@ -37,6 +35,6 @@ function RemoteProcessSimulator() { }); } -util.inherits(RemoteProcessSimulator, EventEmitter); +util.inherits(RemoteProcessSimulator, Emitter); module.exports = RemoteProcessSimulator; diff --git a/test/common/tessel-simulator.js b/test/common/tessel-simulator.js index 2d0a26e0..b88b494a 100644 --- a/test/common/tessel-simulator.js +++ b/test/common/tessel-simulator.js @@ -1,5 +1,4 @@ -var RemoteProcessSimulator = require('./remote-process-simulator'); -var Tessel = require('../../lib/tessel/tessel'); +// Test dependencies are required and exposed in common/bootstrap.js function TesselSimulator(options) { diff --git a/test/unit/access-point.js b/test/unit/access-point.js index aaf92202..5b3273f7 100644 --- a/test/unit/access-point.js +++ b/test/unit/access-point.js @@ -1,8 +1,5 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var commands = require('../../lib/tessel/commands'); -var logs = require('../../lib/logs'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js + exports['Tessel.prototype.createAccessPoint'] = { setUp: function(done) { diff --git a/test/unit/bin-tessel-2.js b/test/unit/bin-tessel-2.js index b78b7cde..8236a5dc 100644 --- a/test/unit/bin-tessel-2.js +++ b/test/unit/bin-tessel-2.js @@ -1,8 +1,4 @@ -var sinon = require('sinon'); -var cli = require('../../bin/tessel-2'); -var controller = require('../../lib/controller'); -var logs = require('../../lib/logs'); -var Tessel = require('../../lib/tessel/tessel'); +// Test dependencies are required and exposed in common/bootstrap.js // If the defaults are intentionally changed in bin-tessel-2, // then they must be changed here as well. This ensures that the diff --git a/test/unit/constructor.js b/test/unit/constructor.js index 2a064847..ee6fc70d 100644 --- a/test/unit/constructor.js +++ b/test/unit/constructor.js @@ -1,7 +1,4 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var RemoteProcessSimulator = require('../common/remote-process-simulator'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js exports['Tessel'] = { setUp: function(done) { diff --git a/test/unit/controller.js b/test/unit/controller.js index ac4ef8b8..cde1c1a4 100644 --- a/test/unit/controller.js +++ b/test/unit/controller.js @@ -1,11 +1,4 @@ -var sinon = require('sinon'); -var _ = require('lodash'); -var controller = require('../../lib/controller'); -var Tessel = require('../../lib/tessel/tessel'); -var Seeker = require('../../lib/discover.js'); -var util = require('util'); -var EventEmitter = require('events').EventEmitter; -var logs = require('../../lib/logs'); +// Test dependencies are required and exposed in common/bootstrap.js function newTessel(options) { var tessel = new Tessel({ @@ -363,7 +356,7 @@ exports['Tessel.list'] = { this.sandbox = sinon.sandbox.create(); this.processOn = this.sandbox.stub(process, 'on'); this.activeSeeker = undefined; - this.seeker = this.sandbox.stub(Seeker, 'TesselSeeker', function Seeker() { + this.seeker = this.sandbox.stub(discover, 'TesselSeeker', function() { this.start = function(opts) { self.activeSeeker = this; if (opts.timeout && typeof opts.timeout === 'number') { @@ -376,7 +369,7 @@ exports['Tessel.list'] = { return this; }.bind(this); }); - util.inherits(this.seeker, EventEmitter); + util.inherits(this.seeker, Emitter); this.logsWarn = this.sandbox.stub(logs, 'warn', function() {}); this.logsInfo = this.sandbox.stub(logs, 'info', function() {}); @@ -523,7 +516,7 @@ exports['Tessel.get'] = { this.sandbox = sinon.sandbox.create(); this.processOn = this.sandbox.stub(process, 'on'); this.activeSeeker = undefined; - this.seeker = this.sandbox.stub(Seeker, 'TesselSeeker', function Seeker() { + this.seeker = this.sandbox.stub(discover, 'TesselSeeker', function Seeker() { this.start = function(opts) { self.activeSeeker = this; this.msg = { @@ -540,7 +533,7 @@ exports['Tessel.get'] = { return this; }.bind(this); }); - util.inherits(this.seeker, EventEmitter); + util.inherits(this.seeker, Emitter); this.logsWarn = this.sandbox.stub(logs, 'warn', function() {}); this.logsInfo = this.sandbox.stub(logs, 'info', function() {}); this.logsBasic = this.sandbox.stub(logs, 'basic', function() {}); diff --git a/test/unit/deploy.js b/test/unit/deploy.js index 9f8412b7..4b27efb0 100644 --- a/test/unit/deploy.js +++ b/test/unit/deploy.js @@ -1,19 +1,6 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var commands = require('../../lib/tessel/commands'); -var deploy = require('../../lib/tessel/deploy'); -var logs = require('../../lib/logs'); -var TesselSimulator = require('../common/tessel-simulator'); -var fs = require('fs-extra'); -var mkdirp = require('mkdirp'); -var path = require('path'); -var Ignore = require('fstream-ignore'); -var fsTemp = require('fs-temp'); -var browserify = require('browserify'); -var uglify = require('uglify-js'); -var tar = require('tar'); -var meminfo = fs.readFileSync('test/unit/fixtures/proc-meminfo', 'utf8'); +// Test dependencies are required and exposed in common/bootstrap.js +var meminfo = fs.readFileSync('test/unit/fixtures/proc-meminfo', 'utf8'); var deployFolder = path.join(__dirname, 'tmp'); var deployFile = path.join(deployFolder, 'app.js'); var codeContents = 'console.log("testing deploy");'; diff --git a/test/unit/discover.js b/test/unit/discover.js index bfaa18a7..3019e19f 100644 --- a/test/unit/discover.js +++ b/test/unit/discover.js @@ -1,12 +1,4 @@ -var Emitter = require('events').EventEmitter; -var sinon = require('sinon'); -var usb = require('../../lib/usb_connection'); -var lan = require('../../lib/lan_connection'); -var TesselSeeker = require('../../lib/discover').TesselSeeker; -var TesselSimulator = require('../common/tessel-simulator'); -var Tessel = require('../../lib/tessel/tessel.js'); -var logs = require('../../lib/logs'); - +// Test dependencies are required and exposed in common/bootstrap.js function FakeScanner() { Emitter.call(this); diff --git a/test/unit/erase.js b/test/unit/erase.js index 27e3a13b..d020b0ff 100644 --- a/test/unit/erase.js +++ b/test/unit/erase.js @@ -1,8 +1,4 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var commands = require('../../lib/tessel/commands'); -var logs = require('../../lib/logs'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js exports['Tessel.prototype.erase'] = { setUp: function(done) { diff --git a/test/unit/key.js b/test/unit/key.js index 67235cd4..764675d1 100644 --- a/test/unit/key.js +++ b/test/unit/key.js @@ -1,19 +1,11 @@ -var sinon = require('sinon'); -var logs = require('../../lib/logs'); +// Test dependencies are required and exposed in common/bootstrap.js + var testDir = __dirname + '/tmp/'; var testFile = 'test_rsa'; -var path = require('path'); var testPath = path.join(testDir, testFile); -var provision = require('../../lib/tessel/provision'); -var osenv = require('osenv'); var authPath = path.join(osenv.home(), '.tessel'); var idrsa = 'id_rsa'; var authKey = path.join(authPath, idrsa); -var Tessel = require('../../lib/tessel/tessel'); -var fs = require('fs-extra'); -var async = require('async'); -var NodeRSA = require('node-rsa'); -var sshpk = require('sshpk'); function createKeyTestFolder(callback) { fs.mkdirs(testDir, callback); diff --git a/test/unit/lan_connection.js b/test/unit/lan_connection.js index 595799d5..9df10da3 100644 --- a/test/unit/lan_connection.js +++ b/test/unit/lan_connection.js @@ -1,10 +1,4 @@ -var Emitter = require('events').EventEmitter; -var fs = require('fs'); -var LAN = require('../../lib/lan_connection').LAN; -var Tessel = require('../../lib/tessel/tessel'); -var ssh = require('ssh2'); -var mdns = require('mdns-js'); -var sinon = require('sinon'); +// Test dependencies are required and exposed in common/bootstrap.js exports['LAN.Connection'] = { setUp: function(done) { diff --git a/test/unit/menu.js b/test/unit/menu.js index e0c0f380..49ce701b 100644 --- a/test/unit/menu.js +++ b/test/unit/menu.js @@ -1,8 +1,4 @@ -var sinon = require('sinon'); -var controller = require('../../lib/controller'); -var logs = require('../../lib/logs'); -var TesselSimulator = require('../common/tessel-simulator'); -var inquirer = require('inquirer'); +// Test dependencies are required and exposed in common/bootstrap.js exports['controller.menu'] = { setUp: function(done) { diff --git a/test/unit/name.js b/test/unit/name.js index e2aa1cba..b33a9cc5 100644 --- a/test/unit/name.js +++ b/test/unit/name.js @@ -1,9 +1,4 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var commands = require('../../lib/tessel/commands'); -var logs = require('../../lib/logs'); -var controller = require('../../lib/controller'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js exports['Tessel.prototype.rename'] = { setUp: function(done) { diff --git a/test/unit/provision.js b/test/unit/provision.js index 31d4a82f..adcfe468 100644 --- a/test/unit/provision.js +++ b/test/unit/provision.js @@ -1,19 +1,9 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var controller = require('../../lib/controller'); -var fs = require('fs-extra'); -var path = require('path'); -var cp = require('child_process'); -var TesselSimulator = require('../common/tessel-simulator'); -var logs = require('../../lib/logs'); -var provision = require('../../lib/tessel/provision'); -var mkdirp = require('mkdirp'); +// Test dependencies are required and exposed in common/bootstrap.js + var testDir = __dirname + '/tmp/'; var testFile = 'test_rsa'; var testPath = path.join(testDir, testFile); var fakeKeyFileData = 'Test Contents'; -var commands = require('../../lib/tessel/commands'); -var async = require('async'); exports['Tessel.isProvisioned()'] = { setUp: function(done) { diff --git a/test/unit/tessel.js b/test/unit/tessel.js index d7fa8fba..61a92840 100644 --- a/test/unit/tessel.js +++ b/test/unit/tessel.js @@ -1,15 +1,4 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var discover = require('../../lib/discover.js'); -var util = require('util'); -var EventEmitter = require('events').EventEmitter; -var logs = require('../../lib/logs'); -// Require this function so that the functions in the -// controller placed on the Tessel prototype -var controller = require('../../lib/controller'); -var lan = require('../../lib/lan_connection'); -var TesselSimulator = require('../common/tessel-simulator'); - +// Test dependencies are required and exposed in common/bootstrap.js exports['Tessel (get)'] = { @@ -17,7 +6,7 @@ exports['Tessel (get)'] = { var self = this; this.sandbox = sinon.sandbox.create(); this.activeSeeker = undefined; - // This is necessary to prevent an EventEmitter memory leak warning + // This is necessary to prevent an Emitter memory leak warning this.processOn = this.sandbox.stub(process, 'on'); this.seeker = this.sandbox.stub(discover, 'TesselSeeker', function Seeker() { this.start = function(options) { @@ -30,7 +19,7 @@ exports['Tessel (get)'] = { return this; }; }); - util.inherits(this.seeker, EventEmitter); + util.inherits(this.seeker, Emitter); this.logsWarn = this.sandbox.stub(logs, 'warn', function() {}); this.logsInfo = this.sandbox.stub(logs, 'info', function() {}); @@ -404,7 +393,7 @@ exports['Tessel (get); filter: unauthorized'] = { var self = this; this.sandbox = sinon.sandbox.create(); this.activeSeeker = undefined; - // This is necessary to prevent an EventEmitter memory leak warning + // This is necessary to prevent an Emitter memory leak warning this.processOn = this.sandbox.stub(process, 'on'); var Seeker = discover.TesselSeeker; @@ -417,10 +406,10 @@ exports['Tessel (get); filter: unauthorized'] = { }); this.startScan = this.sandbox.stub(lan, 'startScan', function() { - return new EventEmitter(); + return new Emitter(); }); - util.inherits(this.seeker, EventEmitter); + util.inherits(this.seeker, Emitter); this.logsWarn = this.sandbox.stub(logs, 'warn', function() {}); this.logsInfo = this.sandbox.stub(logs, 'info', function() {}); diff --git a/test/unit/update.js b/test/unit/update.js index 83deda38..33a53fab 100644 --- a/test/unit/update.js +++ b/test/unit/update.js @@ -1,9 +1,4 @@ -var sinon = require('sinon'); -var controller = require('../../lib/controller'); -var logs = require('../../lib/logs'); -var updates = require('../../lib/update-fetch'); -var Tessel = require('../../lib/tessel/tessel'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js var builds = [{ sha: 'ac4d8d8a5bfd671f7f174c2eaa258856bd82fe29', diff --git a/test/unit/usb_connection.js b/test/unit/usb_connection.js index e9d36369..9422bf4e 100644 --- a/test/unit/usb_connection.js +++ b/test/unit/usb_connection.js @@ -1,9 +1,4 @@ -var sinon = require('sinon'); -var Emitter = require('events').EventEmitter; -var Duplex = require('stream').Duplex; -var USB = require('../../lib/usb_connection').USB; -var Daemon = require('../../lib/usb/usb_daemon'); -var logs = require('../../lib/logs'); +// Test dependencies are required and exposed in common/bootstrap.js exports['USB.Connection'] = { setUp: function(done) { diff --git a/test/unit/wifi.js b/test/unit/wifi.js index b296fd47..40406433 100644 --- a/test/unit/wifi.js +++ b/test/unit/wifi.js @@ -1,8 +1,4 @@ -var sinon = require('sinon'); -var Tessel = require('../../lib/tessel/tessel'); -var commands = require('../../lib/tessel/commands'); -var logs = require('../../lib/logs'); -var TesselSimulator = require('../common/tessel-simulator'); +// Test dependencies are required and exposed in common/bootstrap.js exports['Tessel.prototype.findAvailableNetworks'] = { setUp: function(done) {