tests: updater, use dir helpers

This commit is contained in:
Mr. Outis
2019-12-12 18:59:52 -06:00
parent fd62ba840d
commit d0f3559d96
2 changed files with 39 additions and 74 deletions
-52
View File
@@ -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()
+39 -22
View File
@@ -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()