From feb9c8550e983b7a4cb8b65e217b35cce4677329 Mon Sep 17 00:00:00 2001 From: Buck Ryan Date: Sun, 1 Jul 2018 21:13:15 -0400 Subject: [PATCH] fix bug in svn segment --- Dockerfile | 9 ++++++--- powerline_shell/segments/svn.py | 2 +- test.sh | 4 +++- test/segments_test/svn_test.py | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 test/segments_test/svn_test.py diff --git a/Dockerfile b/Dockerfile index 5409279b..71481322 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,8 @@ RUN apk add --no-cache --update \ git \ mercurial \ php5 \ - subversion && \ + subversion \ + && \ rm -rf /var/cache/apk/* RUN mkdir /code @@ -22,7 +23,9 @@ RUN bzr whoami "root " && \ git config --global user.email "root@example.com" && \ git config --global user.name "root" -COPY . ./ -RUN ./setup.py install +# COPY . ./ +# RUN ./setup.py install ENV USER root + +CMD ["nosetests"] diff --git a/powerline_shell/segments/svn.py b/powerline_shell/segments/svn.py index 93bc96ca..6869cf9c 100644 --- a/powerline_shell/segments/svn.py +++ b/powerline_shell/segments/svn.py @@ -39,7 +39,7 @@ def build_stats(): env=get_subprocess_env()) except OSError: # Popen will throw an OSError if svn is not found - return None + return None, None pdata = p.communicate() if p.returncode != 0 or pdata[1][:22] == b'svn: warning: W155007:': return None, None diff --git a/test.sh b/test.sh index 46a2ffba..7bfee70c 100755 --- a/test.sh +++ b/test.sh @@ -1,4 +1,6 @@ #!/bin/sh set -eu docker build -t powerline-shell . -docker run --rm -it powerline-shell nosetests "$@" +docker run --rm --interactive --tty \ + --volume $PWD:/code \ + powerline-shell "$@" diff --git a/test/segments_test/svn_test.py b/test/segments_test/svn_test.py new file mode 100644 index 00000000..d7d821f8 --- /dev/null +++ b/test/segments_test/svn_test.py @@ -0,0 +1,32 @@ +import tempfile +import unittest +import shutil +import mock +import sh +import powerline_shell.segments.svn as svn +from ..testing_utils import dict_side_effect_fn + + +class SvnTest(unittest.TestCase): + + def setUp(self): + self.powerline = mock.MagicMock() + self.powerline.segment_conf.side_effect = dict_side_effect_fn({ + ("vcs", "show_symbol"): False, + }) + + self.dirname = tempfile.mkdtemp() + sh.cd(self.dirname) + # sh.svn("init", ".") + + self.segment = svn.Segment(self.powerline, {}) + + def tearDown(self): + shutil.rmtree(self.dirname) + + @mock.patch("powerline_shell.utils.get_PATH") + def test_svn_not_installed(self, get_PATH): + get_PATH.return_value = "" # so svn can't be found + self.segment.start() + self.segment.add_to_powerline() + self.assertEqual(self.powerline.append.call_count, 0)