importPackage(java.io); importPackage(java.lang); importPackage(java.util.regex); importPackage(org.mozilla.javascript); ( function(argumentList) { if (!this.EnvJasmine) { this.EnvJasmine = {}; } if (!EnvJasmine.coverage) { EnvJasmine.coverage = {}; } EnvJasmine.printDebug = function(str) { if (EnvJasmine.debug) { print(str); } }; var arg, nameValue; for (var i = 0; i < argumentList.length; i++) { arg = argumentList[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 "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; } } } properties_file = "../lib/jscover/envjasmine-sonar-coverage-properties.js"; print("Loading Helper Files"); 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(); // instrument the javascript code // no-instrument documentation: http://tntim96.github.com/JSCover/manual/manual.xml#fileMode print("Instrumenting") no_i = "" for (var i = 0; i < EnvJasmine.coverage.noInstrument.length; i++) { no_i += (" --no-instrument=" + EnvJasmine.coverage.noInstrument[i]); } cmd = "java -jar " + EnvJasmine.coverage.jscoverJar + " -fs --branch " + no_i + " " + EnvJasmine.coverage.originalDir + " " + EnvJasmine.coverage.instrumentedDir; EnvJasmine.printDebug("EXECUTING: " + cmd) EnvJasmine.coverage.executeCommand(cmd); // 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"); p = Pattern.compile("this\\._\\$jscoverage|(?