Replace Callable with log_level

This allows the caller to pass a log level to the suggestions printer,
rather than a Callable.
This commit is contained in:
David Dalcino
2021-07-18 18:40:32 -07:00
parent 7b6af69645
commit bf196bb0ba
2 changed files with 19 additions and 19 deletions

View File

@@ -20,6 +20,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
import itertools import itertools
import logging
import operator import operator
import posixpath import posixpath
import random import random
@@ -717,11 +718,12 @@ def suggested_follow_up(meta: MetadataFactory) -> List[str]:
return msg return msg
def show_suggestion(suggestions: List[str], printer: Callable[[str], None]): def log_suggested_follow_up(suggestions: List[str], log_level: int):
if suggestions: if suggestions:
printer("=" * 30 + "Suggested follow-up:" + "=" * 30) logger = getLogger("aqt.metadata")
logger.log(log_level, "=" * 30 + "Suggested follow-up:" + "=" * 30)
for suggestion in suggestions: for suggestion in suggestions:
printer("* " + suggestion) logger.log(log_level, "* " + suggestion)
def show_list(meta: MetadataFactory) -> int: def show_list(meta: MetadataFactory) -> int:
@@ -730,7 +732,7 @@ def show_list(meta: MetadataFactory) -> int:
output = meta.getList() output = meta.getList()
if not output: if not output:
logger.info("No {} available for this request.".format(meta.request_type)) logger.info("No {} available for this request.".format(meta.request_type))
show_suggestion(suggested_follow_up(meta), logger.info) log_suggested_follow_up(suggested_follow_up(meta), logging.INFO)
return 1 return 1
if isinstance(output, Versions): if isinstance(output, Versions):
print(format(output)) print(format(output))
@@ -752,5 +754,5 @@ def show_list(meta: MetadataFactory) -> int:
return 1 return 1
except (ArchiveConnectionError, ArchiveDownloadError) as e: except (ArchiveConnectionError, ArchiveDownloadError) as e:
logger.error("{}".format(e)) logger.error("{}".format(e))
show_suggestion(suggested_follow_up(meta), logger.error) log_suggested_follow_up(suggested_follow_up(meta), logging.ERROR)
return 1 return 1

View File

@@ -1,4 +1,5 @@
import json import json
import logging
import re import re
import sys import sys
from pathlib import Path from pathlib import Path
@@ -6,6 +7,7 @@ from typing import Generator
import pytest import pytest
from aqt.helper import setup_logging
from aqt.installer import Cli from aqt.installer import Cli
from aqt.metadata import ( from aqt.metadata import (
ArchiveId, ArchiveId,
@@ -13,7 +15,7 @@ from aqt.metadata import (
SimpleSpec, SimpleSpec,
Version, Version,
Versions, Versions,
show_suggestion, log_suggested_follow_up,
suggested_follow_up, suggested_follow_up,
) )
@@ -457,21 +459,17 @@ def test_suggested_follow_up(meta: MetadataFactory, expected_message: str):
assert suggested_follow_up(meta) == expected_message assert suggested_follow_up(meta) == expected_message
def test_show_suggestion(): def test_log_suggested_follow_up(caplog, monkeypatch):
suggestions = [ suggestions = [
"Please use 'aqt list tools mac desktop --extensions <QT_VERSION>' to list valid extensions.", "Please use 'aqt list tools mac desktop --extensions <QT_VERSION>' to list valid extensions.",
"Please use 'aqt list tools mac desktop' to check what tools are available.", "Please use 'aqt list tools mac desktop' to check what tools are available.",
] ]
expected = ( expected = [
"==============================Suggested follow-up:==============================\n" "==============================Suggested follow-up:==============================",
"* Please use 'aqt list tools mac desktop --extensions <QT_VERSION>' to list valid extensions.\n" "* Please use 'aqt list tools mac desktop --extensions <QT_VERSION>' to list valid extensions.",
"* Please use 'aqt list tools mac desktop' to check what tools are available.\n" "* Please use 'aqt list tools mac desktop' to check what tools are available.",
) ]
output = [""] log_suggested_follow_up(suggestions, logging.ERROR)
actual = [rec.message for rec in caplog.records]
def outputter(msg: str) -> None: assert actual == expected
output[0] = output[0] + msg + "\n"
show_suggestion(suggestions, outputter)
assert output[0] == expected