/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
1
# Copyright (C) 2010 Canonical Ltd
2
#
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
7
#
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
# GNU General Public License for more details.
12
#
13
# You should have received a copy of the GNU General Public License
0.64.334 by Jelmer Vernooij
Remove old FSF address. Thanks Dan Callaghan.
14
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
15
16
"""Test the exporter."""
17
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
18
from __future__ import absolute_import
19
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
20
import os
21
import tempfile
22
import gzip
23
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
24
from .... import tests
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
25
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
26
from ..exporter import (
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
27
    _get_output_stream,
0.64.328 by Jelmer Vernooij
In "plain" mode, skip tags that contain characters not valid in Git.
28
    check_ref_format,
0.133.1 by Oleksandr Usov
Add function to rewrite refnames & tests for it
29
    sanitize_ref_name_for_git
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
30
    )
31
6628.1.2 by Jelmer Vernooij
Fix imports, move exporter.py, drop explorer metadata.
32
from . import (
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
33
    FastimportFeature,
34
    )
35
36
37
class TestOutputStream(tests.TestCase):
38
39
    _test_needs_features = [FastimportFeature]
40
41
    def test_get_output_stream_stdout(self):
42
        # - returns standard out
43
        self.assertIsNot(None, _get_output_stream("-"))
44
45
    def test_get_source_gz(self):
46
        fd, filename = tempfile.mkstemp(suffix=".gz")
47
        os.close(fd)
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
48
        with _get_output_stream(filename) as stream:
49
            stream.write(b"bla")
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
50
        # files ending in .gz are automatically decompressed.
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
51
        with gzip.GzipFile(filename) as f:
52
            self.assertEquals(b"bla", f.read())
0.64.282 by Jelmer Vernooij
Fix output stream to stdout for bzr fast-export.
53
54
    def test_get_source_file(self):
55
        # other files are opened as regular files.
56
        fd, filename = tempfile.mkstemp()
57
        os.close(fd)
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
58
        with _get_output_stream(filename) as stream:
59
            stream.write(b"foo")
60
        with open(filename, 'r') as f:
61
            self.assertEquals("foo", f.read())
0.64.328 by Jelmer Vernooij
In "plain" mode, skip tags that contain characters not valid in Git.
62
63
64
# from dulwich.tests.test_repository:
65
class CheckRefFormatTests(tests.TestCase):
66
    """Tests for the check_ref_format function.
67
68
    These are the same tests as in the git test suite.
69
    """
70
71
    def test_valid(self):
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
72
        self.assertTrue(check_ref_format(b'heads/foo'))
73
        self.assertTrue(check_ref_format(b'foo/bar/baz'))
74
        self.assertTrue(check_ref_format(b'refs///heads/foo'))
75
        self.assertTrue(check_ref_format(b'foo./bar'))
76
        self.assertTrue(check_ref_format(b'heads/foo@bar'))
77
        self.assertTrue(check_ref_format(b'heads/fix.lock.error'))
0.64.328 by Jelmer Vernooij
In "plain" mode, skip tags that contain characters not valid in Git.
78
79
    def test_invalid(self):
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
80
        self.assertFalse(check_ref_format(b'foo'))
81
        self.assertFalse(check_ref_format(b'foo/.bar'))
82
        self.assertFalse(check_ref_format(b'heads/foo/'))
83
        self.assertFalse(check_ref_format(b'heads/foo.'))
84
        self.assertFalse(check_ref_format(b'./foo'))
85
        self.assertFalse(check_ref_format(b'.refs/foo'))
86
        self.assertFalse(check_ref_format(b'heads/foo..bar'))
87
        self.assertFalse(check_ref_format(b'heads/foo?bar'))
88
        self.assertFalse(check_ref_format(b'heads/foo.lock'))
89
        self.assertFalse(check_ref_format(b'heads/v@{ation'))
90
        self.assertFalse(check_ref_format(b'heads/foo\\bar'))
91
        self.assertFalse(check_ref_format(b'heads/foo\bar'))
92
        self.assertFalse(check_ref_format(b'heads/foo bar'))
93
        self.assertFalse(check_ref_format(b'heads/foo\020bar'))
94
        self.assertFalse(check_ref_format(b'heads/foo\177bar'))
0.133.1 by Oleksandr Usov
Add function to rewrite refnames & tests for it
95
0.133.3 by Oleksandr Usov
Implement comments from patch review:
96
0.133.1 by Oleksandr Usov
Add function to rewrite refnames & tests for it
97
class CheckRefnameRewriting(tests.TestCase):
98
    """Tests for sanitize_ref_name_for_git function"""
99
100
    def test_passthrough_valid(self):
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
101
        self.assertEqual(sanitize_ref_name_for_git(b'heads/foo'), b'heads/foo')
102
        self.assertEqual(sanitize_ref_name_for_git(b'foo/bar/baz'), b'foo/bar/baz')
103
        self.assertEqual(sanitize_ref_name_for_git(b'refs///heads/foo'), b'refs///heads/foo')
104
        self.assertEqual(sanitize_ref_name_for_git(b'foo./bar'), b'foo./bar')
105
        self.assertEqual(sanitize_ref_name_for_git(b'heads/foo@bar'), b'heads/foo@bar')
106
        self.assertEqual(sanitize_ref_name_for_git(b'heads/fix.lock.error'), b'heads/fix.lock.error')
0.133.1 by Oleksandr Usov
Add function to rewrite refnames & tests for it
107
108
    def test_rewrite_invalid(self):
7027.2.1 by Jelmer Vernooij
Port fastimport to python3.
109
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'foo./bar')))
110
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo/')))
111
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo.')))
112
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'./foo')))
113
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'.refs/foo')))
114
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo..bar')))
115
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo?bar')))
116
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo.lock')))
117
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/v@{ation')))
118
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo\bar')))
119
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo\\bar')))
120
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo bar')))
121
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo\020bar')))
122
        self.assertTrue(check_ref_format(sanitize_ref_name_for_git(b'heads/foo\177bar')))