@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
47 lines (37 loc) • 1.32 kB
text/typescript
import _test, { TestFn } from 'ava';
import { getBuildInfo } from './test-utils/get-build-info';
import { SolcOutput } from './solc/input-output';
import { findAlreadyInitializable } from './find-already-initializable';
const test = _test as TestFn<Context>;
interface Context {
solcOutput: SolcOutput;
}
test.serial.before('compile', async t => {
t.context.solcOutput = (await getBuildInfo('0.6')).output as SolcOutput;
});
test('ok', t => {
const alreadyInit = findAlreadyInitializable(
t.context.solcOutput,
'contracts/find-already-init/Init1.sol',
);
t.deepEqual(['contracts/find-already-init/AlreadyOk.sol'], alreadyInit);
});
test('mixed', t => {
t.throws(
() => findAlreadyInitializable(t.context.solcOutput, 'contracts/find-already-init/Init2.sol'),
{ message: /contains both Initializable and non-Initializable/ },
);
});
test('no Initializable contract', t => {
t.throws(
() => findAlreadyInitializable(t.context.solcOutput, 'contracts/find-already-init/NoInit.sol'),
{ message: /does not contain Initializable/ },
);
});
test('more than Initializable contract', t => {
t.throws(
() =>
findAlreadyInitializable(t.context.solcOutput, 'contracts/find-already-init/InitPlus.sol'),
{ message: /contains contracts other than Initializable/ },
);
});