~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_osutils.py

Add tests, introduce explicit default values, always respect COLUMNS.

* bzrlib/tests/test_osutils.py:
(TestTerminalWidth): Test the known cases.

* bzrlib/osutils.py:
(terminal_width): Add default values and always respect the
COLUMNS envrionment variable. Catch TIOCGWINSZ related errors more
broadly.

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
import socket
24
24
import stat
25
25
import sys
 
26
import termios
26
27
import time
27
28
 
28
29
from bzrlib import (
1880
1881
            r"bzr: warning: some compiled extensions could not be loaded; "
1881
1882
            "see <https://answers\.launchpad\.net/bzr/\+faq/703>\n"
1882
1883
            )
 
1884
 
 
1885
 
 
1886
class TestTerminalWidth(tests.TestCase):
 
1887
 
 
1888
    def test_default_values(self):
 
1889
        self.assertEquals(80, osutils.default_tty_width)
 
1890
        self.assertEquals(256, osutils.default_non_tty_width)
 
1891
 
 
1892
    def test_defaults_to_COLUMNS(self):
 
1893
        # COLUMNS is set by the test framework
 
1894
        self.assertEquals('80', os.environ['COLUMNS'])
 
1895
        os.environ['COLUMNS'] = '12'
 
1896
        self.assertEquals(12, osutils.terminal_width())
 
1897
 
 
1898
    def test_tty_default_without_columns(self):
 
1899
        del os.environ['COLUMNS']
 
1900
        self.assertEquals(osutils.default_tty_width, osutils.terminal_width())
 
1901
 
 
1902
    def test_non_tty_default_without_columns(self):
 
1903
        del os.environ['COLUMNS']
 
1904
        orig_stdout = sys.stdout
 
1905
        def restore():
 
1906
            sys.stdout = orig_stdout
 
1907
        self.addCleanup(restore)
 
1908
        sys.stdout = None
 
1909
        self.assertEquals(osutils.default_non_tty_width,
 
1910
                          osutils.terminal_width())
 
1911
 
 
1912
    def test_TIOCGWINSZ(self):
 
1913
        # bug 63539 is about a termios without TIOCGWINSZ attribute
 
1914
        exist = True
 
1915
        try:
 
1916
            orig = termios.TIOCGWINSZ
 
1917
        except AttributeError:
 
1918
            exist = False
 
1919
 
 
1920
        def restore():
 
1921
            if exist:
 
1922
                termios.TIOCGWINSZ = orig
 
1923
        self.addCleanup(restore)
 
1924
        del termios.TIOCGWINSZ
 
1925
        self.assertEquals(osutils.default_tty_width, osutils.terminal_width())