coverage_peek 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bff4055b5dad3614b1f3afcc4ed9abe06f177e4a
4
- data.tar.gz: 6a8969f8bc4138c0c3c5366d0cf181e34b3c4915
3
+ metadata.gz: 052fb0423e40782eab33c74fb53f733d64db0b67
4
+ data.tar.gz: b7718915fb76d46ffd8e5181fb96fb7be4190d93
5
5
  SHA512:
6
- metadata.gz: 8d1404d0a7ba1f71e259f6086f9b3d12fc9c55d350ac584efd6dc0b51bdb59307483fb88bccfa7b57d51c1be22558c89e677b22ddd366e251c4f86c9f05a19f0
7
- data.tar.gz: d70bef74ce797beb2e6a588b47822d9b6c3413827ab2cd9b1a5752958ffd448eed940545ac4844e005525cdf96a885a77110f5ba4b75b1fbc34f112fc72cacff
6
+ metadata.gz: 9002ffcbc52824fdcf8e8fe47b03a5ccff30556bbd2f794963703f60e04921d87bc641ecf9762e8ddf396f18273f534d4c6fac9f902c164ffcfe11b67b36b6ff
7
+ data.tar.gz: 0ec2bbc5a30676ac996cc6580cbeb30e503a920c4844624a02d69d14913dd1a47ed76cd32bf461abade0a3c2f7bf3969e65995e2615dc525ba3c6f3ecb3aa80b
@@ -7,6 +7,7 @@ ID id_Coverage;
7
7
  extern VALUE
8
8
  rb_get_coverages(void);
9
9
 
10
+ /* BEGIN copy-paste from ruby-2.3 */
10
11
  static int
11
12
  coverage_peek_result_i(st_data_t key, st_data_t val, st_data_t h)
12
13
  {
@@ -37,14 +38,62 @@ rb_coverage_peek_result(VALUE klass)
37
38
  rb_hash_freeze(ncoverages);
38
39
  return ncoverages;
39
40
  }
41
+ /* END copy-paste from ruby-2.3 */
42
+
43
+
44
+ static int
45
+ coverage_peek_result_filtered_i(st_data_t key, st_data_t val, st_data_t h)
46
+ {
47
+ VALUE path = (VALUE)key;
48
+ VALUE coverage = (VALUE)val;
49
+ VALUE coverages = (VALUE)h;
50
+ int found = 0;
51
+ long i;
52
+ for (i = 0; i < RARRAY_LEN(coverage); i++) {
53
+ VALUE elt = rb_ary_entry(coverage, i);
54
+ if (NIL_P(elt))
55
+ continue;
56
+ if (FIXNUM_P(elt) && FIX2LONG(elt) > 0) {
57
+ found = 1;
58
+ break;
59
+ }
60
+ }
61
+ if (!found)
62
+ return ST_CONTINUE;
63
+ coverage = rb_ary_dup(coverage);
64
+ rb_ary_freeze(coverage);
65
+ rb_hash_aset(coverages, path, coverage);
66
+ return ST_CONTINUE;
67
+ }
68
+
69
+ /*
70
+ * call-seq:
71
+ * Coverage.peek_result_filtered => hash
72
+ *
73
+ * Returns a hash that contains filename as key and coverage array as
74
+ * value. Elides any files that have no executed lines.
75
+ */
76
+ static VALUE
77
+ rb_coverage_peek_result_filtered(VALUE klass)
78
+ {
79
+ VALUE coverages = rb_get_coverages();
80
+ VALUE ncoverages = rb_hash_new();
81
+ if (!RTEST(coverages)) {
82
+ rb_raise(rb_eRuntimeError, "coverage measurement is not enabled");
83
+ }
84
+ st_foreach(RHASH_TBL(coverages), coverage_peek_result_filtered_i, ncoverages);
85
+ rb_hash_freeze(ncoverages);
86
+ return ncoverages;
87
+ }
88
+
40
89
 
41
90
  void
42
91
  Init_coverage_peek(void)
43
92
  {
44
93
  rb_require("coverage.so");
45
- if (RUBY_API_VERSION_CODE >= 203000)
46
- return;
47
94
  id_Coverage = rb_intern("Coverage");
48
95
  rb_mCoverage = rb_const_get(rb_cObject, id_Coverage);
49
- rb_define_module_function(rb_mCoverage, "peek_result", rb_coverage_peek_result, 0);
96
+ if (RUBY_API_VERSION_CODE < 203000)
97
+ rb_define_module_function(rb_mCoverage, "peek_result", rb_coverage_peek_result, 0);
98
+ rb_define_module_function(rb_mCoverage, "peek_result_filtered", rb_coverage_peek_result_filtered, 0);
50
99
  }
@@ -1,3 +1,3 @@
1
1
  module CoveragePeek
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coverage_peek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nelson Elhage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2016-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler