2017-03-29 19:50 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* src/compiler/hbgenerr.c
    * changed "with object" in last error message to upper cases

  * src/rdd/dbf1.c
    + added assigned value to error object ARGS array when data type or
      data width error is generated inside PUTVALUE() method

  * utils/hbtest/hbtest.prg
  * utils/hbtest/rt_array.prg
  * utils/hbtest/rt_hvma.prg
  * utils/hbtest/rt_main.ch
  * utils/hbtest/rt_math.prg
  * utils/hbtest/rt_misc.prg
    + added support for alternative results to HBTEST code.
      It's enabled by default and can be turned off by -noalt hbtest
      parameter.
    + added alternative results for tests which return different then
      Cl*pper results but they are expected and not Harbour bugs.
This commit is contained in:
Przemysław Czerpak
2017-03-29 19:50:33 +02:00
parent 9153285bdf
commit 9e8e013eb9
9 changed files with 75 additions and 34 deletions

View File

@@ -10,6 +10,26 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2017-03-29 19:50 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/compiler/hbgenerr.c
* changed "with object" in last error message to upper cases
* src/rdd/dbf1.c
+ added assigned value to error object ARGS array when data type or
data width error is generated inside PUTVALUE() method
* utils/hbtest/hbtest.prg
* utils/hbtest/rt_array.prg
* utils/hbtest/rt_hvma.prg
* utils/hbtest/rt_main.ch
* utils/hbtest/rt_math.prg
* utils/hbtest/rt_misc.prg
+ added support for alternative results to HBTEST code.
It's enabled by default and can be turned off by -noalt hbtest
parameter.
+ added alternative results for tests which return different then
Cl*pper results but they are expected and not Harbour bugs.
2017-03-28 23:02 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbcomp.h
* include/hbcompdf.h

View File

@@ -98,7 +98,7 @@ const char * const hb_comp_szErrors[] =
"ENDWITH does not match WITH OBJECT",
"ENDSWITCH does not match SWITCH",
"END SEQUENCE does not match BEGIN SEQUENCE",
"Code block contains both macro and with object messages ':%s'",
"Code block contains both macro and WITH OBJECT messages ':%s'",
/* Some historical, funny sounding error messages from original CA-Cl*pper.
They serve no purpose whatsoever. [vszakats] */
"END wreaks terrible vengeance on control stack",

View File

@@ -2857,6 +2857,7 @@ static HB_ERRCODE hb_dbfPutValue( DBFAREAP pArea, HB_USHORT uiIndex, PHB_ITEM pI
hb_errPutOperation( pError, hb_dynsymName( ( PHB_DYNS ) pField->sym ) );
hb_errPutSubCode( pError, errCode );
hb_errPutFlags( pError, EF_CANDEFAULT );
hb_errPutArgs( pError, 1, pItem );
errCode = SELF_ERROR( &pArea->area, pError );
hb_itemRelease( pError );
return errCode == E_DEFAULT ? HB_SUCCESS : HB_FAILURE;

View File

@@ -86,6 +86,7 @@ STATIC s_nFail
STATIC s_nFhnd
STATIC s_nCount
STATIC s_lShowAll
STATIC s_lNoAltResult
STATIC s_lShortcut
STATIC s_aSkipList
STATIC s_nStartTime
@@ -99,7 +100,7 @@ STATIC s_lDBFAvail := .F.
REQUEST HB_GT_CGI_DEFAULT
#endif
PROCEDURE Main( cPar1, cPar2 )
PROCEDURE Main( cPar1, cPar2, cPar3 )
OutStd( "Harbour Regression Test Suite" + hb_eol() +;
"Copyright (c) 1999-2016, Viktor Szakats" + hb_eol() +;
@@ -111,6 +112,9 @@ PROCEDURE Main( cPar1, cPar2 )
IF cPar2 == NIL
cPar2 := ""
ENDIF
IF cPar3 == NIL
cPar3 := ""
ENDIF
IF "/?" $ Lower( cPar1 ) .OR. ;
"/h" $ Lower( cPar1 ) .OR. ;
@@ -124,6 +128,7 @@ PROCEDURE Main( cPar1, cPar2 )
hb_eol() +;
"Options: -h, -? Display this help." + hb_eol() +;
" -all Display all tests, not only the failures." + hb_eol() +;
" -noalt Ignore alternative results." + hb_eol() +;
" -skip:<list> Skip the listed test numbers." + hb_eol() )
RETURN
@@ -131,7 +136,7 @@ PROCEDURE Main( cPar1, cPar2 )
/* Initialize test */
TEST_BEGIN( cPar1 + " " + cPar2 )
TEST_BEGIN( cPar1 + " " + cPar2 + " " + cPar3 )
Main_HVM()
Main_HVMA()
@@ -214,6 +219,10 @@ STATIC PROCEDURE TEST_BEGIN( cParam )
"/all" $ Lower( cParam ) .OR. ;
"-all" $ Lower( cParam )
s_lNoAltResult := ;
"/noalt" $ Lower( cParam ) .OR. ;
"-noalt" $ Lower( cParam )
s_aSkipList := ListToNArray( CMDLGetValue( Lower( cParam ), "/skip:", "" ) )
IF Empty( s_aSkipList )
s_aSkipList := ListToNArray( CMDLGetValue( Lower( cParam ), "-skip:", "" ) )
@@ -331,7 +340,7 @@ STATIC PROCEDURE TEST_BEGIN( cParam )
FUNCTION TEST_DBFAvail()
RETURN s_lDBFAvail
PROCEDURE TEST_CALL( cBlock, bBlock, xResultExpected )
PROCEDURE TEST_CALL( cBlock, bBlock, xResultExpected, xResultAlter )
LOCAL xResult
LOCAL oError
@@ -371,18 +380,9 @@ PROCEDURE TEST_CALL( cBlock, bBlock, xResultExpected )
ErrorBlock( bOldError )
IF lRTE
lFailed := !( XToStr( xResult ) == XToStr( xResultExpected ) )
ELSE
IF !( ValType( xResult ) == ValType( xResultExpected ) )
IF ValType( xResultExpected ) == "C" .AND. ValType( xResult ) $ "ABMO"
lFailed := !( XToStr( xResult ) == xResultExpected )
ELSE
lFailed := .T.
ENDIF
ELSE
lFailed := !( xResult == xResultExpected )
ENDIF
lFailed := ResultCompare( lRTE, xResult, xResultExpected )
IF lFailed .AND. ! s_lNoAltResult .AND. PCount() >= 4
lFailed := ResultCompare( lRTE, xResult, xResultAlter )
ENDIF
ENDIF
@@ -460,6 +460,26 @@ STATIC PROCEDURE TEST_END()
RETURN
FUNCTION ResultCompare( lRTE, xResult, xResultExpected )
LOCAL lFailed
IF lRTE
lFailed := !( XToStr( xResult ) == XToStr( xResultExpected ) )
ELSE
IF !( ValType( xResult ) == ValType( xResultExpected ) )
IF ValType( xResultExpected ) == "C" .AND. ValType( xResult ) $ "ABMO"
lFailed := !( XToStr( xResult ) == xResultExpected )
ELSE
lFailed := .T.
ENDIF
ELSE
lFailed := !( xResult == xResultExpected )
ENDIF
ENDIF
RETURN lFailed
FUNCTION XToStr( xValue )
LOCAL cType := ValType( xValue )

View File

@@ -155,9 +155,9 @@ PROCEDURE Main_ARRAY()
#ifndef __XPP__
#ifdef HB_COMPAT_C53
HBTEST ASize() IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( NIL ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( {} ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( ErrorNew() ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( NIL ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:1:U:NIL "
HBTEST ASize( {} ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:1:A:{.[0].} "
HBTEST ASize( ErrorNew() ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:1:O:ERROR Object "
#else
HBTEST ASize() IS NIL
HBTEST ASize( NIL ) IS NIL
@@ -166,9 +166,9 @@ PROCEDURE Main_ARRAY()
#endif
#endif
#ifdef HB_COMPAT_C53
HBTEST ASize( NIL, 0 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( NIL, 1 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( NIL, -1 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 "
HBTEST ASize( NIL, 0 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:2:U:NIL;N:0 "
HBTEST ASize( NIL, 1 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:2:U:NIL;N:1 "
HBTEST ASize( NIL, -1 ) IS "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 ", "E 1 BASE 2023 Argument error (ASIZE) OS:0 #:0 A:2:U:NIL;N:-1 "
#else
HBTEST ASize( NIL, 0 ) IS NIL
HBTEST ASize( NIL, 1 ) IS NIL
@@ -210,7 +210,7 @@ PROCEDURE Main_ARRAY()
/* disable Harbour extended optimizations to test correct RTE message */
#pragma -ko-
#endif
HBTEST Array( 1, 0, -10 ) IS "E 2 BASE 1131 Bound error (array dimension) OS:0 #:0 "
HBTEST Array( 1, 0, -10 ) IS "E 2 BASE 1131 Bound error (array dimension) OS:0 #:0 ", "E 2 BASE 1131 Bound error (array dimension) OS:0 #:0 A:3:N:1;N:0;N:-10 "
HBTEST Array( 1, 0, "A" ) IS NIL
#ifdef __HARBOUR__
#pragma -ko+
@@ -393,9 +393,9 @@ PROCEDURE Main_ARRAY()
HBTEST AScan( saAllTypes, scStringZ ) IS 3
SET EXACT OFF
HBTEST TAEVSM() IS "N10N 9N 8N 7N 6N 5N 4N 3N 2N 1 0" /* Bug in CA-Cl*pper 5.x */
HBTEST TASOSM1() IS "NN 5NN 4NN 3NN 2NN 1NN 0NN 0NN 0NN 0NN 0NN 0NN 0 0{ }"
HBTEST TASOSM2() IS "NN 5NN 4NN 3NN 2NN 1NN 0NN 0NN 0NN 0NN 0 0{ }"
HBTEST TAEVSM() IS "N10N 9N 8N 7N 6N 5N 4N 3N 2N 1 0" /* Bug in CA-Cl*pper 5.x */, "N10N 9N 8N 7N 6 5"
HBTEST TASOSM1() IS "NN 5NN 4NN 3NN 2NN 1NN 0NN 0NN 0NN 0NN 0NN 0NN 0 0{ }" , "NN 5NN 4 3{ 2, 1, 3 }"
HBTEST TASOSM2() IS "NN 5NN 4NN 3NN 2NN 1NN 0NN 0NN 0NN 0NN 0 0{ }" , "NN 5NN 4 3{ 2, 1, 3 }"
RETURN

View File

@@ -365,8 +365,8 @@ PROCEDURE Main_HVMA()
HBTEST saArray[ 0 ] IS "E 2 BASE 1132 Bound error (array access) OS:0 #:0 "
HBTEST saArray[ 0 ] := 1 IS "E 2 BASE 1133 Bound error (array assign) OS:0 #:0 "
#endif
HBTEST saArray[ 1000 ] IS "E 2 BASE 1132 Bound error (array access) OS:0 #:0 "
HBTEST saArray[ 1000 ] := 1 IS "E 2 BASE 1133 Bound error (array assign) OS:0 #:0 "
HBTEST saArray[ 1000 ] IS "E 2 BASE 1132 Bound error (array access) OS:0 #:0 ", "E 2 BASE 1132 Bound error (array access) OS:0 #:0 A:2:A:{.[1].};N:1000 "
HBTEST saArray[ 1000 ] := 1 IS "E 2 BASE 1133 Bound error (array assign) OS:0 #:0 ", "E 2 BASE 1133 Bound error (array assign) OS:0 #:0 A:1:N:1000 "
#ifndef __HARBOUR__
// this error is reported at compile time
HBTEST saArray[ -1 ] IS "E 2 BASE 1132 Bound error (array access) OS:0 #:0 "
@@ -538,8 +538,8 @@ PROCEDURE Main_HVMA()
HBTEST RTSTR( 50000000000000 ) IS " 15 50000000000000"
HBTEST RTSTR( 500000000000000 ) IS " 16 500000000000000"
HBTEST RTSTR( 00000000000005 ) IS " 10 5"
HBTEST RTSTR( 00000500000000000000 ) IS " 21 500000000000000"
HBTEST RTSTR( 0500000000000000 ) IS " 17 500000000000000"
HBTEST RTSTR( 00000500000000000000 ) IS " 21 500000000000000", " 16 500000000000000"
HBTEST RTSTR( 0500000000000000 ) IS " 17 500000000000000" , " 16 500000000000000"
HBTEST RTSTR( 0500000000000000.5 ) IS " 18 500000000000000.5"
HBTEST RTSTR( 5000000000000000 ) IS " 17 5000000000000000"
HBTEST RTSTR( 50000000000000000 ) IS " 18 50000000000000000"

View File

@@ -44,7 +44,7 @@
*
*/
#translate HBTEST <x> IS <result> => TEST_CALL( #<x>, {|| <x> }, <result> )
#translate HBTEST <x> IS <result,...> => TEST_CALL( #<x>, {|| <x> }, <result> )
#ifndef __HARBOUR__
#ifndef __XPP__

View File

@@ -351,7 +351,7 @@ PROCEDURE Main_MATH()
HBTEST Str( 100.00 / 10.0 ) IS " 10.00"
HBTEST Str( sdDate - sdDateE ) IS " 2445785"
HBTEST Str( sdDate - sdDate ) IS " 0"
HBTEST Str( 1234567890 * 1234567890 ) IS " 1524157875019052000" /* real val is 1524157875019052100 */
HBTEST Str( 1234567890 * 1234567890 ) IS " 1524157875019052000" /* real val is 1524157875019052100 */, " 1524157875019052100"
/* Mod() */

View File

@@ -84,7 +84,7 @@ PROCEDURE Main_MISC()
#ifdef HB_COMPAT_C53
HBTEST Set( _SET_EVENTMASK ) IS 128
HBTEST Set( _SET_VIDEOMODE ) IS NIL
HBTEST Set( _SET_VIDEOMODE ) IS NIL, 0
HBTEST Set( _SET_MBLOCKSIZE ) IS 64
HBTEST Set( _SET_MFILEEXT ) IS ""
HBTEST Set( _SET_STRICTREAD ) IS .F.
@@ -94,7 +94,7 @@ PROCEDURE Main_MISC()
HBTEST Set( _SET_AUTOSHARE ) IS 0
HBTEST Set( _SET_EVENTMASK , -1 ) IS "E 1 BASE 2020 Argument error (SET) OS:0 #:0 A:2:N:39;N:-1 "
HBTEST Set( _SET_VIDEOMODE , -1 ) IS NIL
HBTEST Set( _SET_VIDEOMODE , -1 ) IS NIL, 0
HBTEST Set( _SET_MBLOCKSIZE, -1 ) IS "E 1 BASE 2020 Argument error (SET) OS:0 #:0 A:2:N:41;N:-1 "
HBTEST Set( _SET_MFILEEXT , {} ) IS ""
HBTEST Set( _SET_STRICTREAD, {} ) IS .F.