You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by gj...@apache.org on 2012/07/09 11:36:28 UTC
svn commit: r1358998 - /incubator/bloodhound/trunk/installer/tests.py
Author: gjm
Date: Mon Jul 9 09:36:28 2012
New Revision: 1358998
URL: http://svn.apache.org/viewvc?rev=1358998&view=rev
Log:
installer: adding a few simple tests for some aspects of the bloodhound_setup script - towards #126
Added:
incubator/bloodhound/trunk/installer/tests.py (with props)
Added: incubator/bloodhound/trunk/installer/tests.py
URL: http://svn.apache.org/viewvc/incubator/bloodhound/trunk/installer/tests.py?rev=1358998&view=auto
==============================================================================
--- incubator/bloodhound/trunk/installer/tests.py (added)
+++ incubator/bloodhound/trunk/installer/tests.py Mon Jul 9 09:36:28 2012
@@ -0,0 +1,113 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""Tests for bloodhound_setup.py"""
+
+import unittest
+import shutil
+import os
+from tempfile import mkdtemp, NamedTemporaryFile
+from bloodhound_setup import backupfile, BloodhoundSetup
+from functools import partial
+
+class BackupfileTest(unittest.TestCase):
+ """Unit tests for backupfile routine"""
+ def setUp(self):
+ self.tempdir = mkdtemp()
+ self.original = NamedTemporaryFile(dir=self.tempdir)
+
+ def tearDown(self):
+ self.original.close()
+ shutil.rmtree(self.tempdir)
+
+ def test_backup_creates_new_file(self):
+ """Checks that a new file is created"""
+ orig = self.original.name
+ new = backupfile(orig)
+ self.assertNotEqual(orig, new)
+ self.assert_(os.path.exists(orig))
+ self.assert_(os.path.exists(new))
+
+ def test_multiple_backup_creates_new_files(self):
+ """Checks that, for a small finite number of backups, multiple
+ backups do not overwrite old backups. The limit is effectively 65"""
+ orig = self.original.name
+ backups = [backupfile(orig) for i in range(65)]
+ unique_set = set([orig, ] + backups)
+ self.assertEqual(len(unique_set), 66)
+
+class BloodhoundSetupTest(unittest.TestCase):
+ def setUp(self):
+ self.tempdir = mkdtemp()
+ self.bhs = BloodhoundSetup({})
+ self.basedata = {'section': {'option1': 'option1value',
+ 'option2': 'option2value',},}
+
+ def tearDown(self):
+ shutil.rmtree(self.tempdir)
+
+ def test_db_str_no_options(self):
+ """Checks that giving no options at all has defaults enough to create
+ a sqlite db string"""
+ self.assertEqual(self.bhs._generate_db_str({}), 'sqlite:' +
+ os.path.join('db', 'bloodhound.db'))
+
+ def test_db_str_provided_db_string(self):
+ """Checks that if a dbstring is provided it will not be respected above
+ other options"""
+ dbstr = 'sillyexample'
+ options = {'dbstring': dbstr,}
+ self.assertEqual(self.bhs._generate_db_str(options), dbstr)
+
+ def test_writeconfig_create_basic_config(self):
+ filepath = os.path.join(self.tempdir, 'basic.ini')
+ data = [self.basedata]
+ self.bhs.writeconfig(filepath, data)
+ self.assert_(os.path.exists(filepath))
+ #check the file
+ with file(filepath) as f:
+ fdata = f.read()
+ self.assertIn('option1value', fdata)
+
+ def test_writeconfig_update_config(self):
+ """Checks that writing a new config with non-overlapping values updates
+ an existing file"""
+ filepath = os.path.join(self.tempdir, 'basic.ini')
+ data = [self.basedata]
+ self.bhs.writeconfig(filepath, data)
+ newdata = [{'section': {'option3': 'option3value',},}]
+ self.bhs.writeconfig(filepath, newdata)
+ #check the file
+ with file(filepath) as f:
+ fdata = f.read()
+ self.assertIn('option3value', fdata)
+
+ def test_writeconfig_update_config_overwrite_values(self):
+ """Checks that writing a new config with non-overlapping values updates
+ an existing file"""
+ filepath = os.path.join(self.tempdir, 'basic.ini')
+ data = [self.basedata]
+ self.bhs.writeconfig(filepath, data)
+ newdata = [{'section': {'option2': 'newopt2value',},}]
+ self.bhs.writeconfig(filepath, newdata)
+ with file(filepath) as f:
+ fdata = f.read()
+ self.assertIn('newopt2value', fdata)
+ self.assertNotIn('option2value', fdata)
+
+if __name__ == '__main__':
+ unittest.main()
Propchange: incubator/bloodhound/trunk/installer/tests.py
------------------------------------------------------------------------------
svn:eol-style = native