pub struct TempProject<T: ArtifactOutput = ConfigurableArtifacts> { /* private fields */ }
Available on crate feature project-util only.
Expand description

A Project wrapper that lives in a new temporary directory

Once TempProject is dropped, the temp dir is automatically removed, see TempDir::drop()

Implementations§

source§

impl<T: ArtifactOutput> TempProject<T>

source

pub fn create_new(root: TempDir, inner: Project<T>) -> Result<Self, SolcIoError>

Makes sure all resources are created

source

pub fn with_artifacts( paths: ProjectPathsConfigBuilder, artifacts: T ) -> Result<Self>

Creates a new temp project using the provided paths and artifacts handler. sets the project root to a temp dir

source

pub fn prefixed_with_artifacts( prefix: &str, paths: ProjectPathsConfigBuilder, artifacts: T ) -> Result<Self>

Creates a new temp project inside a tempdir with a prefixed directory and the given artifacts handler

source

pub fn with_settings(self, settings: impl Into<Settings>) -> Self

Overwrites the settings to pass to solc

source

pub fn set_solc(&mut self, solc: impl AsRef<str>) -> &mut Self

Available on crate feature svm-solc and non-WebAssembly only.

Explicitly sets the solc version for the project

source

pub fn project(&self) -> &Project<T>

source

pub fn compile(&self) -> Result<ProjectCompileOutput<T>>

source

pub fn compile_sparse<F: FileFilter + 'static>( &self, filter: F ) -> Result<ProjectCompileOutput<T>>

source

pub fn flatten(&self, target: &Path) -> Result<String>

source

pub fn project_mut(&mut self) -> &mut Project<T>

source

pub fn paths(&self) -> &ProjectPathsConfig

The configured paths of the project

source

pub fn paths_mut(&mut self) -> &mut ProjectPathsConfig

The configured paths of the project

source

pub fn artifacts_path(&self) -> &PathBuf

Returns the path to the artifacts directory

source

pub fn sources_path(&self) -> &PathBuf

Returns the path to the sources directory

source

pub fn cache_path(&self) -> &PathBuf

Returns the path to the cache file

source

pub fn root(&self) -> &Path

The root path of the temporary workspace

source

pub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>

Copies a single file into the projects source

source

pub fn copy_sources<I, S>(&self, sources: I) -> Result<()>
where I: IntoIterator<Item = S>, S: AsRef<Path>,

source

pub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>

Copies a single file into the project’s main library directory

source

pub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
where I: IntoIterator<Item = S>, S: AsRef<Path>,

Copy a series of files into the main library dir

source

pub fn add_lib( &self, name: impl AsRef<str>, content: impl AsRef<str> ) -> Result<PathBuf>

Adds a new library file

source

pub fn add_basic_lib( &self, name: impl AsRef<str>, version: impl AsRef<str> ) -> Result<PathBuf>

Adds a basic lib contract contract <name> {} as a new file

source

pub fn add_test( &self, name: impl AsRef<str>, content: impl AsRef<str> ) -> Result<PathBuf>

Adds a new test file inside the project’s test dir

source

pub fn add_script( &self, name: impl AsRef<str>, content: impl AsRef<str> ) -> Result<PathBuf>

Adds a new script file inside the project’s script dir

source

pub fn add_source( &self, name: impl AsRef<str>, content: impl AsRef<str> ) -> Result<PathBuf>

Adds a new source file inside the project’s source dir

source

pub fn add_basic_source( &self, name: impl AsRef<str>, version: impl AsRef<str> ) -> Result<PathBuf>

Adds a basic source contract contract <name> {} as a new file

source

pub fn add_contract( &self, name: impl AsRef<str>, content: impl AsRef<str> ) -> Result<PathBuf>

Adds a solidity contract in the project’s root dir. This will also create all intermediary dirs.

source

pub fn artifacts_snapshot(&self) -> Result<ArtifactsSnapshot<T::Artifact>>

Returns a snapshot of all cached artifacts

source

pub fn mock( &self, gen: &MockProjectGenerator, version: impl AsRef<str> ) -> Result<()>

Populate the project with mock files

source

pub fn ensure_no_errors(&self) -> Result<&Self>

Compiles the project and ensures that the output does not contain errors

source

pub fn ensure_unchanged(&self) -> Result<&Self>

Compiles the project and ensures that the output is unchanged

source

pub fn ensure_changed(&self) -> Result<&Self>

Compiles the project and ensures that the output has changed

source

pub fn ensure_no_errors_recompile_unchanged(&self) -> Result<&Self>

Compiles the project and ensures that the output does not contain errors and no changes exists on recompiled.

This is a convenience function for

use ethers_solc::project_util::TempProject;
let project = TempProject::dapptools().unwrap();
source

pub fn assert_no_errors_recompile_unchanged(&self) -> &Self

Compiles the project and asserts that the output does not contain errors and no changes exists on recompiled.

This is a convenience function for

use ethers_solc::project_util::TempProject;
let project = TempProject::dapptools().unwrap();
source

pub fn assert_no_errors(&self) -> &Self

Compiles the project and asserts that the output does not contain errors

source

pub fn assert_unchanged(&self) -> &Self

Compiles the project and asserts that the output is unchanged

source

pub fn assert_changed(&self) -> &Self

Compiles the project and asserts that the output is changed

source

pub fn list_source_files(&self) -> Vec<PathBuf>

Returns a list of all source files in the project’s src directory

source§

impl<T: ArtifactOutput + Default> TempProject<T>

source

pub fn prefixed(prefix: &str, paths: ProjectPathsConfigBuilder) -> Result<Self>

Creates a new temp project inside a tempdir with a prefixed directory

source

pub fn with_style(prefix: &str, style: PathStyle) -> Result<Self>

Creates a new temp project for the given PathStyle

source

pub fn new(paths: ProjectPathsConfigBuilder) -> Result<Self>

Creates a new temp project using the provided paths and setting the project root to a temp dir

source§

impl TempProject<HardhatArtifacts>

source

pub fn hardhat() -> Result<Self>

Creates an empty new hardhat style workspace in a new temporary dir

source§

impl TempProject<ConfigurableArtifacts>

source

pub fn dapptools() -> Result<Self>

Creates an empty new dapptools style workspace in a new temporary dir

source

pub fn dapptools_init() -> Result<Self>

Creates an initialized dapptools style workspace in a new temporary dir

source

pub fn checkout(repo: impl AsRef<str>) -> Result<Self>

Clones the given repo into a temp dir, initializes it recursively and configures it.

§Example
use ethers_solc::project_util::TempProject;
let project = TempProject::checkout("transmissions11/solmate").unwrap();
source

pub fn mocked( settings: &MockProjectSettings, version: impl AsRef<str> ) -> Result<Self>

Create a new temporary project and populate it with mock files

use ethers_solc::project_util::mock::MockProjectSettings;
use ethers_solc::project_util::TempProject;
let tmp = TempProject::mocked(&MockProjectSettings::default(), "^0.8.10").unwrap();
source

pub fn mocked_random(version: impl AsRef<str>) -> Result<Self>

Create a new temporary project and populate it with a random layout

use ethers_solc::project_util::TempProject;
let tmp = TempProject::mocked_random("^0.8.10").unwrap();

This is a convenience function for:

use ethers_solc::project_util::mock::MockProjectSettings;
use ethers_solc::project_util::TempProject;
let tmp = TempProject::mocked(&MockProjectSettings::random(), "^0.8.10").unwrap();

Trait Implementations§

source§

impl<T: ArtifactOutput> AsRef<Project<T>> for TempProject<T>

source§

fn as_ref(&self) -> &Project<T>

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<T: ArtifactOutput> Debug for TempProject<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for TempProject<T>
where T: RefUnwindSafe,

§

impl<T> Send for TempProject<T>
where T: Send,

§

impl<T> Sync for TempProject<T>
where T: Sync,

§

impl<T> Unpin for TempProject<T>
where T: Unpin,

§

impl<T> UnwindSafe for TempProject<T>
where T: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> JsonSchemaMaybe for T