From 7f2dafaaa89d204c7bbe986f38fa5817ee7a091b Mon Sep 17 00:00:00 2001 From: Stephen Nancekivell Date: Sat, 20 Jan 2018 14:56:35 +1100 Subject: add a basic test for gen-idea (#114) * add a basic test for gen-idea * update GenIdeaTest with resources as source. * change .gitignore to allow .iml under src/test/resources. Ignore .idea_modules. * normalise library paths in GenIdeaTests --- .gitignore | 4 +- .../src/main/scala/mill/scalalib/GenIdea.scala | 10 +-- ...2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml | 7 ++ ...ala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml | 7 ++ ...er_2.12.4_scala-compiler-2.12.4-sources.jar.xml | 7 ++ ...a-compiler_2.12.4_scala-compiler-2.12.4.jar.xml | 7 ++ ...ary_2.12.4_scala-library-2.12.4-sources.jar.xml | 7 ++ ...ala-library_2.12.4_scala-library-2.12.4.jar.xml | 7 ++ ...ect_2.12.4_scala-reflect-2.12.4-sources.jar.xml | 7 ++ ...ala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml | 7 ++ scalalib/src/test/resources/gen-idea/idea/misc.xml | 5 ++ .../src/test/resources/gen-idea/idea/modules.xml | 8 +++ .../src/test/resources/gen-idea/idea_modules/iml | 22 ++++++ .../test/resources/gen-idea/idea_modules/root.iml | 9 +++ .../test/scala/mill/scalalib/GenIdeaTests.scala | 78 ++++++++++++++++++++++ 15 files changed, 185 insertions(+), 7 deletions(-) create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/misc.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea/modules.xml create mode 100644 scalalib/src/test/resources/gen-idea/idea_modules/iml create mode 100644 scalalib/src/test/resources/gen-idea/idea_modules/root.iml create mode 100644 scalalib/src/test/scala/mill/scalalib/GenIdeaTests.scala diff --git a/.gitignore b/.gitignore index 4b82f58d..a3d08f4d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ target/ output/ .DS_STORE -*.iml +.idea_modules .idea -out/ \ No newline at end of file +out/ diff --git a/scalalib/src/main/scala/mill/scalalib/GenIdea.scala b/scalalib/src/main/scala/mill/scalalib/GenIdea.scala index 73699a9e..4496c8c6 100644 --- a/scalalib/src/main/scala/mill/scalalib/GenIdea.scala +++ b/scalalib/src/main/scala/mill/scalalib/GenIdea.scala @@ -165,21 +165,21 @@ object GenIdea { { - for (normalSourcePath <- normalSourcePaths.toSeq) + for (normalSourcePath <- normalSourcePaths.toSeq.sorted) yield } { - for (generatedSourcePath <- generatedSourcePaths.toSeq) + for (generatedSourcePath <- generatedSourcePaths.toSeq.sorted) yield } { - for (resourcePath <- resourcePaths.toSeq) + for (resourcePath <- resourcePaths.toSeq.sorted) yield @@ -189,12 +189,12 @@ object GenIdea { { - for(name <- libNames.toSeq) + for(name <- libNames.toSeq.sorted) yield } { - for(depName <- depNames.toSeq) + for(depName <- depNames.toSeq.sorted) yield } diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml new file mode 100644 index 00000000..a6398d46 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml new file mode 100644 index 00000000..5e21f3f3 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml new file mode 100644 index 00000000..fe9d533a --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml new file mode 100644 index 00000000..ec0460d7 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml new file mode 100644 index 00000000..a1278e29 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4.jar.xml new file mode 100644 index 00000000..bbd957f0 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml new file mode 100644 index 00000000..09db75bb --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml new file mode 100644 index 00000000..f23b80f6 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/misc.xml b/scalalib/src/test/resources/gen-idea/idea/misc.xml new file mode 100644 index 00000000..2726692f --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/misc.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea/modules.xml b/scalalib/src/test/resources/gen-idea/idea/modules.xml new file mode 100644 index 00000000..374b9a1f --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea_modules/iml b/scalalib/src/test/resources/gen-idea/idea_modules/iml new file mode 100644 index 00000000..548865f1 --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea_modules/iml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/resources/gen-idea/idea_modules/root.iml b/scalalib/src/test/resources/gen-idea/idea_modules/root.iml new file mode 100644 index 00000000..dcf5f7fc --- /dev/null +++ b/scalalib/src/test/resources/gen-idea/idea_modules/root.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/scalalib/src/test/scala/mill/scalalib/GenIdeaTests.scala b/scalalib/src/test/scala/mill/scalalib/GenIdeaTests.scala new file mode 100644 index 00000000..36945f65 --- /dev/null +++ b/scalalib/src/test/scala/mill/scalalib/GenIdeaTests.scala @@ -0,0 +1,78 @@ +package mill.scalalib + +import ammonite.ops._ +import mill._ + +import mill.util.{TestEvaluator, TestUtil} +import utest._ + +object GenIdeaTests extends TestSuite { + + val basePath = pwd / 'target / 'workspace / "gen-idea" + val outPath = basePath / 'out + val workingSrcPath = basePath / 'src + + trait HelloWorldModule extends scalalib.ScalaModule { + def scalaVersion = "2.12.4" + def basePath = HelloWorldTests.workingSrcPath + } + + object HelloWorld extends TestUtil.BaseModule with HelloWorldModule + + val helloWorldEvaluator = new TestEvaluator( + HelloWorld, + outPath, + workingSrcPath + ) + + def tests: Tests = Tests { + 'genIdeaTests - { + helloWorldEvaluator(HelloWorld.scalaVersion) + val x = GenIdea.xmlFileLayout(helloWorldEvaluator.evaluator, HelloWorld) + val pp = new scala.xml.PrettyPrinter(999, 4) + + for((relPath, xml) <- GenIdea.xmlFileLayout(helloWorldEvaluator.evaluator, HelloWorld)){ + write.over(basePath/ "generated"/ relPath, pp.format(xml)) + } + + Seq( + "gen-idea/idea_modules/iml" -> + basePath / "generated" / ".idea_modules" /".iml", + "gen-idea/idea_modules/root.iml" -> + basePath / "generated" / ".idea_modules" /"root.iml", + "gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-reflect_2.12.4_scala-reflect-2.12.4-sources.jar.xml", + "gen-idea/idea/libraries/scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-reflect_2.12.4_scala-reflect-2.12.4.jar.xml", + "gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-library_2.12.4_scala-library-2.12.4.jar.xml", + "gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6.jar.xml", + "gen-idea/idea/libraries/modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "modules_scala-xml_2.12_1.0.6_scala-xml_2.12-1.0.6-sources.jar.xml", + "gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-compiler_2.12.4_scala-compiler-2.12.4-sources.jar.xml", + "gen-idea/idea/libraries/scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-library_2.12.4_scala-library-2.12.4-sources.jar.xml", + "gen-idea/idea/libraries/scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml" -> + basePath / "generated" / ".idea" / "libraries" / "scala-compiler_2.12.4_scala-compiler-2.12.4.jar.xml", + "gen-idea/idea/modules.xml" -> + basePath / "generated" / ".idea" / "modules.xml", + "gen-idea/idea/misc.xml" -> + basePath / "generated" / ".idea" / "misc.xml", + ).foreach { case (resource, generated) => + println("checking "+resource) + val resourceString = scala.io.Source.fromResource(resource).getLines().mkString("\n") + val generatedString = normaliseLibraryPaths(read! generated) + + assert(resourceString == generatedString) + } + } + } + + + private val libPathRegex = """([\w/]+)/.coursier""".r + private def normaliseLibraryPaths(in: String): String = { + libPathRegex.replaceAllIn(in, "COURSIER_HOME") + } +} -- cgit v1.2.3