@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
55 lines (45 loc) • 1.43 kB
text/typescript
import _test, { TestFn } from 'ava';
import { promises as fs } from 'fs';
import hre from 'hardhat';
import { getBuildInfo } from './test-utils/get-build-info';
import { OutputFile, transpile } from '.';
import { SolcOutput } from './solc/input-output';
const test = _test as TestFn<Context>;
interface Context {
files: OutputFile[];
}
const fileNames = [
'ClassInheritance.sol',
'Override.sol',
'DiamondInheritance.sol',
'Deep.sol',
'ElementaryTypes.sol',
'ElementaryTypesWithConstructor.sol',
'Imported.sol',
'Local.sol',
'SimpleInheritance.sol',
'StringConstructor.sol',
'Library.sol',
'AbstractContract.sol',
'Interface.sol',
'Rename.sol',
];
const excludeDir = 'contracts/invalid/';
test.serial.before('compile', async t => {
const buildInfo = await getBuildInfo('0.6');
const solcInput = buildInfo.input;
const solcOutput = buildInfo.output as SolcOutput;
const exclude = (await fs.readdir(excludeDir)).map(f => excludeDir + f);
t.context.files = await transpile(solcInput, solcOutput, hre.config.paths, { exclude });
});
for (const fileName of fileNames) {
test(fileName, t => {
const file = t.context.files.find(f => f.fileName === fileName);
t.not(file, undefined, 'file not found');
t.snapshot(file);
});
}
test('AlreadyUpgradeable.sol', t => {
const file = t.context.files.find(f => f.fileName === 'AlreadyUpgradeable.sol');
t.is(file, undefined);
});