aboutsummaryrefslogtreecommitdiff
path: root/apps/fparkan-vulkan-smoke/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/fparkan-vulkan-smoke/src/main.rs')
-rw-r--r--apps/fparkan-vulkan-smoke/src/main.rs35
1 files changed, 31 insertions, 4 deletions
diff --git a/apps/fparkan-vulkan-smoke/src/main.rs b/apps/fparkan-vulkan-smoke/src/main.rs
index 621a67d..5495950 100644
--- a/apps/fparkan-vulkan-smoke/src/main.rs
+++ b/apps/fparkan-vulkan-smoke/src/main.rs
@@ -197,12 +197,12 @@ impl SmokeApp {
);
let smoke_report = SmokeReport {
schema_version: SCHEMA_VERSION,
- commit_sha: current_git_commit_sha(),
+ commit_sha: compiled_commit_sha(),
git_dirty: current_git_dirty(),
runner_identity: measured_runner_identity(),
runner_architecture: actual_architecture(),
rust_toolchain: current_rustc_release(),
- target_triple: current_rustc_host_triple(),
+ target_triple: compiled_target_triple(),
platform: actual_platform(),
status,
failure_reason,
@@ -541,7 +541,13 @@ fn actual_architecture() -> &'static str {
}
}
-fn current_git_commit_sha() -> String {
+fn compiled_commit_sha() -> String {
+ option_env!("FPARKAN_BUILD_COMMIT_SHA")
+ .filter(|value| is_commit_sha(value))
+ .map_or_else(runtime_git_commit_sha, ToString::to_string)
+}
+
+fn runtime_git_commit_sha() -> String {
Command::new("git")
.args(["rev-parse", "HEAD"])
.output()
@@ -549,7 +555,7 @@ fn current_git_commit_sha() -> String {
.filter(|output| output.status.success())
.and_then(|output| String::from_utf8(output.stdout).ok())
.map(|value| value.trim().to_string())
- .filter(|value| value.len() == 40 && value.chars().all(|ch| ch.is_ascii_hexdigit()))
+ .filter(|value| is_commit_sha(value))
.unwrap_or_else(|| "unknown".to_string())
}
@@ -578,6 +584,12 @@ fn current_rustc_release() -> String {
.unwrap_or_else(|| "unknown".to_string())
}
+fn compiled_target_triple() -> String {
+ option_env!("FPARKAN_BUILD_TARGET_TRIPLE")
+ .filter(|value| !value.trim().is_empty())
+ .map_or_else(current_rustc_host_triple, ToString::to_string)
+}
+
fn measured_runner_identity() -> String {
if std::env::var_os("GITHUB_ACTIONS").is_some() {
let run_id = std::env::var("GITHUB_RUN_ID").unwrap_or_else(|_| "unknown-run".to_string());
@@ -608,6 +620,10 @@ fn current_rustc_host_triple() -> String {
.unwrap_or_else(|| "unknown".to_string())
}
+fn is_commit_sha(value: &str) -> bool {
+ value.len() == 40 && value.chars().all(|ch| ch.is_ascii_hexdigit())
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -698,6 +714,17 @@ mod tests {
}
#[test]
+ fn commit_sha_validation_accepts_hex_head() {
+ assert!(is_commit_sha("0123456789abcdef0123456789abcdef01234567"));
+ }
+
+ #[test]
+ fn commit_sha_validation_rejects_non_hex_or_wrong_length() {
+ assert!(!is_commit_sha("0123456789abcdef0123456789abcdef0123456"));
+ assert!(!is_commit_sha("zz23456789abcdef0123456789abcdef01234567"));
+ }
+
+ #[test]
fn smoke_report_json_contains_expected_fields() {
let json = serde_json::to_string_pretty(&SmokeReport {
schema_version: SCHEMA_VERSION,