mirror of https://github.com/tc39/test262.git
37 lines
1.2 KiB
Python
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'
|