From 289d031466b41801aa7ae25543fb32d47cb3f763 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Tue, 19 Feb 2013 15:54:39 -0800 Subject: [PATCH] Add a pending test-case for showing circular api structures. This test should pass because `ShowAPI` skips inherited members but due to sbt/sbt#676 it fails with StackOverflowError. This makes it a decent test-case for both showing circular api structures and for the aforementioned bug itself. --- .../sbt-test/api/show-circular-structure/build.sbt | 12 ++++++++++++ sbt/src/sbt-test/api/show-circular-structure/pending | 4 ++++ .../src/main/java/test/J.java | 6 ++++++ .../show-circular-structure/src/main/scala/A.scala | 6 ++++++ 4 files changed, 28 insertions(+) create mode 100644 sbt/src/sbt-test/api/show-circular-structure/build.sbt create mode 100644 sbt/src/sbt-test/api/show-circular-structure/pending create mode 100644 sbt/src/sbt-test/api/show-circular-structure/src/main/java/test/J.java create mode 100644 sbt/src/sbt-test/api/show-circular-structure/src/main/scala/A.scala diff --git a/sbt/src/sbt-test/api/show-circular-structure/build.sbt b/sbt/src/sbt-test/api/show-circular-structure/build.sbt new file mode 100644 index 000000000..03fb631e4 --- /dev/null +++ b/sbt/src/sbt-test/api/show-circular-structure/build.sbt @@ -0,0 +1,12 @@ +logLevel := Level.Debug + +incOptions ~= { _.copy(apiDebug = true) } + +TaskKey[Unit]("show-apis") <<= (compile in Compile, scalaSource in Compile, javaSource in Compile) map { (a: sbt.inc.Analysis, scalaSrc: java.io.File, javaSrc: java.io.File) => + val aApi = a.apis.internalAPI(scalaSrc / "A.scala").api + val jApi = a.apis.internalAPI(javaSrc / "test/J.java").api + import xsbt.api.DefaultShowAPI + import DefaultShowAPI._ + DefaultShowAPI.showSource.show(aApi) + DefaultShowAPI.showSource.show(jApi) +} diff --git a/sbt/src/sbt-test/api/show-circular-structure/pending b/sbt/src/sbt-test/api/show-circular-structure/pending new file mode 100644 index 000000000..60ade5c1c --- /dev/null +++ b/sbt/src/sbt-test/api/show-circular-structure/pending @@ -0,0 +1,4 @@ +# test case for http://github.com/sbt/sbt/issues/676 +> compile +# fails with StackOverflowException +> show-apis diff --git a/sbt/src/sbt-test/api/show-circular-structure/src/main/java/test/J.java b/sbt/src/sbt-test/api/show-circular-structure/src/main/java/test/J.java new file mode 100644 index 000000000..b42dc9250 --- /dev/null +++ b/sbt/src/sbt-test/api/show-circular-structure/src/main/java/test/J.java @@ -0,0 +1,6 @@ +package test; + +public class J { + public static final class J2 extends J { } + public static final class J3 extends J { } +} diff --git a/sbt/src/sbt-test/api/show-circular-structure/src/main/scala/A.scala b/sbt/src/sbt-test/api/show-circular-structure/src/main/scala/A.scala new file mode 100644 index 000000000..1e2dcf690 --- /dev/null +++ b/sbt/src/sbt-test/api/show-circular-structure/src/main/scala/A.scala @@ -0,0 +1,6 @@ +package test + +class A { + class B extends A + class C extends A +}