[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