Skip to content

Commit bf37aaa

Browse files
authored
Merge pull request #272 from Jacoby6000/fix-badref-error-messages
Provide an exception message for BadRef
2 parents 20b9d26 + 9d751cf commit bf37aaa

File tree

2 files changed

+46
-10
lines changed

2 files changed

+46
-10
lines changed

modules/compiler-core/src/ToSmithyError.scala

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,38 @@ import cats.data.NonEmptyChain
2020
import cats.syntax.all._
2121
import software.amazon.smithy.model.validation.ValidationEvent
2222

23-
sealed trait ToSmithyError extends Throwable
23+
sealed trait ToSmithyError extends Throwable {
24+
// Force all subtypes to provide a message
25+
final override def getMessage(): String = message
26+
def message: String
27+
}
2428

2529
object ToSmithyError {
2630

2731
implicit val order: cats.Order[ToSmithyError] = cats.Order.by(_.getMessage())
2832

29-
final case class Restriction(message: String) extends ToSmithyError {
30-
override def getMessage(): String = message
31-
}
33+
final case class Restriction(message: String) extends ToSmithyError
3234

33-
final case class ProcessingError(message: String) extends ToSmithyError {
34-
override def getMessage(): String = message
35-
}
35+
final case class ProcessingError(message: String) extends ToSmithyError
3636

3737
final case class SmithyValidationFailed(
3838
smithyValidationEvents: List[ValidationEvent]
3939
) extends ToSmithyError {
40-
override def getMessage(): String = {
40+
override def message: String = {
4141
s"Failed to validate the Smithy model:\n${smithyValidationEvents.mkString("\n")}"
4242
}
4343
}
4444

45-
final case class BadRef(ref: String) extends ToSmithyError
45+
final case class BadRef(ref: String) extends ToSmithyError {
46+
override def message: String = s"Unable to parse ref string: $ref"
47+
}
4648

4749
final case class OpenApiParseError(
4850
namespace: NonEmptyChain[String],
4951
errorMessages: List[String]
5052
) extends ToSmithyError
5153
with NoStackTrace {
52-
override def getMessage(): String =
54+
override def message: String =
5355
s"Unable to parse openapi file located at ${namespace.mkString_("/")} with errors: ${errorMessages
5456
.mkString(", ")}"
5557
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package smithytranslate.compiler
2+
3+
import cats.data.NonEmptyChain
4+
5+
final class ToSmithyErrorSuite extends munit.FunSuite {
6+
7+
test("Restriction should have a message") {
8+
val error = ToSmithyError.Restriction("some restriction")
9+
assertNotEquals(Option(error.getMessage), None)
10+
}
11+
12+
test("ProcessingError should have a message") {
13+
val error = ToSmithyError.ProcessingError("some processing error")
14+
assertNotEquals(Option(error.getMessage), None)
15+
}
16+
17+
test("SmithyValidationFailed should have a message") {
18+
val error = ToSmithyError.SmithyValidationFailed(Nil)
19+
assertNotEquals(Option(error.getMessage), None)
20+
}
21+
22+
test("BadRef should have a message") {
23+
val error = ToSmithyError.BadRef("some/ref")
24+
assertNotEquals(Option(error.getMessage), None)
25+
}
26+
27+
test("OpenApiParseError should have a message") {
28+
val error = ToSmithyError.OpenApiParseError(
29+
NonEmptyChain.one("namespace"),
30+
List("error1", "error2")
31+
)
32+
assertNotEquals(Option(error.getMessage), None)
33+
}
34+
}

0 commit comments

Comments
 (0)