diff -r 28839de615b4 -r 26645d81f48d persistentstorage/sqlite3api/TEST/t_sqlitetclstarter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sqlite3api/TEST/t_sqlitetclstarter.cpp Tue Aug 31 16:57:14 2010 +0300 @@ -0,0 +1,166 @@ +// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include +#include +#include + + +/////////////////////////////////////////////////////////////////////////////////////// + +RTest TheTest(_L("t_sqlitetclstarter")); + +_LIT(KTclExecutableName,"tclsqlite3.exe"); +_LIT(KTclScriptName,"all.test"); + +_LIT(KStdioConfigFilePath, "C:\\system\\data\\"); +_LIT(KStdioConfigFile, "C:\\system\\data\\config.ini"); + +_LIT(KLogsFilePath, "C:\\logs\\testexecute\\"); + +RFs theFs; + +/////////////////////////////////////////////////////////////////////////////////////// + +// +// Creates the appropriate stdio ini file to redirect stdio output to a file +// + +void CreateIniFileForStdoutRedirection(void) + { + TInt err(KErrNone); + + // check path exists otherwise create + if (!BaflUtils::FolderExists(theFs, KStdioConfigFilePath)) + { + err = theFs.MkDirAll(KStdioConfigFilePath); + TheTest(err == KErrNone, __LINE__); + } + + + // create file + RFile file; + err = file.Create(theFs, KStdioConfigFile, EFileRead | EFileWrite); + TheTest(err == KErrNone, __LINE__); + + TheTest(KErrNone == file.Write(_L8("[STDIO]\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("STDIN = MEDIA1\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("STDOUT = MEDIA2\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("[MEDIA1]\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("type = console\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("width = -1\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("height = -1\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("[MEDIA2]\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("type = file\r\n")), __LINE__); + TheTest(KErrNone == file.Write(_L8("path = C:\\logs\\testexecute\\t_sqlitetclstarter.htm\r\n")), __LINE__); + TheTest(KErrNone == file.Flush(),__LINE__); + + file.Close(); + + } + +/////////////////////////////////////////////////////////////////////////////////////// + +// +// Deletes the stdio ini file +// + +void DeleteIniFileForStdoutRedirection(void) + { + TInt err = theFs.Delete(KStdioConfigFile); + TheTest(err == KErrNone || err==KErrNotFound || err==KErrPathNotFound, __LINE__); + } + +/////////////////////////////////////////////////////////////////////////////////////// + +// +// Ensure the directory for the Logs file exists +// + +void EnsureLogsDirectoryExists(void) + { + TInt err(KErrNone); + + // check path exists otherwise create + if (!BaflUtils::FolderExists(theFs, KLogsFilePath)) + { + err = theFs.MkDirAll(KLogsFilePath); + TheTest(err == KErrNone, __LINE__); + } + } + +/////////////////////////////////////////////////////////////////////////////////////// + +// +// Start the tcl process with a script +// + +void StartTclProcess(void) + { + RProcess process; + TInt err = process.Create(KTclExecutableName,KTclScriptName); + TheTest(err==KErrNone, __LINE__); + + TRequestStatus processStatus; + process.Logon(processStatus); + + process.Resume(); + + TheTest.Printf(_L("Wait for TCL tests to finish\r\n")); + + User::WaitForRequest(processStatus); + + TheTest.Printf(_L("TCL tests finished %d\r\n"),processStatus.Int()); + + TheTest(processStatus.Int() == KErrNone, __LINE__); + } + +/////////////////////////////////////////////////////////////////////////////////////// + +TInt E32Main() + { + TheTest.Title(); + TheTest.Start(_L("TCL tests")); + + CTrapCleanup* tc = CTrapCleanup::New(); + + __UHEAP_MARK; + + TInt err = theFs.Connect(); + TheTest(err == KErrNone, __LINE__); + + DeleteIniFileForStdoutRedirection(); + + CreateIniFileForStdoutRedirection(); + + EnsureLogsDirectoryExists(); + + StartTclProcess(); + + DeleteIniFileForStdoutRedirection(); + + theFs.Close(); + + __UHEAP_MARKEND; + + TheTest.End(); + TheTest.Close(); + + delete tc; + + User::Heap().Check(); + return KErrNone; + }