Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: slot duration flexibility #8122

Merged
merged 3 commits into from
Aug 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions l1-contracts/src/core/Rollup.sol
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,12 @@ contract Rollup is Leonidas, IRollup, ITestRollup {
VERSION = 1;

// Genesis block
blocks[0] =
BlockLog({archive: bytes32(0), blockHash: bytes32(0), slotNumber: 0, isProven: true});
blocks[0] = BlockLog({
archive: bytes32(Constants.GENESIS_ARCHIVE_ROOT),
blockHash: bytes32(0),
slotNumber: 0,
isProven: true
});
pendingBlockCount = 1;
provenBlockCount = 1;
}
Expand Down Expand Up @@ -579,9 +583,8 @@ contract Rollup is Leonidas, IRollup, ITestRollup {
);
}

// TODO(#4148) Proper genesis state. If the state is empty, we allow anything for now.
bytes32 tipArchive = archive();
if (tipArchive != bytes32(0) && tipArchive != _header.lastArchive.root) {
if (tipArchive != _header.lastArchive.root) {
revert Errors.Rollup__InvalidArchive(tipArchive, _header.lastArchive.root);
}

Expand Down
4 changes: 4 additions & 0 deletions l1-contracts/src/core/libraries/ConstantsGen.sol
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,11 @@ library Constants {
uint256 internal constant INITIAL_L2_BLOCK_NUM = 1;
uint256 internal constant BLOB_SIZE_IN_BYTES = 126976;
uint256 internal constant ETHEREUM_SLOT_DURATION = 12;
uint256 internal constant AZTEC_SLOT_DURATION = 12;
uint256 internal constant AZTEC_EPOCH_DURATION = 48;
uint256 internal constant IS_DEV_NET = 1;
uint256 internal constant GENESIS_ARCHIVE_ROOT =
8142738430000951296386584486068033372964809139261822027365426310856631083550;
uint256 internal constant FEE_JUICE_INITIAL_MINT = 20000000000;
uint256 internal constant MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS = 20000;
uint256 internal constant MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 3000;
Expand Down
2 changes: 1 addition & 1 deletion l1-contracts/src/core/libraries/Errors.sol
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ library Errors {
error Leonidas__EpochNotSetup(); // 0xcf4e597e
error Leonidas__InvalidProposer(address expected, address actual); // 0xd02d278e
error Leonidas__InsufficientAttestations(uint256 minimumNeeded, uint256 provided); // 0xbf1ca4cb
error Leonidas__InsufficientAttestationsProvided(uint256 minimumNeeded, uint256 provided); // 0x2e7debe9
error Leonidas__InsufficientAttestationsProvided(uint256 minimumNeeded, uint256 provided); // 0xb3a697c2

// Fee Juice Portal
error FeeJuicePortal__AlreadyInitialized(); // 0xc7a172fe
Expand Down
4 changes: 2 additions & 2 deletions l1-contracts/src/core/sequencer_selection/Leonidas.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ contract Leonidas is Ownable, ILeonidas {
//
// The value should be a higher multiple for any actual chain
// @todo #8019
uint256 public constant SLOT_DURATION = Constants.ETHEREUM_SLOT_DURATION * 1;
uint256 public constant SLOT_DURATION = Constants.AZTEC_SLOT_DURATION;

// The duration of an epoch in slots
// @todo @LHerskind - This value should be updated when we are not blind.
// @todo #8020
uint256 public constant EPOCH_DURATION = 32;
uint256 public constant EPOCH_DURATION = Constants.AZTEC_EPOCH_DURATION;

// The target number of validators in a committee
// @todo #8021
Expand Down
9 changes: 9 additions & 0 deletions l1-contracts/test/Rollup.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ contract RollupTest is DecoderBase {
bytes32 archive = data.archive;
bytes memory body = data.body;

// Progress time as necessary
vm.warp(max(block.timestamp, data.decodedHeader.globalVariables.timestamp));

assembly {
mstore(add(header, add(0x20, 0x0248)), feeAmount)
}
Expand Down Expand Up @@ -302,6 +305,9 @@ contract RollupTest is DecoderBase {

function testBlocksWithAssumeProven() public setUpFor("mixed_block_1") {
rollup.setAssumeProvenUntilBlockNumber(2);
assertEq(rollup.pendingBlockCount(), 1, "Invalid pending block count");
assertEq(rollup.provenBlockCount(), 1, "Invalid proven block count");

_testBlock("mixed_block_1", false);
_testBlock("mixed_block_2", false);

Expand All @@ -310,6 +316,9 @@ contract RollupTest is DecoderBase {
}

function testSetAssumeProvenAfterBlocksProcessed() public setUpFor("mixed_block_1") {
assertEq(rollup.pendingBlockCount(), 1, "Invalid pending block count");
assertEq(rollup.provenBlockCount(), 1, "Invalid proven block count");

_testBlock("mixed_block_1", false);
_testBlock("mixed_block_2", false);
rollup.setAssumeProvenUntilBlockNumber(2);
Expand Down
14 changes: 7 additions & 7 deletions l1-contracts/test/fixtures/empty_block_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"l2ToL1Messages": []
},
"block": {
"archive": "0x0b97584f2e175ce708df94c14fee5e53d1c92cd5308346c6eabb79005ccf6733",
"archive": "0x1fc4515430abede0c269e0aaf99fe032b4368b094b2a399d112144d8e0b4b803",
"body": "0x00000000",
"txsEffectsHash": "0x00e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d6",
"decodedHeader": {
Expand All @@ -20,12 +20,12 @@
},
"globalVariables": {
"blockNumber": 1,
"slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000005",
"slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000033",
"chainId": 31337,
"timestamp": 1723460388,
"timestamp": 1724321038,
"version": 1,
"coinbase": "0x92c3bc662a41b5406370e6e30b6e4541c9c223e3",
"feeRecipient": "0x2af4d139729812fa69edfc27fc2d19b3d2616c9e4ec2313efb66fb2f234d59da",
"coinbase": "0x69d2d2c697a0ac4a874c591f6906706af27eb737",
"feeRecipient": "0x2c6280804920e2ecb139fe6185aeba95ee3687e64a14ff68a72a25ab9bb0d5eb",
"gasFees": {
"feePerDaGas": 0,
"feePerL2Gas": 0
Expand Down Expand Up @@ -56,8 +56,8 @@
}
}
},
"header": "0x1200a06aae1368abe36530b585bd7a4d2ba4de5037b82076412691a187d7621e00000001000000000000000000000000000000000000000000000000000000000000000200e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3000000100b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d0000008019a8c197c12bb33da6314c4ef4f8f6fcb9e25250c085df8672adf67c8f1e3dbc0000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000066b9eb2492c3bc662a41b5406370e6e30b6e4541c9c223e32af4d139729812fa69edfc27fc2d19b3d2616c9e4ec2313efb66fb2f234d59da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"publicInputsHash": "0x00330b9ccec92816ea3dd5fefce65cdb3803cf663cf2959f403501ff1f27a73c",
"header": "0x1200a06aae1368abe36530b585bd7a4d2ba4de5037b82076412691a187d7621e00000001000000000000000000000000000000000000000000000000000000000000000200e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3000000100b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d0000008019a8c197c12bb33da6314c4ef4f8f6fcb9e25250c085df8672adf67c8f1e3dbc0000010023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001000000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000330000000000000000000000000000000000000000000000000000000066c70d0e69d2d2c697a0ac4a874c591f6906706af27eb7372c6280804920e2ecb139fe6185aeba95ee3687e64a14ff68a72a25ab9bb0d5eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"publicInputsHash": "0x00acfc19a39d0814b57d47fbf843284cd2d293382e82dfcaafc819daf89b81b5",
"numTxs": 0
}
}
16 changes: 8 additions & 8 deletions l1-contracts/test/fixtures/empty_block_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"l2ToL1Messages": []
},
"block": {
"archive": "0x1d77208270a6eca3c2b56adaad130b28e2fa111d6bc325ce3cc52b6a68f4894f",
"archive": "0x2da3733e9f6522fcc8016aff753cb69100051aae6f3612a2180959adfd3293f6",
"body": "0x00000000",
"txsEffectsHash": "0x00e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d6",
"decodedHeader": {
Expand All @@ -20,20 +20,20 @@
},
"globalVariables": {
"blockNumber": 2,
"slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000006",
"slotNumber": "0x0000000000000000000000000000000000000000000000000000000000000035",
"chainId": 31337,
"timestamp": 1723460400,
"timestamp": 1724321062,
"version": 1,
"coinbase": "0x92c3bc662a41b5406370e6e30b6e4541c9c223e3",
"feeRecipient": "0x2af4d139729812fa69edfc27fc2d19b3d2616c9e4ec2313efb66fb2f234d59da",
"coinbase": "0x69d2d2c697a0ac4a874c591f6906706af27eb737",
"feeRecipient": "0x2c6280804920e2ecb139fe6185aeba95ee3687e64a14ff68a72a25ab9bb0d5eb",
"gasFees": {
"feePerDaGas": 0,
"feePerL2Gas": 0
}
},
"lastArchive": {
"nextAvailableLeafIndex": 2,
"root": "0x0b97584f2e175ce708df94c14fee5e53d1c92cd5308346c6eabb79005ccf6733"
"root": "0x1fc4515430abede0c269e0aaf99fe032b4368b094b2a399d112144d8e0b4b803"
},
"stateReference": {
"l1ToL2MessageTree": {
Expand All @@ -56,8 +56,8 @@
}
}
},
"header": "0x0b97584f2e175ce708df94c14fee5e53d1c92cd5308346c6eabb79005ccf673300000002000000000000000000000000000000000000000000000000000000000000000200e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3000000200b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d0000010019a8c197c12bb33da6314c4ef4f8f6fcb9e25250c085df8672adf67c8f1e3dbc0000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000066b9eb3092c3bc662a41b5406370e6e30b6e4541c9c223e32af4d139729812fa69edfc27fc2d19b3d2616c9e4ec2313efb66fb2f234d59da000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"publicInputsHash": "0x006ccf0ce5551a2a07b16c10a4b208bd30403231409d44cedac9b6d489b9f212",
"header": "0x1fc4515430abede0c269e0aaf99fe032b4368b094b2a399d112144d8e0b4b80300000002000000000000000000000000000000000000000000000000000000000000000200e994e16b3763fd5039413cf99c2b3c378e2bab939e7992a77bd201b28160d600089a9d421a82c4a25f7acbebe69e638d5b064fa8a60e018793dcb0be53752c00f5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb14f44d672eb357739e42463497f9fdac46623af863eea4d947ca00a497dcdeb3000000200b59baa35b9dc267744f0ccb4e3b0255c1fc512460d91130c6bc19fb2668568d0000010019a8c197c12bb33da6314c4ef4f8f6fcb9e25250c085df8672adf67c8f1e3dbc0000018023c08a6b1297210c5e24c76b9a936250a1ce2721576c26ea797c7ec35f9e46a9000001800000000000000000000000000000000000000000000000000000000000007a690000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000350000000000000000000000000000000000000000000000000000000066c70d2669d2d2c697a0ac4a874c591f6906706af27eb7372c6280804920e2ecb139fe6185aeba95ee3687e64a14ff68a72a25ab9bb0d5eb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"publicInputsHash": "0x00318295aad2a231c68b825b4fca99e2cbb1345c82ee6d01888289771199d1b9",
"numTxs": 0
}
}
14 changes: 7 additions & 7 deletions l1-contracts/test/fixtures/mixed_block_1.json

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions l1-contracts/test/fixtures/mixed_block_2.json

Large diffs are not rendered by default.

42 changes: 8 additions & 34 deletions l1-contracts/test/sparta/Sparta.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -109,12 +109,9 @@ contract SpartaTest is DecoderBase {
}

assertGt(rollup.getValidators().length, rollup.TARGET_COMMITTEE_SIZE(), "Not enough validators");
_testBlock("mixed_block_1", false, 0, false); // We run a block before the epoch with validators

uint256 ts = block.timestamp + rollup.EPOCH_DURATION() * rollup.SLOT_DURATION();

uint256 committeSize = rollup.TARGET_COMMITTEE_SIZE() * 2 / 3 + (_insufficientSigs ? 0 : 1);
_testBlock("mixed_block_2", _insufficientSigs, committeSize, false, ts); // We need signatures!

_testBlock("mixed_block_1", _insufficientSigs, committeSize, false);

assertEq(
rollup.getEpochCommittee(rollup.getCurrentEpoch()).length,
Expand All @@ -128,26 +125,24 @@ contract SpartaTest is DecoderBase {
return;
}

_testBlock("mixed_block_1", false, 0, false); // We run a block before the epoch with validators
_testBlock("mixed_block_2", false, 3, false); // We need signatures!
_testBlock("mixed_block_1", false, 3, false);
_testBlock("mixed_block_2", false, 3, false);
}

function testInvalidProposer() public setup(4) {
if (Constants.IS_DEV_NET == 1) {
return;
}

_testBlock("mixed_block_1", false, 0, false); // We run a block before the epoch with validators
_testBlock("mixed_block_2", true, 3, true); // We need signatures!
_testBlock("mixed_block_1", true, 3, true);
}

function testInsufficientSigs() public setup(4) {
if (Constants.IS_DEV_NET == 1) {
return;
}

_testBlock("mixed_block_1", false, 0, false); // We run a block before the epoch with validators
_testBlock("mixed_block_2", true, 2, false); // We need signatures!
_testBlock("mixed_block_1", true, 2, false);
}

struct StructToAvoidDeepStacks {
Expand All @@ -161,16 +156,6 @@ contract SpartaTest is DecoderBase {
bool _expectRevert,
uint256 _signatureCount,
bool _invalidaProposer
) internal {
_testBlock(_name, _expectRevert, _signatureCount, _invalidaProposer, 0);
}

function _testBlock(
string memory _name,
bool _expectRevert,
uint256 _signatureCount,
bool _invalidaProposer,
uint256 _ts
) internal {
DecoderBase.Full memory full = load(_name);
bytes memory header = full.block.header;
Expand All @@ -180,18 +165,7 @@ contract SpartaTest is DecoderBase {
StructToAvoidDeepStacks memory ree;

// We jump to the time of the block. (unless it is in the past)
vm.warp(max(block.timestamp, max(full.block.decodedHeader.globalVariables.timestamp, _ts)));

if (_ts > 0) {
// Update the timestamp and slot in the header
uint256 slotValue = rollup.getCurrentSlot();
uint256 timestampMemoryPosition = 0x01b4;
uint256 slotMemoryPosition = 0x0194;
assembly {
mstore(add(header, add(0x20, timestampMemoryPosition)), _ts)
mstore(add(header, add(0x20, slotMemoryPosition)), slotValue)
}
}
vm.warp(max(block.timestamp, full.block.decodedHeader.globalVariables.timestamp));

_populateInbox(full.populate.sender, full.populate.recipient, full.populate.l1ToL2Content);

Expand Down Expand Up @@ -248,7 +222,7 @@ contract SpartaTest is DecoderBase {
rollup.process(header, archive, bytes32(0));
}

assertEq(_expectRevert, ree.shouldRevert, "Invalid revert expectation");
assertEq(_expectRevert, ree.shouldRevert, "Does not match revert expectation");

bytes32 l2ToL1MessageTreeRoot;
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,13 @@ global INITIALIZATION_SLOT_SEPARATOR: Field = 1000_000_000;
global INITIAL_L2_BLOCK_NUM: Field = 1;
global BLOB_SIZE_IN_BYTES: Field = 31 * 4096;
global ETHEREUM_SLOT_DURATION: u32 = 12;
// AZTEC_SLOT_DURATION should be a multiple of ETHEREUM_SLOT_DURATION
global AZTEC_SLOT_DURATION: u32 = ETHEREUM_SLOT_DURATION * 1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the need for the * 1?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Want the AZTEC_SLOT_DURATION to be a multiple of a ETHEREUM_SLOT_DURATION so just makes it very easy to change it to 3 to have the different duration 🤷 Is not really needed when the value is 1, but just kinda nice to showcase multiple I think.

global AZTEC_EPOCH_DURATION: u32 = 48;
global IS_DEV_NET: bool = true;
// The following is taken from building a block and looking at the `lastArchive` value in it.
// You can run the `integration_l1_publisher.test.ts` and look at the first blocks in the fixtures.
global GENESIS_ARCHIVE_ROOT: Field = 0x1200a06aae1368abe36530b585bd7a4d2ba4de5037b82076412691a187d7621e;
// The following and the value in `deploy_l1_contracts´ must match. We should not have the code both places, but
// we are running into circular dependency issues. #3342
global FEE_JUICE_INITIAL_MINT: Field = 20000000000;
Expand Down
3 changes: 3 additions & 0 deletions yarn-project/circuits.js/src/constants.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ export const INITIALIZATION_SLOT_SEPARATOR = 1000000000;
export const INITIAL_L2_BLOCK_NUM = 1;
export const BLOB_SIZE_IN_BYTES = 126976;
export const ETHEREUM_SLOT_DURATION = 12;
export const AZTEC_SLOT_DURATION = 12;
export const AZTEC_EPOCH_DURATION = 48;
export const IS_DEV_NET = 1;
export const GENESIS_ARCHIVE_ROOT = 8142738430000951296386584486068033372964809139261822027365426310856631083550n;
export const FEE_JUICE_INITIAL_MINT = 20000000000;
export const MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS = 20000;
export const MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS = 3000;
Expand Down
10 changes: 5 additions & 5 deletions yarn-project/end-to-end/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
"clean": "rm -rf ./dest .tsbuildinfo",
"formatting": "run -T prettier --check ./src \"!src/web/main.js\" && run -T eslint ./src",
"formatting:fix": "run -T eslint --fix ./src && run -T prettier -w ./src",
"test": "LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
"test:profile": "LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000 --forceExit",
"test": "TIME_TRAVELER=${TIME_TRAVELER:-true} LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
"test:profile": "TIME_TRAVELER=${TIME_TRAVELER:-true} LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 0x --output-dir \"flame_graph/{pid}.0x\" -- node --experimental-vm-modules ../node_modules/jest/bin/jest.js --runInBand --testTimeout=300000 --forceExit",
"serve:flames": "python3 -m http.server --directory \"flame_graph\" 8000",
"test:debug": "LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
"test:integration": "concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
"test:integration:run": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --no-cache --runInBand --config jest.integration.config.json",
"test:debug": "TIME_TRAVELER=${TIME_TRAVELER:-true} LOG_LEVEL=${LOG_LEVEL:-verbose} DEBUG_COLORS=1 NODE_NO_WARNINGS=1 node --inspect --experimental-vm-modules ../node_modules/.bin/jest --testTimeout=300000 --forceExit",
"test:integration": "TIME_TRAVELER=${TIME_TRAVELER:-true} concurrently -k -s first -c reset,dim -n test,anvil \"yarn test:integration:run\" \"anvil\"",
"test:integration:run": "TIME_TRAVELER=${TIME_TRAVELER:-true} NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest --no-cache --runInBand --config jest.integration.config.json",
"test:unit": "NODE_NO_WARNINGS=1 node --experimental-vm-modules ../node_modules/.bin/jest src/fixtures"
},
"dependencies": {
Expand Down
Loading
Loading