/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
5557.1.15 by John Arbash Meinel
Merge bzr.dev 5597 to resolve NEWS, aka bzr-2.3.txt
1
# Copyright (C) 2005, 2006, 2008-2011 Canonical Ltd
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
2
#
1692.7.6 by Martin Pool
[patch] force deletion of trees containing readonly files (alexander)
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
7
#
1692.7.6 by Martin Pool
[patch] force deletion of trees containing readonly files (alexander)
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.
1887.1.1 by Adeodato Simó
Do not separate paragraphs in the copyright statement with blank lines,
12
#
1692.7.6 by Martin Pool
[patch] force deletion of trees containing readonly files (alexander)
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
4183.7.1 by Sabin Iacob
update FSF mailing address
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
1692.7.6 by Martin Pool
[patch] force deletion of trees containing readonly files (alexander)
16
1912.1.3 by Martin Pool
Add tests for build/install targets
17
"""Test for setup.py build process"""
1185.33.89 by Martin Pool
[patch] add a selftest test that the setup build script works (Alexander Belchenko)
18
6591.1.2 by Vincent Ladeuil
Minimal tests to cover using distutils.version.LooseVersion for pyrex.
19
from distutils import version
1185.33.89 by Martin Pool
[patch] add a selftest test that the setup build script works (Alexander Belchenko)
20
import os
1185.31.59 by John Arbash Meinel
Switch to sys.executable instead of just 'python' to make sure to run the right executable
21
import sys
22
import subprocess
1185.33.89 by Martin Pool
[patch] add a selftest test that the setup build script works (Alexander Belchenko)
23
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
24
import breezy
6624 by Jelmer Vernooij
Merge Python3 porting work ('py3 pokes')
25
from .. import tests
1185.33.89 by Martin Pool
[patch] add a selftest test that the setup build script works (Alexander Belchenko)
26
1912.1.3 by Martin Pool
Add tests for build/install targets
27
# TODO: Run bzr from the installed copy to see if it works.  Really we need to
28
# run something that exercises every module, just starting it may not detect
29
# some missing modules.
30
#
31
# TODO: Check that the version numbers are in sync.  (Or avoid this...)
1540.3.31 by Martin Pool
Fix up TestSetup.tearDown - shouldn't try to remove nonexistent directory
32
7143.15.2 by Jelmer Vernooij
Run autopep8.
33
6437.53.2 by Martin Packman
Isolate test_setup more completely with TestCaseInTempDir
34
class TestSetup(tests.TestCaseInTempDir):
1185.33.89 by Martin Pool
[patch] add a selftest test that the setup build script works (Alexander Belchenko)
35
1912.1.3 by Martin Pool
Add tests for build/install targets
36
    def test_build_and_install(self):
1540.3.31 by Martin Pool
Fix up TestSetup.tearDown - shouldn't try to remove nonexistent directory
37
        """ test cmd `python setup.py build`
1821.1.1 by Alexander Belchenko
win32 installer for bzr.dev.0.9
38
1861.2.15 by Alexander Belchenko
English phrases corrected as John Meinel suggested.
39
        This tests that the build process and man generator run correctly.
40
        It also can catch new subdirectories that weren't added to setup.py.
1540.3.31 by Martin Pool
Fix up TestSetup.tearDown - shouldn't try to remove nonexistent directory
41
        """
4797.77.1 by Max Bowsher
Fix skip criteria for bzrlib.tests.test_setup - it was testing whether setup.py existed in one location, then trying to execute setup.py in a different location.
42
        # setup.py must be run from the root source directory, but the tests
43
        # are not necessarily invoked from there
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
44
        self.source_dir = os.path.dirname(os.path.dirname(breezy.__file__))
4797.77.1 by Max Bowsher
Fix skip criteria for bzrlib.tests.test_setup - it was testing whether setup.py existed in one location, then trying to execute setup.py in a different location.
45
        if not os.path.isfile(os.path.join(self.source_dir, 'setup.py')):
6622.4.1 by Martin
Use skipTest rather than deprecated skip method
46
            self.skipTest(
6622.1.34 by Jelmer Vernooij
Rename brzlib => breezy.
47
                'There is no setup.py file adjacent to the breezy directory')
1993.2.1 by John Arbash Meinel
Skip the setup tests if they don't have distutils.
48
        try:
1995.1.2 by Matthieu Moy
Test for the presence of the Makefile
49
            import distutils.sysconfig
50
            makefile_path = distutils.sysconfig.get_makefile_filename()
51
            if not os.path.exists(makefile_path):
6622.4.1 by Martin
Use skipTest rather than deprecated skip method
52
                self.skipTest(
5523.1.1 by Vincent Ladeuil
Merge 2.2 into trunk resolving conflicts and including fix for bug #632465
53
                    'You must have the python Makefile installed to run this'
54
                    ' test. Usually this can be found by installing'
55
                    ' "python-dev"')
1993.2.1 by John Arbash Meinel
Skip the setup tests if they don't have distutils.
56
        except ImportError:
6622.4.1 by Martin
Use skipTest rather than deprecated skip method
57
            self.skipTest(
5523.1.1 by Vincent Ladeuil
Merge 2.2 into trunk resolving conflicts and including fix for bug #632465
58
                'You must have distutils installed to run this test.'
59
                ' Usually this can be found by installing "python-dev"')
6437.53.3 by Martin Packman
Wording tweak suggested bu vila in review
60
        self.log('test_build running from %s' % self.source_dir)
6437.53.1 by Martin Packman
Make test_setup put build and install products in a tempdir
61
        build_dir = os.path.join(self.test_dir, "build")
62
        install_dir = os.path.join(self.test_dir, "install")
63
        self.run_setup([
64
            'build', '-b', build_dir,
65
            'install', '--root', install_dir])
66
        # Install layout is platform dependant
67
        self.assertPathExists(install_dir)
68
        self.run_setup(['clean', '-b', build_dir])
1912.1.3 by Martin Pool
Add tests for build/install targets
69
70
    def run_setup(self, args):
71
        args = [sys.executable, './setup.py', ] + args
72
        self.log('source base directory: %s', self.source_dir)
73
        self.log('args: %r', args)
74
        p = subprocess.Popen(args,
75
                             cwd=self.source_dir,
5404.1.1 by Andrew Bennetts
Use StringIO rather than real files on disk for log files in tests.
76
                             stdout=subprocess.PIPE,
77
                             stderr=subprocess.PIPE,
1912.1.3 by Martin Pool
Add tests for build/install targets
78
                             )
5404.1.1 by Andrew Bennetts
Use StringIO rather than real files on disk for log files in tests.
79
        stdout, stderr = p.communicate()
80
        self.log('stdout: %r', stdout)
81
        self.log('stderr: %r', stderr)
1912.1.3 by Martin Pool
Add tests for build/install targets
82
        self.assertEqual(0, p.returncode,
83
                         'invocation of %r failed' % args)
6591.1.2 by Vincent Ladeuil
Minimal tests to cover using distutils.version.LooseVersion for pyrex.
84
85
86
class TestDistutilsVersion(tests.TestCase):
87
88
    def test_version_with_string(self):
89
        # We really care about two pyrex specific versions and our ability to
90
        # detect them
91
        lv = version.LooseVersion
92
        self.assertTrue(lv("0.9.4.1") < lv('0.17.beta1'))
93
        self.assertTrue(lv("0.9.6.3") < lv('0.10'))