def test_locked_file(self):
    TEXT = 'test_locked_file\n'
    FILE = 'test_locked_file.ytdl'
    MODES = 'war'
    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):
                            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
def test_locked_file(self):
    TEXT = 'test_locked_file\n'
    FILE = 'test_locked_file.ytdl'
    MODES = 'war'
    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):
                            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