Omit using sys.modules if possible
Does not work though: still TypeError due to some global in multiproccessing that got None
This commit is contained in:
parent
c334be416d
commit
c429d9eeb2
|
@ -3,7 +3,12 @@
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
import socket
|
||||||
|
from multiprocessing import cpu_count
|
||||||
|
|
||||||
from powerline.lib import memoize, urllib_read, urllib_urlencode, add_divider_highlight_group
|
from powerline.lib import memoize, urllib_read, urllib_urlencode, add_divider_highlight_group
|
||||||
|
from powerline.lib.vcs import guess
|
||||||
|
|
||||||
|
|
||||||
def hostname(only_if_ssh=False):
|
def hostname(only_if_ssh=False):
|
||||||
|
@ -12,7 +17,6 @@ def hostname(only_if_ssh=False):
|
||||||
:param bool only_if_ssh:
|
:param bool only_if_ssh:
|
||||||
only return the hostname if currently in an SSH session
|
only return the hostname if currently in an SSH session
|
||||||
'''
|
'''
|
||||||
import socket
|
|
||||||
if only_if_ssh and not os.environ.get('SSH_CLIENT'):
|
if only_if_ssh and not os.environ.get('SSH_CLIENT'):
|
||||||
return None
|
return None
|
||||||
return socket.gethostname()
|
return socket.gethostname()
|
||||||
|
@ -37,7 +41,6 @@ def user():
|
||||||
|
|
||||||
def branch():
|
def branch():
|
||||||
'''Return the current VCS branch.'''
|
'''Return the current VCS branch.'''
|
||||||
from powerline.lib.vcs import guess
|
|
||||||
repo = guess(path=os.path.abspath(os.getcwd()))
|
repo = guess(path=os.path.abspath(os.getcwd()))
|
||||||
if repo:
|
if repo:
|
||||||
return repo.branch()
|
return repo.branch()
|
||||||
|
@ -96,7 +99,6 @@ def date(format='%Y-%m-%d', istime=False):
|
||||||
:param str format:
|
:param str format:
|
||||||
strftime-style date format string
|
strftime-style date format string
|
||||||
'''
|
'''
|
||||||
from datetime import datetime
|
|
||||||
return [{
|
return [{
|
||||||
'contents': datetime.now().strftime(format),
|
'contents': datetime.now().strftime(format),
|
||||||
'highlight_group': (['time'] if istime else []) + ['date'],
|
'highlight_group': (['time'] if istime else []) + ['date'],
|
||||||
|
@ -106,8 +108,6 @@ def date(format='%Y-%m-%d', istime=False):
|
||||||
|
|
||||||
def fuzzy_time():
|
def fuzzy_time():
|
||||||
'''Display the current time as fuzzy time, e.g. "quarter past six".'''
|
'''Display the current time as fuzzy time, e.g. "quarter past six".'''
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
hour_str = ['twelve', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven']
|
hour_str = ['twelve', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven']
|
||||||
minute_str = {
|
minute_str = {
|
||||||
5: 'five past',
|
5: 'five past',
|
||||||
|
@ -188,7 +188,6 @@ def uptime(format='{days:02d}d {hours:02d}h {minutes:02d}m'):
|
||||||
'''
|
'''
|
||||||
try:
|
try:
|
||||||
import psutil
|
import psutil
|
||||||
from datetime import datetime
|
|
||||||
seconds = int((datetime.now() - datetime.fromtimestamp(psutil.BOOT_TIME)).total_seconds())
|
seconds = int((datetime.now() - datetime.fromtimestamp(psutil.BOOT_TIME)).total_seconds())
|
||||||
except ImportError:
|
except ImportError:
|
||||||
try:
|
try:
|
||||||
|
@ -361,11 +360,10 @@ def system_load(format='{avg:.1f}', threshold_good=1, threshold_bad=2):
|
||||||
:param float threshold_bad:
|
:param float threshold_bad:
|
||||||
threshold for "bad load" highlighting
|
threshold for "bad load" highlighting
|
||||||
'''
|
'''
|
||||||
import multiprocessing
|
cpu_num = cpu_count()
|
||||||
cpu_count = multiprocessing.cpu_count()
|
|
||||||
ret = []
|
ret = []
|
||||||
for avg in os.getloadavg():
|
for avg in os.getloadavg():
|
||||||
normalized = avg / cpu_count
|
normalized = avg / cpu_num
|
||||||
if normalized < threshold_good:
|
if normalized < threshold_good:
|
||||||
hl = 'system_load_good'
|
hl = 'system_load_good'
|
||||||
elif normalized < threshold_bad:
|
elif normalized < threshold_bad:
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
from tests import vim
|
||||||
|
|
||||||
|
|
||||||
|
globals().update(vim._init())
|
|
@ -8,6 +8,8 @@ import tests.vim as vim_module
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
from .lib import Args, urllib_read
|
||||||
|
import tests.lib as lib
|
||||||
|
|
||||||
|
|
||||||
VBLOCK = chr(ord('V') - 0x40)
|
VBLOCK = chr(ord('V') - 0x40)
|
||||||
|
@ -55,20 +57,32 @@ class TestConfig(TestCase):
|
||||||
finally:
|
finally:
|
||||||
vim_module._g.pop('powerline_config_path')
|
vim_module._g.pop('powerline_config_path')
|
||||||
|
|
||||||
|
def test_tmux(self):
|
||||||
|
import powerline.segments.common
|
||||||
|
from imp import reload
|
||||||
|
reload(powerline.segments.common)
|
||||||
|
old_urllib_read = powerline.segments.common.urllib_read
|
||||||
|
powerline.segments.common.urllib_read = urllib_read
|
||||||
|
from powerline.shell import ShellPowerline
|
||||||
|
try:
|
||||||
|
ShellPowerline(Args(ext=['tmux'])).renderer.render()
|
||||||
|
finally:
|
||||||
|
powerline.segments.common.urllib_read = old_urllib_read
|
||||||
|
|
||||||
|
|
||||||
old_cwd = None
|
old_cwd = None
|
||||||
|
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
global old_cwd
|
global old_cwd
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'path')))
|
||||||
old_cwd = os.getcwd()
|
old_cwd = os.getcwd()
|
||||||
sys.modules['vim'] = vim_module._get_module()
|
|
||||||
from powerline.segments import vim
|
from powerline.segments import vim
|
||||||
globals()['vim'] = vim
|
globals()['vim'] = vim
|
||||||
|
|
||||||
|
|
||||||
def tearDownModule():
|
def tearDownModule():
|
||||||
global old_cwd
|
global old_cwd
|
||||||
sys.modules.pop('vim')
|
|
||||||
os.chdir(old_cwd)
|
os.chdir(old_cwd)
|
||||||
old_cwd = None
|
old_cwd = None
|
||||||
|
sys.path.pop(0)
|
||||||
|
|
|
@ -29,7 +29,7 @@ class TestShell(TestCase):
|
||||||
class TestCommon(TestCase):
|
class TestCommon(TestCase):
|
||||||
def test_hostname(self):
|
def test_hostname(self):
|
||||||
with replace_env('SSH_CLIENT', '192.168.0.12 40921 22'):
|
with replace_env('SSH_CLIENT', '192.168.0.12 40921 22'):
|
||||||
with replace_module('socket', gethostname=lambda: 'abc'):
|
with replace_module_module(common, 'socket', gethostname=lambda: 'abc'):
|
||||||
self.assertEqual(common.hostname(), 'abc')
|
self.assertEqual(common.hostname(), 'abc')
|
||||||
self.assertEqual(common.hostname(only_if_ssh=True), 'abc')
|
self.assertEqual(common.hostname(only_if_ssh=True), 'abc')
|
||||||
os.environ.pop('SSH_CLIENT')
|
os.environ.pop('SSH_CLIENT')
|
||||||
|
@ -46,10 +46,9 @@ class TestCommon(TestCase):
|
||||||
self.assertEqual(common.user(), [{'contents': 'def', 'highlight_group': ['superuser', 'user']}])
|
self.assertEqual(common.user(), [{'contents': 'def', 'highlight_group': ['superuser', 'user']}])
|
||||||
|
|
||||||
def test_branch(self):
|
def test_branch(self):
|
||||||
vcslib = new_module('powerline.lib.vcs', guess=lambda path: Args(branch=lambda: os.path.basename(path)))
|
with replace_module_attr(common, 'guess', lambda path: Args(branch=lambda: os.path.basename(path))):
|
||||||
with replace_module('powerline.lib.vcs', vcslib):
|
|
||||||
self.assertEqual(common.branch(), 'tests')
|
self.assertEqual(common.branch(), 'tests')
|
||||||
vcslib.guess = lambda path: None
|
with replace_module_attr(common, 'guess', lambda path: None):
|
||||||
self.assertEqual(common.branch(), None)
|
self.assertEqual(common.branch(), None)
|
||||||
|
|
||||||
def test_cwd(self):
|
def test_cwd(self):
|
||||||
|
@ -104,13 +103,13 @@ class TestCommon(TestCase):
|
||||||
common.cwd(dir_limit_depth=2, dir_shorten_len=2),
|
common.cwd(dir_limit_depth=2, dir_shorten_len=2),
|
||||||
|
|
||||||
def test_date(self):
|
def test_date(self):
|
||||||
with replace_module('datetime', datetime=Args(now=lambda: Args(strftime=lambda fmt: fmt))):
|
with replace_module_attr(common, 'datetime', Args(now=lambda: Args(strftime=lambda fmt: fmt))):
|
||||||
self.assertEqual(common.date(), [{'contents': '%Y-%m-%d', 'highlight_group': ['date'], 'divider_highlight_group': None}])
|
self.assertEqual(common.date(), [{'contents': '%Y-%m-%d', 'highlight_group': ['date'], 'divider_highlight_group': None}])
|
||||||
self.assertEqual(common.date(format='%H:%M', istime=True), [{'contents': '%H:%M', 'highlight_group': ['time', 'date'], 'divider_highlight_group': 'time:divider'}])
|
self.assertEqual(common.date(format='%H:%M', istime=True), [{'contents': '%H:%M', 'highlight_group': ['time', 'date'], 'divider_highlight_group': 'time:divider'}])
|
||||||
|
|
||||||
def test_fuzzy_time(self):
|
def test_fuzzy_time(self):
|
||||||
time = Args(hour=0, minute=45)
|
time = Args(hour=0, minute=45)
|
||||||
with replace_module('datetime', datetime=Args(now=lambda: time)):
|
with replace_module_attr(common, 'datetime', Args(now=lambda: time)):
|
||||||
self.assertEqual(common.fuzzy_time(), 'quarter to one')
|
self.assertEqual(common.fuzzy_time(), 'quarter to one')
|
||||||
time.hour = 23
|
time.hour = 23
|
||||||
time.minute = 59
|
time.minute = 59
|
||||||
|
@ -134,7 +133,7 @@ class TestCommon(TestCase):
|
||||||
|
|
||||||
def test_system_load(self):
|
def test_system_load(self):
|
||||||
with replace_module_module(common, 'os', getloadavg=lambda: (7.5, 3.5, 1.5)):
|
with replace_module_module(common, 'os', getloadavg=lambda: (7.5, 3.5, 1.5)):
|
||||||
with replace_module('multiprocessing', cpu_count=lambda: 2):
|
with replace_module_attr(common, 'cpu_count', lambda: 2):
|
||||||
self.assertEqual(common.system_load(),
|
self.assertEqual(common.system_load(),
|
||||||
[{'contents': '7.5 ', 'highlight_group': ['system_load_ugly', 'system_load'], 'draw_divider': True, 'divider_highlight_group': 'background:divider'},
|
[{'contents': '7.5 ', 'highlight_group': ['system_load_ugly', 'system_load'], 'draw_divider': True, 'divider_highlight_group': 'background:divider'},
|
||||||
{'contents': '3.5 ', 'highlight_group': ['system_load_bad', 'system_load'], 'draw_divider': False, 'divider_highlight_group': 'background:divider'},
|
{'contents': '3.5 ', 'highlight_group': ['system_load_bad', 'system_load'], 'draw_divider': False, 'divider_highlight_group': 'background:divider'},
|
||||||
|
@ -311,14 +310,14 @@ old_cwd = None
|
||||||
|
|
||||||
def setUpModule():
|
def setUpModule():
|
||||||
global old_cwd
|
global old_cwd
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), 'path')))
|
||||||
old_cwd = os.getcwd()
|
old_cwd = os.getcwd()
|
||||||
os.chdir(os.path.dirname(__file__))
|
os.chdir(os.path.dirname(__file__))
|
||||||
sys.modules['vim'] = vim_module._get_module()
|
|
||||||
from powerline.segments import vim
|
from powerline.segments import vim
|
||||||
globals()['vim'] = vim
|
globals()['vim'] = vim
|
||||||
|
|
||||||
|
|
||||||
def tearDownModule():
|
def tearDownModule():
|
||||||
global old_cwd
|
global old_cwd
|
||||||
sys.modules.pop('vim')
|
|
||||||
os.chdir(old_cwd)
|
os.chdir(old_cwd)
|
||||||
|
sys.path.pop(0)
|
||||||
|
|
16
tests/vim.py
16
tests/vim.py
|
@ -234,22 +234,22 @@ class _Buffer(object):
|
||||||
_buf_scopes.pop(bufnr)
|
_buf_scopes.pop(bufnr)
|
||||||
|
|
||||||
|
|
||||||
_module = None
|
_dict = None
|
||||||
|
|
||||||
|
|
||||||
def _get_module():
|
def _init():
|
||||||
global _module
|
global _dict
|
||||||
|
|
||||||
if _module:
|
if _dict:
|
||||||
return _module
|
return _dict
|
||||||
|
|
||||||
import imp
|
import imp
|
||||||
_module = imp.new_module('vim')
|
_dict = {}
|
||||||
for varname, value in globals().items():
|
for varname, value in globals().items():
|
||||||
if varname[0] != '_':
|
if varname[0] != '_':
|
||||||
setattr(_module, varname, value)
|
_dict[varname] = value
|
||||||
_new()
|
_new()
|
||||||
return _module
|
return _dict
|
||||||
|
|
||||||
|
|
||||||
def _get_segment_info():
|
def _get_segment_info():
|
||||||
|
|
Loading…
Reference in New Issue