@JRubyMethod(module = true) public static IRubyObject result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } IRubyObject result = convertCoverageToRuby(context, runtime, runtime.getCoverageData().getCoverage()); runtime.getCoverageData().resetCoverage(runtime); return result; }
@JRubyMethod(module = true) public static IRubyObject peek_result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } return convertCoverageToRuby(context, runtime, runtime.getCoverageData().getCoverage()); }
public synchronized Map<String, int[]> resetCoverage(Ruby runtime) { Map<String, int[]> coverage = this.coverage; runtime.removeEventHook(COVERAGE_HOOK); coverage.remove(STARTED); for (Map.Entry<String, int[]> entry : coverage.entrySet()) { String key = entry.getKey(); // on reset we do not reset files where no execution ever happened but we do reset // any files visited to be an empty array. Why? I don't know. Matching MRI. if (hasCodeBeenPartiallyCovered(entry.getValue())) coverage.put(key, SVALUE); } this.coverage = null; return coverage; }
@JRubyMethod(module = true) public static IRubyObject start(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { runtime.getCoverageData().setCoverageEnabled(runtime, true); } return context.nil; }
@JRubyMethod(module = true) public static IRubyObject result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } Map<String, Integer[]> coverage = runtime.getCoverageData().resetCoverage(runtime); // populate a Ruby Hash with coverage data RubyHash covHash = RubyHash.newHash(runtime); for (Map.Entry<String, Integer[]> entry : coverage.entrySet()) { RubyArray ary = RubyArray.newArray(runtime, entry.getValue().length); for (int i = 0; i < entry.getValue().length; i++) { Integer integer = entry.getValue()[i]; ary.store(i, integer == null ? runtime.getNil() : runtime.newFixnum(integer)); covHash.fastASetCheckString(runtime, RubyString.newString(runtime, entry.getKey()), ary); } } return covHash; }
/** * Zero out coverable lines as they're encountered */ public void coverLine(int i) { if (i < 0) return; // JRUBY-6868: why would there be negative line numbers? if (runtime.getCoverageData().isCoverageEnabled()) { if (coverage == null) { coverage = new Integer[i + 1]; } else if (coverage.length <= i) { Integer[] newCoverage = new Integer[i + 1]; System.arraycopy(coverage, 0, newCoverage, 0, coverage.length); coverage = newCoverage; } // zero means coverable, but not yet covered coverage[i] = 0; } }
/** * At end of a parse if coverage is enabled we will do final processing * of the primitive coverage array and make sure runtimes coverage data * has been updated with this new data. */ public CoverageData finishCoverage(String file, int lines) { if (!isCoverageEnabled()) return null; growCoverageLines(lines); CoverageData data = runtime.getCoverageData(); data.prepareCoverage(file, coverage); return data; }
@JRubyMethod(module = true) public static IRubyObject result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } IRubyObject result = convertCoverageToRuby(context, runtime, runtime.getCoverageData().getCoverage()); runtime.getCoverageData().resetCoverage(runtime); return result; }
@JRubyMethod(module = true) public static IRubyObject start(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { runtime.getCoverageData().setCoverageEnabled(runtime, true); } return context.nil; }
@JRubyMethod(module = true) public static IRubyObject peek_result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } return convertCoverageToRuby(context, runtime, runtime.getCoverageData().getCoverage()); }
@JRubyMethod(module = true) public static IRubyObject result(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { throw runtime.newRuntimeError("coverage measurement is not enabled"); } Map<String, Integer[]> coverage = runtime.getCoverageData().resetCoverage(runtime); // populate a Ruby Hash with coverage data RubyHash covHash = RubyHash.newHash(runtime); for (Map.Entry<String, Integer[]> entry : coverage.entrySet()) { RubyArray ary = RubyArray.newArray(runtime, entry.getValue().length); for (int i = 0; i < entry.getValue().length; i++) { Integer integer = entry.getValue()[i]; ary.store(i, integer == null ? runtime.getNil() : runtime.newFixnum(integer)); covHash.fastASetCheckString(runtime, RubyString.newString(runtime, entry.getKey()), ary); } } return covHash; }
/** * Zero out coverable lines as they're encountered */ public void coverLine(int i) { if (i < 0) return; // JRUBY-6868: why would there be negative line numbers? if (runtime.getCoverageData().isCoverageEnabled()) { if (coverage == null) { coverage = new Integer[i + 1]; } else if (coverage.length <= i) { Integer[] newCoverage = new Integer[i + 1]; System.arraycopy(coverage, 0, newCoverage, 0, coverage.length); coverage = newCoverage; } // zero means coverable, but not yet covered coverage[i] = 0; } }
/** * At end of a parse if coverage is enabled we will do final processing * of the primitive coverage array and make sure runtimes coverage data * has been updated with this new data. */ public CoverageData finishCoverage(String file, int lines) { if (!isCoverageEnabled()) return null; growCoverageLines(lines); CoverageData data = runtime.getCoverageData(); data.prepareCoverage(file, coverage); return data; }
public synchronized Map<String, int[]> resetCoverage(Ruby runtime) { Map<String, int[]> coverage = this.coverage; runtime.removeEventHook(COVERAGE_HOOK); coverage.remove(STARTED); for (Map.Entry<String, int[]> entry : coverage.entrySet()) { String key = entry.getKey(); // on reset we do not reset files where no execution ever happened but we do reset // any files visited to be an empty array. Why? I don't know. Matching MRI. if (hasCodeBeenPartiallyCovered(entry.getValue())) coverage.put(key, SVALUE); } this.coverage = null; return coverage; }
@JRubyMethod(module = true) public static IRubyObject start(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { runtime.getCoverageData().setCoverageEnabled(runtime, true); } return context.nil; }
@JRubyMethod(name = "running?", module = true) public static IRubyObject running_p(ThreadContext context, IRubyObject self) { return context.runtime.getCoverageData().isCoverageEnabled() ? context.tru : context.fals; }
@JRubyMethod(module = true) public static IRubyObject start(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; if (!runtime.getCoverageData().isCoverageEnabled()) { runtime.getCoverageData().setCoverageEnabled(runtime, true); } return context.nil; }
@JRubyMethod(name = "running?", module = true) public static IRubyObject running_p(ThreadContext context, IRubyObject self) { return context.runtime.getCoverageData().isCoverageEnabled() ? context.tru : context.fals; }
public boolean isCoverageEnabled() { return !isEvalParse() && runtime.getCoverageData().isCoverageEnabled(); }
public boolean isCoverageEnabled() { return !isEvalParse() && runtime.getCoverageData().isCoverageEnabled(); }