env.go 1.05 KB
Newer Older
1 2 3 4 5
package testutil

import (
	"context"
	"fmt"
6
	"net/url"
7 8 9 10
	"path"
	"runtime"
	"testing"

11
	artifacts2 "github.com/ethereum-optimism/optimism/op-deployer/pkg/deployer/artifacts"
12 13 14 15 16 17

	"github.com/ethereum-optimism/optimism/op-chain-ops/foundry"
	op_service "github.com/ethereum-optimism/optimism/op-service"
	"github.com/stretchr/testify/require"
)

18
func LocalArtifacts(t *testing.T) (*artifacts2.Locator, foundry.StatDirFs) {
19 20 21 22 23
	_, testFilename, _, ok := runtime.Caller(0)
	require.Truef(t, ok, "failed to get test filename")
	monorepoDir, err := op_service.FindMonorepoRoot(testFilename)
	require.NoError(t, err)
	artifactsDir := path.Join(monorepoDir, "packages", "contracts-bedrock", "forge-artifacts")
24 25 26 27 28
	artifactsURL, err := url.Parse(fmt.Sprintf("file://%s", artifactsDir))
	require.NoError(t, err)
	loc := &artifacts2.Locator{
		URL: artifactsURL,
	}
29

30
	artifactsFS, cleanupArtifacts, err := artifacts2.Download(context.Background(), loc, artifacts2.NoopDownloadProgressor)
31 32 33 34 35 36 37
	require.NoError(t, err)
	t.Cleanup(func() {
		_ = cleanupArtifacts()
	})

	return loc, artifactsFS
}