Redesign dataset workbench management
This commit is contained in:
@@ -4,9 +4,10 @@ import zipfile
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
import pytest
|
||||
from fastapi import UploadFile
|
||||
|
||||
from app.modules.dataset.service import create_dataset, describe_dataset, generate_yolo_dataset_yaml, save_upload, validate_dataset
|
||||
from app.modules.dataset.service import copy_dataset, create_dataset, delete_dataset, describe_dataset, generate_yolo_dataset_yaml, save_upload, validate_dataset
|
||||
|
||||
|
||||
def test_create_dataset_layout(tmp_path, monkeypatch):
|
||||
@@ -19,6 +20,32 @@ def test_create_dataset_layout(tmp_path, monkeypatch):
|
||||
assert created["counts"] == {"images": 0, "labels": 0, "masks": 0}
|
||||
described = describe_dataset("case_01")
|
||||
assert described["layout"]["images"].endswith("images")
|
||||
assert described["files"]["images"] == []
|
||||
with pytest.raises(ValueError, match="already exists"):
|
||||
create_dataset("case 01", "duplicate")
|
||||
|
||||
|
||||
def test_copy_and_delete_dataset(tmp_path, monkeypatch):
|
||||
from types import SimpleNamespace
|
||||
from app.modules.dataset import service
|
||||
|
||||
monkeypatch.setattr(service, "settings", SimpleNamespace(project_root=tmp_path))
|
||||
create_dataset("case base", "demo")
|
||||
root = service.dataset_dir("case_base")
|
||||
(root / "images" / "sample.png").write_bytes(b"image")
|
||||
|
||||
copied = copy_dataset("case_base", "case copy", "copy")
|
||||
|
||||
assert copied["name"] == "case_copy"
|
||||
assert copied["description"] == "copy"
|
||||
assert copied["counts"]["images"] == 1
|
||||
with pytest.raises(ValueError, match="already exists"):
|
||||
copy_dataset("case_base", "case_copy")
|
||||
|
||||
deleted = delete_dataset("case_copy")
|
||||
|
||||
assert deleted == {"deleted": True, "name": "case_copy"}
|
||||
assert not service.dataset_dir("case_copy").exists()
|
||||
|
||||
|
||||
def test_validate_dataset_and_generate_yolo_yaml(tmp_path, monkeypatch):
|
||||
|
||||
Reference in New Issue
Block a user