Restore resolc long version onto standard JSON and combined JSON output (#557)

## Description

The resolc long version stopped being populated on the standard JSON and
combined JSON output. This PR restores these fields and populates them.
This commit is contained in:
LJ authored and GitHub committed 2026-07-02 15:10:26 +02:00
1 parent a87bc81e4c
commit 5b92391c57
4 files changed
+64 -3

No files matched your search

+23 -3
View File
@@ -1,11 +1,12 @@
//! The tests for running resolc with combined JSON option.
use revive_solc_json_interface::CombinedJsonInvalidSelectorMessage;
use revive_solc_json_interface::{combined_json::CombinedJson, CombinedJsonInvalidSelectorMessage};
use crate::cli_utils::{
assert_command_failure, assert_equal_exit_codes, execute_resolc, execute_solc,
SOLIDITY_CONTRACT_PATH, YUL_CONTRACT_PATH,
assert_command_failure, assert_command_success, assert_equal_exit_codes, execute_resolc,
execute_solc, SOLIDITY_CONTRACT_PATH, YUL_CONTRACT_PATH,
};
use crate::ResolcVersion;
const JSON_OPTION: &str = "--combined-json";
const JSON_ARGUMENTS: &[&str] = &[
@@ -118,3 +119,22 @@ fn fails_with_yul_input_file() {
assert_equal_exit_codes(&solc_result, &resolc_result);
}
}
#[test]
fn populates_output_metadata_fields() {
let arguments = &[SOLIDITY_CONTRACT_PATH, JSON_OPTION, JSON_ARGUMENTS[0]];
let result = execute_resolc(arguments);
assert_command_success(&result, "Compiling with combined JSON");
let combined_json: CombinedJson =
serde_json::from_str(&result.stdout).expect("Combined JSON output should deserialize");
assert_eq!(
combined_json.resolc_version.as_deref(),
Some(ResolcVersion::default().long.as_str()),
"Combined JSON output should populate `resolc_version`"
);
assert!(
!combined_json.version.is_empty(),
"Combined JSON output should populate `version`"
);
}
@@ -15,6 +15,7 @@ use crate::cli_utils::{
STANDARD_JSON_YUL_NEWYORK_DISABLED_PATH, STANDARD_JSON_YUL_NEWYORK_ENABLED_PATH,
STANDARD_JSON_YUL_NO_PVM_CODEGEN_PATH, STANDARD_JSON_YUL_PVM_CODEGEN_PATH,
};
use crate::{pipeline_name, ResolcVersion};
const JSON_OPTION: &str = "--standard-json";
@@ -640,3 +641,37 @@ fn pvm_codegen_newyork_yul_input() {
"settings.polkavm.newyork should select a different pipeline for Yul input"
);
}
#[test]
fn populates_output_metadata_fields() {
for (path, use_newyork) in [
(STANDARD_JSON_CONTRACTS_PATH, false),
(STANDARD_JSON_NEWYORK_ENABLED_PATH, true),
(STANDARD_JSON_NEWYORK_DISABLED_PATH, false),
] {
let result = execute_resolc_with_stdin_input(&[JSON_OPTION], path);
assert_command_success(&result, "Compiling with standard JSON");
let output = to_solc_standard_json_output(&result.stdout);
assert_no_errors(&output);
assert_eq!(
output.revive_version.as_deref(),
Some(ResolcVersion::default().long.as_str()),
"Standard JSON output for `{path}` should populate `revive_version`"
);
assert_eq!(
output.resolc_pipeline.as_deref(),
Some(pipeline_name(use_newyork)),
"Standard JSON output for `{path}` should report the correct `resolc_pipeline`"
);
assert!(
output.version.is_some(),
"Standard JSON output for `{path}` should populate `version`"
);
assert!(
output.long_version.is_some(),
"Standard JSON output for `{path}` should populate `long_version`"
);
}
}