commit 610a1668ed8ea0903d5c02c70c43dca9a16dfd1c
parent ec7301333f436eea1f5ebd532f7cbc31021e0b0c
Author: nolash <dev@holbrook.no>
Date:   Sun, 27 Jun 2021 10:06:15 +0200
Add actual dir creation tests
Diffstat:
3 files changed, 38 insertions(+), 3 deletions(-)
diff --git a/leveldir/numeric.py b/leveldir/numeric.py
@@ -44,10 +44,14 @@ class NumDir(LevelDir):
 
 
     def add(self, n, content, prefix=b''):
-        path = to_filepath(n)
+        path = self.to_filepath(n)
+
+        os.makedirs(os.path.dirname(path), exist_ok=True)
+
         f = open(path, 'wb')
         f.write(content)
+        f.close()
 
         f = open(self.master_file, 'ab')
-        f.write(n.to_bytes(8, byteorder('big')))
+        f.write(n.to_bytes(8, byteorder='big'))
         f.close()
diff --git a/run_tests.sh b/run_tests.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+set +x
+export PYTHONPATH=.
+for f in `ls tests/*.py`; do
+	python $f
+done
+set -x
diff --git a/tests/test_numdir.py b/tests/test_numdir.py
@@ -8,7 +8,6 @@ import os
 # local imports
 from leveldir.numeric import NumDir
 
-
 logging.basicConfig(level=logging.DEBUG)
 logg = logging.getLogger()
 
@@ -47,6 +46,30 @@ class NumDirTest(unittest.TestCase):
             self.numdir = NumDir(os.path.join(self.dir, 'n'), [])
 
 
+    def test_single_level(self):
+        self.numdir = NumDir(os.path.join(self.dir, 'n'), [1000])
+        b = os.urandom(32)
+        self.numdir.add(1337, b)
+        b = os.urandom(32)
+        self.numdir.add(666, b)
+        b = os.urandom(32)
+        self.numdir.add(100000, b)
+
+        self.assertEqual(self.numdir.count(), 3)
+
+
+    def test_multilevel(self):
+        logg.debug('using dir {}'.format(self.dir))
+        self.numdir = NumDir(os.path.join(self.dir, 'n'), [1000, 100, 10])
+        b = os.urandom(32)
+        self.numdir.add(1337, b)
+        b = os.urandom(32)
+        self.numdir.add(666, b)
+        b = os.urandom(32)
+        self.numdir.add(100000, b)
+
+        self.assertEqual(self.numdir.count(), 3)
+
 
 if __name__ == '__main__':
     unittest.main()