blob: 55e0396e90fa52aa87d5331e7257adb87ded5ad9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
const path = require('path');
const babel = require('@babel/core');
const fs = require('fs');
// See require('@babel/plugin-transform-modules-commonjs')
// const esm2cjsPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-modules-commonjs-ec');
const removeDEVPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-remove-dev');
function run() {
removeDEV();
esm2cjs();
}
function removeDEV() {
const suite = makeSuite('removeDEV');
suite.eachSrcFile(({fileName, filePath}) => {
let result = babel.transformFileSync(filePath, {
plugins: [removeDEVPlugin]
});
suite.writeToExpectFile(fileName, result.code);
console.log(`removing dev ${fileName} ...`);
});
console.log('All done.');
}
function esm2cjs() {
const suite = makeSuite('esm2cjs');
suite.eachSrcFile(({fileName, filePath}) => {
console.log(`transforming to cjs ${fileName} ...`);
if (/^forbiden/.test(fileName)) {
try {
transformSingle();
throw new Error('Should fail.');
}
catch (e) {
console.log(`${fileName} failed as expected.`);
}
}
else {
transformSingle();
}
function transformSingle() {
let result = babel.transformFileSync(filePath, {
// plugins: [removeDEVPlugin, esm2cjsPlugin]
plugins: [removeDEVPlugin]
});
suite.writeToExpectFile(fileName, result.code);
}
});
console.log('All done.');
}
const makeSuite = suiteName => {
const srcDir = path.resolve(__dirname, `./${suiteName}/src`);
const expectDir = path.resolve(__dirname, `./${suiteName}/expect`);
return {
srcDir,
expectDir,
eachSrcFile(cb) {
fs.readdirSync(srcDir).forEach(fileName => {
if (!/^[^.].*[.]src[.]js$/.test(fileName)) {
return;
}
const filePath = path.resolve(srcDir, fileName);
cb({fileName, filePath, suiteName, srcDir, expectDir});
});
},
writeToExpectFile(srcFileName, content) {
let outputPath = path.resolve(expectDir, srcFileName.replace('.src.', '.expect.'));
fs.writeFileSync(outputPath, content, {encoding:'utf-8'});
}
};
};
run();