From 2a603da0a86b15a35b28cb927218ec22b053d836 Mon Sep 17 00:00:00 2001 From: "andrzej.jozwik@gmail.com" Date: Tue, 30 Sep 2014 14:54:33 +0200 Subject: [PATCH] Moved tests to internal package --- main/src/main/scala/sbt/SessionSettings.scala | 3 +- .../parser/SbtRefactorings.scala} | 16 ++++--- .../parser/SplitExpressionsNoBlankies.scala | 4 +- .../session-settings-quick/4.sbt.txt | 17 ++++++++ .../session-settings-quick/4.sbt.txt_1/1.set | 1 + .../4.sbt.txt_1/1.set.result | 15 +++++++ .../session-settings/1.sbt.txt_1/1.set | 1 + .../{1.xml.result => 1.set.result} | 0 .../session-settings/1.sbt.txt_1/1.xml | 7 ---- .../session-settings/1.sbt.txt_1/2.set | 2 + .../{2.xml.result => 2.set.result} | 0 .../session-settings/1.sbt.txt_1/2.xml | 12 ------ .../session-settings/1.sbt.txt_1/3.set | 1 + .../{3.xml.result => 3.set.result} | 0 .../session-settings/1.sbt.txt_1/3.xml | 7 ---- .../session-settings/2.sbt.txt_1/1.set | 1 + .../{1.xml.result => 1.set.result} | 0 .../session-settings/2.sbt.txt_1/1.xml | 7 ---- .../session-settings/3.sbt.txt_1/1.set | 1 + .../{1.xml.result => 1.set.result} | 0 .../session-settings/3.sbt.txt_1/1.xml | 7 ---- .../test/resources/session-settings/4.sbt.txt | 17 ++++++++ .../session-settings/4.sbt.txt_1/1.set | 1 + .../session-settings/4.sbt.txt_1/1.set.result | 15 +++++++ .../sbt/internals/parser/ErrorSpec.scala | 2 +- .../parser}/SessionSettingsSpec.scala | 42 +++++++++---------- 26 files changed, 103 insertions(+), 76 deletions(-) rename main/src/main/scala/sbt/{SessionSettingsNoBlankies.scala => internals/parser/SbtRefactorings.scala} (82%) create mode 100644 main/src/test/resources/session-settings-quick/4.sbt.txt create mode 100644 main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set create mode 100644 main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set.result create mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/1.set rename main/src/test/resources/session-settings/1.sbt.txt_1/{1.xml.result => 1.set.result} (100%) delete mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/1.xml create mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/2.set rename main/src/test/resources/session-settings/1.sbt.txt_1/{2.xml.result => 2.set.result} (100%) delete mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/2.xml create mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/3.set rename main/src/test/resources/session-settings/1.sbt.txt_1/{3.xml.result => 3.set.result} (100%) delete mode 100644 main/src/test/resources/session-settings/1.sbt.txt_1/3.xml create mode 100644 main/src/test/resources/session-settings/2.sbt.txt_1/1.set rename main/src/test/resources/session-settings/2.sbt.txt_1/{1.xml.result => 1.set.result} (100%) delete mode 100644 main/src/test/resources/session-settings/2.sbt.txt_1/1.xml create mode 100644 main/src/test/resources/session-settings/3.sbt.txt_1/1.set rename main/src/test/resources/session-settings/3.sbt.txt_1/{1.xml.result => 1.set.result} (100%) delete mode 100644 main/src/test/resources/session-settings/3.sbt.txt_1/1.xml create mode 100644 main/src/test/resources/session-settings/4.sbt.txt create mode 100644 main/src/test/resources/session-settings/4.sbt.txt_1/1.set create mode 100644 main/src/test/resources/session-settings/4.sbt.txt_1/1.set.result rename main/src/test/scala/sbt/{ => internals/parser}/SessionSettingsSpec.scala (57%) diff --git a/main/src/main/scala/sbt/SessionSettings.scala b/main/src/main/scala/sbt/SessionSettings.scala index 24789a3c2..109b17442 100755 --- a/main/src/main/scala/sbt/SessionSettings.scala +++ b/main/src/main/scala/sbt/SessionSettings.scala @@ -10,6 +10,7 @@ import Types.Endo import compiler.Eval import SessionSettings._ +import sbt.internals.parser.SbtRefactorings /** * Represents (potentially) transient settings added into a build via commands/user. @@ -192,7 +193,7 @@ object SessionSettings { } val newSettings = settings diff replace val oldContent = IO.readLines(writeTo) - val exist: List[String] = SessionSettingsNoBlankies.oldLinesToNew(oldContent, statements) + val exist: List[String] = SbtRefactorings.applyStatements(oldContent, statements) val adjusted = if (!newSettings.isEmpty && needsTrailingBlank(exist)) exist :+ "" else exist val lines = adjusted ++ newSettings.flatMap(_._2 ::: "" :: Nil) IO.writeLines(writeTo, lines) diff --git a/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala b/main/src/main/scala/sbt/internals/parser/SbtRefactorings.scala similarity index 82% rename from main/src/main/scala/sbt/SessionSettingsNoBlankies.scala rename to main/src/main/scala/sbt/internals/parser/SbtRefactorings.scala index 191793b17..df2f00f44 100644 --- a/main/src/main/scala/sbt/SessionSettingsNoBlankies.scala +++ b/main/src/main/scala/sbt/internals/parser/SbtRefactorings.scala @@ -1,15 +1,14 @@ -package sbt +package sbt.internals.parser import scala.reflect.runtime.universe._ -import sbt.internals.parser.{ XmlContent, SplitExpressionsNoBlankies } -object SessionSettingsNoBlankies { - - import SplitExpressionsNoBlankies.FAKE_FILE +private[sbt] object SbtRefactorings { + import sbt.internals.parser.SplitExpressionsNoBlankies.{ END_OF_LINE, FAKE_FILE } + val EMPTY_STRING = "" val REVERSE_ORDERING_INT = Ordering[Int].reverse - def oldLinesToNew(lines: List[String], setCommands: List[List[String]]): List[String] = { + def applyStatements(lines: List[String], setCommands: List[List[String]]): List[String] = { val split = SplitExpressionsNoBlankies(FAKE_FILE, lines) val recordedCommand = setCommands.flatMap { command => @@ -21,9 +20,9 @@ object SessionSettingsNoBlankies { val treeName = extractSettingName(tree) if (name == treeName) { val replacement = if (acc.isEmpty) { - command.mkString("\n") + command.mkString(END_OF_LINE) } else { - "" + EMPTY_STRING } (tree.pos.start, statement, replacement) +: acc } else { @@ -39,7 +38,6 @@ object SessionSettingsNoBlankies { val before = acc.substring(0, from) val after = acc.substring(from + old.length, acc.length) before + replacement + after - // acc.replace(old, replacement) } newContent.lines.toList } diff --git a/main/src/main/scala/sbt/internals/parser/SplitExpressionsNoBlankies.scala b/main/src/main/scala/sbt/internals/parser/SplitExpressionsNoBlankies.scala index b975f5226..381efc9d2 100644 --- a/main/src/main/scala/sbt/internals/parser/SplitExpressionsNoBlankies.scala +++ b/main/src/main/scala/sbt/internals/parser/SplitExpressionsNoBlankies.scala @@ -22,7 +22,7 @@ private[sbt] case class SplitExpressionsNoBlankies(file: File, lines: Seq[String import scala.reflect.runtime._ import scala.compat.Platform.EOL - import BugInParser._ + import MissingBracketHandler._ import XmlContent._ import scala.tools.reflect.{ ToolBox, ToolBoxError } @@ -97,7 +97,7 @@ private[sbt] case class SplitExpressionsNoBlankies(file: File, lines: Seq[String * Scala parser cuts last bracket - * @see http://stackoverflow.com/questions/25547149/scala-parser-cuts-last-bracket */ -private[sbt] object BugInParser { +private[sbt] object MissingBracketHandler { /** * * @param content - parsed file diff --git a/main/src/test/resources/session-settings-quick/4.sbt.txt b/main/src/test/resources/session-settings-quick/4.sbt.txt new file mode 100644 index 000000000..693c6cef6 --- /dev/null +++ b/main/src/test/resources/session-settings-quick/4.sbt.txt @@ -0,0 +1,17 @@ +k1 := {} + +k2 := {} + +k3 := { + + + val x = "hi" + () +} + +k4 := { }; k5 := () + +k1 <<= k1 map {_ => error("k1")} + +k4 := { val x = k4.value; () } + diff --git a/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set b/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set new file mode 100644 index 000000000..2a3525578 --- /dev/null +++ b/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set @@ -0,0 +1 @@ +k4 := () diff --git a/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set.result b/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set.result new file mode 100644 index 000000000..11a7d317b --- /dev/null +++ b/main/src/test/resources/session-settings-quick/4.sbt.txt_1/1.set.result @@ -0,0 +1,15 @@ +k1 := {} + +k2 := {} + +k3 := { + + + val x = "hi" + () +} + +k4 := (); k5 := () + +k1 <<= k1 map {_ => error("k1")} + diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/1.set b/main/src/test/resources/session-settings/1.sbt.txt_1/1.set new file mode 100644 index 000000000..bd735d1d1 --- /dev/null +++ b/main/src/test/resources/session-settings/1.sbt.txt_1/1.set @@ -0,0 +1 @@ +name := "alaMaKota" \ No newline at end of file diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml.result b/main/src/test/resources/session-settings/1.sbt.txt_1/1.set.result similarity index 100% rename from main/src/test/resources/session-settings/1.sbt.txt_1/1.xml.result rename to main/src/test/resources/session-settings/1.sbt.txt_1/1.set.result diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml deleted file mode 100644 index a67818d62..000000000 --- a/main/src/test/resources/session-settings/1.sbt.txt_1/1.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 1 - 2 - - - \ No newline at end of file diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/2.set b/main/src/test/resources/session-settings/1.sbt.txt_1/2.set new file mode 100644 index 000000000..3a10fa9f2 --- /dev/null +++ b/main/src/test/resources/session-settings/1.sbt.txt_1/2.set @@ -0,0 +1,2 @@ +name := "alaMaKota" +organization := "scalania" \ No newline at end of file diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml.result b/main/src/test/resources/session-settings/1.sbt.txt_1/2.set.result similarity index 100% rename from main/src/test/resources/session-settings/1.sbt.txt_1/2.xml.result rename to main/src/test/resources/session-settings/1.sbt.txt_1/2.set.result diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml deleted file mode 100644 index 20e5c790f..000000000 --- a/main/src/test/resources/session-settings/1.sbt.txt_1/2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - 1 - 2 - - - - 25 - 26 - - - \ No newline at end of file diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/3.set b/main/src/test/resources/session-settings/1.sbt.txt_1/3.set new file mode 100644 index 000000000..8dc207f57 --- /dev/null +++ b/main/src/test/resources/session-settings/1.sbt.txt_1/3.set @@ -0,0 +1 @@ +checkPom := "OK" \ No newline at end of file diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml.result b/main/src/test/resources/session-settings/1.sbt.txt_1/3.set.result similarity index 100% rename from main/src/test/resources/session-settings/1.sbt.txt_1/3.xml.result rename to main/src/test/resources/session-settings/1.sbt.txt_1/3.set.result diff --git a/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml b/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml deleted file mode 100644 index efdba1fe1..000000000 --- a/main/src/test/resources/session-settings/1.sbt.txt_1/3.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 4 - 11 - - - \ No newline at end of file diff --git a/main/src/test/resources/session-settings/2.sbt.txt_1/1.set b/main/src/test/resources/session-settings/2.sbt.txt_1/1.set new file mode 100644 index 000000000..bd735d1d1 --- /dev/null +++ b/main/src/test/resources/session-settings/2.sbt.txt_1/1.set @@ -0,0 +1 @@ +name := "alaMaKota" \ No newline at end of file diff --git a/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml.result b/main/src/test/resources/session-settings/2.sbt.txt_1/1.set.result similarity index 100% rename from main/src/test/resources/session-settings/2.sbt.txt_1/1.xml.result rename to main/src/test/resources/session-settings/2.sbt.txt_1/1.set.result diff --git a/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml deleted file mode 100644 index a67818d62..000000000 --- a/main/src/test/resources/session-settings/2.sbt.txt_1/1.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 1 - 2 - - - \ No newline at end of file diff --git a/main/src/test/resources/session-settings/3.sbt.txt_1/1.set b/main/src/test/resources/session-settings/3.sbt.txt_1/1.set new file mode 100644 index 000000000..3e2aa8d48 --- /dev/null +++ b/main/src/test/resources/session-settings/3.sbt.txt_1/1.set @@ -0,0 +1 @@ +scmpom := OK \ No newline at end of file diff --git a/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml.result b/main/src/test/resources/session-settings/3.sbt.txt_1/1.set.result similarity index 100% rename from main/src/test/resources/session-settings/3.sbt.txt_1/1.xml.result rename to main/src/test/resources/session-settings/3.sbt.txt_1/1.set.result diff --git a/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml b/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml deleted file mode 100644 index 9f7ba5288..000000000 --- a/main/src/test/resources/session-settings/3.sbt.txt_1/1.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 5 - 18 - OK]]> - - \ No newline at end of file diff --git a/main/src/test/resources/session-settings/4.sbt.txt b/main/src/test/resources/session-settings/4.sbt.txt new file mode 100644 index 000000000..693c6cef6 --- /dev/null +++ b/main/src/test/resources/session-settings/4.sbt.txt @@ -0,0 +1,17 @@ +k1 := {} + +k2 := {} + +k3 := { + + + val x = "hi" + () +} + +k4 := { }; k5 := () + +k1 <<= k1 map {_ => error("k1")} + +k4 := { val x = k4.value; () } + diff --git a/main/src/test/resources/session-settings/4.sbt.txt_1/1.set b/main/src/test/resources/session-settings/4.sbt.txt_1/1.set new file mode 100644 index 000000000..2a3525578 --- /dev/null +++ b/main/src/test/resources/session-settings/4.sbt.txt_1/1.set @@ -0,0 +1 @@ +k4 := () diff --git a/main/src/test/resources/session-settings/4.sbt.txt_1/1.set.result b/main/src/test/resources/session-settings/4.sbt.txt_1/1.set.result new file mode 100644 index 000000000..11a7d317b --- /dev/null +++ b/main/src/test/resources/session-settings/4.sbt.txt_1/1.set.result @@ -0,0 +1,15 @@ +k1 := {} + +k2 := {} + +k3 := { + + + val x = "hi" + () +} + +k4 := (); k5 := () + +k1 <<= k1 map {_ => error("k1")} + diff --git a/main/src/test/scala/sbt/internals/parser/ErrorSpec.scala b/main/src/test/scala/sbt/internals/parser/ErrorSpec.scala index 198139fd5..1ac265050 100644 --- a/main/src/test/scala/sbt/internals/parser/ErrorSpec.scala +++ b/main/src/test/scala/sbt/internals/parser/ErrorSpec.scala @@ -37,7 +37,7 @@ class ErrorSpec extends AbstractSpec with ScalaCheck { | } /* */ // |} """.stripMargin - BugInParser.findMissingText(buildSbt, buildSbt.length, 2, "fake.txt", new MessageOnlyException("fake")) must throwA[MessageOnlyException] + MissingBracketHandler.findMissingText(buildSbt, buildSbt.length, 2, "fake.txt", new MessageOnlyException("fake")) must throwA[MessageOnlyException] } } diff --git a/main/src/test/scala/sbt/SessionSettingsSpec.scala b/main/src/test/scala/sbt/internals/parser/SessionSettingsSpec.scala similarity index 57% rename from main/src/test/scala/sbt/SessionSettingsSpec.scala rename to main/src/test/scala/sbt/internals/parser/SessionSettingsSpec.scala index 4c6e79100..64bf370ca 100644 --- a/main/src/test/scala/sbt/SessionSettingsSpec.scala +++ b/main/src/test/scala/sbt/internals/parser/SessionSettingsSpec.scala @@ -1,16 +1,14 @@ -package sbt +package sbt.internals.parser import java.io.{ File, FilenameFilter } import org.specs2.matcher.MatchResult -import sbt.internals.parser.{ AbstractSpec, SplitExpressionsNoBlankies } import scala.collection.GenTraversableOnce import scala.io.Source -import scala.xml.XML -abstract class AbstractSessionSettingsSpec(folder: String, printDetails: Boolean = false) extends AbstractSpec { - protected val rootPath = getClass.getResource("").getPath + folder +abstract class AbstractSessionSettingsSpec(folder: String, deepCompare: Boolean = false) extends AbstractSpec { + protected val rootPath = getClass.getClassLoader.getResource("").getPath + folder println(s"Reading files from: $rootPath") protected val rootDir = new File(rootPath) @@ -25,7 +23,7 @@ abstract class AbstractSessionSettingsSpec(folder: String, printDetails: Boolean } } - private def runTestOnFiles(expectedResultAndMap: File => Seq[(List[String], List[List[String]])]): MatchResult[GenTraversableOnce[File]] = { + private def runTestOnFiles(expectedResultAndMap: File => Seq[(List[String], List[String])]): MatchResult[GenTraversableOnce[File]] = { val allFiles = rootDir.listFiles(new FilenameFilter() { def accept(dir: File, name: String) = name.endsWith(".sbt.txt") @@ -34,11 +32,15 @@ abstract class AbstractSessionSettingsSpec(folder: String, printDetails: Boolean file => val originalLines = Source.fromFile(file).getLines().toList foreach(expectedResultAndMap(file)) { - case (expectedResultList, map) => - val resultList = SessionSettingsNoBlankies.oldLinesToNew(originalLines, map) + case (expectedResultList, commands) => + val resultList = SbtRefactorings.applyStatements(originalLines, commands.map(List(_))) val expected = SplitExpressionsNoBlankies(file, expectedResultList) val result = SplitExpressionsNoBlankies(file, resultList) + if (deepCompare) { + expectedResultList must_== resultList + } result.settings must_== expected.settings + } } } @@ -49,28 +51,22 @@ abstract class AbstractSessionSettingsSpec(folder: String, printDetails: Boolean val startsWith = f.getName + "_" name.startsWith(startsWith) } - }).toList + }).toSeq dirs.flatMap { dir => val files = dir.listFiles(new FilenameFilter { - override def accept(dir: File, name: String) = name.endsWith(".xml") + override def accept(dir: File, name: String) = name.endsWith(".set") }) - files.map { xmlFile => - val xml = XML.loadFile(xmlFile) - val result = Source.fromFile(xmlFile.getAbsolutePath + ".result").getLines().toList - val tupleCollection = (xml \\ "settings" \\ "setting").map { - node => - val set = (node \\ "set").text - val start = (node \\ "start").text.toInt - val end = (node \\ "end").text.toInt - List(set) - }.toList - - (result, tupleCollection) + files.map { file => + val list = Source.fromFile(file).getLines().toList + val result = Source.fromFile(file.getAbsolutePath + ".result").getLines().toList + (result, list) } } } } -class SessionSettingsSpec extends AbstractSessionSettingsSpec("../session-settings") \ No newline at end of file +class SessionSettingsSpec extends AbstractSessionSettingsSpec("session-settings") + +//class SessionSettingsQuickSpec extends AbstractSessionSettingsSpec("session-settings-quick", true) \ No newline at end of file