test262/tools/lint/lib/checks/flags.py

37 lines
1.2 KiB
Python

from ..check import Check
class CheckFlags(Check):
'''Ensure tests don't contain any contradicting or redundant flag combinations.'''
ID = 'FLAGS'
def run(self, name, meta, source):
if meta is None or meta.get('flags') is None:
return
flags = meta['flags']
onlyStrict = 'onlyStrict' in flags
noStrict = 'noStrict' in flags
module = 'module' in flags
raw = 'raw' in flags
canBlockIsFalse = 'CanBlockIsFalse' in flags
canBlockIsTrue = 'CanBlockIsTrue' in flags
if onlyStrict and noStrict:
return '"onlyStrict" and "noStrict" flags are mutually exclusive'
if canBlockIsFalse and canBlockIsTrue:
return '"CanBlockIsFalse" and "CanBlockIsTrue" flags are mutually exclusive'
if raw and onlyStrict:
return 'Raw tests cannot prepend a "use strict" directive'
if raw and noStrict:
return '"raw" flag implies no "use strict" directive should be prepended'
if module and onlyStrict:
return 'Module tests cannot be run in non-strict mode'
if module and noStrict:
return '"module" flag implies the test is run in strict mode'