86 lines
2.8 KiB
Python
86 lines
2.8 KiB
Python
import os
|
|
from unittest.mock import patch, MagicMock
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
from vrobbler.context_processors import version_info
|
|
|
|
|
|
@pytest.fixture
|
|
def mock_request():
|
|
return MagicMock()
|
|
|
|
|
|
class TestVersionInfo:
|
|
def test_returns_version_and_commit(self, mock_request):
|
|
with (
|
|
patch("vrobbler.context_processors.get_version") as mock_get_version,
|
|
patch(
|
|
"vrobbler.context_processors.subprocess.check_output"
|
|
) as mock_check_output,
|
|
):
|
|
mock_get_version.return_value = "1.0.0"
|
|
mock_check_output.return_value = b"abc1234"
|
|
|
|
result = version_info(mock_request)
|
|
|
|
assert result["app_version"] == "1.0.0"
|
|
assert result["git_commit"] == "abc1234"
|
|
|
|
def test_uses_env_commit_if_set(self, mock_request):
|
|
with (
|
|
patch.dict(os.environ, {"VROBBLER_COMMIT": "env_commit_hash"}),
|
|
patch("vrobbler.context_processors.get_version") as mock_get_version,
|
|
):
|
|
mock_get_version.return_value = "1.0.0"
|
|
|
|
result = version_info(mock_request)
|
|
|
|
assert result["git_commit"] == "env_commit_hash"
|
|
|
|
def test_returns_unknown_when_version_fails(self, mock_request):
|
|
with (
|
|
patch("vrobbler.context_processors.get_version") as mock_get_version,
|
|
patch(
|
|
"vrobbler.context_processors.subprocess.check_output"
|
|
) as mock_check_output,
|
|
):
|
|
mock_get_version.side_effect = Exception("not found")
|
|
mock_check_output.return_value = b"abc1234"
|
|
|
|
result = version_info(mock_request)
|
|
|
|
assert result["app_version"] == "unknown"
|
|
|
|
def test_returns_unknown_when_git_fails(self, mock_request):
|
|
import subprocess
|
|
|
|
with (
|
|
patch("vrobbler.context_processors.get_version") as mock_get_version,
|
|
patch(
|
|
"vrobbler.context_processors.subprocess.check_output"
|
|
) as mock_check_output,
|
|
):
|
|
mock_get_version.return_value = "1.0.0"
|
|
mock_check_output.side_effect = subprocess.SubprocessError()
|
|
|
|
result = version_info(mock_request)
|
|
|
|
assert result["git_commit"] == "unknown"
|
|
|
|
def test_returns_unknown_when_git_not_found(self, mock_request):
|
|
import subprocess
|
|
|
|
with (
|
|
patch("vrobbler.context_processors.get_version") as mock_get_version,
|
|
patch(
|
|
"vrobbler.context_processors.subprocess.check_output"
|
|
) as mock_check_output,
|
|
):
|
|
mock_get_version.return_value = "1.0.0"
|
|
mock_check_output.side_effect = FileNotFoundError()
|
|
|
|
result = version_info(mock_request)
|
|
|
|
assert result["git_commit"] == "unknown"
|