aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-06-23 22:48:31 +0300
committerValentin Popov <valentin@popov.link>2026-06-23 22:48:31 +0300
commited2b540abfc3166285fbc986f4c6427a59173d23 (patch)
tree567468278182b7d72f7833635c6f9ed6cb0819f2
parent00ae9067d89a8e8eaa0238e8131ed2aee8121d4d (diff)
downloadfparkan-ed2b540abfc3166285fbc986f4c6427a59173d23.tar.xz
fparkan-ed2b540abfc3166285fbc986f4c6427a59173d23.zip
feat: add target triple to native smoke report
-rw-r--r--apps/fparkan-vulkan-smoke/src/main.rs24
-rw-r--r--fixtures/acceptance/coverage.tsv1
-rw-r--r--fixtures/acceptance/stage_0_2_roadmap.md1
3 files changed, 26 insertions, 0 deletions
diff --git a/apps/fparkan-vulkan-smoke/src/main.rs b/apps/fparkan-vulkan-smoke/src/main.rs
index 5c0e7e3..088054c 100644
--- a/apps/fparkan-vulkan-smoke/src/main.rs
+++ b/apps/fparkan-vulkan-smoke/src/main.rs
@@ -523,6 +523,7 @@ fn render_smoke_report_json(
" \"schema_version\": \"{}\",\n",
" \"commit_sha\": \"{}\",\n",
" \"rust_toolchain\": \"{}\",\n",
+ " \"target_triple\": \"{}\",\n",
" \"platform\": \"{}\",\n",
" \"status\": \"{}\",\n",
" \"frames\": {},\n",
@@ -548,6 +549,7 @@ fn render_smoke_report_json(
SCHEMA_VERSION,
json_escape(&current_git_commit_sha()),
RUST_TOOLCHAIN,
+ json_escape(&current_rustc_host_triple()),
options.platform.as_str(),
options.status.as_str(),
options.frames,
@@ -594,6 +596,22 @@ fn current_git_commit_sha() -> String {
.unwrap_or_else(|| "unknown".to_string())
}
+fn current_rustc_host_triple() -> String {
+ Command::new("rustc")
+ .arg("-vV")
+ .output()
+ .ok()
+ .filter(|output| output.status.success())
+ .and_then(|output| String::from_utf8(output.stdout).ok())
+ .and_then(|output| {
+ output
+ .lines()
+ .find_map(|line| line.strip_prefix("host: ").map(ToString::to_string))
+ })
+ .filter(|value| !value.trim().is_empty())
+ .unwrap_or_else(|| "unknown".to_string())
+}
+
fn json_string(value: &str) -> String {
format!("\"{}\"", json_escape(value))
}
@@ -952,6 +970,7 @@ mod tests {
)?;
assert!(json.contains("\"schema_version\": \"fparkan-native-smoke-v1\""));
+ assert!(json.contains("\"target_triple\": \""));
assert!(json.contains("\"platform\": \"macos\""));
assert!(json.contains("\"status\": \"blocked\""));
assert!(json.contains("\"swapchain_recreate_count\": 0"));
@@ -1030,4 +1049,9 @@ mod tests {
fn formats_vulkan_api_version() {
assert_eq!(format_api_version((1 << 22) | (3 << 12) | 280), "1.3.280");
}
+
+ #[test]
+ fn reports_rustc_host_triple() {
+ assert!(!current_rustc_host_triple().trim().is_empty());
+ }
}
diff --git a/fixtures/acceptance/coverage.tsv b/fixtures/acceptance/coverage.tsv
index 9abf379..f826c08 100644
--- a/fixtures/acceptance/coverage.tsv
+++ b/fixtures/acceptance/coverage.tsv
@@ -56,6 +56,7 @@ S0-VK-024 covered cargo test -p fparkan-vulkan-smoke --offline rejects_passed_wi
S0-VK-025 covered cargo test -p fparkan-vulkan-smoke --offline rejects_passed_without_instance_probe parses_instance_probe_as_loader_probe
S0-VK-026 covered cargo test -p fparkan-vulkan-smoke --offline rejects_passed_without_window_probe rejects_passed_without_surface_probe parses_surface_probe_as_instance_probe
S0-VK-027 covered cargo test -p fparkan-vulkan-smoke --offline rejects_passed_without_swapchain_recreation blocked_report_includes_shader_manifest_and_bootstrap_status
+S0-VK-028 covered cargo test -p fparkan-vulkan-smoke --offline reports_rustc_host_triple blocked_report_includes_shader_manifest_and_bootstrap_status
S0-LIMIT-001 covered cargo test -p fparkan-binary --offline rejects_count_stride_overflow
S0-LIMIT-002 covered cargo test -p fparkan-binary --offline rejects_oversized_declared_allocation_before_read
L1-P1-NRES-001 covered cargo test -p fparkan-nres --offline licensed_corpora_nres_roundtrip_gates
diff --git a/fixtures/acceptance/stage_0_2_roadmap.md b/fixtures/acceptance/stage_0_2_roadmap.md
index b1d28d8..7308e10 100644
--- a/fixtures/acceptance/stage_0_2_roadmap.md
+++ b/fixtures/acceptance/stage_0_2_roadmap.md
@@ -56,6 +56,7 @@
`S0-VK-025`
`S0-VK-026`
`S0-VK-027`
+`S0-VK-028`
`S0-LIMIT-001`
`S0-LIMIT-002`
`L1-P1-NRES-001`