Skip to content

Commit

Permalink
Add test for rollup#1244
Browse files Browse the repository at this point in the history
  • Loading branch information
simonbuchan committed Aug 19, 2022
1 parent 897d0e3 commit b5ce279
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 0 deletions.
@@ -0,0 +1,100 @@
const assert = require('assert');
const path = require('path');
const { getObject } = require('../../../../utils');

const sideEffects = [];

module.exports = {
description: 'does not include modules without used exports if moduleSideEffect is false',
context: {
sideEffects
},
exports() {
assert.deepStrictEqual(sideEffects, [
'sideeffects-false-usereffects-false-used-import',
'sideeffects-null-usereffects-false-used-import',
'sideeffects-true-usereffects-false',
'sideeffects-true-usereffects-false-unused-import',
'sideeffects-true-usereffects-false-used-import',
'sideeffects-false-usereffects-true-used-import',
'sideeffects-null-usereffects-true',
'sideeffects-null-usereffects-true-unused-import',
'sideeffects-null-usereffects-true-used-import',
'sideeffects-true-usereffects-true',
'sideeffects-true-usereffects-true-unused-import',
'sideeffects-true-usereffects-true-used-import'
]);
},
options: {
treeshake: {
moduleSideEffects(id) {
if (id.includes('main')) return true;
return JSON.parse(id.split('-')[3]);
}
},
plugins: [
{
name: 'resolving-plugin',
async resolveId(id, importer) {
await this.resolve(id, importer, { skipSelf: true });
if (!path.isAbsolute(id)) {
return { id };
}
}
},
{
name: 'test-plugin',
resolveId(id) {
if (!path.isAbsolute(id)) {
return {
id,
external: false,
moduleSideEffects: JSON.parse(id.split('-')[1])
};
}
},
load(id) {
if (!path.isAbsolute(id)) {
const sideEffects = JSON.parse(id.split('-')[1]);
const userEffects = JSON.parse(id.split('-')[3]);
assert.strictEqual(
this.getModuleInfo(id).moduleSideEffects,
typeof sideEffects === 'boolean' ? sideEffects : userEffects
);
return `export const value = '${id}'; sideEffects.push(value);`;
}
},
buildEnd() {
assert.deepStrictEqual(
getObject(
[...this.getModuleIds()]
.filter(id => !path.isAbsolute(id))
.sort()
.map(id => [id, this.getModuleInfo(id).moduleSideEffects])
),
{
'sideeffects-false-usereffects-false': false,
'sideeffects-false-usereffects-false-unused-import': false,
'sideeffects-false-usereffects-false-used-import': false,
'sideeffects-false-usereffects-true': false,
'sideeffects-false-usereffects-true-unused-import': false,
'sideeffects-false-usereffects-true-used-import': false,
'sideeffects-null-usereffects-false': false,
'sideeffects-null-usereffects-false-unused-import': false,
'sideeffects-null-usereffects-false-used-import': false,
'sideeffects-null-usereffects-true': true,
'sideeffects-null-usereffects-true-unused-import': true,
'sideeffects-null-usereffects-true-used-import': true,
'sideeffects-true-usereffects-false': true,
'sideeffects-true-usereffects-false-unused-import': true,
'sideeffects-true-usereffects-false-used-import': true,
'sideeffects-true-usereffects-true': true,
'sideeffects-true-usereffects-true-unused-import': true,
'sideeffects-true-usereffects-true-used-import': true
}
);
}
}
]
}
};
@@ -0,0 +1,25 @@
import 'sideeffects-false-usereffects-false';
import { value as unusedValue1 } from 'sideeffects-false-usereffects-false-unused-import';
import { value as usedValue1 } from 'sideeffects-false-usereffects-false-used-import';

import 'sideeffects-null-usereffects-false';
import { value as unusedValue2 } from 'sideeffects-null-usereffects-false-unused-import';
import { value as usedValue2 } from 'sideeffects-null-usereffects-false-used-import';

import 'sideeffects-true-usereffects-false';
import { value as unusedValue3 } from 'sideeffects-true-usereffects-false-unused-import';
import { value as usedValue3 } from 'sideeffects-true-usereffects-false-used-import';

import 'sideeffects-false-usereffects-true';
import { value as unusedValue4 } from 'sideeffects-false-usereffects-true-unused-import';
import { value as usedValue4 } from 'sideeffects-false-usereffects-true-used-import';

import 'sideeffects-null-usereffects-true';
import { value as unusedValue5 } from 'sideeffects-null-usereffects-true-unused-import';
import { value as usedValue5 } from 'sideeffects-null-usereffects-true-used-import';

import 'sideeffects-true-usereffects-true';
import { value as unusedValue6 } from 'sideeffects-true-usereffects-true-unused-import';
import { value as usedValue6 } from 'sideeffects-true-usereffects-true-used-import';

export const values = [usedValue1, usedValue2, usedValue3, usedValue4, usedValue5, usedValue6];

0 comments on commit b5ce279

Please sign in to comment.