diff options
author | René Stadler <mail@renestadler.de> | 2007-06-25 14:40:02 +0200 |
---|---|---|
committer | René Stadler <mail@renestadler.de> | 2007-06-25 14:40:02 +0200 |
commit | 51d308be227a1ba254e9ac9ed7f533dba85fa47b (patch) | |
tree | b578f7f767800f89714b0f0ab4c02489a11fd849 /tests | |
parent | 15ac8412fdd72e20be5b59dc991346ebf834f743 (diff) |
Add tests for utils.SaveWriteFile
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/test_utils.py | 167 |
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 () |