@@ -7,6 +7,7 @@
import os
import shutil
import unittest
+import json
from oeqa.sdk.case import OESDKTestCase
@@ -33,6 +34,39 @@ 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"
+ % self.tc.sdk_dir
+ )
+
+ executable_path = None
+ for line in result.splitlines():
+ try:
+ msg = json.loads(line)
+ except json.JSONDecodeError:
+ continue
+
+ # Cargo emits multiple JSON messages; we want the executable
+ if isinstance(msg, dict) and msg.get("executable"):
+ executable_path = msg["executable"]
+
+ self.assertIsNotNone(
+ executable_path,
+ "No executable found in cargo JSON output"
+ )
+
+ parts = executable_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']