# Coverage and ensure

**URL:** <https://www.ruby-forum.com/t/coverage-and-ensure/175295>\
**Category:** Development\
**Created:** [September 10, 2009, 6:56pm UTC](https://www.ruby-forum.com/t/coverage-and-ensure/175295 "2009-09-10T18:56:27Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [September 10, 2009, 6:56pm UTC](https://www.ruby-forum.com/t/coverage-and-ensure/175295/1 "2009-09-10T18:56:27Z")

</div>

coverage e$B$G!"e(Bensure e$B@aFb$NJ8$,?t$($i$l$J$$5$$,$7$^$9!#e(B

% cat z.rb  
begin  
p 1  
ensure  
p 2  
end  
% ./ruby -rcoverage -ve ’  
Coverage.start  
load “z.rb”  
p Coverage.result  
’  
ruby 1.9.2dev (2009-09-10 trunk 24826) [i686-linux]  
1  
2  
{“z.rb”=\>[1, 1, nil, 0, nil]}

e$B$3$3$G!“e(B2 e$B$HI=\<($5$l$F$$$k$h$&$Ke(B z.rb e$BFb$Ne(B p 2  
e$B$,\<B9T$5$l$Fe(B  
e$B$$$^$9$,!”$=$l$KBP1~$9$ke(B Coverage.result[“z.rb”][3] e$B$Oe(B 0  
e$B$Ke(B  
e$B$J$C$F$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Tanaka\_A](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/c67d28/32.png) [@Tanaka\_A](https://www.ruby-forum.com/u/Tanaka_A)\
**Post date:** [October 8, 2009, 6:04pm UTC](https://www.ruby-forum.com/t/coverage-and-ensure/175295/2 "2009-10-08T18:04:16Z")

</div>

e$B1sF#$G$9!#e(B

2009e$BG/e(B9e$B7ne(B11e$BF|e(B1:51 Tanaka A. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> load “z.rb”  
> p Coverage.result  
> ’  
> ruby 1.9.2dev (2009-09-10 trunk 24826) [i686-linux]  
> 1  
> 2  
> {“z.rb”=\>[1, 1, nil, 0, nil]}

e$B$b$N$9$4$/CY$/$J$C$F$9$\_$^$;$s!#e(B

p “foo”; p “bar”  
e$B$N$h$&$JJ#J8$N$"$k9T$KBP$7$F\<B9T2s?t$r=EJ#$7$F?t$($ke(B  
e$B$N$rHr$1$k$?$a$K!"F1$89T$KBP$9$k%+%P%l%C%8$N%$%Y%s%H$re(B 1  
e$B2s$7$+A^F~e(B  
e$B$7$J$$$h$&$K$7$F$$$?$N$G$9$,!"e(Bensure  
e$B$NCf?H$ONc30$,5/$-$?\>l9g$HDL\>oe(B  
e$B=\*N;$7$?\>l9g$K%3!\<%I$,%3%T!\<$5$l$k$?$a!“J#?t8D$N%+%P%l%C%8%$%Y%s%H$re(B  
e$BA^F~$9$kI,MW$,$”$j$^$7$?!#e(B

e$B$I$&$9$k$+G:$s$@$N$G$9$,!"F1$89T$r!VO"B3$7$F!W%3%s%Q%$%k$9$k\>l9g$K!“e(B  
1 e$B2s$@$1%+%P%l%C%8%$%Y%s%H$rH/@8$9$k$h$&$K$7$F$\_$^$7$?!#e(B  
e$B$H$j$”$($:$3$NJ}K!$GBP=h$7$F!"LdBj$,8+$D$+$C$?$i9M$($h$&$H;W$$$^$9!#e(B

# Index: iseq.c

— iseq.c (revision 25260)  
+++ iseq.c (working copy)  
@@ -249,6 +249,7 @@  
iseq-\>compile\_data-\>storage\_head-\>buff =  
(char \*)(&iseq-\>compile\_data-\>storage\_head-\>buff + 1);  
iseq-\>compile\_data-\>option = option;

- iseq-\>compile\_data-\>last\_coverable\_line = -1;

# Index: iseq.h

— iseq.h (revision 25260)  
+++ iseq.h (working copy)  
@@ -82,6 +82,7 @@  
struct iseq\_compile\_data\_storage \*storage\_head;  
struct iseq\_compile\_data\_storage \*storage\_current;  
int last\_line;

- int last\_coverable\_line;  
int flip\_cnt;  
int label\_no;  
int node\_level;  
Index: compile.c  
===================================================================  
— compile.c (revision 25260)  
+++ compile.c (working copy)  
@@ -223,8 +223,9 @@  
#define ADD\_TRACE(seq, line, event)   
do {   
if ((event) == RUBY\_EVENT\_LINE && iseq-\>coverage && \

- RARRAY\_PTR(iseq-\>coverage)[(line) - 1] == Qnil) { \

- (line) != iseq-\>compile\_data-\>last\_coverable\_line) {   
RARRAY\_PTR(iseq-\>coverage)[(line) - 1] = INT2FIX(0); \
- iseq-\>compile\_data-\>last\_coverable\_line = (line);   
ADD\_INSN1(seq, line, trace, INT2FIX(RUBY\_EVENT\_COVERAGE));   
}   
if (iseq-\>compile\_data-\>option-\>trace\_instruction) { \
