From d98342d868a51f2c777f0424d2ea04f2fb1fd3ca Mon Sep 17 00:00:00 2001
From: KWSys Upstream <kwrobot@kitware.com>
Date: Mon, 19 Apr 2021 09:26:45 -0400
Subject: KWSys 2021-04-19 (d6139c66)

Code extracted from:

    https://gitlab.kitware.com/utils/kwsys.git

at commit d6139c66c8760552ab6bc4a08401ae8105217469 (master).

Upstream Shortlog
-----------------

Orgad Shaneh (3):
      17f4af9b SystemTools: Use octal base for error messages in permission test
      f00dd83e SystemTools: Avoid unnecessary assumption of working directory in test case
      5b941f33 SystemTools: Adapt permissions test to MSYS
---
 testSystemTools.cxx | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/testSystemTools.cxx b/testSystemTools.cxx
index cfa420d..04f66ff 100644
--- a/testSystemTools.cxx
+++ b/testSystemTools.cxx
@@ -290,15 +290,17 @@ static bool CheckFileOperations()
     res = false;
   }
 
+  std::cerr << std::oct;
 // Reset umask
-#if defined(_WIN32) && !defined(__CYGWIN__)
+#ifdef __MSYS__
+  mode_t fullMask = S_IWRITE;
+#elif defined(_WIN32) && !defined(__CYGWIN__)
   // NOTE:  Windows doesn't support toggling _S_IREAD.
   mode_t fullMask = _S_IWRITE;
 #else
   // On a normal POSIX platform, we can toggle all permissions.
   mode_t fullMask = S_IRWXU | S_IRWXG | S_IRWXO;
 #endif
-  mode_t orig_umask = umask(fullMask);
 
   // Test file permissions without umask
   mode_t origPerm, thisPerm;
@@ -370,6 +372,7 @@ static bool CheckFileOperations()
     res = false;
   }
 
+  mode_t orig_umask = umask(fullMask);
   // Test setting file permissions while honoring umask
   if (!kwsys::SystemTools::SetPermissions(testNewFile, fullMask, true)) {
     std::cerr << "Problem with SetPermissions (3) for: " << testNewFile
@@ -496,6 +499,7 @@ static bool CheckFileOperations()
   }
 #endif
 
+  std::cerr << std::dec;
   return res;
 }
 
@@ -1093,7 +1097,7 @@ static bool CheckCopyFileIfDifferent()
       ret = false;
       continue;
     }
-    std::string bdata = readFile("file_b");
+    std::string bdata = readFile(cptarget);
     if (diff_test_cases[i].a != bdata) {
       std::cerr << "Incorrect CopyFileIfDifferent file contents in test case "
                 << i + 1 << "." << std::endl;
-- 
cgit v0.12