Skip to content

Commit cf1d4cc

Browse files
committed
[Test] add tests for "main": false
See import-js/eslint-plugin-import#2132 (comment)
1 parent 3ab1da8 commit cf1d4cc

File tree

4 files changed

+94
-17
lines changed

4 files changed

+94
-17
lines changed

test/resolver.js

+49
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,55 @@ test('incorrect main', function (t) {
290290
});
291291
});
292292

293+
test('missing index', function (t) {
294+
t.plan(2);
295+
296+
var resolverDir = path.join(__dirname, 'resolver');
297+
resolve('./missing_index', { basedir: resolverDir }, function (err, res, pkg) {
298+
t.ok(err instanceof Error);
299+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
300+
});
301+
});
302+
303+
test('missing main', function (t) {
304+
t.plan(1);
305+
306+
var resolverDir = path.join(__dirname, 'resolver');
307+
308+
resolve('./missing_main', { basedir: resolverDir }, function (err, res, pkg) {
309+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
310+
});
311+
});
312+
313+
test('null main', function (t) {
314+
t.plan(1);
315+
316+
var resolverDir = path.join(__dirname, 'resolver');
317+
318+
resolve('./null_main', { basedir: resolverDir }, function (err, res, pkg) {
319+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
320+
});
321+
});
322+
323+
test('main: false', function (t) {
324+
t.plan(2);
325+
326+
var basedir = path.join(__dirname, 'resolver');
327+
var dir = path.join(basedir, 'false_main');
328+
resolve('./false_main', { basedir: basedir }, function (err, res, pkg) {
329+
if (err) t.fail(err);
330+
t.equal(
331+
res,
332+
path.join(dir, 'index.js'),
333+
'`"main": false`: resolves to `index.js`'
334+
);
335+
t.deepEqual(pkg, {
336+
name: 'false_main',
337+
main: false
338+
});
339+
});
340+
});
341+
293342
test('without basedir', function (t) {
294343
t.plan(1);
295344

test/resolver/false_main/index.js

Whitespace-only changes.

test/resolver/false_main/package.json

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"name": "false_main",
3+
"main": false
4+
}

test/resolver_sync.js

+41-17
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ test('missing index', function (t) {
317317
resolve.sync('./missing_index', { basedir: resolverDir });
318318
t.fail('did not fail');
319319
} catch (err) {
320-
t.equal(err && err.code, 'INCORRECT_PACKAGE_MAIN', 'error has correct error code');
320+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
321321
}
322322
if (requireResolveSupportsPaths) {
323323
try {
@@ -331,41 +331,65 @@ test('missing index', function (t) {
331331

332332
test('missing main', function (t) {
333333
var resolverDir = path.join(__dirname, 'resolver');
334-
var dir = path.join(resolverDir, 'missing_main');
335334

336-
t.equal(
337-
resolve.sync('./missing_main', { basedir: resolverDir }),
338-
path.join(dir, 'index.js')
339-
);
335+
try {
336+
resolve.sync('./missing_main', { basedir: resolverDir });
337+
t.fail('require.resolve did not fail');
338+
} catch (err) {
339+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
340+
}
340341
if (requireResolveSupportsPaths) {
341-
t.equal(
342-
resolve.sync('./missing_main', { basedir: resolverDir }),
343-
require.resolve('./missing_main', { paths: [resolverDir] }),
344-
'"main" missing: resolve.sync === require.resolve'
345-
);
342+
try {
343+
resolve.sync('./missing_main', { basedir: resolverDir });
344+
t.fail('require.resolve did not fail');
345+
} catch (err) {
346+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
347+
}
346348
}
347349

348350
t.end();
349351
});
350352

351353
test('null main', function (t) {
352354
var resolverDir = path.join(__dirname, 'resolver');
353-
var dir = path.join(resolverDir, 'null_main');
354355

356+
try {
357+
resolve.sync('./null_main', { basedir: resolverDir });
358+
t.fail('require.resolve did not fail');
359+
} catch (err) {
360+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
361+
}
362+
if (requireResolveSupportsPaths) {
363+
try {
364+
resolve.sync('./null_main', { basedir: resolverDir });
365+
t.fail('require.resolve did not fail');
366+
} catch (err) {
367+
t.equal(err && err.code, 'MODULE_NOT_FOUND', 'error has correct error code');
368+
}
369+
}
370+
371+
t.end();
372+
});
373+
374+
test('main: false', function (t) {
375+
var basedir = path.join(__dirname, 'resolver');
376+
var dir = path.join(basedir, 'false_main');
355377
t.equal(
356-
resolve.sync('./null_main', { basedir: resolverDir }),
357-
path.join(dir, 'index.js')
378+
resolve.sync('./false_main', { basedir: basedir }),
379+
path.join(dir, 'index.js'),
380+
'`"main": false`: resolves to `index.js`'
358381
);
359382
if (requireResolveSupportsPaths) {
360383
t.equal(
361-
resolve.sync('./null_main', { basedir: resolverDir }),
362-
require.resolve('./null_main', { paths: [resolverDir] }),
363-
'`"main": null`: resolve.sync === require.resolve'
384+
resolve.sync('./false_main', { basedir: basedir }),
385+
require.resolve('./false_main', { paths: [basedir] }),
386+
'`"main": false`: resolve.sync === require.resolve'
364387
);
365388
}
366389

367390
t.end();
368391
});
392+
369393
var stubStatSync = function stubStatSync(fn) {
370394
var statSync = fs.statSync;
371395
try {

0 commit comments

Comments
 (0)