view tests/test_helpers.py @ 1134:a9b6e38d6dc9

util: add visitor pattern for scrubbing json These functions are for future patches that will add safer serialization via json. '_convert' is a visitor pattern that will be used for lists, dictionaries, and strings for helping convert None to the empty string since json forbids 'null' as a key for a dictionary. None -> '' is a safe mapping because this is for the 'branch_info' variable which already maps the empty string to None. Note, also, that json is chosen instead of, say, csv because json has a concept of 'null' and will better handle utf8 strings (which subversion supports). Important: this changes the requirement of hgsubversion to python 2.6+.
author Sean Farley <sean.michael.farley@gmail.com>
date Mon, 17 Feb 2014 11:10:38 -0600
parents d741f536f23a
children 8d8fc10d0d0a
line wrap: on
line source

import os, sys, unittest

_rootdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, _rootdir)

from hgsubversion import editor

class TestHelpers(unittest.TestCase):
    def test_filestore(self):
        fs = editor.FileStore(2)
        fs.setfile('a', 'a')
        fs.setfile('b', 'b')
        self.assertEqual('a', fs._data.get('a'))
        self.assertEqual('b', fs._data.get('b'))

        fs.delfile('b')
        self.assertRaises(IOError, lambda: fs.getfile('b'))
        fs.setfile('bb', 'bb')
        self.assertTrue('bb' in fs._files)
        self.assertTrue('bb' not in fs._data)
        self.assertEqual('bb', fs.getfile('bb'))

        fs.delfile('bb')
        self.assertTrue('bb' not in fs._files)
        self.assertEqual([], os.listdir(fs._tempdir))
        self.assertRaises(IOError, lambda: fs.getfile('bb'))

        fs.setfile('bb', 'bb')
        self.assertEqual(1, len(os.listdir(fs._tempdir)))
        fs.popfile('bb')
        self.assertEqual([], os.listdir(fs._tempdir))
        self.assertRaises(editor.EditingError, lambda: fs.getfile('bb'))