12da489cd246702bee5938545b18a6f710ed214bcJamie Gennis#!/usr/bin/env python 22da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# 32da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Copyright 2011 The Closure Linter Authors. All Rights Reserved. 42da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# 52da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Licensed under the Apache License, Version 2.0 (the "License"); 62da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# you may not use this file except in compliance with the License. 72da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# You may obtain a copy of the License at 82da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# 92da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# http://www.apache.org/licenses/LICENSE-2.0 102da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# 112da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# Unless required by applicable law or agreed to in writing, software 122da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# distributed under the License is distributed on an "AS-IS" BASIS, 132da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# See the License for the specific language governing permissions and 152da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# limitations under the License. 162da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 172da489cd246702bee5938545b18a6f710ed214bcJamie Gennis"""Tests for gjslint --nostrict. 182da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 192da489cd246702bee5938545b18a6f710ed214bcJamie GennisTests errors that can be thrown by gjslint when not in strict mode. 202da489cd246702bee5938545b18a6f710ed214bcJamie Gennis""" 212da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 222da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 232da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 242da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport os 252da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport sys 262da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport unittest 272da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 282da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport gflags as flags 292da489cd246702bee5938545b18a6f710ed214bcJamie Gennisimport unittest as googletest 302da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 312da489cd246702bee5938545b18a6f710ed214bcJamie Gennisfrom closure_linter import checker 322da489cd246702bee5938545b18a6f710ed214bcJamie Gennisfrom closure_linter import errors 332da489cd246702bee5938545b18a6f710ed214bcJamie Gennisfrom closure_linter.common import filetestcase 342da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 352da489cd246702bee5938545b18a6f710ed214bcJamie Gennis_RESOURCE_PREFIX = 'closure_linter/testdata' 362da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 372da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.strict = False 382da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.custom_jsdoc_tags = ('customtag', 'requires') 392da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.closurized_namespaces = ('goog', 'dummy') 402da489cd246702bee5938545b18a6f710ed214bcJamie Gennisflags.FLAGS.limited_doc_files = ('externs.js', 'dummy.js', 412da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 'limited_doc_checks.js') 422da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 432da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 442da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# List of files under testdata to test. 452da489cd246702bee5938545b18a6f710ed214bcJamie Gennis# We need to list files explicitly since pyglib can't list directories. 462da489cd246702bee5938545b18a6f710ed214bcJamie Gennis_TEST_FILES = [ 472da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 'not_strict.js' 482da489cd246702bee5938545b18a6f710ed214bcJamie Gennis ] 492da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 502da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 512da489cd246702bee5938545b18a6f710ed214bcJamie Gennisclass GJsLintTestSuite(unittest.TestSuite): 522da489cd246702bee5938545b18a6f710ed214bcJamie Gennis """Test suite to run a GJsLintTest for each of several files. 532da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 542da489cd246702bee5938545b18a6f710ed214bcJamie Gennis If sys.argv[1:] is non-empty, it is interpreted as a list of filenames in 552da489cd246702bee5938545b18a6f710ed214bcJamie Gennis testdata to test. Otherwise, _TEST_FILES is used. 562da489cd246702bee5938545b18a6f710ed214bcJamie Gennis """ 572da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 582da489cd246702bee5938545b18a6f710ed214bcJamie Gennis def __init__(self, tests=()): 592da489cd246702bee5938545b18a6f710ed214bcJamie Gennis unittest.TestSuite.__init__(self, tests) 602da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 612da489cd246702bee5938545b18a6f710ed214bcJamie Gennis argv = sys.argv and sys.argv[1:] or [] 622da489cd246702bee5938545b18a6f710ed214bcJamie Gennis if argv: 632da489cd246702bee5938545b18a6f710ed214bcJamie Gennis test_files = argv 642da489cd246702bee5938545b18a6f710ed214bcJamie Gennis else: 652da489cd246702bee5938545b18a6f710ed214bcJamie Gennis test_files = _TEST_FILES 662da489cd246702bee5938545b18a6f710ed214bcJamie Gennis for test_file in test_files: 672da489cd246702bee5938545b18a6f710ed214bcJamie Gennis resource_path = os.path.join(_RESOURCE_PREFIX, test_file) 682da489cd246702bee5938545b18a6f710ed214bcJamie Gennis self.addTest(filetestcase.AnnotatedFileTestCase(resource_path, 692da489cd246702bee5938545b18a6f710ed214bcJamie Gennis checker.GJsLintRunner(), 702da489cd246702bee5938545b18a6f710ed214bcJamie Gennis errors.ByName)) 712da489cd246702bee5938545b18a6f710ed214bcJamie Gennis 722da489cd246702bee5938545b18a6f710ed214bcJamie Gennisif __name__ == '__main__': 732da489cd246702bee5938545b18a6f710ed214bcJamie Gennis # Don't let main parse args; it happens in the TestSuite. 742da489cd246702bee5938545b18a6f710ed214bcJamie Gennis googletest.main(argv=sys.argv[0:1], defaultTest='GJsLintTestSuite') 75