mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 02:30:12 +02:00
156 lines
5.1 KiB
JavaScript
156 lines
5.1 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
const fs = require('fs');
|
|
const semver = require('semver');
|
|
const libvips = require('../../lib/libvips');
|
|
const mockFS = require('mock-fs');
|
|
|
|
const originalPlatform = process.platform;
|
|
|
|
const setPlatform = function (platform) {
|
|
Object.defineProperty(process, 'platform', { value: platform });
|
|
};
|
|
|
|
const restorePlatform = function () {
|
|
setPlatform(originalPlatform);
|
|
};
|
|
|
|
describe('libvips binaries', function () {
|
|
describe('Windows platform', function () {
|
|
before(function () { setPlatform('win32'); });
|
|
after(restorePlatform);
|
|
|
|
it('pkgConfigPath returns empty string', function () {
|
|
assert.strictEqual('', libvips.pkgConfigPath());
|
|
});
|
|
it('globalLibvipsVersion returns empty string', function () {
|
|
assert.strictEqual('', libvips.globalLibvipsVersion());
|
|
});
|
|
it('globalLibvipsVersion is always false', function () {
|
|
assert.strictEqual(false, libvips.useGlobalLibvips());
|
|
});
|
|
});
|
|
|
|
describe('non-Windows platforms', function () {
|
|
before(function () { setPlatform('linux'); });
|
|
after(restorePlatform);
|
|
|
|
it('pkgConfigPath returns a string', function () {
|
|
const pkgConfigPath = libvips.pkgConfigPath();
|
|
assert.strictEqual('string', typeof pkgConfigPath);
|
|
});
|
|
it('globalLibvipsVersion returns a string', function () {
|
|
const globalLibvipsVersion = libvips.globalLibvipsVersion();
|
|
assert.strictEqual('string', typeof globalLibvipsVersion);
|
|
});
|
|
it('globalLibvipsVersion returns a boolean', function () {
|
|
const useGlobalLibvips = libvips.useGlobalLibvips();
|
|
assert.strictEqual('boolean', typeof useGlobalLibvips);
|
|
});
|
|
});
|
|
|
|
describe('platform agnostic', function () {
|
|
it('minimumLibvipsVersion returns a valid semver', function () {
|
|
const minimumLibvipsVersion = libvips.minimumLibvipsVersion;
|
|
assert.strictEqual('string', typeof minimumLibvipsVersion);
|
|
assert.notStrictEqual(null, semver.valid(minimumLibvipsVersion));
|
|
});
|
|
it('hasVendoredLibvips returns a boolean', function () {
|
|
const hasVendoredLibvips = libvips.hasVendoredLibvips();
|
|
assert.strictEqual('boolean', typeof hasVendoredLibvips);
|
|
});
|
|
it('useGlobalLibvips can be ignored via an env var', function () {
|
|
process.env.SHARP_IGNORE_GLOBAL_LIBVIPS = 1;
|
|
|
|
const useGlobalLibvips = libvips.useGlobalLibvips();
|
|
assert.strictEqual(false, useGlobalLibvips);
|
|
|
|
delete process.env.SHARP_IGNORE_GLOBAL_LIBVIPS;
|
|
});
|
|
it('cachePath returns a valid path ending with _libvips', function () {
|
|
const cachePath = libvips.cachePath();
|
|
assert.strictEqual('string', typeof cachePath);
|
|
assert.strictEqual('_libvips', cachePath.substr(-8));
|
|
assert.strictEqual(true, fs.existsSync(cachePath));
|
|
});
|
|
});
|
|
|
|
describe('integrity', function () {
|
|
it('reads value from environment variable', function () {
|
|
const prev = process.env.npm_package_config_integrity_platform_arch;
|
|
process.env.npm_package_config_integrity_platform_arch = 'sha512-test';
|
|
|
|
const integrity = libvips.integrity('platform-arch');
|
|
assert.strictEqual('sha512-test', integrity);
|
|
|
|
process.env.npm_package_config_integrity_platform_arch = prev;
|
|
});
|
|
it('reads value from package.json', function () {
|
|
const prev = process.env.npm_package_config_integrity_linux_x64;
|
|
delete process.env.npm_package_config_integrity_linux_x64;
|
|
|
|
const integrity = libvips.integrity('linux-x64');
|
|
assert.strictEqual('sha512-', integrity.substr(0, 7));
|
|
|
|
process.env.npm_package_config_integrity_linux_x64 = prev;
|
|
});
|
|
});
|
|
|
|
describe('safe directory creation', function () {
|
|
before(function () {
|
|
mockFS({
|
|
exampleDirA: {
|
|
exampleDirB: {
|
|
exampleFile: 'Example test file'
|
|
}
|
|
}
|
|
});
|
|
});
|
|
after(function () { mockFS.restore(); });
|
|
|
|
it('mkdirSync creates a directory', function () {
|
|
const dirPath = 'createdDir';
|
|
|
|
libvips.mkdirSync(dirPath);
|
|
assert.strictEqual(true, fs.existsSync(dirPath));
|
|
});
|
|
it('mkdirSync does not throw error or overwrite an existing dir', function () {
|
|
const dirPath = 'exampleDirA';
|
|
const nestedDirPath = 'exampleDirA/exampleDirB';
|
|
assert.strictEqual(true, fs.existsSync(dirPath));
|
|
|
|
libvips.mkdirSync(dirPath);
|
|
|
|
assert.strictEqual(true, fs.existsSync(dirPath));
|
|
assert.strictEqual(true, fs.existsSync(nestedDirPath));
|
|
});
|
|
});
|
|
|
|
describe('logger', function () {
|
|
const consoleLog = console.log;
|
|
const consoleError = console.error;
|
|
|
|
after(function () {
|
|
console.log = consoleLog;
|
|
console.error = consoleError;
|
|
});
|
|
|
|
it('logs an info message', function (done) {
|
|
console.log = function (msg) {
|
|
assert.strictEqual(msg, 'sharp: progress');
|
|
done();
|
|
};
|
|
libvips.log('progress');
|
|
});
|
|
|
|
it('logs an error message', function (done) {
|
|
console.error = function (msg) {
|
|
assert.strictEqual(msg, 'sharp: Installation error: problem');
|
|
done();
|
|
};
|
|
libvips.log(new Error('problem'));
|
|
});
|
|
});
|
|
});
|