pub struct TempProject<T: ArtifactOutput = ConfigurableArtifacts> { /* private fields */ }
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>
impl<T: ArtifactOutput> TempProject<T>
Sourcepub fn create_new(root: TempDir, inner: Project<T>) -> Result<Self, SolcIoError>
pub fn create_new(root: TempDir, inner: Project<T>) -> Result<Self, SolcIoError>
Makes sure all resources are created
Sourcepub fn with_artifacts(
paths: ProjectPathsConfigBuilder,
artifacts: T,
) -> Result<Self>
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
Sourcepub fn prefixed_with_artifacts(
prefix: &str,
paths: ProjectPathsConfigBuilder,
artifacts: T,
) -> Result<Self>
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
Sourcepub fn with_settings(self, settings: impl Into<Settings>) -> Self
pub fn with_settings(self, settings: impl Into<Settings>) -> Self
Overwrites the settings to pass to solc
Sourcepub fn set_solc(&mut self, solc: impl AsRef<str>) -> &mut Self
Available on crate feature svm-solc
and non-WebAssembly only.
pub fn set_solc(&mut self, solc: impl AsRef<str>) -> &mut Self
svm-solc
and non-WebAssembly only.Explicitly sets the solc version for the project
pub fn project(&self) -> &Project<T>
pub fn compile(&self) -> Result<ProjectCompileOutput<T>>
pub fn compile_sparse<F: FileFilter + 'static>( &self, filter: F, ) -> Result<ProjectCompileOutput<T>>
pub fn flatten(&self, target: &Path) -> Result<String>
pub fn project_mut(&mut self) -> &mut Project<T>
Sourcepub fn paths(&self) -> &ProjectPathsConfig
pub fn paths(&self) -> &ProjectPathsConfig
The configured paths of the project
Sourcepub fn paths_mut(&mut self) -> &mut ProjectPathsConfig
pub fn paths_mut(&mut self) -> &mut ProjectPathsConfig
The configured paths of the project
Sourcepub fn artifacts_path(&self) -> &PathBuf
pub fn artifacts_path(&self) -> &PathBuf
Returns the path to the artifacts directory
Sourcepub fn sources_path(&self) -> &PathBuf
pub fn sources_path(&self) -> &PathBuf
Returns the path to the sources directory
Sourcepub fn cache_path(&self) -> &PathBuf
pub fn cache_path(&self) -> &PathBuf
Returns the path to the cache file
Sourcepub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>
pub fn copy_source(&self, source: impl AsRef<Path>) -> Result<()>
Copies a single file into the projects source
pub fn copy_sources<I, S>(&self, sources: I) -> Result<()>
Sourcepub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>
pub fn copy_lib(&self, lib: impl AsRef<Path>) -> Result<()>
Copies a single file into the project’s main library directory
Sourcepub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
pub fn copy_libs<I, S>(&self, libs: I) -> Result<()>
Copy a series of files into the main library dir
Sourcepub fn add_lib(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
pub fn add_lib( &self, name: impl AsRef<str>, content: impl AsRef<str>, ) -> Result<PathBuf>
Adds a new library file
Sourcepub fn add_basic_lib(
&self,
name: impl AsRef<str>,
version: impl AsRef<str>,
) -> Result<PathBuf>
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
Sourcepub fn add_test(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
Sourcepub fn add_script(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
Sourcepub fn add_source(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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
Sourcepub fn add_basic_source(
&self,
name: impl AsRef<str>,
version: impl AsRef<str>,
) -> Result<PathBuf>
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
Sourcepub fn add_contract(
&self,
name: impl AsRef<str>,
content: impl AsRef<str>,
) -> Result<PathBuf>
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.
Sourcepub fn artifacts_snapshot(&self) -> Result<ArtifactsSnapshot<T::Artifact>>
pub fn artifacts_snapshot(&self) -> Result<ArtifactsSnapshot<T::Artifact>>
Returns a snapshot of all cached artifacts
Sourcepub fn mock(
&self,
gen: &MockProjectGenerator,
version: impl AsRef<str>,
) -> Result<()>
pub fn mock( &self, gen: &MockProjectGenerator, version: impl AsRef<str>, ) -> Result<()>
Populate the project with mock files
Sourcepub fn ensure_no_errors(&self) -> Result<&Self>
pub fn ensure_no_errors(&self) -> Result<&Self>
Compiles the project and ensures that the output does not contain errors
Sourcepub fn ensure_unchanged(&self) -> Result<&Self>
pub fn ensure_unchanged(&self) -> Result<&Self>
Compiles the project and ensures that the output is unchanged
Sourcepub fn ensure_changed(&self) -> Result<&Self>
pub fn ensure_changed(&self) -> Result<&Self>
Compiles the project and ensures that the output has changed
Sourcepub fn ensure_no_errors_recompile_unchanged(&self) -> Result<&Self>
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();
Sourcepub fn assert_no_errors_recompile_unchanged(&self) -> &Self
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();
Sourcepub fn assert_no_errors(&self) -> &Self
pub fn assert_no_errors(&self) -> &Self
Compiles the project and asserts that the output does not contain errors
Sourcepub fn assert_unchanged(&self) -> &Self
pub fn assert_unchanged(&self) -> &Self
Compiles the project and asserts that the output is unchanged
Sourcepub fn assert_changed(&self) -> &Self
pub fn assert_changed(&self) -> &Self
Compiles the project and asserts that the output is changed
Sourcepub fn list_source_files(&self) -> Vec<PathBuf>
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>
impl<T: ArtifactOutput + Default> TempProject<T>
Source§impl TempProject<ConfigurableArtifacts>
impl TempProject<ConfigurableArtifacts>
Sourcepub fn dapptools() -> Result<Self>
pub fn dapptools() -> Result<Self>
Creates an empty new dapptools style workspace in a new temporary dir
Sourcepub fn dapptools_init() -> Result<Self>
pub fn dapptools_init() -> Result<Self>
Creates an initialized dapptools style workspace in a new temporary dir
Sourcepub fn checkout(repo: impl AsRef<str>) -> Result<Self>
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();
Sourcepub fn mocked(
settings: &MockProjectSettings,
version: impl AsRef<str>,
) -> Result<Self>
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();
Sourcepub fn mocked_random(version: impl AsRef<str>) -> Result<Self>
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>
impl<T: ArtifactOutput> AsRef<Project<T>> for TempProject<T>
Auto Trait Implementations§
impl<T> Freeze for TempProject<T>where
T: Freeze,
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more