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

org.pitest.mutationtest.config.ConfigOption Maven / Gradle / Ivy

The newest version!
/*
 * Copyright 2011 Henry Coles
 *
 * Licensed under the Apache License, Version 2.0 ("the "License"");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and limitations under the License.
 */
package org.pitest.mutationtest.config;

import org.pitest.mutationtest.build.PercentAndConstantTimeoutStrategy;

import java.io.Serializable;
import java.nio.charset.Charset;

public enum ConfigOption {

  /**
   * Defunct parameter, to be removed once gradle plugin updated
   */
  TEST_PLUGIN("testPlugin"),

  /**
   * The directory to write report sot
   */
  REPORT_DIR("reportDir"),
  /**
   * Filter defining classes to mutate
   */
  TARGET_CLASSES("targetClasses"),

  /**
   * Directories to examine to find source files to annotate when generating
   * report
   */
  SOURCE_DIR("sourceDirs"),
  /**
   * Mutation operations to use
   */
  MUTATIONS("mutators"),
  /**
   * Features to enable/disable
   */
  FEATURES("features"),

  /**
   * Arguments to launch child processes with
   */
  CHILD_JVM("jvmArgs"),

  /**
   * Arguments to launch child processes with expressed as single line
   */
  ARG_LINE("argLine"),

  /**
   * Do/don't create timestamped folders for reports
   */
  TIME_STAMPED_REPORTS("timestampedReports", false),

  /**
   * Number of threads to use
   */
  THREADS("threads", 1),
  /**
   * Multiple of normal runtime to allow before considering a mutation to have
   * timed out
   */
  TIMEOUT_FACTOR("timeoutFactor",
      PercentAndConstantTimeoutStrategy.DEFAULT_FACTOR),
  /**
   * Consant addiotnal period of time to allow before considering a mutation to
   * have timed out
   */
  TIMEOUT_CONST("timeoutConst",
      PercentAndConstantTimeoutStrategy.DEFAULT_CONSTANT),
  /**
   * Filter limiting tests to be considered
   */
  TEST_FILTER("targetTests"),
  /**
   * List of classes no to mutate lines of calls that contain call to
   */
  AVOID_CALLS("avoidCallsTo"),
  /**
   * Filter of methods not to be mutated
   */
  EXCLUDED_METHOD("excludedMethods"),
  /**
   * Maximum number of mutations to allow per class
   */
  MAX_MUTATIONS_PER_CLASS("maxMutationsPerClass", 0),
  /**
   * Flag to indicate if verbose logging should be enabled
   */
  VERBOSE("verbose", false),

  /**
   * Verbosity of output to produce
   */
  VERBOSITY("verbosity", "default"),

  /**
   * Filter defining classes to exclude from mutation
   */
  EXCLUDED_CLASSES("excludedClasses"),

  /**
   * Filter defining test classes to excluded
   */
  EXCLUDED_TEST_CLASSES("excludedTestClasses"),
  /**
   * Formats in which to output results
   */
  OUTPUT_FORMATS("outputFormats"),

  /**
   * Classpath entries to analyse. Although classes on the launch classpath will
   * also be analysed, this is the preferred place to specify the code to
   * analyse
   */
  CLASSPATH("classPath"),
   /**
   * Same as classPath above, but in a file. The file should contain paths to the jars
   * to be added to the classpath. one path per line.
   * This is usually only needed if you are running on windows and have a huge classpath
   */
  CLASSPATH_FILE("classPathFile"),
  /**
   * Flag to indicate if an error should be thrown if no mutations found
   */
  FAIL_WHEN_NOT_MUTATIONS("failWhenNoMutations", true),
  /**
   * Ignore failing tests when computing coverage. Otherwise, the execution will fail.
   */
  SKIP_FAILING_TESTS("skipFailingTests", false),
  /**
   * Filter defining paths that should be treated as containing mutable code
   */
  CODE_PATHS("mutableCodePaths"),
  /**
   * TestNG groups/JUnit categories to include
   */
  INCLUDED_GROUPS("includedGroups"),
  /**
   * Test methods that should be included for challenging the mutants
   */
  INCLUDED_TEST_METHODS("includedTestMethods"),
  /**
   * TestNG groups / JUnit categories to exclude
   */
  EXCLUDED_GROUPS("excludedGroups"),

  /**
   * JUnit4 runners to exclude
   */
  EXCLUDED_RUNNERS("excludedRunners"),

  /**
   * Whether to compute a full mutation matrix.
   */
  FULL_MUTATION_MATRIX("fullMutationMatrix", false),

  /**
   * Maximum number of mutations to include within a single unit of analysis.
   */
  MUTATION_UNIT_SIZE("mutationUnitSize", 0),

  /**
   * Do/don't attempt to detect inlined code from finally blocks
   */
  USE_INLINED_CODE_DETECTION("detectInlinedCode", true),

  /**
   * Location to read history from for incremental analysis
   */
  HISTORY_INPUT_LOCATION("historyInputLocation"),

  /**
   * Location to write history to for incremental analysis
   */
  HISTORY_OUTPUT_LOCATION("historyOutputLocation"),

  /**
   * Mutation score below which to throw an error
   */
  MUTATION_THRESHOLD("mutationThreshold", 0),

  /**
   * Test strength score below which to throw an error
   */
  TEST_STRENGTH_THRESHOLD("testStrengthThreshold", 0),

  /**
   * Number of surviving mutants at which to throw an error
   */
  MAX_SURVIVING("maxSurviving", -1),

  /**
   * Line coverage score below which to throw an error
   */
  COVERAGE_THRESHOLD("coverageThreshold", 0),

  /**
   * Mutation engine to use
   */
  MUTATION_ENGINE("mutationEngine", "gregor"),

  /**
   * Dump per test line coverage to disk
   */
  EXPORT_LINE_COVERAGE("exportLineCoverage", false),

  /**
   * Include launch classpath in analysis
   */
  INCLUDE_LAUNCH_CLASSPATH("includeLaunchClasspath", true),

  /**
   * Path to executable with which to run tests
   */
  JVM_PATH("jvmPath"),

  /**
   * Custom properties for plugins
   */
  PLUGIN_CONFIGURATION("pluginConfiguration"),
  
  /**
   * Communicate classpath using a temporary jar with a classpath manifest.
   * Allows very long classpaths that would otherwise exceed OS limits, but
   * may cause problems with some third party libraries.
   */
  USE_CLASSPATH_JAR("useClasspathJar", false),

  /**
   * Base directory of a project. For a multi-module build this should
   * be set to the directory that contains the top level build file. Usually
   * this is the same directory as the source control root/
   */
  PROJECT_BASE("projectBase"),

  /**
   * Source file encoding
   */
  INPUT_ENCODING("inputEncoding", Charset.defaultCharset().name()),

  /**
   * Source file encoding
   */
  OUTPUT_ENCODING("outputEncoding", Charset.defaultCharset().name());

  private final String       text;
  private final Serializable defaultValue;

  ConfigOption(final String text) {
    this(text, null);
  }

  ConfigOption(final String text, final Serializable defaultValue) {
    this.text = text;
    this.defaultValue = defaultValue;
  }

  public String getParamName() {
    return this.text;
  }

  @SuppressWarnings("unchecked")
  public  T getDefault(final Class type) {
    // so much for type safety
    return (T) this.defaultValue;
  }

  @Override
  public String toString() {
    return this.text;
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy