From 49aa26354eb81bdef97f523afc1fbcb0e34492a9 Mon Sep 17 00:00:00 2001 From: bigchimp Date: Sat, 19 Jul 2014 09:20:47 +0000 Subject: [PATCH] fpspreadsheet: improve temp file handling in tests git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3333 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/tests/internaltests.pas | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/components/fpspreadsheet/tests/internaltests.pas b/components/fpspreadsheet/tests/internaltests.pas index 0b0f4e8c3..d0d098188 100644 --- a/components/fpspreadsheet/tests/internaltests.pas +++ b/components/fpspreadsheet/tests/internaltests.pas @@ -30,6 +30,12 @@ type private procedure NeedVirtualCellData(Sender: TObject; ARow, ACol: Cardinal; var AValue:Variant; var AStyleCell: PCell); + // Gets new empty temp file and returns the file name + // Removes any existing file by that name + // Should be called just before writing to the file as + // GetTempFileName is used which does not guarantee + // file uniqueness + function NewTempFile: String; protected // Set up expected values: procedure SetUp; override; @@ -73,6 +79,18 @@ uses const InternalSheet = 'Internal'; //worksheet name +function TSpreadInternalTests.NewTempFile: String; +var + tempFile: String; +begin + TempFile := GetTempFileName; + if FileExists(TempFile) then + begin + DeleteFile(TempFile); + sleep(40); //e.g. on Windows, give file system chance to perform changes + end; + Result:=tempFile; +end; procedure TSpreadInternalTests.GetSheetByIndex; var @@ -114,15 +132,12 @@ var MyWorkbook: TsWorkbook; TempFile: string; begin - TempFile:=GetTempFileName; - if fileexists(TempFile) then - DeleteFile(TempFile); - // Write out first file MyWorkbook:=TsWorkbook.Create; try MyWorkSheet:=MyWorkBook.AddWorksheet(InternalSheet); MyWorkSheet.WriteUTF8Text(0,0,FirstFileCellText); + TempFile:=NewTempFile; MyWorkBook.WriteToFile(TempFile,sfExcel8,false); finally MyWorkbook.Free; @@ -308,10 +323,6 @@ var value: Double; s: String; begin - TempFile := GetTempFileName; - if FileExists(TempFile) then - DeleteFile(TempFile); - workbook := TsWorkbook.Create; try worksheet := workbook.AddWorksheet('VirtualMode'); @@ -322,6 +333,7 @@ begin workbook.VirtualRowCount := Length(SollNumbers) + 4; // We'll use only the first 4 SollStrings, the others cause trouble due to utf8 and formatting. workbook.OnNeedCellData := @NeedVirtualCellData; + tempFile:=NewTempFile; workbook.WriteToFile(tempfile, AFormat, true); finally workbook.Free;