Skip to content

Commit

Permalink
stop using datumaro.util.test_utils
Browse files Browse the repository at this point in the history
  • Loading branch information
Eldies committed Aug 5, 2024
1 parent f3dcc3e commit 196acce
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 8 deletions.
12 changes: 6 additions & 6 deletions cvat/apps/dataset_manager/tests/test_rest_api_formats.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@

from attr import define, field
from datumaro.components.dataset import Dataset
from datumaro.util.test_utils import compare_datasets, TestDir
from django.contrib.auth.models import Group, User
from PIL import Image
from rest_framework import status

import cvat.apps.dataset_manager as dm
from cvat.apps.dataset_manager.bindings import CvatTaskOrJobDataExtractor, TaskData
from cvat.apps.dataset_manager.task import TaskAnnotation
from cvat.apps.dataset_manager.tests.utils import compare_datasets, TestDir
from cvat.apps.dataset_manager.util import get_export_cache_lock
from cvat.apps.dataset_manager.views import clear_export_cache, export, parse_export_file_path
from cvat.apps.engine.models import Task
Expand Down Expand Up @@ -1034,7 +1034,7 @@ def test_api_v2_tasks_annotations_dump_and_upload_many_jobs_with_datumaro(self):

# equals annotations
data_from_task_after_upload = self._get_data_from_task(task_id, include_images)
compare_datasets(self, data_from_task_before_upload, data_from_task_after_upload)
compare_datasets(data_from_task_before_upload, data_from_task_after_upload)

def test_api_v2_tasks_annotations_dump_and_upload_with_datumaro(self):
test_name = self._testMethodName
Expand Down Expand Up @@ -1110,7 +1110,7 @@ def test_api_v2_tasks_annotations_dump_and_upload_with_datumaro(self):

# equals annotations
data_from_task_after_upload = self._get_data_from_task(task_id, include_images)
compare_datasets(self, data_from_task_before_upload, data_from_task_after_upload)
compare_datasets(data_from_task_before_upload, data_from_task_after_upload)

def test_api_v2_check_duplicated_polygon_points(self):
test_name = self._testMethodName
Expand Down Expand Up @@ -1176,7 +1176,7 @@ def test_api_v2_check_widerface_with_all_attributes(self):

# equals annotations
data_from_task_after_upload = self._get_data_from_task(task_id, include_images)
compare_datasets(self, data_from_task_before_upload, data_from_task_after_upload)
compare_datasets(data_from_task_before_upload, data_from_task_after_upload)

def test_api_v2_check_mot_with_shapes_only(self):
test_name = self._testMethodName
Expand Down Expand Up @@ -1212,7 +1212,7 @@ def test_api_v2_check_mot_with_shapes_only(self):

# equals annotations
data_from_task_after_upload = self._get_data_from_task(task_id, include_images)
compare_datasets(self, data_from_task_before_upload, data_from_task_after_upload)
compare_datasets(data_from_task_before_upload, data_from_task_after_upload)

def test_api_v2_check_attribute_import_in_tracks(self):
test_name = self._testMethodName
Expand Down Expand Up @@ -1249,7 +1249,7 @@ def test_api_v2_check_attribute_import_in_tracks(self):

# equals annotations
data_from_task_after_upload = self._get_data_from_task(task_id, include_images)
compare_datasets(self, data_from_task_before_upload, data_from_task_after_upload)
compare_datasets(data_from_task_before_upload, data_from_task_after_upload)

class ExportBehaviorTest(_DbTestBase):
@define
Expand Down
85 changes: 85 additions & 0 deletions cvat/apps/dataset_manager/tests/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Copyright (C) 2024 CVAT.ai Corporation
#
# SPDX-License-Identifier: MIT

import os
import tempfile
import unittest
from typing import Optional

from datumaro import IDataset
from datumaro.components.operations import ExactComparator
from datumaro.util.os_util import rmfile, rmtree

from cvat.apps.dataset_manager.util import current_function_name


class FileRemover:
def __init__(self, path, is_dir=False):
self.path = path
self.is_dir = is_dir

def __enter__(self):
return self.path

def __exit__(self, exc_type=None, exc_value=None, traceback=None):
if self.is_dir:
try:
rmtree(self.path)
except unittest.SkipTest:
# Suppress skip test errors from git.util.rmtree
if not exc_type:
raise
else:
rmfile(self.path)


class TestDir(FileRemover):
"""
Creates a temporary directory for a test. Uses the name of
the test function to name the directory.
Usage:
.. code-block::
with TestDir() as test_dir:
...
"""

def __init__(self, path: Optional[str] = None, frame_id: int = 2):
if not path:
prefix = f"temp_{current_function_name(frame_id)}-"
else:
prefix = None
self._prefix = prefix

super().__init__(path, is_dir=True)

def __enter__(self) -> str:
"""
Creates a test directory.
Returns: path to the directory
"""

path = self.path

if path is None:
path = tempfile.mkdtemp(dir=os.getcwd(), prefix=self._prefix)
self.path = path
else:
os.makedirs(path, exist_ok=False)

return path


def compare_datasets(expected: IDataset, actual: IDataset):
comparator = ExactComparator()
_, unmatched, expected_extra, actual_extra, errors = comparator.compare_datasets(
expected, actual
)
assert not unmatched, f"Datasets have unmatched items: {unmatched}"
assert not actual_extra, f"Actual has following extra items: {actual_extra}"
assert not expected_extra, f"Expected has following extra items: {expected_extra}"
assert not errors, f"There were following errors while comparing datasets: {errors}"
3 changes: 2 additions & 1 deletion cvat/apps/engine/tests/test_rest_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
from rest_framework import status
from rest_framework.test import APIClient

from datumaro.util.test_utils import current_function_name, TestDir
from cvat.apps.dataset_manager.tests.utils import TestDir
from cvat.apps.dataset_manager.util import current_function_name
from cvat.apps.engine.models import (AttributeSpec, AttributeType, Data, Job,
Project, Segment, StageChoice, StatusChoice, Task, Label, StorageMethodChoice,
StorageChoice, DimensionType, SortingMethod)
Expand Down
2 changes: 1 addition & 1 deletion cvat/apps/engine/tests/test_rest_api_3D.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
from django.contrib.auth.models import Group, User
from rest_framework import status

from cvat.apps.dataset_manager.tests.utils import TestDir
from cvat.apps.engine.media_extractors import ValidateDimension
from cvat.apps.dataset_manager.task import TaskAnnotation
from datumaro.util.test_utils import TestDir

from cvat.apps.engine.tests.utils import get_paginated_collection, ApiTestBase, ForceLogin

Expand Down

0 comments on commit 196acce

Please sign in to comment.