issue #600: /etc/environment may be non-ASCII in an unknown encoding
parent
e87e41e69e
commit
e4321f81a0
@ -0,0 +1,74 @@
|
||||
import os
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
import mock
|
||||
import unittest2
|
||||
import testlib
|
||||
|
||||
from mitogen.core import b
|
||||
import ansible_mitogen.runner
|
||||
|
||||
|
||||
klass = ansible_mitogen.runner.EnvironmentFileWatcher
|
||||
environb = getattr(os, 'environb', os.environ)
|
||||
|
||||
|
||||
class WatcherTest(testlib.TestCase):
|
||||
def setUp(self):
|
||||
self.original_env = environb.copy()
|
||||
self.tf = tempfile.NamedTemporaryFile()
|
||||
|
||||
def tearDown(self):
|
||||
self.tf.close()
|
||||
environb.clear()
|
||||
environb.update(self.original_env)
|
||||
|
||||
def test_missing_file(self):
|
||||
# just ensure it doesn't crash
|
||||
watcher = klass('/nonexistent')
|
||||
watcher.check()
|
||||
|
||||
def test_file_becomes_missing(self):
|
||||
# just ensure it doesn't crash
|
||||
watcher = klass(self.tf.name)
|
||||
watcher.check()
|
||||
os.unlink(self.tf.name)
|
||||
watcher.check()
|
||||
open(self.tf.name,'wb').close()
|
||||
|
||||
def test_key_deleted(self):
|
||||
environb[b('SOMEKEY')] = b('123')
|
||||
self.tf.write(b('SOMEKEY=123\n'))
|
||||
self.tf.flush()
|
||||
watcher = klass(self.tf.name)
|
||||
self.tf.seek(0)
|
||||
self.tf.truncate(0)
|
||||
watcher.check()
|
||||
self.assertTrue(b('SOMEKEY') not in environb)
|
||||
|
||||
def test_key_added(self):
|
||||
watcher = klass(self.tf.name)
|
||||
self.tf.write(b('SOMEKEY=123\n'))
|
||||
self.tf.flush()
|
||||
watcher.check()
|
||||
self.assertEqual(environb[b('SOMEKEY')], b('123'))
|
||||
|
||||
def test_key_shadowed_nuchange(self):
|
||||
environb[b('SOMEKEY')] = b('234')
|
||||
self.tf.write(b('SOMEKEY=123\n'))
|
||||
self.tf.flush()
|
||||
watcher = klass(self.tf.name)
|
||||
watcher.check()
|
||||
self.assertEqual(environb[b('SOMEKEY')], b('234'))
|
||||
|
||||
def test_binary_key_added(self):
|
||||
watcher = klass(self.tf.name)
|
||||
self.tf.write(b('SOMEKEY=\xff\xff\xff\n'))
|
||||
self.tf.flush()
|
||||
watcher.check()
|
||||
self.assertEqual(environb[b('SOMEKEY')], b('\xff\xff\xff'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest2.main()
|
Loading…
Reference in New Issue