diff mbox series

[v2,4/5] oeqa/sdk/cases/rust.py: Add test to verify cargo build builds for target

Message ID 20250915102750.3298492-4-Harish.Sadineni@windriver.com
State New
Headers show
Series [v2,1/5] Revert "rust: remove redundant cargo config file" | expand

Commit Message

Harish Sadineni Sept. 15, 2025, 10:27 a.m. UTC
From: Harish Sadineni <Harish.Sadineni@windriver.com>

Ensure that cargo build successfully builds the binary for the target by default.
This test validates whether the default build process produces the expected output
for the specified target.

Signed-off-by: Harish Sadineni <Harish.Sadineni@windriver.com>
---
 meta/lib/oeqa/sdk/cases/rust.py | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Ross Burton Sept. 18, 2025, 4:07 p.m. UTC | #1
On 15 Sep 2025, at 11:27, Sadineni, Harish via lists.openembedded.org <Harish.Sadineni=windriver.com@lists.openembedded.org> wrote:
> +        result = self._run("cd %s/hello; cargo build --message-format=json | jq -rc 'select(.executable != null) | .executable'" % (self.tc.sdk_dir))

We don’t put jq into the SDKs, so you’re relying on it being installed on the host.

Instead, just output JSON and parse it in the test code.

Ross
diff mbox series

Patch

diff --git a/meta/lib/oeqa/sdk/cases/rust.py b/meta/lib/oeqa/sdk/cases/rust.py
index 4b115bebf5..17908f21f5 100644
--- a/meta/lib/oeqa/sdk/cases/rust.py
+++ b/meta/lib/oeqa/sdk/cases/rust.py
@@ -4,6 +4,7 @@ 
 # SPDX-License-Identifier: MIT
 #
 
+import json
 import os
 import shutil
 import unittest
@@ -33,6 +34,21 @@  class RustCompileTest(OESDKTestCase):
     def test_cargo_build(self):
         self._run('cd %s/hello; cargo add zstd' % (self.tc.sdk_dir))
         self._run('cd %s/hello; cargo build' % self.tc.sdk_dir)
+    def test_check_cargo_build_default_target(self):
+        result_env = self._run("echo $RUST_TARGET_SYS_VALUE")
+        rust_target_sys = result_env.strip()
+        result = self._run("cd %s/hello; cargo build --message-format=json | jq -rc 'select(.executable != null) | .executable'" % (self.tc.sdk_dir))
+        lines = result.strip().splitlines()
+        last_path = lines[-1]
+        parts = last_path.split(os.sep)
+        target_index = parts.index("target")
+        target_triple = parts[target_index + 1]
+
+        self.assertEqual(
+            rust_target_sys,
+            target_triple,
+            f"Target triple mismatch: env '{rust_target_sys}' != path '{target_triple}'"
+        )
 
 class RustHostCompileTest(OESDKTestCase):
     td_vars = ['MACHINE', 'SDK_SYS']