diff options
Diffstat (limited to 'testshl2/source')
38 files changed, 0 insertions, 8918 deletions
diff --git a/testshl2/source/autoregisterhelper.cxx b/testshl2/source/autoregisterhelper.cxx deleted file mode 100644 index 62e76804262c..000000000000 --- a/testshl2/source/autoregisterhelper.cxx +++ /dev/null @@ -1,140 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - - -#include <stdio.h> -#include <stdlib.h> -#include "testshl/autoregisterhelper.hxx" - -#include <rtl/ustring.hxx> - -#include <testshl/autoregister/registerfunc.h> -#include <testshl/autoregister/callbackstructure.h> -#include <testshl/result/callbackfunc.h> -#include <testshl/autoregister/testfunc.h> -#include "testshl/filehelper.hxx" - -FunctionList m_Functions; -// osl::Mutex m_Mutex; - -extern "C" void SAL_CALL registerFunc(FktPtr _pFunc, const char*) -{ - m_Functions.push_back(_pFunc); -} - -// ----------------------------------------------------------------------------- -AutomaticRegisterHelper::AutomaticRegisterHelper(rtl::OUString const& _sDLLName, GetOpt & _aOptions /*, JobList * _pJobList*/) - :DynamicLibraryHelper(_sDLLName, _aOptions), - m_bLoadLibraryOK(false) -{ - // try to get the entry pointer - FktRegAllPtr pFunc = (FktRegAllPtr) m_pModule->getFunctionSymbol( - rtl::OUString::createFromAscii( "registerAllTestFunction" ) ); - - if (pFunc) - { - m_bLoadLibraryOK = true; - // FktRegFuncPtr pRegisterFunc = &DynamicLibraryHelper::registerFunc; - // pFunc(pRegisterFunc); - // osl::Guard aGuard(m_Mutex); - FktRegFuncPtr pRegisterFunc = ®isterFunc; - - CallbackStructure aCallback; - aCallback.aRegisterFunction = pRegisterFunc; - - aCallback.aCallbackDispatch = &CallbackDispatch; - - // special parameter for API testing - if (_aOptions.hasOpt("-forward")) - { - aCallback.psForward = _aOptions.getOpt("-forward").getStr(); - } - - // aCallback.pJobList = _pJobList; - - //# aCallback.aStartTest = &TestResult_startTest; - //# aCallback.aAddFailure = &TestResult_addFailure; - //# aCallback.aAddError = &TestResult_addError; - //# aCallback.aEndTest = &TestResult_endTest; - //# aCallback.aShouldStop = &TestResult_shouldStop; - //# aCallback.aAddInfo = &TestResult_addInfo; - //# aCallback.aEnterNode = &TestResult_enterNode; - //# aCallback.aLeaveNode = &TestResult_leaveNode; - - aCallback.nBits = FileHelper::createFlags(_aOptions); - - pFunc(&aCallback); - - if (aCallback.nMagic == aCallback.nMagic2) - { - // ok internal simple test done. - m_aFunctionList = m_Functions; - } - else - { - // ERROR, the function seams not to be what we thing it's to be. - fprintf(stderr, "error: Internal check failed. Structure inconsistent, Value Magic2 != Magic.\nPlease recompile your test libraries."); - exit(-1); - } - } - else - { - fprintf(stderr, "warning: Function 'registerAllTestFunction' not found.\n"); - fprintf(stderr, "If you think, you are right, build testshl2 completly new.\n"); - } -} - -void AutomaticRegisterHelper::CallAll(hTestResult _hResult) const -{ - // can't load the module, break the tests. - if (m_bLoadLibraryOK == false) - { - return; - } - - for (FunctionList::const_iterator it = m_aFunctionList.begin(); - it != m_aFunctionList.end(); - ++it) - { - FktPtr pFunc = *it; - if (pFunc) - { - (pFunc)(_hResult); - } - } -} - -AutomaticRegisterHelper::~AutomaticRegisterHelper() -{ - if (getOptions().hasOpt("-verbose")) - { - fprintf(stderr, "Dtor AutomaticRegisterHelper.\n"); - } -} diff --git a/testshl2/source/codegen/codegen.pl b/testshl2/source/codegen/codegen.pl deleted file mode 100644 index ab7a68397aeb..000000000000 --- a/testshl2/source/codegen/codegen.pl +++ /dev/null @@ -1,601 +0,0 @@ -eval 'exec perl -wS $0 ${1+"$@"}' - if 0; - -use strict; -use Cwd; - -# #/usr/bin/perl - -# @lines -# push(@lines, $line) append -# pop(@lines) remove last -# shift(@lines) remove at first -# unshift(@lines, $line) insert at first -# $lines[-1] get last -# foreach $line (@lines) - -# $a eq $b compares strings -# $a == $b compares digits - -# split operator -# ($vorname, $nachname, $email) = split (/\s+/, $person); - -my $sCurrentPackage = ""; -my $sCurrentClass = ""; -my @sMethodNames; -my @sClassNameStack; -my @sFilenameStack; -my $sCurrentFilename; -my $nNoAdditionalAnyMore = 0; -my $bShowDemo = 1; -my $sSrcExt = ".cxx"; - -my $cwd = getcwd(); - -sub generateMakefileEntry(*$$); - -# ------------------------------------------------------------------------------ -sub createFilename -{ - my $sPackageName = shift; - my $sFilenameCounter = "$sPackageName$sSrcExt"; - my $sFilename = "$sPackageName"; - my $nCount = 0; - while ( -e $sFilenameCounter) - { - $nCount ++; - $sFilename = "$sPackageName" . "_$nCount"; - $sFilenameCounter = "$sFilename$sSrcExt"; - } - push(@sFilenameStack, $sFilename); - - $sCurrentFilename = $sFilenameCounter; - return $sFilenameCounter; -} -# ------------------------------------------------------------------------------ - -sub generateNewPackage(*$) -{ - local *CPPFILE = shift; - my $sPackageName = shift; - - my $sFilename = createFilename($sPackageName); - open(CPPFILE, ">$sFilename") || die "can't create source file"; - print CPPFILE "// autogenerated file with codegen.pl\n"; - print CPPFILE "\n"; - print CPPFILE "#include <testshl/simpleheader.hxx>\n"; - print CPPFILE "\n"; - print CPPFILE "namespace $sPackageName\n"; - print CPPFILE "{\n"; -} - -# ------------------------------------------------------------------------------ -sub generateNewClass -{ - my $sClassName = shift; - print CPPFILE "\n"; - print CPPFILE "class $sClassName : public CppUnit::TestFixture\n"; - print CPPFILE "{\n"; - print CPPFILE "public:\n"; -} -# ------------------------------------------------------------------------------ -sub closeMethods -{ - # due to the fact, that this is a function based code, not object based - # we have to do some hacks, to prevent us from creating wrong code - if ($sCurrentClass =~ /^$/ || $sCurrentPackage =~ /^$/ ) - { - return; - } - - # here we create the methods - # first the setUp() and tearDown() - print CPPFILE " // initialise your test code values here.\n"; - print CPPFILE " void setUp()\n"; - print CPPFILE " {\n"; - print CPPFILE " }\n"; - print CPPFILE "\n"; - print CPPFILE " void tearDown()\n"; - print CPPFILE " {\n"; - print CPPFILE " }\n"; - print CPPFILE "\n"; - - print CPPFILE " // insert your test code here.\n"; - - my $sMethod; - if ($#sMethodNames >= 0) - { - # all found methods - foreach $sMethod (@sMethodNames) - { - print CPPFILE " void $sMethod()\n"; - print CPPFILE " {\n"; - if ($bShowDemo == 1) - { - print CPPFILE " // this is demonstration code\n"; - print CPPFILE " // CPPUNIT_ASSERT_MESSAGE(\"a message\", 1 == 1);\n"; - $bShowDemo = 0; - } - print CPPFILE " CPPUNIT_ASSERT_STUB();\n"; - print CPPFILE " }\n"; - print CPPFILE "\n"; - } - } - else - { - # if no methods found, create at least one - print CPPFILE " // this is only demonstration code\n"; - print CPPFILE " void EmptyMethod()\n"; - print CPPFILE " {\n"; - print CPPFILE " // CPPUNIT_ASSERT_MESSAGE(\"a message\", 1 == 1);\n"; - print CPPFILE " CPPUNIT_ASSERT_STUB();\n"; - print CPPFILE " }\n"; - print CPPFILE "\n"; - } - - # create the autoregister code - print CPPFILE " // Change the following lines only, if you add, remove or rename \n"; - print CPPFILE " // member functions of the current class, \n"; - print CPPFILE " // because these macros are need by auto register mechanism.\n"; - print CPPFILE "\n"; - - print CPPFILE " CPPUNIT_TEST_SUITE($sCurrentClass);\n"; - push(@sClassNameStack, $sCurrentClass); - - my $nCount = 0; - if ($#sMethodNames >= 0) - { - foreach $sMethod (@sMethodNames) - { - print CPPFILE " CPPUNIT_TEST($sMethod);\n"; - $nCount ++; - } - # empty the method list - my $i; - for ($i = 0;$i < $nCount;$i++) - { - pop(@sMethodNames); - } - } - else - { - print CPPFILE " CPPUNIT_TEST(EmptyMethod);\n"; - } - print CPPFILE " CPPUNIT_TEST_SUITE_END();\n"; -} - -# ------------------------------------------------------------------------------ -sub closeClass -{ - # my $sClassName = shift; - if ($sCurrentClass =~ /^$/) - { - return; - } - print CPPFILE "}; // class $sCurrentClass\n"; - print CPPFILE "\n"; - $sCurrentClass = ""; -} -# ------------------------------------------------------------------------------ - -sub closePackage -{ - # my $sPackageName = shift; - if ($sCurrentPackage =~ /^$/) - { - return; - } - # create the autoregister code - print CPPFILE "// -----------------------------------------------------------------------------\n"; - my $nCount = 0; - my $sClassName; - foreach $sClassName (@sClassNameStack) - { - print CPPFILE "CPPUNIT_TEST_SUITE_NAMED_REGISTRATION($sCurrentPackage" . "::" . "$sClassName, \"$sCurrentPackage\");\n"; - $nCount ++; - } - # empty the method list - my $i; - for ($i = 0;$i < $nCount;$i++) - { - pop(@sClassNameStack); - } - - print CPPFILE "} // namespace $sCurrentPackage\n"; - print CPPFILE "\n"; - - print CPPFILE " -// ----------------------------------------------------------------------------- - -// this macro creates an empty function, which will called by the RegisterAllFunctions() -// to let the user the possibility to also register some functions by hand. -"; - # if the variable nNoAdditionalAnyMore is set to one, we insert a remark before - # the macro NOADDITIONAL; to prevent us from linker problems. - if ($nNoAdditionalAnyMore == 1) - { - print CPPFILE "// "; - } - print CPPFILE "NOADDITIONAL;\n"; - print CPPFILE "\n"; - - close(CPPFILE); - - $nNoAdditionalAnyMore = 1; - - $sCurrentPackage = ""; -} - -# ------------------------------------------------------------------------------ - -# sub generateCppSource -# { -# my $sPackageName = shift; -# my $sClassName = shift; -# my $sMethodName = shift; -# -# -# open(CPPFILE, ">$sFilename") || die "can't create cxx source file"; -# print CPPFILE "// autogenerated file\n"; -# close(CPPFILE); -# } -# ------------------------------------------------------------------------------ -sub walkThroughJobFile -{ - my $filename = shift; - - open(FILE, $filename) || die "can't open $filename\n"; - - print "start jobfile interpreter.\n"; - my $line; - while($line = <FILE>) - { - chomp($line); - # DOS Hack grrrr... - while ($line =~ / -$/) - { - $line = substr($line, 0, -1); - } - - if ($line =~ /^\#/ || $line =~ /^$/) - { - # remark or empty line - } - else - { - if ($line =~ /^\w+/) # must start with a word character - { - # print "$line\n"; - my $sPackageName = ""; - my $sClassName = ""; - my $sMethodName = ""; - my @names; - @names = split(/\./, $line); - if (exists $names[0]) - { - $sPackageName = $names[0]; - } - if (exists $names[1]) - { - $sClassName = $names[1]; - } - if (exists $names[2]) - { - $sMethodName = $names[2]; - } - - if ($sClassName =~ /^$/) - { - print "error: in $line, no class name exist. Build no code.\n"; - } - # test if it also works without methods - # elsif ($sMethodName =~ /^$/) - # { - # print "error: in $line, no method name exist.\n"; - # } - else - { - if ($sMethodName =~ /^$/) - { - print "warning: in $line, no method name exist, create only one member function.\n"; - } - - print "build code for: ${sPackageName}.${sClassName}.${sMethodName}\n"; - - if ($sCurrentPackage ne $sPackageName) - { - closeMethods(); - closeClass(); - closePackage(); - - $sCurrentPackage = $sPackageName; - generateNewPackage(CPPFILE, $sPackageName); - } - if ($sCurrentClass ne $sClassName) - { - closeMethods(); - closeClass(); - $sCurrentClass = $sClassName; - generateNewClass($sClassName); - } - if ($sMethodName) - { - push(@sMethodNames, $sMethodName); - } - } - } - } - } - - closeMethods(); - closeClass(); - closePackage(); - close(FILE); - - print "done.\n\nThe following files have been created in the current directory:\n"; - - my $sFilename; - foreach $sFilename (@sFilenameStack) - { - print " ${sFilename}${sSrcExt}\n"; - } - print "\n"; -} - -# ------------------------------------------------------------------------------ -sub checkMakefileNumber -{ - my $sTargetName = shift; - - # This function gives back the lowest number for SHL\dTARGET - open(MAKEFILE, "makefile.mk") || return -1; - - my $line; - my $nNumber; - my @aNumbers; - my $i; - for($i = 1;$i < 10;$i++) - { - $aNumbers[$i] = 0; - } - - my $nReplacePos = -1; - while($line = <MAKEFILE>) - { - chomp($line); - - if ($line =~ /^SHL(\d)TARGET/) - { - $aNumbers[$1] = 1; - $line =~ /^SHL(\d)TARGET=\s*(\S+)\s*/; - - print "Target: $2\n"; - if ($sTargetName eq $2) - { - print "info: Targetname already exist.\n"; - $nReplacePos = $1; - } - } - } - close(MAKEFILE); - - my $nFirstFree = 0; - for($i = 1;$i < 10;$i++) - { - if ($aNumbers[$i] == 0) - { - $nFirstFree = $i; - last; - } - } - return $nFirstFree, $nReplacePos; -} -# ------------------------------------------------------------------------------ -sub createNewMakefile($$$) -{ - my $sNewMakefileName = shift; - my $sTargetName = shift; - my $nNumber = shift; - local *MAKEFILE; - - # this function split a makefile into two parts, - open(MAKEFILE, "makefile.mk") || return; - my @lines = <MAKEFILE>; - close(MAKEFILE); - - # print "info: Makefile has $#lines lines.\n"; - - # search a point, where to insert the new makefile part. - my $nTargetMK = -1; - my $i; - for ($i = $#lines; $i > 0; $i--) - { - if ($lines[$i] =~ /\.INCLUDE.*target.mk\s$/) - { - $nTargetMK = $i; - last; - } - } - if ($nTargetMK > 0) - { - # print "info: target.mk found, is in line $nTargetMK\n"; - - # print "@lines[0]"; - # print "@lines[1]"; - # print "@lines[2]"; - # print "@lines[$nTargetMK - 2]"; - # print "@lines[$nTargetMK - 1]"; - # print "@lines[$nTargetMK]"; - - local *OUT_MAKEFILE; - open(OUT_MAKEFILE, ">$sNewMakefileName") || return; - for ($i = 0;$i < ($nTargetMK - 2); $i++) - { - print OUT_MAKEFILE $lines[$i]; - } - - generateMakefileEntry(OUT_MAKEFILE, $sTargetName, $nNumber); - - for ($i = ($nTargetMK - 2);$i <= $#lines; $i++) - { - print OUT_MAKEFILE $lines[$i]; - } - close(OUT_MAKEFILE); - } -} -# ------------------------------------------------------------------------------ - -sub generateMakefileEntry(*$$) -{ - # my MAKEFILE = shift; - local *_MAKEFILE = shift; - my $sTargetName = shift; - my $nNumber = shift; - - # open(_MAKEFILE, ">makefile.add") || die "can't open makefile.add"; - - print _MAKEFILE "# BEGIN ----------------------------------------------------------------\n"; - print _MAKEFILE "# auto generated Target:$sTargetName by codegen.pl \n"; - print _MAKEFILE "SHL${nNumber}OBJS= "; - my $sFilename; - foreach $sFilename (@sFilenameStack) - { - print _MAKEFILE " \\\n"; - print _MAKEFILE " \$(SLO)\$/$sFilename.obj"; - } - print _MAKEFILE "\n\n"; - - # targetname - print _MAKEFILE "SHL${nNumber}TARGET= $sTargetName\n"; - # additional libraries - print _MAKEFILE "SHL${nNumber}STDLIBS=\\\n"; - print _MAKEFILE " \$(SALLIB) \\\n"; - # LLA: added by sb 18th jun 2003 (announced) - print _MAKEFILE " \$(CPPUNITLIB) \n"; - # link static cppunit library - # print _MAKEFILE ".IF \"\$(GUI)\" == \"WNT\"\n"; - # print _MAKEFILE "SHL${nNumber}STDLIBS+= \$(SOLARLIBDIR)\$/cppunit.lib\n"; - # print _MAKEFILE ".ENDIF\n"; - # print _MAKEFILE ".IF \"\$(GUI)\" == \"UNX\"\n"; - # print _MAKEFILE "SHL${nNumber}STDLIBS+=\$(SOLARLIBDIR)\$/libcppunit\$(DLLPOSTFIX).a\n"; - # print _MAKEFILE ".ENDIF\n"; - print _MAKEFILE "\n"; - print _MAKEFILE "SHL${nNumber}IMPLIB= i\$(SHL${nNumber}TARGET)\n"; - print _MAKEFILE "# SHL${nNumber}DEF= \$(MISC)\$/\$(SHL${nNumber}TARGET).def\n"; - print _MAKEFILE "\n"; - # DEF name - print _MAKEFILE "DEF${nNumber}NAME =\$(SHL${nNumber}TARGET)\n"; - print _MAKEFILE "# DEF${nNumber}EXPORTFILE= export.exp\n"; - print _MAKEFILE "SHL${nNumber}VERSIONMAP= export.map\n"; - print _MAKEFILE "# auto generated Target:$sTargetName\n"; - print _MAKEFILE "# END ------------------------------------------------------------------\n\n"; - - # close(_MAKEFILE); -} - -# ------------------------------------------------------------------------------ -sub usage -{ - print "usage:\ncodegen.pl joblist [targetname]\n"; - print "\n(c) Sun Microsystems Inc. 2003\n"; - print " -This is a testshl2 codegenerator which creates compilable C++ source files -with stub functions for all given test routines from the jobfile. -Also generate a makefile entry which is insert in the makefile.new -if a makefile.mk already exist or this tool creates a makefile.add. Which -has to add into a new makefile.mk by hand. -Also generate a export.map file, if no one exist. -"; - exit(1); -} -# -------------------------------- main function -------------------------------- - -sub main -{ - if ($#ARGV < 0) - { - usage(); - } - my $jobfile = $ARGV[0]; - my $sTargetName; - if ($#ARGV < 2) - { - # remove .sce - $sTargetName = $jobfile; - $sTargetName =~ s/\.\w*//; - } - else - { - $sTargetName = $ARGV[1]; - } - print "Test code generator\n\n"; - - if (! -e $jobfile) - { - print "error: given jobfile '$jobfile' doesn't exist.\n"; - exit(1); - } - walkThroughJobFile($jobfile); - - # generate makefile - - if (-e "makefile.mk") - { - my $n; - my $nReplacePos; - ($n, $nReplacePos) = checkMakefileNumber($sTargetName); - # $n == -1 no makefile - # $n == 0 no free number - # $n 1..9 ok. - if ($n > 0) - { - my $sNewMakefileName = "makefile.new"; - print "Makefile: Add the 'SHL${n}TARGET' to the file '$sNewMakefileName'\n"; - createNewMakefile($sNewMakefileName, $sTargetName, $n); - } - } - else - { - print "warning: No makefile.mk found, please add the content of makefile.add to a makefile.mk file\n"; - local *MAKEFILE; - open(MAKEFILE, ">makefile.add"); - generateMakefileEntry(MAKEFILE, $sTargetName, 1); - close(MAKEFILE); - } - print "\n"; - # this is the old export.exp method - # if (! -e "export.exp") - # { - # print "info: create export.exp file\n"; - # open(EXPORTEXP, ">export.exp") || die "can't create export.exp"; - # print EXPORTEXP "registerAllTestFunction\n"; - # close(EXPORTEXP); - # } - # else - # { - # print "The file 'export.exp' file already exist, please make sure that it contains the entry 'registerAllTestFunction'.\n"; - # } - if (! -e "export.map") - { - local *EXPORTMAP; - print "info: create export.map file\n"; - open(EXPORTMAP, ">export.map") || die "can't create export.map"; - print EXPORTMAP "UDK_3.0 {\n"; - print EXPORTMAP " global:\n"; - print EXPORTMAP " registerAllTestFunction;\n"; - print EXPORTMAP "\n"; - print EXPORTMAP " local:\n"; - print EXPORTMAP " *;\n"; - print EXPORTMAP "};\n"; - close(EXPORTMAP); - } - else - { - print "The file 'export.map' file already exist, please make sure that it contains the entry 'registerAllTestFunction'.\n"; - } -} - -# ------------------------------------------------------------------------------ - -main(); diff --git a/testshl2/source/cppunit/cmdlinebits.cxx b/testshl2/source/cppunit/cmdlinebits.cxx deleted file mode 100644 index 061e82fe2d73..000000000000 --- a/testshl2/source/cppunit/cmdlinebits.cxx +++ /dev/null @@ -1,141 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#ifdef WNT -# define UNDER_WINDOWS_DEBUGGING -# include "testshl/winstuff.hxx" -#endif /* WNT */ - -#include <stdio.h> -#include <testshl/cmdlinebits.hxx> -#include "testshl/checkboom.hxx" - -#include <testshl/autoregister/callbackstructure.h> -#include <osl/diagnose.h> -#include <rtl/tres.h> -#include <testshl/stringhelper.hxx> - -extern CallbackStructure aGlobalStructure; - -sal_Bool isBit( CmdLineBits _nBits, CmdLineBits _nFlag ); - -// sal_Bool isBit( CmdLineBits _nBits, CmdLineBits _nFlag ) -// { -// return( ( _nBits & _nFlag ) == _nFlag ); -// } - -void CheckBoom(bool bCondition, std::string const& msg) -{ - (void) msg; // avoid warning - if ( isBit( aGlobalStructure.nBits, rtl_tres_Flag_BOOM ) ) - { - /* force an assertion on false state */ - if ( !bCondition ) { -#ifdef UNDER_WINDOWS_DEBUGGING - WinDebugBreak(); -#else - OSL_ENSURE( false, msg.c_str() ); -#endif - } - } -} - -void CheckBoom(bool bCondition, rtl::OUString const& msg) -{ - if ( isBit( aGlobalStructure.nBits, rtl_tres_Flag_BOOM ) ) - { - /* force an assertion on false state */ - rtl::OString sMessage; - sMessage <<= msg; - if ( !bCondition ) { -#ifdef UNDER_WINDOWS_DEBUGGING - WinDebugBreak(); -#else - OSL_ENSURE( false, sMessage.getStr() ); -#endif - } - } -} - -const char* getForwardString() -{ - return aGlobalStructure.psForward; -} - -// ----------------------------------------------------------------------------- -// ----------------------------- own printf method ----------------------------- -// ----------------------------------------------------------------------------- - -// bool isVerbose() -// { -// if ( isBit( aGlobalStructure.nBits, rtl_tres_Flag_VERBOSE ) ) -// { -// return true; -// } -// return false; -// } -// -// bool isQuiet() -// { -// if ( isBit( aGlobalStructure.nBits, rtl_tres_Flag_QUIET ) ) -// { -// return true; -// } -// return false; -// } -// -// void impl_t_print(const char* _pFormatStr, va_list &args) -// { -// if (! isQuiet()) -// { -// printf("# "); -// vprintf(_pFormatStr, args); -// } -// } -// -// void t_print(const char* _pFormatStr, ...) -// { -// va_list args; -// va_start( args, _pFormatStr ); -// impl_t_print(_pFormatStr, args); -// va_end( args ); -// } -// -// void t_print(T_Print_Params _eType, const char* _pFormatStr, ...) -// { -// if (_eType == T_VERBOSE && isVerbose()) -// { -// // if T_VERBOSE and we should be verbose, print info -// va_list args; -// va_start( args, _pFormatStr ); -// impl_t_print(_pFormatStr, args); -// va_end( args ); -// } -// } diff --git a/testshl2/source/cppunit/joblist.cxx b/testshl2/source/cppunit/joblist.cxx deleted file mode 100644 index 18f4c5aff4cd..000000000000 --- a/testshl2/source/cppunit/joblist.cxx +++ /dev/null @@ -1,221 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdlib.h> -#include <stdio.h> -#include <fstream> -#include <rtl/string.hxx> -#include "testshl/joblist.hxx" - -#define C_SEPARATOR_LIST " \t,;:#" -JobList::JobList() - :ppsJobList(NULL) -{} - -// ----------------------------------------------------------------------------- -bool JobList::isInCurrentEnvironment(std::string const& _sString) -{ - int nSpace = 0; - std::string sSearchString = _sString; - bool bEnd = false; - // run through the hole given string, - std::string sEnv; - - do { - nSpace = sSearchString.find_first_of(C_SEPARATOR_LIST); - if (nSpace < 0) - { - sEnv = sSearchString; - bEnd = true; - } - else - { - sEnv = sSearchString.substr(0, nSpace); - sSearchString = sSearchString.substr(nSpace + 1); - } - if (sEnv.length() > 0) - { - // cout << sEnv << endl; -#ifdef LINUX - int nLinux = sEnv.find("unxlng"); - if (nLinux >= 0) - { - // found unxlng - return true; - } -#endif -#ifdef SOLARIS - int nSolaris = sEnv.find("unxsol"); - if (nSolaris >= 0) - { - // found unxsol - return true; - } -#endif -#ifdef WNT - int nWindows = sEnv.find("wnt"); - if (nWindows >= 0) - { - // found wnt - return true; - } -#endif - } - } while ( !bEnd ); - return false; -} - -std::string JobList::trim(std::string const& _sStringToTrim) -{ - rtl::OString sStr(_sStringToTrim.c_str()); - sStr = sStr.trim(); - return std::string(sStr.getStr()); -} - -// ----------------------------------------------------------------------------- -bool JobList::readfile(std::string const& _sFilename, JobType _nJobType) -{ - // StringList aJobList; - m_aJobList.clear(); - - std::ifstream in(_sFilename.c_str(), std::ios::in); - - if (!in) - { - // fprintf(stderr, "warning: Can't open job file: %s\n", _sFilename.c_str()); - return false; - } - else - { - if (_nJobType == JOB_EXCLUDE_LIST) - { - fprintf(stderr, "warning: There exist a job exclusion list file: %s\n", _sFilename.c_str()); - } - - // std::cout << "Check for signal" << std::endl; - std::string sLine; - while (std::getline(in, sLine)) - { - if (sLine.size() > 0) - { - char ch = sLine[0]; - if (ch != '#' && - isspace(ch) == 0) - { - sLine = trim(sLine); - - // m_aJobList.push_back( sLine ); - int nSpace = sLine.find_first_of(C_SEPARATOR_LIST); - if (nSpace < 0) - { - m_aJobList[sLine] = JOB_UNKNOWN; - } - else - { - // found a separator - std::string sTest = sLine.substr(0, nSpace); - std::string sRest = sLine.substr(nSpace + 1); - if (isInCurrentEnvironment(sRest)) - { - m_aJobList[sTest] = JOB_UNKNOWN; - } - } - } - } - } - - // inclusion list -/* - int nSize = m_aJobList.size(); - - ppsJobList = (char**) malloc((nSize + 1) * sizeof(char*)); - - int nIdx = 0; - StringList::const_iterator aItEnd = m_aJobList.end(); - for(StringList::const_iterator it = m_aJobList.begin(); - it != aItEnd; ++it) - { - std::string sValue = *it; - char* psTestFkt = (char*) malloc(sValue.size() + 1); - strcpy(psTestFkt, sValue.c_str()); - ppsJobList[nIdx] = psTestFkt; - ++nIdx; - } - - ppsJobList[nIdx] = NULL; -*/ - } - return true; -} - -// ----------------------------------------------------------------------------- -int JobList::getJobListEntry(std::string const& _sIndexName) -{ - if (m_aJobList.find(_sIndexName) != m_aJobList.end()) - { - return m_aJobList[_sIndexName]; - } - return JOB_NOT_FOUND; -} - -// ----------------------------------------------------------------------------- -void JobList::setJobListEntry(std::string const& _sIndexName, int _nValue) -{ - // if (m_aJobList.find(_sIndexName) == m_aJobList.end()) - // { - m_aJobList[_sIndexName] = _nValue; - // } - // else - // { - // fprintf(stderr, "error: test function '%s' already exist.\n", _sIndexName); - // } -} - -// ----------------------------------------------------------------------------- -JobList::~JobList() -{ - int nIdx = 0; - if (ppsJobList) - { - while(ppsJobList[nIdx] != NULL) - { - free(ppsJobList[nIdx]); - ++nIdx; - } - free(ppsJobList); - } -} -// ----------------------------------------------------------------------------- -/* - bool JobList::checkFilter(JobList m_aJobFilter, std::string const& _sNodeName, std::string const& _sName) - { - std::string sFilter = m_aJobFilter.m_aJobList.begin(); - } -*/ diff --git a/testshl2/source/cppunit/makefile.mk b/testshl2/source/cppunit/makefile.mk deleted file mode 100644 index 05e5bfa3fb69..000000000000 --- a/testshl2/source/cppunit/makefile.mk +++ /dev/null @@ -1,99 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/.. - -PRJNAME=testshl2 -TARGET=testshl2 -LIBTARGET=NO -ENABLE_EXCEPTIONS=TRUE -# ENABLE_RTTI=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -# CXXFILES = \ -# querytemplate.cxx \ -# stringhelper.cxx - -# ENVCFLAGSCXX+=-DCPPUNIT_BUILD_DLL - -CPPUNIT_TESTSHL_SLOFILES = \ - $(SLO)$/joblist.obj \ - $(SLO)$/t_print.obj \ - $(SLO)$/signaltest.obj - -CPPUNIT_STATIC_SOLFILES = \ - $(SLO)$/cmdlinebits.obj \ - $(SLO)$/tresregister.obj \ - $(SLO)$/tresstatewrapper.obj \ - $(SLO)$/registertestfunction.obj - - -SLOFILES = \ - $(CPPUNIT_TESTSHL_SLOFILES) \ - $(CPPUNIT_STATIC_SOLFILES) -#------------------------------------------------------------------------------- -# This is statically cppunit library -LIB1TARGET= $(LB)$/$(TARGET).lib -LIB1OBJFILES= \ - $(SLOFILES) - -.IF "$(GUI)"=="WNT" -.IF "$(COM)"=="GCC" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF -LIB1FILES=$(LB)$/c5t_winstuff.lib -.ENDIF - -.IF "$(GUI)" == "UNX" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF - -#------------------------------------------------------------------------------- -TARGET2=c5t_no_regallfkt -LIB2TARGET= $(LB)$/$(TARGET2).lib -LIB2OBJFILES= \ - $(CPPUNIT_TESTSHL_SLOFILES) - -.IF "$(GUI)"=="WNT" -.IF "$(COM)"=="GCC" -LIB2ARCHIV=$(LB)$/lib$(TARGET2)$(DLLPOSTFIX).a -.ENDIF -.ENDIF - -.IF "$(GUI)" == "UNX" -LIB2ARCHIV=$(LB)$/lib$(TARGET2)$(DLLPOSTFIX).a -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - diff --git a/testshl2/source/cppunit/registertestfunction.cxx b/testshl2/source/cppunit/registertestfunction.cxx deleted file mode 100644 index 74c70ee55ab1..000000000000 --- a/testshl2/source/cppunit/registertestfunction.cxx +++ /dev/null @@ -1,57 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdlib.h> -#include <testshl/simpleheader.hxx> -#include <testshl/additionalfunc.hxx> - -extern "C" void SAL_CALL testAllRegisteredFunctions(hTestResult _pResult) -{ - CppUnit::TestFactoryRegistry::testRegistries(_pResult); - // CppUnit::Test* tp = CppUnit::TestFactoryRegistry::getRegistry("rtl_OUString").makeTest(); - // tp->run(pResult); -} - -// ----------------------------------------------------------------------------- -// ---------------------------- RegisterTestFunctions ---------------------------- -// ----------------------------------------------------------------------------- - -extern "C" void SAL_CALL RegisterTestFunctions(FktRegFuncPtr _pFunc) -{ - if (_pFunc) - { - (_pFunc)(&testAllRegisteredFunctions, ""); - } - else - { - // error, FktRegFuncPtr not given - } - RegisterAdditionalFunctions(_pFunc); -} diff --git a/testshl2/source/cppunit/result/SynchronizedObject.cpp b/testshl2/source/cppunit/result/SynchronizedObject.cpp deleted file mode 100644 index 73de43b8c543..000000000000 --- a/testshl2/source/cppunit/result/SynchronizedObject.cpp +++ /dev/null @@ -1,38 +0,0 @@ -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <cppunit/SynchronizedObject.h> - - -namespace CppUnit -{ - - - - -SynchronizedObject::SynchronizedObject( SynchronizationObject *syncObject ) - : m_syncObject( syncObject == 0 ? new SynchronizationObject() : - syncObject ) -{ -} - - -SynchronizedObject::~SynchronizedObject() -{ - delete m_syncObject; -} - - -/** Accept a new synchronization object for protection of this instance - * TestResult assumes ownership of the object - */ -void -SynchronizedObject::setSynchronizationObject( SynchronizationObject *syncObject ) -{ - delete m_syncObject; - m_syncObject = syncObject; -} - - -} // namespace CppUnit - diff --git a/testshl2/source/cppunit/result/TestResult.cpp b/testshl2/source/cppunit/result/TestResult.cpp deleted file mode 100644 index 5fa5e444e540..000000000000 --- a/testshl2/source/cppunit/result/TestResult.cpp +++ /dev/null @@ -1,264 +0,0 @@ -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <cppunit/TestFailure.h> -#include <testshl/result/TestListener.h> -#include "testshl/getopt.hxx" -#include <testshl/result/TestResult.h> -#include <algorithm> -#include "testshl/result/outputter.hxx" -#include <cppunit/Test.h> -#include <testshl/cmdlinebits.hxx> - -namespace CppUnit { - -/// Construct a TestResult -TestResult::TestResult( GetOpt &_pOptions, SynchronizationObject *syncObject ) - : SynchronizedObject( syncObject ), - m_aOptionHelper(_pOptions), - m_nExitValue(0) -{ - reset(); -} - - -/// Destroys a test result -TestResult::~TestResult() -{ -} - - -/** Resets the result for a new run. - * - * Clear the previous run result. - */ -void -TestResult::reset() -{ - ExclusiveZone zone( m_syncObject ); - m_stop = false; -} - - -/** Adds an error to the list of errors. - * The passed in exception - * caused the error - */ -void -TestResult::addError( Test *test, - Exception *e, ErrorType::num _eType ) -{ - TestFailure aTestFailure( test, e, _eType ); - addFailure( aTestFailure ); -} - - -/** Adds a failure to the list of failures. The passed in exception - * caused the failure. - */ -void -TestResult::addFailure( Test *test, Exception *e ) -{ - TestFailure aTestFailure( test, e, ErrorType::ET_FAILURE ); - addFailure( aTestFailure ); -} - - -/** Called to add a failure to the list of failures. - */ -void -TestResult::addFailure( const TestFailure &failure ) -{ - ExclusiveZone zone( m_syncObject ); - - // LLA: - // this set the global returnvalue, due to the fact, there occurs a failure, we have to return a non zero value - // at the moment this seams to be a good place. - setExitValue(1); - - for ( TestListeners::iterator it = m_listeners.begin(); - it != m_listeners.end(); - ++it ) - { - TestListener *pListener = *it; - pListener->addFailure( failure ); - } -} - - -/// Informs the result that a test will be started. -void -TestResult::startTest( Test *test ) -{ - ExclusiveZone zone( m_syncObject ); - if (m_aOptionHelper.isVerbose()) - { - std::string aStr; - if (test) - { - aStr = getNodeName(); - aStr += "."; - aStr += test->getName(); - } - // fprintf(stderr, "Start test: %s\n", aStr.c_str()); - t_print( T_VERBOSE, "Start test: %s\n", aStr.c_str()); - } - - for ( TestListeners::iterator it = m_listeners.begin(); - it != m_listeners.end(); - ++it ) - { - TestListener *pListener = *it; - pListener->startTest( test ); - } -} - - -/// Informs the result that a test was completed. -void -TestResult::endTest( Test *test ) -{ - ExclusiveZone zone( m_syncObject ); - for ( TestListeners::iterator it = m_listeners.begin(); - it != m_listeners.end(); - ++it ) - { - TestListener *pListener = *it; - pListener->endTest( test ); - } -} - - -/// Returns whether testing should be stopped -bool -TestResult::shouldStop() const -{ - ExclusiveZone zone( m_syncObject ); - return m_stop; -} - - -/// Stop testing -void -TestResult::stop() -{ - ExclusiveZone zone( m_syncObject ); - m_stop = true; -} - - -void -TestResult::addListener( TestListener *listener ) -{ - ExclusiveZone zone( m_syncObject ); - m_listeners.push_back( listener ); -} - - -void -TestResult::removeListener ( TestListener *listener ) -{ - ExclusiveZone zone( m_syncObject ); -#if defined(_MSC_VER) && (_MSC_VER >=1400) - m_listeners.erase( remove( m_listeners.begin(), -#else - m_listeners.erase( std::remove( m_listeners.begin(), -#endif - m_listeners.end(), - listener ), - m_listeners.end()); -} - -void -TestResult::addInfo(Test *test, const char* _aStr) -{ - ExclusiveZone zone( m_syncObject ); - for ( TestListeners::iterator it = m_listeners.begin(); - it != m_listeners.end(); - ++it ) - { - TestListener *pListener = *it; - pListener->addInfo( test, _aStr ); - } -} - -// old: void -// old: TestResult::enterNode(const char* _aStr) -// old: { -// old: ExclusiveZone zone( m_syncObject ); -// old: for ( TestListeners::iterator it = m_listeners.begin(); -// old: it != m_listeners.end(); -// old: ++it ) -// old: { -// old: TestListener *pListener = *it; -// old: pListener->enterNode( _aStr ); -// old: } -// old: } -// old: -// old: void -// old: TestResult::leaveNode(const char* _aStr) -// old: { -// old: ExclusiveZone zone( m_syncObject ); -// old: -// old: for ( TestListeners::iterator it = m_listeners.begin(); -// old: it != m_listeners.end(); -// old: ++it ) -// old: { -// old: TestListener *pListener = *it; -// old: pListener->leaveNode( _aStr ); -// old: } -// old: } - -void TestResult::enterNode(const char* _sNode) -{ - ExclusiveZone zone( m_syncObject ); - m_aCurrentNodeNames.push_back(std::string(_sNode)); -} - -void TestResult::leaveNode(const char* /*_sNode*/) -{ - ExclusiveZone zone( m_syncObject ); - std::string sBack = m_aCurrentNodeNames.back(); - m_aCurrentNodeNames.pop_back(); - - // due to a -Wall warning, comment out. - // if (sBack != std::string(_sNode)) - // { - // volatile int dummy = 0; - // // problem?! - // } -} - -std::string TestResult::getNodeName() -{ - std::string sName; - for (std::vector<std::string>::const_iterator it = m_aCurrentNodeNames.begin(); - it != m_aCurrentNodeNames.end(); - ++it) - { - if (sName.size() != 0) - { - sName += "."; - } - sName += *it; - } - return sName; -} - -// ----------------------------------------------------------------------------- -bool TestResult::isAllowedToExecute(std::string const& _sName) -{ - return m_aOptionHelper.isAllowedToExecute(getNodeName(), _sName); -} -// ----------------------------------------------------------------------------- -bool TestResult::isOptionWhereAmI() -{ - return m_aOptionHelper.isOptionWhereAmI(); -} - -// ----------------------------------------------------------------------------- -void TestResult::print(Outputter&) -{ -} - -} // namespace CppUnit diff --git a/testshl2/source/cppunit/result/TestResultCollector.cpp b/testshl2/source/cppunit/result/TestResultCollector.cpp deleted file mode 100644 index e3913219b541..000000000000 --- a/testshl2/source/cppunit/result/TestResultCollector.cpp +++ /dev/null @@ -1,150 +0,0 @@ -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <cppunit/TestFailure.h> -#include <testshl/result/TestResultCollector.h> - - -namespace CppUnit -{ - - -TestResultCollector::TestResultCollector( TestResult* _pResult, SynchronizationObject *syncObject ) - : TestSucessListener( syncObject ), - m_pResult(_pResult), - m_testErrors(0) -{ - reset(); -} - - -TestResultCollector::~TestResultCollector() -{ - TestFailures::iterator itFailure = m_failures.begin(); - while ( itFailure != m_failures.end() ) - { - TestFailureEnvelope *pEnvelope = *itFailure++; - TestFailure *pFailure = pEnvelope->getTestFailure(); - delete pFailure; - } -} - - -void -TestResultCollector::reset() -{ - TestSucessListener::reset(); - - ExclusiveZone zone( m_syncObject ); - m_testErrors = 0; - m_tests.clear(); - m_failures.clear(); -} - - -void -TestResultCollector::startTest( Test *test ) -{ - ExclusiveZone zone (m_syncObject); - - m_tests.push_back( new TestEnvelope(test, m_pResult->getNodeName()) ); -} - -void -TestResultCollector::endTest( Test * ) -{ - // ExclusiveZone zone (m_syncObject); - // Nothing! -} - - -void -TestResultCollector::addFailure( const TestFailure &failure ) -{ - TestSucessListener::addFailure( failure ); - - ExclusiveZone zone( m_syncObject ); - if ( failure.isError() ) - ++m_testErrors; - m_failures.push_back( new TestFailureEnvelope(failure.clone(), m_pResult->getNodeName()) ); -} - - -/// Gets the number of run tests. -int -TestResultCollector::runTests() const -{ - ExclusiveZone zone( m_syncObject ); - return m_tests.size(); -} - - -/// Gets the number of detected errors (uncaught exception). -int -TestResultCollector::testErrors() const -{ - ExclusiveZone zone( m_syncObject ); - return m_testErrors; -} - - -/// Gets the number of detected failures (failed assertion). -int -TestResultCollector::testFailures() const -{ - ExclusiveZone zone( m_syncObject ); - return m_failures.size() - m_testErrors; -} - - -/// Gets the total number of detected failures. -int -TestResultCollector::testFailuresTotal() const -{ - ExclusiveZone zone( m_syncObject ); - return m_failures.size(); -} - - -/// Returns a the list failures (random access collection). -const TestResultCollector::TestFailures & -TestResultCollector::failures() const -{ - ExclusiveZone zone( m_syncObject ); - return m_failures; -} - - -const TestResultCollector::Tests & -TestResultCollector::tests() const -{ - ExclusiveZone zone( m_syncObject ); - return m_tests; -} - -void TestResultCollector::addInfo(Test *_pTest, const char* _sInfo) -{ - ExclusiveZone zone( m_syncObject ); - m_aInfos.push_back(new TestInfo(_pTest, _sInfo)); -} - -std::string TestResultCollector::getInfo(Test *_pTest) -{ - for (TestInfos::const_iterator it = m_aInfos.begin(); - it != m_aInfos.end(); - ++it) - { - TestInfo *pInfo = *it; - Test *pTest = pInfo->getTest(); - if (pTest == _pTest) - { - std::string sInfo = pInfo->getString(); - return sInfo; - } - } - return std::string(); -} - - -} // namespace CppUnit - diff --git a/testshl2/source/cppunit/result/TestSucessListener.cpp b/testshl2/source/cppunit/result/TestSucessListener.cpp deleted file mode 100644 index d8f8268f09aa..000000000000 --- a/testshl2/source/cppunit/result/TestSucessListener.cpp +++ /dev/null @@ -1,50 +0,0 @@ -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - - -#include <testshl/result/TestSucessListener.h> - - - -namespace CppUnit -{ - - -TestSucessListener::TestSucessListener( SynchronizationObject *syncObject ) - : SynchronizedObject( syncObject ) - , m_sucess( true ) -{ -} - - -TestSucessListener::~TestSucessListener() -{ -} - - -void -TestSucessListener::reset() -{ - ExclusiveZone zone( m_syncObject ); - m_sucess = true; -} - - -void -TestSucessListener::addFailure( const TestFailure & ) -{ - ExclusiveZone zone( m_syncObject ); - m_sucess = false; -} - - -bool -TestSucessListener::wasSuccessful() const -{ - ExclusiveZone zone( m_syncObject ); - return m_sucess; -} - - -} // namespace CppUnit - diff --git a/testshl2/source/cppunit/result/TextTestResult.cpp b/testshl2/source/cppunit/result/TextTestResult.cpp deleted file mode 100644 index 2ad271ded7de..000000000000 --- a/testshl2/source/cppunit/result/TextTestResult.cpp +++ /dev/null @@ -1,194 +0,0 @@ -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <cppunit/Exception.h> -#include <cppunit/NotEqualException.h> -#include <cppunit/Test.h> -#include <cppunit/TestFailure.h> -#include <testshl/result/TextTestResult.h> -// #include <TextTestResult.h> -//!io #include <iostream> - -namespace CppUnit { - - -TextTestResult::TextTestResult(GetOpt& _aOptions) - :TestResult(_aOptions), - m_aResulter(this) -{ - addListener( &m_aResulter ); -} - - -void -TextTestResult::addFailure( const TestFailure &failure ) -{ - TestResult::addFailure( failure ); - // std::cerr << ( failure.isError() ? "E" : "F" ); - if (failure.isError()) - fprintf(stderr, "E"); - else - fprintf(stderr, "F"); -} - - -void -TextTestResult::startTest( Test *test ) -{ - TestResult::startTest (test); - // std::cerr << "."; - fprintf(stderr, "."); -} - -void TextTestResult::endTest( Test *test ) -{ - TestResult::endTest (test); -} - - -void -TextTestResult::printFailures( std::ostream &stream ) -{ - TestResultCollector::TestFailures::const_iterator itFailure = m_aResulter.failures().begin(); - int failureNumber = 1; - while ( itFailure != m_aResulter.failures().end() ) - { - stream << std::endl; - TestFailure *pFailure= (*itFailure++)->getTestFailure(); - printFailure( pFailure, failureNumber++, stream ); - } -} - - -void -TextTestResult::printFailure( TestFailure *failure, - int failureNumber, - std::ostream &stream ) -{ - printFailureListMark( failureNumber, stream ); - stream << ' '; - printFailureTestName( failure, stream ); - stream << ' '; - printFailureType( failure, stream ); - stream << ' '; - printFailureLocation( failure->sourceLine(), stream ); - stream << std::endl; - printFailureDetail( failure->thrownException(), stream ); - stream << std::endl; -} - - -void -TextTestResult::printFailureListMark( int failureNumber, - std::ostream &stream ) -{ - stream << failureNumber << ")"; -} - - -void -TextTestResult::printFailureTestName( TestFailure *failure, - std::ostream &stream ) -{ - Test* pTest = failure->failedTest(); - stream << "test: " << pTest->getName(); -} - - -void -TextTestResult::printFailureType( TestFailure *failure, - std::ostream &stream ) -{ - stream << "(" - << (failure->isError() ? "E" : "F") - << ")"; -} - - -void -TextTestResult::printFailureLocation( SourceLine sourceLine, - std::ostream &stream ) -{ - if ( !sourceLine.isValid() ) - return; - - stream << "line: " << sourceLine.lineNumber() - << ' ' << sourceLine.fileName(); -} - - -void -TextTestResult::printFailureDetail( Exception *thrownException, - std::ostream &stream ) -{ - if ( thrownException->isInstanceOf( NotEqualException::type() ) ) - { - NotEqualException *e = (NotEqualException*)thrownException; - stream << "expected: " << e->expectedValue() << std::endl - << "but was: " << e->actualValue(); - if ( !e->additionalMessage().empty() ) - { - stream << std::endl; - stream << "additional message:" << std::endl - << e->additionalMessage(); - } - } - else - { - stream << " \"" << thrownException->what() << "\""; - } -} - - -void -TextTestResult::print( std::ostream& stream ) -{ - printHeader( stream ); - stream << std::endl; - printFailures( stream ); -} - - -void -TextTestResult::printHeader( std::ostream &stream ) -{ - if (m_aResulter.wasSuccessful ()) - stream << std::endl << "OK (" << m_aResulter.runTests () << " tests)" - << std::endl; - else - { - stream << std::endl; - printFailureWarning( stream ); - printStatistics( stream ); - } -} - - -void -TextTestResult::printFailureWarning( std::ostream &stream ) -{ - stream << "!!!FAILURES!!!" << std::endl; -} - - -void -TextTestResult::printStatistics( std::ostream &stream ) -{ - stream << "Test Results:" << std::endl; - - stream << "Run: " << m_aResulter.runTests() - << " Failures: " << m_aResulter.testFailures() - << " Errors: " << m_aResulter.testErrors() - << std::endl; -} - - -std::ostream & -operator <<( std::ostream &stream, - TextTestResult &result ) -{ - result.print (stream); return stream; -} - - -} // namespace CppUnit diff --git a/testshl2/source/cppunit/result/emacsTestResult.cxx b/testshl2/source/cppunit/result/emacsTestResult.cxx deleted file mode 100644 index 4a4d57b6cee6..000000000000 --- a/testshl2/source/cppunit/result/emacsTestResult.cxx +++ /dev/null @@ -1,190 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdlib.h> - -#include <map> -#include <cppunit/Exception.h> -#include <cppunit/NotEqualException.h> -#include <cppunit/Test.h> -#include <cppunit/TestFailure.h> -#include <testshl/result/emacsTestResult.hxx> -// #include <TextTestResult.h> -//!io #include <iostream> -#include <string> - -#include <rtl/string.hxx> -#include "testshl/result/outputter.hxx" - -namespace CppUnit { - - emacsTestResult::emacsTestResult(GetOpt & _aOptions) - :TestResult(_aOptions), - m_aOptions(_aOptions), - m_aResulter(this) - { - addListener( &m_aResulter ); - } - - //# struct ltstr - //# { - //# bool operator()(const CppUnit::Test* p1, const CppUnit::Test* p2) const - //# { - //# return p1 < p2; - //# } - //# }; - //# typedef std::map<CppUnit::Test*, bool, ltstr> TestPtrList; - - void - emacsTestResult::print( Outputter& stream ) - { - printHeader( stream ); - // stream << std::endl; - // printFailures( stream ); - - // TestPtrList aFailedTests; - - for (TestResultCollector::TestFailures::const_iterator it2 = m_aResulter.failures().begin(); - it2 != m_aResulter.failures().end(); - ++it2) - { - TestFailureEnvelope *pEnvelop = *it2; - TestFailure *pFailure = pEnvelop->getTestFailure(); - std::string sNodeName = pEnvelop->getString(); - - // aFailedTests[ pFailure->failedTest() ] = true; - - printFailureLine(stream, pFailure, sNodeName); - } - - // only errors are from interest here - //# for (TestResultCollector::Tests::const_iterator it = m_aResulter.tests().begin(); - //# it != m_aResulter.tests().end(); - //# ++it) - //# { - //# TestEnvelope *pEnvelop = *it; - //# Test* pTest = pEnvelop->getTest(); - //# std::string sNodeName = pEnvelop->getString(); - //# - //# if (aFailedTests.find(pTest) == aFailedTests.end()) - //# { - //# std::string sInfo = m_aResulter.getInfo(pTest); - //# printTestLine(stream, pTest, sNodeName, sInfo); - //# } - //# } - stream << "Test #PASSED#" << Outputter::endl(); - } - - - void - emacsTestResult::printHeader( Outputter &stream ) - { - std::string sDate(m_aOptionHelper.createDateTag()); - stream << sDate << Outputter::endl(); - } - - void - emacsTestResult::printFailureLine( Outputter &stream, TestFailure *_pFailure, std::string const& _sNodeName) - { - std::string aName; - aName += _sNodeName; - aName += "."; - aName += _pFailure->failedTestName(); - - SourceLine aLine = _pFailure->sourceLine(); - sal_Int32 nLine = -1; - std::string sFilename; - if (aLine.isValid()) - { - nLine = aLine.lineNumber(); - sFilename = aLine.fileName(); - } - - Exception *pExp = _pFailure->thrownException(); - std::string sWhat; - if (pExp) - { - sWhat = pExp->what(); - } - - stream << sFilename; - stream << ":"; - stream << nLine; - stream << ":"; - - stream << aName; - stream << ";#FAILED#"; - // ErrorType::num eErr = _pFailure->getErrorType(); - //# if (isErr) - //# stream << "FAILED#;"; - //# else - //# stream << "ERROR#;"; - - stream << sWhat; - stream << Outputter::endl(); - } - - //# void - //# emacsTestResult::printTestLine( Outputter &stream, Test* _pTest, std::string const& _sNodeName, std::string const& _sInfo) - //# { - //# std::string aName; - //# aName += _sNodeName; - //# aName += "."; - //# aName += _pTest->getName(); - //# - //# stream << aName; - //# stream << ";"; - //# stream << _sInfo << "#"; - //# stream << "OK#"; - //# stream << std::endl; - //# } - - -//# void -//# emacsTestResult::printStatistics( Outputter &stream ) -//# { -//# stream << "Test Results:" << std::endl; -//# -//# stream << "Run: " << runTests() -//# << " Failures: " << testFailures() -//# << " Errors: " << testErrors() -//# << std::endl; -//# } - - - Outputter & - operator <<( Outputter &stream, - emacsTestResult &result ) - { - result.print (stream); return stream; - } - - -} // namespace CppUnit diff --git a/testshl2/source/cppunit/result/log.cxx b/testshl2/source/cppunit/result/log.cxx deleted file mode 100644 index 3279d1b2091e..000000000000 --- a/testshl2/source/cppunit/result/log.cxx +++ /dev/null @@ -1,122 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include "testshl/log.hxx" - -// #include <hash_map> -// #include <list> -// #include <set> - -using namespace std; - -::osl::FileBase::RC Log::open( sal_Bool append ) { - - ::osl::FileBase::RC ret; - - if ( ! append ) { - ret = ::osl::File::remove( m_logurl ); - } - - if( m_logfile->open( OpenFlag_Write ) == ::osl::FileBase::E_NOENT ) { - ret = m_logfile->open( OpenFlag_Write | OpenFlag_Create ); - } - else { - ret = m_logfile->setPos( Pos_End, 0 ); - } - return ret; -} - -::osl::FileBase::RC Log::write( const sal_Char* buf, sal_Bool v ) { - sal_uInt64 uBytes=0; - sal_uInt32 len = 0; - const sal_Char* ptr = buf; - - if( ptr ) { - while( *ptr++ ) len++; - } - - if ( v ) { - // cout << buf << flush; - printf("%s", buf); - } - return m_logfile->write( buf, len , uBytes ); -} - -::osl::FileBase::RC Log::write( const rtl::OString& buf, sal_Bool v ) { - sal_uInt64 uBytes=0; - if ( v ) { - // cout << buf.getStr() << flush; - printf("%s", buf.getStr()); - } - return m_logfile->write( buf.getStr(), buf.getLength(), uBytes ); -} -/* -// LLA: due to a problem with sal/OUStingBuffer getLength() which isn't const, this -// is so not compilable. -::osl::FileBase::RC Log::write( rtl::OStringBuffer const& buf, sal_Bool v ) { - sal_uInt64 uBytes=0; - if ( v ) { - cout << buf.getStr() << flush; - } - return m_logfile->write( buf.getStr(), buf.getLength(), uBytes ); -} -*/ -::osl::FileBase::RC Log::write( const rtl::OUString& buf, - rtl_TextEncoding tenc, sal_Bool v ) { - sal_uInt64 uBytes=0; - if ( ! tenc ) { - tenc = RTL_TEXTENCODING_ASCII_US; - } - rtl::OStringBuffer osbuf( - rtl::OUStringToOString( buf, tenc ).getStr() ); - - if ( v ) { - // cout << osbuf.getStr() << flush; - printf("%s", osbuf.getStr()); - } - return m_logfile->write( osbuf.getStr(), osbuf.getLength(), uBytes ); -} - -Log &operator <<( Log &_aLog, const sal_Char * _sValue ) -{ - _aLog.write(_sValue); return _aLog; -} -Log &operator <<( Log &_aLog, rtl::OString const& _sValue ) -{ - _aLog.write(_sValue); return _aLog; -} -Log &operator <<( Log &_aLog, rtl::OUString const& _sValue ) -{ - _aLog.write(_sValue); return _aLog; -} -//! Log &operator <<( Log &_aLog, rtl::OStringBuffer const& _sValue ) -//! { -//! _aLog.write(_sValue); return _aLog; -//! } diff --git a/testshl2/source/cppunit/result/makefile.mk b/testshl2/source/cppunit/result/makefile.mk deleted file mode 100644 index 59ff333726db..000000000000 --- a/testshl2/source/cppunit/result/makefile.mk +++ /dev/null @@ -1,79 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=testshl2 -TARGET=c5t_testresult -LIBTARGET=NO -ENABLE_EXCEPTIONS=TRUE -# ENABLE_RTTI=TRUE - -# --- Settings ----------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -# CXXFILES = \ -# querytemplate.cxx \ -# stringhelper.cxx - -# ENVCFLAGSCXX+=-DCPPUNIT_BUILD_DLL -SLOFILES = \ - $(SLO)$/SynchronizedObject.obj \ - $(SLO)$/TestResult.obj \ - $(SLO)$/TestResultCollector.obj \ - $(SLO)$/TestSucessListener.obj \ - $(SLO)$/emacsTestResult.obj \ - $(SLO)$/log.obj \ - $(SLO)$/optionhelper.obj \ - $(SLO)$/outputter.obj \ - $(SLO)$/signal.obj \ - $(SLO)$/testshlTestResult.obj \ - $(SLO)$/treswrapper.obj - -# currently unused -# $(SLO)$/TextTestResult.obj - -LIB1TARGET= $(LB)$/$(TARGET).lib -LIB1OBJFILES= $(SLOFILES) - -.IF "$(GUI)"=="WNT" -.IF "$(COM)"=="GCC" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF -.ENDIF - -.IF "$(GUI)" == "UNX" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - diff --git a/testshl2/source/cppunit/result/optionhelper.cxx b/testshl2/source/cppunit/result/optionhelper.cxx deleted file mode 100644 index 90096c8957e7..000000000000 --- a/testshl2/source/cppunit/result/optionhelper.cxx +++ /dev/null @@ -1,314 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include "testshl/result/optionhelper.hxx" -// #include <sstream> -// #include <string> -#include <osl/time.h> -#include "testshl/cmdlinebits.hxx" - -// ----------------------------------------------------------------------------- - -namespace -{ - void split( const rtl::OString& opt, - const rtl::OString& _sSeparator, - OStringList& optLine ) - { - optLine.clear(); - // const sal_Int32 cSetLen = cSet.getLength(); - sal_Int32 index = 0; - sal_Int32 oldIndex = 0; - - // sal_Int32 i; - // sal_Int32 j = 0; - while ( opt.getLength() > 0) - { - // for ( i = 0; i < cSetLen; i++ ) - // { - index = opt.indexOf( _sSeparator, oldIndex); - if( index != -1 ) - { - optLine.push_back( opt.copy( oldIndex, index - oldIndex ) ); - oldIndex = index + _sSeparator.getLength(); - } - // } - else // if (index == -1) - { - optLine.push_back( opt.copy( oldIndex ) ); - break; - } - } - } ///< split - - bool match(OStringList const& _aFilter, OStringList const& _aName) - { - OStringList::const_iterator aFilterIter = _aFilter.begin(); - OStringList::const_iterator aValueIter = _aName.begin(); - - bool bMatch = false; - - while (aFilterIter != _aFilter.end() && aValueIter != _aName.end()) - { - rtl::OString sFilter = *aFilterIter; - rtl::OString sName = *aValueIter; - - if (sFilter == sName) - { - bMatch = true; - ++aFilterIter; - ++aValueIter; - } - else if (sFilter == "*") - { - bMatch = true; - break; - } - else - { - // Filter does not match - bMatch = false; - break; - } - } - return bMatch; - } -} - -/* static */ -std::string OptionHelper::integerToAscii(sal_Int32 nValue) -{ - sal_Char cBuf[30]; - sal_Char *pBuf = cBuf; - sprintf(pBuf, "%d", static_cast<int>(nValue)); -//# std::ostringstream sBuf; -//# sBuf << nValue; -// rtl::OString sStr; -// sStr = rtl::OString::valueOf(nValue); - return std::string(pBuf); -} - -/* static */ -// if a given String is less then 2 char, add a "0" in front. -std::string OptionHelper::twoDigits(std::string const& _sValue) -{ - std::string sBack; - if (_sValue.length() == 0) - { - sBack = "00"; - } - else if (_sValue.length() == 1) - { - sBack = "0"; - sBack += _sValue; - } - else - { - sBack = _sValue; - } - return sBack; -} - - -std::string OptionHelper::createDateTag(std::string const& _sProjectId, std::string const& _sBuildId) -{ - TimeValue tmv_system; - TimeValue tmv_local; - oslDateTime dt; - osl_getSystemTime( &tmv_system ); - osl_getLocalTimeFromSystemTime(&tmv_system, &tmv_local); - osl_getDateTimeFromTimeValue( &tmv_local, &dt ); - - sal_Int32 nYear = dt.Year; - sal_Int32 nMonth = dt.Month; - sal_Int32 nDay = dt.Day; - - std::string sDate; - sDate = "# Current Time: "; - sDate += std::string(twoDigits(integerToAscii(dt.Hours))); - sDate += ":"; - sDate += std::string(twoDigits(integerToAscii(dt.Minutes))); - sDate += ":"; - sDate += std::string(twoDigits(integerToAscii(dt.Seconds))); - sDate += "\n"; - - sDate += "["; - - // sDate += rtl::OString::valueOf(nYear); - sDate.append(integerToAscii(nYear)); - sDate += "."; - if (nMonth < 10) - sDate += "0"; - // sDate += rtl::OString::valueOf(nMonth); - sDate.append(integerToAscii(nMonth)); - sDate += "."; - if (nDay < 10) - sDate += "0"; - // sDate += rtl::OString::valueOf(nDay); - sDate += std::string(integerToAscii(nDay)); - sDate += "/"; - sDate += _sProjectId; - sDate += "/"; - sDate += _sBuildId; - sDate += "]"; - - return sDate; -} - -//# rtl::OString createDateTag() -//# { -//# TimeValue tmv; -//# oslDateTime dt; -//# osl_getSystemTime( &tmv ); -//# osl_getDateTimeFromTimeValue( &tmv, &dt ); -//# -//# sal_Int32 nYear = dt.Year; -//# sal_Int32 nMonth = dt.Month; -//# sal_Int32 nDay = dt.Day; -//# -//# rtl::OString sDate("["); -//# sDate += rtl::OString::valueOf(nYear); -//# sDate += "."; -//# if (nMonth < 10) -//# sDate += "0"; -//# sDate += rtl::OString::valueOf(nMonth); -//# sDate += "."; -//# if (nDay < 10) -//# sDate += "0"; -//# sDate += rtl::OString::valueOf(nDay); -//# sDate += "//]"; -//# -//# return sDate; -//# } - -std::string OptionHelper::createDateTag() -{ - return createDateTag(m_sProjectId, m_sBuildId); -} - -bool OptionHelper::showErrors() -{ - bool bRetValue = true; // default, show all - if (m_aOption.hasOpt("-noerrors")) - { - bRetValue = false; - } - return bRetValue; -} - -bool OptionHelper::showTests() -{ - bool bRetValue = true; // default, show all - if (m_aOption.hasOpt("-onlyerrors")) - { - bRetValue = false; - } - return bRetValue; -} - -// Check which parameter is given for handle the jobs. -// If no parameter is given, all jobs (tests) will run through -void OptionHelper::handleJobs() -{ - // load job file, the file contains the functions which we only want to test. - if (m_aOption.hasOpt("-jobexclude")) - { - rtl::OString sJobFile = m_aOption.getOpt("-jobexclude"); - m_aJobExcludeList.readfile(sJobFile.getStr(), JOB_EXCLUDE_LIST); - } - - if (m_aOption.hasOpt("-jobonly")) - { - rtl::OString sJobFile = m_aOption.getOpt("-jobonly"); - m_aJobOnlyList.readfile(sJobFile.getStr(), JOB_ONLY_LIST); - } - - // - if (m_aOption.hasOpt("-jobfilter")) - { - rtl::OString sJobFilter = m_aOption.getOpt("-jobfilter"); - split(sJobFilter, ".", m_aJobFilter); - } -} - -// ----------------------------------------------------------------------------- -// Here will be decide, if a job/test will execute or not. -// therefore exist some lists, in which stay all jobs (positive list) or a list (negative list) which jobs should not execute -// or if only specific jobs should execute by a given filter - -bool OptionHelper::isAllowedToExecute(std::string const& _sNodeName, std::string const& _sName) -{ - std::string sJobName = _sNodeName + "." + _sName; - // t_print(T_VERBOSE, "Jobname %s\n", sJobName.c_str()); - if (isOnlyShowJobs()) // true, if parameter -onlyshowjob - { - m_aJobOnlyList.setJobListEntry(sJobName, JOB_ACCESS); - return false; - } - - if (m_aJobOnlyList.size()) // >0 if parameter -jobonly - { - if (m_aJobOnlyList.getJobListEntry(sJobName) != JOB_NOT_FOUND) - { - // job entry found, mark as accessed - m_aJobOnlyList.setJobListEntry(sJobName, JOB_ACCESS); - return true; - } - return false; - } - else if (m_aJobFilter.size() > 0) // >0 if parameter -jobfilter - { - OStringList aSplitName; - split(sJobName.c_str(), ".", aSplitName); - if (! match(m_aJobFilter, aSplitName)) - { - t_print(T_VERBOSE, "job: '%s' filtered by [-jobfilter]\n", sJobName.c_str()); - return false; - } - } - else if (m_aJobExcludeList.size() > 0) // >0 if parameter -jobexclude - { - if (m_aJobExcludeList.getJobListEntry(sJobName) != JOB_NOT_FOUND) - { - // job entry found, this job should not executed, so return false - t_print(T_VERBOSE, "job: '%s' filtered by [-jobexclude]\n", sJobName.c_str()); - return false; - } - // m_aJobOnlyList.setJobListEntry(sJobName, JOB_ACCESS); - return true; - } - else - { - //! not handled yet - } - - return true; -} - diff --git a/testshl2/source/cppunit/result/outputter.cxx b/testshl2/source/cppunit/result/outputter.cxx deleted file mode 100644 index 182b9db683e9..000000000000 --- a/testshl2/source/cppunit/result/outputter.cxx +++ /dev/null @@ -1,103 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -// -#include <string> -#include <sal/types.h> -#include "testshl/result/outputter.hxx" - -// ----------------------------------------------------------------------------- - -Outputter::~Outputter() -{ - // delete m_pLog; -} - -void Outputter::writeToAll(const sal_Char* _sCharStr) -{ - // std::cout << _sCharStr; - if (m_pStream) - { - *m_pStream << _sCharStr; - } - if (m_pLog.get()) - { - m_pLog->write(_sCharStr); - } -} - -void Outputter::write(const sal_Char* _sCharStr) -{ - writeToAll(_sCharStr); -} - -void Outputter::write(std::string const& _sStr) -{ - writeToAll(_sStr.c_str()); -} - -void Outputter::write(sal_Int32 _nValue) -{ - sal_Char cBuf[20]; - sal_Char* pBuf = cBuf; - sprintf(pBuf, "%d", SAL_STATIC_CAST(int, _nValue)); - writeToAll(pBuf); -} - -// ----------------------------------------------------------------------------- - -Outputter& operator <<( Outputter &_aStreamWrapper, const sal_Char* _sValue) -{ - _aStreamWrapper.write(_sValue); - return _aStreamWrapper; -} - -Outputter& operator <<( Outputter &_aStreamWrapper, std::string const& _sValue) -{ - _aStreamWrapper.write(_sValue); - return _aStreamWrapper; -} - -Outputter& operator <<( Outputter &_aStreamWrapper, sal_Int32 _nValue) -{ - _aStreamWrapper.write(_nValue); - return _aStreamWrapper; -} - -//# Outputter& operator <<( Outputter &_aStreamWrapper, double ) -//# { -//# return _aStreamWrapper; -//# } - -Outputter& operator <<( Outputter &_aStreamWrapper, Outputter::endl const&) -{ - _aStreamWrapper.write("\n"); - return _aStreamWrapper; -} diff --git a/testshl2/source/cppunit/result/signal.cxx b/testshl2/source/cppunit/result/signal.cxx deleted file mode 100644 index 7c96dcfe7589..000000000000 --- a/testshl2/source/cppunit/result/signal.cxx +++ /dev/null @@ -1,996 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#if (defined UNX) || (defined OS2) -#include <signal.h> -#include <errno.h> -#endif - -#include <fstream> -#include <vector> -#include <hash_map> - -#include <rtl/tres.h> -#include <rtl/string.hxx> - -#include "testshl/autoregisterhelper.hxx" -#include "testshl/getopt.hxx" -#include "signal.hxx" -#include <cppunit/tagvalues.hxx> -#include <testshl/taghelper.hxx> -#include <unistd.h> -#include "testshl/filehelper.hxx" -#include <testshl/result/TestResult.h> -#include "testshl/signaltest.h" -#include "cppunit/Exception.h" - -#ifdef WNT -#include "testshl/winstuff.hxx" -#endif - -// typedef std::vector<std::string> StringList; -// StringList sCurrentNodeName; -CppUnit::TestResult *pTestResult = NULL; -std::string sSignalFile; - -typedef std::hash_map< std::string, int > HashMap; -HashMap m_aSignalHash; -bool bSignalsCached = false; -bool bDoNotTouchSignalFile = false; - -// ----------------------------------------------------------------------------- - -// return 'true' if signalfile doesn't exist. -// else 'false' -bool existsSignalFile(std::string const& _sSignalFilename) -{ - FILE* pFile = fopen(_sSignalFilename.c_str(), "r"); - if (!pFile) - { - return false; - } - fprintf(stderr, "'%s' exists.\n", _sSignalFilename.c_str()); - fclose(pFile); - return true; -} - -// ----------------------------------------------------------------------------- -void createEmptySignalFile(std::string const& _sSignalFilename) -{ - FILE* pFile = fopen(_sSignalFilename.c_str(), "w"); - if (!pFile) - { - fprintf(stderr, "error: Could not create signal helper file %s for signal info.\n", _sSignalFilename.c_str()); - } - else - { - fprintf(pFile, "# This is an auto generated helper file for signal handling.\n"); - fprintf(pFile, "# An entry start by '#' is a comment.\n"); - fprintf(pFile, "# All other are test functions which have abort, before this line is removed.\n"); - fprintf(pFile, "# So you have to check this functions by hand.\n"); - - fclose(pFile); - } -} - -// ----------------------------------------------------------------------------- -/** get Current PID. -*/ -inline ::rtl::OUString getCurrentPID( ) -{ - //~ Get current PID and turn it into OUString; - sal_uInt32 nPID = 0; -#ifdef WNT - nPID = WinGetCurrentProcessId(); -#else - nPID = getpid(); -#endif - return ( ::rtl::OUString::valueOf( static_cast<long>(nPID ) ) ); -} -// ----------------------------------------------------------------------------- -static std::string integerToAscii(sal_uInt32 nValue) -{ - sal_Char cBuf[30]; - sal_Char *pBuf = cBuf; - sprintf(pBuf, "%d", static_cast<unsigned int>(nValue)); - return std::string(pBuf); -} -void my_sleep(int sec); - -// ----------------------------------------------------------------------------- -void setSignalFilename(GetOpt & opt) -{ - if (opt.hasOpt("-dntsf") || opt.hasOpt("-donottouchsignalfile")) - { - // special feature, for debugging, so the signal file will not manipulate. - // but create, if no one exist. - bDoNotTouchSignalFile = true; - } - - if (opt.hasOpt("-sf") || opt.hasOpt("-signalfile")) - { - if (opt.hasOpt("-sf")) - { - sSignalFile = opt.getOpt("-sf"); - } - else if (opt.hasOpt("-signalfile")) - { - sSignalFile = opt.getOpt("-signalfile"); - } - } - else - { - std::string sPath; - // std::string sPath(FileHelper::getTempPath()); - std::string sFilename("signalfile"); - std::string sFilenameExt(".txt"); - bool bCanQuitLoop = true; - do - { - -// #ifdef WNT -// sPath += "\\"; -// #endif -// #ifdef UNX -// sPath += "/"; -// #endif - sPath = sFilename; - // BUG: i72675 - // add "_12345" where 12345 is the current process ID - - TimeValue aTimeValue; - osl_getSystemTime(&aTimeValue); - - sPath += "_"; - sPath += integerToAscii(aTimeValue.Seconds); - // rtl::OUString suPID = getCurrentPID(); - // rtl::OString sPID = rtl::OUStringToOString(suPID, RTL_TEXTENCODING_ASCII_US); - // sPath += sPID.getStr(); - sPath += sFilenameExt; - bCanQuitLoop = true; - if (existsSignalFile(sPath)) - { - // there is already a signal file, wait a second, choose an other one. - my_sleep(1); - bCanQuitLoop = false; - } - } - while (!(bCanQuitLoop)); - - sSignalFile = sPath; - fprintf(stderr, "Use default signal file name '%s'\n", sSignalFile.c_str()); - } - - if (opt.hasOpt("-dnrmsf")) - { - fprintf(stderr, "'Don't remove signal file' (-dnrmsf) is set.\n"); - } - else - { - if (bDoNotTouchSignalFile == true) - { - fprintf(stderr, "warning: 'Don't touch signal file' parameter (-dntsf) is set, will not remove existing signal file.\n"); - } - else - { - // remove signalfile - createEmptySignalFile(sSignalFile); - } - } -} - -// ----------------------------------------------------------------------------- -bool doNotTouchSignalFile() { return bDoNotTouchSignalFile; } - -// ----------------------------------------------------------------------------- -std::string buildTestFunctionName(std::string const& _sName) -{ - std::string sName; - if (pTestResult) - { - sName = pTestResult->getNodeName(); - sName += "."; - } - -/* - for (StringList::const_iterator it = sCurrentNodeName.begin(); - it != sCurrentNodeName.end(); - ++it) - { - sName += *it; - sName += "."; - } -*/ - sName += _sName; - - return sName; -} -// ----------------------------------------------------------------------------- -// old: void executionPushName(std::string const& _sName) -// old: { -// old: sCurrentNodeName.push_back(_sName); -// old: } -// old: void executionPopName() -// old: { -// old: sCurrentNodeName.pop_back(); -// old: } -// old: - -// ----------------------------------------------------------------------------- -// ------------------------------ Signal Handling ------------------------------ -// ----------------------------------------------------------------------------- - -// std::string sLastTestFunctionName; - -std::string getSignalName(sal_Int32 nSignalNo); -// ----------------------------------------------------------------------------- - -std::string getSignalFilename() -{ - return sSignalFile; -} - -// ----------------------------------------------------------------------------- -// void storeNoSignal(std::string const& _sTestName) -// { - // sLastTestFunctionName = buildTestFunctionName(_sTestName); - // std::ofstream out(getSignalFilename().c_str(), std::ios::out); - // out << NO_SIGNAL << std::endl; // no signal! -// } - -void markSignalAsAlreadyDone(sal_Int32 _nSignalNo) -{ - // std::ofstream out(getSignalFilename().c_str(), std::ios::out | std::ios::app); - FILE *out = fopen(getSignalFilename().c_str(), "a"); - if (out != NULL) - { -//# out << "# the previous test function creates signal: " -//# << getSignalName(_nSignalNo) -//# << " (" -//# << _nSignalNo -//# << ")" << std::endl; -//# // out << sLastTestFunctionName << std::endl; // SIGNAL! - - fprintf(out, "# the previous test function creates signal: %s(%d)\n", getSignalName(_nSignalNo).c_str(), SAL_STATIC_CAST(int, _nSignalNo)); - // fprintf(out, "%s\n", sLastTestFunctionName ); - fclose(out); - } - else - { - fprintf(stderr, "error: Can't write signal info to file %s \n", getSignalFilename().c_str()); - } -} - -// ----------------------------------------------------------------------------- - -Signal hasSignaled(std::string const& _sTestName) -{ - // BACK: true: signal - // false: nothing - - if (bSignalsCached == true) - { - - if (m_aSignalHash.find(buildTestFunctionName(_sTestName)) != m_aSignalHash.end()) - { - return HAS_SIGNAL; - } - return NO_SIGNAL; - } - - std::ifstream in(getSignalFilename().c_str(), std::ios::in); - - // std::cout << "Check for signal" << std::endl; - std::string sLine, sLastLine; - while (std::getline(in, sLine)) - { - // std::cout << sTest << std::endl; - char ch = sLine[0]; - if (isspace(ch) == 0 && - sLine.size() > 0) - { - if (ch == '#') - { - if (sLastLine.size() > 0) - { - rtl::OString aStrLine(sLine.c_str()); - sal_Int32 nIdx = aStrLine.indexOf("(") + 1; - sal_Int32 nIdx2 = aStrLine.indexOf(")"); - sal_Int32 nSignalNo = 0; - if (nIdx > 0 && nIdx2 > 0) - { - rtl::OString sSignalNo = aStrLine.copy(nIdx, nIdx2 - nIdx); - nSignalNo = sSignalNo.toInt32(); - m_aSignalHash[sLastLine] = nSignalNo; - } - sLastLine.clear(); - } - } - else - { - // if (sTest == buildTestFunctionName(_sTestName)) - m_aSignalHash[sLine] = 1; - sLastLine = sLine; - // return HAS_SIGNAL; - } - } - } - - bSignalsCached = true; - return hasSignaled(_sTestName); - // return NO_SIGNAL; -} - -#ifdef UNX - -// ----------------------------------------------------------------------------- - -void release_signal_Handling(); - -//# void signalFunction(int value) -//# { -//# std::cout << "Signal caught: (" << value << "), please restart." << std::endl; -//# markSignalAsAlreadyDone(); -//# -//# release_signal_Handling(); -//# std::cout.flush(); -//# abort(); -//# } - -// ----------------------------------------------------------------------------- -extern "C" void SignalHandlerFunction(int _nSignalNo, siginfo_t *, void*) -{ - // std::cout << "Signal caught: " << getSignalName(_nSignalNo) << " (" << _nSignalNo << "), please restart." << std::endl; - fprintf(stderr, "Signal caught %s(%d)\n", getSignalName(_nSignalNo).c_str(), _nSignalNo); - markSignalAsAlreadyDone(_nSignalNo); - - release_signal_Handling(); - // std::cout.flush(); - abort(); -} - -// ----------------------------------------------------------------------------- -// This is a copy of the osl/signal.c code -#define ACT_IGNORE 1 -#define ACT_ABORT 2 -#define ACT_EXIT 3 -#define ACT_SYSTEM 4 -#define ACT_HIDE 5 - -extern "C" { -static struct SignalAction -{ - int Signal; - int Action; - void (*Handler)(int); -} Signals[] = -{ - { SIGHUP, ACT_IGNORE, NULL }, /* hangup */ - { SIGINT, ACT_EXIT, NULL }, /* interrupt (rubout) */ - { SIGQUIT, ACT_ABORT, NULL }, /* quit (ASCII FS) */ - { SIGILL, ACT_SYSTEM, NULL }, /* illegal instruction (not reset when caught) */ -/* changed from ACT_ABOUT to ACT_SYSTEM to try and get collector to run*/ - { SIGTRAP, ACT_ABORT, NULL }, /* trace trap (not reset when caught) */ -#if ( SIGIOT != SIGABRT ) - { SIGIOT, ACT_ABORT, NULL }, /* IOT instruction */ -#endif -// { SIGABRT, ACT_ABORT, NULL }, /* used by abort, replace SIGIOT in the future */ -#ifdef SIGEMT - { SIGEMT, ACT_SYSTEM, NULL }, /* EMT instruction */ -/* changed from ACT_ABORT to ACT_SYSTEM to remove handler*/ -/* SIGEMT may also be used by the profiler - so it is probably not a good - plan to have the new handler use this signal*/ -#endif - { SIGFPE, ACT_ABORT, NULL }, /* floating point exception */ - { SIGKILL, ACT_SYSTEM, NULL }, /* kill (cannot be caught or ignored) */ - { SIGBUS, ACT_ABORT, NULL }, /* bus error */ - { SIGSEGV, ACT_ABORT, NULL }, /* segmentation violation */ -#ifdef SIGSYS - { SIGSYS, ACT_ABORT, NULL }, /* bad argument to system call */ -#endif - { SIGPIPE, ACT_HIDE, NULL }, /* write on a pipe with no one to read it */ - { SIGALRM, ACT_EXIT, NULL }, /* alarm clock */ - { SIGTERM, ACT_EXIT, NULL }, /* software termination signal from kill */ - { SIGUSR1, ACT_SYSTEM, NULL }, /* user defined signal 1 */ - { SIGUSR2, ACT_SYSTEM, NULL }, /* user defined signal 2 */ - { SIGCHLD, ACT_SYSTEM, NULL }, /* child status change */ -#ifdef SIGPWR - { SIGPWR, ACT_IGNORE, NULL }, /* power-fail restart */ -#endif - { SIGWINCH, ACT_IGNORE, NULL }, /* window size change */ - { SIGURG, ACT_EXIT, NULL }, /* urgent socket condition */ -#ifdef SIGPOLL - { SIGPOLL, ACT_EXIT, NULL }, /* pollable event occured */ -#endif - { SIGSTOP, ACT_SYSTEM, NULL }, /* stop (cannot be caught or ignored) */ - { SIGTSTP, ACT_SYSTEM, NULL }, /* user stop requested from tty */ - { SIGCONT, ACT_SYSTEM, NULL }, /* stopped process has been continued */ - { SIGTTIN, ACT_SYSTEM, NULL }, /* background tty read attempted */ - { SIGTTOU, ACT_SYSTEM, NULL }, /* background tty write attempted */ - { SIGVTALRM, ACT_EXIT, NULL }, /* virtual timer expired */ - { SIGPROF, ACT_SYSTEM, NULL }, /* profiling timer expired */ -/*Change from ACT_EXIT to ACT_SYSTEM for SIGPROF is so that profiling signals do - not get taken by the new handler - the new handler does not pass on context - information which causes 'collect' to crash. This is a way of avoiding - what looks like a bug in the new handler*/ - { SIGXCPU, ACT_ABORT, NULL }, /* exceeded cpu limit */ - { SIGXFSZ, ACT_ABORT, NULL } /* exceeded file size limit */ -}; -} - -const int NoSignals = sizeof(Signals) / sizeof(struct SignalAction); - -#endif /* UNX */ - -// ----------------------------------------------------------------------------- -void init_signal_Handling(CppUnit::TestResult *_pResult) -{ - pTestResult = _pResult; -#ifdef UNX - -// signal(SIGSEGV, signalFunction); - // signal(SIGSEGV, signalFunction); - // signal(SIGFPE, signalFunction); - -// signal(1, signalFunction); - // struct sigaction action, oldaction; - // action.sa_sigaction = signalFunction2; - // action.sa_flags = SA_ONESHOT /* | SA_SIGINFO */; - - struct sigaction act; - struct sigaction oact; - - // act.sa_handler = SignalHandlerFunction; - act.sa_flags = SA_RESTART; - // act.sa_flags = SA_ONESHOT /* | SA_SIGINFO */; - act.sa_sigaction = SignalHandlerFunction; - - sigfillset(&(act.sa_mask)); - - /* Initialize the rest of the signals */ - for (int i = 0; i < NoSignals; i++) - { - if (Signals[i].Action != ACT_SYSTEM) - { - if (Signals[i].Action == ACT_HIDE) - { - struct sigaction ign; - - ign.sa_handler = SIG_IGN; - ign.sa_flags = 0; - sigemptyset(&ign.sa_mask); - - if (sigaction(Signals[i].Signal, &ign, &oact) == 0) - Signals[i].Handler = oact.sa_handler; - else - Signals[i].Handler = SIG_DFL; - } - else - if (sigaction(Signals[i].Signal, &act, &oact) == 0) - Signals[i].Handler = oact.sa_handler; - else - Signals[i].Handler = SIG_DFL; - } - } -#endif - - // ------------ signal helper file must exist ----------------- - FILE* pFile = fopen(getSignalFilename().c_str(), "r"); - if (!pFile) - { - createEmptySignalFile( getSignalFilename() ); - } - else - { - fclose(pFile); - } -} - -// ----------------------------------------------------------------------------- -void release_signal_Handling() -{ - // frees all signals -#ifdef UNX - int i; - struct sigaction act; - - act.sa_flags = 0; - sigemptyset(&(act.sa_mask)); - - /* Initialize the rest of the signals */ - for (i = NoSignals - 1; i >= 0; i--) - { - if (Signals[i].Action != ACT_SYSTEM) - { - act.sa_handler = Signals[i].Handler; - - sigaction(Signals[i].Signal, &act, NULL); - } - } -#endif -} - -// ----------------------------------------------------------------------------- -Signal signalCheck(CppUnit::TestResult* _pResult, std::string const& _sTestName) -{ - // BACK: HAS_SIGNAL: the test has already done and signaled - if (hasSignaled(_sTestName) == HAS_SIGNAL) - { - // std::cout << "The Test '" << buildTestFunctionName(_sTestName) << "' is marked as signaled." << std::endl; - std::string sTestFunctionName = buildTestFunctionName(_sTestName); - fprintf(stderr, "The Test '%s' is marked as signaled.\n", sTestFunctionName.c_str()); - if (_pResult) - { - CppUnit::SignalTest *pTest = new CppUnit::SignalTest(_sTestName); - - std::string sErrorText = "Function is marked as signaled: "; - sal_Int32 nSignalNo = m_aSignalHash[sTestFunctionName]; - sErrorText += getSignalName(nSignalNo); - sErrorText += " ("; - sErrorText += OptionHelper::integerToAscii(nSignalNo); - sErrorText += ")"; - - _pResult->addError(pTest, new CppUnit::SignalException(sErrorText), ErrorType::ET_SIGNAL); - } - return HAS_SIGNAL; - } - - // storeNoSignal(_sTestName); - return NO_SIGNAL; -} - -// ----------------------------------------------------------------------------- -bool copyFile(std::string const& _sFrom, std::string const& _sTo) -{ - bool bRetValue = false; - const int MAXBUFSIZE = 1024; - char buff[MAXBUFSIZE]; - FILE *in = fopen(_sFrom.c_str(), "r"); - if (in == NULL) - { - fprintf(stderr, "error: Can't open file %s for read to copy.\n", _sFrom.c_str()); - bRetValue = false; - } - else - { - FILE *out = fopen(_sTo.c_str(), "w"); - if (out == NULL) - { - fclose(in); - fprintf(stderr, "error: Can't open file %s for write to copy.\n", _sTo.c_str()); - bRetValue = false; - } - else - { - int nRealGot = 0; - while(!feof(in)) - { - nRealGot = fread(buff, sizeof(char), MAXBUFSIZE, in); - if (nRealGot > 0) - { - fwrite(buff, sizeof(char), nRealGot, out); - } - } - bRetValue = true; - fclose(out); - fclose(in); - } - } - return bRetValue; -} - -// ----------------------------------------------------------------------------- -void signalStartTest(std::string const& _sName) -{ - if (doNotTouchSignalFile()) return; - - // fprintf(stderr, "### signalStartTest!\n"); - // due to the fact, that functions are vicious, we write the name first. - // if it isn't vivious, than we removed it. - std::string sNewName = getSignalFilename(); - sNewName += ".bak"; - if (copyFile(getSignalFilename(), sNewName)) - { - // std::ofstream out(getSignalFilename().c_str(), std::ios::out | std::ios::app); - FILE *out = fopen(getSignalFilename().c_str(), "a"); - if (out != NULL) - { - // out << buildTestFunctionName(_sName) << std::endl; - fprintf(out, "%s\n", buildTestFunctionName(_sName).c_str()); - fclose(out); - } - else - { - fprintf(stderr, "error: Can't open file %s for append.\n", getSignalFilename().c_str()); - } - } - else - { - fprintf(stderr, "error: Can't copy signal helper from file %s to file %s, %d\n", getSignalFilename().c_str(), sNewName.c_str(), errno); - } -} - -// ----------------------------------------------------------------------------- -void signalEndTest() -{ - if (doNotTouchSignalFile()) return; - - // fprintf(stderr, "### signalEndTest!\n"); - if (0 != remove(getSignalFilename().c_str())) - { - fprintf(stderr, "error: Can't delete file %s\n", getSignalFilename().c_str()); - } - else - { - std::string sNewName = getSignalFilename(); - sNewName += ".bak"; - if (0 != rename(sNewName.c_str(), getSignalFilename().c_str())) - { - fprintf(stderr, "error: Can't rename file %s to file %s errno: %d\n", sNewName.c_str(), getSignalFilename().c_str(), errno); - } - } -} - -// ----------------------------------------------------------------------------- -void removeSignalFile(GetOpt & opt) -{ - // fprintf(stderr, "### remove signal file: '%s'\n", sSignalFile.c_str()); - if (opt.hasOpt("-dnrmsf")) - { - return; - } - if (bDoNotTouchSignalFile == true) - { - return; - } - remove(getSignalFilename().c_str()); -} - -// ----------------------------------------------------------------------------- - -sal_Int32 SignalHandlerA( TagHelper const& _aTagItems ) -{ - sal_Int32 nRetValue = 0; - TagData nTagType = _aTagItems.GetTagData(TAG_TYPE, 0); -// LLA: unused -// hTestResult hResult = (hTestResult) _aTagItems.GetTagData(TAG_RESULT_PTR, 0 /* NULL */ ); -// CppUnit::TestResult* pResult = (CppUnit::TestResult*)hResult; - - try - { - switch(nTagType) - { - // old: case SIGNAL_PUSH_NAME: - // old: { - // old: const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - // old: if (sName != NULL) - // old: signalPushName(sName); - // old: break; - // old: } - // old: - // old: case SIGNAL_POP_NAME: - // old: signalPopName(); - // old: break; - - // old: case SIGNAL_CHECK: - // old: { - // old: const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - // old: if (sName != NULL) - // old: { - // old: nRetValue = signalCheck(sName); - // old: } - // old: break; - // old: } - - // old: case INIT_SIGNAL_HANDLING: - // old: init_signal_Handling(); - // old: break; - // old: - // old: case RELEASE_SIGNAL_HANDLING: - // old: release_signal_Handling(); - // old: break; - - case SIGNAL_START_TEST: - { - // fprintf(stderr, "### SIGNAL_START_TEST!\n"); - const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - if (sName != NULL) - { - signalStartTest(sName); - } - break; - } - - case SIGNAL_END_TEST: - { - // fprintf(stderr, "### SIGNAL_END_TEST!\n"); - const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - if (sName != NULL) - { - signalEndTest(); - } - break; - } - - default: - fprintf(stderr, "error: SignalHandlerA: Can't handle the tag type %d\n", SAL_STATIC_CAST(int, nTagType)); - fflush(stderr); - // throw std::exception(/*std::string("Unknown TYPE_TAG Exception.")*/); - } - } - catch (std::exception &e) - { - fprintf(stderr, "error: SignalHandlerA: Exception caught: %s\n", e.what()); - fflush(stderr); - // throw e; - } - - return nRetValue; -} -// ----------------------------------------------------------------------------- -// This a little bit more abstract code, could be easier to modify or expand. - -sal_Int32 CheckExecution(CppUnit::TestResult* _pResult, std::string const& _sName) -{ - // more checks in the corresponding job lists - if (_pResult) - { - if (! _pResult->isAllowedToExecute(_sName)) - { - return DO_NOT_EXECUTE; - } - } - - // Check if the given test should be executed. - if (signalCheck(_pResult, _sName) == HAS_SIGNAL) - { - return DO_NOT_EXECUTE; - } - - return GO_EXECUTE; -} - -// ----------------------------------------------------------------------------- -sal_Int32 ExecutionA( TagHelper const& _aTagItems ) -{ - sal_Int32 nRetValue = 0; - TagData nTagType = _aTagItems.GetTagData(TAG_TYPE, 0); - hTestResult hResult = (hTestResult) _aTagItems.GetTagData(TAG_RESULT_PTR, 0 /* NULL */ ); - CppUnit::TestResult* pResult = (CppUnit::TestResult*)hResult; - - try - { - switch(nTagType) - { - case EXECUTION_CHECK: - { - const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - if (sName) - { - nRetValue = CheckExecution(pResult, sName); - if (nRetValue == GO_EXECUTE) - { - if (pResult && pResult->isOptionWhereAmI()) - { - printf("# This is: %s\n", buildTestFunctionName(sName).c_str()); - } - } - } - - break; - } - - // old: case EXECUTION_PUSH_NAME: - // old: { - // old: const char* sName = (const char*) _aTagItems.GetTagData(TAG_NODENAME); - // old: if (sName != NULL) - // old: executionPushName(sName); - // old: break; - // old: } - // old: - // old: case EXECUTION_POP_NAME: - // old: executionPopName(); - // old: break; - - case INIT_TEST: - init_signal_Handling(pResult); - break; - - case RELEASE_TEST: - release_signal_Handling(); - break; - - default: - fprintf(stderr, "ExceptionA: Can't handle the tag type %d\n", SAL_STATIC_CAST(int, nTagType)); - break; - } - } - catch (std::exception &e) - { - fprintf(stderr, "ExecutionA: exception caught: %s\n", e.what()); - fflush(stderr); - // throw e; - } - return nRetValue; -} - -// ----------------------------------------------------------------------------- -std::string getSignalName(sal_Int32 nSignalNo) -{ - std::string sValue; -#ifdef UNX - switch(nSignalNo) - { - case SIGHUP: - sValue = "SIGHUP"; - break; - - case SIGINT: - sValue = "SIGINT"; - break; - - case SIGQUIT: - sValue = "SIGQUIT"; - break; - - case SIGILL: - sValue = "SIGILL"; - break; - - case SIGTRAP: - sValue = "SIGTRAP"; - break; - -#if ( SIGIOT != SIGABRT ) - case SIGIOT: - sValue = "SIGIOT"; - break; -#endif -// case SIGABRT: -#ifdef SIGEMT - case SIGEMT: - sValue = "SIGEMT"; - break; -#endif - case SIGFPE: - sValue = "SIGFPE"; - break; - - case SIGKILL: - sValue = "SIGKILL"; - break; - - case SIGBUS: - sValue = "SIGBUS"; - break; - - case SIGSEGV: - sValue = "SIGSEGV"; - break; - -#ifdef SIGSYS - case SIGSYS: - sValue = "SIGSYS"; - break; -#endif - case SIGPIPE: - sValue = "SIGPIPE"; - break; - - case SIGALRM: - sValue = "SIGALRM"; - break; - - case SIGTERM: - sValue = "SIGTERM"; - break; - - case SIGUSR1: - sValue = "SIGUSR1"; - break; - - case SIGUSR2: - sValue = "SIGUSR2"; - break; - - case SIGCHLD: - sValue = "SIGCHLD"; - break; - -#ifdef SIGPWR - case SIGPWR: - sValue = "SIGPWR"; - break; -#endif - case SIGWINCH: - sValue = "SIGWINCH"; - break; - - case SIGURG: - sValue = "SIGURG"; - break; - -#ifdef SIGPOLL - case SIGPOLL: - sValue = "SIGPOLL"; - break; -#endif - case SIGSTOP: - sValue = "SIGSTOP"; - break; - - case SIGTSTP: - sValue = "SIGTSTP"; - break; - - case SIGCONT: - sValue = "SIGCONT"; - break; - - case SIGTTIN: - sValue = "SIGTTIN"; - break; - - case SIGTTOU: - sValue = "SIGTTOU"; - break; - - case SIGVTALRM: - sValue = "SIGVTALRM"; - break; - - case SIGPROF: - sValue = "SIGPROF"; - break; - - case SIGXCPU: - sValue = "SIGXCPU"; - break; - - case SIGXFSZ: - sValue = "SIGXFSZ"; - break; - - default: - sValue = "Unhandled Signal."; - } -#else - (void) nSignalNo; // unused -#endif - return sValue; -} - -// The following sets variables for GNU EMACS -// Local Variables: -// tab-width:4 -// End: diff --git a/testshl2/source/cppunit/result/signal.hxx b/testshl2/source/cppunit/result/signal.hxx deleted file mode 100644 index e3f448535014..000000000000 --- a/testshl2/source/cppunit/result/signal.hxx +++ /dev/null @@ -1,39 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef SIGNAL_HXX -#define SIGNAL_HXX - -#include <sal/types.h> - -#define HAS_SIGNAL 1 -#define NO_SIGNAL 0 - -typedef sal_Int32 Signal; - -#endif - diff --git a/testshl2/source/cppunit/result/testshlTestResult.cxx b/testshl2/source/cppunit/result/testshlTestResult.cxx deleted file mode 100644 index f80b999416ed..000000000000 --- a/testshl2/source/cppunit/result/testshlTestResult.cxx +++ /dev/null @@ -1,425 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdlib.h> - -#include <map> -#include <cppunit/Exception.h> -#include <cppunit/NotEqualException.h> -#include <cppunit/Test.h> -#include <cppunit/TestFailure.h> -#include <testshl/result/testshlTestResult.h> -// #include <TextTestResult.h> -//!io #include <iostream> -#include <string> - -#include <rtl/string.hxx> -#include "testshl/result/outputter.hxx" - -namespace CppUnit { - - testshlTestResult::testshlTestResult(GetOpt & _aOptions) - :TestResult(_aOptions), - m_aOptions(_aOptions), - // m_aOptionHelper(_aOptions), - m_aResulter(this) - { - addListener( &m_aResulter ); - } - - testshlTestResult::~testshlTestResult() - { - } - -//# void -//# testshlTestResult::addFailure( const TestFailure &failure ) -//# { -//# // TestResultCollector::addFailure( failure ); -//# // std::cerr << ( failure.isError() ? "E" : "F" ); -//# m_aResulter.addFailure(failure); -//# } -//# -//# -//# void -//# testshlTestResult::startTest( Test *test ) -//# { -//# // TestResultCollector::startTest (test); -//# m_aResulter.startTest(test); -//# // std::cerr << "."; -//# } -//# -//# void testshlTestResult::endTest( Test *test ) -//# { -//# } - -// ----------------------------------------------------------------------------- - -//# void -//# testshlTestResult::printFailures( Outputter &stream ) -//# { -//# TestFailures::const_iterator itFailure = failures().begin(); -//# int failureNumber = 1; -//# while ( itFailure != failures().end() ) -//# { -//# stream << std::endl; -//# printFailure( *itFailure++, failureNumber++, stream ); -//# } -//# } -//# -//# -//# void -//# testshlTestResult::printFailure( TestFailure *failure, -//# int failureNumber, -//# std::ostream &stream ) -//# { -//# printFailureListMark( failureNumber, stream ); -//# stream << ' '; -//# printFailureTestName( failure, stream ); -//# stream << ' '; -//# printFailureType( failure, stream ); -//# stream << ' '; -//# printFailureLocation( failure->sourceLine(), stream ); -//# stream << std::endl; -//# printFailureDetail( failure->thrownException(), stream ); -//# stream << std::endl; -//# } -//# -//# -//# void -//# testshlTestResult::printFailureListMark( int failureNumber, -//# std::ostream &stream ) -//# { -//# stream << failureNumber << ")"; -//# } -//# -//# -//# void -//# testshlTestResult::printFailureTestName( TestFailure *failure, -//# std::ostream &stream ) -//# { -//# Test* pTest = failure->failedTest(); -//# stream << "test: " << pTest->getName(); -//# } -//# -//# -//# void -//# testshlTestResult::printFailureType( TestFailure *failure, -//# std::ostream &stream ) -//# { -//# stream << "(" -//# << (failure->isError() ? "E" : "F") -//# << ")"; -//# } -//# -//# -//# void -//# testshlTestResult::printFailureLocation( SourceLine sourceLine, -//# std::ostream &stream ) -//# { -//# if ( !sourceLine.isValid() ) -//# return; -//# -//# stream << "line: " << sourceLine.lineNumber() -//# << ' ' << sourceLine.fileName(); -//# } -//# -//# -//# void -//# testshlTestResult::printFailureDetail( Exception *thrownException, -//# std::ostream &stream ) -//# { -//# if ( thrownException->isInstanceOf( NotEqualException::type() ) ) -//# { -//# NotEqualException *e = (NotEqualException*)thrownException; -//# stream << "expected: " << e->expectedValue() << std::endl -//# << "but was: " << e->actualValue(); -//# if ( !e->additionalMessage().empty() ) -//# { -//# stream << std::endl; -//# stream << "additional message:" << std::endl -//# << e->additionalMessage(); -//# } -//# } -//# else -//# { -//# stream << " \"" << thrownException->what() << "\""; -//# } -//# } - - -// LLA: output format: -// Header -// # -- BEGIN -// Error lines -// No error lines -// unknown lines -// # -- END -// Text 'Test #PASSED#' or 'Errors only' - -void -testshlTestResult::print( Outputter& stream ) -{ - printHeader( stream ); - // stream << std::endl; - // printFailures( stream ); - - bool bPassed = false; - if (isOnlyShowJobs()) - { - JobList jl(m_aOptionHelper.getJobOnlyList()); - HashMap aJobList = jl.getHashMap(); - printLines(stream, aJobList); - } - else - { - stream << "# -- BEGIN:" << Outputter::endl(); - - TestPtrList aFailedTests; - - // List of failures - printFailedTests(stream, aFailedTests); - - if (! m_aOptionHelper.getOptions().hasOpt("-onlyerrors")) - { - // List of well done tests - printTestLines(stream, aFailedTests); - - // List of unknown Tests - JobList jl(m_aOptionHelper.getJobOnlyList()); - HashMap aJobList = jl.getHashMap(); - printUnknownLines(stream, aJobList); - - bPassed = true; - } - stream << "# -- END:" << Outputter::endl(); - - if (bPassed) - { - stream << "Test #PASSED#" << Outputter::endl(); - } - - if (m_aOptionHelper.getOptions().hasOpt("-onlyerrors")) - { - stream << "Errors only." << Outputter::endl(); - } - } -} - -// ----------------------------------------------------------------------------- -void -testshlTestResult::printLines(Outputter &stream, HashMap & _aJobList) -{ - int nCount = _aJobList.size(); - if (nCount != 0) - { - for (HashMap::const_iterator it = _aJobList.begin(); - it != _aJobList.end(); - ++it) - { - std::string aKey = (*it).first; - if (_aJobList[aKey] == JOB_ACCESS) - { - stream << aKey; - stream << Outputter::endl(); - } - } - } -} - -void -testshlTestResult::printFailedTests(Outputter &stream, TestPtrList &aFailedTests) -{ - for (TestResultCollector::TestFailures::const_iterator it2 = m_aResulter.failures().begin(); - it2 != m_aResulter.failures().end(); - ++it2) - { - TestFailureEnvelope *pEnvelop = *it2; - TestFailure *pFailure = pEnvelop->getTestFailure(); - std::string sNodeName = pEnvelop->getString(); - - aFailedTests[ pFailure->failedTest() ] = true; - - printFailureLine(stream, pFailure, sNodeName); - } -} - -void -testshlTestResult::printTestLines(Outputter &stream, TestPtrList &aFailedTests) -{ - for (TestResultCollector::Tests::const_iterator it = m_aResulter.tests().begin(); - it != m_aResulter.tests().end(); - ++it) - { - TestEnvelope *pEnvelop = *it; - Test* pTest = pEnvelop->getTest(); - std::string sNodeName = pEnvelop->getString(); - - if (aFailedTests.find(pTest) == aFailedTests.end()) - { - std::string sInfo = m_aResulter.getInfo(pTest); - printTestLine(stream, pTest, sNodeName, sInfo); - } - } -} - -void -testshlTestResult::printUnknownLines(Outputter &stream, HashMap & _aJobList) -{ - int nCount = _aJobList.size(); - if (nCount != 0) - { - for (HashMap::const_iterator it = _aJobList.begin(); - it != _aJobList.end(); - ++it) - { - std::string aKey = (*it).first; - if (_aJobList[aKey] == JOB_UNKNOWN) - { - printUnknownLine(stream, aKey); - } - } - } -} - -void -testshlTestResult::printHeader( Outputter &stream ) -{ - std::string sDate(m_aOptionHelper.createDateTag()); - if (isOnlyShowJobs()) - { - stream << "# This is an automatically generated job file." << Outputter::endl(); - stream << "# "; - } - else - { - stream << sDate << Outputter::endl(); - } -} - -void -testshlTestResult::printFailureLine( Outputter &stream, TestFailure *_pFailure, std::string const& _sNodeName) -{ - std::string aName; - aName += _sNodeName; - aName += "."; - aName += _pFailure->failedTestName(); - - SourceLine aLine = _pFailure->sourceLine(); - sal_Int32 nLine = -1; - std::string sFilename; - if (aLine.isValid()) - { - nLine = aLine.lineNumber(); - sFilename = aLine.fileName(); - } - - Exception *pExp = _pFailure->thrownException(); - std::string sWhat; - if (pExp) - { - sWhat = pExp->what(); - } - - ErrorType::num eErr = _pFailure->getErrorType(); - - stream << aName; - stream << ";"; - - if (eErr == ErrorType::ET_FAILURE) - stream << "FAILED"; - - else if (eErr == ErrorType::ET_ERROR) - stream << "ERROR"; - - else if (eErr == ErrorType::ET_SIGNAL) - stream << "SIGNAL"; - - else - stream << "UNKNOWN"; - - stream << "#FAILED#"; - - stream << sWhat; - stream << Outputter::endl(); -} - -void -testshlTestResult::printTestLine( Outputter &stream, Test* _pTest, std::string const& _sNodeName, std::string const& _sInfo) -{ - std::string aName; - aName += _sNodeName; - aName += "."; - aName += _pTest->getName(); - - stream << aName; - stream << ";"; - stream << _sInfo << "#"; - if (_sInfo == "PASSED") - { - stream << "OK#"; - } - else - { - stream << "FAILED#"; - } - stream << Outputter::endl(); -} - -void -testshlTestResult::printUnknownLine( Outputter &stream, std::string const& _sTestName) -{ - stream << _sTestName; - stream << ";"; - stream << "UNKNOWN#"; - stream << "FAILED#"; - stream << Outputter::endl(); -} - -//# void -//# testshlTestResult::printStatistics( Outputter &stream ) -//# { -//# stream << "Test Results:" << std::endl; -//# -//# stream << "Run: " << runTests() -//# << " Failures: " << testFailures() -//# << " Errors: " << testErrors() -//# << std::endl; -//# } - - -Outputter & -operator <<( Outputter &stream, - testshlTestResult &result ) -{ - result.print (stream); return stream; -} - - -} // namespace CppUnit diff --git a/testshl2/source/cppunit/result/treswrapper.cxx b/testshl2/source/cppunit/result/treswrapper.cxx deleted file mode 100644 index 50d0b7f8ebfe..000000000000 --- a/testshl2/source/cppunit/result/treswrapper.cxx +++ /dev/null @@ -1,259 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <cstdarg> -#include <stdlib.h> -#include <stdio.h> - -#include <sal/types.h> -#include <cppunit/Test.h> -#include "testshl/autoregister/htestresult.h" -#include "cppunit/callbackfunc_fktptr.h" -#include "testshl/result/callbackfunc.h" -#include "testshl/result/TestResult.h" -#include <testshl/taghelper.hxx> - -#include <cppunit/tagvalues.hxx> - -namespace -{ - void TestResult_startTest(hTestResult _pResult, hTest _pTest) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - - std::string sName = pTest->getName(); - CallbackDispatch(0 /* NULL */, TAG_TYPE, SIGNAL_START_TEST, TAG_RESULT_PTR, _pResult, TAG_NODENAME, sName.c_str(), TAG_DONE); - - pResult->startTest(pTest); - } - - void TestResult_endTest( hTestResult _pResult, hTest _pTest ) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - pResult->endTest(pTest); - - std::string sName = pTest->getName(); - CallbackDispatch(0 /* NULL */, TAG_TYPE, SIGNAL_END_TEST, TAG_RESULT_PTR, _pResult, TAG_NODENAME, sName.c_str(), TAG_DONE); - } - -// ----------------------------------------------------------------------------- - - void TestResult_addFailure( hTestResult _pResult, hTest _pTest, hException _pException ) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - CppUnit::Exception* pException = (CppUnit::Exception*)_pException; - pResult->addFailure(pTest, pException); - } - - void TestResult_addError( hTestResult _pResult, hTest _pTest, hException _pException ) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - CppUnit::Exception* pException = (CppUnit::Exception*)_pException; - pResult->addError(pTest, pException); - } - - sal_Int32 TestResult_shouldStop(hTestResult _pResult) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - return pResult->shouldStop() == true ? 1 : 0; - } - -// ----------------------------------------------------------------------------- - void TestResult_addInfo( hTestResult _pResult, hTest _pTest, const char* _sInfo ) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - // CppUnit::Exception* pException = (CppUnit::Exception*)_pException; - pResult->addInfo(pTest, _sInfo); - } -// ----------------------------------------------------------------------------- - void TestResult_enterNode( hTestResult _pResult, const char* _sNode ) - { - // signalPushName(getName()); - // CallbackDispatch(NULL, TAG_TYPE, EXECUTION_PUSH_NAME, TAG_RESULT_PTR, _pResult, TAG_NODENAME, _sNode, TAG_DONE); - - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - // CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - // CppUnit::Exception* pException = (CppUnit::Exception*)_pException; - pResult->enterNode(_sNode); - } - void TestResult_leaveNode( hTestResult _pResult, const char* _sNode ) - { - CppUnit::TestResult* pResult = (CppUnit::TestResult*)_pResult; - // CppUnit::Test* pTest = (CppUnit::Test*)_pTest; - // CppUnit::Exception* pException = (CppUnit::Exception*)_pException; - pResult->leaveNode(_sNode); - - // CallbackDispatch(NULL, TAG_TYPE, EXECUTION_POP_NAME, TAG_RESULT_PTR, _pResult, TAG_DONE); - } - -// ----------------------------------------------------------------------------- - sal_Int32 TestResult_StarterA(TagHelper const& _aTagItems) - { - sal_Int32 nRetValue = 0; - TagData nTagType = _aTagItems.GetTagData(TAG_TYPE, 0); - hTestResult pResult = (hTestResult) _aTagItems.GetTagData(TAG_RESULT_PTR, 0 /* NULL */); - CppUnit::Test* pTest = (CppUnit::Test*) _aTagItems.GetTagData(TAG_TEST_PTR, 0 /* NULL */); - - try - { - switch(nTagType) - { - case RESULT_START: - TestResult_startTest(pResult, pTest); - break; - - case RESULT_END: - TestResult_endTest(pResult, pTest); - break; - - case RESULT_ADD_FAILURE: - { - hException pException = (hException) _aTagItems.GetTagData(TAG_EXCEPTION, 0); - TestResult_addFailure(pResult, pTest, pException); - break; - } - - case RESULT_ADD_ERROR: - { - hException pException = (hException) _aTagItems.GetTagData(TAG_EXCEPTION, 0); - TestResult_addError(pResult, pTest, pException); - break; - } - - case RESULT_ADD_INFO: - { - const char* pInfo = (const char* ) _aTagItems.GetTagData(TAG_INFO, 0); - TestResult_addInfo(pResult, pTest, pInfo); - break; - } - - case RESULT_ENTER_NODE: - { - const char* pNode = (const char* )_aTagItems.GetTagData(TAG_NODENAME, 0); - TestResult_enterNode(pResult, pNode); - break; - } - - case RESULT_LEAVE_NODE: - { - const char* pNode = (const char* ) _aTagItems.GetTagData(TAG_NODENAME, 0); - TestResult_leaveNode(pResult, pNode); - break; - } - - case RESULT_SHOULD_STOP: - nRetValue = TestResult_shouldStop(pResult); - break; - - default: - fprintf(stderr, "TestResult_StarterA: Can't handle the tag type %8x\n", SAL_STATIC_CAST(int, nTagType)); - fflush(stderr); - // throw std::exception(/*std::string("Unknown TYPE_TAG Exception.")*/); - } - } - catch (std::exception &e) - { - fprintf(stderr, "TestResult_StarterA: Exception caught: %s\n", e.what()); - // throw e; - } - - return nRetValue; - } -} // namespace anonymous - -// --------------------------------- Prototypes --------------------------------- - -sal_Int32 SignalHandlerA( TagHelper const& _aTagItems ); -sal_Int32 ExecutionA( TagHelper const& _aTagItems ); - -// ----------------------------------------------------------------------------- -long CallbackDispatch(int x, ...) -{ - (void) x; // avoid warning - - // The idea behind TagItems are from the Amiga OS. - // Due to the fact that the following code does not find my ok - // I decide to wrote a simple helper - // - // struct TagItem *tags = (struct TagItem *)&x + 1; - - TagHelper aTagItems; - - // the following code could also be in a #define, so other functions could - // use this, but at the moment this function a the only one. - - // FILL_TAGS(aTagItems, x); - std::va_list args; - va_start( args, x ); - Tag nTag; - do - { - nTag = va_arg(args, Tag); - if (nTag != TAG_DONE) - { - TagData nValue = va_arg(args, TagData); - // printf("Tag: %8x Value:%8x\n", nTag, nValue); - aTagItems.insert(nTag, nValue); - } - } while (nTag != TAG_DONE); - - va_end ( args ); - - // FILL_TAGS:END - - // printf(".\n"); - - long nRetValue = 0; - Tag nPreTag = aTagItems.GetTagData(TAG_TYPE); - if ( (nPreTag & TAG_RESULT) == TAG_RESULT) - { - nRetValue = TestResult_StarterA( aTagItems ); - } - else if ((nPreTag & TAG_SIGNAL) == TAG_SIGNAL) - { - nRetValue = SignalHandlerA(aTagItems); - } - else if (( nPreTag & TAG_EXECUTION) == TAG_EXECUTION) - { - nRetValue = ExecutionA(aTagItems); - } - else - { - fprintf(stderr, "CallbackDispatch: First tag is unknown %8x\n", SAL_STATIC_CAST(int, nPreTag)); - // unknown TAG_TYPE - } - return nRetValue; -} - diff --git a/testshl2/source/cppunit/signaltest.cxx b/testshl2/source/cppunit/signaltest.cxx deleted file mode 100644 index 0fbb24965699..000000000000 --- a/testshl2/source/cppunit/signaltest.cxx +++ /dev/null @@ -1,89 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <typeinfo> - -#include "testshl/signaltest.h" - -namespace CppUnit -{ - -/** Constructs a test case for a suite. - * This TestCase is intended for use by the TestCaller and should not - * be used by a test case for which run() is called. - **/ -SignalTest::SignalTest(std::string const& _sName) - : m_sName( _sName ) -{ -} - - -/// Destructs a test case -SignalTest::~SignalTest() -{ -} - - -/// Returns a count of all the tests executed -int -SignalTest::countTestCases() const -{ - return 1; -} - -/// We never need to start this -void SignalTest::run(hTestResult) {} - - -/// Returns the name of the test case -std::string -SignalTest::getName() const -{ - return m_sName; -} - - -/// Returns the name of the test case instance -std::string -SignalTest::toString() const -{ - std::string className; - -#if CPPUNIT_USE_TYPEINFO_NAME - const std::type_info& thisClass = typeid( *this ); - className = thisClass.name(); -#else - className = "SignalTest"; -#endif - - return className + "." + getName(); -} - -} // namespace CppUnit diff --git a/testshl2/source/cppunit/t_print.cxx b/testshl2/source/cppunit/t_print.cxx deleted file mode 100644 index 367a97602012..000000000000 --- a/testshl2/source/cppunit/t_print.cxx +++ /dev/null @@ -1,95 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <testshl/cmdlinebits.hxx> -#include <rtl/tres.h> -#include <osl/mutex.hxx> - -extern CmdLineBits st_nBits; - -sal_Bool isBit( CmdLineBits _nBits, CmdLineBits _nFlag ) -{ - return( ( _nBits & _nFlag ) == _nFlag ); -} - -// ----------------------------------------------------------------------------- -// ----------------------------- own printf method ----------------------------- -// ----------------------------------------------------------------------------- - -bool isVerbose() -{ - if ( isBit( st_nBits, rtl_tres_Flag_VERBOSE ) ) - { - return true; - } - return false; -} - -bool isQuiet() -{ - if ( isBit( st_nBits, rtl_tres_Flag_QUIET ) ) - { - return true; - } - return false; -} - -// ::osl::Mutex m_aTPrintMutex; - -void impl_t_print(const char* _pFormatStr, va_list &args) -{ - if (! isQuiet()) - { - // ::osl::MutexGuard g(m_aTPrintMutex); - printf("# "); - vprintf(_pFormatStr, args); - } -} - -void t_print(const char* _pFormatStr, ...) -{ - va_list args; - va_start( args, _pFormatStr ); - impl_t_print(_pFormatStr, args); - va_end( args ); -} - -void t_print(T_Print_Params _eType, const char* _pFormatStr, ...) -{ - if (_eType == T_VERBOSE && isVerbose()) - { - // if T_VERBOSE and we should be verbose, print info - va_list args; - va_start( args, _pFormatStr ); - impl_t_print(_pFormatStr, args); - va_end( args ); - } -} diff --git a/testshl2/source/cppunit/tresregister.cxx b/testshl2/source/cppunit/tresregister.cxx deleted file mode 100644 index b43f2925b2c5..000000000000 --- a/testshl2/source/cppunit/tresregister.cxx +++ /dev/null @@ -1,66 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <sal/types.h> -#include <testshl/autoregister/registerfunc.h> -#include <testshl/autoregister/callbackstructure.h> -#include <testshl/cmdlinebits.hxx> - -//! is this global CallbackStructure need? -CallbackStructure aGlobalStructure; -CmdLineBits st_nBits; - -FktPtr_CallbackDispatch pCallbackFunc = NULL; - -// This function is called from the TestShl tool. -extern "C" void SAL_CALL registerAllTestFunction(CallbackStructure* _pCallback) -{ - aGlobalStructure = *_pCallback; - - st_nBits = aGlobalStructure.nBits; - - pCallbackFunc = _pCallback->aCallbackDispatch; - FktRegFuncPtr pFunc = _pCallback->aRegisterFunction; - if (pFunc) - { - RegisterTestFunctions(pFunc); - } - else - { - // error, should be echoed - fprintf(stderr, "error: Callback Structure doesn't contain a test function ptr.\n"); - } - - // all is done, copy the magic value - // this is only a simple internal invariant check, - // if the called registerAllTestFunctions Function do, what we want. - _pCallback->nMagic2 = _pCallback->nMagic; -} diff --git a/testshl2/source/cppunit/tresstatewrapper.cxx b/testshl2/source/cppunit/tresstatewrapper.cxx deleted file mode 100644 index 580bb4dd1cf6..000000000000 --- a/testshl2/source/cppunit/tresstatewrapper.cxx +++ /dev/null @@ -1,166 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -// this functions build the wrapper, to handle old function calls to rtl_tres_state -// IMPORTANT: Due to the fact that rtl_tres_state is in the sal.lib -// you have to rename rtl_tres_state to c_rtl_tres_state -// -// return c_rtl_tres_state -// ( -// hRtlTestResult, -// pData->length == 0 && -// ! *pData->buffer, -// "New OString containing no characters", -// "ctor_001" -// ) - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include "cppunit/Test.h" -#include "testshl/autoregister/htestresult.h" -#include "cppunit/callbackfunc_fktptr.h" -#include "cppunit/TestAssert.h" -#include "testshl/checkboom.hxx" - -#define LOAD_TRESSTATEWRAPPER_LOCAL -#include "testshl/tresstatewrapper.hxx" -#undef LOAD_TRESSTATEWRAPPER_LOCAL - -#include "cppunit/tagvalues.hxx" -#include "cppunit/externcallbackfunc.hxx" - -// ----------------------------------------------------------------------------- -// Wrapper class for the CppUnit::Test, because the new TestResult -// expect a CppUnit::Test interface - -class WrappedTest : public CppUnit::Test -{ - std::string m_sName; -public: - WrappedTest(std::string const& _sName) - :m_sName(_sName){} - - virtual ~WrappedTest () {} - virtual void run (hTestResult /*pResult*/){} - virtual int countTestCases () const {return 1;} - virtual std::string getName () const {return m_sName;} - virtual std::string toString () const {return "WrappedTest";} -}; - -// ----------------------------------------------------------------------------- -rtl_tres_state_start::rtl_tres_state_start(hTestResult _aResult, const sal_Char* _pName) - :m_pName(_pName), - m_aResult(_aResult) -{ - // (pTestResult_EnterNode)(m_aResult, m_pName); - (pCallbackFunc)( 0 /* NULL */, TAG_TYPE, RESULT_ENTER_NODE, TAG_RESULT_PTR, m_aResult, TAG_NODENAME, m_pName, TAG_DONE); -} -rtl_tres_state_start::~rtl_tres_state_start() -{ - // (pTestResult_LeaveNode)(m_aResult, m_pName); - (pCallbackFunc)(0 /* NULL */, TAG_TYPE, RESULT_LEAVE_NODE, TAG_RESULT_PTR, m_aResult, TAG_NODENAME, m_pName, TAG_DONE); -} - -// --------------------------------- C-Wrapper --------------------------------- -typedef std::vector<rtl_tres_state_start*> rtl_tres_states; -rtl_tres_states m_StateStack; - -extern "C" void c_rtl_tres_state_start(hTestResult _aResult, const sal_Char* _pName) -{ - rtl_tres_state_start* pState = new rtl_tres_state_start(_aResult, _pName); - m_StateStack.push_back(pState); -} - -extern "C" void c_rtl_tres_state_end(hTestResult, const sal_Char*) -{ - rtl_tres_state_start* pState = m_StateStack.back(); - - delete pState; - m_StateStack.pop_back(); -} -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- -// ----------------------------------------------------------------------------- - -// ----------------------------------------------------------------------------- -// ------------------------- Wrapper for rtl_tres_state ------------------------- -// ----------------------------------------------------------------------------- - -sal_Bool SAL_CALL c_rtl_tres_state( - hTestResult pResult, - sal_Bool bSuccess, - char const * pTestMsg, - char const * pFuncName) -{ - CppUnit::Test* pTest = new WrappedTest(pFuncName); - - sal_Int32 nValue = (pCallbackFunc)(0 /* NULL */, TAG_TYPE, EXECUTION_CHECK, TAG_RESULT_PTR, pResult, TAG_NODENAME, pTest->getName().c_str(), TAG_DONE); - if (nValue == DO_NOT_EXECUTE) - { - return false; - } - - // This code is copied from CppUnit::TestCase and less adapted, to work with the - // old test code. - // (pTestResult_StartTest)(pResult, pTest); - (pCallbackFunc)(0 /* NULL */, TAG_TYPE, RESULT_START, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_DONE); - - try - { - CPPUNIT_ASSERT_MESSAGE( pTestMsg, bSuccess ? true : false ); - // (pTestResult_AddInfo)(pResult, pTest, "#PASSED#"); - (pCallbackFunc)(0 /* NULL */, TAG_TYPE, RESULT_ADD_INFO, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_INFO, "PASSED", TAG_DONE); - } - catch ( CppUnit::Exception &e ) - { - CppUnit::Exception *copy = e.clone(); - // (pTestResult_AddFailure)( pResult, pTest, copy ); - (pCallbackFunc)( 0 /* NULL */, TAG_TYPE, RESULT_ADD_FAILURE, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_EXCEPTION, copy, TAG_DONE ); - } - catch ( std::exception &e ) - { - //(pTestResult_AddError)( pResult, pTest, new CppUnit::Exception( e.what() ) ); - (pCallbackFunc)( 0 /* NULL */, TAG_TYPE, RESULT_ADD_ERROR, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_EXCEPTION, new CppUnit::Exception( e.what() ), TAG_DONE ); - } - catch (...) - { - CppUnit::Exception *e = new CppUnit::Exception( "caught unknown exception" ); - // (pTestResult_AddError)( pResult, pTest, e ); - (pCallbackFunc)( 0 /* NULL */, TAG_TYPE, RESULT_ADD_ERROR, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_EXCEPTION, e, TAG_DONE ); - } - - - // (pTestResult_EndTest)( pResult, pTest ); - (pCallbackFunc)( 0 /* NULL */, TAG_TYPE, RESULT_END, TAG_RESULT_PTR, pResult, TAG_TEST_PTR, pTest, TAG_DONE ); - - return bSuccess; -} - diff --git a/testshl2/source/cppunit/win32/makefile.mk b/testshl2/source/cppunit/win32/makefile.mk deleted file mode 100644 index a7f7f037b738..000000000000 --- a/testshl2/source/cppunit/win32/makefile.mk +++ /dev/null @@ -1,60 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=..$/..$/.. - -PRJNAME=testshl2 -TARGET=c5t_winstuff -LIBTARGET=NO -ENABLE_EXCEPTIONS=TRUE - -# --- Settings ----------------------------------------------------- -.INCLUDE : settings.mk - -# ------------------------------------------------------------------ - -SLOFILES = \ - $(SLO)$/winstuff.obj - -#------------------------------------------------------------------------------- -# This is a static lib -LIB1TARGET= $(LB)$/$(TARGET).lib -LIB1OBJFILES= \ - $(SLOFILES) - -.IF "$(GUI)"=="WNT" -.IF "$(COM)"=="GCC" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF -.ENDIF - -.IF "$(GUI)" == "UNX" -LIB1ARCHIV=$(LB)$/lib$(TARGET)$(DLLPOSTFIX).a -.ENDIF - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk diff --git a/testshl2/source/cppunit/win32/winstuff.cxx b/testshl2/source/cppunit/win32/winstuff.cxx deleted file mode 100644 index f9ffa0c5c972..000000000000 --- a/testshl2/source/cppunit/win32/winstuff.cxx +++ /dev/null @@ -1,140 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#ifdef WIN32 -#include "testshl/winstuff.hxx" - -#if defined _MSC_VER -#pragma warning(push, 1) -#endif -#include <windows.h> -#if defined _MSC_VER -#pragma warning(pop) -#endif -#include <MAPIWin.h> - -void WinDebugBreak() -{ - // forward to WinAPI. Note that the whole story is simply to - // disentangle OOo headers from Windows headers (which are largely - // incompatible, due to name clashes and macro mess-ups) - DebugBreak(); -} - -void WinSleep( sal_uInt32 sec ) -{ - Sleep(sec * 1000); -} - -sal_uInt32 WinGetCurrentProcessId() -{ - return GetCurrentProcessId(); -} - -#define TA_FAILED 0 -#define TA_SUCCESS_CLEAN 1 -#define TA_SUCCESS_KILL 2 -#define TA_SUCCESS_16 3 - - // Declare Callback Enum Functions. -bool CALLBACK TerminateAppEnum( HWND hwnd, LPARAM lParam ); - -/*---------------------------------------------------------------- - DWORD WINAPI TerminateApp( DWORD dwPID, DWORD dwTimeout ) - - Purpose: - Shut down a 32-Bit Process (or 16-bit process under Windows 95) - - Parameters: - dwPID - Process ID of the process to shut down. - - dwTimeout - Wait time in milliseconds before shutting down the process. - - Return Value: - TA_FAILED - If the shutdown failed. - TA_SUCCESS_CLEAN - If the process was shutdown using WM_CLOSE. - TA_SUCCESS_KILL - if the process was shut down with - TerminateProcess(). - NOTE: See header for these defines. - ----------------------------------------------------------------*/ -void WinTerminateApp( sal_uInt32 dwPID, sal_uInt32 dwTimeout ) -{ - HANDLE hProc; - DWORD dwRet; - - // If we can't open the process with PROCESS_TERMINATE rights, - // then we give up immediately. - hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, false, - dwPID); - - if(hProc == NULL) - return; - - // TerminateAppEnum() posts WM_CLOSE to all windows whose PID - // matches your process's. - EnumWindows((WNDENUMPROC)TerminateAppEnum, (LPARAM) dwPID); - - // Wait on the handle. If it signals, great. If it times out, - // then you kill it. - if (WaitForSingleObject(hProc, dwTimeout) != WAIT_OBJECT_0) - dwRet= (TerminateProcess(hProc,0) ? TA_SUCCESS_KILL : TA_FAILED); - else - dwRet = TA_SUCCESS_CLEAN; - - CloseHandle(hProc); -} - -bool CALLBACK TerminateAppEnum( HWND hwnd, LPARAM lParam ) -{ - DWORD dwID; - - GetWindowThreadProcessId(hwnd, &dwID); - - if(dwID == (DWORD)lParam) - { - PostMessage(hwnd, WM_CLOSE, 0, 0); - } - - return true; -} -#else - -// this file is only need within Windows. -// due to the fact that empty files don't create libraries -// we store one function in it. -int WinStuffDummy_this_function_will_never_need() -{ - return 42; // we need some code -} - -#endif /* WIN32 */ - diff --git a/testshl2/source/dynamicregister.cxx b/testshl2/source/dynamicregister.cxx deleted file mode 100644 index 8253fbcb5449..000000000000 --- a/testshl2/source/dynamicregister.cxx +++ /dev/null @@ -1,207 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include "testshl/dynamicregister.hxx" -#include <osl/process.h> -// #include <osl/mutex.hxx> -#include <rtl/string.hxx> -#include <rtl/ustring.hxx> -#include "testshl/filehelper.hxx" - -#include <unistd.h> - -#if defined(WIN32) -#include <direct.h> /* w.g. _chdir() */ -#endif - -namespace fixes -{ - int changedir(const char* _sPath) - { -#if defined(WIN32) - // chdir(_sPath) is marked depricated since Visual C++ 2005 - // use _chdir instead - return ::_chdir(_sPath); -#else - return ::chdir(_sPath); -#endif - } -} - -// ----------------------------------------------------------------------------- - -DynamicLibraryHelper::DynamicLibraryHelper(rtl::OUString const& _suDLLName, GetOpt & _aOptions) - :m_pModule(new ::osl::Module()), - m_suDLLName(_suDLLName), - m_aOptions(_aOptions) -{ - // create and load the module (shared library) - m_suAbsolutePathFile = FileHelper::convertPath( _suDLLName ); - - // due to some problems on mac OS - // we split the absolute pathname to path and filename - // change to the path and load the filename direct - // then change back to the old path. - rtl::OUString suPathSeparator = rtl::OUString( rtl::OUString::createFromAscii("/")); - sal_Int32 nPos = m_suAbsolutePathFile.lastIndexOf(suPathSeparator); - if (nPos != -1) - { - m_suAbsolutePath = m_suAbsolutePathFile.copy(0, nPos); - m_suFilename = m_suAbsolutePathFile.copy(nPos + 1); - } - else - { - // Should never happen. - rtl::OString sPath = rtl::OUStringToOString(m_suAbsolutePathFile, RTL_TEXTENCODING_ASCII_US); - fprintf(stderr, "There is a problem with path '%s'.\n", sPath.getStr()); - exit(1); - } - - if (getOptions().hasOpt("-absolutepath")) - { - fprintf(stderr, "Hint: Use absolute path to load test library.\n"); - loadLibraryFromAbsolutePath(); - } - else if (getOptions().hasOpt("-localpath")) - { - fprintf(stderr, "Hint: make a chdir() to the test library, then try to load the test library without given path.\n"); - loadLibraryFromLocalPath(); - } - else - { - -// PLEASE DON'T CHANGE THIS STUPID STRUCTURE, JUST ADD YOUR ENVIRONMENT -#if defined(LINUX) - loadLibraryFromAbsolutePath(); - // will fail if load local - -#elif defined(SOLARIS) - loadLibraryFromAbsolutePath(); - // will also be right if load local - -#elif defined(WIN32) - loadLibraryFromAbsolutePath(); - // will fail if load local - -#elif defined(MACOSX) - loadLibraryFromLocalPath(); - // will fail if local absolute -#else - // default is load absolute - loadLibraryFromAbsolutePath(); -#endif -} -} - -void DynamicLibraryHelper::showFilenameIfVerbose() -{ - if (getOptions().hasOpt("-verbose")) - { - rtl::OString sFilename = rtl::OUStringToOString(m_suFilename, RTL_TEXTENCODING_ASCII_US); - rtl::OString sPath = rtl::OUStringToOString(m_suAbsolutePath, RTL_TEXTENCODING_ASCII_US); - fprintf(stderr, "Try to load '%s' from '%s'.\n", sFilename.getStr(), sPath.getStr()); - - // check filename - } -} - -void DynamicLibraryHelper::realLoadLibrary(rtl::OUString const& _suLibToLoad) -{ - if (! m_pModule->load(_suLibToLoad, SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL)) - { - rtl::OString sDLLName = rtl::OUStringToOString(m_suDLLName, RTL_TEXTENCODING_ASCII_US); - fprintf(stderr, "warning: Can't load module '%s'.\n", sDLLName.getStr()); - } -} - -void DynamicLibraryHelper::loadLibraryFromAbsolutePath() -{ - showFilenameIfVerbose(); - realLoadLibrary(m_suAbsolutePathFile); -} - -void DynamicLibraryHelper::loadLibraryFromLocalPath() -{ - sal_Int32 nPos; - rtl::OUString suPathSeparator = rtl::OUString( rtl::OUString::createFromAscii("/")); -#if defined(WIN32) - suPathSeparator = rtl::OUString( rtl::OUString::createFromAscii("\\")); -#endif - rtl::OUString suSystemPathFile; - osl::FileBase::getSystemPathFromFileURL(m_suAbsolutePathFile, suSystemPathFile); - - nPos = suSystemPathFile.lastIndexOf(suPathSeparator); - rtl::OUString suCurrentDirPath; - if (nPos != -1) - { - // the filename only, no '/' in the path - rtl::OUString suNewPath = suSystemPathFile.copy(0, nPos ); - if (suNewPath.getLength() > 0) - { - rtl::OString sPath = rtl::OUStringToOString(suNewPath, RTL_TEXTENCODING_ASCII_US); - osl_getProcessWorkingDir( &suCurrentDirPath.pData ); - - fixes::changedir(sPath.getStr()); - - // curNewDirPath should be suPath, small self test - rtl::OUString curNewDirPath; - osl_getProcessWorkingDir( &curNewDirPath.pData ); - if (! curNewDirPath.equals(m_suAbsolutePath)) - { - fprintf(stderr, "There is a problem with path '%s'.\n", sPath.getStr()); - } - } - } - - showFilenameIfVerbose(); - realLoadLibrary(m_suFilename); - - // change back to old directory - if (suCurrentDirPath.getLength() > 0) - { - rtl::OString sCurrentDirPath = rtl::OUStringToOString(suCurrentDirPath, RTL_TEXTENCODING_ASCII_US); - fixes::changedir(sCurrentDirPath.getStr()); - } -} - -DynamicLibraryHelper::~DynamicLibraryHelper() -{ - if (getOptions().hasOpt("-verbose")) - { - fprintf(stderr, "Dtor DynamicLibraryHelper.\n"); - fprintf(stderr, "Delete loaded module."); - } - delete m_pModule; - if (getOptions().hasOpt("-verbose")) - { - fprintf(stderr, " [done].\n"); - } -} - diff --git a/testshl2/source/file.cxx b/testshl2/source/file.cxx deleted file mode 100644 index ca7ec3ad79f4..000000000000 --- a/testshl2/source/file.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <string> - -// ----------------------------------------------------------------------------- -// taken from setup2 -std::string getTempPath() -{ - std::string sTempDir; - - char* pTmp = getenv( "TEMP" ); - if (pTmp == NULL) pTmp = getenv("temp"); - if (pTmp == NULL) pTmp = getenv("TMP"); - if (pTmp == NULL) pTmp = getenv("tmp"); - - if( pTmp && strlen(pTmp) >= 2 ) - { - sTempDir = std::string( pTmp ); - } - else - { -#if (defined UNX) || (defined OS2) - int nLen; - pTmp = P_tmpdir; - nLen = strlen(pTmp); - if (pTmp[ nLen - 1] == '/') - { - char cBuf[256]; - char* pBuf = cBuf; - strncpy( pBuf, pTmp, nLen - 1 ); - pBuf[nLen - 1] = '\0'; - sTempDir = std::string( pBuf ); - } - else - { - sTempDir = std::string( pTmp ); - } -#else - fprintf(stderr, "error: No temp dir found.\n"); -#endif - } - return sTempDir; -} diff --git a/testshl2/source/filehelper.cxx b/testshl2/source/filehelper.cxx deleted file mode 100644 index ef2d78dd99ee..000000000000 --- a/testshl2/source/filehelper.cxx +++ /dev/null @@ -1,228 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> -#include <string> - -#include "testshl/filehelper.hxx" -#include "testshl/getopt.hxx" - -#include <osl/process.h> -#include <osl/file.hxx> - -#ifndef _SAL_TRES_H_ -#include <rtl/tres.h> -#endif - -namespace FileHelper -{ -// ----------------------------------------------------------------------------- -// taken from setup2 -std::string getTempPath() -{ - std::string sTempDir; - - char const * pTmp = getenv( "TEMP" ); - if (pTmp == NULL) pTmp = getenv("temp"); - if (pTmp == NULL) pTmp = getenv("TMP"); - if (pTmp == NULL) pTmp = getenv("tmp"); - - if( pTmp && strlen(pTmp) >= 2 ) - { - sTempDir = std::string( pTmp ); - } - else - { -#if (defined UNX) || (defined OS2) - int nLen; - pTmp = P_tmpdir; - nLen = strlen(pTmp); - if (pTmp[ nLen - 1] == '/') - { - char cBuf[256]; - char* pBuf = cBuf; - strncpy( pBuf, pTmp, nLen - 1 ); - pBuf[nLen - 1] = '\0'; - sTempDir = std::string( pBuf ); - } - else - { - sTempDir = std::string( pTmp ); - } -#else - fprintf(stderr, "error: No temp dir found.\n"); -#endif - } - return sTempDir; -} - -// ----------------------------------------------------------------------------- -rtl::OUString convertPath( rtl::OUString const& _suSysPath ) -{ - // PRE: String should contain a filename, relativ or absolut - rtl::OUString suURL; - bool bRelativ = false; -#ifdef WNT - sal_Char cFileSep[] = "\\"; -#endif -#if (defined UNX) || (defined OS2) - sal_Char cFileSep[] = "/"; -#endif - - if ( _suSysPath.indexOf(rtl::OUString::createFromAscii("..")) == 0 ) - { - bRelativ = true; - } - else if ( _suSysPath.indexOf(rtl::OUString::createFromAscii(cFileSep)) != 0 ) - { - // no fileseparator found at first position found, must be relative - bRelativ = true; - } - - if (bRelativ) - { - // filepath contains '..' so it's a relative path make it absolut. - rtl::OUString curDirPth; - osl_getProcessWorkingDir( &curDirPth.pData ); - - // rtl::OString sCurDirPath = rtl::OUStringToOString(curDirPth, RTL_TEXTENCODING_ASCII_US); - // fprintf(stderr, "Current Dir '%s'.\n", sCurDirPath.getStr()); - - osl::FileBase::getAbsoluteFileURL( curDirPth, _suSysPath, suURL ); - - // rtl::OString sURL = rtl::OUStringToOString(suURL, RTL_TEXTENCODING_ASCII_US); - // fprintf(stderr, " File URL: '%s'.\n", sURL.getStr()); - } - else - { - osl::FileBase::getFileURLFromSystemPath( _suSysPath, suURL ); - } - return suURL; -} -// ----------------------------------------------------------------------------- -rtl::OUString convertPath( rtl::OString const& sysPth ) -{ - rtl::OUString sysPath( rtl::OUString::createFromAscii( sysPth.getStr() ) ); - return convertPath(sysPath); -} - -/** - * create bitmap of comandline parameters - */ - -//# CmdLineBits createFlags( vector< sal_Char* > const& cmdln ) -//# { -//# CmdLineBits retflags = rtl_tres_Flag_OK; -//# -//# vector< sal_Char* >::const_iterator iter = cmdln.begin(); -//# while( iter != cmdln.end() ) -//# { -//# fprintf( stderr, "%s\n", *iter ); -//# if ( *iter[0] == '-' ) -//# { -//# rtl::OString item( *iter ); -//# if ( item == "-boom" ) // stop near error position, exception only -//# retflags |= rtl_tres_Flag_BOOM; -//# -//# if ( item == "-verbose" ) -//# retflags |= rtl_tres_Flag_VERBOSE; -//# -//# if ( item == "-skip" ) -//# retflags |= rtl_tres_Flag_SKIP; -//# -//# if ( item == "-log" ) -//# retflags |= rtl_tres_Flag_LOG; -//# -//# if ( item == "-his" ) -//# retflags |= rtl_tres_Flag_HIS; -//# -//# if ( item == "-time" ) -//# retflags |= rtl_tres_Flag_TIME; -//# -//# if ( item == "-msg" ) -//# retflags |= rtl_tres_Flag_MSG; -//# } -//# iter++; -//# } -//# -//# return retflags; -//# } -//# -//# CmdLineBits createFlags(int argc, char* argv[]) -//# { -//# vector< sal_Char* > cmdln; -//# sal_Int32 i; -//# -//# /* collect comandline */ -//# for ( i = 1; i < argc; i++ ) -//# cmdln.push_back( argv[i] ); -//# -//# return createFlags(cmdln); -//# } - -CmdLineBits createFlags( GetOpt & _aOptions ) -{ - CmdLineBits retflags = rtl_tres_Flag_OK; - - if (_aOptions.hasOpt("-boom")) // stop near error position, exception only - { - retflags |= rtl_tres_Flag_BOOM; - } - - if (_aOptions.hasOpt("-verbose")) - { - retflags |= rtl_tres_Flag_VERBOSE; - } - - if (_aOptions.hasOpt("-quiet")) - { - retflags |= rtl_tres_Flag_QUIET; - } - return retflags; -} -// ----------------------------------------------------------------------------- - -/** - * display usage screen - */ - -//# void usage() -//# { -//# fprintf( stdout, -//# "USAGE: testshl shlname [-boom][-verbose][-log][-his][-msg]\n" ); -//# exit(0); -//# } - - -} // namespace FileHelper - - diff --git a/testshl2/source/getopt.cxx b/testshl2/source/getopt.cxx deleted file mode 100644 index 844a151276e1..000000000000 --- a/testshl2/source/getopt.cxx +++ /dev/null @@ -1,919 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" -#include "testshl/getopt.hxx" - -#include "testshl/filehelper.hxx" - -using namespace std; -//---------------------------------------------------------------------------- -// OptDsc -//---------------------------------------------------------------------------- -//> createOptDsc -void OptDsc::createOptDsc( const rtl::OString& opt ) { - - // analyze type of option - // in case of flag indicate and set name and hint - if ( ( opt.indexOf("=") == -1 ) && ( opt.indexOf(":") == -1 ) ) { - m_type = OT_BOOL; - - // extract options dokumentation if any - sal_Int32 index = opt.indexOf(","); - if ( index == -1 ) { - m_name = opt; - } - else { - m_name = opt.copy( 0, index ); - m_hint = ( opt.copy( index + 1 ) ).trim(); - } - return; - } - - vector < rtl::OString > optLine; - - // ':' indicates that option has optional parameter(s) - if ( opt.indexOf(":") != -1 ) { - m_type |= OT_OPTIONAL; - // create optionline tokenvector - split( opt, ":,", optLine ); - } - else { - // create optionline tokenvector - split( opt, "=,", optLine ); - } - - // extract name of option - m_name = optLine[0]; - - // parameter(s) of string type - if ( optLine[1].indexOf("s") != -1 ) { - m_type |= OT_STRING; - m_legend += "arg"; - } - // parameter(s) of numeric type - if ( optLine[1].indexOf("n") != -1 ) { - m_type |= OT_NUMBER; - m_legend += "arg"; - } - // multiple parameters allowed - if ( optLine[1].indexOf("@") != -1 ) { - m_type |= OT_MULTI; - m_legend += "#1,[arg#n]"; - } - else { - m_type |= OT_SINGLE; - } - - // extract options dokumentation if any - m_hint = optLine[optLine.size()-1].trim(); - -} ///< createOptDsc - -//> split -void OptDsc::split( const rtl::OString& opt, const rtl::OString& cSet, - vector< rtl::OString >& optLine ) { - - const sal_Int32 cSetLen = cSet.getLength(); - const sal_Char* pcSet = cSet.getStr(); - sal_Int32 index = 0; - sal_Int32 oldIndex = 0; - - sal_Int32 i; - for ( i = 0; i < cSetLen; i++ ) { - index = opt.indexOf( pcSet[i] ); - if( index != -1 ) { - optLine.push_back( opt.copy( oldIndex, index - oldIndex ) ); - oldIndex = index + 1; - } - } - optLine.push_back( opt.copy( oldIndex ) ); -} ///< split - -//---------------------------------------------------------------------------- -// GetOpt -//---------------------------------------------------------------------------- -//> ~GetOpt -GetOpt::~GetOpt() { - vector< OptDsc* >::iterator iter = m_optionset.begin(); - while ( iter != m_optionset.end() ) { - delete (*iter); - (*iter) = 0; - iter++; - } - m_optionset.clear(); -} ///< ~GetOpt - -/** - * private - * initialization of GetOpt class means to fill the vector members - * representing the commandline and optionset - * @param char* cmdLine[] = comandline - * @param char* optSet[] = optionset - * - * @return void - */ -//> initialize -void GetOpt::initialize( char* cmdLine[], char const * optSet[] ) { - - while ( *cmdLine ) { - m_cmdline.push_back( rtl::OString( *cmdLine ) ); - *cmdLine++; - } - // insert an empty OString, to mark the end. - m_cmdline.push_back(rtl::OString()); - - while ( *optSet && ( rtl::OString( optSet[0] ).indexOf("-") == 0 ) ) { - m_optionset.push_back( new OptDsc( *optSet ) ); - *optSet++; - } - -} ///< initialize - -/** - * public - * returns a pointer to an object of type optiondescription (OptDsc) - * - * @param rtl::OString& opt = name of option - * - * @return OptDsc* = pointer to requested optiondescription - * or NULL if not found - */ -//> getOptDsc -OptDsc* GetOpt::getOptDsc( rtl::OString& opt ) { - - vector< OptDsc* >::iterator iter = m_optionset.begin(); - while ( iter != m_optionset.end() ) { - if ( (*iter)->getName() == opt ) { - return (*iter); - } - iter++; - } - return NULL; - -} ///< getOptDsc - -/** - * public - * check if option is already present in optionhash - * @param const rtl::OString& opt = name of option - * @return sal_Bool - */ -//> hasOpt -sal_Bool GetOpt::hasOpt( const rtl::OString& opt ) const { - - if ( m_opthash.find( opt ) != m_opthash.end() ) { - return sal_True ; - } - return sal_False ; - -} ///< hasOpt - -/** - * private - * handles the initialized comandline vector - * and fill the optionhash with evaluated options - * @param none - * @return void - */ -//> createCmdLineOptions -void GetOpt::createCmdLineOptions() { - - // get iterator of comandline vector - vector< rtl::OString >::iterator iter = m_cmdline.begin(); - - // extract first comandlineparameter as program name - m_prgname = (*iter); - iter++; - - // process the whole vector - while ( iter != m_cmdline.end() ) { - // extract following comandline parameter(s) as program parameter(s) - // int nIdxOfMinus = (*iter).indexOf("-"); - if ( (*iter).indexOf("-") != 0 ) /* start without '-' */ - { - if ((*iter).getLength() > 0 ) /* is not empty */ - { - m_param.push_back(*iter); - } - iter++; - continue; - } - // option occured - if ( (*iter).indexOf("-") == 0 ) - { - // ignore invalid options - if ( ! evaluateOpt( iter ) ) - { - iter++; - // check if wrong option has got a parameter - // and skip that, too - if( (iter + 1) != m_cmdline.end() ) - { - if ( (*(iter + 1)).indexOf("-") != 0 ) - { - iter++; - } - } - continue; - } - rtl::OString opt( (*iter) ); - vector< rtl::OString > optValues; - - // option is no flag - if ( ! getOptDsc( opt )->isFlag() ) { - // but has optional parameters - if ( getOptDsc( opt )->isOptional() ) { - // no parameters present - if ( ! hasParam( iter ) ) { - m_opthash[ opt ] = optValues; - optValues.clear(); - iter++; - continue; - } - } - iter++; - // more than one option parameters occured - if ( (*iter).indexOf( "," ) != -1 ) { - tokenize( (*iter), "," , optValues ); - } - else { - optValues.push_back( (*iter) ); - } - } - // create key/value pair in optionhash and clear value vector - m_opthash[ opt ] = optValues; - optValues.clear(); - } - iter++; - } -} ///< createCmdLineOptions - -/** - * public - * check if option has parameter(s) - * @param vector< rtl::OString >::iterator iter = iterator of - * comandline vector - * - * @return sal_Bool - */ -//> hasParam -sal_Bool GetOpt::hasParam( vector< rtl::OString >::iterator iter ) { - if ( iter+1 == m_cmdline.end() ) { - return sal_False; - } - if ( (*(iter+1)).indexOf("-") == 0 ) { - return sal_False; - } - if ( (*(iter+1)) == "" ) { - return sal_False; - } - - return sal_True; -} ///< hasParam - -/** - * public - * option evaluation in general means to verify if the option occur is - * a member of optionset say an admitted option, if so does it appear with - * the right or tolerable usage - * - * @param vector< rtl::OString >::iterator iter = iterator of - * comandline vector - * - * @return sal_Bool - */ -//> evaluateOpt -sal_Bool GetOpt::evaluateOpt( vector< rtl::OString >::iterator iter ) { - - // option is no member of optionset - if ( ! exist( (*iter) ) ) { - cout << "Unknown option " << (*iter).getStr() - << " occurred !" << endl; - return sal_False; - } - - // option is a flag - if ( getOptDsc( (*iter) )->isFlag() ) { - return sal_True; - } - - // parameter not optional - if ( ! getOptDsc( (*iter) )->isOptional() ) { - - // verify that next vectoritem is present and no option - if ( ( *( iter + 1 ) ).getLength() && - ( ( *( iter + 1 ) ).indexOf( "-" ) != 0 ) ) { - - // if we are waiting for one single parameter - if ( getOptDsc( *iter )->isSingle() ) { - // but find multiple parameters - if( ( *( iter + 1 ) ).indexOf(",") != -1 ) { - cout << "Wrong use of option " << (*iter).getStr() - << " too many parameters !" << endl; - return sal_False; - } - return sal_True; - } - return sal_True; - } - - cout << "Wrong use of option " << (*iter).getStr() - << " parameter missing !" << endl; - return sal_False; - } - // parameter optional - if ( getOptDsc( *iter )->isSingle() ) { - - if ( hasParam( iter ) ) { - if( ( *( iter + 1 ) ).indexOf(",") != -1 ) { - cout << "Wrong use of option " << (*iter).getStr() - << " too many parameters !" << endl; - return sal_False; - } - } - } - return sal_True; - -} ///< evaluateOpt - - -//> createOpt -void GetOpt::createOpt( rtl::OString& optDscStr ) { - m_optionset.push_back( new OptDsc( optDscStr ) ); -} ///< createOpt - -/** - * public - * conditional addition of an option to optionhash - * overriding options, already present in optionhash, is not permitted - * - * @param rtl::OString& optStr = optionstring which is to break in a - * key/value pair and to add to optionhash - * - * @return void - */ -//> addOpt -void GetOpt::addOpt( rtl::OString& optStr, sal_Bool eval ) { - - vector< rtl::OString > optTok; - tokenize( optStr, "=", optTok ); - - // prevent override of commandline options - // by options from ini file - if( hasOpt( optTok[0] ) ) { - return; - } - - // evaluate rigth usage of option - if( eval ) { - if ( ! evaluateOpt( optTok.begin() ) ) { - return; - } - } - vector< rtl::OString > optValues; - - if ( optTok.size() > 1 ) { - rtl::OString oValStr( optTok[1] ); - // found a variable - if ( oValStr.indexOf(",") == -1 ) { - optValues.push_back( oValStr ); - } - else { - tokenize( oValStr, ",", optValues ); - } - } - m_opthash[ optTok[0] ] = optValues; - optValues.clear(); - return; -} ///< addOpt - -/** - * public - * verify the existance of an option in optionset - * @param rtl::OString& opt = option name - * @return sal_Bool - */ -//> exist -sal_Bool GetOpt::exist( rtl::OString& opt ) { - if ( getOptDsc( opt ) ) { - return sal_True; - } - return sal_False; -} ///< exist - -/** - * public - * verify the existance of variables inside options - * @param none - * @return sal_Bool - */ -//> hasVars -sal_Bool GetOpt::hasVars() { - if ( m_varvec.size() ) { - return sal_True; - } - return sal_False; -} ///< hasVars - - -/** - * public - * proceeds a buffer representing the content of an ini file and adds the - * options to optionhash. The optionstrings in the file are allowed to contain - * variables indicated by delimiters described with varDelim - * - * @param rtl::OString iOpts = raw filecontent - * @param const rtl::OString& varDelim = delimiter indicating a variable - * - * @return void - */ -//> str2Opt -void GetOpt::str2Opt( rtl::OString iOpts ) { - - // tokenize filecontent by '\n' to create a vector of lines - vector< rtl::OString > iniLines; - tokenize( iOpts, "\n", iniLines ); - - sal_uInt32 tCnt = iniLines.size(); - - // process all lines - sal_uInt32 i; - for ( i = 1; i < tCnt; i++ ) { - rtl::OString optLine( iniLines[i] ); - // ignore comments - if ( ! ( optLine.indexOf("#") == 0 ) ) { - // filter valid options after trim - if ( ( optLine.indexOf("-") == 0 ) ) { - // line contains a variable - if ( ( optLine.indexOf( m_vardelim ) != -1 ) ) { - // push to var vector for later process - m_varvec.push_back( optLine ); - continue; - } - addOpt( optLine ); - } - } - } -} ///< str2opt - -void GetOpt::replVars() { - - // process vector of lines containing variables - vector< rtl::OString >::iterator iter = m_varvec.begin(); - while ( iter != m_varvec.end() ) { - sal_Int32 index = 0; - while ( ( index = (*iter).indexOf( m_vardelim ) ) != -1 ) { - vector< rtl::OString > varLineTok; - rtl::OString varKey( "-" ); - tokenize( *iter, m_vardelim, varLineTok ); - varKey += varLineTok[1]; - vector< rtl::OString > keyValues = getOptVec( varKey ); - - if ( keyValues.size() > 1 ) { - rtl::OString rplStr; - - vector< rtl::OString >::iterator kvi = keyValues.begin(); - while ( kvi != keyValues.end() ) { - rplStr += (*kvi); - kvi++; - if ( kvi != keyValues.end() ) { - rplStr += ","; - } - } - (*iter ) = (*iter).replaceAt( - index, varKey.getLength()+1, rplStr ); - } - else { - if( *(keyValues[0])) { - (*iter) = (*iter).replaceAt( - index, varKey.getLength()+1, keyValues[0] ); - } - } - } - addOpt( (*iter) ); - iter++; - } - -} - -/** - * public - * displays a formatted usagescreen - * @param none - * @return void - */ -//> showUsage -void GetOpt::showUsage() { - - sFormat frm; - frm.fCol = getMaxNameLength() + 2; - frm.sCol = frm.fCol + getMaxLegendLength() + 2 ; - frm.len = 79; - - vector< rtl::OString > nameVec; - vector< rtl::OString > paramVec; - - tokenize( getName(), "/\\", nameVec ); - if ( m_param.empty() ) { - if ( hasOpt( "-db" ) ) { - tokenize( getOpt( "-db" ), "/\\", paramVec ); - } - else { - paramVec.push_back( rtl::OString( "not available" ) ); - } - } - else { - tokenize( getFirstParam(), "/\\", paramVec ); - } - - cout << "\n\n\n\n\nUsage: prgname param [options]\n\nPRGNAME = [path]"; - - if ( !nameVec.empty() ) { - cout << (*(nameVec.end()-1)).getStr(); - } - cout << "\nPARAM = [path]"; - if ( !paramVec.empty() ) { - cout << (*(paramVec.end()-1)).getStr() << endl; - } - - cout << "\nOPTIONS = [" << flush; - - vector< OptDsc* >::iterator iter = m_optionset.begin(); - - while ( iter != m_optionset.end() ) { - cout << (*iter)->getName().getStr() << "," << flush; - iter++; - } - cout << "]\n\nOPTIONS:\n" << flush; - - iter = m_optionset.begin(); - - while ( iter != m_optionset.end() ) { - cout << optDsc2Str( *iter, frm ).getStr() << endl << flush; - - iter++; - } - -} ///< showUsage - -/** - * public - * displays the actual option/parameter status - * @param none - * @return void - */ -//> printStatus -void GetOpt::printStatus( void ) { - - sal_uInt32 maxlen = getMaxNameLength(); - optHashMap::iterator iter = m_opthash.begin(); - cout << endl; - - while ( iter != m_opthash.end() ) { - rtl::OString option( (*iter).first ); - - cout.setf(ios::left); - cout.width( maxlen+1 ); - cout << option.getStr() << "= "; - - if ( ! getOptDsc( option )->isFlag() ) { - if ( ! getOptVec( option ).empty() ) { - sal_uInt32 j; - for ( j = 0; j < (*iter).second.size(); j++ ) { - cout << (( (*iter).second )[j]).getStr() << " "; - } - cout << endl; - } - else { - cout << "FALSE\n"; - } - } - else { - cout << "TRUE\n"; - } - iter++; - } -} - -/** - * private - * converts an object of type optiondescription (OptDsc) to a formatted - * displayable string for usagescreen needs - * @param OptDsc* optDsc = pointer to option description - * @param sFormat frm = format structur - * - * @return const rtl::OString = formatted string for display purposes - */ -//> optDsc2Str >>> to be replaced by intelliget algorythm <<< -const rtl::OString GetOpt::optDsc2Str( OptDsc* optDsc , sFormat frm ) { - - sal_Char* buf = new sal_Char[ frm.len + 1 ]; - sal_Char* pBuf = buf; - - sal_uInt32 i; - for ( i = 0; i < frm.len; i++ ) { - *pBuf++ = ' '; - } - *pBuf = '\0'; - - rtl::OStringBuffer strBuf( buf ); - rtl::OString oStr = strBuf.makeStringAndClear(); - - oStr = oStr.replaceAt( 0, optDsc->getName().getLength(), - optDsc->getName() ); - if ( optDsc->isOptional() ) { - oStr = oStr.replaceAt( frm.fCol-1, 1, "[" ); - } - oStr = oStr.replaceAt( frm.fCol, optDsc->getLegend().getLength(), - optDsc->getLegend() ); - if ( optDsc->isOptional() ) { - oStr = oStr.replaceAt( frm.fCol + optDsc->getLegend().getLength() , - 1, "]" ); - } - if ( ( frm.sCol + optDsc->getHint().getLength() ) >= frm.len ) { - - oStr = oStr.replaceAt( frm.sCol, frm.len - frm.sCol, - optDsc->getHint() ); - } - else { - oStr = oStr.replaceAt( frm.sCol, - optDsc->getHint().getLength(), optDsc->getHint() ); - } - - delete [] buf; - - return oStr; - -} ///< optDsc2Str - -/** - * private - * returns the maximum length of all optionnames for format purposes - * @param none - * @return sal_uInt32 length of longest optionname - */ -//> getMaxNameLength -sal_uInt32 GetOpt::getMaxNameLength() { - - sal_Int32 len = 0; - vector< OptDsc* >::iterator iter = m_optionset.begin(); - - while ( iter != m_optionset.end() ) { - if( len < (*iter)->getName().getLength() ){ - len = (*iter)->getName().getLength(); - } - iter++; - } - return len; -} ///< getMaxNameLength - -/** - * private - * returns the maximum length of all option legends for format purposes - * @param none - * @return sal_uInt32 length of longest optionlegend - */ -//> getMaxLegendLength -sal_uInt32 GetOpt::getMaxLegendLength() { - - sal_Int32 len = 0; - vector< OptDsc* >::iterator iter = m_optionset.begin(); - - while ( iter != m_optionset.end() ) { - if( len < (*iter)->getLegend().getLength() ){ - len = (*iter)->getLegend().getLength(); - } - iter++; - } - return len; - -} ///< getMaxLegendLength - -/** - * public - * reads the filecontent and pass it to str2opt to add valid options - * to optionhash - * @param rtl::OString iniPth = full qualified filename - * @return ::osl::FileBase::RC = to indicate errors - */ -//> getIniOptions -::osl::FileBase::RC GetOpt::getIniOptions( rtl::OString iniPth ) { - - ::osl::FileStatus fState( FileStatusMask_All ); - ::osl::DirectoryItem dItem; - rtl::OUString nrmPath( FileHelper::convertPath( iniPth ) ); - - ::osl::DirectoryItem::get( nrmPath, dItem ); - dItem.getFileStatus( fState ); - rtl::OUString fName( fState.getFileURL() ); - ::osl::File iniFile( fName ); - - const sal_uInt32 filesize = (sal_uInt32)fState.getFileSize(); - - ::osl::FileBase::RC ret; - sal_uInt64 bytesread; - - if ( ( ret = iniFile.open( OpenFlag_Read ) ) != ::osl::FileBase::E_None ) { - return ret; - } - char* buf = new char[ filesize + 1 ]; - ret = iniFile.read( buf, filesize, bytesread ); - buf[ filesize ] = '\0'; - - str2Opt( buf ); - delete [] buf; - return ret; - -} ///< getIniOptions - -/** - * private - * tokenize a string in dependance of a character set and stores the tokens - * to a token vector - * @param const rtl::OString& opt = optionstring to tokenize - * @param const rtl::OString& cSet = characterset of delimiters - * @param vector< rtl::OString >& optLine = vector of tokens - * @param sal_Bool strip = indicates if CR,LF and TAB should be stripped off - * the token - * @return void - */ -//> tokenize -void GetOpt::tokenize( const rtl::OString& opt, const rtl::OString& cSet, - vector< rtl::OString >& optLine, sal_Bool strip ) { - - const sal_Char* pText; // pointer f. text, - const sal_Char* pcSet; // charset and - vector< const sal_Char* > delimVec; // vector of delimiters - - // parametercheck for opt ... - if( ! opt.getLength() ) { - return; - } - // ... and charSet - if( ! cSet.getLength() ) { - return; - } - // pointer to begin of textinstance - pText = opt.getStr(); - - // text - while( *pText ) { - // charset-pointer to begin of charset - pcSet = cSet.getStr(); - // charset - while( *pcSet ) { - // delimiter found - if( ( ( *pText == *pcSet ) ) && ( pText != opt ) ) { - delimVec.push_back( pText ); - // increment counter - } - pcSet++; - } - // increment pointer - pText++; - } - - // save endpointer - delimVec.push_back( opt + opt.getLength() ); - - sal_Char* pToken; // ptr to token chars - const sal_Char* pBegin; // ptr to begin of current, - const sal_Char* pEnd=opt; // and begin of prev. token - sal_uInt32 i=0; - - while ( pEnd < delimVec[delimVec.size()-1] ) { - - pBegin = pEnd; - if( pBegin > opt.getStr() ) { - pBegin += 1; - } - pEnd = delimVec[i]; - // initialize size - sal_uInt32 nSize = pEnd - pBegin; - // allocate memory - - // allocate memory for token - sal_Char* cToken = new sal_Char[ nSize + 1 ]; - - // get address of allocated memory - pToken = cToken; - - // copy token from text - sal_uInt32 j; - for ( j = 0; j < nSize ; ++j ) { - *pToken++ = *pBegin++; - } - // append string end - *pToken = '\0'; - - rtl::OString oTok(cToken); - - if( strip ) { - // strip off CR,LF and TAB - oTok = oTok.replace( 0x0a, 0x20 ); - oTok = oTok.replace( 0x0d, 0x20 ); - oTok = oTok.replace( 0x09, 0x20 ); - oTok = oTok.trim(); - } - if( oTok != "" ) { - // push to vector - optLine.push_back( oTok ); - } - - // free memory where cToken points to - delete [] cToken; - i++; - } - return ; -} ///< tokenize - -// ----------------------------------------------------------------------------- -rtl::OString& GetOpt::getOpt( const rtl::OString& opt ) -{ - if (m_opthash.find( opt ) != m_opthash.end()) - { - if (!m_opthash[opt].empty()) - { - return *( m_opthash[opt].begin() ); - } - rtl::OString aStr; - aStr = "GetOpt( "; - aStr += opt; - aStr += " ): Value not found."; - throw ValueNotFoundException(aStr.getStr()); - } - else - throw ValueNotFoundException(opt); -} - - -// ----------------------------------------------------------------------------- - -Exception::Exception() - : m_sAsciiMessage() -{ -} -//--------------------------------------------------------------------- -Exception::Exception(char const* sAsciiMessage) - : m_sAsciiMessage(sAsciiMessage) -{ -} -//--------------------------------------------------------------------- -Exception::Exception(rtl::OString const& sAsciiMessage) - : m_sAsciiMessage(sAsciiMessage) -{ -} -//--------------------------------------------------------------------- - -rtl::OUString Exception::message() const -{ - return rtl::OStringToOUString( m_sAsciiMessage, RTL_TEXTENCODING_ASCII_US ); -} -//--------------------------------------------------------------------- -char const* Exception::what() const -{ - return m_sAsciiMessage.getLength() ? m_sAsciiMessage.getStr() : "FAILURE in REGSCAN: No description available"; -} - -// ----------------------------------------------------------------------------- -static const char c_sValueNotFoundException[] = "GetOpt: Value not Found Exception: "; -//--------------------------------------------------------------------- -ValueNotFoundException::ValueNotFoundException() - : Exception( rtl::OString(RTL_CONSTASCII_STRINGPARAM(c_sValueNotFoundException)) ) -{ -} -//--------------------------------------------------------------------- - -ValueNotFoundException::ValueNotFoundException(char const* sException) - : Exception( rtl::OString(RTL_CONSTASCII_STRINGPARAM(c_sValueNotFoundException)) + sException) -{ -} - - - diff --git a/testshl2/source/makefile.mk b/testshl2/source/makefile.mk deleted file mode 100644 index 86a6dc2ca1bc..000000000000 --- a/testshl2/source/makefile.mk +++ /dev/null @@ -1,130 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* -PRJ=.. - -PRJNAME=testshl2 -TARGET=testshl2 -TARGETTYPE=CUI -PRJINC=. - -ENABLE_EXCEPTIONS=TRUE -#USE_LDUMP2=TRUE -#LDUMP2=LDUMP3 - -# --- Settings ----------------------------------------------------- -.INCLUDE : settings.mk - -# ------------------------------------------------------------------ - -COMMON_OBJFILES=\ - $(OBJ)$/getopt.obj \ - $(OBJ)$/filehelper.obj \ - $(OBJ)$/dynamicregister.obj - -TESTSHL_OBJFILES=\ - $(OBJ)$/autoregisterhelper.obj \ - $(OBJ)$/testshl.obj - -VERSIONINFO_OBJFILES=\ - $(OBJ)$/versionhelper.obj \ - $(OBJ)$/versioner.obj - -BMSMA_OBJFILES=\ - $(OBJ)$/bmsma.obj - -# for right dependencies -# OBJFILES= $(COMMON_OBJFILES) $(TESTSHL_OBJFILES) $(VERSIONINFO_OBJFILES) - -# ------------------------------------------------------------------ -APP1TARGET= $(TARGET) -APP1OBJS= $(COMMON_OBJFILES) $(TESTSHL_OBJFILES) -APP1RPATH=NONE - -APP1STDLIBS=$(SALLIB) - -.IF "$(GUI)" == "WNT" -.IF "$(COM)" == "GCC" -APP1STDLIBS+= \ - $(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a \ - $(LB)$/libc5t_testresult$(DLLPOSTFIX).a \ - $(LB)$/libc5t_no_regallfkt$(DLLPOSTFIX).a \ - $(LB)$/libc5t_winstuff$(DLLPOSTFIX).a -.ELSE -APP1LIBS= \ - $(SOLARLIBDIR)$/cppunit.lib \ - $(LB)$/c5t_testresult.lib \ - $(LB)$/c5t_no_regallfkt.lib \ - $(LB)$/c5t_winstuff.lib -.ENDIF -.ENDIF - -.IF "$(GUI)" == "OS2" -APP1LIBS= \ - $(SOLARLIBDIR)$/cppunit.lib \ - $(LB)$/c5t_no_regallfkt.lib \ - $(LB)$/c5t_testresult.lib -.ENDIF - -.IF "$(GUI)" == "UNX" -APP1STDLIBS+= \ - $(LB)$/libc5t_testresult$(DLLPOSTFIX).a \ - $(LB)$/libc5t_no_regallfkt$(DLLPOSTFIX).a \ - $(SOLARLIBDIR)$/libcppunit$(DLLPOSTFIX).a -.ENDIF - -# -# ------------------------------------------------------------------ -APP2TARGET= versioninfo -APP2OBJS= $(COMMON_OBJFILES) $(VERSIONINFO_OBJFILES) - -APP2STDLIBS=$(SALLIB) - -APP2DEPN= -APP2LIBS= - -# ------------------------------------------------------------------ -APP3TARGET= $(TARGET)_timeout -APP3OBJS= $(OBJ)$/getopt.obj $(OBJ)$/filehelper.obj $(OBJ)$/terminate.obj - -APP3STDLIBS=$(SALLIB) - -APP3DEPN= -APP3LIBS= - -.IF "$(GUI)" == "WNT" -.IF "$(COM)" == "GCC" -APP3STDLIBS+= \ - $(LB)$/libc5t_winstuff$(DLLPOSTFIX).a -.ELSE -APP3LIBS += $(LB)$/c5t_winstuff.lib -.ENDIF -.ENDIF - - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk diff --git a/testshl2/source/terminate.cxx b/testshl2/source/terminate.cxx deleted file mode 100644 index fcc9f75f83f0..000000000000 --- a/testshl2/source/terminate.cxx +++ /dev/null @@ -1,289 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - -#ifdef SOLARIS -#include <sys/time.h> -#include <sys/types.h> -#endif - -#include <signal.h> - -#include <iostream> -#include <string> - -#include "testshl/getopt.hxx" - -#if (defined UNX) || (defined OS2) -#include <unistd.h> /* usleep */ -#include <sys/types.h> -#include <signal.h> -#endif - -#ifdef WNT -# include "testshl/winstuff.hxx" -#endif - -using namespace std; - -// ----------------------------------------------------------------------------- -class ProcessHandler -{ - std::string m_sProcessIDFilename; - int m_nPID; - - int getPID(); - int readPIDFromFile(); - void sendSignal(int _nPID); - void write(int); -public: - ProcessHandler(); - void setName(std::string const& _sFilename); - - ~ProcessHandler(); - - void waitForPIDFile(int); - void waitForTimeout(int); -}; - -void my_sleep(int sec) -{ -#ifdef WNT - WinSleep(sec * 1000); -#else - usleep(sec * 1000000); // 10 ms -#endif -} - -// ------------------------------- ProcessHelper ------------------------------- -ProcessHandler::ProcessHandler():m_nPID(0) {} - -void ProcessHandler::setName(std::string const& _sPIDFilename) -{ - m_sProcessIDFilename = _sPIDFilename; -} - -int ProcessHandler::getPID() -{ - return m_nPID; -} - -int ProcessHandler::readPIDFromFile() -{ - // get own PID - int nPID = 0; - if (m_sProcessIDFilename.size() > 0) - { - FILE* in; - in = fopen(m_sProcessIDFilename.c_str(), "r"); - if (!in) - { - // fprintf(stderr, "warning: (testshl.cxx) can't read own pid.\n"); - return 0; - // exit(0); - } - // if file exist, wait short, maybe the other tool writes it down. - if (fscanf(in, "%d", &nPID) != 1) - { - // fprintf(stderr, "warning: (testshl.cxx) can't read own pid.\n"); - fclose(in); - return 0; - // exit(0); - } - fclose(in); - } - else - { - fprintf(stderr, "error: (terminate.cxx) PID Filename empty, must set.\n"); - exit(0); - } - return nPID; -} - -ProcessHandler::~ProcessHandler() -{ -} - -void ProcessHandler::sendSignal(int _nPID) -{ - if (_nPID != 0) - { -#ifdef WNT - WinTerminateApp(_nPID, 100); -#else - kill(_nPID, SIGKILL); -#endif - } -} - -// ----------------------------------------------------------------------------- -void ProcessHandler::waitForPIDFile(int _nTimeout) -{ - int nWaitforTimeout = _nTimeout; - while (getPID() == 0 && nWaitforTimeout > 0) - { - int nPID = readPIDFromFile(); - if (nPID != 0) - { - m_nPID = nPID; - break; - } - - my_sleep(1); - fprintf(stderr, "wait for pid file\n"); - nWaitforTimeout--; - } - - if (nWaitforTimeout <= 0) - { - fprintf(stderr, "No PID found, time runs out\n"); - exit(1); - } -} -// ----------------------------------------------------------------------------- -void ProcessHandler::waitForTimeout(int _nTimeout) -{ - int nTimeout = _nTimeout; - while (nTimeout > 0) - { - my_sleep(1); - fprintf(stderr, "%d \r", nTimeout); - - int nNewPID = readPIDFromFile(); - if ( nNewPID != getPID() ) - { - fprintf(stderr, "PID has changed.\n"); - if ( nNewPID != 0) - { - fprintf(stderr, "new PID is not 0, maybe forgotten to delete old PID file, restart timeout.\n"); - m_nPID = nNewPID; - nTimeout = _nTimeout; - } - else - { - break; - } - } - nTimeout --; - } - if (nTimeout <= 0) - { - fprintf(stderr, "PID: %d\n", getPID()); - sendSignal(getPID()); - write(0); - } -} - -void ProcessHandler::write(int _nPID) -{ - // get own PID - - if (m_sProcessIDFilename.size() > 0) - { - FILE* out; - out = fopen(m_sProcessIDFilename.c_str(), "w"); - if (!out) - { - fprintf(stderr, "warning: (testshl.cxx) can't write own pid.\n"); - return; - // exit(0); - } - fprintf(out, "%d", _nPID); - fclose(out); - } - else - { - fprintf(stderr, "warning: (testshl.cxx) PID Filename empty, must set.\n"); - } -} - -// ----------------------------------- Main ----------------------------------- -#if (defined UNX) || (defined OS2) -int main( int, char* argv[] ) -#else -int _cdecl main( int, char* argv[] ) -#endif -{ - static char const * optionSet[] = { - "-version, shows current program version and exit.", - "-pid=s, write current process id to file", - "-time=s, timeout [default is 10 sec]", - "-h:s, display help or help on option", - "-help:s, see -h", - NULL - }; - - ProcessHandler aCurrentProcess; - - GetOpt opt( argv, optionSet ); - if ( opt.hasOpt("-pid") ) - { - aCurrentProcess.setName(opt.getOpt("-pid").getStr()); - } - - int nTimeout = 10; - if ( opt.hasOpt("-time")) - { - // - nTimeout = opt.getOpt("-time").toInt32(); - if (nTimeout == 0) - { - nTimeout = 10; - } - } - - if ( opt.hasOpt("-version") ) - { - fprintf(stderr, "testshl2_timeout $Revision: 1.9 $\n"); - exit(0); - } - - // someone indicates that he needs help - if ( opt.hasOpt( "-h" ) || opt.hasOpt( "-help" ) ) - { - opt.showUsage(); - exit(0); - } - - // wait until pid file exist ============================== - - aCurrentProcess.waitForPIDFile(10); - - printf("Found PID file, wait for timeout %d sec.\n", nTimeout); - - // timeout ================================================== - aCurrentProcess.waitForTimeout(nTimeout); - - return 0; -} - diff --git a/testshl2/source/testshl.cxx b/testshl2/source/testshl.cxx deleted file mode 100644 index 22b90a0f7002..000000000000 --- a/testshl2/source/testshl.cxx +++ /dev/null @@ -1,396 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> - -#ifdef SOLARIS -#include <sys/time.h> -#endif - -#ifdef WNT -# include "testshl/winstuff.hxx" -#endif - -#include <iostream> -#include <vector> -#include <memory> /* auto_ptr */ -#include "sal/main.h" -#include <rtl/string.hxx> - -// #include <rtl/tres.h> -#include "testshl/autoregisterhelper.hxx" -// #include "cmdlinebits.hxx" -#include "testshl/log.hxx" -#include "testshl/filehelper.hxx" -#include "testshl/getopt.hxx" -#include "testshl/result/outputter.hxx" -#include "testshl/joblist.hxx" - -// #include <osl/time.h> - -using namespace std; - -#include "testshl/result/testshlTestResult.h" -#include "testshl/result/emacsTestResult.hxx" - -// Prototype for signal handling -void setSignalFilename(GetOpt & opt); -void removeSignalFile(GetOpt & opt); -CmdLineBits st_nBits; - -void initTPrint(GetOpt & _aOptions) -{ - st_nBits = FileHelper::createFlags(_aOptions); -} - -void my_sleep(int nCount) -{ -#ifdef WNT - WinSleep(nCount * 2); -#else - usleep(nCount * 2000); -#endif -} - -// ----------------------------------------------------------------------------- -class ProcessHandler -{ - std::string m_sProcessIDFilename; - void write(int); - int getPID(); -public: - ProcessHandler(); - void setName(std::string const& _sFilename); - ~ProcessHandler(); -}; - -// ------------------------------- ProcessHelper ------------------------------- -ProcessHandler::ProcessHandler() {} - -void ProcessHandler::setName(std::string const& _sPIDFilename) -{ - m_sProcessIDFilename = _sPIDFilename; - write(getPID()); -} - -int ProcessHandler::getPID() -{ - int nPID = 0; -#ifdef WNT - nPID = WinGetCurrentProcessId(); -#else - nPID = getpid(); -#endif - - return nPID; -} - -void ProcessHandler::write(int _nPID) -{ - // get own PID - - if (m_sProcessIDFilename.size() > 0) - { - FILE* out; - out = fopen(m_sProcessIDFilename.c_str(), "w"); - if (!out) - { - fprintf(stderr, "warning: (testshl.cxx) can't write own pid.\n"); - return; - // exit(0); - } - fprintf(out, "%d", _nPID); - fclose(out); - my_sleep(2); // short wait, so testshl2_timeout can find this pid. - } - else - { - fprintf(stderr, "warning: (testshl.cxx) PID Filename empty, must set.\n"); - } -} - -ProcessHandler::~ProcessHandler() -{ - if (m_sProcessIDFilename.size() > 0) - { - write(0); - my_sleep(2); - fprintf(stderr, "hint: it is save to remove PID file.\n"); - } -} - -// ----------------------------------------------------------------------------- -std::auto_ptr<CppUnit::TestResult> initResult(GetOpt & _aOptions) -{ - std::auto_ptr<CppUnit::TestResult> pResult; - if (_aOptions.hasOpt("-mode")) - { - if (_aOptions.getOpt("-mode").equals("emacs") == sal_True) - { - pResult.reset(new CppUnit::emacsTestResult(_aOptions)); - } - } - else - { - pResult.reset(new CppUnit::testshlTestResult(_aOptions)); - } - return pResult; -} - -// ----------------------------------------------------------------------------- - -std::auto_ptr<Outputter> initOutputter(GetOpt & _aOptions) -{ - std::auto_ptr<Outputter> pOutputter; - - if (_aOptions.hasOpt("-log")) - { - rtl::OString sLogFile = _aOptions.getOpt("-log"); - - Log* pLog = new Log( FileHelper::convertPath( sLogFile ) ); - if ( pLog->open() != osl::FileBase::E_None ) - { - // cerr << "could not open LogFile: " << pLog->getName().getStr() << endl; - fprintf(stderr, "could not open LogFile: %s\n", pLog->getName().getStr()); - exit(1); - } - pOutputter.reset(new Outputter(pLog)); - } - else - { - pOutputter.reset(new Outputter(std::cout)); - } - - return pOutputter; -} - -int starttest(GetOpt & opt, AutomaticRegisterHelper const& aHelper); - -void makeslow() -{ - sal_Int32 n = 0; - for (sal_Int32 i=0;i<1024 * 1024;i++) - { - ++n; - } -} -// void endless() -// { -// sal_Int64 n = 0; -// while(1) -// { -// n++; -// makeslow(); -// my_sleep(1); -// } -// } - -// ----------------------------------- Main ----------------------------------- - -SAL_IMPLEMENT_MAIN_WITH_ARGS(, argv) -{ - static char const * optionSet[] = { - "-boom, stop near error position, exception only", - "-mode=s, the output mode, emacs, xml, old. Default is -mode old", - "-log=s, destination file for logging", - "-noerrors, shows all tests, but not it's errors.", - "-onlyerrors, shows only the failed test functions", -/* "-tc=s@, name(s) of testcase(s) to generate", */ - "-sf=s, absolute path and name to the signal file.", -//! new (helpful if at debug time) - "-dntsf, if given, do not touch signal file, also if one exist.", - "-dnrmsf, do not remove signalfile. ", - "-jobonly=s, job control file, these jobs should only executed.", - "-jobexclude=s, job control file, but contains only job, they not execute.", - "-jobfilter=s, use a filter for just some tests.", - "-onlyshowjobs, show only all jobs, do no tests.", - "-forward=s, this string will forwarded to the test libraries.", - "-projectid=s, this text is added to the date output line.", - "-buildid=s, this text is added to the date output line.", - "-waitforkey, wait until key pressed.", - "-verbose, be verbose.", - "-quiet, be quiet. No t_print(...) will create output.", - "-pid=s, write current process id to file", - "-endless, testshl runs endless, for test only!!!", - "-whereami, shows at runtime, which function is tested next.", - "-noerroronexit, if this is given the program exits with return code 0 even if runtime errors occurs.", - "-hardexit, Exit the tests without call any dtor.", - "-absolutepath, Use the given absolute path to local the test library.", - "-localpath, Make a chdir() to the test library path, then try to load the library without given path.", - "-h:s, display help or help on option", - "-help:s, see -h", - NULL - }; - - ProcessHandler aCurrentProcess; - - GetOpt opt( argv, optionSet ); - initTPrint(opt); - - if ( opt.hasOpt("-pid") ) - { - aCurrentProcess.setName(opt.getOpt("-pid").getStr()); - } - - if ( opt.hasOpt("-verbose") ) - { - fprintf(stderr, "testshl2 $Revision: 1.25 $\n"); - } - - if ( opt.hasOpt("-endless")) // this exists only for self test issues - { -// endless(); - -// With parameter -endless a test is attachable by debuggers -// Attach to testshl2.exe set a breakpoint in this while (1) loop - -// Then you have to set the process pointer (Set next Statement) to -// the next line outside the while loop. -// Now it is possible to debug the whole code. -// Never source this code to a function, because you will -// lost the variables like opt. - - sal_Int64 n = 0; - while(1) - { - n++; - makeslow(); - my_sleep(1); - } - } - - int nExitCode = 0; - bool bLibrary = true; - - // someone indicates that he needs help - if ( opt.hasOpt( "-h" ) || opt.hasOpt( "-help" ) ) - { - opt.showUsage(); - nExitCode = 0; - } - else - { - if (opt.getParams().empty()) - { - // no library is given, but if a jobonly list is given, we should generate UNKNOWN errors. - if (! opt.hasOpt("-jobonly")) - { - // std::cerr << "error: At least a library or a job file should given." << std::endl; - fprintf(stderr, "error: At least a library or a job file should given.\n"); - opt.showUsage(); - nExitCode = 2; - } - else - { - bLibrary = false; - } - } - else - { - setSignalFilename(opt); - - rtl::OUString suLibraryName; - if (bLibrary) - { - suLibraryName = rtl::OStringToOUString(opt.getFirstParam(), osl_getThreadTextEncoding() /* RTL_TEXTENCODING_ASCII_US */ ); - } - - AutomaticRegisterHelper aHelper(suLibraryName, opt /*, &aJobs*/); - - if (aHelper.isOkToStartTests()) - { - // start the tests - nExitCode = starttest(opt, aHelper); - } - else - { - - fprintf(stderr, "error: The library '%s' can't initialised, must quit.\n", opt.getFirstParam().getStr()); - nExitCode = 1; - } - } - } - - if (opt.hasOpt("-noerroronexit")) - { - nExitCode = 0; - } - return nExitCode; -} - -// ----------------------------------------------------------------------------- -// this function is only inserted to give a better startpoint for breakpoints - -int starttest(GetOpt & _opt, AutomaticRegisterHelper const& aHelper) -{ - // create a TestResult - std::auto_ptr<CppUnit::TestResult> pResult = initResult(_opt); - - // call all test functions - aHelper.CallAll(pResult.get()); - - // create and open log - std::auto_ptr<Outputter> pOutput = initOutputter(_opt); - - // give the output - pResult->print(*pOutput.get()); - - // this is a debug extension, so you can read the output and after a key is pressed the program will end. - if (_opt.hasOpt("-waitforkey")) - { - fprintf(stderr, "Press return key."); - fflush(stderr); - getchar(); - } - - if (_opt.hasOpt("-verbose")) - { - fprintf(stderr, "Remove signal handlers"); - } - - removeSignalFile(_opt); - - if (_opt.hasOpt("-verbose")) - { - fprintf(stderr, " [done]\n"); - } - - if (_opt.hasOpt("-hardexit")) - { - fprintf(stderr, "Hardexit forced.\n"); - abort(); - } - - int nExit = pResult->getExitValue(); - return nExit; -} - diff --git a/testshl2/source/testshlrunner/ProcessHandler.java b/testshl2/source/testshlrunner/ProcessHandler.java deleted file mode 100644 index 373b482d7825..000000000000 --- a/testshl2/source/testshlrunner/ProcessHandler.java +++ /dev/null @@ -1,355 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -import java.io.InputStream; -import java.io.File; -import java.io.FileFilter; -import java.util.ArrayList; -import java.io.PrintWriter; -import java.io.PrintStream; -import java.io.LineNumberReader; -import java.io.InputStreamReader; -import java.io.OutputStreamWriter; - -/** - * Class collect information from input stream in - * background (sparate thread) and outputs it to - * some log stream. I helps to avoid buffer overflow - * when output stream has small buffer size (e.g. - * in case when handling stdout from external - * <code>Process</code>) - * - * This class is currently used by ProcesHandler - * internally only. - */ -class Pump extends Thread { - private LineNumberReader reader; - private String pref ; - private Pump thread ; - private StringBuffer buf = new StringBuffer(256); - private PrintWriter log ; - - /** - * Creates Pump for specified <code>InputStream</code>. - * This Pump also synchronously output text read to - * log by prefixed lines. Constructor immediately - * starts reading in a separate thread. - * - * @param is Stream which requires permanent reading. - * @param log Writer where prefixed text lines to be output - * @param outPrefix A prefix which is printed at the - * beginning of each output line. - */ - public Pump(InputStream is, PrintWriter log, String outPrefix) { - this.pref = outPrefix == null ? "" : outPrefix ; - reader = new LineNumberReader(new InputStreamReader(is)); - this.log = log ; - start() ; - } - - public void run() { - try { - String line = reader.readLine() ; - while (line != null) { - log.println(pref + line); - log.flush(); - buf.append(line).append('\n'); - line = reader.readLine() ; - } - } catch (java.io.IOException e) { - log.println(pref + "Exception occured: " + e) ; - } - } - - /** - * Returns the text collected from input stream. - */ - public String getStringBuffer() { - return buf.toString(); - } -} - -/** - * Class provides convenient way for running external program - * handle its standard streams, control execution and check results. - * Instance of this class must be created only for a single - * execution. If you need to execute the same command again you - * should create a new instance for this. - */ -public class ProcessHandler { - private String cmdLine; - private String[] envVars = null; - private File workDir = null; - private PrintWriter log; - - private int exitValue = -1; - private boolean isFinished = false; - private boolean isStarted = false; - - private String stdInBuff = ""; - private Pump stdout = null ; - private Pump stderr = null ; - private PrintStream stdIn = null ; - - private Process proc = null ; - - /** - * Creates instance with specified external command and - * log stream where debug info is printed and output - * of external command. - */ - public ProcessHandler(String cmdLine, PrintWriter log) { - this(cmdLine, log, null, null); - } - /** - * Creates instance with specified external command. - * Debug info and output - * of external commandis printed to stdout. - */ - public ProcessHandler(String cmdLine) { - this(cmdLine, null, null, null); - } - /** - * Creates instance with specified external command which - * will be executed in the some work directory and - * log stream where debug info and output - * of external command is printed . - * The specified environment variables are set for the new process. - * If log stream is null, logging is printed to stdout. - */ - public ProcessHandler(String cmdLine, PrintWriter log, - File workDir, String[] envVars) { - this.cmdLine = cmdLine ; - this.workDir = workDir; - this.log = log; - this.cmdLine = cmdLine ; - this.envVars = envVars; - if (log == null) - this.log = new PrintWriter(new OutputStreamWriter(System.out)); - else - this.log = log; - } - /** - * Creates instance with specified external command which - * will be executed in the some work directory. - * Debug info and output - * of external commandis printed to stdout. - */ - public ProcessHandler(String cmdLine, File workDir) { - this(cmdLine, null, workDir, null); - } - - /** - * Executes the command and returns only when the process - * exits. - * - * @return <code>true</code> if process was successfully - * started and correcly exits (exit code doesn't affect - * to this result). - */ - public boolean executeSynchronously() { - execute() ; - return waitFor() ; - } - - /** - * Executes the command immediately returns. The process - * remains in running state. Control of its state should - * be made by <code>waitFor</code> methods. - * - * @return <code>true</code> if process was successfully - * started. - */ - public boolean executeAsynchronously() { - execute() ; - return isStarted() ; - } - - public void kill() { - if (!isStarted()) return; - proc.destroy(); - isStarted = false; - } - - protected void execute() { - if (isStarted()) { - throw new RuntimeException( - "The process handler has already been executed.") ; - } - Runtime runtime = Runtime.getRuntime() ; - try { - log.println("Starting command: " + cmdLine) ; - if (workDir != null) { - proc = runtime.exec(cmdLine, envVars, workDir) ; - } else { - proc = runtime.exec(cmdLine, envVars) ; - } - - isStarted = true ; - } catch (java.io.IOException e) { - log.println("The command "+cmdLine+" can't be started: " + e); - return; - } - stdout = new Pump(proc.getInputStream(), log, "out > "); - stderr = new Pump(proc.getErrorStream(), log, "err > "); - stdIn = new PrintStream(proc.getOutputStream()) ; - - flushInput() ; - } - - /** - * This method is useful when the process was executed - * asynchronously. Waits for process to exit and return - * its result. - * - * @return <code>true</code> if process correctly exited - * (exit code doesn't affect to this result). - */ - public boolean waitFor() { - return waitFor(0) ; - } - - /** - * This method is useful when the process was executed - * asynchronously. Waits during specified time for process - * to exit and return its status. - * - * @return <code>true</code> if process correctly exited - * (exit code doesn't affect to this result). - */ - public boolean waitFor(long timeout) { - if (isFinished()) return true ; - if (!isStarted()) return false ; - - if (timeout == 0) { - try { - proc.waitFor() ; - } catch (InterruptedException e) { - log.println("The process was interrupted: " + e); - } - isFinished = true ; - try { - exitValue = proc.exitValue() ; - } catch (IllegalThreadStateException e) {} - } else { - try { - while (!isFinished && timeout > 0) { - isFinished = true ; - Thread.sleep(1000); - timeout -= 1000 ; - try { - exitValue = proc.exitValue() ; - } catch (IllegalThreadStateException e) { - isFinished = false ; - } - } - } catch (InterruptedException ex) { - log.println("The process was interrupted: " + ex); - } - } - - if (!isFinished) { - proc.destroy(); - } - - try { - stdout.join(); - stderr.join(); - } catch (InterruptedException e) {} - - return isFinished() ; - } - - protected void flushInput() { - if (stdIn == null) return ; - - synchronized(stdInBuff) { - stdIn.print(stdInBuff); - stdIn.flush(); - stdInBuff = "" ; - } - } - - /** - * Returns the text output by external command to stdout. - */ - public String getOutputText() { - return stdout.getStringBuffer(); - } - /** - * Returns the text output by external command to stderr. - */ - public String getErrorText() { - return stderr.getStringBuffer(); - } - - /** - * Prints the string specified to sdtin of external - * command. '\n' is not added so if you need you - * should terminate the string with '\n'. <p> - * - * The method can also be called before the command - * starts its execution. Then the text is buffered - * and transfered to command when it will be started. - */ - public void printInputText(String str) { - stdInBuff += str ; - flushInput(); - } - - /** - * Returns information about was the command started or - * not. - * - * @return <code>true</code> if the external command was - * found and successfully started. - */ - public boolean isStarted() { - return isStarted ; - } - - /** - * Returns the information about the final state of command - * execution. - * - * @return <code>true</code> if the command correctly starts, - * exits and was not interrupted due to timeout. - */ - public boolean isFinished() { - return isFinished ; - } - - /** - * Returns exit code of the external command. - * - * @return exit code of command if it was finished, - * -1 if not. - */ - public int getExitCode() { - return exitValue ; - } -} diff --git a/testshl2/source/testshlrunner/TestShl2Runner.java b/testshl2/source/testshlrunner/TestShl2Runner.java deleted file mode 100644 index 295648121042..000000000000 --- a/testshl2/source/testshlrunner/TestShl2Runner.java +++ /dev/null @@ -1,937 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - - -// package main; - -import java.io.File; -import java.io.FileWriter; -import java.io.RandomAccessFile; -import java.io.PrintWriter; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.Statement; -import java.sql.ResultSet; - -import java.util.HashMap; -import java.util.Set; -import java.util.Iterator; -import java.util.Properties; - -import java.io.FileInputStream; - -// ----------------------------------------------------------------------------- -/** - * This class offers helper function, to easily connect to a database - * delete values and insert values. - */ - -class PropertyHelper -{ - public static Properties getProperties(String name) - { - Properties prop = new Properties(); - FileInputStream propFile = null; - try { - propFile = new FileInputStream(name); - prop.load(propFile); - propFile.close(); - } catch (Exception e) { - e.printStackTrace(); - } - return prop; - } - - public static void setProperties(Properties prop, String name) { - FileOutputStream propFile = null; - try { - propFile = new FileOutputStream(name); - prop.store(propFile,""); - propFile.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} - -class DBHelper -{ - /** - * This method inserts given values into<br> - * the table 'states' - * @param values a set of comma separated values to be inserted - */ - - public static void SQLinsertValues(String values) - { - Statement oStmt = null; - Connection oCon = null; - try - { - oCon = getMySQLConnection(); - oStmt = oCon.createStatement(); - ResultSet oResult = oStmt.executeQuery("insert into states values (" - + values + ")"); - } - catch(Exception e) - { - System.out.println("Couldn't insert values to db"); - e.printStackTrace(); - } finally - { - try - { - oCon.close(); - oCon = null; - } - catch (Exception e) {} - } - } - /** - * This method establishes a Connection<br> - * with the database 'module_unit' on jakobus - */ - - public static Connection getMySQLConnection() throws Exception - { - Class.forName("org.gjt.mm.mysql.Driver"); - Connection mysql = DriverManager.getConnection( - "jdbc:mysql://jakobus:3306/module_unit","admin","admin"); - return mysql; - } - /** - * This method removes all entries of the given<br> - * module/platform combination - * @param mdl the name of the module, e.g. sal - * @param os the name of the platform, e.g. unxsols - */ - - public static void SQLdeleteValues(String _sModulName, String _sEnvironment) - { - Statement oStmt = null; - Connection oCon = null; - try - { - oCon = getMySQLConnection(); - oStmt = oCon.createStatement(); - ResultSet oResult = oStmt.executeQuery("delete from states where mdl='" - + _sModulName + "' AND pf='" + _sEnvironment + "'"); - } - catch(Exception e) - { - System.out.println("Couldn't delete values from db"); - } - finally - { - try - { - oCon.close(); - oCon = null; - } - catch (Exception e) {} - } - } -} - -// ----------------------------------------------------------------------------- - -/** - * This class helps to build only one output line if the classname and the methodname are the same. - */ - -class CurrentEntry -{ - public String m_sDate; - public String m_sClassName; - public String m_sMethodName; - - ArrayList m_sMethodTestNames = new ArrayList(); - ArrayList m_sComments = new ArrayList(); - ArrayList m_sStates = new ArrayList(); - - public String m_sCommentContainer = ""; - - CurrentEntry() - {} - - public String getState() - { - // build the right State - String sAllIsRight = "PASSED#OK#"; - ArrayList sFailedStates = new ArrayList(); - boolean bFailed = false; - for (int i=0; i<m_sStates.size();i++) - { - String sStatus = (String) m_sStates.get(i); - if (!sStatus.equals(sAllIsRight)) - { - bFailed = true; - sFailedStates.add(sStatus); - } - } - if (bFailed == false) - { - return "PASSED#OK#"; - } - - // interpret the failures - return "PASSED#FAILED#"; - } - - public void add(String _sDate, String _sClassName, String _sMethodName, String _sMethodTestName, String _sState, String _sComment) - { - m_sDate = _sDate; - m_sClassName = _sClassName; - m_sMethodName = _sMethodName; - m_sMethodTestNames.add(_sMethodTestName); - m_sStates.add(_sState); - - if (_sComment.length() > 0) - { - String sComment = _sComment.replace('\'',' '); - - m_sComments.add(sComment); - - if (m_sCommentContainer.length() > 0) - { - m_sCommentContainer += ";<BR>"; - } - m_sCommentContainer += _sMethodTestName + "(): " + _sComment; - } - } - -} -// ----------------------------------------------------------------------------- - -/** - * HashMap Helper. At the moment classname and Methodname build a key value - * if they already exist, we store additional information into the already existing value - * if not, build an new entry. - */ - -class DatabaseEntry -{ - HashMap aMap = new HashMap(); - - public DatabaseEntry() - { - } - - public String Quote(String _sToQuote) - { - String ts = "'"; - return ts + _sToQuote + ts; - } - - /** - * Write down all collected lines into the database. - */ - public void writeDown(String _sProjectName, String _sEnvironment) - { - System.out.println(" "); - Set aSet = (Set)aMap.keySet(); - Iterator aIter = aSet.iterator(); - String sComma = ","; - - while (aIter.hasNext()) - { - String sKey = (String)aIter.next(); - CurrentEntry aEntry = (CurrentEntry)aMap.get(sKey); - - String db_line= Quote(_sProjectName) + sComma + - Quote( aEntry.m_sClassName) + sComma + - Quote( aEntry.m_sMethodName) + sComma + - Quote( aEntry.getState()) + sComma + - Quote( _sEnvironment) + sComma + - Quote( aEntry.m_sDate) + sComma + - Quote( aEntry.m_sCommentContainer); - System.out.println(db_line); - DBHelper.SQLinsertValues(db_line); - } - } - - - public void add(String _sDate, String _sClassName, - String _sMethodName, String _sMethodTestName, - String _sState, String _sComment) - { - String sKey = _sClassName + "." + _sMethodName; - if (aMap.containsKey(sKey)) - { - CurrentEntry aEntry = (CurrentEntry)aMap.get(sKey); - aEntry.add(_sDate, _sClassName, _sMethodName, _sMethodTestName, _sState, _sComment); - } - else - { - CurrentEntry aEntry = new CurrentEntry(); - aEntry.add(_sDate, _sClassName, _sMethodName, _sMethodTestName, _sState, _sComment); - aMap.put(sKey, aEntry); - } - } -} - -/** - * - * This class will run the testshl2 script - * - * According to a given baseDir it'll first - * get all scenario files, clean them up<br> - * Then all sources will be compiled and - * the scenarios started.<br> - * After the a scenarios are finished the result - * will be stored in the database. - * @version 0.1 - */ -public class TestShl2Runner -{ - - Properties m_aProps; - - String m_sVersion = "udk399"; - String m_sExtension = ""; - String m_sProjectDir = ""; - String m_sEnvironment = ""; - String m_sProjectName = ""; - String m_sShellExecutable=""; - String m_sLocalEnv=""; - - /** - * The constructor to use this class from any other java-class - * @param bdir the base directory where the qa-subfolder can be found - * @param pf the platform e.g. unxsols - * @param mod the module e.g. sal - * @param ver the version e.g. udk304 - * @param pre the path to the shell, may be "", but is needed on Windows<br> - * Systems to ensure that the created scripts run in an 4NT-shell - */ - -// public TestShl2Runner(String bdir, String pf, String project, String ver, String pre, String localenv) - public TestShl2Runner(String filename) - { - String fs = System.getProperty("file.separator"); - - m_aProps = PropertyHelper.getProperties(filename); - - m_sEnvironment = m_aProps.getProperty("ENV"); // unxsols3.pro - m_sProjectName = m_aProps.getProperty("PROJECTNAME"); // sal - m_sProjectDir = m_aProps.getProperty("BASEDIR") + fs + m_sProjectName; // /usr/qaapi/projects/udk/sal - m_sVersion = m_aProps.getProperty("BUILD"); // udk305 - m_sShellExecutable = m_aProps.getProperty("SHELL"); // /bin/tcsh - m_sLocalEnv = m_aProps.getProperty("LOCALENV"); // /usr/qaapi/projects/solartmp - - // if (m_sVersion.indexOf("-pro") > 1) m_sExtension=".pro"; - - startAll(); - } - - /** - * The main Method makes it possible to run this class standalone - * @param args the command line arguments - */ - public static void main(String args[]) - { - if (args.length != 1) - { - System.out.println("Usage: TestShl2Runner <config.file>"); - System.out.println("Example: TestShl2Runner /usr/qaapi/projects/udk/sal/qa/configfile"); - System.exit(1); - } - - TestShl2Runner aRunner = new TestShl2Runner(args[0]); - } - - // ----------------------------------------------------------------------------- - - ArrayList getJobs() - { - String fs = System.getProperty("file.separator"); - String sJobFile = m_sProjectDir + fs + m_aProps.getProperty("INPUT") + fs + m_aProps.getProperty("JOBFILE"); - ArrayList aLines = getLines(sJobFile); - return aLines; - } - - // ----------------------------------------------------------------------------- - - public void startAll() - { - String fs = System.getProperty("file.separator"); - - //get all scenario-files - System.out.println("Getting jobs"); - ArrayList aJobList = getJobs(); - - //cleanup scenorio-files and return a working array - // Object[] the_array = cleanup(m_sProjectDir + fs + "qa" + fs + "sce" + fs,scene_files); - // System.out.println("...done"); - - //create a script to build the sources and run the tests - System.out.println("creating start script for testprocess"); - String scriptName = createScript(aJobList); - System.out.println("...done"); - - //start the script - System.out.println("starting script for testprocess"); - String sScript = m_sShellExecutable + " " + getOutputDir() + fs + scriptName; - executeScript(sScript); - System.out.println("...done"); - - //remove old values from db-table - DBHelper.SQLdeleteValues(m_sProjectName,m_sEnvironment); - DBHelper.SQLdeleteValues(m_sProjectName,m_sEnvironment); - - //parse the output and store it - parseOut (aJobList, m_sProjectName, m_sEnvironment, m_sProjectDir); - } - - /** - * This method reads the lines of a file and puts<br> - * them into an ArrayList - * @param filename the name of the file to be read - */ - - public ArrayList getLines(String filename) - { - File the_file = new File(filename); - ArrayList the_lines = new ArrayList(); - if (! the_file.exists()) - { - System.out.println("couldn't find file " + filename); - return the_lines; - } - RandomAccessFile the_reader = null; - try - { - the_reader = new RandomAccessFile(the_file,"r"); - String aLine = ""; - while (aLine != null) - { - aLine = the_reader.readLine(); - if ( (aLine != null) && - (! (aLine.length() < 2) ) && - (! aLine.startsWith("#"))) - { - the_lines.add(aLine); - } - } - } - catch (java.io.FileNotFoundException fne) - { - System.out.println("couldn't open file " + filename); - System.out.println("Message: " + fne.getMessage()); - } - catch (java.io.IOException ie) - { - System.out.println("Exception while reading file " + filename); - System.out.println("Message: " + ie.getMessage()); - } - try - { - the_reader.close(); - } - catch (java.io.IOException ie) - { - System.out.println("Couldn't close file " + filename); - System.out.println("Message: " + ie.getMessage()); - } - return the_lines; - } - - - - /** - * This method calls the createScript-methods<br> - * for the given platform - * @param basedir the name of the base-directory, e.g. /usr/qaapi/projects/udk/sal - * @param qajobs jobs to be done - */ - - public String createScript(ArrayList _aJobList) - { - String res = ""; - if (m_sEnvironment.startsWith("wnt")) - { - try - { - res = createwntmsci(_aJobList); - } - catch (IOException ioe) - { - System.out.println("Couldn't create Script"); - } - } - else if (m_sEnvironment.startsWith("unx")) - { - try - { - res = createunx(_aJobList); - } - catch (IOException ioe) - { - System.out.println("Couldn't create Script"); - } - } - else - { - // can't handle unknown environment - } - return res; - } - - public String getSignalFileParameter() - { - String sParameter; - sParameter = " -sf /var/tmp/signalfile_" + m_sProjectName + "_" + m_sEnvironment + ".txt "; - return sParameter; - } - - public String getLogParameter(String job) - { - String sParameter = " -log " + getLogName(job) + " "; - return sParameter; - } - - public String getLogName(String job) - { - // create the ' -log file ' - String fs = System.getProperty("file.separator"); - String sLogName = getOutputDir() + fs + job + ".log"; - return sLogName; - } - - public String getInputDir() - { - String fs = System.getProperty("file.separator"); - String sInputDir = m_sProjectDir + fs + m_aProps.getProperty("INPUT"); - return sInputDir; - } - - - public String getOutputDir() - { - String fs = System.getProperty("file.separator"); - String sOutputDir = m_sProjectDir + fs + m_sEnvironment + fs + m_aProps.getProperty("OUTPUT"); - - File aFile = new File(sOutputDir); - aFile.mkdirs(); - return sOutputDir; - } - - public String getCAXParameter() - { - String sCAX = " "; - // Due to the fu....g java that we havn't access to our well formed ;-) - // environment variables the simple switch -cax do not longer work :-( - - // String sSolTmp = System.getenv("SOL_TMP"); - if (m_sLocalEnv.length() > 0) - { - sCAX = " -cax -tmp " + m_sLocalEnv; - } - // else - // { - // due to the fact that we don't want to get hole lokal env if no one exist, do nothing here. - // } - return sCAX; - } - - public String getProParameter() - { - String sPro = " "; - if (m_sEnvironment.endsWith(".pro")) - { - sPro = " -pro "; - } - return sPro; - } - - public String getCompEnvName() - { - String sCompEnv; - if (m_sEnvironment.endsWith(".pro")) - { - sCompEnv = String.copyValueOf(m_sEnvironment.toCharArray(), 0, 8); - } - else - { - sCompEnv = m_sEnvironment; - } - return " " + sCompEnv; - } - - /** - * This method create the script needed to compile and run the<br> - * the tests on the Windows platform - * @param basedir the name of the base-directory, e.g. /usr/qaapi/projects/udk/sal - * @param qajobs jobs to be done - */ - - public void PreNPost(FileWriter out, String _sWhat) throws IOException - { - String ls = System.getProperty("line.separator"); - - out.write(getRemark() + " do " + _sWhat + ls); - for (int i = 1;i<9;i++) - { - String sWhat = m_aProps.getProperty(_sWhat + i); - if (sWhat != null) - { - out.write(sWhat + ls); - } - } - out.write(ls); - } - - public String getChangeDirFkt() - { - if (m_sEnvironment.startsWith("wnt")) - { - return "cdd"; - } - return "cd"; - } - public String getRemark() - { - if (m_sEnvironment.startsWith("wnt")) - { - return "rem "; - } - return "# "; - } - - public void do_setsolar(FileWriter out, String _sPreExec) throws IOException - { - String ls = System.getProperty("line.separator"); - - out.write(getRemark() + " do a setsolar" + ls); - out.write(_sPreExec + " setsolar -" + m_sVersion + getCAXParameter() + getProParameter() + getCompEnvName() + ls); - out.write(ls); - } - - public void do_cvs(FileWriter out, String _sPreExec, ArrayList _aJobList) throws IOException - { - String fs = System.getProperty("file.separator"); - String ls = System.getProperty("line.separator"); - out.write(getChangeDirFkt() + " " + getInputDir() + ls); - out.write(getRemark() + " do a cvs and a dmake" + ls); - - out.write(_sPreExec + " " + "cvs -d" + m_aProps.getProperty("CVSROOT") + " update -d" + ls); - - for (int i=0; i<_aJobList.size();i++) - { - String sJob = (String) _aJobList.get(i); - - out.write(getChangeDirFkt() + " " + getInputDir() + fs + sJob + ls); - // setenv VCSID lla - // set VCSID=lla - out.write(_sPreExec + " " + "dmake -u" + ls); - } - out.write(ls); - } - - public void do_testtool(FileWriter out, String _sPreExec, ArrayList _aJobList) throws IOException - { - String ls = System.getProperty("line.separator"); - out.write(getRemark() + " call the test tool" + ls); - out.write(getChangeDirFkt() + " " + getOutputDir() + ls); - if (m_sEnvironment.startsWith("wnt")) - { - out.write("set DISABLE_SAL_DBGBOX=t" + ls); - } - - for (int i=0; i<_aJobList.size();i++) - { - String sLine = (String) _aJobList.get(i); - // String sJob = getJob(sLine); - out.write(_sPreExec + " " + m_aProps.getProperty("TESTTOOL") + " " + getLibName(sLine, m_sEnvironment) + getLogParameter(sLine) + getSignalFileParameter() + ls); - } - out.write(ls); - } - - public String createwntmsci(ArrayList _aJobList) throws IOException - { - String fs = System.getProperty("file.separator"); - String ls = System.getProperty("line.separator"); - - String sBatchFile = m_aProps.getProperty("BATCHFILE"); - File outputFile = new File(getOutputDir(), sBatchFile); - FileWriter out = new FileWriter(outputFile.toString()); - - out.write("rem do not edit, will be created automatically by TestShl2Runner.java" + ls); - - // String sBuildEnvironment = "wntmsci9"; - PreNPost(out, "PRE"); - - String sBatchPreExec = "call"; - do_setsolar(out, sBatchPreExec); - do_cvs(out, sBatchPreExec, _aJobList); - do_testtool(out, sBatchPreExec, _aJobList); - - PreNPost(out, "POST"); - - // the exit is alsolute need here, because we do not get back, until - // shell is stopped with exit. - out.write("exit" + ls); - out.close(); - return sBatchFile; - } - - /** - * This method create the script needed to compile and run the<br> - * the tests on the Unix platform - * @param basedir the name of the base-directory, e.g. /usr/qaapi/projects/udk/sal - * @param qajobs jobs to be done - */ - - public String createunx(ArrayList _aJobList) throws IOException - { - String fs = System.getProperty("file.separator"); - String ls = System.getProperty("line.separator"); - - String sBatchFile = m_aProps.getProperty("BATCHFILE"); - File outputFile = new File(getOutputDir(), sBatchFile); - FileWriter out = new FileWriter(outputFile.toString()); - - out.write("#!/bin/tcsh" + ls); // shebang - out.write("# do not edit, will be created automatically by TestShl2Runner.java" + ls); - - PreNPost(out, "PRE"); - - String sBatchPreExec = ""; - do_setsolar(out, sBatchPreExec); - do_cvs(out, sBatchPreExec, _aJobList); - do_testtool(out, sBatchPreExec, _aJobList); - - PreNPost(out, "POST"); - - out.write("exit" + ls); - out.close(); - - // set excution bits - String sExec = "chmod u+x " + getOutputDir() + fs + sBatchFile; - Runtime.getRuntime().exec(sExec); - return sBatchFile; - } - - // ----------------------------------------------------------------------------- - - /** - * This method extracts the libname from a given<br> - * job and adds a relative path based on the platform - * @param job the job to be done - * @param os the platform - */ - - public String getLibName(String job, String _sEnvironment) - { - String fs = System.getProperty("file.separator"); - // BACK: String like "../wntmsci9.pro/bin/rtl_OString.dll" - - String res = ""; - int nIndex = job.indexOf("."); - // if (nIndex > 0) - // { - // } - String sPureFilename = job; - String purelibname = ""; - if (_sEnvironment.startsWith("wnt")) - { - purelibname = "bin" + fs + sPureFilename + ".dll"; - } - else if (_sEnvironment.startsWith("unx")) - { - purelibname = "lib" + fs + "lib" + sPureFilename + ".so"; - } - else - { - // _sEnvironment unknown - // throw ... - } - - // we are in the wntmsci9[.pro]/qa directory - // to go to the bin directory we have to go to - // ../bin or ../lib - res = m_sProjectDir + fs + m_sEnvironment + fs + purelibname; - return res; - } - - // ----------------------------------------------------------------------------- - -/* - public Object[] cleanup(String sceneDir, String[] scene_files) - { - ArrayList res = new ArrayList(); - for (int j=0;j<scene_files.length;j++) - { - if (scene_files[j].endsWith(".sce")) - { - try - { - removeRemark(sceneDir,scene_files[j]); - } - catch (IOException ioe) - { - System.out.println("Couldn't cleanup Scene-File " + scene_files[j]); - } - String pure = scene_files[j].substring(0, - scene_files[j].indexOf(".")); - res.add(pure + ".qadev"); - } - } - return res.toArray(); - } - - - public void removeRemark(String sceneDir,String scene_file) - throws IOException - { - ArrayList org = getLines(sceneDir + scene_file); - String pure = scene_file.substring(0,scene_file.indexOf(".")); - String ls = System.getProperty("line.separator"); - File outputFile = new File(sceneDir,pure + ".qadev"); - FileWriter out = new FileWriter(outputFile.toString()); - for (int k=0;k<org.size();k++) - { - String toWrite = (String)org.get(k); - if (toWrite.startsWith("#")) - { - toWrite=toWrite.substring(1); - } - out.write(toWrite + ls); - } - out.close(); - } -*/ - - public void parseOut (ArrayList sJobList, String _sProjectName, String _sEnvironment, String basedir) - { - //parse the out-files and store the data - String fs = System.getProperty("file.separator"); - for (int i=0; i<sJobList.size();i++) - { - String sJob = (String) sJobList.get(i); - String outFile = getLogName(sJob); - ArrayList out_lines = getLines(outFile); - String date=""; - - DatabaseEntry aEntry = new DatabaseEntry(); - - for (int j=0;j<out_lines.size();j++) - { - String sLine = (String)out_lines.get(j); - if (sLine.startsWith("[")) - { - date = sLine.substring(1, 11); - date = date.replace('.','-'); - } - else - { - if (sLine.startsWith("Test #PASSED#")) break; - // if (out_lines.get(j).equals( - // " ---------- ")) break; - - try - { - String sName = sLine.substring(0, sLine.indexOf(';')); - - // count dot's - int nFirstDot = sName.indexOf('.'); - int nSecondDot = sName.indexOf('.', nFirstDot + 1); - String sClassName = ""; - String sMethodName = ""; - String sMethodTestName = ""; - - if (nFirstDot > 0) - { - sClassName = sName.substring(0, nFirstDot); - if (nSecondDot > 0) - { - sMethodName = sName.substring(nFirstDot + 1, nSecondDot); - sMethodTestName = sName.substring(nSecondDot + 1); - } - else - { - sMethodName = sName.substring(nFirstDot); - } - } - else - { - // no FirstDot, also no secondDot! - sClassName = sName; - } - - String sComment = sLine.substring(sLine.lastIndexOf('#') + 1); - - // get state - int nSecondNo = sLine.indexOf('#'); - nSecondNo = sLine.indexOf('#', nSecondNo + 1); - String sState = sLine.substring(sLine.indexOf(";") + 1, nSecondNo + 1); - - aEntry.add(date, sClassName, sMethodName, sMethodTestName, sState, sComment); - } - catch(IndexOutOfBoundsException e) - { - System.out.println("IndexOutOfBoundException: caught in parseOut()"); - } - } - } - aEntry.writeDown(_sProjectName, _sEnvironment); - } - } - - // ----------------------------------------------------------------------------- - - private void shortWait(int nMilliSec) - { - try - { - Thread.sleep(nMilliSec); - } - catch (InterruptedException ex) - { - } - - } - - // ----------------------------------------------------------------------------- - - public boolean executeScript(String scriptFile) - { - System.out.println("Running " + scriptFile); - - // Process testshl = Runtime.getRuntime().exec(scriptFile); - ProcessHandler aHandler = new ProcessHandler(scriptFile); - boolean bBackValue = aHandler.executeSynchronously(); - return bBackValue; - // return false; - } -} - diff --git a/testshl2/source/testshlrunner/makefile.mk b/testshl2/source/testshlrunner/makefile.mk deleted file mode 100644 index c29ff16e7c08..000000000000 --- a/testshl2/source/testshlrunner/makefile.mk +++ /dev/null @@ -1,44 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Lesser General Public License version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ = ..$/.. - -PRJNAME = TestShl2Runner -TARGET = TestShl2Runner - -# --- Settings ----------------------------------------------------- -.INCLUDE: settings.mk - -# JARFILES = ridl.jar unoil.jar jurt.jar juh.jar -# Tip: -# why 'grep java$$' the $$ is for a real $ and this is for regexp and stays for line end, -# so we prevent us for compiling *.java~ -JAVAFILES = $(foreach,j,$(shell @ls | grep java$$) $j) - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk diff --git a/testshl2/source/versioner.cxx b/testshl2/source/versioner.cxx deleted file mode 100644 index 10040ff8cd5f..000000000000 --- a/testshl2/source/versioner.cxx +++ /dev/null @@ -1,117 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdio.h> -#include <stdlib.h> -#include <string> - -#include "testshl/versionhelper.hxx" - -#include <rtl/ustring.hxx> -#include <iostream> - -// ----------------------------------- Main ----------------------------------- -#if (defined UNX) || (defined OS2) -int main( int, char* argv[] ) -#else -int _cdecl main( int, char* argv[] ) -#endif -{ - static char const * optionSet[] = { - "-time, display time only", - "-date, display date only", - "-upd, display UPD only", - "-minor, display minor only", - "-build, display build only", - "-inpath, display inpath only", - "-verbose, be verbose", - "-h:s, display help or help on option", - "-help:s, see -h", - NULL - }; - - GetOpt opt( argv, optionSet ); - - // someone indicates that he needs help - if ( opt.hasOpt( "-h" ) || opt.hasOpt( "-help" ) ) - { - opt.showUsage(); - exit(0); - } - - if (opt.getParams().empty()) - { - // std::cerr << "error: At least a library should given." << std::endl; - fprintf(stderr, "error: At least a library should given.\n"); - opt.showUsage(); - exit(0); - } - - rtl::OUString suLibraryName = rtl::OStringToOUString(opt.getFirstParam(), RTL_TEXTENCODING_ASCII_US ); - VersionHelper aHelper(suLibraryName, opt); - - if (! aHelper.isOk() ) - { - fprintf(stderr, "error: No version info found.\n"); - exit(1); - } - - if (opt.hasOpt("-time")) - { - fprintf(stdout, "%s\n", aHelper.getTime().getStr()); - } - else if (opt.hasOpt("-date")) - { - fprintf(stdout, "%s\n", aHelper.getDate().getStr()); - } - else if (opt.hasOpt("-upd")) - { - fprintf(stdout, "%s\n", aHelper.getUpd().getStr()); - } - else if (opt.hasOpt("-minor")) - { - fprintf(stdout, "%s\n", aHelper.getMinor().getStr()); - } - else if (opt.hasOpt("-build")) - { - fprintf(stdout, "%s\n", aHelper.getBuild().getStr()); - } - else if (opt.hasOpt("-inpath")) - { - fprintf(stdout, "%s\n", aHelper.getInpath().getStr()); - } - else - { - // std::cout << aHelper << std::endl; - aHelper.printall(stdout); - } - - return 0; -} diff --git a/testshl2/source/versionhelper.cxx b/testshl2/source/versionhelper.cxx deleted file mode 100644 index 2a2f77fbbc6e..000000000000 --- a/testshl2/source/versionhelper.cxx +++ /dev/null @@ -1,124 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_testshl2.hxx" - -#include <stdlib.h> -#include "testshl/versionhelper.hxx" - -#include <rtl/ustring.hxx> -#include <rtl/string.hxx> - -// ----------------------------------------------------------------------------- -VersionHelper::VersionHelper(rtl::OUString const& _sDLLName, GetOpt & _aOptions) - :DynamicLibraryHelper(_sDLLName, _aOptions), - m_pInfo(NULL) -{ - // try to get the entry pointer - FktGetVersionInfoPtr pFunc = (FktGetVersionInfoPtr) - m_pModule->getFunctionSymbol( - rtl::OUString::createFromAscii( "GetVersionInfo" ) ); - - if (pFunc) - { - const VersionInfo *pVersion = (pFunc)(); - m_pInfo = pVersion; - } -} - -//# void VersionHelper::print(std::ostream &stream) -//# { -//# stream << " Time:" << getTime() << std::endl; -//# stream << " Date:" << getDate() << std::endl; -//# stream << " Upd:" << getUpd() << std::endl; -//# stream << " Minor:" << getMinor() << std::endl; -//# stream << " Build:" << getBuild() << std::endl; -//# stream << "Inpath:" << getInpath() << std::endl; -//# } -//# -//# std::ostream & operator <<( std::ostream &stream, VersionHelper &_aVersion ) -//# { -//# _aVersion.print (stream); -//# return stream; -//# } -//# -// ----------------------------------------------------------------------------- - -bool VersionHelper::isOk() const -{ - if (m_pInfo != NULL) return true; - return false; -} - -rtl::OString VersionHelper::getTime() const -{ - return m_pInfo->pTime; -} -rtl::OString VersionHelper::getDate() const -{ - return m_pInfo->pDate; -} -rtl::OString VersionHelper::getUpd() const -{ - return m_pInfo->pUpd; -} -rtl::OString VersionHelper::getMinor() const -{ - return m_pInfo->pMinor; -} -rtl::OString VersionHelper::getBuild() const -{ - return m_pInfo->pBuild; -} -rtl::OString VersionHelper::getInpath() const -{ - return m_pInfo->pInpath; -} - - - -void VersionHelper::printall(FILE * out) -{ - if (isOk()) - { - rtl::OString aStr = getTime(); - fprintf(out, " Time:%s\n", aStr.getStr() ); - fprintf(out, " Date:%s\n", getDate().getStr() ); - fprintf(out, " Upd:%s\n", getUpd().getStr() ); - fprintf(out, " Minor:%s\n", getMinor().getStr() ); - fprintf(out, " Build:%s\n", getBuild().getStr() ); - fprintf(out, "Inpath:%s\n", getInpath().getStr()); - - fflush(out); - } - else - { - fprintf(stderr, "error: No version info found.\n"); - } -} - |