coverage_peek 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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