Skip to content

Commit a5bf6db

Browse files
committed
Coverage test: compile plsql with optimize level 1
Oracle dbms_profiler coverage information is only relevant when pl/sql is compiled with PLSQL_OPTIMIZE_LEVEL=1. http://docs.oracle.com/database/121/ARPLS/d_profil.htm#ARPLS039
1 parent e00d1cd commit a5bf6db

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

spec/plsql/coverage_spec.rb

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,19 @@ def drop_profiler_tables
1111
PLSQL::Coverage.reset_cache
1212

1313
plsql.connect! CONNECTION_PARAMS
14+
plsql.execute "ALTER SESSION SET PLSQL_OPTIMIZE_LEVEL=1"
1415
drop_profiler_tables
1516
@source = <<-SQL
1617
CREATE OR REPLACE FUNCTION test_profiler RETURN VARCHAR2 IS
18+
19+
-- A comment before executed code
1720
BEGIN
1821
RETURN 'test_profiler';
22+
-- A dummy empty line follows
23+
1924
EXCEPTION
2025
WHEN OTHERS THEN
26+
-- We should never reach here
2127
RETURN 'others';
2228
END;
2329
SQL
@@ -26,10 +32,13 @@ def drop_profiler_tables
2632
@coverage_data = {
2733
DATABASE_USER.upcase => {
2834
"TEST_PROFILER" => {
29-
1=>0,
30-
3=>1,
31-
6=>0,
32-
7=>1
35+
1=>1,
36+
4=>1,
37+
5=>1,
38+
8=>0,
39+
9=>0,
40+
11=>0,
41+
12=>1
3342
}
3443
}
3544
}
@@ -137,7 +146,7 @@ def drop_profiler_tables
137146
describe "generate" do
138147
def adjust_test_coverage
139148
@test_coverage = @coverage_data[DATABASE_USER.upcase]['TEST_PROFILER'].dup
140-
@test_coverage.delete(1) if @test_coverage[1] && @source.split("\n")[0] =~ /^CREATE OR REPLACE (.*)$/
149+
@test_coverage.delete(1) if @test_coverage[1] == 0 && @source.split("\n")[0] =~ /^CREATE OR REPLACE (.*)$/
141150
end
142151

143152
def expected_coverages
@@ -178,8 +187,11 @@ def expected_coverages
178187
a = @details_doc.at_css("table.details a[name=\"line#{i+1}\"]")
179188
a.should_not be_nil
180189

190+
doc_line = a.parent.children[1]
191+
doc_line_text = doc_line ? doc_line.text : ""
192+
181193
# source text should be present
182-
a.parent.children[1].text.should == line
194+
doc_line_text.should == line
183195

184196
# table row should have correct class according to coverage data
185197
tr = a.ancestors('tr')[0]
@@ -247,4 +259,4 @@ def expected_coverages
247259
end
248260
end
249261

250-
end
262+
end

0 commit comments

Comments
 (0)