CI: Fix filemode tests with cygwin 3.6.0

Put cygwin filemode tests back under the sourcedir
Remove inheritable permissions from the sourcedir

For :reasons:, the unit tests which check file mode were built in the
tempdir.

Instead, remove inheritable permissions from the working directory
(which the GitHub VM image has set for some reaons), since they can
interfere with getting exactly the file mode you asked for.

Partially reverts 04ae1cfb79

(cherry picked from commit f164ec692f)
This commit is contained in:
Jon Turney 2025-03-21 18:10:10 +00:00 committed by Eli Schwartz
parent 0b85745949
commit ae6fbc3ccb
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
3 changed files with 4 additions and 18 deletions

View File

@ -41,6 +41,10 @@ jobs:
MESON_CI_JOBNAME: cygwin-${{ matrix.NAME }}
steps:
# remove inheritable permissions since they break assumptions testsuite
# makes about file modes
- run: icacls . /inheritance:r /T /C
- uses: actions/cache/restore@v4
id: restore-cache
with:

View File

@ -117,18 +117,6 @@ class BasePlatformTests(TestCase):
newdir = os.path.realpath(newdir)
self.change_builddir(newdir)
def new_builddir_in_tempdir(self):
# Can't keep the builddir inside the source tree for the umask tests:
# https://github.com/mesonbuild/meson/pull/5546#issuecomment-509666523
# And we can't do this for all tests because it causes the path to be
# a short-path which breaks other tests:
# https://github.com/mesonbuild/meson/pull/9497
newdir = tempfile.mkdtemp()
# In case the directory is inside a symlinked directory, find the real
# path otherwise we might not find the srcdir from inside the builddir.
newdir = os.path.realpath(newdir)
self.change_builddir(newdir)
def _open_meson_log(self) -> io.TextIOWrapper:
log = os.path.join(self.logdir, 'meson-log.txt')
return open(log, encoding='utf-8')

View File

@ -590,8 +590,6 @@ class LinuxlikeTests(BasePlatformTests):
Test that files installed by these tests have the correct permissions.
Can't be an ordinary test because our installed_files.txt is very basic.
'''
if is_cygwin():
self.new_builddir_in_tempdir()
# Test file modes
testdir = os.path.join(self.common_test_dir, '12 data')
self.init(testdir)
@ -644,8 +642,6 @@ class LinuxlikeTests(BasePlatformTests):
'''
Test that files are installed with correct permissions using install_mode.
'''
if is_cygwin():
self.new_builddir_in_tempdir()
testdir = os.path.join(self.common_test_dir, '190 install_mode')
self.init(testdir)
self.build()
@ -684,8 +680,6 @@ class LinuxlikeTests(BasePlatformTests):
install umask of 022, regardless of the umask at time the worktree
was checked out or the build was executed.
'''
if is_cygwin():
self.new_builddir_in_tempdir()
# Copy source tree to a temporary directory and change permissions
# there to simulate a checkout with umask 002.
orig_testdir = os.path.join(self.unit_test_dir, '26 install umask')