Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
133ecae
Adding new API user.
lwasylow Mar 22, 2019
9db8f4b
Separating tests.
lwasylow Mar 23, 2019
13f772a
Merge branch 'develop' of github.com:utPLSQL/utPLSQL into feature/int…
lwasylow Mar 24, 2019
c56943e
Update properties
lwasylow Mar 24, 2019
5afba10
Change user that executes tests as helper that is super user.
lwasylow Mar 24, 2019
7cd92e7
Adding next set of tests migrated.
lwasylow Mar 24, 2019
e2561bc
Adding next set of tests migrated.
lwasylow Mar 25, 2019
887e46a
Fixing test package
lwasylow Mar 25, 2019
28dbd1e
Added set of tests:
lwasylow Mar 25, 2019
d7eb125
Adding set of tests :
lwasylow Mar 25, 2019
99e1099
Adding schema prefix to failing tests from 12.1
lwasylow Mar 25, 2019
04cd36c
Fixing development scripts
lwasylow Mar 25, 2019
3e98723
Fixed bug for deployments with uninstall included.
jgebal Mar 25, 2019
ba83f8f
Merge branch 'feature/introduce_testing_with_accurate_grants' of gith…
lwasylow Mar 26, 2019
0bf1d9e
FIX : removal of non existing types from uninstall script
lwasylow Mar 26, 2019
e914d96
INSTALL:Is it too many monkeys ?:)
lwasylow Mar 26, 2019
174dcbc
Adding set of tests:
lwasylow Mar 26, 2019
0c05daf
Adding set of tests:
lwasylow Mar 26, 2019
80783c3
Adding set of tests:
lwasylow Mar 28, 2019
c4b08af
Adding set of tests:
lwasylow Mar 28, 2019
0618616
Adding set of tests:
lwasylow Mar 28, 2019
29295b7
Adding set of tests:
lwasylow Mar 29, 2019
30b0cfe
Adding set of tests:
lwasylow Mar 29, 2019
3cc34ea
Adding tests
lwasylow Mar 29, 2019
a6a848d
Adding tests:
lwasylow Mar 30, 2019
858372c
Adding set of tests:
lwasylow Mar 31, 2019
620fd61
Adding extra tests:
lwasylow Mar 31, 2019
e6b0673
Merge branch 'develop' of github.com:utPLSQL/utPLSQL into feature/int…
lwasylow Mar 31, 2019
c508e79
Adding tests:
lwasylow Apr 1, 2019
858a675
Fixing broken test.
lwasylow Apr 1, 2019
1642f47
Adding test:
lwasylow Apr 1, 2019
30d27fe
Adding global setup
lwasylow Apr 1, 2019
3b07c6a
Merge branch 'develop' of github.com:utPLSQL/utPLSQL into feature/int…
lwasylow Apr 2, 2019
a8dfa14
Merge branch 'develop' of github.com:utPLSQL/utPLSQL into feature/int…
lwasylow Apr 2, 2019
5d3b18c
Update cleanup script after branching from random order branch
lwasylow Apr 2, 2019
b56d27a
Fixed invalid suitepath in `core` package.
jgebal Apr 3, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Adding set of tests:
core/test_ut_executable
core/test_ut_suite
  • Loading branch information
lwasylow committed Mar 29, 2019
commit 29295b7021fab6cf220460705e41bc9f20a2ebeb
1 change: 1 addition & 0 deletions test/install_ut3_tester_helper.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ alter session set plsql_optimize_level=0;
@@ut3_tester_helper/test_tab_varchar2.tps
@@ut3_tester_helper/test_tab_varray.tps
@@ut3_tester_helper/test_dummy_number.tps
@@ut3_tester_helper/ut_test_table.sql

@@ut3_tester_helper/main_helper.pks
@@ut3_tester_helper/run_helper.pks
Expand Down
4 changes: 4 additions & 0 deletions test/install_ut3_tester_tests.sql
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ alter session set plsql_optimize_level=0;
@@ut3_tester/core/expectations/test_expectation_processor.pks
@@ut3_tester/core/test_ut_utils.pks
@@ut3_tester/core/test_ut_test.pks
@@ut3_tester/core/test_ut_suite.pks
@@ut3_tester/core/test_ut_executable.pks


@@ut3_tester/core.pkb
Expand All @@ -24,6 +26,8 @@ alter session set plsql_optimize_level=0;
@@ut3_tester/core/annotations/test_annot_throws_exception.pkb
@@ut3_tester/core/test_ut_utils.pkb
@@ut3_tester/core/test_ut_test.pkb
@@ut3_tester/core/test_ut_suite.pkb
@@ut3_tester/core/test_ut_executable.pkb


set linesize 200
Expand Down
109 changes: 109 additions & 0 deletions test/ut3_tester/core/test_ut_executable.pkb
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
create or replace package body test_ut_executable is

g_dbms_output_text varchar2(30) := 'Some output from procedure';

procedure exec_schema_package_proc is
l_executable ut3.ut_executable;
l_test ut3.ut_test;
l_result boolean;
begin
--Arrange
l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1);
l_executable := ut3.ut_executable_test( null, 'test_ut_executable', 'passing_proc', ut3.ut_utils.gc_test_execute );
--Act
l_result := l_executable.do_execute(l_test);
--Assert
ut.expect(l_result).to_be_true;
ut.expect(l_executable.serveroutput).to_be_null;
ut.expect(l_executable.get_error_stack_trace()).to_be_null;
end;

procedure exec_package_proc_output is
l_executable ut3.ut_executable;
l_test ut3.ut_test;
l_result boolean;
begin
--Arrange
l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1);
l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'output_proc', ut3.ut_utils.gc_test_execute );
--Act
l_result := l_executable.do_execute(l_test);
--Assert
ut.expect(l_result).to_be_true;
ut.expect(l_executable.serveroutput).to_equal(to_clob(g_dbms_output_text||chr(10)));
ut.expect(l_executable.get_error_stack_trace()).to_be_null;
end;

procedure exec_failing_proc is
l_executable ut3.ut_executable;
l_test ut3.ut_test;
l_result boolean;
begin
--Arrange
l_test := ut3.ut_test(a_object_name => 'test_ut_executable',a_name => 'test_ut_executable', a_line_no=> 1);
l_executable := ut3.ut_executable_test( user, 'test_ut_executable', 'throwing_proc', ut3.ut_utils.gc_test_execute );
--Act
l_result := l_executable.do_execute(l_test);
--Assert
ut.expect(l_result).to_be_false;
ut.expect(l_executable.serveroutput).to_be_null;
ut.expect(l_executable.get_error_stack_trace()).to_be_like('ORA-06501: PL/SQL: program error%');
end;

procedure modify_stateful_package is
l_job_name varchar2(30) := 'recreate_stateful_package';
l_cnt integer := 1;
pragma autonomous_transaction;
begin
dbms_scheduler.create_job(
job_name => l_job_name,
job_type => 'PLSQL_BLOCK',
job_action => q'/
begin
execute immediate q'[
create or replace package stateful_package as
g_state varchar2(3) := 'abc';
end;]';
end;/',
start_date => localtimestamp,
enabled => TRUE,
auto_drop => TRUE,
comments => 'one-time job'
);
$if dbms_db_version.version >= 18 $then
dbms_session.sleep(0.4);
$else
dbms_lock.sleep(0.4);
$end
while l_cnt > 0 loop
select count(1) into l_cnt
from dba_scheduler_running_jobs srj
where srj.job_name = l_job_name;
end loop;
end;

procedure form_name is
begin
ut.expect(ut3.ut_executable_test( user, ' package ', 'proc', null ).form_name()).to_equal(user||'.package.proc');
ut.expect(ut3.ut_executable_test( null, 'package', ' proc ', null ).form_name()).to_equal('package.proc');
ut.expect(ut3.ut_executable_test( null, 'proc', null, null ).form_name()).to_equal('proc');
ut.expect(ut3.ut_executable_test( ' '||user||' ', 'proc', null, null ).form_name()).to_equal(user||'.proc');
end;

procedure passing_proc is
begin
null;
end;

procedure output_proc is
begin
dbms_output.put_line(g_dbms_output_text);
end;

procedure throwing_proc is
begin
raise program_error;
end;

end;
/
33 changes: 33 additions & 0 deletions test/ut3_tester/core/test_ut_executable.pks
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
create or replace package test_ut_executable is

--%suite(ut_executable)
--%suitepath(utplsql.framework_tester.core)

--%context(do_execute)

--%test(Executes procedure in current schema when user was not provided)
procedure exec_schema_package_proc;

--%test(Executes procedure and saves dbms_output)
procedure exec_package_proc_output;

--%test(Executes a procedure raising exception, saves dbms_output and exception stack trace)
procedure exec_failing_proc;

--%endcontext

--%context(form_name)

--%test(Builds a name for the executable test)
procedure form_name;

--%endcontext

procedure passing_proc;

procedure output_proc;

procedure throwing_proc;

end;
/
164 changes: 164 additions & 0 deletions test/ut3_tester/core/test_ut_suite.pkb
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
create or replace package body test_ut_suite is

procedure cleanup_package_state is
begin
ut3_tester_helper.ut_example_tests.g_number := null;
end;

procedure create_trans_control is
begin
ut3_tester_helper.run_helper.create_trans_control;
end;

procedure drop_trans_control is
begin
ut3_tester_helper.run_helper.drop_trans_control;
end;

procedure disabled_suite is
l_suite ut3.ut_suite;
begin
--Arrange
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1);
l_suite.path := 'ut3_tester_helper.ut_example_tests';
l_suite.disabled_flag := ut3.ut_utils.boolean_to_int(true);
l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'set_g_number_0', ut3.ut_utils.gc_before_all));
l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'add_1_to_g_number', ut3.ut_utils.gc_before_all));
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1);
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1);
--Act
l_suite.do_execute();
--Assert
ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null;
ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_disabled);
ut.expect(l_suite.results_count.disabled_count).to_equal(2);
ut.expect(l_suite.results_count.warnings_count).to_equal(0);
ut.expect(l_suite.results_count.success_count).to_equal(0);
ut.expect(l_suite.results_count.failure_count).to_equal(0);
ut.expect(l_suite.results_count.errored_count).to_equal(0);
end;

procedure beforeall_errors is
l_suite ut3.ut_suite;
begin
--Arrange
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1);
l_suite.path := 'ut3_tester_helper.ut_example_tests';
l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_before_all));
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper',a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1);
--Act
l_suite.do_execute();
--Assert
ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_be_null;
ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error);
ut.expect(l_suite.results_count.disabled_count).to_equal(0);
ut.expect(l_suite.results_count.warnings_count).to_equal(0);
ut.expect(l_suite.results_count.success_count).to_equal(0);
ut.expect(l_suite.results_count.failure_count).to_equal(0);
ut.expect(l_suite.results_count.errored_count).to_equal(1);
end;

procedure aftereall_errors is
l_suite ut3.ut_suite;
begin
--Arrange
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1);
l_suite.path := 'ut3_tester_helper.ut_example_tests';
l_suite.after_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_EXAMPLE_TESTS', 'failing_procedure', ut3.ut_utils.gc_after_all));

l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'set_g_number_0', a_line_no=> 1);
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => 'ut3_tester_helper', a_object_name => 'UT_EXAMPLE_TESTS',a_name => 'add_1_to_g_number', a_line_no=> 1);
--Act
l_suite.do_execute();
--Assert
ut.expect(ut3_tester_helper.ut_example_tests.g_number).to_equal(1);
ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_success);
ut.expect(l_suite.results_count.disabled_count).to_equal(0);
ut.expect(l_suite.results_count.warnings_count).to_equal(1);
ut.expect(l_suite.results_count.success_count).to_equal(2);
ut.expect(l_suite.results_count.failure_count).to_equal(0);
ut.expect(l_suite.results_count.errored_count).to_equal(0);
end;

procedure package_without_body is
l_suite ut3.ut_suite;
begin
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITHOUT_BODY', a_line_no=> 1);
l_suite.path := 'UT_WITHOUT_BODY';
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_without_body',a_name => 'test1', a_line_no=> 1);
--Act
l_suite.do_execute();
--Assert
ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error);
end;

procedure package_with_invalid_body is
l_suite ut3.ut_suite;
begin
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_WITH_INVALID_BODY', a_line_no=> 1);
l_suite.path := 'UT_WITH_INVALID_BODY';
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_name => 'ut_with_invalid_body',a_name => 'test1', a_line_no=> 1);
--Act
l_suite.do_execute();
--Assert
ut.expect(l_suite.result).to_equal(ut3.ut_utils.gc_error);
end;

procedure rollback_auto is
l_suite ut3.ut_suite;
begin
--Arrange
execute immediate 'delete from ut3_tester_helper.ut$test_table';
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_TRANSACTION_CONTROL', a_line_no=> 1);
l_suite.path := 'ut3_tester_helper.ut_transaction_control';
l_suite.before_all_list := ut3.ut_executables(ut3.ut_executable(USER, 'UT_TRANSACTION_CONTROL', 'setup', ut3.ut_utils.gc_before_all));
l_suite.items.extend;
l_suite.items(l_suite.items.last) := ut3.ut_test(a_object_owner => USER, a_object_name => 'ut_transaction_control',a_name => 'test', a_line_no=> 1);
l_suite.set_rollback_type(ut3.ut_utils.gc_rollback_auto);

--Act
l_suite.do_execute();

--Assert
ut.expect(ut3_tester_helper.main_helper.get_value(q'[ut3_tester_helper.ut_transaction_control.count_rows('t')]')).to_equal(0);
ut.expect(ut3_tester_helper.main_helper.get_value(q'[ut3_tester_helper.ut_transaction_control.count_rows('s')]')).to_equal(0);
end;

procedure rollback_auto_on_failure is
begin
ut3_tester_helper.run_helper.test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_auto, equal(0) );
end;

procedure rollback_manual is
begin
ut3_tester_helper.run_helper.test_rollback_type('test', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) );
end;

procedure rollback_manual_on_failure is
begin
ut3_tester_helper.run_helper.test_rollback_type('test_failure', ut3.ut_utils.gc_rollback_manual, be_greater_than(0) );
end;

procedure trim_transaction_invalidators is
l_suite ut3.ut_suite;
begin
--arrange
l_suite := ut3.ut_suite(a_object_owner => USER, a_object_name => 'UT_EXAMPLE_TESTS', a_line_no=> 1);
for i in 1 .. 100 loop
l_suite.add_transaction_invalidator('schema_name.package_name.procedure_name'||i);
end loop;
--Act
l_suite.rollback_to_savepoint('dummy_savepoint');
--Assert
ut.expect(l_suite.warnings.count).to_equal(1);
end;

end;
/
51 changes: 51 additions & 0 deletions test/ut3_tester/core/test_ut_suite.pks
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
create or replace package test_ut_suite is

--%suite(ut_suite)
--%suitepath(utplsql.core.framework_tester)

--%beforeeach
procedure cleanup_package_state;

--%test(Disabled flag skips tests execution in suite)
procedure disabled_suite;

--%test(Marks each test as errored if beforeall raises exception)
procedure beforeall_errors;

--%test(Reports warnings for each test if afterall raises exception)
procedure aftereall_errors;

--%beforetest(ut3_tester_helper.run_helper.package_no_body)
--%aftertest(ut3_tester_helper.run_helper.drop_package_no_body)
--%test(Fails all tests in package when package has no body)
procedure package_without_body;

--%test(Fails all tests in package when package body is invalid)
procedure package_with_invalid_body;

--%context( rollback_test )

--%beforeall
procedure create_trans_control;
--%afterall
procedure drop_trans_control;

--%test(Performs automatic rollback after a suite)
procedure rollback_auto;

--%test(Performs automatic rollback after a suite even if test fails)
procedure rollback_auto_on_failure;

--%test(rollback(manual) - disables automatic rollback after a suite)
procedure rollback_manual;

--%test(rollback(manual) - disables automatic rollback after a suite even if test fails)
procedure rollback_manual_on_failure;

--%endcontext

--%test(Transaction invalidators list is trimmed in warnings when too long)
procedure trim_transaction_invalidators;

end;
/
Loading