Struct ethers_solc::project_util::TempProject
source · 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();