From 36c83266255dd878188fc034f3b90846615d821c Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 12 Apr 2013 12:47:44 -0400 Subject: [PATCH] Test for #723. --- .../sbt-test/source-dependencies/canon/Use.scala | 3 +++ .../source-dependencies/canon/actual/A.java | 4 ++++ .../source-dependencies/canon/actual/a.jar | Bin 0 -> 634 bytes .../sbt-test/source-dependencies/canon/build.sbt | 10 ++++++++++ .../sbt-test/source-dependencies/canon/lib/a.jar | 1 + sbt/src/sbt-test/source-dependencies/canon/test | 10 ++++++++++ 6 files changed, 28 insertions(+) create mode 100644 sbt/src/sbt-test/source-dependencies/canon/Use.scala create mode 100644 sbt/src/sbt-test/source-dependencies/canon/actual/A.java create mode 100644 sbt/src/sbt-test/source-dependencies/canon/actual/a.jar create mode 100644 sbt/src/sbt-test/source-dependencies/canon/build.sbt create mode 120000 sbt/src/sbt-test/source-dependencies/canon/lib/a.jar create mode 100644 sbt/src/sbt-test/source-dependencies/canon/test diff --git a/sbt/src/sbt-test/source-dependencies/canon/Use.scala b/sbt/src/sbt-test/source-dependencies/canon/Use.scala new file mode 100644 index 000000000..fe9e21714 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/canon/Use.scala @@ -0,0 +1,3 @@ +object Use { + val x = A.x +} \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/canon/actual/A.java b/sbt/src/sbt-test/source-dependencies/canon/actual/A.java new file mode 100644 index 000000000..693c5b932 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/canon/actual/A.java @@ -0,0 +1,4 @@ +// this is the source for the compiled class in a.jar +public class A { + public static final int x = 3; +} diff --git a/sbt/src/sbt-test/source-dependencies/canon/actual/a.jar b/sbt/src/sbt-test/source-dependencies/canon/actual/a.jar new file mode 100644 index 0000000000000000000000000000000000000000..5c63ca5e9cc678f894a4aab7d39efca49e59dc94 GIT binary patch literal 634 zcmWIWW@Zs#-~hs#!97k4NPv@pg~8V~#8KDN&rSc|DFy~+h5&DN4v-2asImZ@nni#r z;F^6M{XE@VgG2Ou-9G!CIql=Et9OytTUYDcne&^246YbIcv__A<*VcAd$DvC3+IfN zl1HRxYG<%af2R2(O-=l%c(~Z~CC|jPE1s#o&iqvLv4|1u5ays+3*3R$fH1-#C((St z4wQA&OU_9wE|%>*%hePh(0V>4YvwZD=q(xHxL0!Tvmwq9J2Ij zQ$o)%b|>R={*xZ84^}n5YC7>~oQkCOIlc8=i({5at;whoEPuGD)$D#BN8>XC;a4(w zle=xENi1Ug+kC-YSS`GJCF5-COK#`*w3}x!7Jp*0&310z9NJy=4G| Za16+V27G`wD;r3H83;E4=}n9v9sm&muN43Q literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/source-dependencies/canon/build.sbt b/sbt/src/sbt-test/source-dependencies/canon/build.sbt new file mode 100644 index 000000000..d23dff705 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/canon/build.sbt @@ -0,0 +1,10 @@ +import complete.DefaultParsers._ + +val checkIterations = inputKey[Unit]("Verifies the accumlated number of iterations of incremental compilation.") + +checkIterations := { + val expected: Int = (Space ~> NatBasic).parsed + val actual: Int = (compile in Compile).value.compilations.allCompilations.size + assert(expected == actual, s"Expected $expected compilations, got $actual") +} + diff --git a/sbt/src/sbt-test/source-dependencies/canon/lib/a.jar b/sbt/src/sbt-test/source-dependencies/canon/lib/a.jar new file mode 120000 index 000000000..9fa4156a8 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/canon/lib/a.jar @@ -0,0 +1 @@ +../actual/a.jar \ No newline at end of file diff --git a/sbt/src/sbt-test/source-dependencies/canon/test b/sbt/src/sbt-test/source-dependencies/canon/test new file mode 100644 index 000000000..13caf4871 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/canon/test @@ -0,0 +1,10 @@ +# Tests that classpath entries that are different than their canonical representation are +# handled properly. In particular, a symlink from lib/a.jar to lib/../actual/a.jar.0 is +# available on the classpath and read by scalac. scalac 2.10.x does not interpret .jar.0 +# as a jar, so if sbt passes the canonical path, it will not be read. +# This also verifies that compilation does not get repeatedly triggered by a mismatch in +# paths. + +> compile +> compile +> checkIterations 1 \ No newline at end of file