from ..check import Check class CheckFeatures(Check): '''Ensure tests specify only `features` from a list of valid values.''' ID = 'FEATURES' def __init__(self, filename): with open(filename, 'r') as f: self.valid_features = self._parse(f.read()) @staticmethod def _parse(content): features = [] for line in content.split(): if not line or line.startswith('#'): continue features.append(line) return features def run(self, name, meta, source): if not meta or 'features' not in meta: return features = meta['features'] if len(features) == 0: return 'If present, the `features` tag must have at least one member' for feature in features: if feature not in self.valid_features: return 'Unrecognized feature: "%s"' % feature