diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-10-12 15:19:21 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-10-15 12:18:44 +0100 |
commit | db5a5ffa82f835c81cf9a411d24f4cb0b1bb8fa5 (patch) | |
tree | 0e320d48ea2ce24a87f33095d2959919333c0b5c /test | |
parent | 528a225ddb1d429eeb048626d5e9e045118bad2e (diff) |
split bootstrapfixture and move test-filters class for sot test
sot is below vcl, but is a filters test, we can split bootstrapfixture
into a vcl needing bit and and non-vcl bit and filters test api
can be standalone and combined with whichever bit in order to form
pre and post vcl filters test
Diffstat (limited to 'test')
-rw-r--r-- | test/inc/test/bootstrapfixture.hxx | 22 | ||||
-rw-r--r-- | test/inc/test/filters-test.hxx | 80 | ||||
-rw-r--r-- | test/prj/d.lst | 1 | ||||
-rw-r--r-- | test/source/bootstrapfixture.cxx | 33 | ||||
-rw-r--r-- | test/source/filters-test.cxx | 147 | ||||
-rw-r--r-- | test/source/makefile.mk | 3 |
6 files changed, 5 insertions, 281 deletions
diff --git a/test/inc/test/bootstrapfixture.hxx b/test/inc/test/bootstrapfixture.hxx index 3c7a91f4180e..3b9a40f515d0 100644 --- a/test/inc/test/bootstrapfixture.hxx +++ b/test/inc/test/bootstrapfixture.hxx @@ -40,6 +40,7 @@ #include "cppunit/TestFixture.h" #include "cppunit/extensions/HelperMacros.h" #include "cppunit/plugin/TestPlugIn.h" +#include "unotest/bootstrapfixturebase.hxx" #include "test/testdllapi.hxx" namespace test { @@ -51,34 +52,15 @@ namespace test { // NB. this class is instantiated multiple times during a // run of unit tests ... -class OOO_DLLPUBLIC_TEST BootstrapFixture : public CppUnit::TestFixture +class OOO_DLLPUBLIC_TEST BootstrapFixture : public BootstrapFixtureBase { bool m_bNeedUCB; bool m_bAssertOnDialog; - ::rtl::OUString m_aSrcRootURL; - ::rtl::OUString m_aSrcRootPath; - -protected: - - com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> m_xContext; - com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> m_xSFactory; - com::sun::star::uno::Reference<com::sun::star::lang::XMultiComponentFactory> m_xFactory; public: BootstrapFixture( bool bAssertOnDialog = true, bool bNeedUCB = true ); virtual ~BootstrapFixture(); - com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> - getComponentContext() { return m_xContext; } - com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> - getMultiServiceFactory() { return m_xSFactory; } - - ::rtl::OUString getSrcRootURL() { return m_aSrcRootURL; } - ::rtl::OUString getSrcRootPath() { return m_aSrcRootPath; } - - // return a URL to a given c-str path from the source directory - ::rtl::OUString getURLFromSrc( const char *pPath ); - virtual void setUp(); virtual void tearDown(); }; diff --git a/test/inc/test/filters-test.hxx b/test/inc/test/filters-test.hxx deleted file mode 100644 index 0cc77c09f4f4..000000000000 --- a/test/inc/test/filters-test.hxx +++ /dev/null @@ -1,80 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Initial Developer of the Original Code is - * Caolán McNamara <caolanm@redhat.com> - * Portions created by the Initial Developer are Copyright (C) 2011 the - * Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Caolán McNamara <caolanm@redhat.com> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include <rtl/ustring.hxx> -#include <test/bootstrapfixture.hxx> -#include "test/testdllapi.hxx" - -namespace test { - -enum filterStatus -{ - fail = 0, - pass = 1, - indeterminate = 2 -}; - -/* - * NOTE, any files beginning with CVE- will be assumed to be encrypted using - * arcfour with key 0x435645, this is to silence panicky virus/malware-checkers - * - * e.g. m[de]crypt --bare -a arcfour -o hex -k 435645 -s 3 - */ -/* Implementation of Filters test */ -class OOO_DLLPUBLIC_TEST FiltersTest : public test::BootstrapFixture -{ -public: - FiltersTest(bool bAssertOnDialog = true, bool bNeedUCB = true) - : BootstrapFixture(bAssertOnDialog, bNeedUCB) - {} - - void testDir( - //filter name - const rtl::OUString &rFilter, - //root dir of test files, must contain pass, fail, indeterminate - const rtl::OUString &rURL, - //additional filter data for SfxFilter - const rtl::OUString &rUserData); - - virtual bool load( - const rtl::OUString &rFilter, - const rtl::OUString &rURL, - const rtl::OUString &rUserData) = 0; - -protected: - void recursiveScan( - const rtl::OUString &rFilter, - const rtl::OUString &rURL, - const rtl::OUString &rUserData, - filterStatus nExpected); -}; - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/prj/d.lst b/test/prj/d.lst index 84491d1f2198..9211e33b9131 100644 --- a/test/prj/d.lst +++ b/test/prj/d.lst @@ -6,4 +6,3 @@ mkdir: %_DEST%\inc\test ..\%__SRC%\lib\libtest.dll.a %_DEST%\lib\libtest.dll.a ..\inc\test\testdllapi.hxx %_DEST%\inc\test\testdllapi.hxx ..\inc\test\bootstrapfixture.hxx %_DEST%\inc\test\bootstrapfixture.hxx -..\inc\test\filters-test.hxx %_DEST%\inc\test\filters-test.hxx diff --git a/test/source/bootstrapfixture.cxx b/test/source/bootstrapfixture.cxx index 5f246979e8ec..dccd3a4b08c6 100644 --- a/test/source/bootstrapfixture.cxx +++ b/test/source/bootstrapfixture.cxx @@ -61,18 +61,7 @@ static void aBasicErrorFunc( const String &rErr, const String &rAction ) test::BootstrapFixture::BootstrapFixture( bool bAssertOnDialog, bool bNeedUCB ) : m_bNeedUCB( bNeedUCB ) , m_bAssertOnDialog( bAssertOnDialog ) - , m_aSrcRootURL(RTL_CONSTASCII_USTRINGPARAM("file://")) { - const char* pSrcRoot = getenv( "SRC_ROOT" ); - CPPUNIT_ASSERT_MESSAGE("SRC_ROOT env variable not set", pSrcRoot != NULL && pSrcRoot[0] != 0); - -#ifdef WNT - if (pSrcRoot[1] == ':') - m_aSrcRootURL += rtl::OUString::createFromAscii( "/" ); -#endif - m_aSrcRootPath = rtl::OUString::createFromAscii( pSrcRoot ); - m_aSrcRootURL += m_aSrcRootPath; - // force locale (and resource files loaded) to en-US const LanguageType eLang=LANGUAGE_ENGLISH_US; @@ -84,20 +73,7 @@ test::BootstrapFixture::BootstrapFixture( bool bAssertOnDialog, bool bNeedUCB ) void test::BootstrapFixture::setUp() { - // set UserInstallation to user profile dir in test/user-template - rtl::Bootstrap aDefaultVars; - aDefaultVars.set( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("UserInstallation") ), - getURLFromSrc("/test/user-template")); - - m_xContext = cppu::defaultBootstrap_InitialComponentContext(); - m_xFactory = m_xContext->getServiceManager(); - m_xSFactory = uno::Reference<lang::XMultiServiceFactory> (m_xFactory, uno::UNO_QUERY_THROW); - - // Without this we're crashing because callees are using - // getProcessServiceFactory. In general those should be removed in favour - // of retaining references to the root ServiceFactory as its passed around - comphelper::setProcessServiceFactory(m_xSFactory); - + test::BootstrapFixtureBase::setUp(); if (m_bNeedUCB) { // initialise UCB-Broker @@ -128,16 +104,11 @@ void test::BootstrapFixture::setUp() void test::BootstrapFixture::tearDown() { ucbhelper::ContentBroker::get()->deinitialize(); - // uno::Reference< lang::XComponent >(m_xContext, uno::UNO_QUERY_THROW)->dispose(); + test::BootstrapFixtureBase::tearDown(); } test::BootstrapFixture::~BootstrapFixture() { } -::rtl::OUString test::BootstrapFixture::getURLFromSrc( const char *pPath ) -{ - return m_aSrcRootURL + rtl::OUString::createFromAscii( pPath ); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/source/filters-test.cxx b/test/source/filters-test.cxx deleted file mode 100644 index f36e01494768..000000000000 --- a/test/source/filters-test.cxx +++ /dev/null @@ -1,147 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * Version: MPL 1.1 / GPLv3+ / LGPLv3+ - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Initial Developer of the Original Code is - * Caolán McNamara <caolanm@redhat.com> - * Portions created by the Initial Developer are Copyright (C) 2011 the - * Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Caolán McNamara <caolanm@redhat.com> - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 3 or later (the "GPLv3+"), or - * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), - * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable - * instead of those above. - */ - -#include <test/filters-test.hxx> -#include <osl/file.hxx> -#include <osl/thread.h> -#include <rtl/cipher.h> - -using namespace ::com::sun::star; - -namespace test { - -void decode(const rtl::OUString& rIn, const rtl::OUString &rOut) -{ - rtlCipher cipher = rtl_cipher_create(rtl_Cipher_AlgorithmARCFOUR, rtl_Cipher_ModeStream); - CPPUNIT_ASSERT_MESSAGE("cipher creation failed", cipher != 0); - - //mcrypt --bare -a arcfour -o hex -k 435645 -s 3 - const sal_uInt8 aKey[3] = {'C', 'V', 'E'}; - - rtlCipherError result = rtl_cipher_init(cipher, rtl_Cipher_DirectionDecode, aKey, SAL_N_ELEMENTS(aKey), 0, 0); - - CPPUNIT_ASSERT_MESSAGE("cipher init failed", result == rtl_Cipher_E_None); - - osl::File aIn(rIn); - CPPUNIT_ASSERT(osl::FileBase::E_None == aIn.open(osl_File_OpenFlag_Read)); - - osl::File aOut(rOut); - CPPUNIT_ASSERT(osl::FileBase::E_None == aOut.open(osl_File_OpenFlag_Write)); - - sal_uInt8 in[8192]; - sal_uInt8 out[8192]; - sal_uInt64 nBytesRead, nBytesWritten; - while(1) - { - CPPUNIT_ASSERT(osl::FileBase::E_None == aIn.read(in, sizeof(in), nBytesRead)); - if (!nBytesRead) - break; - CPPUNIT_ASSERT(rtl_Cipher_E_None == rtl_cipher_decode(cipher, in, nBytesRead, out, sizeof(out))); - CPPUNIT_ASSERT(osl::FileBase::E_None == aOut.write(out, nBytesRead, nBytesWritten)); - CPPUNIT_ASSERT(nBytesRead == nBytesWritten); - } - - rtl_cipher_destroy(cipher); -} - -void FiltersTest::recursiveScan(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData, - filterStatus nExpected) -{ - osl::Directory aDir(rURL); - - CPPUNIT_ASSERT(osl::FileBase::E_None == aDir.open()); - osl::DirectoryItem aItem; - osl::FileStatus aFileStatus(osl_FileStatus_Mask_FileURL|osl_FileStatus_Mask_Type); - while (aDir.getNextItem(aItem) == osl::FileBase::E_None) - { - aItem.getFileStatus(aFileStatus); - rtl::OUString sURL = aFileStatus.getFileURL(); - if (aFileStatus.getFileType() == osl::FileStatus::Directory) - recursiveScan(rFilter, sURL, rUserData, nExpected); - else - { - rtl::OUString sTmpFile; - bool bCVE = false; - - sal_Int32 nLastSlash = sURL.lastIndexOf('/'); - - if ((nLastSlash != -1) && (nLastSlash+1 < sURL.getLength())) - { - //ignore .files - if (sURL.getStr()[nLastSlash+1] == '.') - continue; - - if (sURL.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("CVE"), nLastSlash+1)) - bCVE = true; - } - - rtl::OString aRes(rtl::OUStringToOString(sURL, - osl_getThreadTextEncoding())); - - if (bCVE) - { - CPPUNIT_ASSERT(osl::FileBase::E_None == osl::FileBase::createTempFile(NULL, NULL, &sTmpFile)); - decode(sURL, sTmpFile); - sURL = sTmpFile; - } - - //output name early, so in the case of a hang, the name of - //the hanging input file is visible - fprintf(stderr, "%s,", aRes.getStr()); - sal_uInt32 nStartTime = osl_getGlobalTimer(); - bool bRes = load(rFilter, sURL, rUserData); - sal_uInt32 nEndTime = osl_getGlobalTimer(); - - if (bCVE) - CPPUNIT_ASSERT(osl::FileBase::E_None == osl::File::remove(sTmpFile)); - - fprintf(stderr, "%s,%"SAL_PRIuUINT32"\n", - bRes?"Pass":"Fail",nEndTime-nStartTime); - if (nExpected == test::indeterminate) - continue; - CPPUNIT_ASSERT_MESSAGE(aRes.getStr(), bRes == (nExpected == test::pass)); - } - } - CPPUNIT_ASSERT(osl::FileBase::E_None == aDir.close()); -} - -void FiltersTest::testDir(const rtl::OUString &rFilter, const rtl::OUString &rURL, const rtl::OUString &rUserData) -{ - fprintf(stderr, "File tested,Test Result,Execution Time (ms)\n"); - recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pass")), - rUserData, test::pass); - recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("fail")), - rUserData, test::fail); - recursiveScan(rFilter, rURL + rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("indeterminate")), - rUserData, test::indeterminate); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/source/makefile.mk b/test/source/makefile.mk index 6f68b71ae24d..63109a819019 100644 --- a/test/source/makefile.mk +++ b/test/source/makefile.mk @@ -38,8 +38,7 @@ CDEFS += -DOOO_DLLIMPLEMENTATION_TEST CFLAGSCXX += $(CPPUNIT_CFLAGS) SLOFILES = \ - $(SLO)/bootstrapfixture.obj \ - $(SLO)/filters-test.obj + $(SLO)/bootstrapfixture.obj .IF "$(CROSS_COMPILING)" == "YES" SHL1IMPLIB = $(SHL1TARGET) |