From 385be2eca72eb3833efa4be0a0088b34e764788a Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 31 Aug 2026 09:04:45 +0800
Subject: [PATCH] feat(pointcloud): complete annotation and result lifecycle workflows
---
capabilities/05-3d-pointcloud/tests/test_cpu_dense_reconstruction.py | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/capabilities/05-3d-pointcloud/tests/test_cpu_dense_reconstruction.py b/capabilities/05-3d-pointcloud/tests/test_cpu_dense_reconstruction.py
index a9bab65..b8fdccd 100644
--- a/capabilities/05-3d-pointcloud/tests/test_cpu_dense_reconstruction.py
+++ b/capabilities/05-3d-pointcloud/tests/test_cpu_dense_reconstruction.py
@@ -55,6 +55,26 @@
class ReliableTexturePreviewTests(unittest.TestCase):
+ def test_cuda_dense_log_requires_explicit_cuda_or_gpu_evidence(self) -> None:
+ MODULE.verify_cuda_dense_log("OpenMVS CUDA device 0 initialized")
+ MODULE.verify_cuda_dense_log("GPU depth maps are enabled")
+ with self.assertRaisesRegex(RuntimeError, "did not report"):
+ MODULE.verify_cuda_dense_log("OpenMVS x64 v2.4.0")
+
+ def test_openmvs_tool_log_uses_the_latest_timestamped_log(self) -> None:
+ with tempfile.TemporaryDirectory() as temporary:
+ directory = Path(temporary)
+ (directory / "DensifyPointCloud-older.log").write_text("CPU", encoding="utf-8")
+ (directory / "DensifyPointCloud-newer.log").write_text("CUDA device 0", encoding="utf-8")
+ self.assertEqual(MODULE.openmvs_tool_log(directory, "DensifyPointCloud"), "CUDA device 0")
+
+ def test_openmvs_failure_includes_native_log(self) -> None:
+ with tempfile.TemporaryDirectory() as temporary:
+ directory = Path(temporary)
+ (directory / "DensifyPointCloud-native.log").write_text("CUDA error (code 801)", encoding="utf-8")
+ error = MODULE.with_openmvs_log(RuntimeError("DensifyPointCloud.exe failed"), directory, "DensifyPointCloud")
+ self.assertIn("CUDA error (code 801)", str(error))
+
def test_external_tool_paths_are_absolute(self) -> None:
args = Namespace(input=Path("images"), sparse_model=Path("sparse"), output=Path("output"), openmvs_bin=Path("tools"))
MODULE.resolve_external_tool_paths(args)
--
Gitblit v1.9.3