summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRené Stadler <mail@renestadler.de>2007-06-25 14:40:02 +0200
committerRené Stadler <mail@renestadler.de>2007-06-25 14:40:02 +0200
commit51d308be227a1ba254e9ac9ed7f533dba85fa47b (patch)
treeb578f7f767800f89714b0f0ab4c02489a11fd849 /tests
parent15ac8412fdd72e20be5b59dc991346ebf834f743 (diff)
Add tests for utils.SaveWriteFile
Diffstat (limited to 'tests')
-rwxr-xr-xtests/test_utils.py167
1 files changed, 167 insertions, 0 deletions
diff --git a/tests/test_utils.py b/tests/test_utils.py
new file mode 100755
index 0000000..209d2fc
--- /dev/null
+++ b/tests/test_utils.py
@@ -0,0 +1,167 @@
+#!/usr/bin/env python
+# -*- coding: utf-8; mode: python; -*-
+#
+# GStreamer Inspector - Multimedia system plugin introspection
+#
+# Copyright (C) 2007 René Stadler <mail@renestadler.de>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+"""GStreamer Inspector test suite for the utils module."""
+
+import sys
+import os
+import os.path
+from glob import glob
+
+sys.path.insert (0, os.path.join (sys.path[0], os.pardir))
+
+from unittest import TestCase, main as test_main
+
+from GstInspector import utils
+
+class TestSaveWriteFile (TestCase):
+
+ def setUp (self):
+
+ base = os.path.dirname (sys.argv[0])
+ self.dir = os.path.join (base, "test_save_write_file~")
+ self.filename = os.path.join (self.dir, "test-file.ext")
+ self.temp_name = None
+
+ os.mkdir (self.dir)
+
+ def tearDown (self):
+
+ filenames = glob ("%s*" % (self.filename,))
+ assert len (filenames) <= 2
+ for filename in filenames:
+ os.unlink (filename)
+
+ os.rmdir (self.dir)
+
+ def create_existing (self, content):
+
+ fp = file (self.filename, "wt")
+ fp.write (content)
+ fp.close ()
+
+ self.assert_existing (content)
+
+ def assert_existing (self, content):
+
+ self.assertTrue (os.path.exists (self.filename))
+
+ fp = file (self.filename, "rt")
+ self.assertEqual (fp.read (), content)
+ fp.close ()
+
+ def assert_temp_name (self):
+
+ matches = glob ("%s*" % (self.filename,))
+ if self.filename in matches:
+ matches.remove (self.filename)
+ self.assertEqual (len (matches), 1)
+
+ self.temp_name = matches[0]
+
+ def test_new_graceful (self):
+
+ fp = utils.SaveWriteFile (self.filename)
+ fp.write ("spam")
+
+ self.assert_temp_name ()
+ self.assertFalse (os.path.exists (self.filename))
+
+ fp.close ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assert_existing ("spam")
+
+ def test_exists_graceful (self):
+
+ self.create_existing ("ham")
+
+ fp = utils.SaveWriteFile (self.filename)
+ fp.write ("eggs")
+
+ self.assert_temp_name ()
+ self.assert_existing ("ham")
+
+ fp.close ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assert_existing ("eggs")
+
+ def test_new_discard (self):
+
+ fp = utils.SaveWriteFile (self.filename, "wt")
+ fp.write ("spam")
+
+ self.assert_temp_name ()
+ self.assertFalse (os.path.exists (self.filename))
+
+ fp.discard ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assertFalse (os.path.exists (self.filename))
+
+ def test_exists_discard (self):
+
+ self.create_existing ("ham")
+
+ fp = utils.SaveWriteFile (self.filename, "wt")
+ fp.write ("spam")
+
+ self.assert_temp_name ()
+
+ fp.discard ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assert_existing ("ham")
+
+ def test_new_gc (self):
+
+ fp = utils.SaveWriteFile (self.filename, "wt")
+ fp.write ("spam")
+
+ self.assert_temp_name ()
+ self.assertFalse (os.path.exists (self.filename))
+
+ del fp
+ import gc
+ gc.collect ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assertFalse (os.path.exists (self.filename))
+
+ def test_exists_gc (self):
+
+ self.create_existing ("ham")
+
+ fp = utils.SaveWriteFile (self.filename, "wt")
+ fp.write ("spam")
+
+ self.assert_temp_name ()
+
+ del fp
+ import gc
+ gc.collect ()
+
+ self.assertFalse (os.path.exists (self.temp_name))
+ self.assert_existing ("ham")
+
+if __name__ == "__main__":
+ test_main ()