[jscover] 22/69: Add `--save-json-only` to only save coverage data (https://github.com/tntim96/JSCover/issues/142)

Sylvestre Ledru sylvestre at moszumanska.debian.org
Fri Aug 22 05:54:03 UTC 2014


This is an automated email from the git hooks/post-receive script.

sylvestre pushed a commit to branch master
in repository jscover.

commit a53511b1465c9e363e0613397f84eed7649e1e61
Author: tntim96 <tntim96 at gmail.com>
Date:   Sun Jun 22 20:18:58 2014 +1000

    Add `--save-json-only` to only save coverage data (https://github.com/tntim96/JSCover/issues/142)
---
 History.md                                         |  1 +
 build.xml                                          |  2 +-
 .../jscover/server/ConfigurationForServer.java     |  8 ++++
 .../server/InstrumentingRequestHandler.java        | 37 ++++++++++-------
 .../jscover/server/ConfigurationForServerTest.java |  6 +++
 .../server/InstrumentingRequestHandlerTest.java    | 47 +++++++++++++++++++---
 6 files changed, 79 insertions(+), 22 deletions(-)

diff --git a/History.md b/History.md
index 9e6c671..e9087d2 100644
--- a/History.md
+++ b/History.md
@@ -1,5 +1,6 @@
 1.0.12 / 2014-??-??
 ==================
+  * Add `--save-json-only` to only save coverage data (https://github.com/tntim96/JSCover/issues/142)
   * Allow merging if no `original-src` directory exists (https://github.com/tntim96/JSCover/issues/142)
   * Internal: Fix tests failing with non-english locale (https://github.com/tntim96/JSCover/issues/141)
 
diff --git a/build.xml b/build.xml
index d53f6fe..02018ac 100644
--- a/build.xml
+++ b/build.xml
@@ -167,7 +167,7 @@
 	</target>
 
 	<target name="coverage-check">
-		<cobertura-check totallinerate="89" totalbranchrate="89"/>
+		<cobertura-check totallinerate="89" totalbranchrate="90"/>
 	</target>
 
 	<target name="coverage-check-all">
diff --git a/src/main/java/jscover/server/ConfigurationForServer.java b/src/main/java/jscover/server/ConfigurationForServer.java
index 8ef475e..26a6d53 100644
--- a/src/main/java/jscover/server/ConfigurationForServer.java
+++ b/src/main/java/jscover/server/ConfigurationForServer.java
@@ -358,6 +358,7 @@ public class ConfigurationForServer extends ConfigurationCommon {
     public static final String DOC_ROOT_PREFIX = "--document-root=";
     public static final String PORT_PREFIX = "--port=";
     public static final String PROXY_PREFIX = "--proxy";
+    public static final String SAVE_JSON_ONLY = "--save-json-only";
     public static final String REPORT_DIR_PREFIX = "--report-dir=";
     public static final String INCLUDE_UNLOADED_JS_PREFIX = "--include-unloaded-js";
     public static final String URI_TO_FILE_MATCHER_PREFIX = "--uri-to-file-matcher=";
@@ -366,6 +367,7 @@ public class ConfigurationForServer extends ConfigurationCommon {
     private File documentRoot = new File(System.getProperty("user.dir"));
     private Integer port = 8080;
     private boolean proxy;
+    private boolean saveJSONOnly;
     private File reportDir = new File(System.getProperty("user.dir"));
     private boolean includeUnloadedJS;
     private Pattern uriToFileMatcher;
@@ -400,6 +402,10 @@ public class ConfigurationForServer extends ConfigurationCommon {
         return reportDir;
     }
 
+    public boolean isSaveJSONOnly() {
+        return saveJSONOnly;
+    }
+
     public String getHelpText() {
         return ioUtils.toString(getClass().getResourceAsStream("help.txt"));
     }
@@ -440,6 +446,8 @@ public class ConfigurationForServer extends ConfigurationCommon {
             port = Integer.valueOf(arg.substring(PORT_PREFIX.length()));
         } else if (arg.equals(PROXY_PREFIX)) {
             proxy = true;
+        } else if (arg.equals(SAVE_JSON_ONLY)) {
+            saveJSONOnly = true;
         } else if (arg.equals(INCLUDE_UNLOADED_JS_PREFIX)) {
             includeUnloadedJS = true;
         } else if (arg.startsWith(REPORT_DIR_PREFIX)) {
diff --git a/src/main/java/jscover/server/InstrumentingRequestHandler.java b/src/main/java/jscover/server/InstrumentingRequestHandler.java
index 51da8fe..5bb1e61 100644
--- a/src/main/java/jscover/server/InstrumentingRequestHandler.java
+++ b/src/main/java/jscover/server/InstrumentingRequestHandler.java
@@ -410,7 +410,8 @@ public class InstrumentingRequestHandler extends HttpServer {
                 unloadJSData = unloadedSourceProcessor.getEmptyCoverageData(uris.keySet());
                 for (ScriptCoverageCount scriptLinesAndSource : unloadJSData) {
                     File src = new File(configuration.getDocumentRoot(), scriptLinesAndSource.getUri());
-                    ioUtils.copy(src, new File(reportDir, Main.reportSrcSubDir + scriptLinesAndSource.getUri()));
+                    if (!configuration.isSaveJSONOnly())
+                        ioUtils.copy(src, new File(reportDir, Main.reportSrcSubDir + scriptLinesAndSource.getUri()));
                 }
             }
             long skipped = request.getInputStream().skip(request.getPostIndex());
@@ -418,21 +419,10 @@ public class InstrumentingRequestHandler extends HttpServer {
             String data = ioUtils.toStringNoClose(request.getInputStream(), request.getContentLength());
             logger.finest(data);
             jsonDataSaver.saveJSONData(reportDir, data, unloadJSData, uriFileTranslator);
-            if (configuration.isProxy()) {
-                for (String jsURI : uris.keySet()) {
-                    File dest = new File(reportDir, Main.reportSrcSubDir + "/" + jsURI);
-                    logger.log(FINE, "Copying {0} to {1}", new Object[]{jsURI, dest.getCanonicalPath()});
-                    ioUtils.copy(uris.get(jsURI), dest);
-                }
-            } else {
-                for (String jsURI : uris.keySet()) {
-                    File src = new File(configuration.getDocumentRoot(), jsURI);
-                    File dest = new File(reportDir, Main.reportSrcSubDir + "/" + jsURI);
-                    logger.log(FINE, "Copying {0} to {1}", new Object[]{jsURI, dest.getCanonicalPath()});
-                    ioUtils.copy(src, dest);
-                }
+            if (!configuration.isSaveJSONOnly()) {
+                copyJSSourceIntoReportDir(reportDir);
+                ioService.generateJSCoverFilesForWebServer(reportDir, configuration.getVersion());
             }
-            ioService.generateJSCoverFilesForWebServer(reportDir, configuration.getVersion());
             sendResponse(HTTP_STATUS.HTTP_OK, MIME.TEXT_PLAIN, "Coverage data stored at " + reportDir);
         } catch(Throwable t) {
             logger.log(SEVERE, "Error saving coverage data", t);
@@ -441,6 +431,23 @@ public class InstrumentingRequestHandler extends HttpServer {
         }
     }
 
+    private void copyJSSourceIntoReportDir(File reportDir) throws IOException {
+        if (configuration.isProxy()) {
+            for (String jsURI : uris.keySet()) {
+                File dest = new File(reportDir, Main.reportSrcSubDir + "/" + jsURI);
+                logger.log(FINE, "Copying {0} to {1}", new Object[]{jsURI, dest.getCanonicalPath()});
+                ioUtils.copy(uris.get(jsURI), dest);
+            }
+        } else {
+            for (String jsURI : uris.keySet()) {
+                File src = new File(configuration.getDocumentRoot(), jsURI);
+                File dest = new File(reportDir, Main.reportSrcSubDir + "/" + jsURI);
+                logger.log(FINE, "Copying {0} to {1}", new Object[]{jsURI, dest.getCanonicalPath()});
+                ioUtils.copy(src, dest);
+            }
+        }
+    }
+
     @Override
     protected void handleGet(HttpRequest request) throws IOException {
         String uri = request.getPath();
diff --git a/src/test/java/jscover/server/ConfigurationForServerTest.java b/src/test/java/jscover/server/ConfigurationForServerTest.java
index dc6c157..88ca10b 100644
--- a/src/test/java/jscover/server/ConfigurationForServerTest.java
+++ b/src/test/java/jscover/server/ConfigurationForServerTest.java
@@ -367,6 +367,7 @@ public class ConfigurationForServerTest {
         assertThat(configuration.skipInstrumentation("/"), is(false));
         assertThat(configuration.getCompilerEnvirons().getLanguageVersion(), equalTo(150));
         assertThat(configuration.isProxy(), is(false));
+        assertThat(configuration.isSaveJSONOnly(), is(false));
         assertThat(configuration.isIncludeUnloadedJS(), is(false));
         assertThat(configuration.isIncludeBranch(), is(true));
         assertThat(configuration.isIncludeFunction(), is(true));
@@ -456,6 +457,11 @@ public class ConfigurationForServerTest {
     }
 
     @Test
+    public void shouldParseSaveJSONOnly() {
+        assertThat(ConfigurationForServer.parse(new String[]{"--save-json-only"}).isSaveJSONOnly(), is(true));
+    }
+
+    @Test
     public void shouldParseIncludedUnloadedJS() {
         assertThat(ConfigurationForServer.parse(new String[]{"--include-unloaded-js"}).isIncludeUnloadedJS(), is(true));
     }
diff --git a/src/test/java/jscover/server/InstrumentingRequestHandlerTest.java b/src/test/java/jscover/server/InstrumentingRequestHandlerTest.java
index 8cc4a3c..b4f21fe 100644
--- a/src/test/java/jscover/server/InstrumentingRequestHandlerTest.java
+++ b/src/test/java/jscover/server/InstrumentingRequestHandlerTest.java
@@ -371,6 +371,7 @@ import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.equalTo;
 import static org.mockito.BDDMockito.given;
 import static org.mockito.Mockito.*;
+import static org.mockito.Mockito.verifyZeroInteractions;
 
 @RunWith(MockitoJUnitRunner.class)
 public class InstrumentingRequestHandlerTest {
@@ -553,10 +554,15 @@ public class InstrumentingRequestHandlerTest {
 
     @Test
     public void shouldStoreJSCoverageJSONInSpecifiedSubDirectoryAndCopySourceForReport() {
+        testStoreJSCoverageJSONInSpecifiedSubDirectory(false);
+    }
+
+    private void testStoreJSCoverageJSONInSpecifiedSubDirectory(boolean saveJSONOnly) {
         InstrumentingRequestHandler.uris = new HashMap<String, String>(){{put("js/util.js",null);}};
         File file = new File("target/temp");
         file.deleteOnExit();
         given(configuration.getReportDir()).willReturn(file);
+        given(configuration.isSaveJSONOnly()).willReturn(saveJSONOnly);
         given(configuration.getVersion()).willReturn("theVersion");
         given(ioUtils.toStringNoClose(bais, 12)).willReturn("data");
         given(bais.skip(50)).willReturn(50L);
@@ -565,19 +571,32 @@ public class InstrumentingRequestHandlerTest {
 
         File subdirectory = new File(file, "subdirectory");
         verify(jsonDataSaver).saveJSONData(subdirectory, "data", null, uriFileTranslator);
-        verify(ioService).generateJSCoverFilesForWebServer(subdirectory, "theVersion");
+        if (saveJSONOnly)
+            verifyZeroInteractions(ioService);
+        else
+            verify(ioService).generateJSCoverFilesForWebServer(subdirectory, "theVersion");
         verify(bais).skip(50);
-        verify(ioUtils).copy(new File("js/util.js"), new File(configuration.getReportDir(), "subdirectory/" + Main.reportSrcSubDir + "/js/util.js"));
+        verify(ioUtils, times(saveJSONOnly ? 0 : 1)).copy(new File("js/util.js"), new File(configuration.getReportDir(), "subdirectory/" + Main.reportSrcSubDir + "/js/util.js"));
         verifyZeroInteractions(instrumenterService);
         assertThat(stringWriter.toString(), containsString(format("Coverage data stored at %s", subdirectory)));
     }
 
     @Test
     public void shouldStoreJSCoverageJSONInSpecifiedSubDirectoryAndCopySourceForReportForProxy() {
+        testStoreJSCoverageJSONInSpecifiedSubDirectoryForProxy(false);
+    }
+
+    @Test
+    public void shouldStoreJSCoverageJSONInSpecifiedSubDirectoryAndNotCopySourceForReportForProxy() {
+        testStoreJSCoverageJSONInSpecifiedSubDirectoryForProxy(true);
+    }
+
+    private void testStoreJSCoverageJSONInSpecifiedSubDirectoryForProxy(boolean saveJSONOnly) {
         InstrumentingRequestHandler.uris = new HashMap<String, String>(){{put("js/util.js","someJavaScript");}};
         File file = new File("target/temp");
         file.deleteOnExit();
         given(configuration.isProxy()).willReturn(true);
+        given(configuration.isSaveJSONOnly()).willReturn(saveJSONOnly);
         given(configuration.getReportDir()).willReturn(file);
         given(configuration.getVersion()).willReturn("theVersion");
         given(ioUtils.toStringNoClose(bais, 12)).willReturn("data");
@@ -587,18 +606,31 @@ public class InstrumentingRequestHandlerTest {
 
         File subdirectory = new File(file, "subdirectory");
         verify(jsonDataSaver).saveJSONData(subdirectory, "data", null, uriFileTranslator);
-        verify(ioService).generateJSCoverFilesForWebServer(subdirectory, "theVersion");
+        if (saveJSONOnly)
+            verifyZeroInteractions(ioService);
+        else
+            verify(ioService).generateJSCoverFilesForWebServer(subdirectory, "theVersion");
         verify(bais).skip(50);
-        verify(ioUtils).copy("someJavaScript", new File(configuration.getReportDir(), "subdirectory/" + Main.reportSrcSubDir + "/js/util.js"));
+        verify(ioUtils, times(saveJSONOnly ? 0 : 1)).copy("someJavaScript", new File(configuration.getReportDir(), "subdirectory/" + Main.reportSrcSubDir + "/js/util.js"));
         verifyZeroInteractions(instrumenterService);
         assertThat(stringWriter.toString(), containsString(format("Coverage data stored at %s", subdirectory)));
     }
 
     @Test
     public void shouldStoreJSCoverageJSONWithUnloadedJSAndCopySourceForReport() {
+        testStoreJSCoverageJSONWithUnloadedJS(false);
+    }
+
+    @Test
+    public void shouldStoreJSCoverageJSONWithUnloadedJSAndNotCopySourceForReport() {
+        testStoreJSCoverageJSONWithUnloadedJS(true);
+    }
+
+    private void testStoreJSCoverageJSONWithUnloadedJS(boolean saveJSONOnly) {
         File reportDir = new File("target/temp");
         reportDir.deleteOnExit();
         given(configuration.isIncludeUnloadedJS()).willReturn(true);
+        given(configuration.isSaveJSONOnly()).willReturn(saveJSONOnly);
         given(configuration.getReportDir()).willReturn(reportDir);
         given(configuration.getVersion()).willReturn("theVersion");
         given(ioUtils.toStringNoClose(bais, 12)).willReturn("data");
@@ -610,9 +642,12 @@ public class InstrumentingRequestHandlerTest {
         webServer.handlePostOrPut(new HttpRequest(JSCOVERAGE_STORE, bais, null, 50, headers));
 
         verify(jsonDataSaver).saveJSONData(reportDir, "data", unloadedJS, uriFileTranslator);
-        verify(ioService).generateJSCoverFilesForWebServer(reportDir, "theVersion");
+        if (saveJSONOnly)
+            verifyZeroInteractions(ioService);
+        else
+            verify(ioService).generateJSCoverFilesForWebServer(reportDir, "theVersion");
         verify(bais).skip(50);
-        verify(ioUtils).copy(new File("/js/unloaded.js"), new File(configuration.getReportDir(), Main.reportSrcSubDir + "/js/unloaded.js"));
+        verify(ioUtils, times(saveJSONOnly ? 0 : 1)).copy(new File("/js/unloaded.js"), new File(configuration.getReportDir(), Main.reportSrcSubDir + "/js/unloaded.js"));
         verifyZeroInteractions(instrumenterService);
         assertThat(stringWriter.toString(), containsString(format("Coverage data stored at %s", reportDir)));
     }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/jscover.git



More information about the pkg-java-commits mailing list