forked from KenRoytman/utPLSQL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease.html
executable file
·654 lines (503 loc) · 20.3 KB
/
release.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<!-- WARNING! This file is generated. -->
<!-- To alter documentation, edit files in src directory -->
<html><head>
<title>Release Notes</title>
<link rel="stylesheet" href="utplsql.css" content="text/css">
<meta name="keywords" content="utPLSQL, PL\SQL, Unit Testing, Framework, Oracle"/>
<meta name="description" content="Unit Testing PL\SQL"/>
<meta name="title" content="Release Notes"/>
<meta name="author" content="Steven Feuerstein, Chris Rimmer, Patrick Barel"/>
<meta name="copyright" content="(C) 2000-2005 Steven Feuerstein, Chris Rimmer, Patrick Barel"/>
</head><body>
<div class="purple_bar"><a href="index.html"><img src="utplsql.jpg" border=0></a></div>
<p>[ <A href="index.html">Home</A>
| <A href="started.html">Getting Started</A>
| <A href="buildpack.html">Build Test Packages</A>
| <A href="examples.html">Examples</A>
| <A href="userguide.html">User Guide</A>
| <A href="release.html">Release Notes</A>
| <A href="map.html">Document Map</A> ]</p>
<p><A href="fileout.html">< Previous Section: Configuring the File Reporter</A> | <A href="map.html">Next Section: Document Map ></A></p>
<!-- Begin utPLSQL Body -->
<!-- $Id: release.html,v 1.6 2005/05/10 14:23:05 chrisrimmer Exp $ -->
<h1>Release Notes</h1>
<h2>Known Issues</h2>
<h3>utPLSQL version 2.x</h3>
<ul>
<li>There is an issue surrounding the use of utPLSQL on Oracle 8.1.7 where
the tests use database links. This is because Oracle will consider
the transaction to be distributed and utPLSQL v2 uses autonomous transactions
while the tests are running. This situation causes ORA-00164 in 8.1.7
(and apparently should not have been allowed in 8.1.5 or 8.1.6 either). It
is possible to work around this problem by turning off autonomous transactions
, but this can cause other problems if the tests themselves have rollbacks
within them.<br>
</li>
<li>The utAssert.eqtable assertion program will not work with tables that
contain non-scalar datatypes, such as LOBs, XMLType, collections and so on.
</li>
</ul>
<h2>Change History<br>
</h2>
<h3>utPLSQL version 2.2</h3>
<ul type="disc">
<li>
This version introduces the concept of Output Reporters. The existing code to output to DBMS_OUPUT or to file has been refactored to
fit into this framework.
</li>
<li>
The installation procedure has been changed so that the database version is picked up more robustly. Version 2.2 works with 10g,
which previous versions did not. It should also work with future versions (so long as the version is to be found in the same place
in the data dictionary).
</li>
<li>
There are also a variety of small fixes in this release.
</li>
</ul>
<h3>utPLSQL version 2.1.1</h3>
<ul type="disc">
<li>
This version has a variety of small fixes and is released to coincide
with <a href="http://www.ounit.com">OUnit</a> version 1.0.
</li>
<li>
The installation procedure has been changed and a variety of bugs with it have been fixed.
</li>
<li>
utGen.exe has been removed from the "core" utPLSQL distribution. The functionallity it supplied will be included in a future version of Ounit.
</li>
</ul>
<h3>utPLSQL version 2.0.10.1</h3>
<ul type="disc">
<li>
Allow user to specify (as part of their individual configuration) that they
only want to show failed tests, and then whether all information or just the
description (request from Heinz of UBS). Supersedes the
utresult.ignore_successes and utresult.include_successes (whose settings do not
persist across sessions).
</li>
<li>
Support for testing contents of REF CURSORs (cursor variables) has been added
(provided by Venky Mangapillai) with the eq_refc_table and eq_refc_query
assertion routines.
</li>
<li>
Adds testpkg_from_table to utgen to allow generation of a test package directly
from the new ut_grid table (provided by Patrick Barel). Patrick has also built
a Windows-based front end, utGen.exe, that allows us to populate this grid very
easily. Thanks, Patrick!
</li>
<li>
Add ut_outcome_seq sequence for ut_outcome table.
</li>
<li>
Add control_info and test_info columns to ut_outcome table.
</li>
<li>
Add ability to direct output from utPLSQL's test run (the test results) to a
file instead of to the screen. This functionality was provided by Rainer
Medert. The documentation for this feature has not yet been integrated into the
documentation set. You will find the "beta" documentation in the
file_output_spec.doc in the doc directory.
</li>
</ul>
<h3>utPLSQL version 2.0.9.2</h3>
<ul type="disc">
<li>Surround
AUTHID CURRENT_USER clause of utreceq.pks to allow for installation on
Oracle7 and Oracle8.</li>
<li>Add
override_package_in argument to utPLSQL.test so that you can bypass the
standard ut_<package> naming conventions for testing. This is useful
when your package name's length is 28 or above. By passing in the override
package name, you can avoid the name limitation.</li>
<li>New
assertion programs to validate DBMS_OUTPUT text that is generated from
within a program.</li>
<li>Add
utplsql.run and utplsql.runsuite to run a named test package directly, and
not correlate it via the name of the program being tested.</li>
</ul>
<h3>utPLSQL version 2.0.9.1</h3>
<ul type="Disc">
<li>
Add ut_reqeq table and utreceq package to support the creation of "record
equal" functions (contributed by Dan Spencer).</li>
<li>
Modify utPLSQL.test so that the record comparison functions are generated
and recompiled whenever the source code is recompiled.
Call utreceq.add to register a package-table combination.
</li>
<li>
Modified utpackage.id_from_name to take an owner_in parameter with a
NULL default value. v_owner is set to nvl(owner_in,user). added
owner = v_owner and suite_id is null to the WHERE clause.</li>
<li>
Modified utpackage.add to add in a record with suite_id NULL if one
doesn't exist.</li>
<li>
Modified utpackage.upd - changed parameter suite_in to suite_id_in (the
type was INTEGER). Changed the UPDATE WHERE clause first line
to NVL(suite_id,0) = NVL(suite_id_in,0).</li>
<li>
Modified utplsql.testsuite - v_suite (the suite id) was in the
call to utplsql.test while the utplsql.test parameter list was expecting
the suite name. The results of a test run are now logged to the
appropriate record in ut_package [the record for the suite if run from
testsuite, the record with suite_id NULL if run via an EXEC UTPLSQL.TEST('packagename')].</li>
<li>
Add objExists and objNotExists assertion programs</li>
<li>
Changes to utPLSQL.test engine so that you can test programs define
in one schema from another schema.</li>
<li>
Add previous_passed and previous_failed to utAssert and utAssert2</li>
<li>
Set order in which test case results are displayed to the order in which
they are run by adding the tc_run_id to the utr_outcome table.</li>
</ul>
<h3>utPLSQL version 2.0.8.2</h3>
<ul type="Disc">
<li>
Change ut_utp LOB column to VARCHAR2 for the time being.</li>
<li>
Fixed ALTER TABLE statement in ut_config.tab.</li>
<li>
Change utplsql.test to allow for compilation of test package before
extracting list of test procedures from that package (avoids the "
Warning...no tests were identified for execution!" message).</li>
<li>
Add utAssert2.eval generic comparison program, and also utAssert.eval,
with an overloading for just two values, to make it really easy to use.</li>
<li>
Add utGen.receq_package procedure. It currently ONLY writes the code
out to the screen via DBMS_OUTPUT.PUT_LINE. It does not, in other words,
support the multiple outputs of utGen.testpkg. </li>
<li>
Update the utplsql_install.sql script to recognize Oracle9.0 and Oracle9.1
versions and install all 8i features for those versions (there is nothing
specific to 9i at this time).</li>
</ul>
<h3>utPLSQL version 2.0.8.1</h3>
<ul type="Disc">
<li>
Fixes to a number of minor installation errors.</li>
<li>
Offers option in utPLSQL.test to request that setup and teardown is
executed with each test procedure and not the test package level.
Implements a new features in utPLSQL.test that allows you to specify
that you want to run the setup and teardown procedures before and after
EACH unit test procedure, as opposed to running them once for the unit
test package as a whole. To utilize this feature, simply pass a value
of TRUE to the new per_method_setup_in parameter of utPLSQL.test as
shown below:</li>
</ul>
<p><pre>
SQL> exec utplsql.test ('str', per_method_setup_in => true)
</pre></p>
<h3>utPLSQL version 2.0.7</h3>
<ul type="Disc">
<li> Revamp
utAssert2.define_message implement to simplify creation of new assertion
programs</li>
<li>Modify
implementation if ieqminus to avoid duplicate column </li>
<li>Change
naming conventions for utPLSQL2 from prefix to delimiter driven (utconfig.delimiter):
QU##NNN. This affects only those test packages which use the utPLSQL2.test
program to run the tests (ie for version 1 utPLSQL test packages and utPLSQL.test,
you can still use your prefix-based approaches).</li>
<li>Add
utAssert2.fileExists</li>
<li>Compile
utAssert2 with AUTHID CURRENT_USER for Oracle8i and above.</li>
<li>(2.0.7.2)
Fix index creation for ut_assertion table.</li>
<li>(2.0.7.2)
Fix foreign key definition in ut_argument.</li>
<li>(2.0.7.2)
Fix foreign key definition in uta_eq.</li>
</ul>
<h3>utPLSQL version 2.0.6</h3>
<ul type="Disc">
<li>Fix
to utgen.pkb to allow generation of procedure bodies when no grid is used.</li>
<li>Allow
developers to turn off display of successful results (utResult.include_successes)</li>
</ul>
<h3>utPLSQL version 2.0.5</h3>
<ul type="Disc">
<li>Allow
user to specify individual program or programs (via wildcard) to be tested
from a whole package.</li>
<li>Add
ut_deterministic and ut_deterministic_arg tables to facilitate generate of
test packages for deterministic functions.</li>
<li>Add
ut_deterministic.fmx Oracle Forms GUI to allow easy generation of test packages
for deterministic functions.</li>
</ul>
<h3>utPLSQL version 2.0.4</h3>
<ul type="Disc">
<li>Implement
test suite execution in utPLSQL2.</li>
<li>Implement
ut_suite_utp table (and the corresponding utsuiteutp package) as an intersection
of ut_suite and ut_utp, defining all those UTPs in a given suite.</li>
<li>Improved
error handling with utrerror assertions and general reporting mechanisms.
Assertion and error handling logic applied to define-time packages like utsuite
and utsuiteutp.</li>
<li>Revamp
installation process; no longer use OraShare, remove testcase2 entirely.
</li>
<li>Create
stand alone utverify procedure.</li>
</ul>
<h3>utPLSQL version 2.0.3</h3>
<ul type="Disc">
<li>Add
utr_error table and utrerror package; now all errors are logged to the table
for viewing afterwards. utPLSQL NEVER passes back an unhandled exception
to the console.</li>
<li>utAssert.eqfile
now flags problems when opening files.</li>
</ul>
<h3>utPLSQL version 2.0.2</h3>
<ul type="Disc">
<li>
clarify how that null_ok_in is supposed to work. For utAssert.this, it should
mean that if the value of the Boolean expression coming in is null, then
that means "success". For eq, it shoudl mean that if BOTH values coming in
are NULL, that is "success". For eqfile, if both files are empty...etc.</li>
<li>
add null_ok_in to eqqueryvalue assertions.</li>
<li>
add utassert.eqqueryvalue for NUMBER</li>
<li>
Enhance utgen to properly generate code for overloaded programs in packages</li>
</ul>
<h3>utPLSQL version 2.0.1</h3>
<ul type="Disc">
<li>
store results in utr_outcome tables</li>
<li>
support results reporting compatibility with V1</li>
<li>
display results of all test, success and failure.</li>
</ul>
<h3>utPLSQL version 1.5.6</h3>
<ul type="Disc">
<li>
New version of documentation courtesy of Chris Rimmer. Thanks, Chris!</li>
<li>
utAssert fix in eqcoll to check for both values being null.</li>
<li>
Enhancements to utGen to generate more self-explanatory code; comments
are now inserted to show the different sections in a standard test case
sequence.</li>
<li>
Revamped installation procedure based on OraShare utility.</li>
<li>
Add utGen.testpkg overloadings and new programs to support passing of
argument grids via collection, file or string (this feature is currently
undocumented outside of the release notes).</li>
</ul>
<h3>utPLSQL version 1.5.5</h3>
<h4>Bug Fixes</h4>
<ul type="Disc">
<li>
Change calls from DBMS_OUTPUT.PUT_LINE to utPLSQL.pl to avoid output
errors.</li>
<li>
Avoid use of DBMS_SQL to obtain sequence values for Oracle7 and Oracle8
installations of utPLSQL.</li>
</ul>
<h4>Enhancements</h4>
<ul type="Disc">
<li>
Addition of utConfig package (created and integrated by Chris Rimmer)
to isolate all tester configuration information.</li>
</ul>
<h3>utPLSQL version 1.5.4</h3>
<h4>Bug Fixes</h4>
<ul type="Disc">
<li>
utPLSQL.setconfig now sets the user information properly when
the package is first initialized (bug introduced in 1.5.3).
</li>
</ul>
<h3>utPLSQL version 1.5.3</h3>
<h4>Documentation and Usage Changes</h4>
<ul type="Disc">
<li>
If you choose to manually register your tests with calls to utPLSQL.addtest
in your setup procedure, you must now INCLUDE the unit test prefix,
as in:</li>
<pre>utPLSQL.addtest ('ut_betwnstr');</pre>
utPLSQL
will no longer add the prefix for you. This means that you may need to change
your calls to addtest -- or remove them entirely and rely on auto-registration.
</ul>
<h4>
Bug Fixes</h4>
<ul type="Disc">
<li>
Auto-registration (using the ALL_ARGUMENTS data dictionary view) now
correctly ignores the setup and teardown procedures.</li>
</ul>
<h4>
Enhancements</h4>
<ul type="Disc">
<li>
If no tests are run for the specified program, then a warning is displayed,
after which the SUCCESS message is displayed.</li>
</ul>
<h3>
utPLSQL version 1.5.2</h3>
<h4>
Bug Fixes</h4>
<ul type="Disc">
<li>
Fix setting of default prefix value in utPLSQL.pkb.</li>
<li>
If you request execution of a test suite that does not exist, that failure
will be reported.</li>
<li>
If you request execution of a test for a program or package that does
not exist, that failure will be reported.</li>
<li>
Unique index on ut_package changed to allow multiple entries for same
package, in different suites.</li>
</ul>
<h4>
Known Problems</h4>
<ul type="Disc">
<li>
When running a suite of test packages, the SUCCESS and FAILURE headers
will display for each package, and not for the overall suite.</li>
</ul>
<h4>
Enhancements</h4>
<ul type="Disc">
<li>
The utAssert package now offers isnull and isnotnull assertions overloaded
for Boolean values..</li>
</ul>
<h3>
utPLSQL version 1.5.1</h3>
<h4>
Support for Oracle7.3, Oracle8 and Oracle8i</h4>
<p>
utPLSQL can now be used on any version of Oracle from 7.3.4 and above! The
installation script automatically detects your Oracle RDBMS version and adjusts
the code accordingly (Using a great SQL*Plus trick, courtesy of Vladimir
Trusevich; check out the references to &start81 and &start73 in the
source code, as well as the queries in code.sql, to get a sense of how we
can maintain a single base of code for all these versions!). </p>
<p>
There are some differences in how the code works: </p>
<ul type="Disc">
<li>
In Oracle8i, the autonomous transaction feature is used to immediately
COMMIT any changes to underlying utPLSQL tables (such as defining a
test suite). In earlier versions, no COMMITs are performed by utPLSQL.</li>
</ul>
<p>
In Oracle8i, the Invoker Rights model is used to allow all of utPLSQL code
to run under the authority of the invoker, not the owner/definer. In earlier
versions, the Definer Rights model is followed. So if you define utPLSQL
in a central schema and then share it with others via GRANTs and synonyms,
you may need to grant additional authority to the utPLSQL schema.</p>
<h4>
Stores Additional Configuration Information</h4>
<p>
When you set the directory for your test code (through a call to <a href="utconfig.html#Setdir">
utPLSQL.setdir</a>
, utPLSQL.test or utPLSQL.testsuite), that value is stored in the uPLSQL
configuration table (ut_config). It will be used for current and future sessions
as the default, until you change it. </p>
<p>
The prefix you specify in calls to <a href="utconfig.html#Setprefix">utPLSQL.setprefix</a>
, utPLSQL.test or utPLSQL.testsuite will also be saved in the uPLSQL configuration
table. It will be used for current and future sessions as the default, until
you change it. </p>
<h4>
Shows All Configuration Information</h4>
<p>
Call the <a href="utconfig.html#Showconfig">utPLSQL.showconfig</a>
procedure to display all of the stored configuration values for the specified
schema. </p>
<h3>
utPLSQL version 1.4.1</h3>
<h4>
Automatic Test Registration</h4>
<p>
You no longer have to <a href="utconfig.html#Manualregister">manually register
your unit test procedures</a>
in the setup procedure. Instead, utPLSQL will (in default mode) read and
execute the list of public procedures and functions from the ALL_ARGUMENTS
data dictionary view that conform to utPLSQL naming conventions. This enhancement
makes utPLSQL much easier and simpler to use than before. Simply use the
designated prefix (default being "ut_") on your program names, and they will
be executed. </p>
<h4>
Improved error handling and reporting</h4>
<p>
Rather than display a small, easily missed test result, as in : </p>
<pre>SUCCESS: PLVstr</pre>
<p>
utPLSQL now displays a much more noticeable (though still lacking in
colors, as in red for failure and green for success) display of the "big
picture", as in: </p>
<pre>SQL> exec utplsql.test ('str', dir_in=>'e:\openoracle\utplsql\utinstall\examples')
.
> SSSS U U CCC CCC EEEEEEE SSSS SSSS
> S S U U C C C C E S S S S
> S U U C C C C E S S
> S U U C C E S S
> SSSS U U C C EEEE SSSS SSSS
> S U U C C E S S
> S U U C C C C E S S
> S S U U C C C C E S S S S
> SSSS UUU CCC CCC EEEEEEE SSSS SSSS
.
SUCCESS: "str"</pre>
<h3>
utPLSQL version 1.3.2</h3>
<h4>
Improved Statistics Recording</h4>
<p>
utPLSQL will now record the status of the last test run in the ut_package
and ut_suite tables. It also correctly updates those tables with a count
of executions and failures. Finally, it is no longer necessary to define
your package in and run it from a test suite for results to be recorded.
</p>
<h4>
New Assertions and Assertion Features</h4>
<p>
utAssert now offers assertion routines that allow you to easily validate
the contents of PL/SQL collections (index-by tables, nested tables and varying
arrays) by running either the <a href="utassert.html#utassert.eqcoll">utassert.eqcoll
or utassert.ecollAPI</a>
assertions. </p>
<p>
You can also now request that utAssert show the
results of a test immediately
after execution. This allows you to build small test scripts without have
to create a test package and run it through the utPLSQL test engine. </p>
<h4>
Bug Fixes</h4>
<p>
Generally, error handling is now improved, particularly for compile errors
on test packages and modifications to underlying tables, such as ut_package.
</p>
<p>
When a test has been completed, utPLSQL clears out the results information.
</p>
<!-- End utPLSQL Body -->
<p><A href="fileout.html">< Previous Section: Configuring the File Reporter</A> | <A href="map.html">Next Section: Document Map ></A></p>
<div class="purple_bar"><a href="index.html"><img src="utplsql.jpg" border=0></a></div>
<p class="copyright">Copyright (C) 2000-2005 <A href="mailto:[email protected]">Steven Feuerstein<A>, <A href="mailto:[email protected]">Chris Rimmer<A>, <A href="mailto:[email protected]">Patrick Barel<A> All rights reserved</p>
</body></html>