123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*eslint new-cap: ["error", {"capIsNewExceptions": ["Color"]}]*/
- var assert = require('assert').strict,
- path = require('path'),
- etx = require('../lib/extensions'),
- binding = process.env.NODESASS_COV
- ? require('../lib-cov/binding')
- : require('../lib/binding');
- describe('binding', function() {
- describe('missing error', function() {
- it('should be useful', function() {
- process.env.SASS_BINARY_NAME = 'unknown-x64-48';
- assert.throws(
- function() { binding(etx); },
- function(err) {
- var re = new RegExp('Missing binding.*?\\' + path.sep + 'vendor\\' + path.sep);
- if ((err instanceof Error)) {
- return re.test(err);
- }
- }
- );
- });
- it('should list currently installed bindings', function() {
- assert.throws(
- function() { binding(etx); },
- function(err) {
- var etx = require('../lib/extensions');
- delete process.env.SASS_BINARY_NAME;
- if ((err instanceof Error)) {
- return err.message.indexOf(
- etx.getHumanEnvironment(etx.getBinaryName())
- ) !== -1;
- }
- }
- );
- });
- });
- describe('on unsupported environment', function() {
- describe('with an unsupported architecture', function() {
- beforeEach(function() {
- Object.defineProperty(process, 'arch', {
- value: 'foo',
- });
- });
- afterEach(function() {
- Object.defineProperty(process, 'arch', {
- value: 'x64',
- });
- });
- it('should error', function() {
- assert.throws(
- function() { binding(etx); },
- 'Node Sass does not yet support your current environment'
- );
- });
- it('should inform the user the architecture is unsupported', function() {
- assert.throws(
- function() { binding(etx); },
- 'Unsupported architecture (foo)'
- );
- });
- });
- describe('with an unsupported platform', function() {
- beforeEach(function() {
- Object.defineProperty(process, 'platform', {
- value: 'bar',
- });
- });
- afterEach(function() {
- Object.defineProperty(process, 'platform', {
- value: 'darwin',
- });
- });
- it('should error', function() {
- assert.throws(
- function() { binding(etx); },
- 'Node Sass does not yet support your current environment'
- );
- });
- it('should inform the user the platform is unsupported', function() {
- assert.throws(
- function() { binding(etx); },
- 'Unsupported platform (bar)'
- );
- });
- });
- describe('with an unsupported runtime', function() {
- beforeEach(function() {
- Object.defineProperty(process.versions, 'modules', {
- value: 'baz',
- });
- });
- afterEach(function() {
- Object.defineProperty(process.versions, 'modules', {
- value: 51,
- });
- });
- it('should error', function() {
- assert.throws(
- function() { binding(etx); },
- 'Node Sass does not yet support your current environment'
- );
- });
- it('should inform the user the runtime is unsupported', function() {
- assert.throws(
- function() { binding(etx); },
- 'Unsupported runtime (baz)'
- );
- });
- });
- });
- });
|