|  | 
|  | 1 | +/* | 
|  | 2 | + * ScalaCheck | 
|  | 3 | + * Copyright (c) 2007-2021 Rickard Nilsson. All rights reserved. | 
|  | 4 | + * http://www.scalacheck.org | 
|  | 5 | + * | 
|  | 6 | + * This software is released under the terms of the Revised BSD License. | 
|  | 7 | + * There is NO WARRANTY. See the file LICENSE for the full text. | 
|  | 8 | + */ | 
|  | 9 | + | 
|  | 10 | +package org.scalacheck | 
|  | 11 | + | 
|  | 12 | +import org.scalacheck.Prop.proved | 
|  | 13 | +import sbt.testing.{Selector, SuiteSelector, TaskDef, TestSelector} | 
|  | 14 | + | 
|  | 15 | +object ScalaCheckFrameworkSpecification extends Properties("ScalaCheckFramework") { | 
|  | 16 | + | 
|  | 17 | +  private val firstProp = "ScalaCheckFrameworkHelper.first prop" | 
|  | 18 | +  private val secondProp = "ScalaCheckFrameworkHelper.second prop" | 
|  | 19 | +  private val thirdProp = "ScalaCheckFrameworkHelper.third prop" | 
|  | 20 | + | 
|  | 21 | +  property("all props with SuiteSelector") = { | 
|  | 22 | +    getPropNamesForSelectors(List(new SuiteSelector)) == List(firstProp, secondProp, thirdProp) | 
|  | 23 | +    getPropNamesForSelectors(List(new SuiteSelector, new TestSelector(firstProp))) == List( | 
|  | 24 | +      firstProp, | 
|  | 25 | +      secondProp, | 
|  | 26 | +      thirdProp) | 
|  | 27 | +    getPropNamesForSelectors(List(new SuiteSelector, new TestSelector("no matches"))) == List( | 
|  | 28 | +      firstProp, | 
|  | 29 | +      secondProp, | 
|  | 30 | +      thirdProp) | 
|  | 31 | +  } | 
|  | 32 | + | 
|  | 33 | +  property("only matching props with TestSelector") = { | 
|  | 34 | +    getPropNamesForSelectors(List(new TestSelector(firstProp))) == List(firstProp) | 
|  | 35 | +    getPropNamesForSelectors(List(new TestSelector(secondProp))) == List(secondProp) | 
|  | 36 | +    getPropNamesForSelectors(List(new TestSelector(firstProp), new TestSelector(thirdProp))) == List( | 
|  | 37 | +      firstProp, | 
|  | 38 | +      thirdProp) | 
|  | 39 | +    getPropNamesForSelectors(List(new TestSelector("no matches"))) == Nil | 
|  | 40 | +  } | 
|  | 41 | + | 
|  | 42 | +  private def getPropNamesForSelectors(selectors: List[Selector]): List[String] = { | 
|  | 43 | +    val framework = new ScalaCheckFramework() | 
|  | 44 | +    val runner = framework.runner(Array.empty, Array.empty, getClass.getClassLoader).asInstanceOf[ScalaCheckRunner] | 
|  | 45 | +    val taskDef = new TaskDef( | 
|  | 46 | +      classOf[ScalaCheckFrameworkSpecificationHelper].getName, | 
|  | 47 | +      framework.fingerprints()(0), | 
|  | 48 | +      true, | 
|  | 49 | +      selectors.toArray) | 
|  | 50 | +    val baseTask = runner.rootTask(taskDef) | 
|  | 51 | +    val newTasks = baseTask.execute(null, null) | 
|  | 52 | +    val propNames = for { | 
|  | 53 | +      task <- newTasks | 
|  | 54 | +      selector <- task.taskDef().selectors() | 
|  | 55 | +    } yield selector.asInstanceOf[TestSelector].testName() | 
|  | 56 | +    propNames.toList | 
|  | 57 | +  } | 
|  | 58 | +} | 
|  | 59 | + | 
|  | 60 | +class ScalaCheckFrameworkSpecificationHelper extends Properties("ScalaCheckFrameworkHelper") { | 
|  | 61 | +  property("first prop") = proved | 
|  | 62 | +  property("second prop") = proved | 
|  | 63 | +  property("third prop") = proved | 
|  | 64 | +} | 
0 commit comments