|
@@ -178,6 +178,45 @@ class ClientOptionsTests(unittest.TestCase):
|
|
|
self.assertEqual(options.password, '123')
|
|
|
self.assertEqual(options.history_file, history_file)
|
|
|
|
|
|
+ def test_unreadable_config_file(self):
|
|
|
+ # Quick and dirty way of coming up with a decent filename
|
|
|
+ tempf = tempfile.NamedTemporaryFile()
|
|
|
+ fname = tempf.name
|
|
|
+ tempf.close()
|
|
|
+ self.assertFalse(os.path.exists(fname))
|
|
|
+
|
|
|
+ instance = self._makeOne()
|
|
|
+ class DummyException(Exception):
|
|
|
+ def __init__(self, exitcode):
|
|
|
+ self.exitcode = exitcode
|
|
|
+ def dummy_exit(self, exitcode=2):
|
|
|
+ # Important default exitcode=2 like sys.exit.
|
|
|
+ raise DummyException(exitcode)
|
|
|
+ instance.exit = dummy_exit
|
|
|
+ try:
|
|
|
+ instance.realize(args=['-c', fname])
|
|
|
+ except DummyException, e:
|
|
|
+ self.assertEquals(e.exitcode, 2)
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+
|
|
|
+ try:
|
|
|
+ instance.read_config(fname)
|
|
|
+ except ValueError, e:
|
|
|
+ self.assertTrue("could not find config file" in str(e))
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+
|
|
|
+ tempf = tempfile.NamedTemporaryFile()
|
|
|
+ os.chmod(tempf.name, 0) # Removing read perms
|
|
|
+ try:
|
|
|
+ instance.read_config(tempf.name)
|
|
|
+ except ValueError, e:
|
|
|
+ self.assertTrue("could not read config file" in str(e))
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+ tempf.close()
|
|
|
+
|
|
|
def test_options_unixsocket_cli(self):
|
|
|
from StringIO import StringIO
|
|
|
fp = StringIO('[supervisorctl]')
|
|
@@ -544,6 +583,45 @@ class ServerOptionsTests(unittest.TestCase):
|
|
|
instance.realize(args=[])
|
|
|
self.assertFalse(old_warning in instance.parse_warnings)
|
|
|
|
|
|
+ def test_unreadable_config_file(self):
|
|
|
+ # Quick and dirty way of coming up with a decent filename
|
|
|
+ tempf = tempfile.NamedTemporaryFile()
|
|
|
+ fname = tempf.name
|
|
|
+ tempf.close()
|
|
|
+ self.assertFalse(os.path.exists(fname))
|
|
|
+
|
|
|
+ instance = self._makeOne()
|
|
|
+ class DummyException(Exception):
|
|
|
+ def __init__(self, exitcode):
|
|
|
+ self.exitcode = exitcode
|
|
|
+ def dummy_exit(self, exitcode=2):
|
|
|
+ # Important default exitcode=2 like sys.exit.
|
|
|
+ raise DummyException(exitcode)
|
|
|
+ instance.exit = dummy_exit
|
|
|
+ try:
|
|
|
+ instance.realize(args=['-c', fname])
|
|
|
+ except DummyException, e:
|
|
|
+ self.assertEquals(e.exitcode, 2)
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+
|
|
|
+ try:
|
|
|
+ instance.read_config(fname)
|
|
|
+ except ValueError, e:
|
|
|
+ self.assertTrue("could not find config file" in str(e))
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+
|
|
|
+ tempf = tempfile.NamedTemporaryFile()
|
|
|
+ os.chmod(tempf.name, 0) # Removing read perms
|
|
|
+ try:
|
|
|
+ instance.read_config(tempf.name)
|
|
|
+ except ValueError, e:
|
|
|
+ self.assertTrue("could not read config file" in str(e))
|
|
|
+ else:
|
|
|
+ self.fail("expected exception")
|
|
|
+ tempf.close()
|
|
|
+
|
|
|
def test_readFile_failed(self):
|
|
|
from supervisor.options import readFile
|
|
|
try:
|