summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-01-20 20:43:21 +0000
committerLars Wirzenius <liw@liw.fi>2011-01-20 20:43:21 +0000
commit6865d3ff7d9d0718fdbc6b8b8deb36bca9534dfb (patch)
tree652173e3b4956ec630b396f4f163f59d2f69a3b1
parentb7532e9b4f753b16808581a58d4f127db6c81ebb (diff)
downloadgenbackupdata-6865d3ff7d9d0718fdbc6b8b8deb36bca9534dfb.tar.gz
Add more functionality and tests to NameGenerator.
-rw-r--r--genbackupdatalib/names.py15
-rw-r--r--genbackupdatalib/names_tests.py28
2 files changed, 39 insertions, 4 deletions
diff --git a/genbackupdatalib/names.py b/genbackupdatalib/names.py
index 1ce0c20..8cca24c 100644
--- a/genbackupdatalib/names.py
+++ b/genbackupdatalib/names.py
@@ -14,12 +14,23 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import os
+
+
class NameGenerator(object):
'''Generate names for new output files.'''
def __init__(self, dirname):
self.dirname = dirname
-
+ self.counter = 0
+
+ def _next_candidate_name(self):
+ self.counter += 1
+ return os.path.join(self.dirname, 'file%d' % self.counter)
+
def new(self):
- return 'foo'
+ while True:
+ name = self._next_candidate_name()
+ if not os.path.exists(name):
+ return name
diff --git a/genbackupdatalib/names_tests.py b/genbackupdatalib/names_tests.py
index 7590921..55cdfd7 100644
--- a/genbackupdatalib/names_tests.py
+++ b/genbackupdatalib/names_tests.py
@@ -31,7 +31,31 @@ class NameGeneratorTests(unittest.TestCase):
def tearDown(self):
shutil.rmtree(self.tempdir)
- def test_generates_name_that_does_not_exist(self):
+ def test_generates_name_that_is_inside_target_directory(self):
name = self.names.new()
- self.assertFalse(os.path.exists(name))
+ self.assert_(name.startswith(self.tempdir + os.sep))
+
+ def test_generates_different_names_every_time(self):
+ names = set(self.names.new() for i in range(10))
+ self.assertEqual(len(names), 10)
+
+ def test_generates_names_that_do_not_exist(self):
+ for i in range(10):
+ name = self.names.new()
+ self.assertFalse(os.path.exists(name))
+
+ def test_generates_the_same_sequence_with_every_instance(self):
+ n = 10
+ first = [self.names.new() for i in range(n)]
+ names2 = genbackupdatalib.NameGenerator(self.tempdir)
+ second = [names2.new() for i in range(n)]
+ self.assertEqual(first, second)
+
+ def test_does_not_generate_names_of_existing_files(self):
+ name = self.names.new()
+ file(name, 'w').close()
+ names2 = genbackupdatalib.NameGenerator(self.tempdir)
+ name2 = names2.new()
+ self.assertNotEqual(name, name2)
+ self.assertFalse(os.path.exists(name2))