]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
pytest: SambaToolCmdTest allows easier StringIO replacement
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Sun, 14 Aug 2022 00:08:16 +0000 (12:08 +1200)
committerDouglas Bagnall <dbagnall@samba.org>
Tue, 6 Sep 2022 21:12:36 +0000 (21:12 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
python/samba/tests/samba_tool/base.py

index 4e0f1d0604c8a3bd748e257fbb3c8f96a3580ccc..728ed1139d0db9ccbe083760270021b09fcd8348 100644 (file)
@@ -38,6 +38,9 @@ def truncate_string(s, cutoff=100):
 
 
 class SambaToolCmdTest(samba.tests.BlackboxTestCase):
+    # Use a class level reference to StringIO, which subclasses can
+    # override if they need to (to e.g. add a lying isatty() method).
+    stringIO = StringIO
 
     def getSamDB(self, *argv):
         """a convenience function to get a samdb instance so that we can query it"""
@@ -72,8 +75,8 @@ class SambaToolCmdTest(samba.tests.BlackboxTestCase):
     def runcmd(self, name, *args):
         """run a single level command"""
         cmd = cmd_sambatool.subcommands[name]
-        cmd.outf = StringIO()
-        cmd.errf = StringIO()
+        cmd.outf = self.stringIO()
+        cmd.errf = self.stringIO()
         result = cmd._run("samba-tool %s" % name, *args)
         return (result, cmd.outf.getvalue(), cmd.errf.getvalue())
 
@@ -83,8 +86,8 @@ class SambaToolCmdTest(samba.tests.BlackboxTestCase):
         # that the .outf StringIO assignment is overridden if we use
         # runcmd, so we can't capture stdout and stderr
         cmd = cmd_sambatool.subcommands[name].subcommands[sub]
-        cmd.outf = StringIO()
-        cmd.errf = StringIO()
+        cmd.outf = self.stringIO()
+        cmd.errf = self.stringIO()
         result = cmd._run("samba-tool %s %s" % (name, sub), *args)
         return (result, cmd.outf.getvalue(), cmd.errf.getvalue())
 
@@ -100,8 +103,8 @@ class SambaToolCmdTest(samba.tests.BlackboxTestCase):
         for sub in sublevels:
             cmd = cmd.subcommands[sub]
             cmd_str += " %s" % sub
-        cmd.outf = StringIO()
-        cmd.errf = StringIO()
+        cmd.outf = self.stringIO()
+        cmd.errf = self.stringIO()
         result = cmd._run(cmd_str, *args)
         return (result, cmd.outf.getvalue(), cmd.errf.getvalue())