| Index: tools/json_schema_compiler/feature_compiler_test.py
|
| diff --git a/tools/json_schema_compiler/feature_compiler_test.py b/tools/json_schema_compiler/feature_compiler_test.py
|
| index 6b39271d266c0fb267615e1472ab493763b6d987..17e5dede357b3ba3fe77a70df4fef6116a699796 100755
|
| --- a/tools/json_schema_compiler/feature_compiler_test.py
|
| +++ b/tools/json_schema_compiler/feature_compiler_test.py
|
| @@ -19,11 +19,16 @@ class FeatureCompilerTest(unittest.TestCase):
|
| f.Parse(value)
|
| return f
|
|
|
| + def _createTestFeatureCompiler(self, feature_class):
|
| + return feature_compiler.FeatureCompiler('chrome_root', [], feature_class,
|
| + 'provider_class', 'out_root', 'out_base_filename')
|
| +
|
| def _hasError(self, f, error):
|
| """Asserts that |error| is present somewhere in the given feature's
|
| errors."""
|
| - self.assertTrue(f.errors)
|
| - self.assertNotEqual(-1, str(f.errors).find(error), str(f.errors))
|
| + errors = f.GetErrors()
|
| + self.assertTrue(errors)
|
| + self.assertNotEqual(-1, str(errors).find(error), str(errors))
|
|
|
| def setUp(self):
|
| feature_compiler.ENABLE_ASSERTIONS = False
|
| @@ -32,6 +37,7 @@ class FeatureCompilerTest(unittest.TestCase):
|
| def testFeature(self):
|
| # Test some basic feature parsing for a sanity check.
|
| f = self._parseFeature({
|
| + 'alias': 'feature',
|
| 'blacklist': ['aaa', 'bbb'],
|
| 'channel': 'stable',
|
| 'command_line_switch': 'switch',
|
| @@ -47,9 +53,10 @@ class FeatureCompilerTest(unittest.TestCase):
|
| 'noparent': True,
|
| 'platforms': ['mac', 'win'],
|
| 'session_types': ['kiosk', 'regular'],
|
| + 'source': 'feature',
|
| 'whitelist': ['zzz', 'yyy']
|
| })
|
| - self.assertFalse(f.errors)
|
| + self.assertFalse(f.GetErrors())
|
|
|
| def testInvalidAll(self):
|
| f = self._parseFeature({
|
| @@ -136,13 +143,120 @@ class FeatureCompilerTest(unittest.TestCase):
|
| channel_feature = self._parseFeature({'contexts': ['blessed_extension'],
|
| 'channel': 'trunk'})
|
| channel_feature.Validate('APIFeature')
|
| - self.assertFalse(channel_feature.errors)
|
| + self.assertFalse(channel_feature.GetErrors())
|
| dependency_feature = self._parseFeature(
|
| {'contexts': ['blessed_extension'],
|
| 'dependencies': ['alpha']})
|
| dependency_feature.Validate('APIFeature')
|
| - self.assertFalse(dependency_feature.errors)
|
| + self.assertFalse(dependency_feature.GetErrors())
|
| +
|
| + def testAliasInComplexFeature(self):
|
| + compiler = self._createTestFeatureCompiler('APIFeature')
|
| + compiler._CompileFeature('feature_alpha', [{
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'alias': 'feature_beta'
|
| + }, {
|
| + 'contexts': ['blessed_extension'],
|
| + 'channel': 'beta'
|
| + }]);
|
| + feature = compiler._features.get('feature_alpha')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + def testMultipleAliasesInComplexFeature(self):
|
| + compiler = self._createTestFeatureCompiler('APIFeature')
|
| + compiler._CompileFeature('feature_alpha', [{
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'alias': 'feature_beta'
|
| + }, {
|
| + 'contexts': ['blessed_extension'],
|
| + 'channel': 'beta',
|
| + 'alias': 'feature_beta'
|
| + }]);
|
| + feature = compiler._features.get('feature_alpha')
|
| + self.assertTrue(feature)
|
| + self._hasError(feature, 'Error parsing feature "feature_alpha" at key ' +
|
| + '"alias": Key can be set at most once per feature.')
|
| +
|
| + def testAliasReferenceInComplexFeature(self):
|
| + compiler = self._createTestFeatureCompiler('APIFeature')
|
| + compiler._CompileFeature('feature_alpha', [{
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'alias': 'feature_beta'
|
| + }, {
|
| + 'contexts': ['blessed_extension'],
|
| + 'channel': 'beta',
|
| + }]);
|
| + compiler._CompileFeature('feature_beta', {
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'source': 'feature_alpha'
|
| + });
|
| +
|
| + feature = compiler._features.get('feature_alpha')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature.ValidateFeatureReferences(compiler._features)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature = compiler._features.get('feature_beta')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature.ValidateFeatureReferences(compiler._features)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| +
|
| + def testAliasMissingReferenceInComplexFeature(self):
|
| + compiler = self._createTestFeatureCompiler('APIFeature')
|
| + compiler._CompileFeature('feature_alpha', [{
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'alias': 'feature_beta'
|
| + }, {
|
| + 'contexts': ['blessed_extension'],
|
| + 'channel': 'beta',
|
| + }]);
|
| +
|
| + feature = compiler._features.get('feature_alpha')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature.ValidateFeatureReferences(compiler._features)
|
| + self._hasError(feature, 'Error parsing feature "feature_alpha" at key ' +
|
| + '"alias": feature_beta is not a feature.')
|
| +
|
| + def testAliasReferenceMissingSourceInComplexFeature(self):
|
| + compiler = self._createTestFeatureCompiler('APIFeature')
|
| + compiler._CompileFeature('feature_alpha', {
|
| + 'contexts': ['blessed_extension'],
|
| + 'channel': 'beta',
|
| + });
|
| + compiler._CompileFeature('feature_beta', {
|
| + 'channel': 'beta',
|
| + 'contexts': ['blessed_extension'],
|
| + 'alias': 'feature_alpha'
|
| + });
|
| +
|
| + feature = compiler._features.get('feature_alpha')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature.ValidateFeatureReferences(compiler._features)
|
| + self.assertFalse(feature.GetErrors())
|
| +
|
| + feature = compiler._features.get('feature_beta')
|
| + self.assertTrue(feature)
|
| + self.assertFalse(feature.GetErrors())
|
|
|
| + feature.ValidateFeatureReferences(compiler._features)
|
| + self._hasError(feature, 'Error parsing feature "feature_beta" at key ' +
|
| + '"alias": Referenced feature ("feature_alpha") ' +
|
| + 'should have "source" set to "feature_beta".')
|
|
|
| if __name__ == '__main__':
|
| unittest.main()
|
|
|