From 86685eae6d71d277355735fca4633057f8f68081 Mon Sep 17 00:00:00 2001 From: shimks Date: Tue, 24 Jul 2018 11:26:32 -0400 Subject: [PATCH] Fix failing tests --- app/index.js | 7 +- bluemix/index.js | 9 ++- bluemix/login.js | 6 +- datasource/index.js | 3 +- middleware/index.js | 3 +- model/index.js | 6 +- oracle/index.js | 25 ++++-- package.json | 4 +- remote-method/index.js | 6 +- soap/index.js | 3 +- swagger/index.js | 9 ++- test/acl.test.js | 6 +- test/app.test.js | 14 +++- test/bluemix.test.js | 6 +- test/datasource.test.js | 9 ++- test/export-api-def.test.js | 9 ++- .../fixtures/help-texts/loopback_app_help.txt | 2 + test/middleware.test.js | 9 ++- test/property.test.js | 3 +- test/relations.test.js | 12 +-- test/remote-method.test.js | 3 +- test/soap.test.js | 76 ++++++++++++------- test/zosconnectee.test.js | 3 +- zosconnectee/index.js | 3 +- 24 files changed, 153 insertions(+), 83 deletions(-) diff --git a/app/index.js b/app/index.js index eb8452c..73b68d3 100644 --- a/app/index.js +++ b/app/index.js @@ -252,8 +252,8 @@ module.exports = yeoman.Base.extend({ cb(); } else { cb(new Error( - g.f('The generator must be run in an empty directory.')) - ); + g.f('The generator must be run in an empty directory.') + )); } }); }, @@ -349,7 +349,8 @@ module.exports = yeoman.Base.extend({ 'support and maintain LoopBack, which is at the core of\n' + 'API Connect. When your APIs need robust management and\n' + 'security options, please check out %s', - 'http://ibm.biz/tryAPIC'))); + 'http://ibm.biz/tryAPIC' + ))); this.log(); }, }, diff --git a/bluemix/index.js b/bluemix/index.js index 82dcecc..12b38ad 100644 --- a/bluemix/index.js +++ b/bluemix/index.js @@ -69,10 +69,11 @@ module.exports = yeoman.Base.extend({ validateLoopBackDir: function() { var root = this.destinationRoot(); if (!(this.options.login || this.options.sso)) { - if (!fs.existsSync(path.join(root, 'package.json')) || - !fs.existsSync(path.join(root, 'server', 'server.js'))) { - this.log(chalk.red('\n Invalid LoopBack directory\n')); - process.exit(); + if ( + !fs.existsSync(path.join(root, 'package.json')) || + !fs.existsSync(path.join(root, 'server', 'server.js')) + ) { + throw new Error('Invalid LoopBack directory'); } } }, diff --git a/bluemix/login.js b/bluemix/login.js index a6177c2..94b132d 100644 --- a/bluemix/login.js +++ b/bluemix/login.js @@ -108,7 +108,8 @@ function login() { }); if (choices.length === 1) { this.log(chalk.cyan( - g.f('> Default organization: ') + choices[0].name)); + g.f('> Default organization: ') + choices[0].name + )); this.organization = choices[0].value; } var prompts = [ @@ -136,7 +137,8 @@ function login() { }); if (choices.length === 1) { this.log(chalk.cyan( - g.f('> Default space: ') + choices[0].name)); + g.f('> Default space: ') + choices[0].name + )); this.space = choices[0].value; } var prompts = [ diff --git a/datasource/index.js b/datasource/index.js index a6b8cc2..b73c718 100644 --- a/datasource/index.js +++ b/datasource/index.js @@ -253,7 +253,8 @@ module.exports = yeoman.Base.extend({ npmModule += '@' + pkg.version; } var projectPkg = JSON.parse( - fs.readFileSync(path.join(this.projectDir, 'package.json'), 'utf-8')); + fs.readFileSync(path.join(this.projectDir, 'package.json'), 'utf-8') + ); if (projectPkg.dependencies[pkg.name]) { return; } diff --git a/middleware/index.js b/middleware/index.js index 5faf35f..08c3a63 100644 --- a/middleware/index.js +++ b/middleware/index.js @@ -224,7 +224,8 @@ module.exports = yeoman.Base.extend({ helpers.reportValidationError(err, self.log); if (!err && inst) { self.log(g.f( - 'Middleware %s is added to phase %s.', inst.name, inst.phase)); + 'Middleware %s is added to phase %s.', inst.name, inst.phase + )); } return done(err); }); diff --git a/model/index.js b/model/index.js index 1c9ee8a..4800848 100644 --- a/model/index.js +++ b/model/index.js @@ -186,7 +186,8 @@ module.exports = yeoman.Base.extend({ if (err) return done(err); this.baseModel = model; done(); - }.bind(this)); + }.bind(this) + ); }, askForParameters: function() { @@ -355,7 +356,8 @@ module.exports = yeoman.Base.extend({ this.log(g.f('\nLet\'s add another %s property.', this.displayName)); this.property(); - }.bind(this)); + }.bind(this) + ); }.bind(this)); } }, diff --git a/oracle/index.js b/oracle/index.js index c295e05..d02fe58 100644 --- a/oracle/index.js +++ b/oracle/index.js @@ -67,14 +67,16 @@ module.exports = yeoman.Base.extend({ checkConnector: function() { try { var m = require( - this.destinationPath('node_modules/loopback-connector-oracle')); + this.destinationPath('node_modules/loopback-connector-oracle') + ); this.log(chalk.green(g.f('Oracle connector is ready.'))); if (!this.options.connector && !this.options.driver) this.skip = true; } catch (e) { if (e.code === 'MODULE_NOT_FOUND') { // loopback-connector-oracle is not installed this.log(chalk.red( - g.f('Module is not installed: ' + e))); + g.f('Module is not installed: ' + e) + )); this.options.connector = e.message.indexOf('loopback-connector-oracle') !== -1; this.options.driver = @@ -82,7 +84,8 @@ module.exports = yeoman.Base.extend({ } else { // oracledb cannot be loaded due to dynamic lib issues this.log(chalk.red( - g.f('Module oracledb fails to load: ' + e))); + g.f('Module oracledb fails to load: ' + e) + )); this.options.driver = true; } } @@ -151,7 +154,8 @@ module.exports = yeoman.Base.extend({ // Delete node_modules/loopback-oracle-installer so that // npm install loopback-connector-oracle will trigger post-install var dir = this.destinationPath( - 'node_modules/loopback-oracle-installer'); + 'node_modules/loopback-oracle-installer' + ); if (this.options.verbose) { this.log('Removing directory: ' + dir); } @@ -186,7 +190,8 @@ module.exports = yeoman.Base.extend({ // so that the top-level oracledb will be used var dir = this.destinationPath( - 'node_modules/loopback-connector-oracle/node_modules/oracledb'); + 'node_modules/loopback-connector-oracle/node_modules/oracledb' + ); if (this.options.verbose) { this.log('Removing directory: ' + dir); } @@ -211,20 +216,24 @@ module.exports = yeoman.Base.extend({ // here as it's cached by previous require // First check node_modules/oracledb require( - this.destinationPath('node_modules/oracledb')); + this.destinationPath('node_modules/oracledb') + ); this.log(chalk.green(g.f('Oracle driver is ready.'))); } catch (e) { try { // Try the local oracledb inside loopback-connector-oracle require( this.destinationPath( - 'node_modules/loopback-connector-oracle/node_modules/oracledb')); + 'node_modules/loopback-connector-oracle/node_modules/oracledb' + ) + ); this.log(chalk.green(g.f('Oracle driver is ready.'))); } catch (e) { this.log(chalk.red(g.f('Oracle driver fails to load: ' + e))); this.log( chalk.red(g.f('Please try `lb oracle --driver` or ' + - 'follow instructions at ' + INSTALL_URL + '.'))); + 'follow instructions at ' + INSTALL_URL + '.')) + ); var done = this.async(); var prompts = [ diff --git a/package.json b/package.json index 4f0a599..a489e3a 100644 --- a/package.json +++ b/package.json @@ -54,8 +54,8 @@ "devDependencies": { "bluebird": "^3.1.1", "chai": "^3.2.0", - "eslint": "^4.19.1", - "eslint-config-loopback": "^10.0.0", + "eslint": "^5.2.0", + "eslint-config-loopback": "^11.0.0", "mocha": "^3.2.0", "nock": "^9.0.14", "rimraf": "^2.6.1", diff --git a/remote-method/index.js b/remote-method/index.js index be555f4..9b34248 100644 --- a/remote-method/index.js +++ b/remote-method/index.js @@ -177,7 +177,8 @@ module.exports = yeoman.Base.extend({ verb: answers.httpVerb || answers.customHttpVerb, }); this.log(g.f( - '\nLet\'s add another endpoint, enter an empty name when done.')); + '\nLet\'s add another endpoint, enter an empty name when done.' + )); this.askForEndpoints(); }.bind(this)); }.bind(this)); @@ -343,7 +344,8 @@ module.exports = yeoman.Base.extend({ description: answers.returnsDes, }); this.log(g.f( - '\nLet\'s add another return argument. Enter empty name when done.')); + '\nLet\'s add another return argument. Enter empty name when done.' + )); this.askForReturns(); }.bind(this)); }.bind(this)); diff --git a/soap/index.js b/soap/index.js index bfaeddf..3e4e6da 100644 --- a/soap/index.js +++ b/soap/index.js @@ -369,7 +369,8 @@ module.exports = yeoman.Base.extend({ if (!err) { self.log( chalk.green(g.f('Models are successfully generated from ' + - '{{WSDL}}.'))); + '{{WSDL}}.')) + ); } helpers.reportValidationError(err, self.log); done(err); diff --git a/swagger/index.js b/swagger/index.js index 14eb8a3..3badb03 100644 --- a/swagger/index.js +++ b/swagger/index.js @@ -135,11 +135,13 @@ module.exports = yeoman.Base.extend({ function(done) { // Find existing model definitions wsModels.ModelDefinition.find( - {where: {name: {inq: self.modelNames}}}, done); + {where: {name: {inq: self.modelNames}}}, done + ); }, function(done) { wsModels.ModelConfig.find( - {where: {name: {inq: self.modelNames}}}, done); + {where: {name: {inq: self.modelNames}}}, done + ); }], function(err, objs) { if (err) { @@ -347,7 +349,8 @@ module.exports = yeoman.Base.extend({ if (!err) { self.log( chalk.green(g.f('Models are successfully generated from ' + - '{{swagger spec}}.'))); + '{{swagger spec}}.')) + ); } helpers.reportValidationError(err, self.log); done(err); diff --git a/test/acl.test.js b/test/acl.test.js index 1c8bbde..8021308 100644 --- a/test/acl.test.js +++ b/test/acl.test.js @@ -41,8 +41,10 @@ describe('loopback:acl generator', function() { { name: 'Location', facetName: 'common', - }, done); - }); + }, done + ); + } + ); }); it('adds an entry to models.json', function(done) { diff --git a/test/app.test.js b/test/app.test.js index 1d35e30..434819b 100644 --- a/test/app.test.js +++ b/test/app.test.js @@ -214,7 +214,12 @@ describe('loopback:app generator', function() { gen.run(function(err) { expect(err.message).to.eql( 'Invalid LoopBack version: invalid-version. ' + - 'Available versions are 2.x, 3.x.'); + 'Available versions are 2.x, 3.x.' + ); + + // a way to get around Workspace.copyRecursive not being properly + // restored to its original method + gen.emit('end'); done(); }); }); @@ -235,7 +240,12 @@ describe('loopback:app generator', function() { gen.run(function(err) { expect(err.message).to.eql( 'Invalid template: invalid-template. Available templates for 3.x ' + - 'are api-server, empty-server, hello-world, notes'); + 'are api-server, empty-server, hello-world, notes' + ); + + // a way to get around Workspace.copyRecursive not being properly + // restored to its original method + gen.emit('end'); done(); }); }); diff --git a/test/bluemix.test.js b/test/bluemix.test.js index dcbc22c..9136181 100644 --- a/test/bluemix.test.js +++ b/test/bluemix.test.js @@ -187,7 +187,8 @@ describe('loopback:bluemix generator', function() { assert.equal('string', typeof config.space.name); done(); }); - }); + } + ); itSkipIf(!process.env.BLUEMIX_EMAIL || !process.env.BLUEMIX_PASSWORD)( 'should login with SSO passcode', function(done) { @@ -211,7 +212,8 @@ describe('loopback:bluemix generator', function() { assert.equal('string', typeof config.space.name); done(); }); - }); + } + ); }); function givenBluemixGenerator(args) { diff --git a/test/datasource.test.js b/test/datasource.test.js index 8686205..ec562c1 100644 --- a/test/datasource.test.js +++ b/test/datasource.test.js @@ -73,7 +73,8 @@ describe('loopback:datasource generator', function() { datasourceGen.run(function() { var pkg = fs.readFileSync( - path.join(SANDBOX, 'package.json'), 'UTF-8'); + path.join(SANDBOX, 'package.json'), 'UTF-8' + ); pkg = JSON.parse(pkg); // eslint-disable-next-line no-unused-expressions expect(pkg.dependencies['loopback-connector-rest']).to.exist; @@ -91,7 +92,8 @@ describe('loopback:datasource generator', function() { datasourceGen.run(function() { var pkg = fs.readFileSync( - path.join(SANDBOX, 'package.json'), 'UTF-8'); + path.join(SANDBOX, 'package.json'), 'UTF-8' + ); pkg = JSON.parse(pkg); // eslint-disable-next-line no-unused-expressions expect(pkg.dependencies.lodash).to.exist; @@ -274,7 +276,8 @@ describe('loopback:datasource generator', function() { var datasources = Object.keys(readDataSourcesJsonSync('server')); expect(datasources).to.not.include('ds-object-storage'); var pkg = fs.readFileSync( - path.join(SANDBOX, 'test-app', 'package.json'), 'UTF-8'); + path.join(SANDBOX, 'test-app', 'package.json'), 'UTF-8' + ); pkg = JSON.parse(pkg); // eslint-disable-next-line no-unused-expressions expect(pkg.dependencies['loopback-component-storage']).to.exist; diff --git a/test/export-api-def.test.js b/test/export-api-def.test.js index 7f72508..263ebde 100644 --- a/test/export-api-def.test.js +++ b/test/export-api-def.test.js @@ -39,7 +39,8 @@ describe('loopback:export-api-def generator', function() { function(err, model) { test.Model = model; done(err); - }); + } + ); }); before(function installDependencies(done) { @@ -67,7 +68,8 @@ describe('loopback:export-api-def generator', function() { expect(content).to.have.property('basePath'); expect(content).to.have.property('info'); expect(content.info).to.have.property( - 'title', 'test-app'); + 'title', 'test-app' + ); expect(content).to.have.property('tags'); expect(content.consumes).to.have.members([ 'application/json', @@ -96,7 +98,8 @@ describe('loopback:export-api-def generator', function() { expect(content).to.have.property('basePath'); expect(content).to.have.property('info'); expect(content.info).to.have.property( - 'title', 'test-app'); + 'title', 'test-app' + ); expect(content).to.have.property('tags'); expect(content.consumes).to.have.members([ 'application/json', diff --git a/test/fixtures/help-texts/loopback_app_help.txt b/test/fixtures/help-texts/loopback_app_help.txt index 0d8462f..bc2a014 100644 --- a/test/fixtures/help-texts/loopback_app_help.txt +++ b/test/fixtures/help-texts/loopback_app_help.txt @@ -7,6 +7,8 @@ Options: --skip-install # Do not install npm dependencies Default: false --skip-next-steps # Do not print "next steps" info --explorer # Add Loopback Explorer to the project (true by default) + --loopbackVersion # Select the LoopBack version + --template # Set up the LoopBack application template --bluemix # Set up as a Bluemix app Arguments: diff --git a/test/middleware.test.js b/test/middleware.test.js index 067d728..9cd89b1 100644 --- a/test/middleware.test.js +++ b/test/middleware.test.js @@ -71,7 +71,8 @@ describe('loopback:middleware generator', function() { }); var builtinSources = Object.keys( - readMiddlewaresJsonSync('server').routes); + readMiddlewaresJsonSync('server').routes + ); modelGen.run(function() { var newSources = Object.keys(readMiddlewaresJsonSync('server').routes); var expectedSources = builtinSources.concat(['my-middleware-3']); @@ -91,10 +92,12 @@ describe('loopback:middleware generator', function() { }); var builtinSources = Object.keys( - readMiddlewaresJsonSync('server')['routes:after'] || {}); + readMiddlewaresJsonSync('server')['routes:after'] || {} + ); modelGen.run(function() { var newSources = Object.keys( - readMiddlewaresJsonSync('server')['routes:after']); + readMiddlewaresJsonSync('server')['routes:after'] + ); var expectedSources = builtinSources.concat(['my-middleware-4']); expect(newSources).to.have.members(expectedSources); done(); diff --git a/test/property.test.js b/test/property.test.js index 81518aa..c4510e2 100644 --- a/test/property.test.js +++ b/test/property.test.js @@ -32,7 +32,8 @@ describe('loopback:property generator', function() { function(err, model) { test.Model = model; done(err); - }); + } + ); }); it('creates model with non required default', function(done) { diff --git a/test/relations.test.js b/test/relations.test.js index 747f7ec..49d7f81 100644 --- a/test/relations.test.js +++ b/test/relations.test.js @@ -40,8 +40,10 @@ describe('loopback:relation generator', function() { }, function(err) { done(err); - }); - }); + } + ); + } + ); }); it('adds an entry to common/models/{name}.json', function(done) { @@ -221,8 +223,7 @@ describe('loopback:relation generator', function() { expect(Object.keys(relations)).to.include('part'); done(); }); - } - ); + }); // requires generator-yeoman v0.17 it('provides default property name based on target model for hasMany', @@ -239,8 +240,7 @@ describe('loopback:relation generator', function() { expect(Object.keys(relations)).to.include('parts'); done(); }); - } - ); + }); function givenRelationGenerator() { var name = 'loopback:relation'; diff --git a/test/remote-method.test.js b/test/remote-method.test.js index d840b45..cb29917 100644 --- a/test/remote-method.test.js +++ b/test/remote-method.test.js @@ -32,7 +32,8 @@ describe('loopback:remote-method generator', function() { function(err, model) { test.Model = model; done(err); - }); + } + ); }); it('adds an entry to common/models/{name}.json', function(done) { diff --git a/test/soap.test.js b/test/soap.test.js index 01b0d33..0b21f74 100644 --- a/test/soap.test.js +++ b/test/soap.test.js @@ -25,8 +25,6 @@ describe('loopback:soap tests', function() { var modelGen = givenDataSourceGenerator(); helpers.mockPrompt(modelGen, { name: 'soapds', - customConnector: '', // temporary workaround for - // https://github.com/yeoman/generator/issues/600 connector: 'soap', url: 'http://www.webservicex.net/stockquote.asmx', wsdl: path.join(__dirname, 'soap/stockquote.wsdl'), @@ -75,7 +73,7 @@ describe('loopback:soap tests', function() { }); }); - describe('periodic table wsdl', function() { + describe('calculator wsdl', function() { beforeEach(common.resetWorkspace); beforeEach(function createSandbox(done) { @@ -90,11 +88,9 @@ describe('loopback:soap tests', function() { var modelGen = givenDataSourceGenerator(); helpers.mockPrompt(modelGen, { name: 'soapds', - customConnector: '', // temporary workaround for - // https://github.com/yeoman/generator/issues/600 connector: 'soap', - url: 'http://www.webservicex.net/periodictable.asmx', - wsdl: 'http://www.webservicex.net/periodictable.asmx?WSDL', + url: 'http://www.dneonline.com/calculator.asmx', + wsdl: 'http://www.dneonline.com/calculator.asmx?WSDL', remotingEnabled: true, installConnector: false, }); @@ -103,44 +99,70 @@ describe('loopback:soap tests', function() { }); }); - it('periodic table wsdl', + it('calculator wsdl', function(done) { var modelGen = givenModelGenerator(); helpers.mockPrompt(modelGen, { dataSource: 'soapds', - url: 'http://www.webservicex.net/periodictable.asmx?WSDL', - service: 'periodictable', - binding: 'periodictableSoap', - operations: ['GetAtomicNumber', 'GetAtomicWeight'], + url: 'http://www.dneonline.com/calculator.asmx?WSDL', + service: 'Calculator', + binding: 'CalculatorSoap', + operations: ['Add', 'Divide', 'Multiply', 'Subtract'], }); - // this runs command loopback:soap command with mock up /test/soap/stockquote.wsdl as input from command prompt + modelGen.run(function() { - var content = readModelJsonSync('get-atomic-weight'); + var content = readModelJsonSync('add'); expect(content).to.not.have.property('public'); expect(content).to.have.property('properties'); - expect(content.properties.ElementName.type).to.eql('string'); + expect(content.properties.intA.type).to.eql('number'); + expect(content.properties.intB.type).to.eql('number'); expect(content).to.have.property('excludeBaseProperties'); var expectedExcludeProps = ['id']; expect(content.excludeBaseProperties). to.deep.equal(expectedExcludeProps); - content = readModelJsonSync('get-atomic-weight-response'); - expect(content.properties.GetAtomicWeightResult.type).to.eql('string'); // eslint-disable-line max-len + content = readModelJsonSync('add-response'); + expect(content.properties.AddResult.type).to.eql('number'); - content = readModelJsonSync('get-atomic-number'); + content = readModelJsonSync('divide'); expect(content).to.not.have.property('public'); expect(content).to.have.property('properties'); - expect(content.properties.ElementName.type).to.eql('string'); + expect(content.properties.intA.type).to.eql('number'); + expect(content.properties.intB.type).to.eql('number'); - content = readModelJsonSync('get-atomic-number-response'); - expect(content.properties.GetAtomicNumberResult.type).to.eql('string'); // eslint-disable-line max-len + content = readModelJsonSync('divide-response'); + expect(content.properties.DivideResult.type).to.eql('number'); + + content = readModelJsonSync('multiply'); + expect(content).to.not.have.property('public'); + expect(content).to.have.property('properties'); + expect(content.properties.intA.type).to.eql('number'); + expect(content.properties.intB.type).to.eql('number'); + + content = readModelJsonSync('multiply-response'); + expect(content.properties.MultiplyResult.type).to.eql('number'); + + content = readModelJsonSync('subtract'); + expect(content).to.not.have.property('public'); + expect(content).to.have.property('properties'); + expect(content.properties.intA.type).to.eql('number'); + expect(content.properties.intB.type).to.eql('number'); + + content = readModelJsonSync('subtract-response'); + expect(content.properties.SubtractResult.type).to.eql('number'); var modelConfig = readModelConfigSync('server'); - expect(modelConfig).to.have.property('GetAtomicWeight'); - expect(modelConfig.GetAtomicWeight).to.have.property('public', true); + expect(modelConfig).to.have.property('Add'); + expect(modelConfig.Add).to.have.property('public', true); - expect(modelConfig).to.have.property('GetAtomicNumber'); - expect(modelConfig.GetAtomicNumber).to.have.property('public', true); + expect(modelConfig).to.have.property('Divide'); + expect(modelConfig.Divide).to.have.property('public', true); + + expect(modelConfig).to.have.property('Multiply'); + expect(modelConfig.Multiply).to.have.property('public', true); + + expect(modelConfig).to.have.property('Subtract'); + expect(modelConfig.Subtract).to.have.property('public', true); done(); }); @@ -159,8 +181,6 @@ describe('loopback:soap tests', function() { var modelGen = givenDataSourceGenerator(); helpers.mockPrompt(modelGen, { name: 'soapds', - customConnector: '', // temporary workaround for - // https://github.com/yeoman/generator/issues/600 connector: 'soap', url: 'http://localhost:15099/rpc_Literal_testing', wsdl: path.join(__dirname, 'soap/special_char_test.wsdl'), @@ -182,7 +202,7 @@ describe('loopback:soap tests', function() { operations: ['myMethod'], }); - // this runs command loopback:soap command with mock up /test/soap/stockquote.wsdl as input from command prompt + // this runs command loopback:soap command with mock up /test/soap/special_char_test.wsdl as input from command prompt modelGen.run(function() { var content = readAPIFileSync('soap-rpc-literal-test-2-0-binding'); done(); diff --git a/test/zosconnectee.test.js b/test/zosconnectee.test.js index 0c29a91..fc26c2c 100644 --- a/test/zosconnectee.test.js +++ b/test/zosconnectee.test.js @@ -84,8 +84,7 @@ describe('loopback:zosconnectee generator', function() { 'zosconnectee_template.json'); done(); }); - } - ); + }); function givenDataSourceGenerator(dsArgs, _dsPath) { var dsPath = _dsPath || '../../datasource'; diff --git a/zosconnectee/index.js b/zosconnectee/index.js index ec5a614..f04cbf8 100644 --- a/zosconnectee/index.js +++ b/zosconnectee/index.js @@ -42,7 +42,8 @@ module.exports = generators.Base.extend({ that.datasources = tempList; if (that.datasources.length == 0) { that.env.error( - 'Define a zosconnectee datasource before running this command'); + 'Define a zosconnectee datasource before running this command' + ); } done(); // End the sync }