Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "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:
// f32test\server\t_swapfilesystem.cpp
//
//
#include <f32file.h>
#include <e32test.h>
_LIT(KTestString,"t_swapfilesystem");
LOCAL_D RTest test(KTestString);
LOCAL_D RFs TheFs;
LOCAL_D TChar gDriveToTest;
_LIT(KFsNameComposite,"Composite");
_LIT(KFsNameFat, "Fat");
//---------------------------------------------------------------------------------------------
//! @SYMTestCaseID PBASE-T_SWAPFSYS-0602
//! @SYMTestCaseDesc Swap current file system with current file system
//! @SYMDEF DEF101639 RFs::SwapFileSystem is not tested by f32test
//! @SYMTestPriority Medium
//! @SYMTestActions 1. Get name of the file system currently mounted on the drive
//! 2. Swap current file system with the same one
//! @SYMTestExpectedResults 1. Error code KErrAlreadyExists if Composite file is
//! current file system
//! 2. Error code KErrNotSupported if the drive is Z as on this drive,
//! only composite file system can be swapped only once
//! 3. Error codes KErrNone, KErrNotSupported or KErrInUse, otherwise.
//---------------------------------------------------------------------------------------------
LOCAL_C TInt TestSwapFSCurrent(TChar aDriveLetter)
//
// If no file system is mounted / error in getting file system name, skip the test
//
{
TInt err = KErrNone;
TInt driveNumber;
TFileName curFSName;
TFileName newFSName;
test.Next(_L("\nSwap current file system with same file system"));
test.Printf(_L("\nTest is run on drive %c"),TUint(aDriveLetter));
err = TheFs.CharToDrive(aDriveLetter, driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nInvalid drive"));
test(EFalse);
}
// Find current file system name
err = TheFs.FileSystemName(curFSName,driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nSkipping current test as File System is NOT mounted / error in getting the name."));
return (err);
}
test.Printf(_L("\nName of the file system currently mounted on this drive is %s"),curFSName.Ptr());
newFSName = curFSName;
test.Printf(_L("\nName of the file system to be mounted on this drive is %s"),newFSName.Ptr());
err = TheFs.SwapFileSystem(curFSName,newFSName,driveNumber);
test.Printf(_L("\nError code is %d"),err);
if(curFSName.CompareF(KFsNameComposite) == 0)
{
// This is unique case:
// Swap Composite (current) with Composite (new)
test(KErrAlreadyExists == err);
}
else if(driveNumber == EDriveZ)
{
// This is another such case:
// On Z Drive, only Swap with Composite is allowed
test(KErrNotSupported == err);
}
else
{
// Other / generic cases
test(KErrNone == err ||
KErrNotSupported == err ||
KErrInUse == err );
}
test.Printf(_L("\nCurrent test is completed."));
return (KErrNone);
}
//---------------------------------------------------------------------------------------------
//! @SYMTestCaseID PBASE-T_SWAPFSYS-0603
//! @SYMTestCaseDesc Swap current file system with FAT file system
//! @SYMDEF DEF101639 RFs::SwapFileSystem is not tested by f32test
//! @SYMTestPriority Medium
//! @SYMTestActions 1. Get name of the file system currently mounted on the drive
//! 2. Swap the current file system with FAT file system
//! @SYMTestExpectedResults 1. Error code KErrNotSupported on drive Z
//! 2. Error codes KErrNone, KErrNotSupported or KErrInUse, otherwise
//---------------------------------------------------------------------------------------------
LOCAL_C TInt TestSwapFSFat(TChar aDriveLetter)
//
// It is always assumed that FAT is always available!!
// If no file system is mounted / error in getting file system name, skip the test
//
{
TInt err = KErrNone;
TInt driveNumber;
TFileName curFSName;
TFileName newFSName;
test.Next(_L("\nSwap current file system with FAT File System"));
test.Printf(_L("\nTest is run on drive %c"),TUint(aDriveLetter));
err = TheFs.CharToDrive(aDriveLetter, driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nInvalid drive"));
test(EFalse);
}
// Find current file system name
err = TheFs.FileSystemName(curFSName,driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nSkipping current test as File System is NOT mounted / error in getting the name."));
return (err);
}
test.Printf(_L("\nName of the file system currently mounted on this drive is %s"),curFSName.Ptr());
newFSName = KFsNameFat;
test.Printf(_L("\nName of the file system to be mounted on this drive is %s"),newFSName.Ptr());
err = TheFs.SwapFileSystem(curFSName,newFSName,driveNumber);
test.Printf(_L("\nError code is %d"),err);
if(driveNumber == EDriveZ)
{
// This is unique case:
// On Z Drive, only Swap with Composite is allowed
test(KErrNotSupported == err);
}
else
{
// Other / generic cases
test(KErrNone == err ||
KErrNotSupported == err ||
KErrInUse == err );
}
test.Printf(_L("\nCurrent test is completed."));
return (KErrNone);
}
//---------------------------------------------------------------------------------------------
//! @SYMTestCaseID PBASE-T_SWAPFSYS-0604
//! @SYMTestCaseDesc Swap current file system with Composite File System
//! @SYMDEF DEF101639 RFs::SwapFileSystem is not tested by f32test
//! @SYMTestPriority Medium
//! @SYMTestActions 1. Add Composite file system to the file server
//! to know its availability
//! 2. Get the current file system name mounted on the test drive
//! 3. Swap the current file system with Composite file system
//! @SYMTestExpectedResults 1. KErrNotFound is composite file system is not available
//! 2. Error codes KErrAlreadyExists, KErrInUse or KErrNone, on drive Z
//! 3. Error codes KErrNotSupported, KErrAlreadyExists or KErrInUse,
//! on other drives
//---------------------------------------------------------------------------------------------
LOCAL_C TInt TestSwapFSComposite(TChar aDriveLetter)
//
// If no file system is mounted / error in getting file system name, skip the test
//
{
TInt err = KErrNone;
TInt driveNumber;
TFileName curFSName;
TFileName newFSName;
TBool compFSAvailable = EFalse;
test.Next(_L("\nSwap current file system with Composite File System"));
test.Printf(_L("\nTest is run on drive is %c"),TUint(aDriveLetter));
err = TheFs.CharToDrive(aDriveLetter, driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nInvalid drive"));
test(EFalse);
}
err = TheFs.AddFileSystem(_L("ecomp.fsy"));
if (KErrNone == err || KErrAlreadyExists == err)
{
compFSAvailable = ETrue;
}
// Find current file system name
err = TheFs.FileSystemName(curFSName,driveNumber);
if(KErrNone != err)
{
test.Printf(_L("\nFile System NOT mounted. Quiting current test"));
return (err);
}
test.Printf(_L("\nName of the file system currently mounted on this drive is %s"),curFSName.Ptr());
newFSName = KFsNameComposite;
test.Printf(_L("\nName of the file system to be mounted on this drive is %s"),newFSName.Ptr());
err = TheFs.SwapFileSystem(curFSName,newFSName,driveNumber);
test.Printf(_L("\nError code is %d"),err);
if(compFSAvailable)
{
//Composite is available!!
if(driveNumber == EDriveZ)
{
test(KErrAlreadyExists == err ||
KErrInUse == err ||
KErrNone == err );
}
else
{
test(KErrNotSupported == err ||
KErrAlreadyExists == err ||
KErrInUse == err );
}
}
else
{
//Composote NOT available!!
test(KErrNotFound == err);
}
test.Printf(_L("\nCurrent test is completed."));
return (KErrNone);
}
LOCAL_C void ParseCommandArguments()
//
//
//
{
TBuf<0x100> cmd;
User::CommandLine(cmd);
TLex lex(cmd);
TPtrC token=lex.NextToken();
TFileName thisfile=RProcess().FileName();
if (token.MatchF(thisfile)==0)
{
token.Set(lex.NextToken());
}
test.Printf(_L("CLP=%S"),&token);
if(token.Length()!=0)
{
gDriveToTest=token[0];
gDriveToTest.UpperCase();
}
else
gDriveToTest='C';
}
GLDEF_C TInt E32Main()
//
//
//
{
TInt err;
test.Title();
err = TheFs.Connect();
test(KErrNone == err);
ParseCommandArguments();
#if defined(__WINS__)
// The emulator z: drive maps onto the PCs local file system
// and swapping / unmounting it is not allowed.
// Hence, skip the test on emulated Z: drive.
if (gDriveToTest != 'Z')
{
TestSwapFSCurrent(gDriveToTest);
TestSwapFSFat(gDriveToTest);
TestSwapFSComposite(gDriveToTest);
}
#else
TestSwapFSCurrent(gDriveToTest);
TestSwapFSFat(gDriveToTest);
TestSwapFSComposite(gDriveToTest);
#endif
TheFs.Close();
test.Printf(_L("t_swapfilesystem completed successfully"));
test.Close();
return KErrNone;
}