Skip to content

Commit 89bf2d4

Browse files
committed
add tests, fix windows path issue
1 parent 8947d9f commit 89bf2d4

15 files changed

+97
-203
lines changed

lib/importPaths.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@ var path_1 = require('path');
33
var importPathRegex = /require\(["'](BASE.+)["']\)([a-zA-Z0-9\-\_]+)?|^import.+?\s?["'](BASE.+)["'];?$/m;
44
var relativePathRegex = /^BASE/;
55
function fixImportPaths(_a) {
6-
var dir = _a.dir, content = _a.content;
6+
var dir = _a.dir, content = _a.content, isWindows = _a.isWindows;
77
var entries = new Set([]);
88
return content.split('\n').map(function (line) {
99
var isMatch = line.match(importPathRegex);
1010
if (!isMatch) {
1111
return line;
1212
}
13-
var importPath = isMatch[1] || isMatch[2];
13+
var importPath = isMatch[1] || isMatch[2] || isMatch[3];
1414
if (importPath.match(relativePathRegex)) {
1515
var newPath = path_1.join(dir, importPath.replace('BASE', ''));
16+
if (isWindows) {
17+
importPath = importPath.split('\\').join('\\\\');
18+
}
1619
var newLine = line.replace(importPath, newPath);
1720
if (!entries.has(newLine)) {
1821
entries.add(newLine);

lib/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
"use strict";
22
var importPaths_1 = require('./importPaths');
33
var jsCodeRoad = function (_a) {
4-
var dir = _a.dir, content = _a.content;
5-
return ("\n(function(){'use strict';\nrequire('babel-register')({plugins:[['transform-es2015-modules-commonjs',{loose:true,sourceRoot:'" + dir + "'}]]});\n" + require('process-console-log').logger + "\nlet _fileExists = require('node-file-exists').default;\nlet _resolve = require('path').resolve;\nglobal.exists = (p) => _fileExists(_resolve('" + dir + "',p));\nrequire = require('rewire-coderoad');\n\n// unit tests\n\n" + importPaths_1.default({ dir: dir, content: content }) + "\n\n}());");
4+
var dir = _a.dir, content = _a.content, isWindows = _a.isWindows;
5+
return ("\n(function(){'use strict';\nrequire('babel-register')({plugins:[['transform-es2015-modules-commonjs',{loose:true,sourceRoot:'" + dir + "'}]]});\n" + require('process-console-log').logger + "\nlet _fileExists = require('node-file-exists').default;\nlet _path = require('path');\nglobal.exists = (p) => _fileExists(_path.join('" + dir + "',p));\nrequire = require('rewire-coderoad');\n\n// unit tests\n\n" + importPaths_1.default({ dir: dir, content: content }) + "\n\n}());");
66
};
77
Object.defineProperty(exports, "__esModule", { value: true });
88
exports.default = jsCodeRoad;

lib/rewire-ts/__get__.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/rewire-ts/addImportsAsVars.js

Lines changed: 0 additions & 49 deletions
This file was deleted.

lib/rewire-ts/fileExists.js

Lines changed: 0 additions & 16 deletions
This file was deleted.

lib/rewire-ts/getDefinePropertySrc.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

lib/rewire-ts/getImportGlobalsSrc.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

lib/rewire-ts/index.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

lib/rewire-ts/moduleEnv.js

Lines changed: 0 additions & 25 deletions
This file was deleted.

lib/rewire-ts/rewire.js

Lines changed: 0 additions & 29 deletions
This file was deleted.

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "js-coderoad",
3-
"version": "0.1.3",
3+
"version": "0.1.4",
44
"description": "bundled javascript features for coderoad test runners",
55
"keywords": [
66
"coderoad",
@@ -25,7 +25,8 @@
2525
"url": "git+https://github.com/coderoad/js-coderoad.git"
2626
},
2727
"scripts": {
28-
"test": "echo \"Error: no test specified\" && exit 1"
28+
"test": "ava test/*.js",
29+
"watch:test": "ava test/*.js --watch"
2930
},
3031
"dependencies": {
3132
"babel-plugin-transform-es2015-modules-commonjs": "6.11.5",
@@ -34,5 +35,9 @@
3435
"node-file-exists": "1.1.0",
3536
"process-console-log": "0.2.3",
3637
"rewire-coderoad": "^3.1.1"
38+
},
39+
"devDependencies": {
40+
"ava": "^0.16.0",
41+
"sinon": "^1.17.5"
3742
}
3843
}

src/importPaths.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const importPathRegex =
1010
/require\(["'](BASE.+)["']\)([a-zA-Z0-9\-\_]+)?|^import.+?\s?["'](BASE.+)["'];?$/m;
1111
const relativePathRegex = /^BASE/;
1212

13-
export default function fixImportPaths({dir, content}): string {
13+
export default function fixImportPaths({dir, content, isWindows}): string {
1414
// collect import lines
1515
let entries = new Set([]);
1616

@@ -21,12 +21,18 @@ export default function fixImportPaths({dir, content}): string {
2121
return line;
2222
}
2323
// multiple cases due to import or require regex
24-
const importPath = isMatch[1] || isMatch[2];
24+
let importPath = isMatch[1] || isMatch[2] || isMatch[3];
2525
// import path: may be relative or absolute
2626

2727
// is a relative path
2828
if (importPath.match(relativePathRegex)) {
2929
let newPath = join(dir, importPath.replace('BASE', ''));
30+
31+
// fix buggy Windows paths
32+
if (isWindows) {
33+
importPath = importPath.split('\\').join('\\\\');
34+
}
35+
3036
let newLine = line.replace(importPath, newPath);
3137
// add to map of entry files
3238
if (!entries.has(newLine)) {

src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import fixImportPaths from './importPaths';
22

3-
const jsCodeRoad = ({dir, content}) => (`
3+
const jsCodeRoad = ({dir, content, isWindows}) => (`
44
(function(){'use strict';
55
require('babel-register')({plugins:[['transform-es2015-modules-commonjs',{loose:true,sourceRoot:'${dir}'}]]});
66
${require('process-console-log').logger}
77
let _fileExists = require('node-file-exists').default;
8-
let _resolve = require('path').resolve;
9-
global.exists = (p) => _fileExists(_resolve('${dir}',p));
8+
let _path = require('path');
9+
global.exists = (p) => _fileExists(_path.join('${dir}',p));
1010
require = require('rewire-coderoad');
1111
1212
// unit tests

test/importPaths.js

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
const test = require('ava');
2+
const fixImportPaths = require('../lib/importPaths').default;
3+
4+
const macDir = '/usr/name/desktop/folder';
5+
const winDir = `C:\\usr\\name\\desktop\\folder`;
6+
7+
test('does nothing if no imports', t => {
8+
const content = 'var a = 42;';
9+
const result = fixImportPaths({
10+
dir: macDir,
11+
content
12+
});
13+
t.is(result, content);
14+
});
15+
16+
// Require
17+
18+
test('handles require beginning with BASE', t => {
19+
const content = `var example = require('BASE/example');`;
20+
const result = fixImportPaths({
21+
dir: macDir,
22+
content
23+
});
24+
const expected = `var example = require('${macDir}/example');`;
25+
t.is(result, expected);
26+
});
27+
28+
test('handles require beginning with BASE and following with a key', t => {
29+
const content = `var example = require('BASE/example').default;`;
30+
const result = fixImportPaths({
31+
dir: macDir,
32+
content
33+
});
34+
const expected = `var example = require('${macDir}/example').default;`;
35+
t.is(result, expected);
36+
});
37+
38+
// Import
39+
40+
test('handles import beginning with BASE', t => {
41+
const content = `import example from 'BASE/example';`;
42+
const result = fixImportPaths({
43+
dir: macDir,
44+
content
45+
});
46+
const expected = `import example from '${macDir}/example';`
47+
t.is(result, expected);
48+
});
49+
50+
test('handles named imports beginning with BASE', t => {
51+
const content = `import { example } from 'BASE/example';`;
52+
const result = fixImportPaths({
53+
dir: macDir,
54+
content
55+
});
56+
const expected = `import { example } from '${macDir}/example';`
57+
t.is(result, expected);
58+
});
59+
60+
// Windows
61+
62+
test('handles test paths on Windows', t => {
63+
const content = `var example = require('BASE/example');`;
64+
const result = fixImportPaths({
65+
dir: winDir,
66+
content,
67+
isWindows: true
68+
});
69+
const expected = `var example = require('${winDir}/example');`
70+
t.is(result, expected);
71+
});

tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
"files": [
1919
"src/importPaths.ts",
2020
"src/index.ts",
21+
"src/system.ts",
2122
"src/rewire-ts/__get__.ts",
2223
"src/rewire-ts/addImportsAsVars.ts",
2324
"src/rewire-ts/fileExists.ts",

0 commit comments

Comments
 (0)