Example #1
0
    def testAliasedIdentifiers(self):
        start_token = testutil.TokenizeSourceAndRunEcmaPass(_TEST_ALIAS_SCRIPT)
        alias_pass = aliaspass.AliasPass(set(['goog', 'myproject']))
        alias_pass.Process(start_token)

        alias_token = _GetTokenByLineAndString(start_token, 'Event', 4)
        self.assertTrue(alias_token.metadata.is_alias_definition)

        my_class_token = _GetTokenByLineAndString(start_token, 'myClass', 8)
        self.assertIsNone(my_class_token.metadata.aliased_symbol)

        component_token = _GetTokenByLineAndString(start_token, 'Component',
                                                   16)
        self.assertEquals('goog.ui.Component',
                          component_token.metadata.aliased_symbol)

        event_token = _GetTokenByLineAndString(start_token, 'Event.Something',
                                               16)
        self.assertEquals('goog.events.Event.Something',
                          event_token.metadata.aliased_symbol)

        non_closurized_token = _GetTokenByLineAndString(
            start_token, 'NonClosurizedClass', 17)
        self.assertIsNone(non_closurized_token.metadata.aliased_symbol)

        long_start_token = _GetTokenByLineAndString(start_token, 'Event.', 20)
        self.assertEquals('goog.events.Event.MultilineIdentifier.someMethod',
                          long_start_token.metadata.aliased_symbol)
Example #2
0
    def testMultipleGoogScopeCalls(self):
        start_token = testutil.TokenizeSourceAndRunEcmaPass(
            _TEST_MULTIPLE_SCOPE_SCRIPT)

        error_accumulator = erroraccumulator.ErrorAccumulator()

        alias_pass = aliaspass.AliasPass(set(['goog', 'myproject']),
                                         error_handler=error_accumulator)
        alias_pass.Process(start_token)

        alias_errors = error_accumulator.GetErrors()

        self.assertEquals(3, len(alias_errors))

        error = alias_errors[0]
        self.assertEquals(errors.INVALID_USE_OF_GOOG_SCOPE, error.code)
        self.assertEquals(7, error.token.line_number)

        error = alias_errors[1]
        self.assertEquals(errors.EXTRA_GOOG_SCOPE_USAGE, error.code)
        self.assertEquals(7, error.token.line_number)

        error = alias_errors[2]
        self.assertEquals(errors.EXTRA_GOOG_SCOPE_USAGE, error.code)
        self.assertEquals(11, error.token.line_number)
Example #3
0
    def testInvalidGoogScopeCall(self):
        start_token = testutil.TokenizeSourceAndRunEcmaPass(_TEST_SCOPE_SCRIPT)

        error_accumulator = erroraccumulator.ErrorAccumulator()
        alias_pass = aliaspass.AliasPass(error_handler=error_accumulator)
        alias_pass.Process(start_token)

        alias_errors = error_accumulator.GetErrors()
        self.assertEquals(1, len(alias_errors))

        alias_error = alias_errors[0]

        self.assertEquals(errors.INVALID_USE_OF_GOOG_SCOPE, alias_error.code)
        self.assertEquals('goog.scope', alias_error.token.string)
    def _GetInitializedNamespacesInfo(self, token, closurized_namespaces,
                                      ignored_extra_namespaces):
        """Returns a namespaces info initialized with the given token stream."""
        namespaces_info = closurizednamespacesinfo.ClosurizedNamespacesInfo(
            closurized_namespaces=closurized_namespaces,
            ignored_extra_namespaces=ignored_extra_namespaces)
        state_tracker = javascriptstatetracker.JavaScriptStateTracker()

        ecma_pass = ecmametadatapass.EcmaMetaDataPass()
        ecma_pass.Process(token)

        alias_pass = aliaspass.AliasPass(closurized_namespaces)
        alias_pass.Process(token)

        while token:
            state_tracker.HandleToken(token,
                                      state_tracker.GetLastNonSpaceToken())
            namespaces_info.ProcessToken(token, state_tracker)
            state_tracker.HandleAfterToken(token)
            token = token.next

        return namespaces_info
    def __init__(self, state_tracker, error_handler):
        """Initialize an JavaScriptStyleChecker object.

        Args:
          state_tracker: State tracker.
          error_handler: Error handler to pass all errors to.
        """
        self._namespaces_info = None
        self._alias_pass = None
        if flags.FLAGS.closurized_namespaces:
            self._namespaces_info = (
                closurizednamespacesinfo.ClosurizedNamespacesInfo(
                    flags.FLAGS.closurized_namespaces,
                    flags.FLAGS.ignored_extra_namespaces))

            self._alias_pass = aliaspass.AliasPass(
                flags.FLAGS.closurized_namespaces, error_handler)

        checkerbase.CheckerBase.__init__(
            self,
            error_handler=error_handler,
            lint_rules=javascriptlintrules.JavaScriptLintRules(
                self._namespaces_info),
            state_tracker=state_tracker)