aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2018-08-16 04:05:28 +0200
committerNirbheek Chauhan <nirbheek@centricular.com>2018-08-24 03:25:37 +0530
commitb728e0c47f183b4bdd35d5aa83801626f2ecc85b (patch)
tree21900be806e26d8538e9df86fc146bcf3f24f793
parentbb8ef9f73bd8173c57bc83ffbfdf22278040dbf8 (diff)
downloadmeson-b728e0c47f183b4bdd35d5aa83801626f2ecc85b.zip
meson-b728e0c47f183b4bdd35d5aa83801626f2ecc85b.tar.gz
meson-b728e0c47f183b4bdd35d5aa83801626f2ecc85b.tar.bz2
unittests: test_install_subdir_symlinks_with_default_umask
Add test to verify the installation of broken symlinks when a default_umask is set. Reusing the same code of other test, thus sharing the actual test code in a single function.
-rwxr-xr-xrun_unittests.py22
-rw-r--r--test cases/common/201 install_mode/installed_files.txt1
-rw-r--r--test cases/common/201 install_mode/meson.build3
-rw-r--r--test cases/common/201 install_mode/sub2/stub0
4 files changed, 20 insertions, 6 deletions
diff --git a/run_unittests.py b/run_unittests.py
index 56bdf79..775d316 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -3703,32 +3703,42 @@ endian = 'little'
# Ensure that the otool output does not contain self.installdir
self.assertNotRegex(out, self.installdir + '.*dylib ')
- def test_install_subdir_symlinks(self):
+ def install_subdir_invalid_symlinks(self, testdir, subdir_path):
'''
Test that installation of broken symlinks works fine.
https://github.com/mesonbuild/meson/issues/3914
'''
- testdir = os.path.join(self.common_test_dir, '66 install subdir')
- subdir = os.path.join(testdir, 'sub/sub1')
+ testdir = os.path.join(self.common_test_dir, testdir)
+ subdir = os.path.join(testdir, subdir_path)
curdir = os.getcwd()
os.chdir(subdir)
# Can't distribute broken symlinks in the source tree because it breaks
# the creation of zipapps. Create it dynamically and run the test by
# hand.
src = '../../nonexistent.txt'
- os.symlink(src, 'test.txt')
+ os.symlink(src, 'invalid-symlink.txt')
try:
self.init(testdir)
self.build()
self.install()
- link = os.path.join(self.installdir, 'usr', 'share', 'sub1', 'test.txt')
+ install_path = subdir_path.split(os.path.sep)[-1]
+ link = os.path.join(self.installdir, 'usr', 'share', install_path, 'invalid-symlink.txt')
self.assertTrue(os.path.islink(link), msg=link)
self.assertEqual(src, os.readlink(link))
self.assertFalse(os.path.isfile(link), msg=link)
finally:
- os.remove(os.path.join(subdir, 'test.txt'))
+ os.remove(os.path.join(subdir, 'invalid-symlink.txt'))
os.chdir(curdir)
+ def test_install_subdir_symlinks(self):
+ self.install_subdir_invalid_symlinks('66 install subdir', os.path.join('sub', 'sub1'))
+
+ def test_install_subdir_symlinks_with_default_umask(self):
+ self.install_subdir_invalid_symlinks('201 install_mode', 'sub2')
+
+ def test_install_subdir_symlinks_with_default_umask_and_mode(self):
+ self.install_subdir_invalid_symlinks('201 install_mode', 'sub1')
+
class LinuxArmCrossCompileTests(BasePlatformTests):
'''
diff --git a/test cases/common/201 install_mode/installed_files.txt b/test cases/common/201 install_mode/installed_files.txt
index 00fb231..724d954 100644
--- a/test cases/common/201 install_mode/installed_files.txt
+++ b/test cases/common/201 install_mode/installed_files.txt
@@ -5,4 +5,5 @@ usr/include/rootdir.h
usr/libtest/libstat.a
usr/share/man/man1/foo.1.gz
usr/share/sub1/second.dat
+usr/share/sub2/stub
usr/subdir/data.dat
diff --git a/test cases/common/201 install_mode/meson.build b/test cases/common/201 install_mode/meson.build
index d06371f..18a2948 100644
--- a/test cases/common/201 install_mode/meson.build
+++ b/test cases/common/201 install_mode/meson.build
@@ -11,6 +11,9 @@ install_subdir('sub1',
install_dir : 'share',
install_mode : ['rwxr-x--t', 'root'])
+install_subdir('sub2',
+ install_dir : 'share')
+
# test install_mode in configure_file
conf = configuration_data()
conf.set('var', 'mystring')
diff --git a/test cases/common/201 install_mode/sub2/stub b/test cases/common/201 install_mode/sub2/stub
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test cases/common/201 install_mode/sub2/stub