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

mockit.coverage.reporting.StaticFiles Maven / Gradle / Ivy

Go to download

JMockit is a Java toolkit for automated developer testing. It contains mocking/faking APIs and a code coverage tool, supporting both JUnit and TestNG. The mocking APIs allow all kinds of Java code, without testability restrictions, to be tested in isolation from selected dependencies.

There is a newer version: 1.49
Show newest version
/*
 * Copyright (c) 2006 JMockit developers
 * This file is subject to the terms of the MIT license (see LICENSE.txt).
 */
package mockit.coverage.reporting;

import java.io.*;
import java.security.*;
import javax.annotation.*;

import mockit.internal.util.*;

final class StaticFiles
{
   @Nonnull private final String outputDir;
   private long lastModifiedTimeOfCoverageJar;

   StaticFiles(@Nonnull String outputDir) { this.outputDir = outputDir; }

   void copyToOutputDir(boolean withSourceFilePages) throws IOException {
      copyFile("index.css");
      copyFile("coverage.js");
      copyFile("logo.png");
      copyFile("package.png");
      copyFile("class.png");
      copyFile("abstractClass.png");
      copyFile("interface.png");
      copyFile("annotation.png");
      copyFile("exception.png");
      copyFile("enum.png");

      if (withSourceFilePages) {
         copyFile("source.css");
         copyFile("prettify.js");
      }
   }

   private void copyFile(@Nonnull String fileName) throws IOException {
      File outputFile = new File(outputDir, fileName);

      if (outputFile.exists() && outputFile.lastModified() > getLastModifiedTimeOfCoverageJar()) {
         return;
      }

      try (
         OutputStream output = new BufferedOutputStream(new FileOutputStream(outputFile));
         InputStream input = new BufferedInputStream(StaticFiles.class.getResourceAsStream(fileName))
      ) {
         int b;

         while ((b = input.read()) != -1) {
            output.write(b);
         }
      }
   }

   private long getLastModifiedTimeOfCoverageJar() {
      if (lastModifiedTimeOfCoverageJar == 0) {
         CodeSource codeSource = getClass().getProtectionDomain().getCodeSource();

         if (codeSource == null) {
            lastModifiedTimeOfCoverageJar = -1;
         }
         else {
            String pathToThisJar = Utilities.getClassFileLocationPath(codeSource);
            lastModifiedTimeOfCoverageJar = new File(pathToThisJar).lastModified();
         }
      }

      return lastModifiedTimeOfCoverageJar;
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy