-
Notifications
You must be signed in to change notification settings - Fork 187
Closed
Description
Describe the bug
When running standalone expectations in a single session and having more than one failing expectation, the results returned by report are wrong.
This is probably also observable in regular run,when running more than one cursor/object comparison in single test.
Provide version info
utPLSQL v3.1.8
To Reproduce
clear screen
set serverout on
declare
l_actual sys_refcursor;
l_expected sys_refcursor;
begin
open l_actual for select rownum rn from dual connect by level < 5;
open l_expected for select rownum rn from dual connect by level = 1;
ut.expect(l_actual).to_equal(l_expected);
open l_actual for select rownum rn from dual connect by level < 3;
open l_expected for select * from (select rownum rn from dual connect by level < 3) order by 1 desc;
ut.expect(l_actual).to_equal(l_expected);
end;
/
rollback;This produces output:
FAILURE
Actual: refcursor [ count = 4 ] was expected to equal: refcursor [ count = 1 ]
Diff:
Rows: [ 3 differences ]
Row No. 2 - Extra: <RN>2</RN>
Row No. 3 - Extra: <RN>3</RN>
Row No. 4 - Extra: <RN>4</RN>
at "anonymous block", line 7
FAILURE
Actual: refcursor [ count = 2 ] was expected to equal: refcursor [ count = 2 ]
Diff:
Rows: [ 2 differences ]
Row No. 1 - Actual: <RN>1</RN>
Row No. 1 - Expected: <RN>2</RN>
Row No. 2 - Actual: <RN>2</RN>
Row No. 2 - Expected: <RN>1</RN>
Row No. 2 - Extra: <RN>2</RN>
Row No. 3 - Extra: <RN>3</RN>
Row No. 4 - Extra: <RN>4</RN>
at "anonymous block", line 10
However adding a commit or rollback in between expectations fixes the issue.
clear screen
set serverout on
declare
l_actual sys_refcursor;
l_expected sys_refcursor;
begin
open l_actual for select rownum rn from dual connect by level < 5;
open l_expected for select rownum rn from dual connect by level = 1;
ut.expect(l_actual).to_equal(l_expected);
rollback;
open l_actual for select rownum rn from dual connect by level < 3;
open l_expected for select * from (select rownum rn from dual connect by level < 3) order by 1 desc;
ut.expect(l_actual).to_equal(l_expected);
end;
/
rollback;FAILURE
Actual: refcursor [ count = 4 ] was expected to equal: refcursor [ count = 1 ]
Diff:
Rows: [ 3 differences ]
Row No. 2 - Extra: <RN>2</RN>
Row No. 3 - Extra: <RN>3</RN>
Row No. 4 - Extra: <RN>4</RN>
at "anonymous block", line 7
FAILURE
Actual: refcursor [ count = 2 ] was expected to equal: refcursor [ count = 2 ]
Diff:
Rows: [ 2 differences ]
Row No. 1 - Actual: <RN>1</RN>
Row No. 1 - Expected: <RN>2</RN>
Row No. 2 - Actual: <RN>2</RN>
Row No. 2 - Expected: <RN>1</RN>
at "anonymous block", line 11
Expected behavior
Diff reports should always provide valid outputs.
To fix this, we can delete the diff table as part of diff cleanup.
Reactions are currently unavailable