diff --git a/dvc/analytics.py b/dvc/analytics.py index 7939ba5c3..2d0d328e7 100644 --- a/dvc/analytics.py +++ b/dvc/analytics.py @@ -6,6 +6,7 @@ import sys import uuid import distro +from voluptuous import Schema, Any from dvc import __version__ from dvc.config import Config, to_bool @@ -19,6 +20,18 @@ from dvc.utils.compat import str, FileNotFoundError, fspath_py35 logger = logging.getLogger(__name__) +report_schema = Schema( + { + "cmd_class": Any(str, None), + "cmd_return_code": Any(int, None), + "dvc_version": str, + "is_binary": bool, + "scm_class": Any("Git", None), + "user_id": str, + "system_info": dict, + } +) + def collect(args=None, return_code=None): """ diff --git a/tests/unit/test_analytics.py b/tests/unit/test_analytics.py index b54b8132e..953a681a3 100644 --- a/tests/unit/test_analytics.py +++ b/tests/unit/test_analytics.py @@ -19,14 +19,7 @@ def tmp_global_config(tmp_path): def test_collect(tmp_global_config): report = analytics.collect(return_code=0) - - assert report["cmd_return_code"] == 0 - assert report["scm_class"] in ["Git", None] - assert not report["cmd_class"] - assert type(report["is_binary"]) is bool - assert type(report["system_info"]) is dict - assert type(report["dvc_version"]) is builtin_str - assert type(report["user_id"]) is str + assert analytics.report_schema(report) @mock.patch("requests.post")