rubocop 0.8.3 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rubocop might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +0 -4
- data/.yardopts +2 -0
- data/CHANGELOG.md +70 -1
- data/README.md +101 -11
- data/config/default.yml +10 -2
- data/config/enabled.yml +85 -11
- data/lib/rubocop.rb +97 -73
- data/lib/rubocop/cli.rb +177 -92
- data/lib/rubocop/config.rb +56 -11
- data/lib/rubocop/config_store.rb +2 -0
- data/lib/rubocop/cop/cop.rb +52 -8
- data/lib/rubocop/cop/lint/assignment_in_condition.rb +54 -0
- data/lib/rubocop/cop/lint/end_alignment.rb +180 -0
- data/lib/rubocop/cop/lint/end_in_method.rb +30 -0
- data/lib/rubocop/cop/lint/ensure_return.rb +22 -0
- data/lib/rubocop/cop/lint/eval.rb +22 -0
- data/lib/rubocop/cop/lint/handle_exceptions.rb +20 -0
- data/lib/rubocop/cop/lint/literal_in_condition.rb +63 -0
- data/lib/rubocop/cop/lint/loop.rb +29 -0
- data/lib/rubocop/cop/lint/rescue_exception.rb +29 -0
- data/lib/rubocop/cop/lint/shadowing_outer_local_variable.rb +33 -0
- data/lib/rubocop/cop/lint/unreachable_code.rb +35 -0
- data/lib/rubocop/cop/lint/unused_local_variable.rb +32 -0
- data/lib/rubocop/cop/lint/void.rb +58 -0
- data/lib/rubocop/cop/offence.rb +112 -12
- data/lib/rubocop/cop/rails/validation.rb +34 -0
- data/lib/rubocop/cop/style/access_control.rb +58 -0
- data/lib/rubocop/cop/style/alias.rb +28 -0
- data/lib/rubocop/cop/style/align_parameters.rb +39 -0
- data/lib/rubocop/cop/style/and_or.rb +45 -0
- data/lib/rubocop/cop/style/ascii_comments.rb +21 -0
- data/lib/rubocop/cop/style/ascii_identifiers.rb +22 -0
- data/lib/rubocop/cop/style/attr.rb +20 -0
- data/lib/rubocop/cop/style/avoid_class_vars.rb +20 -0
- data/lib/rubocop/cop/style/avoid_for.rb +18 -0
- data/lib/rubocop/cop/style/avoid_global_vars.rb +65 -0
- data/lib/rubocop/cop/style/avoid_perl_backrefs.rb +21 -0
- data/lib/rubocop/cop/style/avoid_perlisms.rb +50 -0
- data/lib/rubocop/cop/style/begin_block.rb +18 -0
- data/lib/rubocop/cop/style/block_comments.rb +20 -0
- data/lib/rubocop/cop/style/block_nesting.rb +47 -0
- data/lib/rubocop/cop/style/blocks.rb +27 -0
- data/lib/rubocop/cop/style/case_equality.rb +22 -0
- data/lib/rubocop/cop/style/case_indentation.rb +28 -0
- data/lib/rubocop/cop/style/character_literal.rb +37 -0
- data/lib/rubocop/cop/style/class_and_module_camel_case.rb +33 -0
- data/lib/rubocop/cop/style/class_methods.rb +22 -0
- data/lib/rubocop/cop/style/collection_methods.rb +37 -0
- data/lib/rubocop/cop/style/colon_method_call.rb +29 -0
- data/lib/rubocop/cop/style/constant_name.rb +31 -0
- data/lib/rubocop/cop/style/def_parentheses.rb +70 -0
- data/lib/rubocop/cop/style/documentation.rb +58 -0
- data/lib/rubocop/cop/style/dot_position.rb +25 -0
- data/lib/rubocop/cop/style/empty_line_between_defs.rb +26 -0
- data/lib/rubocop/cop/style/empty_lines.rb +40 -0
- data/lib/rubocop/cop/style/empty_literal.rb +53 -0
- data/lib/rubocop/cop/style/encoding.rb +29 -0
- data/lib/rubocop/cop/style/end_block.rb +18 -0
- data/lib/rubocop/cop/style/end_of_line.rb +23 -0
- data/lib/rubocop/cop/style/favor_join.rb +29 -0
- data/lib/rubocop/cop/style/favor_modifier.rb +118 -0
- data/lib/rubocop/cop/style/favor_sprintf.rb +28 -0
- data/lib/rubocop/cop/style/favor_unless_over_negated_if.rb +54 -0
- data/lib/rubocop/cop/style/hash_syntax.rb +47 -0
- data/lib/rubocop/cop/style/if_then_else.rb +80 -0
- data/lib/rubocop/cop/style/lambda.rb +47 -0
- data/lib/rubocop/cop/style/leading_comment_space.rb +25 -0
- data/lib/rubocop/cop/style/line_continuation.rb +26 -0
- data/lib/rubocop/cop/style/line_length.rb +30 -0
- data/lib/rubocop/cop/style/method_and_variable_snake_case.rb +61 -0
- data/lib/rubocop/cop/style/method_call_parentheses.rb +22 -0
- data/lib/rubocop/cop/style/method_length.rb +57 -0
- data/lib/rubocop/cop/style/not.rb +24 -0
- data/lib/rubocop/cop/style/numeric_literals.rb +25 -0
- data/lib/rubocop/cop/{op_method.rb → style/op_method.rb} +4 -3
- data/lib/rubocop/cop/style/parameter_lists.rb +42 -0
- data/lib/rubocop/cop/style/parentheses_around_condition.rb +42 -0
- data/lib/rubocop/cop/style/proc.rb +30 -0
- data/lib/rubocop/cop/style/reduce_arguments.rb +34 -0
- data/lib/rubocop/cop/style/regexp_literal.rb +39 -0
- data/lib/rubocop/cop/style/rescue_modifier.rb +55 -0
- data/lib/rubocop/cop/style/semicolon.rb +51 -0
- data/lib/rubocop/cop/style/single_line_methods.rb +48 -0
- data/lib/rubocop/cop/style/space_after_comma_etc.rb +69 -0
- data/lib/rubocop/cop/style/space_after_control_keyword.rb +32 -0
- data/lib/rubocop/cop/style/string_literals.rb +36 -0
- data/lib/rubocop/cop/style/surrounding_space.rb +314 -0
- data/lib/rubocop/cop/style/symbol_array.rb +31 -0
- data/lib/rubocop/cop/style/symbol_name.rb +27 -0
- data/lib/rubocop/cop/style/tab.rb +25 -0
- data/lib/rubocop/cop/style/ternary_operator.rb +49 -0
- data/lib/rubocop/cop/style/trailing_whitespace.rb +24 -0
- data/lib/rubocop/cop/style/trivial_accessors.rb +32 -0
- data/lib/rubocop/cop/style/unless_else.rb +26 -0
- data/lib/rubocop/cop/style/variable_interpolation.rb +32 -0
- data/lib/rubocop/cop/style/when_then.rb +25 -0
- data/lib/rubocop/cop/style/while_until_do.rb +45 -0
- data/lib/rubocop/cop/style/word_array.rb +44 -0
- data/lib/rubocop/cop/util.rb +1 -0
- data/lib/rubocop/cop/variable_inspector.rb +280 -0
- data/lib/rubocop/formatter/base_formatter.rb +119 -0
- data/lib/rubocop/formatter/clang_style_formatter.rb +21 -0
- data/lib/rubocop/formatter/emacs_style_formatter.rb +17 -0
- data/lib/rubocop/formatter/formatter_set.rb +77 -0
- data/lib/rubocop/formatter/json_formatter.rb +76 -0
- data/lib/rubocop/formatter/progress_formatter.rb +63 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +62 -0
- data/lib/rubocop/version.rb +15 -1
- data/rubocop.gemspec +1 -2
- data/spec/.rubocop.yml +5 -0
- data/spec/project_spec.rb +4 -7
- data/spec/rubocop/cli_spec.rb +383 -146
- data/spec/rubocop/config_spec.rb +61 -0
- data/spec/rubocop/config_store_spec.rb +2 -2
- data/spec/rubocop/cops/cop_spec.rb +14 -7
- data/spec/rubocop/cops/lint/assignment_in_condition_spec.rb +111 -0
- data/spec/rubocop/cops/lint/end_alignment_spec.rb +426 -0
- data/spec/rubocop/cops/lint/end_in_method_spec.rb +35 -0
- data/spec/rubocop/cops/lint/ensure_return_spec.rb +37 -0
- data/spec/rubocop/cops/lint/eval_spec.rb +41 -0
- data/spec/rubocop/cops/lint/handle_exceptions_spec.rb +36 -0
- data/spec/rubocop/cops/lint/literal_in_condition_spec.rb +35 -0
- data/spec/rubocop/cops/lint/loop_spec.rb +33 -0
- data/spec/rubocop/cops/lint/rescue_exception_spec.rb +127 -0
- data/spec/rubocop/cops/lint/shadowing_outer_local_variable_spec.rb +180 -0
- data/spec/rubocop/cops/lint/unreachable_code_spec.rb +69 -0
- data/spec/rubocop/cops/lint/unused_local_variable_spec.rb +484 -0
- data/spec/rubocop/cops/lint/void_spec.rb +63 -0
- data/spec/rubocop/cops/offence_spec.rb +107 -10
- data/spec/rubocop/cops/rails/validation_spec.rb +27 -0
- data/spec/rubocop/cops/style/access_control_spec.rb +142 -0
- data/spec/rubocop/cops/style/alias_spec.rb +47 -0
- data/spec/rubocop/cops/style/align_parameters_spec.rb +199 -0
- data/spec/rubocop/cops/style/and_or_spec.rb +39 -0
- data/spec/rubocop/cops/style/ascii_comments_spec.rb +28 -0
- data/spec/rubocop/cops/style/ascii_identifiers_spec.rb +28 -0
- data/spec/rubocop/cops/style/attr_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_class_vars_spec.rb +27 -0
- data/spec/rubocop/cops/style/avoid_for_spec.rb +37 -0
- data/spec/rubocop/cops/style/avoid_global_vars_spec.rb +34 -0
- data/spec/rubocop/cops/style/avoid_perl_backrefs_spec.rb +20 -0
- data/spec/rubocop/cops/style/avoid_perlisms_spec.rb +47 -0
- data/spec/rubocop/cops/style/begin_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/block_comments_spec.rb +27 -0
- data/spec/rubocop/cops/style/block_nesting_spec.rb +159 -0
- data/spec/rubocop/cops/style/blocks_spec.rb +35 -0
- data/spec/rubocop/cops/style/case_equality_spec.rb +18 -0
- data/spec/rubocop/cops/style/case_indentation_spec.rb +88 -0
- data/spec/rubocop/cops/style/character_literal_spec.rb +28 -0
- data/spec/rubocop/cops/style/class_and_module_camel_case_spec.rb +46 -0
- data/spec/rubocop/cops/style/class_methods_spec.rb +51 -0
- data/spec/rubocop/cops/style/collection_methods_spec.rb +46 -0
- data/spec/rubocop/cops/style/colon_method_call_spec.rb +55 -0
- data/spec/rubocop/cops/style/constant_name_spec.rb +56 -0
- data/spec/rubocop/cops/style/def_with_parentheses_spec.rb +40 -0
- data/spec/rubocop/cops/style/def_without_parentheses_spec.rb +34 -0
- data/spec/rubocop/cops/style/documentation_spec.rb +79 -0
- data/spec/rubocop/cops/style/dot_position_spec.rb +30 -0
- data/spec/rubocop/cops/style/empty_line_between_defs_spec.rb +85 -0
- data/spec/rubocop/cops/style/empty_lines_spec.rb +40 -0
- data/spec/rubocop/cops/style/empty_literal_spec.rb +91 -0
- data/spec/rubocop/cops/style/encoding_spec.rb +49 -0
- data/spec/rubocop/cops/style/end_block_spec.rb +19 -0
- data/spec/rubocop/cops/style/end_of_line_spec.rb +25 -0
- data/spec/rubocop/cops/style/favor_join_spec.rb +37 -0
- data/spec/rubocop/cops/style/favor_modifier_spec.rb +160 -0
- data/spec/rubocop/cops/style/favor_sprintf_spec.rb +53 -0
- data/spec/rubocop/cops/style/favor_unless_over_negated_if_spec.rb +64 -0
- data/spec/rubocop/cops/style/favor_until_over_negated_while_spec.rb +47 -0
- data/spec/rubocop/cops/style/hash_syntax_spec.rb +51 -0
- data/spec/rubocop/cops/style/if_with_semicolon_spec.rb +25 -0
- data/spec/rubocop/cops/style/lambda_spec.rb +45 -0
- data/spec/rubocop/cops/style/leading_comment_space_spec.rb +65 -0
- data/spec/rubocop/cops/style/line_continuation_spec.rb +26 -0
- data/spec/rubocop/cops/style/line_length_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_and_variable_snake_case_spec.rb +95 -0
- data/spec/rubocop/cops/style/method_call_parentheses_spec.rb +25 -0
- data/spec/rubocop/cops/style/method_length_spec.rb +151 -0
- data/spec/rubocop/cops/style/multiline_if_then_spec.rb +81 -0
- data/spec/rubocop/cops/style/not_spec.rb +28 -0
- data/spec/rubocop/cops/style/numeric_literals_spec.rb +51 -0
- data/spec/rubocop/cops/style/one_line_conditional_spec.rb +18 -0
- data/spec/rubocop/cops/style/op_method_spec.rb +80 -0
- data/spec/rubocop/cops/style/parameter_lists_spec.rb +49 -0
- data/spec/rubocop/cops/style/parentheses_around_condition_spec.rb +59 -0
- data/spec/rubocop/cops/style/proc_spec.rb +28 -0
- data/spec/rubocop/cops/style/reduce_arguments_spec.rb +59 -0
- data/spec/rubocop/cops/style/regexp_literal_spec.rb +83 -0
- data/spec/rubocop/cops/style/rescue_modifier_spec.rb +122 -0
- data/spec/rubocop/cops/style/semicolon_spec.rb +95 -0
- data/spec/rubocop/cops/style/single_line_methods_spec.rb +54 -0
- data/spec/rubocop/cops/style/space_after_colon_spec.rb +29 -0
- data/spec/rubocop/cops/style/space_after_comma_spec.rb +31 -0
- data/spec/rubocop/cops/style/space_after_control_keyword_spec.rb +69 -0
- data/spec/rubocop/cops/style/space_after_semicolon_spec.rb +24 -0
- data/spec/rubocop/cops/style/space_around_braces_spec.rb +49 -0
- data/spec/rubocop/cops/style/space_around_equals_in_default_parameter_spec.rb +34 -0
- data/spec/rubocop/cops/style/space_around_operators_spec.rb +216 -0
- data/spec/rubocop/cops/style/space_inside_brackets_spec.rb +51 -0
- data/spec/rubocop/cops/style/space_inside_hash_literal_braces_spec.rb +99 -0
- data/spec/rubocop/cops/style/space_inside_parens_spec.rb +33 -0
- data/spec/rubocop/cops/style/string_literals_spec.rb +62 -0
- data/spec/rubocop/cops/style/symbol_array_spec.rb +45 -0
- data/spec/rubocop/cops/style/symbol_name_spec.rb +122 -0
- data/spec/rubocop/cops/style/tab_spec.rb +23 -0
- data/spec/rubocop/cops/style/ternary_operator_spec.rb +42 -0
- data/spec/rubocop/cops/style/trailing_whitespace_spec.rb +29 -0
- data/spec/rubocop/cops/style/trivial_accessors_spec.rb +338 -0
- data/spec/rubocop/cops/style/unless_else_spec.rb +31 -0
- data/spec/rubocop/cops/style/variable_interpolation_spec.rb +53 -0
- data/spec/rubocop/cops/style/when_then_spec.rb +40 -0
- data/spec/rubocop/cops/style/while_until_do_spec.rb +47 -0
- data/spec/rubocop/cops/style/word_array_spec.rb +61 -0
- data/spec/rubocop/cops/variable_inspector_spec.rb +374 -0
- data/spec/rubocop/formatter/base_formatter_spec.rb +190 -0
- data/spec/rubocop/formatter/clang_style_formatter_spec.rb +70 -0
- data/spec/rubocop/formatter/emacs_style_formatter_spec.rb +32 -0
- data/spec/rubocop/formatter/formatter_set_spec.rb +132 -0
- data/spec/rubocop/formatter/json_formatter_spec.rb +142 -0
- data/spec/rubocop/formatter/progress_formatter_spec.rb +196 -0
- data/spec/rubocop/formatter/simple_text_formatter_spec.rb +74 -0
- data/spec/spec_helper.rb +23 -8
- data/spec/support/mri_syntax_checker.rb +69 -0
- data/spec/support/shared_examples.rb +33 -0
- metadata +315 -243
- data/lib/rubocop/cop/access_control.rb +0 -41
- data/lib/rubocop/cop/alias.rb +0 -17
- data/lib/rubocop/cop/align_parameters.rb +0 -37
- data/lib/rubocop/cop/and_or.rb +0 -36
- data/lib/rubocop/cop/ascii_comments.rb +0 -17
- data/lib/rubocop/cop/ascii_identifiers.rb +0 -19
- data/lib/rubocop/cop/avoid_class_vars.rb +0 -15
- data/lib/rubocop/cop/avoid_for.rb +0 -17
- data/lib/rubocop/cop/avoid_global_vars.rb +0 -61
- data/lib/rubocop/cop/avoid_perl_backrefs.rb +0 -17
- data/lib/rubocop/cop/avoid_perlisms.rb +0 -47
- data/lib/rubocop/cop/block_comments.rb +0 -17
- data/lib/rubocop/cop/block_nesting.rb +0 -35
- data/lib/rubocop/cop/blocks.rb +0 -23
- data/lib/rubocop/cop/case_indentation.rb +0 -22
- data/lib/rubocop/cop/class_and_module_camel_case.rb +0 -29
- data/lib/rubocop/cop/class_methods.rb +0 -15
- data/lib/rubocop/cop/collection_methods.rb +0 -29
- data/lib/rubocop/cop/colon_method_call.rb +0 -20
- data/lib/rubocop/cop/constant_name.rb +0 -24
- data/lib/rubocop/cop/def_parentheses.rb +0 -62
- data/lib/rubocop/cop/empty_line_between_defs.rb +0 -22
- data/lib/rubocop/cop/empty_lines.rb +0 -34
- data/lib/rubocop/cop/empty_literal.rb +0 -49
- data/lib/rubocop/cop/encoding.rb +0 -19
- data/lib/rubocop/cop/end_of_line.rb +0 -15
- data/lib/rubocop/cop/ensure_return.rb +0 -19
- data/lib/rubocop/cop/eval.rb +0 -19
- data/lib/rubocop/cop/favor_join.rb +0 -22
- data/lib/rubocop/cop/favor_modifier.rb +0 -92
- data/lib/rubocop/cop/favor_percent_r.rb +0 -19
- data/lib/rubocop/cop/favor_sprintf.rb +0 -21
- data/lib/rubocop/cop/favor_unless_over_negated_if.rb +0 -49
- data/lib/rubocop/cop/handle_exceptions.rb +0 -17
- data/lib/rubocop/cop/hash_syntax.rb +0 -41
- data/lib/rubocop/cop/if_then_else.rb +0 -75
- data/lib/rubocop/cop/lambda.rb +0 -42
- data/lib/rubocop/cop/leading_comment_space.rb +0 -19
- data/lib/rubocop/cop/line_continuation.rb +0 -15
- data/lib/rubocop/cop/line_length.rb +0 -23
- data/lib/rubocop/cop/loop.rb +0 -33
- data/lib/rubocop/cop/method_and_variable_snake_case.rb +0 -55
- data/lib/rubocop/cop/method_length.rb +0 -52
- data/lib/rubocop/cop/not.rb +0 -21
- data/lib/rubocop/cop/numeric_literals.rb +0 -21
- data/lib/rubocop/cop/parameter_lists.rb +0 -23
- data/lib/rubocop/cop/parentheses_around_condition.rb +0 -40
- data/lib/rubocop/cop/percent_r.rb +0 -19
- data/lib/rubocop/cop/proc.rb +0 -26
- data/lib/rubocop/cop/reduce_arguments.rb +0 -29
- data/lib/rubocop/cop/rescue_exception.rb +0 -26
- data/lib/rubocop/cop/rescue_modifier.rb +0 -15
- data/lib/rubocop/cop/semicolon.rb +0 -31
- data/lib/rubocop/cop/single_line_methods.rb +0 -44
- data/lib/rubocop/cop/space_after_comma_etc.rb +0 -62
- data/lib/rubocop/cop/space_after_control_keyword.rb +0 -29
- data/lib/rubocop/cop/string_literals.rb +0 -25
- data/lib/rubocop/cop/surrounding_space.rb +0 -285
- data/lib/rubocop/cop/symbol_array.rb +0 -31
- data/lib/rubocop/cop/symbol_name.rb +0 -23
- data/lib/rubocop/cop/syntax.rb +0 -49
- data/lib/rubocop/cop/tab.rb +0 -15
- data/lib/rubocop/cop/ternary_operator.rb +0 -43
- data/lib/rubocop/cop/trailing_whitespace.rb +0 -15
- data/lib/rubocop/cop/trivial_accessors.rb +0 -26
- data/lib/rubocop/cop/unless_else.rb +0 -23
- data/lib/rubocop/cop/variable_interpolation.rb +0 -29
- data/lib/rubocop/cop/when_then.rb +0 -17
- data/lib/rubocop/cop/word_array.rb +0 -37
- data/lib/rubocop/report/emacs_style.rb +0 -17
- data/lib/rubocop/report/plain_text.rb +0 -18
- data/lib/rubocop/report/report.rb +0 -44
- data/spec/rubocop/cops/access_control_spec.rb +0 -129
- data/spec/rubocop/cops/alias_spec.rb +0 -39
- data/spec/rubocop/cops/align_parameters_spec.rb +0 -197
- data/spec/rubocop/cops/and_or_spec.rb +0 -37
- data/spec/rubocop/cops/ascii_comments_spec.rb +0 -26
- data/spec/rubocop/cops/ascii_identifiers_spec.rb +0 -26
- data/spec/rubocop/cops/avoid_class_vars_spec.rb +0 -25
- data/spec/rubocop/cops/avoid_for_spec.rb +0 -35
- data/spec/rubocop/cops/avoid_global_vars_spec.rb +0 -32
- data/spec/rubocop/cops/avoid_perl_backrefs_spec.rb +0 -18
- data/spec/rubocop/cops/avoid_perlisms_spec.rb +0 -44
- data/spec/rubocop/cops/block_comments_spec.rb +0 -25
- data/spec/rubocop/cops/block_nesting_spec.rb +0 -148
- data/spec/rubocop/cops/blocks_spec.rb +0 -33
- data/spec/rubocop/cops/case_indentation_spec.rb +0 -86
- data/spec/rubocop/cops/class_and_module_camel_case_spec.rb +0 -44
- data/spec/rubocop/cops/class_methods_spec.rb +0 -49
- data/spec/rubocop/cops/collection_methods_spec.rb +0 -44
- data/spec/rubocop/cops/colon_method_call_spec.rb +0 -53
- data/spec/rubocop/cops/constant_name_spec.rb +0 -42
- data/spec/rubocop/cops/def_with_parentheses_spec.rb +0 -38
- data/spec/rubocop/cops/def_without_parentheses_spec.rb +0 -32
- data/spec/rubocop/cops/empty_line_between_defs_spec.rb +0 -83
- data/spec/rubocop/cops/empty_lines_spec.rb +0 -38
- data/spec/rubocop/cops/empty_literal_spec.rb +0 -90
- data/spec/rubocop/cops/encoding_spec.rb +0 -47
- data/spec/rubocop/cops/end_of_line_spec.rb +0 -23
- data/spec/rubocop/cops/ensure_return_spec.rb +0 -35
- data/spec/rubocop/cops/eval_spec.rb +0 -39
- data/spec/rubocop/cops/favor_join_spec.rb +0 -35
- data/spec/rubocop/cops/favor_modifier_spec.rb +0 -146
- data/spec/rubocop/cops/favor_percent_r_spec.rb +0 -29
- data/spec/rubocop/cops/favor_sprintf_spec.rb +0 -51
- data/spec/rubocop/cops/favor_unless_over_negated_if_spec.rb +0 -62
- data/spec/rubocop/cops/favor_until_over_negated_while_spec.rb +0 -45
- data/spec/rubocop/cops/handle_exceptions_spec.rb +0 -34
- data/spec/rubocop/cops/hash_syntax_spec.rb +0 -49
- data/spec/rubocop/cops/if_with_semicolon_spec.rb +0 -23
- data/spec/rubocop/cops/lambda_spec.rb +0 -43
- data/spec/rubocop/cops/leading_comment_space_spec.rb +0 -54
- data/spec/rubocop/cops/line_continuation_spec.rb +0 -24
- data/spec/rubocop/cops/line_length_spec.rb +0 -23
- data/spec/rubocop/cops/loop_spec.rb +0 -31
- data/spec/rubocop/cops/method_and_variable_snake_case_spec.rb +0 -93
- data/spec/rubocop/cops/method_length_spec.rb +0 -147
- data/spec/rubocop/cops/multiline_if_then_spec.rb +0 -79
- data/spec/rubocop/cops/not_spec.rb +0 -26
- data/spec/rubocop/cops/numeric_literals_spec.rb +0 -49
- data/spec/rubocop/cops/one_line_conditional_spec.rb +0 -16
- data/spec/rubocop/cops/op_method_spec.rb +0 -78
- data/spec/rubocop/cops/parameter_lists_spec.rb +0 -24
- data/spec/rubocop/cops/parentheses_around_condition_spec.rb +0 -61
- data/spec/rubocop/cops/percent_r_spec.rb +0 -29
- data/spec/rubocop/cops/proc_spec.rb +0 -26
- data/spec/rubocop/cops/reduce_arguments_spec.rb +0 -57
- data/spec/rubocop/cops/rescue_exception_spec.rb +0 -125
- data/spec/rubocop/cops/rescue_modifier_spec.rb +0 -37
- data/spec/rubocop/cops/semicolon_spec.rb +0 -88
- data/spec/rubocop/cops/single_line_methods_spec.rb +0 -50
- data/spec/rubocop/cops/space_after_colon_spec.rb +0 -27
- data/spec/rubocop/cops/space_after_comma_spec.rb +0 -29
- data/spec/rubocop/cops/space_after_control_keyword_spec.rb +0 -67
- data/spec/rubocop/cops/space_after_semicolon_spec.rb +0 -22
- data/spec/rubocop/cops/space_around_braces_spec.rb +0 -47
- data/spec/rubocop/cops/space_around_equals_in_default_parameter_spec.rb +0 -32
- data/spec/rubocop/cops/space_around_operators_spec.rb +0 -209
- data/spec/rubocop/cops/space_inside_brackets_spec.rb +0 -49
- data/spec/rubocop/cops/space_inside_hash_literal_braces_spec.rb +0 -86
- data/spec/rubocop/cops/space_inside_parens_spec.rb +0 -31
- data/spec/rubocop/cops/string_literals_spec.rb +0 -58
- data/spec/rubocop/cops/symbol_array_spec.rb +0 -41
- data/spec/rubocop/cops/symbol_name_spec.rb +0 -119
- data/spec/rubocop/cops/syntax_spec.rb +0 -41
- data/spec/rubocop/cops/tab_spec.rb +0 -21
- data/spec/rubocop/cops/ternary_operator_spec.rb +0 -40
- data/spec/rubocop/cops/trailing_whitespace_spec.rb +0 -27
- data/spec/rubocop/cops/trivial_accessors_spec.rb +0 -337
- data/spec/rubocop/cops/unless_else_spec.rb +0 -29
- data/spec/rubocop/cops/variable_interpolation_spec.rb +0 -49
- data/spec/rubocop/cops/when_then_spec.rb +0 -38
- data/spec/rubocop/cops/word_array_spec.rb +0 -47
- data/spec/rubocop/reports/emacs_style_spec.rb +0 -25
- data/spec/rubocop/reports/report_spec.rb +0 -29
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpaceAroundEqualsInParameterDefault do
|
9
|
+
let(:space) { SpaceAroundEqualsInParameterDefault.new }
|
10
|
+
|
11
|
+
it 'registers an offence for default value assignment without space' do
|
12
|
+
inspect_source(space, ['def f(x, y=0, z=1)', 'end'])
|
13
|
+
expect(space.offences.map(&:message)).to eq(
|
14
|
+
['Surrounding space missing in default value assignment.'] * 2)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'registers an offence for assignment empty string without space' do
|
18
|
+
inspect_source(space, ['def f(x, y="", z=1)', 'end'])
|
19
|
+
expect(space.offences.size).to eq(2)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'registers an offence for assignment of empty list without space' do
|
23
|
+
inspect_source(space, ['def f(x, y=[])', 'end'])
|
24
|
+
expect(space.offences.size).to eq(1)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'accepts default value assignment with space' do
|
28
|
+
inspect_source(space, ['def f(x, y = 0, z = {})', 'end'])
|
29
|
+
expect(space.offences.map(&:message)).to be_empty
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,216 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpaceAroundOperators do
|
9
|
+
let(:space) { SpaceAroundOperators.new }
|
10
|
+
|
11
|
+
it 'registers an offence for assignment without space on both sides' do
|
12
|
+
inspect_source(space, ['x=0', 'y= 0', 'z =0'])
|
13
|
+
expect(space.offences.map(&:message)).to eq(
|
14
|
+
["Surrounding space missing for operator '='."] * 3)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'registers an offence for ternary operator without space' do
|
18
|
+
inspect_source(space, ['x == 0?1:2'])
|
19
|
+
expect(space.offences.map(&:message)).to eq(
|
20
|
+
["Surrounding space missing for operator '?'.",
|
21
|
+
"Surrounding space missing for operator ':'."])
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'registers an offence in presence of modifier if statement' do
|
25
|
+
check_modifier('if')
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'registers an offence in presence of modifier unless statement' do
|
29
|
+
check_modifier('unless')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offence in presence of modifier while statement' do
|
33
|
+
check_modifier('unless')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'registers an offence in presence of modifier until statement' do
|
37
|
+
check_modifier('unless')
|
38
|
+
end
|
39
|
+
|
40
|
+
def check_modifier(keyword)
|
41
|
+
src = ["a=1 #{keyword} condition",
|
42
|
+
'c=2']
|
43
|
+
inspect_source(space, src)
|
44
|
+
expect(space.offences.map(&:line)).to eq([1, 2])
|
45
|
+
expect(space.offences.map(&:message)).to eq(
|
46
|
+
["Surrounding space missing for operator '='."] * 2)
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'registers an offence for binary operators that could be unary' do
|
50
|
+
inspect_source(space, ['a-3', 'x&0xff', 'z+0'])
|
51
|
+
expect(space.offences.map(&:message)).to eq(
|
52
|
+
["Surrounding space missing for operator '-'.",
|
53
|
+
"Surrounding space missing for operator '&'.",
|
54
|
+
"Surrounding space missing for operator '+'."])
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'registers an offence for arguments to a method' do
|
58
|
+
inspect_source(space, ['puts 1+2'])
|
59
|
+
expect(space.offences.map(&:message)).to eq(
|
60
|
+
["Surrounding space missing for operator '+'."])
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'accepts operator symbols' do
|
64
|
+
inspect_source(space, ['func(:-)'])
|
65
|
+
expect(space.offences.map(&:message)).to be_empty
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'accepts ranges' do
|
69
|
+
inspect_source(space, ['a, b = (1..2), (1...3)'])
|
70
|
+
expect(space.offences.map(&:message)).to be_empty
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'accepts scope operator' do
|
74
|
+
source = ['@io.class == Zlib::GzipWriter']
|
75
|
+
inspect_source(space, source)
|
76
|
+
expect(space.offences.map(&:message)).to be_empty
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'accepts ::Kernel::raise' do
|
80
|
+
source = ['::Kernel::raise IllegalBlockError.new']
|
81
|
+
inspect_source(space, source)
|
82
|
+
expect(space.offences.map(&:message)).to be_empty
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'accepts exclamation point negation' do
|
86
|
+
inspect_source(space, ['x = !a&&!b'])
|
87
|
+
expect(space.offences.map(&:message)).to eq(
|
88
|
+
["Surrounding space missing for operator '&&'."])
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'accepts exclamation point definition' do
|
92
|
+
inspect_source(space, [' def !',
|
93
|
+
' !__getobj__',
|
94
|
+
' end'])
|
95
|
+
expect(space.offences).to be_empty
|
96
|
+
expect(space.offences.map(&:message)).to be_empty
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'accepts a unary' do
|
100
|
+
inspect_source(space,
|
101
|
+
[' def bm(label_width = 0, *labels, &blk)',
|
102
|
+
' benchmark(CAPTION, label_width, FORMAT,',
|
103
|
+
' *labels, &blk)',
|
104
|
+
' end',
|
105
|
+
'',
|
106
|
+
' def each &block',
|
107
|
+
' end',
|
108
|
+
'',
|
109
|
+
' def each *args',
|
110
|
+
' end',
|
111
|
+
''])
|
112
|
+
expect(space.offences.map(&:message)).to be_empty
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'accepts splat operator' do
|
116
|
+
inspect_source(space, ['return *list if options'])
|
117
|
+
expect(space.offences.map(&:message)).to be_empty
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'accepts def of operator' do
|
121
|
+
inspect_source(space, ['def +(other); end',
|
122
|
+
'def self.===(other); end'])
|
123
|
+
expect(space.offences.map(&:message)).to be_empty
|
124
|
+
end
|
125
|
+
|
126
|
+
it 'accepts an operator at the end of a line' do
|
127
|
+
inspect_source(space,
|
128
|
+
["['Favor unless over if for negative ' +",
|
129
|
+
" 'conditions.'] * 2"])
|
130
|
+
expect(space.offences.map(&:message)).to eq([])
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'accepts an assignment with spaces' do
|
134
|
+
inspect_source(space, ['x = 0'])
|
135
|
+
expect(space.offences).to be_empty
|
136
|
+
end
|
137
|
+
|
138
|
+
it 'accepts an operator called with method syntax' do
|
139
|
+
inspect_source(space, ['Date.today.+(1).to_s'])
|
140
|
+
expect(space.offences).to be_empty
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'registers an offence for operators without spaces' do
|
144
|
+
inspect_source(space,
|
145
|
+
['x+= a+b-c*d/e%f^g|h&i||j',
|
146
|
+
'y -=k&&l'])
|
147
|
+
expect(space.offences.map(&:message))
|
148
|
+
.to eq(["Surrounding space missing for operator '+='.",
|
149
|
+
"Surrounding space missing for operator '+'.",
|
150
|
+
"Surrounding space missing for operator '-'.",
|
151
|
+
"Surrounding space missing for operator '*'.",
|
152
|
+
"Surrounding space missing for operator '/'.",
|
153
|
+
"Surrounding space missing for operator '%'.",
|
154
|
+
"Surrounding space missing for operator '^'.",
|
155
|
+
"Surrounding space missing for operator '|'.",
|
156
|
+
"Surrounding space missing for operator '&'.",
|
157
|
+
"Surrounding space missing for operator '||'.",
|
158
|
+
"Surrounding space missing for operator '-='.",
|
159
|
+
"Surrounding space missing for operator '&&'."])
|
160
|
+
end
|
161
|
+
|
162
|
+
it 'accepts operators with spaces' do
|
163
|
+
inspect_source(space,
|
164
|
+
['x += a + b - c * d / e % f ^ g | h & i || j',
|
165
|
+
'y -= k && l'])
|
166
|
+
expect(space.offences.map(&:message)).to eq([])
|
167
|
+
end
|
168
|
+
|
169
|
+
it "accepts some operators that are exceptions & don't need spaces" do
|
170
|
+
inspect_source(space, ['(1..3)',
|
171
|
+
'ActionController::Base',
|
172
|
+
'each { |s, t| }'])
|
173
|
+
expect(space.offences.map(&:message)).to eq([])
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'accepts an assignment followed by newline' do
|
177
|
+
inspect_source(space, ['x =', '0'])
|
178
|
+
expect(space.offences).to be_empty
|
179
|
+
end
|
180
|
+
|
181
|
+
it 'registers an offences for exponent operator with spaces' do
|
182
|
+
inspect_source(space, ['x = a * b ** 2'])
|
183
|
+
expect(space.offences.map(&:message)).to eq(
|
184
|
+
['Space around operator ** detected.'])
|
185
|
+
end
|
186
|
+
|
187
|
+
it 'accepts exponent operator without spaces' do
|
188
|
+
inspect_source(space, ['x = a * b**2'])
|
189
|
+
expect(space.offences).to be_empty
|
190
|
+
end
|
191
|
+
|
192
|
+
it 'accepts unary operators without space' do
|
193
|
+
inspect_source(space, ['[].map(&:size)',
|
194
|
+
'-3',
|
195
|
+
'x = +2'])
|
196
|
+
expect(space.offences.map(&:message)).to eq([])
|
197
|
+
end
|
198
|
+
|
199
|
+
it 'accepts argument default values without space' do
|
200
|
+
# These are handled by SpaceAroundEqualsInParameterDefault,
|
201
|
+
# so SpaceAroundOperators leaves them alone.
|
202
|
+
inspect_source(space,
|
203
|
+
['def init(name=nil)',
|
204
|
+
'end'])
|
205
|
+
expect(space.offences.map(&:message)).to be_empty
|
206
|
+
end
|
207
|
+
|
208
|
+
it 'accepts the construct class <<self with no space after <<' do
|
209
|
+
inspect_source(space, ['class <<self',
|
210
|
+
'end'])
|
211
|
+
expect(space.offences.map(&:message)).to be_empty
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpaceInsideBrackets do
|
9
|
+
let(:space) { SpaceInsideBrackets.new }
|
10
|
+
|
11
|
+
it 'registers an offence for an array literal with spaces inside' do
|
12
|
+
inspect_source(space, ['a = [1, 2 ]',
|
13
|
+
'b = [ 1, 2]'])
|
14
|
+
expect(space.offences.map(&:message)).to eq(
|
15
|
+
['Space inside square brackets detected.',
|
16
|
+
'Space inside square brackets detected.'])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'accepts space inside strings within square brackets' do
|
20
|
+
inspect_source(space, ["['Encoding:',",
|
21
|
+
" ' Enabled: false']"])
|
22
|
+
expect(space.offences.map(&:message)).to be_empty
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'accepts space inside square brackets if on its own row' do
|
26
|
+
inspect_source(space, ['a = [',
|
27
|
+
' 1, 2',
|
28
|
+
' ]'])
|
29
|
+
expect(space.offences.map(&:message)).to be_empty
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'accepts square brackets as method name' do
|
33
|
+
inspect_source(space, ['def Vector.[](*array)',
|
34
|
+
'end'])
|
35
|
+
expect(space.offences.map(&:message)).to be_empty
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'accepts square brackets called with method call syntax' do
|
39
|
+
inspect_source(space, ['subject.[](0)'])
|
40
|
+
expect(space.offences.map(&:message)).to be_empty
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'only reports a single space once' do
|
44
|
+
inspect_source(space, ['[ ]'])
|
45
|
+
expect(space.offences.map(&:message)).to eq(
|
46
|
+
['Space inside square brackets detected.'])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpaceInsideHashLiteralBraces do
|
9
|
+
let(:sihlb) { SpaceInsideHashLiteralBraces.new }
|
10
|
+
before do
|
11
|
+
SpaceInsideHashLiteralBraces.config = {
|
12
|
+
'EnforcedStyleIsWithSpaces' => true
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'registers an offence for hashes with no spaces by default' do
|
17
|
+
inspect_source(sihlb,
|
18
|
+
['h = {a: 1, b: :two}',
|
19
|
+
'h = {a => 1 }'])
|
20
|
+
expect(sihlb.offences.map(&:message)).to eq(
|
21
|
+
['Space inside hash literal braces missing.'] * 3)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'registers an offence for hashes with no spaces if so configured' do
|
25
|
+
inspect_source(sihlb,
|
26
|
+
['h = {a: 1, b: 2}',
|
27
|
+
'h = {a => 1 }'])
|
28
|
+
expect(sihlb.offences.map(&:message)).to eq(
|
29
|
+
['Space inside hash literal braces missing.'] * 3)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'registers an offence for hashes with spaces if so configured' do
|
33
|
+
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
34
|
+
false
|
35
|
+
inspect_source(sihlb,
|
36
|
+
['h = { a: 1, b: 2 }'])
|
37
|
+
expect(sihlb.offences.map(&:message)).to eq(
|
38
|
+
['Space inside hash literal braces detected.'] * 2)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'accepts hashes with spaces by default' do
|
42
|
+
inspect_source(sihlb,
|
43
|
+
['h = { a: 1, b: 2 }',
|
44
|
+
'h = { a => 1 }'])
|
45
|
+
expect(sihlb.offences.map(&:message)).to be_empty
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'accepts hashes with no spaces if so configured' do
|
49
|
+
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
50
|
+
false
|
51
|
+
inspect_source(sihlb,
|
52
|
+
['h = {a: 1, b: 2}',
|
53
|
+
'h = {a => 1}'])
|
54
|
+
expect(sihlb.offences.map(&:message)).to be_empty
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'accepts multiline hashes even if configured for no space' do
|
58
|
+
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
59
|
+
false
|
60
|
+
inspect_source(sihlb,
|
61
|
+
['h = {',
|
62
|
+
' a: 1,',
|
63
|
+
' b: 2,',
|
64
|
+
'}'])
|
65
|
+
expect(sihlb.offences).to be_empty
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'accepts empty hashes without spaces by default' do
|
69
|
+
inspect_source(sihlb, ['h = {}'])
|
70
|
+
expect(sihlb.offences).to be_empty
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'accepts empty hashes without spaces if configured false' do
|
74
|
+
SpaceInsideHashLiteralBraces.config['EnforcedStyleIsWithSpaces'] =
|
75
|
+
false
|
76
|
+
inspect_source(sihlb, ['h = {}'])
|
77
|
+
expect(sihlb.offences).to be_empty
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'accepts empty hashes without spaces even if configured true' do
|
81
|
+
inspect_source(sihlb, ['h = {}'])
|
82
|
+
expect(sihlb.offences).to be_empty
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'accepts hash literals with no braces' do
|
86
|
+
inspect_source(sihlb, ['x(a: b.c)'])
|
87
|
+
expect(sihlb.offences).to be_empty
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'can handle interpolation in a braceless hash literal' do
|
91
|
+
# A tricky special case where the closing brace of the
|
92
|
+
# interpolation risks getting confused for a hash literal brace.
|
93
|
+
inspect_source(sihlb, ['f(get: "#{x}")'])
|
94
|
+
expect(sihlb.offences).to be_empty
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe SpaceInsideParens do
|
9
|
+
let(:space) { SpaceInsideParens.new }
|
10
|
+
|
11
|
+
it 'registers an offence for spaces inside parens' do
|
12
|
+
inspect_source(space, ['f( 3)',
|
13
|
+
'g(3 )'])
|
14
|
+
expect(space.offences.map(&:message)).to eq(
|
15
|
+
['Space inside parentheses detected.',
|
16
|
+
'Space inside parentheses detected.'])
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'accepts parentheses in block parameter list' do
|
20
|
+
inspect_source(space,
|
21
|
+
['list.inject(Tms.new) { |sum, (label, item)|',
|
22
|
+
'}'])
|
23
|
+
expect(space.offences.map(&:message)).to be_empty
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'accepts parentheses with no spaces' do
|
27
|
+
inspect_source(space, ['split("\n")'])
|
28
|
+
expect(space.offences.map(&:message)).to be_empty
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Rubocop
|
6
|
+
module Cop
|
7
|
+
module Style
|
8
|
+
describe StringLiterals do
|
9
|
+
let(:sl) { StringLiterals.new }
|
10
|
+
|
11
|
+
it 'registers offence for double quotes when single quotes suffice' do
|
12
|
+
inspect_source(sl, ['s = "abc"',
|
13
|
+
'x = "a\\\\b"',
|
14
|
+
'y ="\\\\b"',
|
15
|
+
'z = "a\\\\"'])
|
16
|
+
expect(sl.offences.size).to eq(4)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'accepts double quotes when they are needed' do
|
20
|
+
src = ['a = "\n"',
|
21
|
+
'b = "#{encode_severity}:' +
|
22
|
+
'#{sprintf("%3d", line_number)}: #{m}"',
|
23
|
+
'c = "\'"',
|
24
|
+
'd = "#@test"',
|
25
|
+
'e = "#$test"',
|
26
|
+
'f = "\e"',
|
27
|
+
'g = "#@@test"']
|
28
|
+
inspect_source(sl, src)
|
29
|
+
expect(sl.offences).to be_empty
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'accepts double quotes at the start of regexp literals' do
|
33
|
+
inspect_source(sl, ['s = /"((?:[^\\"]|\\.)*)"/'])
|
34
|
+
expect(sl.offences).to be_empty
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'accepts double quotes with some other special symbols' do
|
38
|
+
# "Substitutions in double-quoted strings"
|
39
|
+
# http://www.ruby-doc.org/docs/ProgrammingRuby/html/language.html
|
40
|
+
src = ['g = "\xf9"',
|
41
|
+
'copyright = "\u00A9"']
|
42
|
+
inspect_source(sl, src)
|
43
|
+
expect(sl.offences).to be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
it 'can handle double quotes within embedded expression' do
|
47
|
+
src = ['"#{"A"}"']
|
48
|
+
inspect_source(sl, src)
|
49
|
+
expect(sl.offences).to be_empty
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'can handle a built-in constant parsed as string' do
|
53
|
+
# Parser will produce str nodes for constants such as __FILE__.
|
54
|
+
src = ['if __FILE__ == $PROGRAM_NAME',
|
55
|
+
'end']
|
56
|
+
inspect_source(sl, src)
|
57
|
+
expect(sl.offences).to be_empty
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|