Skip to content

Commit

Permalink
Merge pull request #38 from DannyJF/master
Browse files Browse the repository at this point in the history
Ok, I think I finally got it gem playing nicely with coverage this time
  • Loading branch information
trevmex committed Mar 26, 2013
2 parents 8209ccf + fc4a797 commit 086fef5
Show file tree
Hide file tree
Showing 5 changed files with 82 additions and 48 deletions.
2 changes: 1 addition & 1 deletion EnvJasmine.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Gem::Specification.new do |s|
s.name = "EnvJasmine"
s.version = "1.7.3"
s.version = "1.7.4"

s.authors = ["Trevor Menagh"]
s.date = "2012-12-13"
Expand Down
13 changes: 8 additions & 5 deletions lib/envjasmine.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,11 @@ EnvJasmine.setJsDir = function(jsDir) {
EnvJasmine.jsDir = jsDir;
};

EnvJasmine.plugins = [];
EnvJasmine.addPlugin = function(path) {
EnvJasmine.plugins.push(path);
};

// Process command line options
(function(argumentList) {
var arg, nameValue, spec = "", specLoc;
Expand Down Expand Up @@ -221,19 +226,17 @@ EnvJasmine.loadConfig = function () {
EnvJasmine.loadGlobal(EnvJasmine.configFile);
};

EnvJasmine.plugins = [];
EnvJasmine.addPlugin = function(path) {
EnvJasmine.plugins.push(path);
};

(function() {
var i, fileIn, len;

print("Instrumented: " +EnvJasmine.jsDir);
EnvJasmine.loadConfig();
print("Instrumented: " +EnvJasmine.jsDir);

for (i = 0; i < EnvJasmine.plugins.length; i++) {
EnvJasmine.loadGlobal(EnvJasmine.plugins[i]);
}
print("Instrumented: " +EnvJasmine.jsDir);

if (typeof EnvJasmine.reporterClass === "undefined") {
// Use the standard reporter
Expand Down
23 changes: 21 additions & 2 deletions lib/jscover/envjasmine-coverage.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
if (!this.EnvJasmine.coverage) {
this.EnvJasmine.coverage = {};
};
for (var i = 0; i < arguments.length; i++) {
arg = arguments[i];
if (arg.slice(0, 2) == "--") {
nameValue = arg.slice(2).split('=');
switch(nameValue[0]) {
case "envJasmineRootDir":
EnvJasmine.coverage.rootDir = nameValue[1];
break;
}
}
}

EnvJasmine.printDebug("Loading Properties");
properties_file = (EnvJasmine.coverage.rootDir ? EnvJasmine.coverage.rootDir : "..") + "/lib/jscover/envjasmine-sonar-coverage-properties.js";
fileIn = new FileReader(properties_file);
Context.getCurrentContext().evaluateReader(this, fileIn, "envjasmine-sonar-coverage-properties.js", 0, null);
fileIn.close();
}

EnvJasmine.coverage.writeCoverageResults = function() {
EnvJasmine.printDebug("Writing Coverage Results");
EnvJasmine.printDebug(EnvJasmine.coverage.reportJson);
var coverage = EnvJasmine.jscoverage;
try {
// clean coverage object
Expand All @@ -16,7 +35,7 @@ EnvJasmine.coverage.writeCoverageResults = function() {
//Close the output stream
out.close();
} catch (e) {//Catch exception if any
System.err.println("Error: " + e);
print("Error: " + e);
}
};

Expand Down
44 changes: 43 additions & 1 deletion lib/jscover/envjasmine-sonar-coverage-properties.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,50 @@ if (!EnvJasmine.coverage) {
EnvJasmine.coverage = {};
}

for (var i = 0; i < arguments.length; i++) {
arg = arguments[i];
EnvJasmine.printDebug("ARGUMENT: " + arg);
if (arg.slice(0, 2) == "--") {
nameValue = arg.slice(2).split('=');

switch(nameValue[0]) {
case "projectRoot":
EnvJasmine.coverage.projectRoot = nameValue[1];
break;
case "envJasmineRootDir":
EnvJasmine.coverage.rootDir = nameValue[1];
break;
case "originalDir":
EnvJasmine.coverage.originalDir = nameValue[1];
break;
case "instrumentedDir":
EnvJasmine.coverage.instrumentedDir = nameValue[1];
break;
case "reportsDir":
EnvJasmine.coverage.reportsDir = nameValue[1];
break;
case "cleanup":
EnvJasmine.coverage.cleanup = true;
break;
case "sonarMethod":
EnvJasmine.coverage.sonarMethod = nameValue[1];
break;
case "noInstrument":
if (EnvJasmine.coverage.noInstrument[0] == "ajaxDemo.js") {
// override default example
EnvJasmine.coverage.noInstrument = [];
}
EnvJasmine.coverage.noInstrument.push(nameValue[1]);
break;
case "debug":
EnvJasmine.debug = true;
break;
}
}
}

// envjasmine directories
EnvJasmine.coverage.rootDir = (new File("..")).getCanonicalPath(); // root directory of project or gem
EnvJasmine.coverage.rootDir = EnvJasmine.coverage.rootDir || (new File("..")).getCanonicalPath(); // root directory of project or gem
EnvJasmine.coverage.libDir = EnvJasmine.coverage.rootDir+"/lib/"; // lib directory (see example project structure)
EnvJasmine.coverage.jscoverDir = EnvJasmine.coverage.libDir+"/jscover/"; // jscover-envjasmine plugin directory

Expand Down
48 changes: 9 additions & 39 deletions lib/jscover/envjasmine-sonar-coverage-runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,63 +19,32 @@ importPackage(org.mozilla.javascript);
}
};

var arg, nameValue;

for (var i = 0; i < argumentList.length; i++) {
arg = argumentList[i];
EnvJasmine.printDebug("ARGUMENT: " + arg);
for (var i = 0; i < argumentList.length; i++) {
arg = argumentList[i];
if (arg.slice(0, 2) == "--") {
nameValue = arg.slice(2).split('=');

switch(nameValue[0]) {
case "projectRoot":
EnvJasmine.coverage.projectRoot = nameValue[1];
break;
case "originalDir":
EnvJasmine.coverage.originalDir = nameValue[1];
break;
case "instrumentedDir":
EnvJasmine.coverage.instrumentedDir = nameValue[1];
break;
case "reportsDir":
EnvJasmine.coverage.reportsDir = nameValue[1];
break;
case "cleanup":
EnvJasmine.coverage.cleanup = true;
break;
case "sonarMethod":
EnvJasmine.coverage.sonarMethod = nameValue[1];
break;
case "noInstrument":
if (EnvJasmine.coverage.noInstrument[0] == "ajaxDemo.js") {
// override default example
EnvJasmine.coverage.noInstrument = [];
}
EnvJasmine.coverage.noInstrument.push(nameValue[1]);
break;
case "debug":
EnvJasmine.debug = true;
case "envJasmineRootDir":
EnvJasmine.coverage.rootDir = nameValue[1];
break;
}
}
}

properties_file = "../lib/jscover/envjasmine-sonar-coverage-properties.js";

print("Loading Helper Files");
properties_file = (EnvJasmine.coverage.rootDir ? EnvJasmine.coverage.rootDir : "..") + "/lib/jscover/envjasmine-sonar-coverage-properties.js";
fileIn = new FileReader(properties_file);
Context.getCurrentContext().evaluateReader(this, fileIn, "envjasmine-sonar-coverage-properties.js", 0, null);
fileIn.close();


fileIn = new FileReader(EnvJasmine.coverage.jscoverDir + "envjasmine-sonar-coverage-helper.js");
Context.getCurrentContext().evaluateReader(this, fileIn, "envjasmine-sonar-coverage-helper.js", 0, null);
fileIn.close();

// create directories that will be used
print("Creating temp directories");
EnvJasmine.printDebug("INSTRUMENTED DIRECTORY: " + EnvJasmine.coverage.instrumentedDir);
(new File(EnvJasmine.coverage.instrumentedDir)).mkdir();
(new File(EnvJasmine.coverage.reportsDir)).mkdir();
(new File(EnvJasmine.coverage.instrumentedDir)).mkdirs();
(new File(EnvJasmine.coverage.reportsDir)).mkdirs();


// instrument the javascript code
Expand All @@ -92,6 +61,7 @@ importPackage(org.mozilla.javascript);
// some evil code is neccessary to get this to work :(
// hopefully we'll get rid of this soon jscover can be changed a little
print("Exposing coverage hooks to EnvJasmine");
print("Instrumenting: " + EnvJasmine.coverage.instrumentedDir);
p = Pattern.compile("this\\._\\$jscoverage|(?<!\\.)_\\$jscoverage", Pattern.MULTILINE);
EnvJasmine.coverage.recurseTransform(EnvJasmine.coverage.instrumentedDir, function(content) {
return p.matcher(content).replaceAll("EnvJasmine.jscoverage");
Expand Down

0 comments on commit 086fef5

Please sign in to comment.