mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[test] Add test_locked_file
				
					
				
			This commit is contained in:
		| @@ -56,6 +56,7 @@ from yt_dlp.utils import ( | ||||
|     is_html, | ||||
|     js_to_json, | ||||
|     limit_length, | ||||
|     locked_file, | ||||
|     merge_dicts, | ||||
|     mimetype2ext, | ||||
|     month_by_name, | ||||
| @@ -1795,6 +1796,36 @@ Line 1 | ||||
|         self.assertEqual(Config.hide_login_info(['--username=foo']), | ||||
|                          ['--username=PRIVATE']) | ||||
|  | ||||
|     def test_locked_file(self): | ||||
|         TEXT = 'test_locked_file\n' | ||||
|         FILE = 'test_locked_file.ytdl' | ||||
|         MODES = 'war'  # Order is important | ||||
|  | ||||
|         try: | ||||
|             for lock_mode in MODES: | ||||
|                 with locked_file(FILE, lock_mode, False) as f: | ||||
|                     if lock_mode == 'r': | ||||
|                         self.assertEqual(f.read(), TEXT * 2, 'Wrong file content') | ||||
|                     else: | ||||
|                         f.write(TEXT) | ||||
|                     for test_mode in MODES: | ||||
|                         testing_write = test_mode != 'r' | ||||
|                         try: | ||||
|                             with locked_file(FILE, test_mode, False): | ||||
|                                 pass | ||||
|                         except (BlockingIOError, PermissionError): | ||||
|                             if not testing_write:  # FIXME | ||||
|                                 print(f'Known issue: Exclusive lock ({lock_mode}) blocks read access ({test_mode})') | ||||
|                                 continue | ||||
|                             self.assertTrue(testing_write, f'{test_mode} is blocked by {lock_mode}') | ||||
|                         else: | ||||
|                             self.assertFalse(testing_write, f'{test_mode} is not blocked by {lock_mode}') | ||||
|         finally: | ||||
|             try: | ||||
|                 os.remove(FILE) | ||||
|             except Exception: | ||||
|                 pass | ||||
|  | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 pukkandan
					pukkandan