# -*- coding: utf-8; -*-
import os
import shutil
import tempfile
import queue
from unittest import TestCase
from rattail.config import make_config
from rattail.filemon import util
from rattail.filemon.config_ import Profile
class TestQueueExisting(TestCase):
def setUp(self):
self.tempdir = tempfile.mkdtemp()
self.config = make_config([], extend=False)
self.config.setdefault('rattail.filemon', 'monitor', 'foo')
self.config.setdefault('rattail.filemon', 'foo.dirs', self.tempdir)
self.config.setdefault('rattail.filemon', 'foo.actions', 'noop')
self.config.setdefault('rattail.filemon', 'foo.action.noop.func', 'rattail.filemon.actions:noop')
self.profile = Profile(self.config, u'foo')
self.profile.queue = queue.Queue()
def tearDown(self):
shutil.rmtree(self.tempdir)
def write_file(self, fname, content):
path = os.path.join(self.tempdir, fname)
with open(path, 'wt') as f:
f.write(content)
return path
def test_nothing_queued_if_no_files_exist(self):
util.queue_existing(self.profile, self.tempdir)
self.assertTrue(self.profile.queue.empty())
def test_normal_files_are_queued_but_not_folders(self):
self.write_file('file', '')
os.makedirs(os.path.join(self.tempdir, 'folder'))
util.queue_existing(self.profile, self.tempdir)
self.assertEqual(self.profile.queue.qsize(), 1)
self.assertEqual(self.profile.queue.get_nowait(), os.path.join(self.tempdir, 'file'))
self.assertTrue(self.profile.queue.empty())
def test_if_profile_watches_locks_then_normal_files_are_queued_but_not_lock_files(self):
self.profile.watch_locks = True
self.write_file('file1.lock', '')
self.write_file('file2', '')
util.queue_existing(self.profile, self.tempdir)
self.assertEqual(self.profile.queue.qsize(), 1)
self.assertEqual(self.profile.queue.get_nowait(), os.path.join(self.tempdir, 'file2'))
self.assertTrue(self.profile.queue.empty())