diff --git a/tests/utils/dbdigest.pp b/tests/utils/dbdigest.pp index 123e263806..c27fd750a4 100644 --- a/tests/utils/dbdigest.pp +++ b/tests/utils/dbdigest.pp @@ -16,7 +16,9 @@ {$mode objfpc} {$h+} -{$linklib pthread} +{$ifndef win32} + {$linklib pthread} +{$endif} program digest; @@ -63,7 +65,7 @@ Type TConfigOpt = ( coDatabaseName, - soHost, + coHost, coUserName, coPassword, coPort, @@ -116,6 +118,27 @@ ConfigStrings : Array [TConfigOpt] of string = ( 'verbose' ); +ConfigOpts : Array[TConfigOpt] of char =( + 'd', { coDatabaseName } + 'h', { coHost } + 'u', { coUserName } + 'p', { coPassword } + 'P', { coPort } + 'l', { coLogFile } + 'L', { coLongLogFile } + 'o', { coOS } + 'c', { coCPU } + 'a', { coCategory } + 'v', { coVersion } + 't', { coDate } + 's', { coSubmitter } + 'm', { coMachine } + 'C', { coComment } + 'S', { coTestSrcDir } + 'r', { coRelSrcDir } + 'V' { coVerbose } +); + ConfigAddStrings : Array [TConfigAddOpt] of string = ( 'compilerdate', 'compilerfullversion', @@ -134,8 +157,6 @@ ConfigAddCols : Array [TConfigAddOpt] of string = ( 'TU_SVNPACKAGESREVISION' ); -ConfigOpts : Array[TConfigOpt] of char - = ('d','h','u','p','P','l','L','o','c','a','v','t','s','m','C','S','r','V'); Var TestOS, @@ -184,7 +205,7 @@ var begin Case O of coDatabaseName : DatabaseName:=Value; - soHost : HostName:=Value; + coHost : HostName:=Value; coUserName : UserName:=Value; coPassword : Password:=Value; coPort : Port:=Value; @@ -307,15 +328,15 @@ Var I : Integer; O : String; c,co : TConfigOpt; - Found : Boolean; + ShortOptFound, Found : Boolean; begin I:=1; While I<=ParamCount do begin O:=Paramstr(I); - Found:=Length(O)=2; - If Found then + ShortOptFound:=(Length(O)=2) and (O[1]='-'); + If ShortOptFound then For co:=low(TConfigOpt) to high(TConfigOpt) do begin Found:=(O[2]=ConfigOpts[co]); @@ -325,7 +346,26 @@ begin Break; end; end; - If Not Found then + If not ShortOptFound then + begin + Found:=false; + { accept long options } + if (copy(O,1,2)='--') then + begin + { remove -- } + O:=copy(O,3,length(O)); + For co:=low(TConfigOpt) to high(TConfigOpt) do + begin + Found:=(O=ConfigStrings[co]); + If Found then + begin + c:=co; + Break; + end; + end; + end + end; + if not Found then Verbose(V_ERROR,'Illegal command-line option : '+O) else begin @@ -386,6 +426,8 @@ var LongLogFile : Text; const UseLongLog : boolean = false; + LongLogOpenCount : longint = 0; + FirstLongLogLine : boolean = true; Function GetContentsFromLongLog(Line : String) : String; var @@ -398,6 +440,13 @@ begin While Not(EOF(LongLogFile)) do begin ReadLn(LongLogFile,S); + if FirstLongLogLine then + begin + { At start of file there is a separation line } + if (pos('>>>>>>>>>>>',S)=1) then + Readln(LongLogFile,S); + FirstLongLogLine:=false; + end; if pos(Line,S)=1 then begin IsFound:=true; @@ -424,6 +473,7 @@ begin begin Close(LongLogFile); Reset(LongLogFile); + inc(LongLogOpenCount); end; end; end; @@ -569,7 +619,36 @@ procedure UpdateTestRun; qry:=qry+format('TU_SUBMITTER="%s", TU_MACHINE="%s", TU_COMMENT="%s", TU_DATE="%s"',[Submitter,Machine,Comment,SqlDate(TestDate)]); qry:=qry+' WHERE TU_ID='+format('%d',[TestRunID]); - RunQuery(Qry,res) + if RunQuery(Qry,res) then + FreeQueryResult(Res); + end; + +procedure UpdateTestConfig; + + var + i : TTestStatus; + qry : string; + res : TQueryResult; + + begin + qry:='SHOW TABLES LIKE ''TESTCONFIG'''; + if not RunQuery(Qry,Res) then + exit; + { Row_Count is zero if table does not exist } + if Res^.Row_Count=0 then exit; + FreeQueryResult(Res); + qry:='INSERT INTO TESTCONFIG (TCONF_NEW_RUN_FK,' + + 'TCONF_CPU_FK,TCONF_OS_FK,TCONF_VERSION_FK,TCONF_CATEGORY_FK,'+ + 'TCONF_SUBMITTER,TCONF_MACHINE,TCONF_COMMENT,TCONF_NEW_DATE) '; + qry:=qry+format(' VALUES(%d,%d,%d,%d,%d,"%s","%s","%s","%s") ', + [TestRunID,TestCPUID,TestOSID,TestVersionID,TestCategoryID, + Submitter,Machine,Comment,SqlDate(TestDate)]); + qry:=qry+'ON DUPLICATE KEY UPDATE '+ + format('TCONF_NEW_RUN_FK = %d, TCONF_NEW_DATE = "%s",'+ + 'TCONF_COUNT_RUNS = TCONF_COUNT_RUNS + 1', + [TestRunID,SqlDate(TestDate)]); + if RunQuery(Qry,res) then + FreeQueryResult(Res); end; @@ -585,12 +664,16 @@ begin Assign(LongLogFile,LongLogFileName); Reset(LongLogFile); If IOResult=0 then - UseLongLog:=true; + begin + UseLongLog:=true; + inc(LongLogOpenCount); + end; {$I+} end; GetIDs; ProcessFile(LogFileName); UpdateTestRun; + UpdateTestConfig; if UseLongLog then Close(LongLogFile); end