aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/scala/firrtlTests/InternalErrorSpec.scala46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/InternalErrorSpec.scala b/src/test/scala/firrtlTests/InternalErrorSpec.scala
new file mode 100644
index 00000000..85c9c67d
--- /dev/null
+++ b/src/test/scala/firrtlTests/InternalErrorSpec.scala
@@ -0,0 +1,46 @@
+// See LICENSE for license details.
+
+package firrtlTests
+
+import java.io.File
+
+import firrtl._
+import firrtl.Utils.getThrowable
+import firrtl.util.BackendCompilationUtilities
+import org.scalatest.{FreeSpec, Matchers}
+
+
+class InternalErrorSpec extends FreeSpec with Matchers with BackendCompilationUtilities {
+ "Unexpected exceptions" - {
+ val input =
+ """
+ |circuit Dummy :
+ | module Dummy :
+ | input clock : Clock
+ | input x : UInt<1>
+ | output y : UInt<1>
+ | output io : { flip in : UInt<16>, out : UInt<16> }
+ | y <= shr(x, UInt(1)); this should generate an exception in PrimOps.scala:127.
+ | """.stripMargin
+
+ var exception: Exception = null
+ "should throw a FIRRTLException" in {
+ val manager = new ExecutionOptionsManager("test") with HasFirrtlOptions {
+ commonOptions = CommonOptions(topName = "Dummy")
+ firrtlOptions = FirrtlExecutionOptions(firrtlSource = Some(input), compilerName = "low")
+ }
+ exception = intercept[FIRRTLException] {
+ firrtl.Driver.execute(manager)
+ }
+ }
+
+ "should contain the expected string" in {
+ assert(exception.getMessage.contains("Internal Error! Please file an issue"))
+ }
+
+ "should contain the name of the file originating the exception in the stack trace" in {
+ val first = true
+ assert(getThrowable(Some(exception), first).getStackTrace exists (_.getFileName.contains("PrimOps.scala")))
+ }
+ }
+}