scss-lint 0.33.0 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/default.yml +19 -1
- data/data/properties.txt +4 -0
- data/lib/scss_lint.rb +1 -0
- data/lib/scss_lint/cli.rb +4 -42
- data/lib/scss_lint/config.rb +1 -45
- data/lib/scss_lint/control_comment_processor.rb +47 -15
- data/lib/scss_lint/file_finder.rb +57 -0
- data/lib/scss_lint/linter/bang_format.rb +1 -1
- data/lib/scss_lint/linter/border_zero.rb +25 -9
- data/lib/scss_lint/linter/color_keyword.rb +3 -13
- data/lib/scss_lint/linter/color_variable.rb +36 -0
- data/lib/scss_lint/linter/declaration_order.rb +2 -2
- data/lib/scss_lint/linter/important_rule.rb +12 -0
- data/lib/scss_lint/linter/indentation.rb +7 -1
- data/lib/scss_lint/linter/property_count.rb +44 -0
- data/lib/scss_lint/linter/property_sort_order.rb +73 -19
- data/lib/scss_lint/linter/string_quotes.rb +9 -0
- data/lib/scss_lint/linter/variable_for_property.rb +20 -0
- data/lib/scss_lint/linter/vendor_prefixes.rb +3 -3
- data/lib/scss_lint/runner.rb +5 -7
- data/lib/scss_lint/utils.rb +34 -0
- data/lib/scss_lint/version.rb +1 -1
- data/spec/scss_lint/cli_spec.rb +1 -1
- data/spec/scss_lint/config_spec.rb +4 -203
- data/spec/scss_lint/engine_spec.rb +4 -4
- data/spec/scss_lint/file_finder_spec.rb +110 -0
- data/spec/scss_lint/linter/bang_format_spec.rb +28 -18
- data/spec/scss_lint/linter/border_zero_spec.rb +50 -16
- data/spec/scss_lint/linter/color_keyword_spec.rb +16 -16
- data/spec/scss_lint/linter/color_variable_spec.rb +102 -0
- data/spec/scss_lint/linter/comment_spec.rb +9 -9
- data/spec/scss_lint/linter/compass/property_with_mixin_spec.rb +10 -10
- data/spec/scss_lint/linter/debug_statement_spec.rb +4 -4
- data/spec/scss_lint/linter/declaration_order_spec.rb +80 -80
- data/spec/scss_lint/linter/duplicate_property_spec.rb +30 -30
- data/spec/scss_lint/linter/else_placement_spec.rb +16 -16
- data/spec/scss_lint/linter/empty_line_between_blocks_spec.rb +38 -38
- data/spec/scss_lint/linter/empty_rule_spec.rb +4 -4
- data/spec/scss_lint/linter/final_newline_spec.rb +6 -6
- data/spec/scss_lint/linter/hex_length_spec.rb +16 -16
- data/spec/scss_lint/linter/hex_notation_spec.rb +16 -16
- data/spec/scss_lint/linter/hex_validation_spec.rb +6 -6
- data/spec/scss_lint/linter/id_selector_spec.rb +10 -10
- data/spec/scss_lint/linter/import_path_spec.rb +45 -45
- data/spec/scss_lint/linter/important_rule_spec.rb +43 -0
- data/spec/scss_lint/linter/indentation_spec.rb +103 -43
- data/spec/scss_lint/linter/leading_zero_spec.rb +45 -45
- data/spec/scss_lint/linter/mergeable_selector_spec.rb +32 -32
- data/spec/scss_lint/linter/name_format_spec.rb +75 -41
- data/spec/scss_lint/linter/nesting_depth_spec.rb +14 -14
- data/spec/scss_lint/linter/placeholder_in_extend_spec.rb +12 -12
- data/spec/scss_lint/linter/property_count_spec.rb +104 -0
- data/spec/scss_lint/linter/property_sort_order_spec.rb +138 -48
- data/spec/scss_lint/linter/property_spelling_spec.rb +14 -14
- data/spec/scss_lint/linter/qualifying_element_spec.rb +26 -26
- data/spec/scss_lint/linter/selector_depth_spec.rb +26 -26
- data/spec/scss_lint/linter/selector_format_spec.rb +114 -114
- data/spec/scss_lint/linter/shorthand_spec.rb +32 -32
- data/spec/scss_lint/linter/single_line_per_property_spec.rb +10 -10
- data/spec/scss_lint/linter/single_line_per_selector_spec.rb +24 -24
- data/spec/scss_lint/linter/space_after_comma_spec.rb +60 -60
- data/spec/scss_lint/linter/space_after_property_colon_spec.rb +44 -44
- data/spec/scss_lint/linter/space_after_property_name_spec.rb +6 -6
- data/spec/scss_lint/linter/space_before_brace_spec.rb +119 -119
- data/spec/scss_lint/linter/space_between_parens_spec.rb +48 -48
- data/spec/scss_lint/linter/string_quotes_spec.rb +74 -62
- data/spec/scss_lint/linter/trailing_semicolon_spec.rb +53 -54
- data/spec/scss_lint/linter/trailing_zero_spec.rb +34 -34
- data/spec/scss_lint/linter/unnecessary_mantissa_spec.rb +10 -10
- data/spec/scss_lint/linter/unnecessary_parent_reference_spec.rb +18 -18
- data/spec/scss_lint/linter/url_format_spec.rb +4 -4
- data/spec/scss_lint/linter/url_quotes_spec.rb +14 -14
- data/spec/scss_lint/linter/variable_for_property_spec.rb +115 -0
- data/spec/scss_lint/linter/vendor_prefixes_spec.rb +66 -56
- data/spec/scss_lint/linter/zero_unit_spec.rb +22 -22
- data/spec/scss_lint/linter_spec.rb +72 -28
- data/spec/scss_lint/runner_spec.rb +0 -1
- data/spec/scss_lint/selector_visitor_spec.rb +23 -23
- data/spec/spec_helper.rb +2 -2
- metadata +27 -12
| @@ -2,39 +2,39 @@ require 'spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            describe SCSSLint::Linter::DuplicateProperty do
         | 
| 4 4 | 
             
              context 'when rule set is empty' do
         | 
| 5 | 
            -
                let(: | 
| 5 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 6 6 | 
             
                  p {
         | 
| 7 7 | 
             
                  }
         | 
| 8 | 
            -
                 | 
| 8 | 
            +
                SCSS
         | 
| 9 9 |  | 
| 10 10 | 
             
                it { should_not report_lint }
         | 
| 11 11 | 
             
              end
         | 
| 12 12 |  | 
| 13 13 | 
             
              context 'when rule set contains no duplicates' do
         | 
| 14 | 
            -
                let(: | 
| 14 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 15 15 | 
             
                  p {
         | 
| 16 16 | 
             
                    margin: 0;
         | 
| 17 17 | 
             
                    padding: 0;
         | 
| 18 18 | 
             
                  }
         | 
| 19 | 
            -
                 | 
| 19 | 
            +
                SCSS
         | 
| 20 20 |  | 
| 21 21 | 
             
                it { should_not report_lint }
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              context 'when rule set contains duplicates' do
         | 
| 25 | 
            -
                let(: | 
| 25 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 26 26 | 
             
                  p {
         | 
| 27 27 | 
             
                    margin: 0;
         | 
| 28 28 | 
             
                    padding: 0;
         | 
| 29 29 | 
             
                    margin: 1em;
         | 
| 30 30 | 
             
                  }
         | 
| 31 | 
            -
                 | 
| 31 | 
            +
                SCSS
         | 
| 32 32 |  | 
| 33 33 | 
             
                it { should report_lint line: 4 }
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              context 'when rule set contains duplicates but only on vendor-prefixed property values' do
         | 
| 37 | 
            -
                let(: | 
| 37 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 38 38 | 
             
                  p {
         | 
| 39 39 | 
             
                    background: -moz-linear-gradient(center top , #fff, #000);
         | 
| 40 40 | 
             
                    background: -ms-linear-gradient(center top , #fff, #000);
         | 
| @@ -43,59 +43,59 @@ describe SCSSLint::Linter::DuplicateProperty do | |
| 43 43 | 
             
                    background: linear-gradient(center top , #fff, #000);
         | 
| 44 44 | 
             
                    margin: 1em;
         | 
| 45 45 | 
             
                  }
         | 
| 46 | 
            -
                 | 
| 46 | 
            +
                SCSS
         | 
| 47 47 |  | 
| 48 48 | 
             
                it { should_not report_lint }
         | 
| 49 49 | 
             
              end
         | 
| 50 50 |  | 
| 51 51 | 
             
              context 'when placeholder contains duplicates but only on vendor-prefixed values' do
         | 
| 52 | 
            -
                let(: | 
| 52 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 53 53 | 
             
                  %cursor-grabbing {
         | 
| 54 54 | 
             
                    cursor: -moz-grabbing;
         | 
| 55 55 | 
             
                    cursor: -webkit-grabbing;
         | 
| 56 56 | 
             
                    cursor: grabbing;
         | 
| 57 57 | 
             
                  }
         | 
| 58 | 
            -
                 | 
| 58 | 
            +
                SCSS
         | 
| 59 59 |  | 
| 60 60 | 
             
                it { should_not report_lint }
         | 
| 61 61 | 
             
              end
         | 
| 62 62 |  | 
| 63 63 | 
             
              context 'when placeholder contains exact duplicates besides for vendor-prefixed values' do
         | 
| 64 | 
            -
                let(: | 
| 64 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 65 65 | 
             
                  %cursor-grabbing {
         | 
| 66 66 | 
             
                    cursor: grabbing;
         | 
| 67 67 | 
             
                    cursor: grabbing;
         | 
| 68 68 | 
             
                  }
         | 
| 69 | 
            -
                 | 
| 69 | 
            +
                SCSS
         | 
| 70 70 |  | 
| 71 71 | 
             
                it { should report_lint line: 3 }
         | 
| 72 72 | 
             
              end
         | 
| 73 73 |  | 
| 74 74 | 
             
              context 'when mixin contains duplicates but only on vendor-prefixed values' do
         | 
| 75 | 
            -
                let(: | 
| 75 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 76 76 | 
             
                  @mixin cursor-grabbing($num) {
         | 
| 77 77 | 
             
                    cursor: -moz-grabbing;
         | 
| 78 78 | 
             
                    cursor: -webkit-grabbing;
         | 
| 79 79 | 
             
                    cursor: grabbing;
         | 
| 80 80 | 
             
                  }
         | 
| 81 | 
            -
                 | 
| 81 | 
            +
                SCSS
         | 
| 82 82 |  | 
| 83 83 | 
             
                it { should_not report_lint }
         | 
| 84 84 | 
             
              end
         | 
| 85 85 |  | 
| 86 86 | 
             
              context 'when mixin contains duplicates besides for vendor-prefixed values' do
         | 
| 87 | 
            -
                let(: | 
| 87 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 88 88 | 
             
                  @mixin cursor-grabbing($num) {
         | 
| 89 89 | 
             
                    cursor: grabbing;
         | 
| 90 90 | 
             
                    cursor: grabbing;
         | 
| 91 91 | 
             
                  }
         | 
| 92 | 
            -
                 | 
| 92 | 
            +
                SCSS
         | 
| 93 93 |  | 
| 94 94 | 
             
                it { should report_lint line: 3 }
         | 
| 95 95 | 
             
              end
         | 
| 96 96 |  | 
| 97 97 | 
             
              context 'when rule set contains exact duplicates besides for vendor-prefixed property values' do
         | 
| 98 | 
            -
                let(: | 
| 98 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 99 99 | 
             
                  p {
         | 
| 100 100 | 
             
                    background: -moz-linear-gradient(center top , #fff, #000);
         | 
| 101 101 | 
             
                    background: -ms-linear-gradient(center top , #fff, #000);
         | 
| @@ -105,13 +105,13 @@ describe SCSSLint::Linter::DuplicateProperty do | |
| 105 105 | 
             
                    background: linear-gradient(center top , #fff, #000);
         | 
| 106 106 | 
             
                    margin: 1em;
         | 
| 107 107 | 
             
                  }
         | 
| 108 | 
            -
                 | 
| 108 | 
            +
                SCSS
         | 
| 109 109 |  | 
| 110 110 | 
             
                it { should report_lint line: 7 }
         | 
| 111 111 | 
             
              end
         | 
| 112 112 |  | 
| 113 113 | 
             
              context 'when rule set contains non-exact duplicates besides for vendor-prefixed values' do
         | 
| 114 | 
            -
                let(: | 
| 114 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 115 115 | 
             
                  p {
         | 
| 116 116 | 
             
                    background: -moz-linear-gradient(center top , #fff, #000);
         | 
| 117 117 | 
             
                    background: -ms-linear-gradient(center top , #fff, #000);
         | 
| @@ -121,68 +121,68 @@ describe SCSSLint::Linter::DuplicateProperty do | |
| 121 121 | 
             
                    background: linear-gradient-b(center top , #fff, #000);
         | 
| 122 122 | 
             
                    margin: 1em;
         | 
| 123 123 | 
             
                  }
         | 
| 124 | 
            -
                 | 
| 124 | 
            +
                SCSS
         | 
| 125 125 |  | 
| 126 126 | 
             
                it { should report_lint line: 7 }
         | 
| 127 127 | 
             
              end
         | 
| 128 128 |  | 
| 129 129 | 
             
              context 'when rule set contains multiple duplicates' do
         | 
| 130 | 
            -
                let(: | 
| 130 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 131 131 | 
             
                  p {
         | 
| 132 132 | 
             
                    margin: 0;
         | 
| 133 133 | 
             
                    padding: 0;
         | 
| 134 134 | 
             
                    margin: 1em;
         | 
| 135 135 | 
             
                    margin: 2em;
         | 
| 136 136 | 
             
                  }
         | 
| 137 | 
            -
                 | 
| 137 | 
            +
                SCSS
         | 
| 138 138 |  | 
| 139 139 | 
             
                it { should report_lint line: 4 }
         | 
| 140 140 | 
             
                it { should report_lint line: 5 }
         | 
| 141 141 | 
             
              end
         | 
| 142 142 |  | 
| 143 143 | 
             
              context 'when rule set contains duplicate properties with interpolation' do
         | 
| 144 | 
            -
                let(: | 
| 144 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 145 145 | 
             
                  p {
         | 
| 146 146 | 
             
                    $direction: 'right';
         | 
| 147 147 | 
             
                    margin-\#{direction}: 0;
         | 
| 148 148 | 
             
                    $direction: 'left';
         | 
| 149 149 | 
             
                    margin-\#{direction}: 0;
         | 
| 150 150 | 
             
                  }
         | 
| 151 | 
            -
                 | 
| 151 | 
            +
                SCSS
         | 
| 152 152 |  | 
| 153 153 | 
             
                it { should_not report_lint }
         | 
| 154 154 | 
             
              end
         | 
| 155 155 |  | 
| 156 156 | 
             
              context 'when property contains a variable' do
         | 
| 157 | 
            -
                let(: | 
| 157 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 158 158 | 
             
                  p {
         | 
| 159 159 | 
             
                    color: $some-color;
         | 
| 160 160 | 
             
                  }
         | 
| 161 | 
            -
                 | 
| 161 | 
            +
                SCSS
         | 
| 162 162 |  | 
| 163 163 | 
             
                it { should_not report_lint }
         | 
| 164 164 | 
             
              end
         | 
| 165 165 |  | 
| 166 166 | 
             
              context 'when property contains a duplicate variable' do
         | 
| 167 | 
            -
                let(: | 
| 167 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 168 168 | 
             
                  p {
         | 
| 169 169 | 
             
                    color: $some-color;
         | 
| 170 170 | 
             
                    color: $some-color;
         | 
| 171 171 | 
             
                  }
         | 
| 172 | 
            -
                 | 
| 172 | 
            +
                SCSS
         | 
| 173 173 |  | 
| 174 174 | 
             
                it { should report_lint line: 3 }
         | 
| 175 175 | 
             
              end
         | 
| 176 176 |  | 
| 177 177 | 
             
              context 'when property contains a duplicate value in a nested rule set' do
         | 
| 178 | 
            -
                let(: | 
| 178 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 179 179 | 
             
                  .outer {
         | 
| 180 180 | 
             
                    .inner {
         | 
| 181 181 | 
             
                      color: $some-color;
         | 
| 182 182 | 
             
                      color: $some-color;
         | 
| 183 183 | 
             
                    }
         | 
| 184 184 | 
             
                  }
         | 
| 185 | 
            -
                 | 
| 185 | 
            +
                SCSS
         | 
| 186 186 |  | 
| 187 187 | 
             
                it { should report_lint line: 4 }
         | 
| 188 188 | 
             
              end
         | 
| @@ -2,42 +2,42 @@ require 'spec_helper' | |
| 2 2 |  | 
| 3 3 | 
             
            describe SCSSLint::Linter::ElsePlacement do
         | 
| 4 4 | 
             
              context 'when @if contains no accompanying @else' do
         | 
| 5 | 
            -
                let(: | 
| 5 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 6 6 | 
             
                  @if $condition {
         | 
| 7 7 | 
             
                    $var: 1;
         | 
| 8 8 | 
             
                  }
         | 
| 9 | 
            -
                 | 
| 9 | 
            +
                SCSS
         | 
| 10 10 |  | 
| 11 11 | 
             
                it { should_not report_lint }
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              context 'when @else is on different line' do
         | 
| 15 | 
            -
                let(: | 
| 15 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 16 16 | 
             
                  @if $condition {
         | 
| 17 17 | 
             
                    $var: 1;
         | 
| 18 18 | 
             
                  }
         | 
| 19 19 | 
             
                  @else {
         | 
| 20 20 | 
             
                    $var: 0;
         | 
| 21 21 | 
             
                  }
         | 
| 22 | 
            -
                 | 
| 22 | 
            +
                SCSS
         | 
| 23 23 |  | 
| 24 24 | 
             
                it { should report_lint line: 4 }
         | 
| 25 25 | 
             
              end
         | 
| 26 26 |  | 
| 27 27 | 
             
              context 'when @else is on the same line as previous curly' do
         | 
| 28 | 
            -
                let(: | 
| 28 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 29 29 | 
             
                  @if $condition {
         | 
| 30 30 | 
             
                    $var: 1;
         | 
| 31 31 | 
             
                  } @else {
         | 
| 32 32 | 
             
                    $var: 0;
         | 
| 33 33 | 
             
                  }
         | 
| 34 | 
            -
                 | 
| 34 | 
            +
                SCSS
         | 
| 35 35 |  | 
| 36 36 | 
             
                it { should_not report_lint }
         | 
| 37 37 | 
             
              end
         | 
| 38 38 |  | 
| 39 39 | 
             
              context 'when `@else if` is on different line' do
         | 
| 40 | 
            -
                let(: | 
| 40 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 41 41 | 
             
                  @if $condition {
         | 
| 42 42 | 
             
                    $var: 1;
         | 
| 43 43 | 
             
                  }
         | 
| @@ -47,14 +47,14 @@ describe SCSSLint::Linter::ElsePlacement do | |
| 47 47 | 
             
                  @else {
         | 
| 48 48 | 
             
                    $var: 0;
         | 
| 49 49 | 
             
                  }
         | 
| 50 | 
            -
                 | 
| 50 | 
            +
                SCSS
         | 
| 51 51 |  | 
| 52 52 | 
             
                it { should report_lint line: 4 }
         | 
| 53 53 | 
             
                it { should report_lint line: 7 }
         | 
| 54 54 | 
             
              end
         | 
| 55 55 |  | 
| 56 56 | 
             
              context 'when `@else if` is on the same line as previous curly' do
         | 
| 57 | 
            -
                let(: | 
| 57 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 58 58 | 
             
                  @if $condition {
         | 
| 59 59 | 
             
                    $var: 1;
         | 
| 60 60 | 
             
                  } @else if $other_condition {
         | 
| @@ -62,15 +62,15 @@ describe SCSSLint::Linter::ElsePlacement do | |
| 62 62 | 
             
                  } @else {
         | 
| 63 63 | 
             
                    $var: 0;
         | 
| 64 64 | 
             
                  }
         | 
| 65 | 
            -
                 | 
| 65 | 
            +
                SCSS
         | 
| 66 66 |  | 
| 67 67 | 
             
                it { should_not report_lint }
         | 
| 68 68 | 
             
              end
         | 
| 69 69 |  | 
| 70 70 | 
             
              context 'when @else is on same line as @if' do
         | 
| 71 | 
            -
                let(: | 
| 71 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 72 72 | 
             
                  @if $condition { $var: 1; } @else { $var: 0; }
         | 
| 73 | 
            -
                 | 
| 73 | 
            +
                SCSS
         | 
| 74 74 |  | 
| 75 75 | 
             
                it { should_not report_lint }
         | 
| 76 76 | 
             
              end
         | 
| @@ -79,26 +79,26 @@ describe SCSSLint::Linter::ElsePlacement do | |
| 79 79 | 
             
                let(:linter_config) { { 'style' => 'new_line' } }
         | 
| 80 80 |  | 
| 81 81 | 
             
                context 'when @else is on a new line' do
         | 
| 82 | 
            -
                  let(: | 
| 82 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 83 83 | 
             
                    @if $condition {
         | 
| 84 84 | 
             
                      $var: 1;
         | 
| 85 85 | 
             
                    }
         | 
| 86 86 | 
             
                    @else {
         | 
| 87 87 | 
             
                      $var: 0;
         | 
| 88 88 | 
             
                    }
         | 
| 89 | 
            -
                   | 
| 89 | 
            +
                  SCSS
         | 
| 90 90 |  | 
| 91 91 | 
             
                  it { should_not report_lint }
         | 
| 92 92 | 
             
                end
         | 
| 93 93 |  | 
| 94 94 | 
             
                context 'when @else is on the same line as previous curly brace' do
         | 
| 95 | 
            -
                  let(: | 
| 95 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 96 96 | 
             
                    @if $condition {
         | 
| 97 97 | 
             
                      $var: 1;
         | 
| 98 98 | 
             
                    } @else {
         | 
| 99 99 | 
             
                      $var: 0;
         | 
| 100 100 | 
             
                    }
         | 
| 101 | 
            -
                   | 
| 101 | 
            +
                  SCSS
         | 
| 102 102 |  | 
| 103 103 | 
             
                  it { should report_lint line: 3 }
         | 
| 104 104 | 
             
                end
         | 
| @@ -3,7 +3,7 @@ require 'spec_helper' | |
| 3 3 | 
             
            describe SCSSLint::Linter::EmptyLineBetweenBlocks do
         | 
| 4 4 | 
             
              context 'when there are multiple rule sets' do
         | 
| 5 5 | 
             
                context 'with blank lines between them' do
         | 
| 6 | 
            -
                  let(: | 
| 6 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 7 7 | 
             
                    a {
         | 
| 8 8 | 
             
                    }
         | 
| 9 9 |  | 
| @@ -12,20 +12,20 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 12 12 |  | 
| 13 13 | 
             
                    p {
         | 
| 14 14 | 
             
                    }
         | 
| 15 | 
            -
                   | 
| 15 | 
            +
                  SCSS
         | 
| 16 16 |  | 
| 17 17 | 
             
                  it { should_not report_lint }
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 20 | 
             
                context 'with no blank line between them' do
         | 
| 21 | 
            -
                  let(: | 
| 21 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 22 22 | 
             
                    a {
         | 
| 23 23 | 
             
                    }
         | 
| 24 24 | 
             
                    b {
         | 
| 25 25 | 
             
                    }
         | 
| 26 26 | 
             
                    p {
         | 
| 27 27 | 
             
                    }
         | 
| 28 | 
            -
                   | 
| 28 | 
            +
                  SCSS
         | 
| 29 29 |  | 
| 30 30 | 
             
                  it { should report_lint line: 2 }
         | 
| 31 31 | 
             
                  it { should report_lint line: 4 }
         | 
| @@ -35,21 +35,21 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 35 35 |  | 
| 36 36 | 
             
              context 'when a rule set contains nested rule sets' do
         | 
| 37 37 | 
             
                context 'and the nested rule sets have no blank line between them' do
         | 
| 38 | 
            -
                  let(: | 
| 38 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 39 39 | 
             
                    p {
         | 
| 40 40 | 
             
                      a {
         | 
| 41 41 | 
             
                      }
         | 
| 42 42 | 
             
                      b {
         | 
| 43 43 | 
             
                      }
         | 
| 44 44 | 
             
                    }
         | 
| 45 | 
            -
                   | 
| 45 | 
            +
                  SCSS
         | 
| 46 46 |  | 
| 47 47 | 
             
                  it { should report_lint line: 3 }
         | 
| 48 48 | 
             
                  it { should_not report_lint line: 5 }
         | 
| 49 49 | 
             
                end
         | 
| 50 50 |  | 
| 51 51 | 
             
                context 'and the nested rule sets have a blank line between them' do
         | 
| 52 | 
            -
                  let(: | 
| 52 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 53 53 | 
             
                    p {
         | 
| 54 54 | 
             
                      a {
         | 
| 55 55 | 
             
                      }
         | 
| @@ -57,32 +57,32 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 57 57 | 
             
                      b {
         | 
| 58 58 | 
             
                      }
         | 
| 59 59 | 
             
                    }
         | 
| 60 | 
            -
                   | 
| 60 | 
            +
                  SCSS
         | 
| 61 61 |  | 
| 62 62 | 
             
                  it { should_not report_lint }
         | 
| 63 63 | 
             
                end
         | 
| 64 64 |  | 
| 65 65 | 
             
                context 'and the nested rule set has a property preceding it' do
         | 
| 66 | 
            -
                  let(: | 
| 66 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 67 67 | 
             
                    p {
         | 
| 68 68 | 
             
                      margin: 0;
         | 
| 69 69 | 
             
                      a {
         | 
| 70 70 | 
             
                      }
         | 
| 71 71 | 
             
                    }
         | 
| 72 | 
            -
                   | 
| 72 | 
            +
                  SCSS
         | 
| 73 73 |  | 
| 74 74 | 
             
                  it { should report_lint line: 3 }
         | 
| 75 75 | 
             
                end
         | 
| 76 76 |  | 
| 77 77 | 
             
                context 'and the nested rule set has a property and empty line preceding it' do
         | 
| 78 | 
            -
                  let(: | 
| 78 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 79 79 | 
             
                    p {
         | 
| 80 80 | 
             
                      margin: 0;
         | 
| 81 81 |  | 
| 82 82 | 
             
                      a {
         | 
| 83 83 | 
             
                      }
         | 
| 84 84 | 
             
                    }
         | 
| 85 | 
            -
                   | 
| 85 | 
            +
                  SCSS
         | 
| 86 86 |  | 
| 87 87 | 
             
                  it { should_not report_lint }
         | 
| 88 88 | 
             
                end
         | 
| @@ -90,57 +90,57 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 90 90 |  | 
| 91 91 | 
             
              context 'when mixins are defined' do
         | 
| 92 92 | 
             
                context 'and there is no blank line between them' do
         | 
| 93 | 
            -
                  let(: | 
| 93 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 94 94 | 
             
                    @mixin mixin1() {
         | 
| 95 95 | 
             
                    }
         | 
| 96 96 | 
             
                    @mixin mixin2() {
         | 
| 97 97 | 
             
                    }
         | 
| 98 | 
            -
                   | 
| 98 | 
            +
                  SCSS
         | 
| 99 99 |  | 
| 100 100 | 
             
                  it { should report_lint line: 2 }
         | 
| 101 101 | 
             
                end
         | 
| 102 102 |  | 
| 103 103 | 
             
                context 'and there is a blank line between them' do
         | 
| 104 | 
            -
                  let(: | 
| 104 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 105 105 | 
             
                    @mixin mixin1() {
         | 
| 106 106 | 
             
                    }
         | 
| 107 107 |  | 
| 108 108 | 
             
                    @mixin mixin2() {
         | 
| 109 109 | 
             
                    }
         | 
| 110 | 
            -
                   | 
| 110 | 
            +
                  SCSS
         | 
| 111 111 |  | 
| 112 112 | 
             
                  it { should_not report_lint }
         | 
| 113 113 | 
             
                end
         | 
| 114 114 | 
             
              end
         | 
| 115 115 |  | 
| 116 116 | 
             
              context 'when mixins are included without content' do
         | 
| 117 | 
            -
                let(: | 
| 117 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 118 118 | 
             
                  p {
         | 
| 119 119 | 
             
                    @include mixin1();
         | 
| 120 120 | 
             
                    property: blah;
         | 
| 121 121 | 
             
                    @include mixin2(4);
         | 
| 122 122 | 
             
                  }
         | 
| 123 | 
            -
                 | 
| 123 | 
            +
                SCSS
         | 
| 124 124 |  | 
| 125 125 | 
             
                it { should_not report_lint }
         | 
| 126 126 | 
             
              end
         | 
| 127 127 |  | 
| 128 128 | 
             
              context 'when mixins are included with content' do
         | 
| 129 129 | 
             
                context 'and there is no blank line between them' do
         | 
| 130 | 
            -
                  let(: | 
| 130 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 131 131 | 
             
                    @include mixin1() {
         | 
| 132 132 | 
             
                      property: value;
         | 
| 133 133 | 
             
                    }
         | 
| 134 134 | 
             
                    @include mixin2() {
         | 
| 135 135 | 
             
                      property: value;
         | 
| 136 136 | 
             
                    }
         | 
| 137 | 
            -
                   | 
| 137 | 
            +
                  SCSS
         | 
| 138 138 |  | 
| 139 139 | 
             
                  it { should report_lint line: 3 }
         | 
| 140 140 | 
             
                end
         | 
| 141 141 |  | 
| 142 142 | 
             
                context 'and there is a blank line between them' do
         | 
| 143 | 
            -
                  let(: | 
| 143 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 144 144 | 
             
                    @include mixin1() {
         | 
| 145 145 | 
             
                      property: value;
         | 
| 146 146 | 
             
                    }
         | 
| @@ -148,7 +148,7 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 148 148 | 
             
                    @include mixin2() {
         | 
| 149 149 | 
             
                      property: value;
         | 
| 150 150 | 
             
                    }
         | 
| 151 | 
            -
                   | 
| 151 | 
            +
                  SCSS
         | 
| 152 152 |  | 
| 153 153 | 
             
                  it { should_not report_lint }
         | 
| 154 154 | 
             
                end
         | 
| @@ -156,70 +156,70 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 156 156 |  | 
| 157 157 | 
             
              context 'when functions are defined' do
         | 
| 158 158 | 
             
                context 'and there is no blank line between them' do
         | 
| 159 | 
            -
                  let(: | 
| 159 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 160 160 | 
             
                    @function func1() {
         | 
| 161 161 | 
             
                    }
         | 
| 162 162 | 
             
                    @function func2() {
         | 
| 163 163 | 
             
                    }
         | 
| 164 | 
            -
                   | 
| 164 | 
            +
                  SCSS
         | 
| 165 165 |  | 
| 166 166 | 
             
                  it { should report_lint line: 2 }
         | 
| 167 167 | 
             
                end
         | 
| 168 168 |  | 
| 169 169 | 
             
                context 'and there is a blank line between them' do
         | 
| 170 | 
            -
                  let(: | 
| 170 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 171 171 | 
             
                    @function func1() {
         | 
| 172 172 | 
             
                    }
         | 
| 173 173 |  | 
| 174 174 | 
             
                    @function func2() {
         | 
| 175 175 | 
             
                    }
         | 
| 176 | 
            -
                   | 
| 176 | 
            +
                  SCSS
         | 
| 177 177 |  | 
| 178 178 | 
             
                  it { should_not report_lint }
         | 
| 179 179 | 
             
                end
         | 
| 180 180 | 
             
              end
         | 
| 181 181 |  | 
| 182 182 | 
             
              context 'when a rule set is preceded by a comment' do
         | 
| 183 | 
            -
                let(: | 
| 183 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 184 184 | 
             
                  a {
         | 
| 185 185 | 
             
                  }
         | 
| 186 186 |  | 
| 187 187 | 
             
                  // This is a comment
         | 
| 188 188 | 
             
                  p {
         | 
| 189 189 | 
             
                  }
         | 
| 190 | 
            -
                 | 
| 190 | 
            +
                SCSS
         | 
| 191 191 |  | 
| 192 192 | 
             
                it { should_not report_lint }
         | 
| 193 193 | 
             
              end
         | 
| 194 194 |  | 
| 195 195 | 
             
              context 'when a rule set is immediately followed by a comment' do
         | 
| 196 | 
            -
                let(: | 
| 196 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 197 197 | 
             
                  a {
         | 
| 198 198 | 
             
                  } // A comment
         | 
| 199 199 |  | 
| 200 200 | 
             
                  a {
         | 
| 201 201 | 
             
                  } /* Another comment */
         | 
| 202 | 
            -
                 | 
| 202 | 
            +
                SCSS
         | 
| 203 203 |  | 
| 204 204 | 
             
                it { should_not report_lint }
         | 
| 205 205 | 
             
              end
         | 
| 206 206 |  | 
| 207 207 | 
             
              context 'when rule set is followed by a comment on the next line' do
         | 
| 208 | 
            -
                let(: | 
| 208 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 209 209 | 
             
                  a {
         | 
| 210 210 | 
             
                  }
         | 
| 211 211 | 
             
                  // A trailing comment (often a control comment)
         | 
| 212 212 |  | 
| 213 213 | 
             
                  b {
         | 
| 214 214 | 
             
                  }
         | 
| 215 | 
            -
                 | 
| 215 | 
            +
                SCSS
         | 
| 216 216 |  | 
| 217 217 | 
             
                it { should_not report_lint }
         | 
| 218 218 | 
             
              end
         | 
| 219 219 |  | 
| 220 220 | 
             
              context 'when there are multiple placeholder rule sets' do
         | 
| 221 221 | 
             
                context 'with blank lines between them' do
         | 
| 222 | 
            -
                  let(: | 
| 222 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 223 223 | 
             
                    %a {
         | 
| 224 224 | 
             
                    }
         | 
| 225 225 |  | 
| @@ -228,20 +228,20 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 228 228 |  | 
| 229 229 | 
             
                    %c {
         | 
| 230 230 | 
             
                    }
         | 
| 231 | 
            -
                   | 
| 231 | 
            +
                  SCSS
         | 
| 232 232 |  | 
| 233 233 | 
             
                  it { should_not report_lint }
         | 
| 234 234 | 
             
                end
         | 
| 235 235 |  | 
| 236 236 | 
             
                context 'with no blank line between them' do
         | 
| 237 | 
            -
                  let(: | 
| 237 | 
            +
                  let(:scss) { <<-SCSS }
         | 
| 238 238 | 
             
                    %a {
         | 
| 239 239 | 
             
                    }
         | 
| 240 240 | 
             
                    %b {
         | 
| 241 241 | 
             
                    }
         | 
| 242 242 | 
             
                    %c {
         | 
| 243 243 | 
             
                    }
         | 
| 244 | 
            -
                   | 
| 244 | 
            +
                  SCSS
         | 
| 245 245 |  | 
| 246 246 | 
             
                  it { should report_lint line: 2 }
         | 
| 247 247 | 
             
                  it { should report_lint line: 4 }
         | 
| @@ -252,12 +252,12 @@ describe SCSSLint::Linter::EmptyLineBetweenBlocks do | |
| 252 252 | 
             
              context 'when blocks occupy a single line' do
         | 
| 253 253 | 
             
                let(:linter_config) { { 'ignore_single_line_blocks' => ignore_single_line_blocks } }
         | 
| 254 254 |  | 
| 255 | 
            -
                let(: | 
| 255 | 
            +
                let(:scss) { <<-SCSS }
         | 
| 256 256 | 
             
                  .icon-up { &:before { content: '^'; } }
         | 
| 257 257 | 
             
                  .icon-right { &:before { content: '>'; } }
         | 
| 258 258 | 
             
                  @include some-mixin { content: '<'; }
         | 
| 259 259 | 
             
                  @include some-other-mixin { content: 'v'; }
         | 
| 260 | 
            -
                 | 
| 260 | 
            +
                SCSS
         | 
| 261 261 |  | 
| 262 262 | 
             
                context 'and the `ignore_single_line_blocks` option is true' do
         | 
| 263 263 | 
             
                  let(:ignore_single_line_blocks) { true }
         |