(self)
| 1137 | @unittest.skipUnless(hasattr(os, 'lchmod'), 'requires os.lchmod') |
| 1138 | @os_helper.skip_unless_symlink |
| 1139 | def test_copymode_symlink_to_symlink(self): |
| 1140 | tmp_dir = self.mkdtemp() |
| 1141 | src = os.path.join(tmp_dir, 'foo') |
| 1142 | dst = os.path.join(tmp_dir, 'bar') |
| 1143 | src_link = os.path.join(tmp_dir, 'baz') |
| 1144 | dst_link = os.path.join(tmp_dir, 'quux') |
| 1145 | create_file(src, 'foo') |
| 1146 | create_file(dst, 'foo') |
| 1147 | os.symlink(src, src_link) |
| 1148 | os.symlink(dst, dst_link) |
| 1149 | os.chmod(src, stat.S_IRWXU|stat.S_IRWXG) |
| 1150 | os.chmod(dst, stat.S_IRWXU) |
| 1151 | os.lchmod(src_link, stat.S_IRWXO|stat.S_IRWXG) |
| 1152 | # link to link |
| 1153 | os.lchmod(dst_link, stat.S_IRWXO) |
| 1154 | old_mode = os.stat(dst).st_mode |
| 1155 | shutil.copymode(src_link, dst_link, follow_symlinks=False) |
| 1156 | self.assertEqual(os.lstat(src_link).st_mode, |
| 1157 | os.lstat(dst_link).st_mode) |
| 1158 | self.assertEqual(os.stat(dst).st_mode, old_mode) |
| 1159 | # src link - use chmod |
| 1160 | os.lchmod(dst_link, stat.S_IRWXO) |
| 1161 | shutil.copymode(src_link, dst, follow_symlinks=False) |
| 1162 | self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) |
| 1163 | # dst link - use chmod |
| 1164 | os.lchmod(dst_link, stat.S_IRWXO) |
| 1165 | shutil.copymode(src, dst_link, follow_symlinks=False) |
| 1166 | self.assertEqual(os.stat(src).st_mode, os.stat(dst).st_mode) |
| 1167 | |
| 1168 | @unittest.skipIf(hasattr(os, 'lchmod'), 'requires os.lchmod to be missing') |
| 1169 | @os_helper.skip_unless_symlink |
nothing calls this directly
no test coverage detected