mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-24 18:52:25 +08:00
Use click instead of flask script
This commit is contained in:
@@ -6,10 +6,9 @@ import logging
|
||||
from mock import patch
|
||||
import pytest
|
||||
|
||||
from module_build_service import app
|
||||
from module_build_service import app, manage as mbs_manager
|
||||
from module_build_service.common import models
|
||||
from module_build_service.common.models import BUILD_STATES, ModuleBuild
|
||||
from module_build_service.manage import manager_wrapper, retire
|
||||
from module_build_service.scheduler.db_session import db_session
|
||||
from module_build_service.web.utils import deps_to_dict
|
||||
from tests import clean_database, staged_data_filename
|
||||
@@ -31,10 +30,12 @@ class TestMBSManage:
|
||||
)
|
||||
def test_retire_identifier_validation(self, identifier, is_valid):
|
||||
if is_valid:
|
||||
retire(identifier)
|
||||
with pytest.raises(SystemExit) as exc_info:
|
||||
mbs_manager.cli(["retire", identifier])
|
||||
assert 0 == exc_info
|
||||
else:
|
||||
with pytest.raises(ValueError):
|
||||
retire(identifier)
|
||||
mbs_manager.cli(["retire", identifier])
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("overrides", "identifier", "changed_count"),
|
||||
@@ -48,9 +49,9 @@ class TestMBSManage:
|
||||
({"context": "pickme"}, "spam:eggs:ham", 2),
|
||||
),
|
||||
)
|
||||
@patch("module_build_service.manage.prompt_bool")
|
||||
def test_retire_build(self, prompt_bool, overrides, identifier, changed_count):
|
||||
prompt_bool.return_value = True
|
||||
@patch("click.confirm")
|
||||
def test_retire_build(self, confirm, overrides, identifier, changed_count):
|
||||
confirm.return_value = True
|
||||
|
||||
module_builds = (
|
||||
db_session.query(ModuleBuild)
|
||||
@@ -72,7 +73,10 @@ class TestMBSManage:
|
||||
|
||||
db_session.commit()
|
||||
|
||||
retire(identifier)
|
||||
with pytest.raises(SystemExit) as exc_info:
|
||||
mbs_manager.cli(["retire", identifier])
|
||||
assert 0 == exc_info.value
|
||||
|
||||
retired_module_builds = (
|
||||
db_session.query(ModuleBuild)
|
||||
.filter_by(state=BUILD_STATES["garbage"])
|
||||
@@ -94,11 +98,11 @@ class TestMBSManage:
|
||||
(False, True, True)
|
||||
),
|
||||
)
|
||||
@patch("module_build_service.manage.prompt_bool")
|
||||
@patch("click.confirm")
|
||||
def test_retire_build_confirm_prompt(
|
||||
self, prompt_bool, confirm_prompt, confirm_arg, confirm_expected
|
||||
self, confirm, confirm_prompt, confirm_arg, confirm_expected
|
||||
):
|
||||
prompt_bool.return_value = confirm_prompt
|
||||
confirm.return_value = confirm_prompt
|
||||
|
||||
module_builds = db_session.query(ModuleBuild).filter_by(state=BUILD_STATES["ready"]).all()
|
||||
# Verify our assumption of the amount of ModuleBuilds in database
|
||||
@@ -107,15 +111,17 @@ class TestMBSManage:
|
||||
for x, build in enumerate(module_builds):
|
||||
build.name = "spam" + str(x) if x > 0 else "spam"
|
||||
build.stream = "eggs"
|
||||
|
||||
db_session.commit()
|
||||
|
||||
retire("spam:eggs", confirm_arg)
|
||||
cmd = ["retire", "spam:eggs"] + (["--confirm"] if confirm_arg else [])
|
||||
with pytest.raises(SystemExit) as exc_info:
|
||||
mbs_manager.cli(cmd)
|
||||
assert 0 == exc_info.value
|
||||
|
||||
expected_changed_count = 1 if confirm_expected else 0
|
||||
retired_module_builds = (
|
||||
db_session.query(ModuleBuild).filter_by(state=BUILD_STATES["garbage"]).all()
|
||||
)
|
||||
|
||||
expected_changed_count = 1 if confirm_expected else 0
|
||||
assert len(retired_module_builds) == expected_changed_count
|
||||
|
||||
|
||||
@@ -157,7 +163,7 @@ class TestCommandBuildModuleLocally:
|
||||
original_db_uri = app.config["SQLALCHEMY_DATABASE_URI"]
|
||||
try:
|
||||
with patch("sys.argv", new=cli_cmd):
|
||||
manager_wrapper()
|
||||
mbs_manager.cli()
|
||||
finally:
|
||||
app.config["SQLALCHEMY_DATABASE_URI"] = original_db_uri
|
||||
|
||||
|
||||
Reference in New Issue
Block a user