From a573e115e0184b3476d1cc435fad2f5ed816b3ce Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 12 Feb 2015 11:55:56 +0000 Subject: [PATCH] codetools: FilenameIsMatching: fixed comparing mask with / at end and file has not git-svn-id: trunk@47717 - --- components/codetools/fileprocs.pas | 2 ++ test/codetoolstests/testbasiccodetools.pas | 6 ++++-- test/runtests.lpi | 1 - 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/components/codetools/fileprocs.pas b/components/codetools/fileprocs.pas index 769c5f4960..ceff37bce5 100644 --- a/components/codetools/fileprocs.pas +++ b/components/codetools/fileprocs.pas @@ -1624,6 +1624,8 @@ function FilenameIsMatching(const Mask, Filename: string; MatchExactly: boolean // treat several PathDelim as one while MaskP^=PathDelim do inc(MaskP); while FileP^=PathDelim do inc(FileP); + if MaskP^=#0 then + exit((FileP^=#0) or not MatchExactly); end; '?': begin diff --git a/test/codetoolstests/testbasiccodetools.pas b/test/codetoolstests/testbasiccodetools.pas index 1dccb427ea..e3c8e85bbb 100644 --- a/test/codetoolstests/testbasiccodetools.pas +++ b/test/codetoolstests/testbasiccodetools.pas @@ -282,7 +282,7 @@ procedure TTestBasicCodeTools.TestFilenameIsMatching; begin Actual:=FilenameIsMatching(aMask,aFilename,aExactly); if Actual=Expected then exit; - AssertEquals('FilenameIsMatching failed: Mask="'+aMask+'" File="'+aFilename+'" Exactly='+dbgs(aExactly),Expected,Actual); + AssertEquals('Mask="'+aMask+'" File="'+aFilename+'" Exactly='+dbgs(aExactly),Expected,Actual); end; begin @@ -307,7 +307,9 @@ begin t('/abc/','/abc//',true,true); t('/abc/','/abc//',false,true); t('/abc/','/abc/.',true,false); - t('/abc/','/abc/.',false,false); + t('/abc/','/abc/.',false,true); + t('/abc/','/abc/d',true,false); + t('/abc/','/abc/d',false,true); // /abc/x?z/www matches /abc/xyz/www, /abc/xaz/www // but not /abc/x/z/www diff --git a/test/runtests.lpi b/test/runtests.lpi index 515428bf55..5aa2b1f624 100644 --- a/test/runtests.lpi +++ b/test/runtests.lpi @@ -102,7 +102,6 @@ -