From f93c01c3a77176c45b22f6d5c0e48641b2da632d Mon Sep 17 00:00:00 2001 From: Yegor Bugayenko Date: Fri, 7 Feb 2025 13:54:58 +0300 Subject: [PATCH] #320 defect formatting --- src/main/java/org/eolang/lints/Defect.java | 12 ++++++++---- src/test/java/org/eolang/lints/DefectTest.java | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/eolang/lints/Defect.java b/src/main/java/org/eolang/lints/Defect.java index c2d928d2..a7b0f2b4 100644 --- a/src/main/java/org/eolang/lints/Defect.java +++ b/src/main/java/org/eolang/lints/Defect.java @@ -129,10 +129,14 @@ public Default( @Override public String toString() { - return String.format( - "[%s %s %s]:%d %s", - this.prg, this.rle, this.sev, this.lineno, this.txt - ); + final StringBuilder text = new StringBuilder(0) + .append('[').append(this.prg).append(' ') + .append(this.rle).append(' ') + .append(this.sev).append(']'); + if (this.lineno > 0) { + text.append(':').append(this.lineno); + } + return text.append(' ').append(this.txt).toString(); } @Override diff --git a/src/test/java/org/eolang/lints/DefectTest.java b/src/test/java/org/eolang/lints/DefectTest.java index b1b8cf2e..1841fce8 100644 --- a/src/test/java/org/eolang/lints/DefectTest.java +++ b/src/test/java/org/eolang/lints/DefectTest.java @@ -65,4 +65,19 @@ void printsProgramName() { Matchers.hasToString(Matchers.containsString(program)) ); } + + @Test + void printsWithoutZeroLineNumber() { + MatcherAssert.assertThat( + "toString() prints zero for line number", + new Defect.Default( + "foo", + Severity.WARNING, + "foo.bar", + 0, + "the message" + ), + Matchers.hasToString(Matchers.not(Matchers.containsString(":0"))) + ); + } }