package testhelper;

/**
 * <code>OutputDirectoryPatch</code> is a helper class to provide an output directory
 * for TestNG tests that explicitly create an instance of TestNG and do not know the
 * output directory specified for the test.
 *
 * @author cquezel
 * @since 4.8
 */
public final class OutputDirectoryPatch {
  
  /** The default output directory name if none was specified. We should use something
   * different than "test-output" to make it clear that the output directory 
   * has not been set. */
  private static final String DEFAULT_OUTPUT_DIRECTORY = "test-output";

  /** The name of the System property used to store the output directory. */
  private static final String OUTPUT_DIRECTORY_PROPERTY_NAME = "testng.outputDir";
  
  /**
   * Private constructor to disable instantiation.
   *
   * @since 4.8
   */
  private OutputDirectoryPatch() {
    // Hide constructor
  }
  
  /**
   * Returns the output directory as specified for the current test.
   *
   * @return the output directory as specified for the current test.
   * @since 4.8
   */
  public static String getOutputDirectory() {
    String tmp = System.getProperty(OUTPUT_DIRECTORY_PROPERTY_NAME);
    if (tmp != null) {
      return tmp;
    }
//    System.err.println("System property: " + OUTPUT_DIRECTORY_PROPERTY_NAME 
//        + " has not been set. Using default path: " + DEFAULT_OUTPUT_DIRECTORY);
    
//    new Throwable("Stack is only to help locate the problem. No excpetion thrown.").printStackTrace(System.err);
    return DEFAULT_OUTPUT_DIRECTORY;
  }
}
