mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-10 15:28:34 +01:00
tests: updater, use dir helpers
This commit is contained in:
@@ -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
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user