From 91e2fe47a57cd39b612d54177b548e4ec3432783 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Mon, 17 Aug 2026 14:50:48 +0800
Subject: [PATCH] feat:语义分割demo处理
---
tests/test_serve_workbench_console.py | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/tests/test_serve_workbench_console.py b/tests/test_serve_workbench_console.py
index d2bf1ad..b81b91c 100644
--- a/tests/test_serve_workbench_console.py
+++ b/tests/test_serve_workbench_console.py
@@ -1,6 +1,8 @@
from __future__ import annotations
import importlib.util
+import io
+import sys
import unittest
from pathlib import Path
@@ -33,6 +35,40 @@
Path(handler.translate_path("/shared/data/raw/01-object-detection/sample.jpeg")),
ROOT / "shared" / "data" / "raw" / "01-object-detection" / "sample.jpeg",
)
+ self.assertEqual(
+ Path(handler.translate_path("/shared/data/raw/02-semantic-mapping/sample.tif")),
+ ROOT / "shared" / "data" / "raw" / "02-semantic-mapping" / "sample.tif",
+ )
+
+ def test_upload_name_is_sanitized_and_extension_is_allowlisted(self) -> None:
+ self.assertEqual(MODULE.safe_file_name("../../unsafe name.JPG", {".jpg"}), "unsafe_name.jpg")
+ with self.assertRaises(MODULE.ApiError):
+ MODULE.safe_file_name("image.exe", {".jpg", ".png"})
+
+ def test_oversized_request_is_rejected_before_reading_body(self) -> None:
+ handler = self.make_handler()
+ handler.headers = {"Content-Length": str(MODULE.MAX_REQUEST_BYTES + 1), "Content-Type": "application/json"}
+ handler.rfile = io.BytesIO(b"")
+ with self.assertRaises(MODULE.ApiError):
+ handler.read_json_body()
+
+ def test_script_failure_becomes_a_useful_api_error(self) -> None:
+ handler = self.make_handler()
+ with self.assertRaisesRegex(MODULE.ApiError, "Processing failed"):
+ handler.run_command([sys.executable, "-c", "raise SystemExit(2)"], timeout=10)
+
+ def test_semantic_validation_run_is_discovered(self) -> None:
+ runs = MODULE.semantic_runs(ROOT)
+ self.assertTrue(any(item["id"] == "validation-20260817" for item in runs))
+
+ def test_semantic_task_catalog_only_enables_verified_baseline(self) -> None:
+ tasks = MODULE.semantic_tasks(ROOT)
+ self.assertEqual(len(tasks), 5)
+ selectable = [item["id"] for item in tasks if item.get("selectable") is True]
+ self.assertEqual(selectable, ["color_baseline"])
+ handler = self.make_handler()
+ with self.assertRaisesRegex(MODULE.ApiError, "not runnable yet"):
+ handler.create_semantic_run({"taskId": "drainage_blockage", "images": []})
def test_blocks_repository_files_and_encoded_traversal(self) -> None:
handler = self.make_handler()
--
Gitblit v1.9.3