Skip to content

Commit 79fb096

Browse files
committed
chore(test): e2e css preprocessor tests
1 parent de3c89b commit 79fb096

10 files changed

+296
-110
lines changed

.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
addon/ng2/blueprints/ng2/files/src/config/system.config.js

addon/ng2/tasks/install.js

+16-16
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
/* jshint node: true, esnext: true */
2+
/* eslint-env es6 */
23
'use strict';
34

45
const Promise = require('ember-cli/lib/ext/promise');
56
const Task = require('ember-cli/lib/models/task');
67
const npmTask = require('ember-cli/lib/tasks/npm-task');
78
const chalk = require('chalk');
89
const path = require('path');
9-
const fs = require('fs');
10-
const fse = require('fs-extra');
11-
const packageJSON = path.resolve(process.cwd(), 'package.json');
12-
const nodeModules = path.resolve(process.cwd(), 'node_modules');
1310
const typingsInstall = require('./typings-install');
1411
const systemJS = require('../utilities/systemjs-helper.ts');
15-
const ts = require('typescript');
16-
const glob = require('glob');
17-
const _ = require('lodash');
1812

1913
module.exports = Task.extend({
2014
completionOKMessage: 'Successfully installed.',
@@ -39,39 +33,45 @@ module.exports = Task.extend({
3933
},
4034

4135
installProcedure: function() {
36+
const that = this;
37+
4238
const NpmTask = new npmTask({
4339
command: 'install',
4440
ui: this.ui,
4541
analytics: this.analytics,
4642
project: this.project,
47-
startProgressMessage: `Installing packages: ${this.packages}`,
48-
completionMessage: `Packages successfully installed.`
43+
startProgressMessage: 'Installing packages: ' + this.packages,
44+
completionMessage: 'Packages successfully installed.'
4945
});
5046

5147
return NpmTask.run({
5248
packages: this.packages,
53-
verbose: false,
49+
verbose: false
5450
})
5551
.then(() => this.storeInSystemJSConfig(this.packages))
5652
.then(() => {
57-
const typings = this.typings;
53+
const typings = that.typings;
5854
if (typings) {
59-
this.ui.startProgress(chalk.green(`Installing typings: ${typings}`), chalk.green(`.`));
55+
that.ui.startProgress(chalk.green('Installing typings: ' + typings), chalk.green('.'));
6056
return typingsInstall(typings).then(() => {
61-
this.ui.stopProgress();
62-
this.ui.writeLine(chalk.green(`Typings successfully installed.`));
57+
that.ui.stopProgress();
58+
that.ui.writeLine(chalk.green('Typings successfully installed.'));
6359
});
6460
}
65-
}.bind(this));
61+
});
6662
},
6763

6864
storeInSystemJSConfig: function(packages) {
6965
const systemPath = path.resolve(process.cwd(), 'src', 'config', 'system.config.js');
7066
let json = systemJS.loadSystemJson(systemPath);
7167

68+
packages = packages.filter(p => {
69+
return (!/node-sass|stylus|less|compass-importer/.test(p));
70+
});
71+
7272
let mappings = json.map || {};
7373
packages.forEach(pkg => {
74-
mappings[pkg] = `libs/${pkg}/${pkg}.js`;
74+
mappings[pkg] = 'libs/' + pkg + '/' + pkg + '.js';
7575
});
7676
json.map = mappings;
7777
systemJS.saveSystemJson(systemPath, json);

addon/ng2/tasks/uninstall.js

+9-12
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@ const Task = require('ember-cli/lib/models/task');
66
const npmTask = require('ember-cli/lib/tasks/npm-task');
77
const chalk = require('chalk');
88
const path = require('path');
9-
const fs = require('fs');
10-
const fse = require('fs-extra');
11-
const exec = Promise.denodeify(require('child_process').exec);
12-
const packageJSON = path.resolve(process.cwd(), 'package.json');
13-
const nodeModules = path.resolve(process.cwd(), 'node_modules');
149
const typingsUninstall = require('./typings-uninstall');
1510
const systemJS = require('../utilities/systemjs-helper.ts');
1611

@@ -23,13 +18,15 @@ module.exports = Task.extend({
2318
},
2419

2520
uninstallProcedure: function() {
21+
const that = this;
22+
2623
const NpmTask = new npmTask({
2724
command: 'uninstall',
2825
ui: this.ui,
2926
analytics: this.analytics,
3027
project: this.project,
31-
startProgressMessage: `Uninstalling packages: ${this.packages}`,
32-
completionMessage: `Packages successfully uninstalled.`
28+
startProgressMessage: 'Uninstalling packages: ' + this.packages,
29+
completionMessage: 'Packages successfully uninstalled.'
3330
});
3431

3532
return NpmTask.run({
@@ -38,15 +35,15 @@ module.exports = Task.extend({
3835
})
3936
.then(() => this.removeFromSystemJSConfig(this.packages))
4037
.then(() => {
41-
const typings = this.typings;
38+
const typings = that.typings;
4239
if (typings) {
43-
this.ui.startProgress(chalk.green(`Uninstalling typings: ${typings}`), chalk.green(`.`));
40+
that.ui.startProgress(chalk.green('Uninstalling typings: ' + typings), chalk.green('.'));
4441
return typingsUninstall(typings).then(() => {
45-
this.ui.stopProgress();
46-
this.ui.writeLine(chalk.green(`Typings successfully uninstalled.`));
42+
that.ui.stopProgress();
43+
that.ui.writeLine(chalk.green('Typings successfully uninstalled.'));
4744
});
4845
}
49-
}.bind(this));
46+
});
5047
},
5148

5249
removeFromSystemJSConfig: function(packages) {

addon/ng2/utilities/systemjs-helper.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export function loadSystemJson(systemPath: string): { [name: string]: any } {
99
}
1010

1111
export function saveSystemJson(systemPath: string, json: { [name: string]: any }) {
12-
const writeContents: any = 'System.config(' + JSON.stringify(json, null, '\t') + ');';
12+
const jsonContent: any = JSON.stringify(json, null, '\t');
13+
const writeContents: any = 'System.config(' + jsonContent + ');';
1314

1415
fs.writeFileSync(systemPath, writeContents, 'utf8');
1516
}

lib/broccoli/broccoli-compass.js renamed to lib/broccoli/angular-broccoli-compass.js

+29-11
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,27 @@
22
'use strict';
33

44
try {
5-
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
6-
require('module').Module._initPaths();
7-
require.resolve('node-sass');
8-
require.resolve('compass-importer');
5+
let sass;
6+
let compass;
7+
8+
if (process.platform === 'win32') {
9+
require.resolve(`${process.env.PWD}/node_modules/node-sass`);
10+
require.resolve(`${process.env.PWD}/node_modules/compass-importer`);
11+
sass = require(`${process.env.PWD}/node_modules/node-sass`);
12+
compass = require(`${process.env.PWD}/node_modules/compass-importer`);
13+
} else {
14+
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
15+
require('module').Module._initPaths();
16+
require.resolve('node-sass');
17+
require.resolve('compass-importer');
18+
sass = require('node-sass');
19+
compass = require('compass-importer');
20+
}
921

1022
const Plugin = require('broccoli-caching-writer');
11-
const fs = require('fs');
1223
const fse = require('fs-extra');
1324
const path = require('path');
14-
const sass = require('node-sass');
15-
const compass = require('compass-importer');
25+
const Funnel = require('broccoli-funnel');
1626

1727
class CompassPlugin extends Plugin {
1828
constructor(inputNodes, options) {
@@ -54,8 +64,16 @@ try {
5464
}
5565
}
5666

57-
module.exports = CompassPlugin;
58-
}
59-
catch (e) {
60-
module.exports = null;
67+
exports.makeBroccoliTree = (sourceDir) => {
68+
let compassSrcTree = new Funnel(sourceDir, {
69+
include: ['**/*.scss', '**/*.sass'],
70+
allowEmpty: true
71+
});
72+
73+
return new CompassPlugin([compassSrcTree]);
74+
};
75+
} catch (e) {
76+
exports.makeBroccoliTree = () => {
77+
return null;
78+
};
6179
}

lib/broccoli/broccoli-less.js renamed to lib/broccoli/angular-broccoli-less.js

+23-6
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@
22
'use strict';
33

44
try {
5-
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
6-
require('module').Module._initPaths();
7-
require.resolve('less');
5+
let less;
6+
7+
if (process.platform === 'win32') {
8+
require.resolve(`${process.env.PWD}/node_modules/less`);
9+
less = require(`${process.env.PWD}/node_modules/less`);
10+
} else {
11+
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
12+
require('module').Module._initPaths();
13+
require.resolve('less');
14+
less = require('less');
15+
}
816

917
const Plugin = require('broccoli-caching-writer');
1018
const fs = require('fs');
1119
const fse = require('fs-extra');
1220
const path = require('path');
13-
const less = require('less');
21+
const Funnel = require('broccoli-funnel');
1422

1523
class LESSPlugin extends Plugin {
1624
constructor(inputNodes, options) {
@@ -61,7 +69,16 @@ try {
6169
}
6270
}
6371

64-
module.exports = LESSPlugin;
72+
exports.makeBroccoliTree = (sourceDir) => {
73+
let lessSrcTree = new Funnel(sourceDir, {
74+
include: ['**/*.less'],
75+
allowEmpty: true
76+
});
77+
78+
return new LESSPlugin([lessSrcTree]);
79+
};
6580
} catch (e) {
66-
module.exports = null;
81+
exports.makeBroccoliTree = () => {
82+
return null;
83+
};
6784
}

lib/broccoli/broccoli-sass.js renamed to lib/broccoli/angular-broccoli-sass.js

+24-9
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,22 @@
22
'use strict';
33

44
try {
5-
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
6-
require('module').Module._initPaths();
7-
require.resolve('node-sass');
5+
let sass;
6+
7+
if (process.platform === 'win32') {
8+
require.resolve(`${process.env.PWD}/node_modules/node-sass`);
9+
sass = require(`${process.env.PWD}/node_modules/node-sass`);
10+
} else {
11+
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
12+
require('module').Module._initPaths();
13+
require.resolve('node-sass');
14+
sass = require('node-sass');
15+
}
816

917
const Plugin = require('broccoli-caching-writer');
10-
const fs = require('fs');
1118
const fse = require('fs-extra');
1219
const path = require('path');
13-
const sass = require('node-sass');
20+
const Funnel = require('broccoli-funnel');
1421

1522
class SASSPlugin extends Plugin {
1623
constructor(inputNodes, options) {
@@ -50,8 +57,16 @@ try {
5057
}
5158
}
5259

53-
module.exports = SASSPlugin;
54-
}
55-
catch (e) {
56-
module.exports = null;
60+
exports.makeBroccoliTree = (sourceDir) => {
61+
let sassSrcTree = new Funnel(sourceDir, {
62+
include: ['**/*.sass', '**/*.scss'],
63+
allowEmpty: true
64+
});
65+
66+
return new SASSPlugin([sassSrcTree]);
67+
};
68+
} catch (e) {
69+
exports.makeBroccoliTree = () => {
70+
return null;
71+
};
5772
}

lib/broccoli/broccoli-stylus.js renamed to lib/broccoli/angular-broccoli-stylus.js

+24-8
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@
22
'use strict';
33

44
try {
5-
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
6-
require('module').Module._initPaths();
7-
require.resolve('stylus');
5+
let stylus;
6+
7+
if (process.platform === 'win32') {
8+
require.resolve(`${process.env.PWD}/node_modules/stylus`);
9+
stylus = require(`${process.env.PWD}/node_modules/stylus`);
10+
} else {
11+
process.env.NODE_PATH += `:${process.env.PWD}/node_modules`;
12+
require('module').Module._initPaths();
13+
require.resolve('stylus');
14+
stylus = require('stylus');
15+
}
816

917
const Plugin = require('broccoli-caching-writer');
1018
const fs = require('fs');
1119
const fse = require('fs-extra');
1220
const path = require('path');
13-
const stylus = require('stylus');
21+
const Funnel = require('broccoli-funnel');
1422

1523
class StylusPlugin extends Plugin {
1624
constructor(inputNodes, options) {
@@ -60,8 +68,16 @@ try {
6068
}
6169
}
6270

63-
module.exports = StylusPlugin;
64-
}
65-
catch (e) {
66-
module.exports = null;
71+
exports.makeBroccoliTree = (sourceDir) => {
72+
let stylusSrcTree = new Funnel(sourceDir, {
73+
include: ['**/*.styl'],
74+
allowEmpty: true
75+
});
76+
77+
return new StylusPlugin([stylusSrcTree]);
78+
};
79+
} catch (e) {
80+
exports.makeBroccoliTree = () => {
81+
return null;
82+
};
6783
}

0 commit comments

Comments
 (0)