persistentstorage/sqlite3api/TEST/t_sqlitetclstarter.cpp
branchRCL_3
changeset 23 26645d81f48d
--- /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 <e32test.h>
+#include <e32uid.h>
+#include <f32file.h>
+#include <bautils.h>
+
+
+///////////////////////////////////////////////////////////////////////////////////////
+
+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;
+	}