From 313b0c0493e758243c8d68d217b088656c62f8d3 Mon Sep 17 00:00:00 2001 From: Peter van 't Hof <p.j.van_t_hof@lumc.nl> Date: Wed, 11 Feb 2015 16:01:47 +0100 Subject: [PATCH] Make a val for globalConfig, test should now be able to override it so unit test are not depending on a global var --- .../nl/lumc/sasc/biopet/core/BiopetQScript.scala | 4 ++-- .../lumc/sasc/biopet/core/MultiSampleQScript.scala | 6 +++--- .../nl/lumc/sasc/biopet/core/config/Config.scala | 3 +-- .../sasc/biopet/core/config/Configurable.scala | 7 ++++--- .../sasc/biopet/core/config/ConfigurableTest.scala | 14 ++++++-------- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala index 9dd433ab5..062d725ba 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/BiopetQScript.scala @@ -32,7 +32,7 @@ trait BiopetQScript extends Configurable with GatkLogging { val configfiles: List[File] = Nil var outputDir: String = { - val temp = Config.getValueFromMap(Config.global.map, ConfigValueIndex(this.configName, configPath, "output_dir")) + val temp = Config.getValueFromMap(globalConfig.map, ConfigValueIndex(this.configName, configPath, "output_dir")) if (temp.isEmpty) "" else { val t = temp.get.value.toString @@ -71,7 +71,7 @@ trait BiopetQScript extends Configurable with GatkLogging { case _ => } - if (new File(outputDir).canWrite) Config.global.writeReport(qSettings.runName, outputDir + ".log/" + qSettings.runName) + if (new File(outputDir).canWrite) globalConfig.writeReport(qSettings.runName, outputDir + ".log/" + qSettings.runName) else BiopetQScript.addError("Output dir: '" + outputDir + "' is not writeable") BiopetQScript.checkErrors diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala index eb76502c8..4184f29af 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/MultiSampleQScript.scala @@ -28,7 +28,7 @@ trait MultiSampleQScript extends BiopetQScript { @Argument(doc = "Only Sample", shortName = "sample", required = false) private val onlySamples: List[String] = Nil - require(Config.global.map.contains("samples"), "No Samples found in config") + require(globalConfig.map.contains("samples"), "No Samples found in config") /** * Sample class with basic functions build in @@ -80,7 +80,7 @@ trait MultiSampleQScript extends BiopetQScript { /** returns a set with library names */ protected def libIds: Set[String] = { - ConfigUtils.getMapFromPath(Config.global.map, List("samples", sampleId, "libraries")).getOrElse(Map()).keySet + ConfigUtils.getMapFromPath(globalConfig.map, List("samples", sampleId, "libraries")).getOrElse(Map()).keySet } /** Adds sample jobs */ @@ -125,7 +125,7 @@ trait MultiSampleQScript extends BiopetQScript { val samples: Map[String, Sample] = sampleIds.map(id => id -> makeSample(id)).toMap /** Returns a list of all sampleIDs */ - protected def sampleIds: Set[String] = ConfigUtils.any2map(Config.global.map("samples")).keySet + protected def sampleIds: Set[String] = ConfigUtils.any2map(globalConfig.map("samples")).keySet /** Runs addAndTrackJobs method for each sample */ final def addSamplesJobs() { diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala index 0e404dd5c..e25e8ef50 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Config.scala @@ -138,7 +138,6 @@ class Config(var map: Map[String, Any]) extends Logging { defaultCache += (requestedIndex -> ConfigValue(requestedIndex, null, default, freeVar)) defaultCache(requestedIndex) } else ConfigValue(requestedIndex, null, null, freeVar) - //else throw new IllegalStateException("Value in config could not be found but it seems required, index: " + requestedIndex) } def writeReport(id: String, directory: String): Unit = { @@ -175,7 +174,7 @@ class Config(var map: Map[String, Any]) extends Logging { val fullEffective = ConfigUtils.mergeMaps(effectiveFound, effectiveDefaultFound) val fullEffectiveWithNotFound = ConfigUtils.mergeMaps(fullEffective, notFound) - writeMapToJsonFile(Config.global.map, "input") + writeMapToJsonFile(this.map, "input") writeMapToJsonFile(found, "found") writeMapToJsonFile(effectiveFound, "effective.found") writeMapToJsonFile(effectiveDefaultFound, "effective.defaults") diff --git a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala index 774b15d2d..51997ccb8 100644 --- a/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala +++ b/public/biopet-framework/src/main/scala/nl/lumc/sasc/biopet/core/config/Configurable.scala @@ -21,6 +21,7 @@ import nl.lumc.sasc.biopet.utils.ConfigUtils.ImplicitConversions trait Configurable extends ImplicitConversions { /** Should be object of parant object */ val root: Configurable + val globalConfig: Config = if (root != null) root.globalConfig else Config.global /** subfix to the path */ def subPath: List[String] = Nil @@ -98,8 +99,8 @@ trait Configurable extends ImplicitConversions { val value = Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) if (value.isDefined) value.get.value else default } - if (d == null) Config.global(m, p, key, freeVar = freeVar) - else Config.global(m, p, key, d, freeVar) + if (d == null) globalConfig(m, p, key, freeVar = freeVar) + else globalConfig(m, p, key, d, freeVar) } /** @@ -121,7 +122,7 @@ trait Configurable extends ImplicitConversions { val m = if (submodule != null) submodule else configName val p = path(s, l, submodule) - Config.global.contains(m, p, key, freeVar) || !(Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) == None) + globalConfig.contains(m, p, key, freeVar) || !(Config.getValueFromMap(defaults.toMap, ConfigValueIndex(m, p, key, freeVar)) == None) } } } diff --git a/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala b/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala index 55f672cc1..ba0429fd3 100644 --- a/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala +++ b/public/biopet-framework/src/test/scala/nl/lumc/sasc/biopet/core/config/ConfigurableTest.scala @@ -11,10 +11,10 @@ import org.testng.annotations.Test */ class ConfigurableTest extends TestNGSuite with Matchers { @Test def testConfigurable: Unit = { - Config.global.map = Map() - Config.global.loadConfigFile(ConfigurableTest.file) - - val classC = new ClassC + val classC = new ClassC { + override def configName = "classc" + override val globalConfig = new Config(ConfigurableTest.map) + } classC.configPath shouldBe Nil classC.configFullPath shouldBe List("classc") @@ -53,12 +53,12 @@ abstract class Cfg extends Configurable { class ClassA(val root: Configurable) extends Cfg class ClassB(val root: Configurable) extends Cfg { - val classA = new ClassA(this) + lazy val classA = new ClassA(this) } class ClassC(val root: Configurable) extends Cfg { def this() = this(null) - val classB = new ClassB(this) + lazy val classB = new ClassB(this) } object ConfigurableTest { @@ -80,6 +80,4 @@ object ConfigurableTest { ) ) ) - - val file = ConfigUtilsTest.writeTemp(ConfigUtils.mapToJson(map).spaces2) } -- GitLab