interpreterbase: Allow passing an extra message in feature/deprecation warnings

The intended use it to tell people the new thing to do.
pull/7152/head
Dylan Baker 5 years ago
parent 93dc9cfcc3
commit 4e9e35f3bd
  1. 26
      mesonbuild/interpreterbase.py
  2. 1
      run_project_tests.py
  3. 2
      test cases/warning/1 version for string div/test.json

@ -220,9 +220,10 @@ class FeatureCheckBase(metaclass=abc.ABCMeta):
# This will be overwritten by the subclasses by necessity
feature_registry = {} # type: T.ClassVar[T.Dict[str, T.Dict[str, T.Set[str]]]]
def __init__(self, feature_name: str, version: str):
def __init__(self, feature_name: str, version: str, extra_message: T.Optional[str] = None):
self.feature_name = feature_name # type: str
self.feature_version = version # type: str
self.extra_message = extra_message or '' # type: str
@staticmethod
def get_target_version(subproject: str) -> str:
@ -302,8 +303,15 @@ class FeatureNew(FeatureCheckBase):
return 'Project specifies a minimum meson_version \'{}\' but uses features which were added in newer versions:'.format(tv)
def log_usage_warning(self, tv: str) -> None:
mlog.warning('Project targeting \'{}\' but tried to use feature introduced '
'in \'{}\': {}'.format(tv, self.feature_version, self.feature_name))
args = [
'Project targeting', "'{}'".format(tv),
'but tried to use feature introduced in',
"'{}':".format(self.feature_version),
'{}.'.format(self.feature_name),
]
if self.extra_message:
args.append(self.extra_message)
mlog.warning(*args)
class FeatureDeprecated(FeatureCheckBase):
"""Checks for deprecated features"""
@ -323,9 +331,15 @@ class FeatureDeprecated(FeatureCheckBase):
return 'Deprecated features used:'
def log_usage_warning(self, tv: str) -> None:
mlog.deprecation('Project targeting \'{}\' but tried to use feature '
'deprecated since \'{}\': {}'
''.format(tv, self.feature_version, self.feature_name))
args = [
'Project targeting', "'{}'".format(tv),
'but tried to use feature deprecated since',
"'{}':".format(self.feature_version),
'{}.'.format(self.feature_name),
]
if self.extra_message:
args.append(self.extra_message)
mlog.warning(*args)
class FeatureCheckKwargsBase:

@ -417,6 +417,7 @@ def _compare_output(expected: T.List[T.Dict[str, str]], output: str, desc: str)
match = bool(re.match(expected, actual))
else:
match = (expected == actual)
print(actual)
if match:
how, expected = next_expected(i)

@ -2,7 +2,7 @@
"stdout": [
{
"comment": "literal '/' appears in output, irrespective of os.path.sep, as that's the operator",
"line": "WARNING: Project targeting '>=0.48.0' but tried to use feature introduced in '0.49.0': / with string arguments"
"line": "WARNING: Project targeting '>=0.48.0' but tried to use feature introduced in '0.49.0': / with string arguments."
}
]
}

Loading…
Cancel
Save