123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- var path = require('path');
- var bower = require('../../lib/index.js');
- var mkdirp = require('mkdirp');
- var rimraf = require('rimraf');
- var fs = require('fs');
- var expect = require('expect.js');
- var scripts = require('../../lib/core/scripts.js');
- describe('scripts', function () {
- var tempDir = path.join(__dirname, '../tmp/temp-scripts');
- var packageName = 'package-zip';
- var packageDir = path.join(__dirname, '../assets/' + packageName + '.zip');
- var config = {
- cwd: tempDir,
- scripts: {
- preinstall: 'touch preinstall_%',
- postinstall: 'touch postinstall_%',
- preuninstall: 'touch preuninstall_%'
- }
- };
- before(function (next) {
- mkdirp(tempDir, next);
- });
- after(function (next) {
- rimraf(tempDir, next);
- });
- it('should run preinstall and postinstall hooks.', function (next) {
- bower.commands
- .install([packageDir], undefined, config)
- .on('end', function (installed) {
- expect(fs.existsSync(path.join(tempDir, 'preinstall_' + packageName))).to.be(true);
- expect(fs.existsSync(path.join(tempDir, 'postinstall_' + packageName))).to.be(true);
- next();
- });
- });
- it('should run preuninstall hook.', function (next) {
- bower.commands
- .uninstall([packageName], undefined, config)
- .on('end', function (installed) {
- expect(fs.existsSync(path.join(tempDir, 'preuninstall_' + packageName))).to.be(true);
- next();
- });
- });
- it('should not break anything when no hooks configured.', function (next) {
- bower.commands
- .uninstall([packageName], undefined, { cwd: tempDir })
- .on('end', function (installed) {
- //no exception then we're good
- next();
- });
- });
- it('should reorder packages by dependencies, while trying to maintain order from bower.json, correctly.', function () {
- var mockAngularUI = { dependencies: {
- 'angular': '*'
- }};
- var mockJQuery = { dependencies: {
- }};
- var mockAngular = { dependencies: {
- 'jquery': '*'
- }};
- var mockMoment = { dependencies: {
- }};
- var mockSelect2 = { dependencies: {
- 'jquery': '*'
- }};
- var mockBadPackage = { dependencies: {
- 'something-not-installed': '*'
- }};
- var packages = {
- 'select2': mockSelect2,
- 'angular-ui': mockAngularUI,
- 'jquery': mockJQuery,
- 'bad-package': mockBadPackage,
- 'angular': mockAngular,
- 'moment': mockMoment
- };
- var installed = [];
- var mockBowerJson = { dependencies: {
- 'jquery': '*',
- 'select2': '*',
- 'angular-ui': '*',
- 'angular': '*',
- 'moment': '*'
- } };
- var ordered = scripts._orderByDependencies(packages, installed, mockBowerJson);
- expect(ordered).to.eql(['jquery', 'select2', 'angular', 'angular-ui', 'moment', 'bad-package']);
- });
- it('should process scripts with quotes and vars in the cmd properly.', function (next) {
- config.scripts.preinstall = 'touch "$BOWER_PID %"';
- bower.commands
- .install([packageDir], undefined, config)
- .on('end', function (installed) {
- expect(fs.existsSync(path.join(tempDir, process.pid + ' ' + packageName))).to.be(true);
- next();
- });
- });
- });
|