Free the lizard
git-svn-id: svn://10.0.0.236/trunk@10 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
286
mozilla/cmd/winfe/testcase.cpp
Normal file
286
mozilla/cmd/winfe/testcase.cpp
Normal file
@@ -0,0 +1,286 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public License
|
||||
* Version 1.0 (the "NPL"); you may not use this file except in
|
||||
* compliance with the NPL. You may obtain a copy of the NPL at
|
||||
* http://www.mozilla.org/NPL/
|
||||
*
|
||||
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||||
* for the specific language governing rights and limitations under the
|
||||
* NPL.
|
||||
*
|
||||
* The Initial Developer of this code under the NPL is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||||
* Reserved.
|
||||
*/
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "testcase.h"
|
||||
#include "resource.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
|
||||
// global variable to access Testcase
|
||||
extern CTestCase QA_TestCase;
|
||||
|
||||
// Assigns sTestID, sLogFile and sStartTime
|
||||
CTestCase::CTestCase(CTestCaseManager *tc)
|
||||
{
|
||||
|
||||
CFile fFile;
|
||||
m_sTestID = tc->GetTestCaseName();
|
||||
|
||||
m_TCManager = tc;
|
||||
CString sDataPath = tc->m_sDataPath;
|
||||
|
||||
|
||||
m_sBaseFile = (CString)(sDataPath + m_sTestID + ".bas");
|
||||
m_sResultFile = (CString)(sDataPath + m_sTestID + ".ran");
|
||||
m_sBeakerFile = "c:\\harness.log"; // DOS and Windows only path format
|
||||
|
||||
|
||||
// if BaseLine File doesn't exist then log run to a .bas file instead of a .log file
|
||||
if (!m_TCManager->FileExists(m_sBaseFile))
|
||||
{
|
||||
m_sLogFile = m_sBaseFile;
|
||||
m_bCreateBaseLine = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sLogFile = (CString)(sDataPath + m_sTestID + ".log");
|
||||
// remove previous log file
|
||||
if (m_TCManager->FileExists(m_sLogFile))
|
||||
{
|
||||
CFile fFile;
|
||||
fFile.Remove(m_sLogFile);
|
||||
}
|
||||
m_bCreateBaseLine = FALSE;
|
||||
}
|
||||
|
||||
|
||||
// remove .ran file
|
||||
if (m_TCManager->FileExists(m_sResultFile))
|
||||
fFile.Remove(m_sResultFile);
|
||||
|
||||
// create .ran file
|
||||
fFile.Open(m_sResultFile,CFile::modeCreate | CFile::shareDenyNone);
|
||||
fFile.Close();
|
||||
|
||||
fFile.Open(m_sLogFile,CFile::modeCreate | CFile::shareDenyNone);
|
||||
fFile.Close();
|
||||
|
||||
// create c:\harness.log file
|
||||
fFile.Open(m_sBeakerFile,CFile::modeCreate | CFile::shareDenyNone);
|
||||
fFile.Close();
|
||||
|
||||
|
||||
// Log Clock
|
||||
char tmpbuf[128];
|
||||
|
||||
_strdate( tmpbuf );
|
||||
m_sStartTimeString = (CString)((CString)"Start Date/Time: " + tmpbuf + " ");
|
||||
m_sStartDate = (CString)(tmpbuf);
|
||||
|
||||
_strtime( tmpbuf );
|
||||
m_sStartTimeString += (CString)(tmpbuf);
|
||||
m_sStartTime = (CString)(tmpbuf);
|
||||
|
||||
m_sExpectedResults = " ";
|
||||
m_sActualResults = "Some Error";
|
||||
|
||||
// Log a header at the Top of the (.all) file
|
||||
CString sHeader = "\n++Testcase : " + m_sTestID;
|
||||
m_TCManager->PrintToFile(sHeader);
|
||||
|
||||
PhaseTwoIsFalse(); // added by par
|
||||
m_bFileCompareResult = FALSE; // added by par
|
||||
}
|
||||
|
||||
|
||||
CTestCase::~CTestCase()
|
||||
{
|
||||
// release memory
|
||||
m_sTestID.Empty();
|
||||
m_sBaseFile.Empty();
|
||||
m_sLogFile.Empty();
|
||||
m_sResultFile.Empty();
|
||||
m_sStartDate.Empty();
|
||||
m_sStartTime.Empty();
|
||||
m_sStartTimeString.Empty();
|
||||
m_sEndTime.Empty();
|
||||
m_sEndTimeString.Empty();
|
||||
m_sManualResult.Empty();
|
||||
}
|
||||
|
||||
|
||||
// Compares two log files.
|
||||
// returns result.
|
||||
|
||||
void CTestCase::LogResult()
|
||||
{
|
||||
CStdioFile fResultFile;
|
||||
CString sResult;
|
||||
|
||||
// check if creating baseline or there was an actual compare
|
||||
if (!m_bCreateBaseLine)
|
||||
sResult = "File Compare Result: " + (m_bFileCompareResult ? "PASS" : "*** FAILED - Check "+ m_sLogFile);
|
||||
else
|
||||
sResult = "Created BaseLine File - " + m_sBaseFile;
|
||||
|
||||
if (m_bPhaseTwoResult) // TRUE
|
||||
sResult = sResult + "\n" + "Phase Two Result: PASS";
|
||||
else
|
||||
sResult = sResult + "\n" + "Phase Two Result: FAIL";
|
||||
|
||||
if (!m_bCreateBaseLine)
|
||||
{
|
||||
if (m_bFileCompareResult && m_bPhaseTwoResult) {
|
||||
sResult = sResult + "\n" + "Overall Test Result: PASS";
|
||||
m_bOverallResult = TRUE;
|
||||
} else {
|
||||
sResult = sResult + "\n" + "Overall Test Result: FAIL";
|
||||
m_bOverallResult = FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
sResult = sResult + "\n" + "Overall Test Result: N/A";
|
||||
|
||||
// Print Result to files (.ran)
|
||||
PrintToFile(m_sResultFile,sResult);
|
||||
|
||||
// (.all)
|
||||
m_TCManager->PrintToFile(sResult);
|
||||
|
||||
// Print Times to files (.ran)
|
||||
CString sTimes = m_sStartTimeString + "\n" + m_sEndTimeString;
|
||||
PrintToFile(m_sResultFile,sTimes);
|
||||
|
||||
// (.all)
|
||||
m_TCManager->PrintToFile(sTimes);
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Compares 2 files one line at a time.
|
||||
BOOL CTestCase::FileCompare()
|
||||
{
|
||||
BOOL bResult=FALSE;
|
||||
CStdioFile fBase, fCompare;
|
||||
CString sLine_Base, sLine_Comp;
|
||||
|
||||
if (m_TCManager->FileExists(m_sLogFile))
|
||||
{
|
||||
if (fBase.Open((LPCTSTR)m_sBaseFile,CFile::modeRead) && \
|
||||
fCompare.Open((LPCTSTR)m_sLogFile, CFile::modeRead))
|
||||
{
|
||||
// verify line at a time
|
||||
while (fBase.ReadString(sLine_Base) && fCompare.ReadString(sLine_Comp) && bResult)
|
||||
bResult = (sLine_Base.Compare(sLine_Comp) == 0 ? 1 : 0);
|
||||
|
||||
fBase.Close();
|
||||
fCompare.Close();
|
||||
bResult = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return bResult;
|
||||
}
|
||||
|
||||
void CTestCase::QA_Trace(CString msg)
|
||||
{
|
||||
// write to Log File (.bas if doesn't exist, otherwise .log)
|
||||
PrintToFile(m_sLogFile,msg);
|
||||
}
|
||||
|
||||
void CTestCase::QA_LogError(CString msg)
|
||||
{
|
||||
// write to Overall File (.all)
|
||||
m_TCManager->PrintToFile(msg);
|
||||
|
||||
// write to Testcase Result File (.ran)
|
||||
PrintToFile(m_sResultFile, msg);
|
||||
}
|
||||
|
||||
void CTestCase::WrapUp()
|
||||
{
|
||||
//Log End Time
|
||||
char tmpbuf[128];
|
||||
|
||||
_strdate( tmpbuf );
|
||||
m_sEndTimeString = (CString)((CString)"End Date/Time: " + tmpbuf + " ");
|
||||
m_sEndDate = (CString)(tmpbuf);
|
||||
|
||||
_strtime( tmpbuf );
|
||||
m_sEndTimeString += (CString)(tmpbuf);
|
||||
m_sEndTime = (CString)(tmpbuf);
|
||||
|
||||
|
||||
if (!m_bCreateBaseLine)
|
||||
m_bFileCompareResult = FileCompare();
|
||||
|
||||
LogResult();
|
||||
LogBeakerResult(); // new
|
||||
}
|
||||
|
||||
void CTestCase::PrintToFile(CString& sFile, CString& str)
|
||||
{
|
||||
CStdioFile fFile;
|
||||
|
||||
if (fFile.Open(sFile, CFile::modeWrite | CFile::shareDenyNone))
|
||||
{
|
||||
fFile.Seek(0, CFile::end);
|
||||
// write to Testcase Log File
|
||||
fFile.WriteString(str + "\n");
|
||||
fFile.Flush();
|
||||
fFile.Close();
|
||||
}
|
||||
}
|
||||
|
||||
void CTestCase::LogBeakerResult()
|
||||
{
|
||||
// Offical Beaker format is
|
||||
// (machine), -pass-, Test_case_Name/Beaker, Test_Case_Name, Date, Time Start, Time End, Expected Results, Actual Results
|
||||
|
||||
CStdioFile fResultFile;
|
||||
CString sResult;
|
||||
|
||||
sResult = "(local), "; // standard
|
||||
|
||||
// check if creating baseline or there was an actual compare
|
||||
if (!m_bOverallResult)
|
||||
sResult = sResult + "*FAIL*, ";
|
||||
else
|
||||
sResult = sResult + "-pass-, ";
|
||||
|
||||
CString TestCaseName = m_TCManager->GetTestCaseName();
|
||||
sResult = sResult + (LPCTSTR) TestCaseName + "\\Beaker, ";
|
||||
sResult = sResult + (LPCTSTR) TestCaseName + ", ";
|
||||
|
||||
// log the date
|
||||
char tmpbuf[128];
|
||||
_strdate( tmpbuf );
|
||||
CString TodayDate = (CString)(tmpbuf);
|
||||
|
||||
sResult = sResult + m_sStartDate + ", " + m_sStartTime + ", " + m_sEndTime + ", ";
|
||||
|
||||
|
||||
|
||||
if (!m_bOverallResult) {
|
||||
sResult = sResult + m_sExpectedResults + ", ";
|
||||
sResult = sResult + m_sActualResults;
|
||||
} else {
|
||||
// do nothing as no need to post actual results
|
||||
sResult = sResult + ", ";
|
||||
}
|
||||
|
||||
// Print Result to Beaker file (harness.log)
|
||||
PrintToFile(m_sBeakerFile,sResult);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user