aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/tests/test_svn.py
blob: 44637909bd48de95352b70de8dfdbb2d0e6bc90a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# -*- coding: utf-8 -*-
"""svn tests"""


import os
import zipfile
import sys
import tempfile
import unittest
import shutil
import stat

from setuptools import svn_utils
from setuptools.command import egg_info
from setuptools.command import sdist

#requires python >= 2.4
from subprocess import call as _call

def _remove_dir(target):

    #on windows this seems to a problem
    for dir_path, dirs, files in os.walk(target):
        os.chmod(dir_path, stat.S_IWRITE)
        for filename in files:
            os.chmod(os.path.join(dir_path, filename), stat.S_IWRITE)
    shutil.rmtree(target)

class TestSvnVersion(unittest.TestCase):

    def test_no_svn_found(self):
        old_path = os.environ['path']
        os.environ['path'] = ''
        try:
            version = svn_utils.SVNEntries.get_svn_tool_version()
            self.assertEqual(version, '')
        finally:
            os.environ['path'] = old_path

    def test_svn_should_exist(self):
        version = svn_utils.SVNEntries.get_svn_tool_version()
        self.assertNotEqual(version, '')


class TestSvn_1_7(unittest.TestCase):

    def setUp(self):
        self.temp_dir = tempfile.mkdtemp()
        zip_file, source, target = [None, None, None]
        try:
            zip_file = zipfile.ZipFile(os.path.join('setuptools', 'tests',
                                                    'svn17_example.zip'))
            for files in zip_file.namelist():
                zip_file.extract(files, self.temp_dir)
        finally:
            if zip_file:
                zip_file.close()
            del zip_file

        self.old_cwd = os.getcwd()
        os.chdir(os.path.join(self.temp_dir, 'svn17_example'))

    def tearDown(self):
        os.chdir(self.old_cwd)
        _remove_dir(self.temp_dir)

    def test_svnentrycmd_is_valid(self):
        entries = svn_utils.SVNEntries.load_dir('.')
        self.assertIsInstance(entries, svn_utils.SVNEntriesCMD)
        self.assertTrue(entries.is_valid())

    def test_svnentrycmd_is_valid(self):
        entries = svn_utils.SVNEntries.load_dir('.')
        self.assertIsInstance(entries, svn_utils.SVNEntriesCMD)
        self.assertTrue(entries.is_valid())

    def test_svnentrycmd_enteries(self):
        entries = svn_utils.SVNEntries.load_dir('.')
        self.assertIsInstance(entries, svn_utils.SVNEntriesCMD)
        self.assertEqual(entries.parse_revision(), 4)
        self.assertEqual(set(entries.get_undeleted_records()),
                         set([u'readme.txt', u'other']))
        self.assertEqual(set(entries.get_external_dirs('dir-props')),
            set([u'third_party3', u'third_party2', u'third_party']))

    def test_egg_info(self):
        rev = egg_info.egg_info.get_svn_revision()
        self.assertEqual(rev, '4')

    def test_entry_iterator(self):
        expected = set([
            os.path.join('.', 'readme.txt'),
            os.path.join('.', 'other'),
            ])
        self.assertEqual(set(x for x in sdist.entries_finder('.', '')),
                         expected)

    def test_external_iterator(self):
        expected = set([
            os.path.join('.', 'third_party'),
            os.path.join('.', 'third_party2'),
            os.path.join('.', 'third_party3'),
            ])
        self.assertEqual(set(x for x in sdist.externals_finder('.', '')),
                         expected)

def test_suite():
    return unittest.defaultTestLoader.loadTestsFromName(__name__)