fix(solc): only write cache file if build was successful (#1177)
This commit is contained in:
parent
a866cd5726
commit
86908bc533
|
@ -854,9 +854,10 @@ impl<'a, T: ArtifactOutput> ArtifactsCache<'a, T> {
|
||||||
/// compiled and written to disk `written_artifacts`.
|
/// compiled and written to disk `written_artifacts`.
|
||||||
///
|
///
|
||||||
/// Returns all the _cached_ artifacts.
|
/// Returns all the _cached_ artifacts.
|
||||||
pub fn write_cache(
|
pub fn consume(
|
||||||
self,
|
self,
|
||||||
written_artifacts: &Artifacts<T::Artifact>,
|
written_artifacts: &Artifacts<T::Artifact>,
|
||||||
|
write_to_disk: bool,
|
||||||
) -> Result<Artifacts<T::Artifact>> {
|
) -> Result<Artifacts<T::Artifact>> {
|
||||||
match self {
|
match self {
|
||||||
ArtifactsCache::Ephemeral(_, _) => Ok(Default::default()),
|
ArtifactsCache::Ephemeral(_, _) => Ok(Default::default()),
|
||||||
|
@ -913,8 +914,11 @@ impl<'a, T: ArtifactOutput> ArtifactsCache<'a, T> {
|
||||||
.extend(dirty_source_files.into_iter().map(|(file, (entry, _))| (file, entry)));
|
.extend(dirty_source_files.into_iter().map(|(file, (entry, _))| (file, entry)));
|
||||||
|
|
||||||
cache.strip_artifact_files_prefixes(project.artifacts_path());
|
cache.strip_artifact_files_prefixes(project.artifacts_path());
|
||||||
|
|
||||||
// write to disk
|
// write to disk
|
||||||
cache.write(project.cache_path())?;
|
if write_to_disk {
|
||||||
|
cache.write(project.cache_path())?;
|
||||||
|
}
|
||||||
|
|
||||||
Ok(cached_artifacts)
|
Ok(cached_artifacts)
|
||||||
}
|
}
|
||||||
|
|
|
@ -304,7 +304,8 @@ impl<'a, T: ArtifactOutput> ArtifactsState<'a, T> {
|
||||||
fn write_cache(self) -> Result<ProjectCompileOutput<T>> {
|
fn write_cache(self) -> Result<ProjectCompileOutput<T>> {
|
||||||
let ArtifactsState { output, cache, compiled_artifacts } = self;
|
let ArtifactsState { output, cache, compiled_artifacts } = self;
|
||||||
let ignored_error_codes = cache.project().ignored_error_codes.clone();
|
let ignored_error_codes = cache.project().ignored_error_codes.clone();
|
||||||
let cached_artifacts = cache.write_cache(&compiled_artifacts)?;
|
let skip_write_to_disk = cache.project().no_artifacts || output.has_error();
|
||||||
|
let cached_artifacts = cache.consume(&compiled_artifacts, !skip_write_to_disk)?;
|
||||||
Ok(ProjectCompileOutput {
|
Ok(ProjectCompileOutput {
|
||||||
compiler_output: output,
|
compiler_output: output,
|
||||||
compiled_artifacts,
|
compiled_artifacts,
|
||||||
|
|
|
@ -34,8 +34,10 @@ pub struct TempProject<T: ArtifactOutput = ConfigurableArtifacts> {
|
||||||
impl<T: ArtifactOutput> TempProject<T> {
|
impl<T: ArtifactOutput> TempProject<T> {
|
||||||
/// Makes sure all resources are created
|
/// Makes sure all resources are created
|
||||||
pub fn create_new(root: TempDir, inner: Project<T>) -> std::result::Result<Self, SolcIoError> {
|
pub fn create_new(root: TempDir, inner: Project<T>) -> std::result::Result<Self, SolcIoError> {
|
||||||
let project = Self { _root: root, inner };
|
let mut project = Self { _root: root, inner };
|
||||||
project.paths().create_all()?;
|
project.paths().create_all()?;
|
||||||
|
// ignore license warnings
|
||||||
|
project.inner.ignored_error_codes.push(1878);
|
||||||
Ok(project)
|
Ok(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue