From d0f3559d9669194084820a4df2e7b2ed3264d35b Mon Sep 17 00:00:00 2001 From: "Mr. Outis" Date: Thu, 12 Dec 2019 18:57:45 -0600 Subject: [PATCH] tests: updater, use dir helpers --- tests/func/test_updater.py | 52 -------------------------------- tests/unit/test_updater.py | 61 ++++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 74 deletions(-) diff --git a/tests/func/test_updater.py b/tests/func/test_updater.py index 4045c0ca6..e69de29bb 100644 --- a/tests/func/test_updater.py +++ b/tests/func/test_updater.py @@ -1,52 +0,0 @@ -import os - -import mock -import pytest - -from dvc.updater import Updater - - -@pytest.fixture -def updater(dvc_repo): - return Updater(dvc_repo.dvc_dir) - - -def test_updater(updater): - # NOTE: only test on travis CRON to avoid generating too much logs - travis = os.getenv("TRAVIS") == "true" - if not travis: - return - - cron = os.getenv("TRAVIS_EVENT_TYPE") == "cron" - if not cron: - return - - env = os.environ.copy() - if env.get("CI"): - del env["CI"] - - with mock.patch.dict(os.environ, env): - updater.check() - updater.check() - updater.check() - - -def test_check_version_newer(updater): - updater.latest = "0.20.8" - updater.current = "0.21.0" - - assert not updater._is_outdated() - - -def test_check_version_equal(updater): - updater.latest = "0.20.8" - updater.current = "0.20.8" - - assert not updater._is_outdated() - - -def test_check_version_outdated(updater): - updater.latest = "0.21.0" - updater.current = "0.20.8" - - assert updater._is_outdated() diff --git a/tests/unit/test_updater.py b/tests/unit/test_updater.py index c8a0ee2de..89ffc3236 100644 --- a/tests/unit/test_updater.py +++ b/tests/unit/test_updater.py @@ -1,40 +1,57 @@ import json import os +import mock +import pytest from dvc import __version__ from dvc.updater import Updater -class MockResponse(object): - def __init__(self, json_data, status_code): - self.json_data = json_data - self.status_code = status_code - - def json(self): - return self.json_data +@pytest.fixture +def updater(dvc): + return Updater(dvc.dvc_dir) -def mocked_requests_get(*args, **kwargs): - class MockResponse: - def __init__(self, json_data, status_code): - self.json_data = json_data - self.status_code = status_code +@mock.patch("requests.get") +def test_fetch(mock_get, updater): + mock_get.return_value.status_code = 200 + mock_get.return_value.json.return_value = {"version": __version__} - def json(self): - return self.json_data - - return MockResponse({"version": __version__}, 200) - - -def test_fetch(dvc_repo, mocker): - updater = Updater(dvc_repo.dvc_dir) assert not os.path.exists(updater.updater_file) - mock_get = mocker.patch("requests.get", side_effect=mocked_requests_get) updater.fetch(detach=False) - mock_get.assert_called_once_with(Updater.URL, timeout=Updater.TIMEOUT_GET) + mock_get.assert_called_once_with(Updater.URL, timeout=Updater.TIMEOUT_GET) assert os.path.isfile(updater.updater_file) + with open(updater.updater_file, "r") as fobj: info = json.load(fobj) + assert info["version"] == __version__ + + +@pytest.mark.parametrize( + "latest, current, result", + [ + ("0.20.8", "0.21.0", False), + ("0.20.8", "0.20.8", False), + ("0.20.8", "0.19.0", True), + ], +) +def test_is_outdated(latest, current, result, updater): + updater.latest = latest + updater.current = current + + assert updater._is_outdated() == result + + +def test_check(updater, monkeypatch): + # NOTE: only test on travis CRON to avoid generating too much logs + if not os.getenv("TRAVIS_EVENT_TYPE") == "cron": + return + + monkeypatch.delenv("CI") + + updater.check() + updater.check() + updater.check()