Commit e0f7e5f4 authored by smartcontracts's avatar smartcontracts Committed by GitHub

Merge pull request #2204 from tonykogias/remove-watcher-utils-in-integration-tests

maintenance: deleted watch-utils and added the utilities in env.ts
parents d9fdc5d6 dc5f6517
---
'@eth-optimism/integration-tests': patch
---
Deletes watcher-utils.ts. Moves it's utilities into env.ts.
/* Imports: External */ /* Imports: External */
import { Contract, utils, Wallet, providers } from 'ethers' import { Contract, utils, Wallet, providers, Transaction } from 'ethers'
import { TransactionResponse } from '@ethersproject/providers' import {
TransactionResponse,
TransactionReceipt,
} from '@ethersproject/providers'
import { getContractFactory, predeploys } from '@eth-optimism/contracts' import { getContractFactory, predeploys } from '@eth-optimism/contracts'
import { sleep } from '@eth-optimism/core-utils' import { sleep } from '@eth-optimism/core-utils'
import { CrossChainMessenger, MessageStatus } from '@eth-optimism/sdk' import {
CrossChainMessenger,
MessageStatus,
MessageDirection,
} from '@eth-optimism/sdk'
/* Imports: Internal */ /* Imports: Internal */
import { import {
...@@ -21,10 +28,13 @@ import { ...@@ -21,10 +28,13 @@ import {
getL2Bridge, getL2Bridge,
envConfig, envConfig,
} from './utils' } from './utils'
import {
CrossDomainMessagePair, export interface CrossDomainMessagePair {
waitForXDomainTransaction, tx: Transaction
} from './watcher-utils' receipt: TransactionReceipt
remoteTx: Transaction
remoteReceipt: TransactionReceipt
}
/// Helper class for instantiating a test environment with a funded account /// Helper class for instantiating a test environment with a funded account
export class OptimismEnv { export class OptimismEnv {
...@@ -168,7 +178,32 @@ export class OptimismEnv { ...@@ -168,7 +178,32 @@ export class OptimismEnv {
async waitForXDomainTransaction( async waitForXDomainTransaction(
tx: Promise<TransactionResponse> | TransactionResponse tx: Promise<TransactionResponse> | TransactionResponse
): Promise<CrossDomainMessagePair> { ): Promise<CrossDomainMessagePair> {
return waitForXDomainTransaction(this.messenger, tx) // await it if needed
tx = await tx
const receipt = await tx.wait()
const resolved = await this.messenger.toCrossChainMessage(tx)
const messageReceipt = await this.messenger.waitForMessageReceipt(tx)
let fullTx: any
let remoteTx: any
if (resolved.direction === MessageDirection.L1_TO_L2) {
fullTx = await this.messenger.l1Provider.getTransaction(tx.hash)
remoteTx = await this.messenger.l2Provider.getTransaction(
messageReceipt.transactionReceipt.transactionHash
)
} else {
fullTx = await this.messenger.l2Provider.getTransaction(tx.hash)
remoteTx = await this.messenger.l1Provider.getTransaction(
messageReceipt.transactionReceipt.transactionHash
)
}
return {
tx: fullTx,
receipt,
remoteTx,
remoteReceipt: messageReceipt.transactionReceipt,
}
} }
/** /**
......
import {
TransactionReceipt,
TransactionResponse,
} from '@ethersproject/providers'
import { Transaction } from 'ethers'
import { CrossChainMessenger, MessageDirection } from '@eth-optimism/sdk'
export interface CrossDomainMessagePair {
tx: Transaction
receipt: TransactionReceipt
remoteTx: Transaction
remoteReceipt: TransactionReceipt
}
export enum Direction {
L1ToL2,
L2ToL1,
}
export const waitForXDomainTransaction = async (
messenger: CrossChainMessenger,
tx: Promise<TransactionResponse> | TransactionResponse
): Promise<CrossDomainMessagePair> => {
// await it if needed
tx = await tx
const receipt = await tx.wait()
const resolved = await messenger.toCrossChainMessage(tx)
const messageReceipt = await messenger.waitForMessageReceipt(tx)
let fullTx: any
let remoteTx: any
if (resolved.direction === MessageDirection.L1_TO_L2) {
fullTx = await messenger.l1Provider.getTransaction(tx.hash)
remoteTx = await messenger.l2Provider.getTransaction(
messageReceipt.transactionReceipt.transactionHash
)
} else {
fullTx = await messenger.l2Provider.getTransaction(tx.hash)
remoteTx = await messenger.l1Provider.getTransaction(
messageReceipt.transactionReceipt.transactionHash
)
}
return {
tx: fullTx,
receipt,
remoteTx,
remoteReceipt: messageReceipt.transactionReceipt,
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment