summaryrefslogtreecommitdiff
path: root/src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2021-02-10 22:19:09 -0500
committerGitHub2021-02-11 03:19:09 +0000
commit2b5466c7773c8cd7a08c48aa00d9365cbb205fd2 (patch)
tree0bdc21b84f51ab9fb3e1a8e37a708ec2a3b186ef /src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala
parentf41e762830c5af1a92de9d8ee26e2b0de52b76ad (diff)
Fix stack trace trimming across Driver/ChiselStage (#1771)
* Handle MemTypeBinding in Analog Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com> * Fix stack trace trimming across ChiselStage Fix bug in stack trace trimming behavior. Now, the following is what happens: 1. The Builder, if catching accumulated errors, will now throw a ChiselException with a Scala-trimmed Stack trace. Previously, this would throw the full excpetion. 2. The Elaborate phase handles stack trace trimming. By default, any Throwable thrown during elaboration will have its stack trace *mutably* trimmed and is rethrown. A logger.error is printed stating that there was an error during elaboration and how the user can turn on the full stack trace. If the --full-stacktrace option is on, then the Throwable is not caught and only the first logger.error (saying that elaboration failed) will be printed. 3. ChiselStage (the class), ChiselStage$ (the object), and ChiselMain all inherit the behavior of (2). Mutable stack trace trimming behavior is moved into an implicit class (previously this was defined on ChiselException only) so this can be applied to any Throwable. No StageErrors are now thrown anymore. However, StageErrors may still be caught by ChiselMain (since it is a StageMain). Testing is added for ChiselMain, ChiselStage, and ChiselStage$ to test all this behavior. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Diffstat (limited to 'src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala')
-rw-r--r--src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala b/src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala
index 6d3d526c..40358d11 100644
--- a/src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala
+++ b/src/test/scala/chiselTests/ChiselTestUtilitiesSpec.scala
@@ -8,16 +8,15 @@ import org.scalatest.exceptions.TestFailedException
class ChiselTestUtilitiesSpec extends ChiselFlatSpec {
// Who tests the testers?
"assertKnownWidth" should "error when the expected width is wrong" in {
- val caught = intercept[ChiselException] {
+ intercept[TestFailedException] {
assertKnownWidth(7) {
Wire(UInt(8.W))
}
}
- assert(caught.getCause.isInstanceOf[TestFailedException])
}
it should "error when the width is unknown" in {
- a [ChiselException] shouldBe thrownBy {
+ intercept[ChiselException] {
assertKnownWidth(7) {
Wire(UInt())
}
@@ -31,12 +30,11 @@ class ChiselTestUtilitiesSpec extends ChiselFlatSpec {
}
"assertInferredWidth" should "error if the width is known" in {
- val caught = intercept[ChiselException] {
+ intercept[TestFailedException] {
assertInferredWidth(8) {
Wire(UInt(8.W))
}
}
- assert(caught.getCause.isInstanceOf[TestFailedException])
}
it should "error if the expected width is wrong" in {
@@ -57,4 +55,3 @@ class ChiselTestUtilitiesSpec extends ChiselFlatSpec {
}
}
}
-