mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Return source
from expect_issue
This commit is contained in:
parent
470e41cb7b
commit
c2aa2fedb6
3 changed files with 15 additions and 22 deletions
|
@ -13,18 +13,18 @@ module Ameba::Rule::Layout
|
|||
end
|
||||
|
||||
it "fails if there is no blank lines at the end" do
|
||||
expect_issue subject, "no-blankline # error: Trailing newline missing"
|
||||
expect_correction "no-blankline\n"
|
||||
s = expect_issue subject, "no-blankline # error: Trailing newline missing"
|
||||
expect_correction s, "no-blankline\n"
|
||||
end
|
||||
|
||||
it "fails if there more then one blank line at the end of a source" do
|
||||
expect_issue subject, "a = 1\n \n # error: Excessive trailing newline detected", normalize: false
|
||||
expect_no_corrections
|
||||
s = expect_issue subject, "a = 1\n \n # error: Excessive trailing newline detected", normalize: false
|
||||
expect_no_corrections s
|
||||
end
|
||||
|
||||
it "fails if last line is not blank" do
|
||||
expect_issue subject, "\n\n\n puts 22 # error: Trailing newline missing", normalize: false
|
||||
expect_correction "\n\n\n puts 22\n"
|
||||
s = expect_issue subject, "\n\n\n puts 22 # error: Trailing newline missing", normalize: false
|
||||
expect_correction s, "\n\n\n puts 22\n"
|
||||
end
|
||||
|
||||
context "when unnecessary blank line has been detected" do
|
||||
|
|
|
@ -7,12 +7,12 @@ module Ameba
|
|||
it "transforms large number #{number}" do
|
||||
rule = Rule::Style::LargeNumbers.new
|
||||
|
||||
expect_issue rule, <<-CRYSTAL, number: number
|
||||
s = expect_issue rule, <<-CRYSTAL, number: number
|
||||
number = %{number}
|
||||
# ^{number} error: Large numbers should be written with underscores: #{expected}
|
||||
CRYSTAL
|
||||
|
||||
expect_correction <<-CRYSTAL
|
||||
expect_correction s, <<-CRYSTAL
|
||||
number = #{expected}
|
||||
CRYSTAL
|
||||
end
|
||||
|
|
|
@ -47,8 +47,6 @@ require "./util"
|
|||
module Ameba::Spec::ExpectIssue
|
||||
include Spec::Util
|
||||
|
||||
class_property source : Source?
|
||||
|
||||
def expect_issue(rules : Rule::Base | Enumerable(Rule::Base),
|
||||
annotated_code : String,
|
||||
path = "",
|
||||
|
@ -67,7 +65,7 @@ module Ameba::Spec::ExpectIssue
|
|||
raise "Use `report_no_issues` to assert that no issues are found"
|
||||
end
|
||||
|
||||
actual_annotations = actual_annotations(rules, code, path, lines)
|
||||
source, actual_annotations = actual_annotations(rules, code, path, lines)
|
||||
unless actual_annotations == expected_annotations
|
||||
fail <<-MSG, file, line
|
||||
Expected:
|
||||
|
@ -79,12 +77,11 @@ module Ameba::Spec::ExpectIssue
|
|||
#{actual_annotations}
|
||||
MSG
|
||||
end
|
||||
|
||||
source
|
||||
end
|
||||
|
||||
def expect_correction(correction, *, file = __FILE__, line = __LINE__)
|
||||
source = ExpectIssue.source
|
||||
raise "`expect_correction` must follow `expect_issue`" unless source
|
||||
|
||||
def expect_correction(source, correction, *, file = __FILE__, line = __LINE__)
|
||||
raise "Use `expect_no_corrections` if the code will not change" unless source.correct
|
||||
return if correction == source.code
|
||||
|
||||
|
@ -99,10 +96,7 @@ module Ameba::Spec::ExpectIssue
|
|||
MSG
|
||||
end
|
||||
|
||||
def expect_no_corrections(*, file = __FILE__, line = __LINE__)
|
||||
source = ExpectIssue.source
|
||||
raise "`expect_no_corrections` must follow `expect_offense`" unless source
|
||||
|
||||
def expect_no_corrections(source, *, file = __FILE__, line = __LINE__)
|
||||
return unless source.correct
|
||||
|
||||
fail <<-MSG, file, line
|
||||
|
@ -121,7 +115,7 @@ module Ameba::Spec::ExpectIssue
|
|||
line = __LINE__)
|
||||
code = normalize_code(code) if normalize
|
||||
lines = code.split('\n') # must preserve trailing newline
|
||||
actual_annotations = actual_annotations(rules, code, path, lines)
|
||||
_, actual_annotations = actual_annotations(rules, code, path, lines)
|
||||
unless actual_annotations.to_s == code
|
||||
fail <<-MSG, file, line
|
||||
Expected no issues, but got:
|
||||
|
@ -133,13 +127,12 @@ module Ameba::Spec::ExpectIssue
|
|||
|
||||
private def actual_annotations(rules, code, path, lines)
|
||||
source = Source.new(code, path, normalize: false) # already normalized
|
||||
ExpectIssue.source = source
|
||||
if rules.is_a?(Enumerable)
|
||||
rules.each(&.catch(source))
|
||||
else
|
||||
rules.catch(source)
|
||||
end
|
||||
AnnotatedSource.new(lines, source.issues)
|
||||
{source, AnnotatedSource.new(lines, source.issues)}
|
||||
end
|
||||
|
||||
private def format_issue(code, **replacements)
|
||||
|
|
Loading…
Reference in a new issue