You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
6.0 KiB
185 lines
6.0 KiB
var assert = require('assert').strict, |
|
sass = process.env.NODESASS_COV |
|
? require('../lib-cov/extensions') |
|
: require('../lib/extensions'); |
|
|
|
describe('runtime parameters', function() { |
|
var pkg = require('../package'), |
|
// Let's use JSON to fake a deep copy |
|
savedArgv = JSON.stringify(process.argv), |
|
savedEnv = JSON.stringify(process.env); |
|
|
|
afterEach(function() { |
|
process.argv = JSON.parse(savedArgv); |
|
process.env = JSON.parse(savedEnv); |
|
delete pkg.nodeSassConfig; |
|
}); |
|
|
|
describe('configuration precedence should be respected', function() { |
|
|
|
describe('SASS_BINARY_NAME', function() { |
|
beforeEach(function() { |
|
process.argv.push('--sass-binary-name', 'aaa'); |
|
process.env.SASS_BINARY_NAME = 'bbb'; |
|
process.env.npm_config_sass_binary_name = 'ccc'; |
|
pkg.nodeSassConfig = { binaryName: 'ddd' }; |
|
}); |
|
|
|
it('command line argument', function() { |
|
assert.strictEqual(sass.getBinaryName(), 'aaa_binding.node'); |
|
}); |
|
|
|
it('environment variable', function() { |
|
process.argv = []; |
|
assert.strictEqual(sass.getBinaryName(), 'bbb_binding.node'); |
|
}); |
|
|
|
it('npm config variable', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_NAME = null; |
|
assert.strictEqual(sass.getBinaryName(), 'ccc_binding.node'); |
|
}); |
|
|
|
it('package.json', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_NAME = null; |
|
process.env.npm_config_sass_binary_name = null; |
|
assert.strictEqual(sass.getBinaryName(), 'ddd_binding.node'); |
|
}); |
|
}); |
|
|
|
describe('SASS_BINARY_SITE', function() { |
|
beforeEach(function() { |
|
process.argv.push('--sass-binary-site', 'http://aaa.example.com:9999'); |
|
process.env.SASS_BINARY_SITE = 'http://bbb.example.com:8888'; |
|
process.env.npm_config_sass_binary_site = 'http://ccc.example.com:7777'; |
|
pkg.nodeSassConfig = { binarySite: 'http://ddd.example.com:6666' }; |
|
}); |
|
|
|
it('command line argument', function() { |
|
var URL = 'http://aaa.example.com:9999'; |
|
assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); |
|
}); |
|
|
|
it('environment variable', function() { |
|
process.argv = []; |
|
var URL = 'http://bbb.example.com:8888'; |
|
assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); |
|
}); |
|
|
|
it('npm config variable', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_SITE = null; |
|
var URL = 'http://ccc.example.com:7777'; |
|
assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); |
|
}); |
|
|
|
it('package.json', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_SITE = null; |
|
process.env.npm_config_sass_binary_site = null; |
|
var URL = 'http://ddd.example.com:6666'; |
|
assert.strictEqual(sass.getBinaryUrl().substr(0, URL.length), URL); |
|
}); |
|
}); |
|
|
|
describe('SASS_BINARY_DIR', function() { |
|
beforeEach(function() { |
|
process.argv.push('--sass-binary-dir', 'aaa'); |
|
process.env.SASS_BINARY_DIR = 'bbb'; |
|
process.env.npm_config_sass_binary_dir = 'ccc'; |
|
pkg.nodeSassConfig = { binaryDir: 'ddd' }; |
|
}); |
|
|
|
it('command line argument', function() { |
|
assert.strictEqual(sass.getBinaryDir(), 'aaa'); |
|
}); |
|
|
|
it('environment variable', function() { |
|
process.argv = []; |
|
assert.strictEqual(sass.getBinaryDir(), 'bbb'); |
|
}); |
|
|
|
it('npm config variable', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_DIR = null; |
|
assert.strictEqual(sass.getBinaryDir(), 'ccc'); |
|
}); |
|
|
|
it('package.json', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_DIR = null; |
|
process.env.npm_config_sass_binary_dir = null; |
|
assert.strictEqual(sass.getBinaryDir(), 'ddd'); |
|
}); |
|
}); |
|
|
|
describe('SASS_BINARY_PATH', function() { |
|
beforeEach(function() { |
|
process.argv.push('--sass-binary-path', 'aaa_binding.node'); |
|
process.env.SASS_BINARY_PATH = 'bbb_binding.node'; |
|
process.env.npm_config_sass_binary_path = 'ccc_binding.node'; |
|
pkg.nodeSassConfig = { binaryPath: 'ddd_binding.node' }; |
|
}); |
|
|
|
it('command line argument', function() { |
|
assert.strictEqual(sass.getBinaryPath(), 'aaa_binding.node'); |
|
}); |
|
|
|
it('environment variable', function() { |
|
process.argv = []; |
|
assert.strictEqual(sass.getBinaryPath(), 'bbb_binding.node'); |
|
}); |
|
|
|
it('npm config variable', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_PATH = null; |
|
assert.strictEqual(sass.getBinaryPath(), 'ccc_binding.node'); |
|
}); |
|
|
|
it('package.json', function() { |
|
process.argv = []; |
|
process.env.SASS_BINARY_PATH = null; |
|
process.env.npm_config_sass_binary_path = null; |
|
assert.strictEqual(sass.getBinaryPath(), 'ddd_binding.node'); |
|
}); |
|
}); |
|
|
|
}); |
|
|
|
describe.skip('Sass Binary Cache', function() { |
|
var npmCacheDir; |
|
before(function() { |
|
npmCacheDir = process.env.npm_config_cache; |
|
}); |
|
|
|
beforeEach(function() { |
|
delete process.env.npm_config_sass_binary_cache; |
|
}); |
|
|
|
it('npm config variable', function() { |
|
var overridenCachePath = '/foo/bar/'; |
|
process.env.npm_config_sass_binary_cache = overridenCachePath; |
|
assert.strictEqual(sass.getCachePath(), overridenCachePath); |
|
}); |
|
|
|
it('With no value, falls back to NPM cache', function() { |
|
assert.strictEqual(sass.getCachePath(), npmCacheDir); |
|
}); |
|
}); |
|
}); |
|
|
|
// describe('library detection', function() { |
|
// it('should throw error when libsass binary is missing.', function() { |
|
// var sass = require(extensionsPath), |
|
// originalBin = sass.getBinaryPath(), |
|
// renamedBin = [originalBin, '_moved'].join(''); |
|
|
|
// assert.throws(function() { |
|
// fs.renameSync(originalBin, renamedBin); |
|
// sass.getBinaryPath(true); |
|
// }, /The `libsass` binding was not found/); |
|
|
|
// fs.renameSync(renamedBin, originalBin); |
|
// }); |
|
// });
|
|
|