223 lines
6.1 KiB
JavaScript
223 lines
6.1 KiB
JavaScript
var assert = require('assert');
|
|
var resolvePath = require('../');
|
|
var path = require('path');
|
|
|
|
describe('resolve-dependency-path', function() {
|
|
it('resolves with absolute paths', function() {
|
|
var resolved = resolvePath({
|
|
dependency: './bar',
|
|
filename: __dirname + '/foo.js',
|
|
directory: __dirname
|
|
});
|
|
assert(resolved.indexOf(__dirname) === 0);
|
|
});
|
|
|
|
it('resolves w/initial period, w/ending in .js', function() {
|
|
var depPath = './index';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert(resolved === __dirname + '/index.js');
|
|
});
|
|
|
|
it('resolves w/initial period, w/o ending in .js', function() {
|
|
var depPath = './index.js';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert(resolved === __dirname + '/index.js');
|
|
});
|
|
|
|
it('resolves w/o initial period, w/o ending in .js', function() {
|
|
var depPath = 'index';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert(resolved === __dirname + '/index.js');
|
|
});
|
|
|
|
it('resolves w/o initial period, w/ending in .js', function() {
|
|
var depPath = 'index.js';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert(resolved === __dirname + '/index.js');
|
|
});
|
|
|
|
it('resolves relative paths', function() {
|
|
var resolved = resolvePath({
|
|
dependency: './bar',
|
|
filename: __dirname + '/foo.js',
|
|
directory: __dirname
|
|
});
|
|
assert(resolved === __dirname + '/bar.js');
|
|
});
|
|
|
|
it('resolves non-relative paths', function() {
|
|
var filename = __dirname + '/feature1/foo.js';
|
|
var resolved = resolvePath({
|
|
dependency: 'feature2/bar',
|
|
filename,
|
|
directory: __dirname
|
|
});
|
|
assert(resolved === __dirname + '/feature2/bar.js');
|
|
});
|
|
|
|
it('throws if the dependency path is missing', function() {
|
|
assert.throws(function() {
|
|
resolvePath();
|
|
});
|
|
});
|
|
|
|
it('throws if the filename is missing', function() {
|
|
assert.throws(function() {
|
|
resolvePath({
|
|
dependency: './bar'
|
|
});
|
|
});
|
|
});
|
|
|
|
it('throws if the directory is missing', function() {
|
|
assert.throws(function() {
|
|
resolvePath({
|
|
dependency: './bar',
|
|
filename: __dirname + '/foo.js'
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('multiple period filenames', function() {
|
|
it('resolves with multiple periods in the dependency path', function() {
|
|
var depPath = './bar.baz.qux';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert(resolved === __dirname + '/bar.baz.qux.js');
|
|
});
|
|
|
|
it('does not duplicate extensions', function() {
|
|
var depPath = '../index.js';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
// Extension after removing the .js extension
|
|
var remainingExt = path.extname(path.basename(resolved, '.js'));
|
|
assert.equal(remainingExt, '');
|
|
});
|
|
|
|
it('does not add the incorrect extension for sass files', function() {
|
|
var depPath = 'styles';
|
|
var filename = __dirname + '/foo.scss';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.scss');
|
|
});
|
|
|
|
it('does not add the incorrect extension for mustache files', function() {
|
|
var depPath = 'hgn!templates/foo.mustache';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.mustache');
|
|
});
|
|
});
|
|
|
|
describe('implicit jspm/systemjs style plugins', function() {
|
|
it('resolve w/initial period', function() {
|
|
var depPath = './templates/file.css!';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.css');
|
|
});
|
|
|
|
it('resolve w/o initial period', function() {
|
|
var depPath = 'templates/file.css!';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.css');
|
|
});
|
|
});
|
|
|
|
describe('explicit jspm/systemjs style plugins', function() {
|
|
it('resolve w/initial period', function() {
|
|
var depPath = './templates/file.txt!text';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.txt');
|
|
});
|
|
|
|
it('resolve w/o initial period', function() {
|
|
var depPath = 'templates/file.txt!text';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.txt');
|
|
});
|
|
});
|
|
|
|
describe('webpack support', function() {
|
|
it.skip('resolves properly', function() {
|
|
var depPath = './styles/foo.css';
|
|
var filename = __dirname + '/foo.js';
|
|
var directory = __dirname;
|
|
var resolved = resolvePath({
|
|
dependency: depPath,
|
|
filename,
|
|
directory
|
|
});
|
|
assert.equal(path.extname(resolved), '.css');
|
|
});
|
|
});
|
|
});
|