| Index: third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
|
| index 54838ad2e6b77d172ca2251ad6e901889450d866..b1d5a5756442c6890d5c606e08bbe0d3854277c4 100644
|
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
|
| @@ -48,6 +48,8 @@ from webkitpy.common.system.filesystem import FileSystem
|
| # This class works as an error collector and replaces cpp_style.Error
|
| # function for the unit tests. We also verify each category we see
|
| # is in STYLE_CATEGORIES, to help keep that list up to date.
|
| +
|
| +
|
| class ErrorCollector:
|
| _all_style_categories = CppChecker.categories
|
| # This is a list including all categories seen in any unit test.
|
| @@ -182,13 +184,13 @@ class CppFunctionsTest(unittest.TestCase):
|
| self.assertEqual(cpp_style.create_skeleton_parameters('long int*'), ' int ,')
|
| self.assertEqual(cpp_style.create_skeleton_parameters('PassRefPtr<Foo> a'), 'PassRefPtr a,')
|
| self.assertEqual(cpp_style.create_skeleton_parameters(
|
| - 'ComplexTemplate<NestedTemplate1<MyClass1, MyClass2>, NestedTemplate1<MyClass1, MyClass2> > param, int second'),
|
| - 'ComplexTemplate param, int second,')
|
| + 'ComplexTemplate<NestedTemplate1<MyClass1, MyClass2>, NestedTemplate1<MyClass1, MyClass2> > param, int second'),
|
| + 'ComplexTemplate param, int second,')
|
| self.assertEqual(cpp_style.create_skeleton_parameters('int = 0, Namespace::Type& a'), 'int , Type a,')
|
| # Create skeleton parameters is a bit too aggressive with function variables, but
|
| # it allows for parsing other parameters and declarations like this are rare.
|
| self.assertEqual(cpp_style.create_skeleton_parameters('void (*fn)(int a, int b), Namespace::Type& a'),
|
| - 'void , Type a,')
|
| + 'void , Type a,')
|
|
|
| # This doesn't look like functions declarations but the simplifications help to eliminate false positives.
|
| self.assertEqual(cpp_style.create_skeleton_parameters('b{d}'), 'b ,')
|
| @@ -224,7 +226,8 @@ class CppFunctionsTest(unittest.TestCase):
|
| parameter = cpp_style.Parameter('FooF ooF', 4, 1)
|
| self.assertFalse(cpp_style._check_parameter_name_against_text(parameter, 'FooF', error_collector))
|
| self.assertEqual(error_collector.results(),
|
| - 'The parameter name "ooF" adds no information, so it should be removed. [readability/parameter_name] [5]')
|
| + 'The parameter name "ooF" adds no information, so it should be removed. [readability/parameter_name] [5]')
|
| +
|
|
|
| class CppStyleTestBase(unittest.TestCase):
|
| """Provides some useful helper functions for cpp_style tests.
|
| @@ -237,7 +240,7 @@ class CppStyleTestBase(unittest.TestCase):
|
|
|
| # FIXME: Refactor the unit tests so the confidence level is passed
|
| # explicitly, just like it is in the real code.
|
| - min_confidence = 1;
|
| + min_confidence = 1
|
|
|
| # Helper function to avoid needing to explicitly pass confidence
|
| # in all the unit test calls to cpp_style.process_file_data().
|
| @@ -333,11 +336,11 @@ class CppStyleTestBase(unittest.TestCase):
|
|
|
| def assert_language_rules_check(self, file_name, code, expected_message, lines_to_check=None):
|
| self.assertEqual(expected_message,
|
| - self.perform_language_rules_check(file_name, code, lines_to_check))
|
| + self.perform_language_rules_check(file_name, code, lines_to_check))
|
|
|
| def assert_include_what_you_use(self, code, expected_message):
|
| self.assertEqual(expected_message,
|
| - self.perform_include_what_you_use(code))
|
| + self.perform_include_what_you_use(code))
|
|
|
| def assert_blank_lines_check(self, lines, start_errors, end_errors):
|
| error_collector = ErrorCollector(self.assertTrue)
|
| @@ -359,10 +362,11 @@ class CppStyleTestBase(unittest.TestCase):
|
| position: a cpp_style.Position object.
|
| tuple_position: a tuple (row, column) to compare against."""
|
| self.assertEqual(position, cpp_style.Position(tuple_position[0], tuple_position[1]),
|
| - 'position %s, tuple_position %s' % (position, tuple_position))
|
| + 'position %s, tuple_position %s' % (position, tuple_position))
|
|
|
|
|
| class FunctionDetectionTest(CppStyleTestBase):
|
| +
|
| def perform_function_detection(self, lines, function_information, detection_line=0):
|
| clean_lines = cpp_style.CleansedLines(lines)
|
| function_state = cpp_style._FunctionState(5)
|
| @@ -376,7 +380,8 @@ class FunctionDetectionTest(CppStyleTestBase):
|
| self.assertEqual(function_state.modifiers_and_return_type(), function_information['modifiers_and_return_type'])
|
| self.assertEqual(function_state.is_pure, function_information['is_pure'])
|
| self.assertEqual(function_state.is_declaration, function_information['is_declaration'])
|
| - self.assert_positions_equal(function_state.function_name_start_position, function_information['function_name_start_position'])
|
| + self.assert_positions_equal(function_state.function_name_start_position,
|
| + function_information['function_name_start_position'])
|
| self.assert_positions_equal(function_state.parameter_start_position, function_information['parameter_start_position'])
|
| self.assert_positions_equal(function_state.parameter_end_position, function_information['parameter_end_position'])
|
| self.assert_positions_equal(function_state.body_start_position, function_information['body_start_position'])
|
| @@ -894,10 +899,10 @@ class CppStyleTest(CppStyleTestBase):
|
| def test_include_what_you_use_no_implementation_files(self):
|
| code = 'std::vector<int> foo;'
|
| self.assertEqual('Add #include <vector> for vector<>'
|
| - ' [build/include_what_you_use] [4]',
|
| - self.perform_include_what_you_use(code, 'foo.h'))
|
| + ' [build/include_what_you_use] [4]',
|
| + self.perform_include_what_you_use(code, 'foo.h'))
|
| self.assertEqual('',
|
| - self.perform_include_what_you_use(code, 'foo.cpp'))
|
| + self.perform_include_what_you_use(code, 'foo.cpp'))
|
|
|
| def test_include_what_you_use(self):
|
| self.assert_include_what_you_use(
|
| @@ -1007,7 +1012,7 @@ class CppStyleTest(CppStyleTestBase):
|
| ''',
|
| '')
|
| self.assert_include_what_you_use(
|
| - '''#include "base/basictypes.h"
|
| + '''#include "base/basictypes.h"
|
| #include "base/port.h"
|
| #include <assert.h>
|
| #include <string>
|
| @@ -1071,7 +1076,7 @@ class CppStyleTest(CppStyleTestBase):
|
| filename='a.cpp',
|
| fs=fs)
|
| self.assertEqual(message, 'Add #include <set> for set<> '
|
| - '[build/include_what_you_use] [4]')
|
| + '[build/include_what_you_use] [4]')
|
| finally:
|
| fs.read_text_file = orig_read_text_file_fn
|
|
|
| @@ -1081,32 +1086,32 @@ class CppStyleTest(CppStyleTestBase):
|
| self.assertEqual((True, ''), f('base/google.cpp', 'base/google.h'))
|
| self.assertEqual((True, ''), f('base/google_test.cpp', 'base/google.h'))
|
| self.assertEqual((True, ''),
|
| - f('base/google_unittest.cpp', 'base/google.h'))
|
| + f('base/google_unittest.cpp', 'base/google.h'))
|
| self.assertEqual((True, ''),
|
| - f('base/internal/google_unittest.cpp',
|
| - 'base/public/google.h'))
|
| + f('base/internal/google_unittest.cpp',
|
| + 'base/public/google.h'))
|
| self.assertEqual((True, 'xxx/yyy/'),
|
| - f('xxx/yyy/base/internal/google_unittest.cpp',
|
| - 'base/public/google.h'))
|
| + f('xxx/yyy/base/internal/google_unittest.cpp',
|
| + 'base/public/google.h'))
|
| self.assertEqual((True, 'xxx/yyy/'),
|
| - f('xxx/yyy/base/google_unittest.cpp',
|
| - 'base/public/google.h'))
|
| + f('xxx/yyy/base/google_unittest.cpp',
|
| + 'base/public/google.h'))
|
| self.assertEqual((True, ''),
|
| - f('base/google_unittest.cpp', 'base/google-inl.h'))
|
| + f('base/google_unittest.cpp', 'base/google-inl.h'))
|
| self.assertEqual((True, '/home/build/google3/'),
|
| - f('/home/build/google3/base/google.cpp', 'base/google.h'))
|
| + f('/home/build/google3/base/google.cpp', 'base/google.h'))
|
|
|
| self.assertEqual((False, ''),
|
| - f('/home/build/google3/base/google.cpp', 'basu/google.h'))
|
| + f('/home/build/google3/base/google.cpp', 'basu/google.h'))
|
| self.assertEqual((False, ''), f('a.cpp', 'b.h'))
|
|
|
| def test_cleanse_line(self):
|
| self.assertEqual('int foo = 0; ',
|
| - cpp_style.cleanse_comments('int foo = 0; // danger!'))
|
| + cpp_style.cleanse_comments('int foo = 0; // danger!'))
|
| self.assertEqual('int o = 0;',
|
| - cpp_style.cleanse_comments('int /* foo */ o = 0;'))
|
| + cpp_style.cleanse_comments('int /* foo */ o = 0;'))
|
| self.assertEqual('foo(int a, int b);',
|
| - cpp_style.cleanse_comments('foo(int a /* abc */, int b);'))
|
| + cpp_style.cleanse_comments('foo(int a /* abc */, int b);'))
|
| self.assertEqual('f(a, b);',
|
| cpp_style.cleanse_comments('f(a, /* name */ b);'))
|
| self.assertEqual('f(a, b);',
|
| @@ -1123,7 +1128,7 @@ class CppStyleTest(CppStyleTestBase):
|
| Foo(int f); // should cause a lint warning in code
|
| }
|
| */ ''',
|
| - '')
|
| + '')
|
| self.assert_multi_line_lint(
|
| '''\
|
| /* int a = 0; multi-liner
|
| @@ -1775,10 +1780,10 @@ class CppStyleTest(CppStyleTestBase):
|
| '[whitespace/comments] [4]', 'Missing'
|
| ' spaces around / [whitespace/operators] [3]'])
|
| self.assert_lint('a<Foo*> t <<= b||c; //Test', ['One space before end'
|
| - ' of line comments [whitespace/comments] [5]',
|
| - 'Should have a space between // and comment '
|
| - '[whitespace/comments] [4]',
|
| - 'Missing spaces around || [whitespace/operators] [3]'])
|
| + ' of line comments [whitespace/comments] [5]',
|
| + 'Should have a space between // and comment '
|
| + '[whitespace/comments] [4]',
|
| + 'Missing spaces around || [whitespace/operators] [3]'])
|
| self.assert_lint('a<Foo*> t <<= b && *c; // Test', '')
|
| self.assert_lint('a<Foo*> t <<= b && &c; // Test', '')
|
| self.assert_lint('a<Foo*> t <<= b || &c; /*Test', 'Complex multi-line '
|
| @@ -1797,12 +1802,17 @@ class CppStyleTest(CppStyleTestBase):
|
| self.assert_lint('func(OwnPtr<Vector<Foo>>)', '')
|
| self.assert_lint('func(OwnPtr<Vector<Foo>> foo)', '')
|
| self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar>>>)', '')
|
| - self.assert_lint('func(OwnPtr<Vector<Foo> >)', 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| - self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar>> >)', 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| - self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar> >>)', 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| - self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar> > >)', 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| + self.assert_lint('func(OwnPtr<Vector<Foo> >)',
|
| + 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| + self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar>> >)',
|
| + 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| + self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar> >>)',
|
| + 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| + self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar> > >)',
|
| + 'Use >> for ending template instead of > >. [readability/templatebrackets] [3]')
|
| self.assert_lint('Vector< ::Foo>)', 'Use <:: for template start instead of < ::. [readability/templatebrackets] [3]')
|
| - self.assert_lint('Vector<Vector< ::Foo>>)', 'Use <:: for template start instead of < ::. [readability/templatebrackets] [3]')
|
| + self.assert_lint('Vector<Vector< ::Foo>>)',
|
| + 'Use <:: for template start instead of < ::. [readability/templatebrackets] [3]')
|
| # FIXME: The following test should not show any error.
|
| self.assert_lint('func(OwnPtr<HashMap<Foo, Member<Bar\n >>>)',
|
| 'Missing spaces around < [whitespace/operators] [3]')
|
| @@ -1914,7 +1924,7 @@ class CppStyleTest(CppStyleTestBase):
|
| ' [whitespace/comments] [5]')
|
| self.assert_lint('printf("foo"); // Outside quotes.',
|
| '')
|
| - self.assert_lint('int i = 0; // Having one space is fine.','')
|
| + self.assert_lint('int i = 0; // Having one space is fine.', '')
|
| self.assert_lint('int i = 0; // Having two spaces is bad.',
|
| 'One space before end of line comments'
|
| ' [whitespace/comments] [5]')
|
| @@ -2133,7 +2143,6 @@ class CppStyleTest(CppStyleTestBase):
|
| '}\n',
|
| 'When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]')
|
|
|
| -
|
| def test_not_alabel(self):
|
| self.assert_lint('MyVeryLongNamespace::MyVeryLongClassName::', '')
|
|
|
| @@ -2314,7 +2323,7 @@ class CppStyleTest(CppStyleTestBase):
|
| ['#ifndef WTF_TestName_h', '#define WTF_TestName_h'],
|
| error_collector)
|
| self.assertEqual(0, len(error_collector.result_list()),
|
| - error_collector.result_list())
|
| + error_collector.result_list())
|
|
|
| # Also allow the non WTF_ prefix for files in that directory.
|
| error_collector = ErrorCollector(self.assertTrue, header_guard_filter)
|
| @@ -2322,7 +2331,7 @@ class CppStyleTest(CppStyleTestBase):
|
| ['#ifndef TestName_h', '#define TestName_h'],
|
| error_collector)
|
| self.assertEqual(0, len(error_collector.result_list()),
|
| - error_collector.result_list())
|
| + error_collector.result_list())
|
|
|
| # Verify that we suggest the WTF prefix version.
|
| error_collector = ErrorCollector(self.assertTrue, header_guard_filter)
|
| @@ -2341,9 +2350,9 @@ class CppStyleTest(CppStyleTestBase):
|
| self.process_file_data('Source/foo/testname.h', 'h',
|
| ['#ifndef BLINK_FOO_TESTNAME_H_',
|
| '#define BLINK_FOO_TESTNAME_H_'],
|
| - error_collector)
|
| + error_collector)
|
| self.assertEqual(0, len(error_collector.result_list()),
|
| - error_collector.result_list())
|
| + error_collector.result_list())
|
|
|
| def test_build_printf_format(self):
|
| self.assert_lint(
|
| @@ -2604,7 +2613,9 @@ class CppStyleTest(CppStyleTestBase):
|
| safe_bitfield_test('m_bitfields', 'ExpectedSomeClass', 'int32_t', 32)
|
| safe_bitfield_test('m_bitfields', 'SameSizeAsSomeClass', 'int32_t', 32)
|
|
|
| +
|
| class CleansedLinesTest(unittest.TestCase):
|
| +
|
| def test_init(self):
|
| lines = ['Line 1',
|
| 'Line 2',
|
| @@ -2616,16 +2627,16 @@ class CleansedLinesTest(unittest.TestCase):
|
| self.assertEqual(4, clean_lines.num_lines())
|
|
|
| self.assertEqual(['Line 1',
|
| - 'Line 2',
|
| - 'Line 3 ',
|
| - 'Line 4 "foo"'],
|
| - clean_lines.lines)
|
| + 'Line 2',
|
| + 'Line 3 ',
|
| + 'Line 4 "foo"'],
|
| + clean_lines.lines)
|
|
|
| self.assertEqual(['Line 1',
|
| - 'Line 2',
|
| - 'Line 3 ',
|
| - 'Line 4 ""'],
|
| - clean_lines.elided)
|
| + 'Line 2',
|
| + 'Line 3 ',
|
| + 'Line 4 ""'],
|
| + clean_lines.elided)
|
|
|
| def test_init_empty(self):
|
| clean_lines = cpp_style.CleansedLines([])
|
| @@ -2654,13 +2665,14 @@ class CleansedLinesTest(unittest.TestCase):
|
| self.assertEqual('\#', collapse('\\#')) # '\#' (bad)
|
|
|
| self.assertEqual('StringReplace(body, "", "");',
|
| - collapse('StringReplace(body, "\\\\", "\\\\\\\\");'))
|
| + collapse('StringReplace(body, "\\\\", "\\\\\\\\");'))
|
| self.assertEqual('\'\' ""',
|
| - collapse('\'"\' "foo"'))
|
| + collapse('\'"\' "foo"'))
|
| self.assertEqual('""', collapse('"a" "b" "c"'))
|
|
|
|
|
| class OrderOfIncludesTest(CppStyleTestBase):
|
| +
|
| def setUp(self):
|
| self.include_state = cpp_style._IncludeState()
|
|
|
| @@ -2685,6 +2697,7 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
|
|
|
|
| class OrderOfIncludesTest(CppStyleTestBase):
|
| +
|
| def setUp(self):
|
| self.include_state = cpp_style._IncludeState()
|
|
|
| @@ -2791,7 +2804,7 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
| '#else\n'
|
| '#include "foobar.h"\n'
|
| '#endif"\n'
|
| - '#include "bar.h"\n', # No flag because previous is in preprocessor section
|
| + '#include "bar.h"\n', # No flag because previous is in preprocessor section
|
| '')
|
|
|
| self.assert_language_rules_check('foo.cpp',
|
| @@ -2801,7 +2814,7 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
| '#include "baz.h"\n'
|
| '#endif"\n'
|
| '#include "bar.h"\n'
|
| - '#include "a.h"\n', # Should still flag this.
|
| + '#include "a.h"\n', # Should still flag this.
|
| 'Alphabetical sorting problem. [build/include_order] [4]')
|
|
|
| self.assert_language_rules_check('foo.cpp',
|
| @@ -2809,7 +2822,7 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
| '\n'
|
| '#ifdef BAZ\n'
|
| '#include "baz.h"\n'
|
| - '#include "bar.h"\n' #Should still flag this
|
| + '#include "bar.h"\n' # Should still flag this
|
| '#endif"\n',
|
| 'Alphabetical sorting problem. [build/include_order] [4]')
|
|
|
| @@ -2823,7 +2836,7 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
| '#include "foobar.h"\n'
|
| '#endif"\n'
|
| '#include "bar.h"\n'
|
| - '#include "a.h"\n', # Should still flag this.
|
| + '#include "a.h"\n', # Should still flag this.
|
| 'Alphabetical sorting problem. [build/include_order] [4]')
|
|
|
| # Check that after an already included error, the sorting rules still work.
|
| @@ -3004,7 +3017,9 @@ class OrderOfIncludesTest(CppStyleTestBase):
|
| self.assertEqual('test',
|
| cpp_style._drop_common_suffixes('test.cpp'))
|
|
|
| +
|
| class CheckForFunctionLengthsTest(CppStyleTestBase):
|
| +
|
| def setUp(self):
|
| # Reducing these thresholds for the tests speeds up tests significantly.
|
| self.old_normal_trigger = cpp_style._FunctionState._NORMAL_TRIGGER
|
| @@ -3032,7 +3047,7 @@ class CheckForFunctionLengthsTest(CppStyleTestBase):
|
| expected_message: Message expected to be generated by the C++ code.
|
| """
|
| self.assertEqual(expected_message,
|
| - self.perform_function_lengths_check(code))
|
| + self.perform_function_lengths_check(code))
|
|
|
| def trigger_lines(self, error_level):
|
| """Return number of lines needed to trigger a function length warning.
|
| @@ -3541,7 +3556,7 @@ class PassPtrTest(CppStyleTestBase):
|
| expected_message: Message expected to be generated by the C++ code.
|
| """
|
| self.assertEqual(expected_message,
|
| - self.perform_pass_ptr_check(code))
|
| + self.perform_pass_ptr_check(code))
|
|
|
| def test_pass_ref_ptr_in_function(self):
|
| self.assert_pass_ptr_check(
|
| @@ -3686,7 +3701,7 @@ class LeakyPatternTest(CppStyleTestBase):
|
| expected_message: Message expected to be generated by the C++ code.
|
| """
|
| self.assertEqual(expected_message,
|
| - self.perform_leaky_pattern_check(code))
|
| + self.perform_leaky_pattern_check(code))
|
|
|
| def test_get_dc(self):
|
| self.assert_leaky_pattern_check(
|
| @@ -4605,7 +4620,6 @@ class WebKitStyleTest(CppStyleTestBase):
|
| '}\n',
|
| 'If one part of an if-else statement uses curly braces, the other part must too. [whitespace/braces] [4]')
|
|
|
| -
|
| # 5. Control clauses without a body should use empty braces.
|
| self.assert_multi_line_lint(
|
| 'for ( ; current; current = current->next) { }\n',
|
| @@ -5025,12 +5039,12 @@ class WebKitStyleTest(CppStyleTestBase):
|
|
|
| # Test that this doesn't also apply to files not in a 'gtk' directory.
|
| self.assert_lint('void webkit_web_view_load(int var1, int var2)',
|
| - 'webkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
|
| - ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
|
| + 'webkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
|
| + ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
|
| # Test that this doesn't also apply to names that don't start with 'webkit_'.
|
| self.assert_lint_one_of_many_errors_re('void otherkit_web_view_load(int var1, int var2)',
|
| - 'otherkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
|
| - ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
|
| + 'otherkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
|
| + ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
|
|
|
| # There is an exception for some unit tests that begin with "tst_".
|
| self.assert_lint('void tst_QWebFrame::arrayObjectEnumerable(int var1, int var2)', '')
|
| @@ -5085,47 +5099,47 @@ class WebKitStyleTest(CppStyleTestBase):
|
| '+readability/parameter_name')
|
| # No variable name, so no error.
|
| self.assertEqual('',
|
| - self.perform_lint('void func(int);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void func(int);', 'test.cpp', parameter_error_rules))
|
|
|
| # Verify that copying the name of the set function causes the error (with some odd casing).
|
| self.assertEqual(meaningless_variable_name_error_message % 'itemCount',
|
| - self.perform_lint('void setItemCount(size_t itemCount);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void setItemCount(size_t itemCount);', 'test.cpp', parameter_error_rules))
|
| self.assertEqual(meaningless_variable_name_error_message % 'abcCount',
|
| - self.perform_lint('void setABCCount(size_t abcCount);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void setABCCount(size_t abcCount);', 'test.cpp', parameter_error_rules))
|
|
|
| # Verify that copying a type name will trigger the warning (even if the type is a template parameter).
|
| self.assertEqual(meaningless_variable_name_error_message % 'context',
|
| - self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context);', 'test.cpp', parameter_error_rules))
|
|
|
| # Verify that acronyms as variable names trigger the error (for both set functions and type names).
|
| self.assertEqual(meaningless_variable_name_error_message % 'ec',
|
| - self.perform_lint('void setExceptionCode(int ec);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void setExceptionCode(int ec);', 'test.cpp', parameter_error_rules))
|
| self.assertEqual(meaningless_variable_name_error_message % 'ec',
|
| - self.perform_lint('void funct(ExceptionCode ec);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(ExceptionCode ec);', 'test.cpp', parameter_error_rules))
|
|
|
| # 'object' alone, appended, or as part of an acronym is meaningless.
|
| self.assertEqual(meaningless_variable_name_error_message % 'object',
|
| - self.perform_lint('void funct(RenderView object);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(RenderView object);', 'test.cpp', parameter_error_rules))
|
| self.assertEqual(meaningless_variable_name_error_message % 'viewObject',
|
| - self.perform_lint('void funct(RenderView viewObject);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(RenderView viewObject);', 'test.cpp', parameter_error_rules))
|
| self.assertEqual(meaningless_variable_name_error_message % 'rvo',
|
| - self.perform_lint('void funct(RenderView rvo);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(RenderView rvo);', 'test.cpp', parameter_error_rules))
|
|
|
| # Check that r, g, b, and a are allowed.
|
| self.assertEqual('',
|
| - self.perform_lint('void setRGBAValues(int r, int g, int b, int a);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void setRGBAValues(int r, int g, int b, int a);', 'test.cpp', parameter_error_rules))
|
|
|
| # Verify that a simple substring match isn't done which would cause false positives.
|
| self.assertEqual('',
|
| - self.perform_lint('void setNateLateCount(size_t elate);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void setNateLateCount(size_t elate);', 'test.cpp', parameter_error_rules))
|
| self.assertEqual('',
|
| - self.perform_lint('void funct(NateLate elate);', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(NateLate elate);', 'test.cpp', parameter_error_rules))
|
|
|
| # Don't have generate warnings for functions (only declarations).
|
| self.assertEqual('',
|
| - self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context)\n'
|
| - '{\n'
|
| - '}\n', 'test.cpp', parameter_error_rules))
|
| + self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context)\n'
|
| + '{\n'
|
| + '}\n', 'test.cpp', parameter_error_rules))
|
|
|
| def test_comments(self):
|
| # A comment at the beginning of a line is ok.
|
| @@ -5137,62 +5151,70 @@ class WebKitStyleTest(CppStyleTestBase):
|
| ' [whitespace/comments] [5]')
|
|
|
| def test_redundant_virtual(self):
|
| - self.assert_lint('virtual void fooMethod() override;', '"virtual" is redundant since function is already declared as "override" [readability/inheritance] [4]')
|
| - self.assert_lint('virtual void fooMethod(\n) override {}', '"virtual" is redundant since function is already declared as "override" [readability/inheritance] [4]')
|
| - self.assert_lint('virtual void fooMethod() final;', '"virtual" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| - self.assert_lint('virtual void fooMethod(\n) final {}', '"virtual" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('virtual void fooMethod() override;',
|
| + '"virtual" is redundant since function is already declared as "override" [readability/inheritance] [4]')
|
| + self.assert_lint('virtual void fooMethod(\n) override {}',
|
| + '"virtual" is redundant since function is already declared as "override" [readability/inheritance] [4]')
|
| + self.assert_lint('virtual void fooMethod() final;',
|
| + '"virtual" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('virtual void fooMethod(\n) final {}',
|
| + '"virtual" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
|
|
| def test_redundant_override(self):
|
| - self.assert_lint('void fooMethod() override final;', '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| - self.assert_lint('void fooMethod(\n) override final {}', '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| - self.assert_lint('void fooMethod() final override;', '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| - self.assert_lint('void fooMethod(\n) final override {}', '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('void fooMethod() override final;',
|
| + '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('void fooMethod(\n) override final {}',
|
| + '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('void fooMethod() final override;',
|
| + '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
| + self.assert_lint('void fooMethod(\n) final override {}',
|
| + '"override" is redundant since function is already declared as "final" [readability/inheritance] [4]')
|
|
|
| def test_webkit_export_check(self):
|
| webkit_export_error_rules = ('-',
|
| - '+readability/webkit_export')
|
| + '+readability/webkit_export')
|
| self.assertEqual('',
|
| - self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| - 'WebKit/chromium/public/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| + 'WebKit/chromium/public/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('',
|
| - self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| - 'WebKit/chromium/tests/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| + 'WebKit/chromium/tests/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('WEBKIT_EXPORT should only be used in header files. [readability/webkit_export] [5]',
|
| - self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| - 'WebKit/chromium/public/test.cpp',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| + 'WebKit/chromium/public/test.cpp',
|
| + webkit_export_error_rules))
|
| self.assertEqual('WEBKIT_EXPORT should only appear in the chromium public (or tests) directory. [readability/webkit_export] [5]',
|
| - self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| - 'WebKit/chromium/src/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT int foo();\n',
|
| + 'WebKit/chromium/src/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('WEBKIT_EXPORT should not be used on a function with a body. [readability/webkit_export] [5]',
|
| - self.perform_lint('WEBKIT_EXPORT int foo() { }\n',
|
| - 'WebKit/chromium/public/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT int foo() { }\n',
|
| + 'WebKit/chromium/public/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('WEBKIT_EXPORT should not be used on a function with a body. [readability/webkit_export] [5]',
|
| - self.perform_lint('WEBKIT_EXPORT inline int foo()\n'
|
| - '{\n'
|
| - '}\n',
|
| - 'WebKit/chromium/public/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('WEBKIT_EXPORT inline int foo()\n'
|
| + '{\n'
|
| + '}\n',
|
| + 'WebKit/chromium/public/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('WEBKIT_EXPORT should not be used with a pure virtual function. [readability/webkit_export] [5]',
|
| - self.perform_lint('{}\n'
|
| - 'WEBKIT_EXPORT\n'
|
| - 'virtual\n'
|
| - 'int\n'
|
| - 'foo() = 0;\n',
|
| - 'WebKit/chromium/public/test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('{}\n'
|
| + 'WEBKIT_EXPORT\n'
|
| + 'virtual\n'
|
| + 'int\n'
|
| + 'foo() = 0;\n',
|
| + 'WebKit/chromium/public/test.h',
|
| + webkit_export_error_rules))
|
| self.assertEqual('',
|
| - self.perform_lint('{}\n'
|
| - 'WEBKIT_EXPORT\n'
|
| - 'virtual\n'
|
| - 'int\n'
|
| - 'foo() = 0;\n',
|
| - 'test.h',
|
| - webkit_export_error_rules))
|
| + self.perform_lint('{}\n'
|
| + 'WEBKIT_EXPORT\n'
|
| + 'virtual\n'
|
| + 'int\n'
|
| + 'foo() = 0;\n',
|
| + 'test.h',
|
| + webkit_export_error_rules))
|
|
|
| def test_other(self):
|
| # FIXME: Implement this.
|
|
|