Browse Source

* Fix some tests after recent changes, better test for special dirs

(cherry picked from commit 184d20cb06bf7429d1a867fafdd8b6c484a87c12)
Michaël Van Canneyt 2 years ago
parent
commit
2b5870c2c5
1 changed files with 50 additions and 29 deletions
  1. 50 29
      packages/vcl-compat/tests/tciotuils.pas

+ 50 - 29
packages/vcl-compat/tests/tciotuils.pas

@@ -705,16 +705,37 @@ begin
 
 
 end;
 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;
 procedure TTestTPath.TestGetDocumentsPath;
 
 
@@ -724,7 +745,7 @@ Var
 begin
 begin
   FN:=TPath.GetDocumentsPath;
   FN:=TPath.GetDocumentsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Documents',FN);
+  AssertEquals(UnixSpecialDir('Documents'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN);
   AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN);
@@ -742,7 +763,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedDocumentsPath;
   FN:=TPath.GetSharedDocumentsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_DOCUMENTS),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_DOCUMENTS),FN);
@@ -797,7 +818,7 @@ Var
 begin
 begin
   FN:=TPath.GetPublicPath;
   FN:=TPath.GetPublicPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN);
@@ -815,7 +836,7 @@ Var
 begin
 begin
   FN:=TPath.GetPicturesPath;
   FN:=TPath.GetPicturesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Pictures',FN);
+  AssertEquals(UnixSpecialDir('Pictures'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN);
@@ -833,7 +854,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedPicturesPath;
   FN:=TPath.GetSharedPicturesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN);
@@ -851,7 +872,7 @@ Var
 begin
 begin
   FN:=TPath.GetPicturesPath;
   FN:=TPath.GetPicturesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Pictures',FN);
+  AssertEquals(UnixSpecialDir('Pictures'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYPICTURES),FN);
@@ -868,7 +889,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedCameraPath;
   FN:=TPath.GetSharedCameraPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_PICTURES),FN);
@@ -887,7 +908,7 @@ Var
 begin
 begin
   FN:=TPath.GetMusicPath;
   FN:=TPath.GetMusicPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Music',FN);
+  AssertEquals(UnixSpecialDir('Music'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
@@ -905,7 +926,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedMusicPath;
   FN:=TPath.GetSharedMusicPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
@@ -922,7 +943,7 @@ Var
 begin
 begin
   FN:=TPath.GetMoviesPath;
   FN:=TPath.GetMoviesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Videos',FN);
+  AssertEquals(UnixSpecialDir('Videos'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYVIDEO),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYVIDEO),FN);
@@ -941,7 +962,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedMoviesPath;
   FN:=TPath.GetSharedMoviesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_VIDEO),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_VIDEO),FN);
@@ -959,7 +980,7 @@ Var
 begin
 begin
   FN:=TPath.GetAlarmsPath;
   FN:=TPath.GetAlarmsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Music',FN);
+  AssertEquals(UnixSpecialDir('Music'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
@@ -976,7 +997,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedAlarmsPath;
   FN:=TPath.GetSharedAlarmsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
@@ -994,7 +1015,7 @@ Var
 begin
 begin
   FN:=TPath.GetDownloadsPath;
   FN:=TPath.GetDownloadsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Downloads',FN);
+  AssertEquals(UnixSpecialDir('Download'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
@@ -1012,7 +1033,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedDownloadsPath;
   FN:=TPath.GetSharedDownloadsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_APPDATA),FN);
@@ -1029,7 +1050,7 @@ Var
 begin
 begin
   FN:=TPath.GetAlarmsPath;
   FN:=TPath.GetAlarmsPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Music',FN);
+  AssertEquals(UnixSpecialDir('Music'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_MYMUSIC),FN);
@@ -1046,7 +1067,7 @@ Var
 begin
 begin
   FN:=TPath.GetSharedRingtonesPath;
   FN:=TPath.GetSharedRingtonesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Public',FN);
+  AssertEquals(UnixSpecialDir('PublicShare'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
   AssertEquals(GetSpecialDir(CSIDL_COMMON_MUSIC),FN);
@@ -1063,7 +1084,7 @@ Var
 begin
 begin
   FN:=TPath.GetTemplatesPath;
   FN:=TPath.GetTemplatesPath;
 {$IFDEF UNIX}
 {$IFDEF UNIX}
-  AssertEquals(GetUserDir+'Templates',FN);
+  AssertEquals(UnixSpecialDir('Templates'),FN);
 {$ELSE}
 {$ELSE}
 {$IFDEF WINDOWS}
 {$IFDEF WINDOWS}
   AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN);
   AssertEquals(GetSpecialDir(CSIDL_PERSONAL),FN);
@@ -1164,7 +1185,7 @@ begin
   {$elseif defined(unix)}
   {$elseif defined(unix)}
     AssertEquals('\',TPath.AltDirectorySeparatorChar);
     AssertEquals('\',TPath.AltDirectorySeparatorChar);
   {$else}
   {$else}
-    AssertEquals('/',TPath.AltDirectorySeparatorChar);
+    AssertEquals('\',TPath.AltDirectorySeparatorChar);
   {$endif}
   {$endif}
 end;
 end;