All Downloads are FREE. Search and download functionalities are using the official Maven repository.

sbt.testing.Task.scala Maven / Gradle / Ivy

/*
 * Scala.js (https://www.scala-js.org/)
 *
 * Copyright EPFL.
 *
 * Licensed under Apache License 2.0
 * (https://www.apache.org/licenses/LICENSE-2.0).
 *
 * See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.
 */

package sbt.testing

/** A task to execute.
 *
 *  The client may decide when or how to execute the task based on its tags. A
 *  task can be any job, but is primarily intended for running tests and/or
 *  supplying more tasks to the client. A framework can supply more tasks to
 *  the client in the returned an array of Tasks (which can be empty
 *  if there's no more work to do.)
 */
trait Task {

  /** A possibly zero-length array of string tags associated with this task.
   *
   *  A task may be tagged, for example, with a string that indicates it
   *  consumes a lot of CPU time. Users can configure the client to only run,
   *  say, three such CPU-intensive tasks concurrently.
   *
   *  @return a possibly zero-length string array of this task's tags
   */
  def tags(): Array[String]

  /** Executes this task, possibly returning to the client new tasks to execute.
   *
   *  @param eventHandler an event handler to which to fire events during the run
   *  @param loggers an array of loggers to which to emit log messages during the run
   *  @return a possibly empty array of new tasks for the client to execute
   */
  def execute(eventHandler: EventHandler, loggers: Array[Logger]): Array[Task]

  /** Scala.js specific: Same as basic
   *  [[[sbt.testing.Task.execute(eventHandler:sbt\.testing\.EventHandler,loggers:Array[sbt\.testing\.Logger])*
   *  execute]]]
   *  but takes a continuation.
   *
   *  This is to support JavaScripts asynchronous nature.
   *
   *  When running in a JavaScript environment, only this method will be
   *  called.
   */
  def execute(eventHandler: EventHandler, loggers: Array[Logger],
      continuation: Array[Task] => Unit): Unit

  /** Returns the TaskDef that was used to request this
   *  Task.
   *
   *  @return the TaskDef that was used to request this
   *          Task.
   */
  def taskDef(): TaskDef
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy