/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_escaped_store.py

Store-escaping must quote uppercase characters too, so that they're safely 
stored on Windows.  We can't use urllib.quote anymore but must have our own 
version that can do this.  Test.

Make KnitRepository use escaped stores.

Update existing storage-escaping tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
        self.assertEqual('a', text_store._relpath('a'))
41
41
        self.assertEqual('a', text_store._relpath(u'a'))
42
42
        self.assertEqual('%2520', text_store._relpath(' '))
43
 
        self.assertEqual('%40%253A%253C%253E', text_store._relpath('@:<>'))
44
 
        self.assertEqual('%25C3%25A5', text_store._relpath(u'\xe5'))
 
43
        self.assertEqual('%40%253a%253c%253e', text_store._relpath('@:<>'))
 
44
        self.assertEqual('%25c3%25a5', text_store._relpath(u'\xe5'))
45
45
 
46
46
    def test_prefixed(self):
47
47
        # Prefix should be determined by unescaped string
56
56
 
57
57
        self.assertEqual('62/a', text_store._relpath('a'))
58
58
        self.assertEqual('88/%2520', text_store._relpath(' '))
59
 
        self.assertEqual('12/%40%253A%253C%253E',
 
59
        self.assertEqual('72/%40%253a%253c%253e',
60
60
                text_store._relpath('@:<>'))
61
 
        self.assertEqual('37/%25C3%25A5', text_store._relpath(u'\xe5'))
 
61
        self.assertEqual('77/%25c3%25a5', text_store._relpath(u'\xe5'))
62
62
 
63
63
    def test_files(self):
64
64
        text_store = self.get_store(prefixed=True)
71
71
        self.assertEquals('space', text_store.get(' ').read())
72
72
 
73
73
        text_store.add(StringIO('surprise'), '@:<>')
74
 
        self.failUnlessExists('12/@%3A%3C%3E')
 
74
        self.failUnlessExists('72/@%3a%3c%3e')
75
75
        self.assertEquals('surprise', text_store.get('@:<>').read())
76
76
 
77
77
        text_store.add(StringIO('unicode'), u'\xe5')
78
 
        self.failUnlessExists('37/%C3%A5')
 
78
        self.failUnlessExists('77/%c3%a5')
79
79
        self.assertEquals('unicode', text_store.get(u'\xe5').read())
80
80
 
81
81
    def test_weave(self):
86
86
 
87
87
        t = bzrlib.transport.get_transport(self.get_url())
88
88
        weave_store = WeaveStore(t, prefixed=True, escaped=True)
 
89
        def add_text(file_id, rev_id, contents, parents, transaction):
 
90
            vfile = weave_store.get_weave_or_empty(file_id, transaction)
 
91
            vfile.add_lines(rev_id, parents, new_lines)
89
92
 
90
 
        weave_store.add_text('a', 'r', ['a'], [], trans)
 
93
        add_text('a', 'r', ['a'], [], trans)
91
94
        self.failUnlessExists('62/a.weave')
92
95
        self.assertEqual(['a'], weave_store.get_lines('a', 'r', trans))
93
96
 
94
 
        weave_store.add_text(' ', 'r', ['space'], [], trans)
 
97
        add_text(' ', 'r', ['space'], [], trans)
95
98
        self.failIfExists('21/ .weave')
96
99
        self.failUnlessExists('88/%20.weave')
97
100
        self.assertEquals(['space'], weave_store.get_lines(' ', 'r', trans))
98
101
 
99
 
        weave_store.add_text('@:<>', 'r', ['surprise'], [], trans)
100
 
        self.failUnlessExists('12/@%3A%3C%3E.weave')
 
102
        add_text('@:<>', 'r', ['surprise'], [], trans)
 
103
        self.failUnlessExists('72/@%3a%3c%3e.weave')
101
104
        self.assertEquals(['surprise'], weave_store.get_lines('@:<>', 'r', trans))
102
105
 
103
 
        weave_store.add_text(u'\xe5', 'r', ['unicode'], [], trans)
104
 
        self.failUnlessExists('37/%C3%A5.weave')
 
106
        add_text(u'\xe5', 'r', ['unicode'], [], trans)
 
107
        self.failUnlessExists('77/%c3%a5.weave')
105
108
        self.assertEquals(['unicode'], weave_store.get_lines(u'\xe5', 'r', trans))
106
109