diff options
| author | Jack Koenig | 2021-08-20 17:08:40 -0700 |
|---|---|---|
| committer | GitHub | 2021-08-21 00:08:40 +0000 |
| commit | dc2fbad9d6431cb52a7ad26937a100b288b86206 (patch) | |
| tree | 8ee1dd0e731629e42ce395a8484f3041d2178811 /src/test | |
| parent | 762f7747bd2082c27af9cb46f5e2333df0329a56 (diff) | |
Add BufferedCustomFileEmission (#2334)
Uses virtual method .getBytesBuffered: Iterable[Array[Byte]] to optimize
file emission.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/scala/firrtlTests/options/phases/WriteOutputAnnotationsSpec.scala | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/options/phases/WriteOutputAnnotationsSpec.scala b/src/test/scala/firrtlTests/options/phases/WriteOutputAnnotationsSpec.scala index e9b84540..edc56425 100644 --- a/src/test/scala/firrtlTests/options/phases/WriteOutputAnnotationsSpec.scala +++ b/src/test/scala/firrtlTests/options/phases/WriteOutputAnnotationsSpec.scala @@ -7,6 +7,7 @@ import java.io.File import firrtl.AnnotationSeq import firrtl.annotations.{DeletedAnnotation, NoTargetAnnotation} import firrtl.options.{ + BufferedCustomFileEmission, CustomFileEmission, InputAnnotationFileAnnotation, OutputAnnotationFileAnnotation, @@ -171,6 +172,25 @@ class WriteOutputAnnotationsSpec extends AnyFlatSpec with Matchers with firrtl.t result should equal(data) } + it should "write BufferedCustomFileEmission annotations" in new Fixture { + val file = new File("write-CustomFileEmission-annotations.anno.json") + val data = List("hi", "bye", "yo") + val annotations = Seq( + TargetDirAnnotation(dir), + OutputAnnotationFileAnnotation(file.toString), + WriteOutputAnnotationsSpec.Buffered(data) + ) + val serializedFileName = view[StageOptions](annotations).getBuildFileName("Buffered", Some(".Emission")) + val out = phase.transform(annotations) + + info(s"file '$serializedFileName' exists") + new File(serializedFileName) should (exist) + + info(s"file '$serializedFileName' is correct") + val result = scala.io.Source.fromFile(serializedFileName).mkString + result should equal(data.mkString) + } + it should "error if multiple annotations try to write to the same file" in new Fixture { val file = new File("write-CustomFileEmission-annotations-error.anno.json") val annotations = Seq( @@ -215,4 +235,12 @@ private object WriteOutputAnnotationsSpec { case class Replacement(file: String) extends NoTargetAnnotation + case class Buffered(content: List[String]) extends NoTargetAnnotation with BufferedCustomFileEmission { + + override protected def baseFileName(a: AnnotationSeq): String = "Buffered" + + override protected def suffix: Option[String] = Some(".Emission") + + override def getBytesBuffered: Iterable[Array[Byte]] = content.view.map(_.getBytes) + } } |
