Skip to content

Commit

Permalink
Added external path test
Browse files Browse the repository at this point in the history
  • Loading branch information
Sinjhin committed Oct 20, 2016
1 parent f83092a commit 3358a8c
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 18 deletions.
20 changes: 13 additions & 7 deletions app/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,27 @@ module.exports = generators.Base.extend({
this.props.name = _.kebabCase(this.props.name);

var validationResults = validate(this.props.name);
var isValid = validationResults.validForNewPackages;
var isValidName = validationResults.validForNewPackages;

if(!isValid) {
if(!isValidName) {
var warnings = validationResults.warnings;
var error = new Error('Your project name ' + this.props.name + ' is not ' +
'valid. Please try another name. Reason: ' + warnings[0]);
done(error);
return;
}

if (path.isAbsolute(this.props.folder)) {
this.props.folder = path.relative(this.destinationPath(), this.props.folder);
}
var isValidPath = !this.props.folder.includes('../');
if (!isValidPath) {
var error = new Error('Your project main folder ' + this.props.folder + ' is external ' +
'to the project folder. Please set to internal path.');
done(error);
return;
}

done();
}.bind(this));
}.bind(this));
Expand All @@ -120,11 +131,6 @@ module.exports = generators.Base.extend({
var pkgName = this.props.name;
var pkgMain = pkgName + '/index.stache!done-autorender';

if (path.isAbsolute(this.props.folder)) {
var cd = __dirname;
this.props.folder = path.relative(cd, this.props.folder);
}

var self = this;
var pkgJsonFields = {
name: pkgName,
Expand Down
39 changes: 28 additions & 11 deletions test/app.test.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
var assert = require('assert');
var path = require('path');
var fs = require('fs');
var os = require('os');
var helpers = require('yeoman-generator').test;
var exec = require('child_process').exec;
var donejsPackage = require('donejs-cli/package.json');
Expand Down Expand Up @@ -41,12 +43,8 @@ describe('generator-donejs', function () {
});

it('fails with an invalid package name', function (done) {
var tmpDir;

helpers.run(path.join(__dirname, '../app'))
.inTmpDir(function (dir) {
tmpDir = dir;
})
.withOptions({
packages: donejsPackage.donejs,
skipInstall: true
Expand All @@ -63,20 +61,20 @@ describe('generator-donejs', function () {
});

describe('Absolute path support', function() {
var tmpDir;

before(function(done) {
helpers.run(path.join(__dirname, '../app'))
.inTmpDir(function(dir) {
tmpDir = dir;
.inTmpDir(function (dir) {
this.withPrompts({
folder: path.join(fs.realpathSync(dir), '/src')
})
})
.withOptions({
packages: donejsPackage.donejs,
skipInstall: true
})
.withPrompts({
folder: path.join(__dirname, "../app/src")
}).on('end', done);
.on('end', function() {
done();
})
});

it('set relative path name', function() {
Expand All @@ -90,6 +88,25 @@ describe('generator-donejs', function () {
});
});

describe('External path will error', function() {
it("fails with external path", function(done) {
helpers.run(path.join(__dirname, '../app'))
.withPrompts({
folder: os.homedir()
})
.withOptions({
packages: donejsPackage.donejs,
skipInstall: true
})
.on('error', function(err){
var msg = err.message;
console.log(msg);
assert(/is external/.test(msg), 'Error because of invalid external folder path');
done();
});
});
});

describe('NPM 3 support', function(){
before(function(done){
var test = this;
Expand Down

0 comments on commit 3358a8c

Please sign in to comment.