rattail/tests/test_files.py
Lance Edgar 92c03f5d8d General header / Unicode cleanup.
This hopefully updates all module headers such that the file encoding is
utf-8, and uses Unicode literals, etc.
2014-11-18 23:29:26 -06:00

39 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import os
from unittest import TestCase
import lockfile
from fixture import TempIO
from rattail import files
class TestLockingCopy(TestCase):
def setUp(self):
self.tmp = TempIO()
self.src = self.tmp.mkdir(u'src')
self.dst = self.tmp.mkdir(u'dst')
self.src_file = self.src.putfile(u'somefile', b'')
def test_normal_copy_succeeds(self):
files.locking_copy(self.src_file, self.dst)
dst_file = os.path.join(self.dst, u'somefile')
self.assertTrue(os.path.exists(dst_file))
self.assertTrue(os.path.isfile(dst_file))
self.assertFalse(os.path.exists(os.path.join(self.dst, u'somefile.lock')))
def test_copy_times_out_if_lock_already_exists(self):
dst_lock = self.dst.mkdir(u'somefile.lock')
self.assertRaises(lockfile.LockTimeout, files.locking_copy, self.src_file, self.dst, timeout=0.1)
def test_lock_timeout_may_be_specified_as_string(self):
dst_lock = self.dst.mkdir(u'somefile.lock')
# string "float"
self.assertRaises(lockfile.LockTimeout, files.locking_copy, self.src_file, self.dst, timeout=u'0.1')
# string "integer"
self.assertRaises(lockfile.LockTimeout, files.locking_copy, self.src_file, self.dst, timeout=u'1')