From 184d20cb06bf7429d1a867fafdd8b6c484a87c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Sat, 21 Jan 2023 21:43:12 +0100 Subject: [PATCH] * Fix some tests after recent changes, better test for special dirs --- packages/vcl-compat/tests/tciotuils.pas | 79 ++++++++++++++++--------- 1 file changed, 50 insertions(+), 29 deletions(-) diff --git a/packages/vcl-compat/tests/tciotuils.pas b/packages/vcl-compat/tests/tciotuils.pas index 08f8afe9ea..2f9811ade2 100644 --- a/packages/vcl-compat/tests/tciotuils.pas +++ b/packages/vcl-compat/tests/tciotuils.pas @@ -630,16 +630,37 @@ begin end; -(* We assume Standard values for linux/ -XDG_DESKTOP_DIR="$HOME/Desktop" -XDG_DOWNLOAD_DIR="$HOME/Downloads" -XDG_TEMPLATES_DIR="$HOME/Templates" -XDG_PUBLICSHARE_DIR="$HOME/Public" -XDG_DOCUMENTS_DIR="$HOME/Documents" -XDG_MUSIC_DIR="$HOME/Music" -XDG_PICTURES_DIR="$HOME/Pictures" -XDG_VIDEOS_DIR="$HOME/Videos" -*) +{$IFDEF UNIX} +//Names : array[TSpecialDir] of string +// = ('DESKTOP', 'DOCUMENTS', 'DOWNLOAD', 'MUSIC', 'PICTURES', 'PUBLICSHARE', 'TEMPLATES', 'VIDEOS'); + + +function UnixSpecialDir(const AType: String): string; + +var + cfg,varname: string; + L: TStringList; +begin + Result := ''; + // XDG variable name + varName:=Format('XDG_%s_DIR',[UpperCase(AType)]); + Cfg:=GetEnvironmentVariable('XDG_CONFIG_HOME'); + if (Cfg='') then + Cfg:=GetUserDir+'.config/user-dirs.dirs' + else + CFG:=CFG+'user-dirs.dirs'; + if not FileExists(Cfg) then + Exit; + L:=TStringList.Create; + try + L.LoadFromFile(Cfg); + Result:=AnsiDequotedStr(L.Values[VarName],'"'); + finally + FreeAndNil(L); + end; + Result:=StringReplace(Result,'$HOME', ExcludeTrailingPathDelimiter(GetUserDir), [rfIgnoreCase]); +end; +{$ENDIF} procedure TTestTPath.TestGetDocumentsPath; @@ -649,7 +670,7 @@ Var begin FN:=TPath.GetDocumentsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Documents',FN); + AssertEquals(UnixSpecialDir('Documents'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN); @@ -667,7 +688,7 @@ Var begin FN:=TPath.GetSharedDocumentsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_DOCUMENTS),FN); @@ -722,7 +743,7 @@ Var begin FN:=TPath.GetPublicPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN); @@ -740,7 +761,7 @@ Var begin FN:=TPath.GetPicturesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Pictures',FN); + AssertEquals(UnixSpecialDir('Pictures'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN); @@ -758,7 +779,7 @@ Var begin FN:=TPath.GetSharedPicturesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN); @@ -776,7 +797,7 @@ Var begin FN:=TPath.GetPicturesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Pictures',FN); + AssertEquals(UnixSpecialDir('Pictures'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN); @@ -793,7 +814,7 @@ Var begin FN:=TPath.GetSharedCameraPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN); @@ -812,7 +833,7 @@ Var begin FN:=TPath.GetMusicPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Music',FN); + AssertEquals(UnixSpecialDir('Music'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN); @@ -830,7 +851,7 @@ Var begin FN:=TPath.GetSharedMusicPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN); @@ -847,7 +868,7 @@ Var begin FN:=TPath.GetMoviesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Videos',FN); + AssertEquals(UnixSpecialDir('Videos'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYVIDEO),FN); @@ -866,7 +887,7 @@ Var begin FN:=TPath.GetSharedMoviesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_VIDEO),FN); @@ -884,7 +905,7 @@ Var begin FN:=TPath.GetAlarmsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Music',FN); + AssertEquals(UnixSpecialDir('Music'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN); @@ -901,7 +922,7 @@ Var begin FN:=TPath.GetSharedAlarmsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN); @@ -919,7 +940,7 @@ Var begin FN:=TPath.GetDownloadsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Downloads',FN); + AssertEquals(UnixSpecialDir('Download'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN); @@ -937,7 +958,7 @@ Var begin FN:=TPath.GetSharedDownloadsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN); @@ -954,7 +975,7 @@ Var begin FN:=TPath.GetAlarmsPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Music',FN); + AssertEquals(UnixSpecialDir('Music'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN); @@ -971,7 +992,7 @@ Var begin FN:=TPath.GetSharedRingtonesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Public',FN); + AssertEquals(UnixSpecialDir('PublicShare'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN); @@ -988,7 +1009,7 @@ Var begin FN:=TPath.GetTemplatesPath; {$IFDEF UNIX} - AssertEquals(GetUserDir+'Templates',FN); + AssertEquals(UnixSpecialDir('Templates'),FN); {$ELSE} {$IFDEF WINDOWS} AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN); @@ -1089,7 +1110,7 @@ begin {$elseif defined(unix)} AssertEquals('\',TPath.AltDirectorySeparatorChar); {$else} - AssertEquals('/',TPath.AltDirectorySeparatorChar); + AssertEquals('\',TPath.AltDirectorySeparatorChar); {$endif} end;