diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 0d2f3673..d507d7e9 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1131,7 +1131,7 @@ class TaskViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, get_data=dm.task.get_task_data, ) else: - return Response(data="Exporting a task without data is not allowed", + return Response(data="Exporting annotations from a task without data is not allowed", status=status.HTTP_400_BAD_REQUEST) elif request.method == 'POST' or request.method == 'OPTIONS': return self.import_annotations( @@ -1311,7 +1311,7 @@ class TaskViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, export_func=_export_annotations, callback=dm.views.export_task_as_dataset) else: - return Response(data="Exporting a task without data is not allowed", + return Response(data="Exporting a dataset from a task without data is not allowed", status=status.HTTP_400_BAD_REQUEST) @extend_schema(tags=['jobs']) diff --git a/tests/cypress/support/commands_canvas3d.js b/tests/cypress/support/commands_canvas3d.js index 3abcccae..3343429e 100644 --- a/tests/cypress/support/commands_canvas3d.js +++ b/tests/cypress/support/commands_canvas3d.js @@ -1,12 +1,19 @@ // Copyright (C) 2021-2022 Intel Corporation +// Copyright (C) 2022 CVAT.ai Corporation // // SPDX-License-Identifier: MIT +/* eslint-disable cypress/no-unnecessary-waiting */ + /// Cypress.Commands.add('compareImagesAndCheckResult', (baseImage, afterImage, noChangesExpected) => { cy.compareImages(baseImage, afterImage).then((diffPercent) => { - noChangesExpected ? expect(diffPercent).to.be.lt(0.01) : expect(diffPercent).to.be.gt(0); + if (noChangesExpected) { + expect(diffPercent).to.be.lt(0.02); + } else { + expect(diffPercent).to.be.gt(0); + } }); }); @@ -31,5 +38,5 @@ Cypress.Commands.add('customScreenshot', (element, screenshotName) => { getEl = cy.get(element).find('.cvat-canvas3d-fullsize'); padding = -40; } - getEl.screenshot(screenshotName, {padding: padding}); + getEl.screenshot(screenshotName, { padding }); }); diff --git a/tests/python/rest_api/test_jobs.py b/tests/python/rest_api/test_jobs.py index 1246b40d..0a8bb53c 100644 --- a/tests/python/rest_api/test_jobs.py +++ b/tests/python/rest_api/test_jobs.py @@ -153,7 +153,6 @@ class TestGetAnnotations: assert response.status == HTTPStatus.OK response_data = json.loads(response.data) - response_data["shapes"] = sorted(response_data["shapes"], key=lambda a: a["id"]) assert ( DeepDiff(data, response_data, exclude_regex_paths=r"root\['version|updated_date'\]") == {} diff --git a/tests/python/rest_api/test_tasks.py b/tests/python/rest_api/test_tasks.py index af7591d5..e85d8688 100644 --- a/tests/python/rest_api/test_tasks.py +++ b/tests/python/rest_api/test_tasks.py @@ -375,7 +375,7 @@ class TestPatchTaskAnnotations: ): users = find_users(role=role, org=org) tasks = tasks_by_org[org] - username, tid = find_task_staff_user(tasks, users, task_staff, [14]) + username, tid = find_task_staff_user(tasks, users, task_staff, [12, 14]) data = request_data(tid) with make_api_client(username) as api_client: diff --git a/tests/python/shared/assets/annotations.json b/tests/python/shared/assets/annotations.json index f2a7dbe4..7cc496b2 100644 --- a/tests/python/shared/assets/annotations.json +++ b/tests/python/shared/assets/annotations.json @@ -1109,12 +1109,6 @@ "tracks": [], "version": 0 }, - "12": { - "shapes": [], - "tags": [], - "tracks": [], - "version": 0 - }, "13": { "shapes": [ { diff --git a/tests/python/shared/assets/jobs.json b/tests/python/shared/assets/jobs.json index 2df47bfa..627bd290 100644 --- a/tests/python/shared/assets/jobs.json +++ b/tests/python/shared/assets/jobs.json @@ -38,7 +38,7 @@ "status": "annotation", "stop_frame": 24, "task_id": 15, - "updated_date": "2022-12-01T12:53:35.354431Z", + "updated_date": "2022-12-01T12:53:35.354000Z", "url": "http://localhost:8080/api/jobs/19" }, { diff --git a/tests/python/shared/assets/projects.json b/tests/python/shared/assets/projects.json index c21987f2..482b983a 100644 --- a/tests/python/shared/assets/projects.json +++ b/tests/python/shared/assets/projects.json @@ -6,7 +6,7 @@ { "assignee": null, "bug_tracker": "", - "created_date": "2022-12-01T12:52:42.454308Z", + "created_date": "2022-12-01T12:52:42.454000Z", "dimension": "2d", "id": 8, "labels": [ @@ -53,7 +53,7 @@ "tasks": [ 15 ], - "updated_date": "2022-12-01T12:53:34.917451Z", + "updated_date": "2022-12-01T12:53:34.917000Z", "url": "http://localhost:8080/api/projects/8" }, { diff --git a/tests/python/shared/assets/tasks.json b/tests/python/shared/assets/tasks.json index 4a2113bb..d04e65d4 100644 --- a/tests/python/shared/assets/tasks.json +++ b/tests/python/shared/assets/tasks.json @@ -6,7 +6,7 @@ { "assignee": null, "bug_tracker": "", - "created_date": "2022-12-01T12:53:10.425141Z", + "created_date": "2022-12-01T12:53:10.425000Z", "data": 14, "data_chunk_size": 72, "data_compressed_chunk_type": "imageset", @@ -76,7 +76,7 @@ "id": 16, "location": "local" }, - "updated_date": "2022-12-01T12:53:35.028385Z", + "updated_date": "2022-12-01T12:53:35.028000Z", "url": "http://localhost:8080/api/tasks/15" }, { diff --git a/tests/python/shared/assets/users.json b/tests/python/shared/assets/users.json index bfd9abd5..af5d8066 100644 --- a/tests/python/shared/assets/users.json +++ b/tests/python/shared/assets/users.json @@ -310,7 +310,7 @@ "is_active": true, "is_staff": true, "is_superuser": true, - "last_login": "2022-12-01T12:52:15.631928Z", + "last_login": "2022-12-01T12:52:15.631000Z", "last_name": "First", "url": "http://localhost:8080/api/users/1", "username": "admin1" diff --git a/tests/python/shared/fixtures/data.py b/tests/python/shared/fixtures/data.py index 18b9c0f3..4f18cdd5 100644 --- a/tests/python/shared/fixtures/data.py +++ b/tests/python/shared/fixtures/data.py @@ -350,7 +350,7 @@ def find_issue_staff_user(is_issue_staff, is_issue_admin): @pytest.fixture(scope="session") def filter_jobs_with_shapes(annotations): def find(jobs): - return list(filter(lambda j: annotations["job"][str(j["id"])]["shapes"], jobs)) + return list(filter(lambda j: annotations["job"].get(str(j["id"]), {}).get("shapes"), jobs)) return find @@ -358,7 +358,9 @@ def filter_jobs_with_shapes(annotations): @pytest.fixture(scope="session") def filter_tasks_with_shapes(annotations): def find(tasks): - return list(filter(lambda t: annotations["task"][str(t["id"])]["shapes"], tasks)) + return list( + filter(lambda t: annotations["task"].get(str(t["id"]), {}).get("shapes"), tasks) + ) return find diff --git a/tests/python/shared/utils/dump_objects.py b/tests/python/shared/utils/dump_objects.py index 7a1bbc6a..fb9b2fca 100644 --- a/tests/python/shared/utils/dump_objects.py +++ b/tests/python/shared/utils/dump_objects.py @@ -4,6 +4,7 @@ import json import os.path as osp +from http import HTTPStatus from config import ASSETS_DIR, get_method @@ -31,7 +32,8 @@ if __name__ == "__main__": for _obj in response.json()["results"]: oid = _obj["id"] response = get_method("admin1", f"{obj}s/{oid}/annotations") - annotations[obj][oid] = response.json() + if response.status_code == HTTPStatus.OK: + annotations[obj][oid] = response.json() with open(osp.join(ASSETS_DIR, f"annotations.json"), "w") as f: json.dump(annotations, f, indent=2, sort_keys=True)