Update contrib.
2 * Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
19 #include "SyntaxTest.h"
23 TInt CSyntaxTest::nInstances = 0;
24 _LIT(KSyntaxLogFile, "WTLSCERTSyntaxLog.txt");
25 _LIT(KPathStart, "<path>");
27 //////////////////////////////////////////////////////////////////////
28 // Construction/Destruction
29 //////////////////////////////////////////////////////////////////////
31 CTestAction* CSyntaxTest::NewL(RFs& aFs, CConsoleBase& aConsole,
32 Output& aOut, const TTestActionSpec& aTestActionSpec)
34 CTestAction* self = CSyntaxTest::NewLC(aFs, aConsole, aOut, aTestActionSpec);
35 CleanupStack::Pop(self);
39 CTestAction* CSyntaxTest::NewLC(RFs& aFs, CConsoleBase& aConsole,
40 Output& aOut, const TTestActionSpec& aTestActionSpec)
42 CSyntaxTest* self = new(ELeave) CSyntaxTest(aFs, aConsole, aOut);
43 CleanupStack::PushL(self);
44 self->ConstructL(aTestActionSpec);
48 CSyntaxTest::CSyntaxTest(RFs& aFs,
49 CConsoleBase& aConsole,
51 : CTestAction(aConsole, aOut), iFs(aFs)
56 CSyntaxTest::~CSyntaxTest(void)
64 void CSyntaxTest::ConstructL(const TTestActionSpec& aTestActionSpec)
66 CTestAction::ConstructL(aTestActionSpec);
70 HBufC* body = HBufC::NewLC(aTestActionSpec.iActionBody.Length());
72 body->Des().Copy(aTestActionSpec.iActionBody);
73 TPtrC chainBuf = Input::ParseElement(*body, KPathStart);
75 CleanupStack::PopAndDestroy();
76 User::LeaveIfError(iLogFile.Replace(iFs,KSyntaxLogFile,EFileWrite));
77 iSyntaxOut = new(ELeave) FileOutput(iLogFile);
78 iWriter = new(ELeave) WTLSCertWriter(iSyntaxOut);
82 SetScriptError(ESyntax, _L("Only one syntax test can be run in each script"));
88 void CSyntaxTest::DoPerformPrerequisite(TRequestStatus& aStatus)
90 HBufC *searchPath = HBufC::NewLC(iPath.Size() + 1);
91 TPtr searchPathPtr(searchPath->Des());
92 searchPathPtr.Copy(iPath);
93 searchPathPtr.Append(_L("*"));
94 TInt err = iFs.GetDir(searchPathPtr, KEntryAttMaskSupported, ESortByName, iDirList);
97 iConsole.Printf(_L("Error getting directory "));
98 iConsole.Printf(searchPathPtr);
99 iConsole.Printf(_L("\n"));
100 iOut.writeString(_L("Error getting directory "));
101 iOut.writeString(searchPathPtr);
104 TRequestStatus* status = &aStatus;
105 User::RequestComplete(status, KErrNone);
106 SetScriptError(EFileNotFound, searchPathPtr);
110 iConsole.Printf(_L("Please view "));
111 iConsole.Printf(KSyntaxLogFile);
112 iConsole.Printf(_L(" for results\n"));
113 iOut.writeString(_L("Please view "));
114 iOut.writeString(KSyntaxLogFile);
115 iOut.writeString(_L(" for results"));
117 iActionState = EAction;
118 TRequestStatus* status = &aStatus;
119 User::RequestComplete(status, KErrNone);
122 CleanupStack::PopAndDestroy();
125 void CSyntaxTest::DoPerformPostrequisite(TRequestStatus& aStatus)
127 TRequestStatus* status = &aStatus;
129 User::RequestComplete(status, KErrNone);
132 void CSyntaxTest::ReadAndSyntaxCheckL(const TDesC &aFilename)
134 iSyntaxOut->writeString(aFilename);
135 iSyntaxOut->writeNewLine();
136 HBufC8* buf = Input::ReadFileLC(aFilename, iPath, iFs);
137 CWTLSCertificate* cert = CWTLSCertificate::NewLC(buf->Des());
139 iWriter->WriteCert(*cert);
140 CleanupStack::PopAndDestroy(2);//cert, buf
143 void CSyntaxTest::PerformAction(TRequestStatus& aStatus)
145 TBuf<256> filename = (*iDirList)[nFileNumber].iName;
147 TRAPD(error, ReadAndSyntaxCheckL(filename));
149 if (error !=KErrNone)
152 if (error == KErrArgument)
154 iConsole.Printf(_L("certificate file %S wrongly encoded\n"),&filename);
155 iOut.writeString(filename);
156 iOut.writeString(_L(" wrongly encoded"));
159 if (error == KErrNotSupported)
162 iConsole.Printf(_L("certificate file %S not supported\n"),&filename);
163 iOut.writeString(filename);
164 iOut.writeString(_L(" not supported"));
169 iConsole.Printf(_L("err=%d\n"), error);
174 iSyntaxOut->writeNewLine();
175 iConsole.Printf(_L("certificate %S parsed successfully\n"), &filename);
179 if(nFileNumber == iDirList->Count())
181 iActionState = EPostrequisite;
183 TRequestStatus* status = &aStatus;
184 User::RequestComplete(status, KErrNone);
187 void CSyntaxTest::DoReportAction()
189 iConsole.Printf(_L("\n"));
192 void CSyntaxTest::DoCheckResult(TInt /*aError*/)