From 65a95c9dd1bf0b9c335f6b424a064970a2d6cfa0 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Fri, 24 Apr 2020 12:01:46 +0200 Subject: [PATCH 1/4] Update access to variables --- rplugin/python3/neotags.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rplugin/python3/neotags.py b/rplugin/python3/neotags.py index a04a57e..8946835 100644 --- a/rplugin/python3/neotags.py +++ b/rplugin/python3/neotags.py @@ -24,7 +24,7 @@ class NeotagsPlugin(object): for option, default in self.options.items(): try: variable = 'neotags_%s' % option - self.options[option] = self.nvim.vars[variable] + self.options[option] = self.nvim.eval('g:%s' % variable) except pynvim.api.nvim.NvimError: self.options[option] = default From ad92d10f1233d2dc69a68552a571e6683c70ceb3 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Fri, 24 Apr 2020 12:04:48 +0200 Subject: [PATCH 2/4] Build docker image only on change --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdbc48a..10917e8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,8 +11,9 @@ build:image: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com - docker build -t registry.gitlab.com/danielsiepmann/neotags . - docker push registry.gitlab.com/danielsiepmann/neotags:latest - # only: - # - master + only: + changes: + - Dockerfile lint:coding-guideline: image: 'registry.gitlab.com/danielsiepmann/neotags:latest' From 9b9965094e83d90b3c7b28aad0321162c17cbe2b Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Mon, 27 Apr 2020 11:06:55 +0200 Subject: [PATCH 3/4] Update tests --- readme.rst | 2 +- rplugin/test/test_neotags.py | 35 +++++++++++++++++++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/readme.rst b/readme.rst index 1afbfbc..e9def63 100644 --- a/readme.rst +++ b/readme.rst @@ -48,4 +48,4 @@ Install dependencies: Run tests: -``cd rplugin && python -m unittest test.test_neotags`` +``docker run -it --rm -v $PWD/rplugin:/project -w /project registry.gitlab.com/danielsiepmann/neotags:latest python -m unittest test.test_neotags`` diff --git a/rplugin/test/test_neotags.py b/rplugin/test/test_neotags.py index af2766d..9dfc5f8 100644 --- a/rplugin/test/test_neotags.py +++ b/rplugin/test/test_neotags.py @@ -1,3 +1,4 @@ +import unittest from unittest.mock import Mock from unittest.mock import MagicMock from pyfakefs import fake_filesystem_unittest @@ -6,7 +7,6 @@ import os from python3.neotags import NeotagsPlugin - class TestNeotagsPlugin(fake_filesystem_unittest.TestCase): def setUp(self): @@ -18,22 +18,42 @@ class TestNeotagsPlugin(fake_filesystem_unittest.TestCase): self.plugin = NeotagsPlugin(Mock(pynvim.api.nvim)) def test_default_options(self): - self.assertEqual('ctags', self.plugin.options['ctags_cmd']) self.assertEqual('tags', self.plugin.options['tags_filename']) + self.assertEqual('ctags', self.plugin.options['ctags_cmd']) self.assertEqual(False, self.plugin.options['logging']) def test_custom_options(self): - self.plugin.nvim.configure_mock(vars={}) - self.plugin.nvim.vars['neotags_tags_filename'] = 'new_tags' - self.plugin.nvim.vars['neotags_ctags_cmd'] = 'new_ctags' - self.plugin.nvim.vars['neotags_logging'] = True + def eval(argument): + if argument == 'g:neotags_tags_filename': + return 'new_tags' + if argument == 'g:neotags_ctags_cmd': + return 'new_ctags' + if argument == 'g:neotags_logging': + return True + self.plugin.nvim.configure_mock(eval=eval) self.plugin.update_settings() self.assertEqual('new_tags', self.plugin.options['tags_filename']) self.assertEqual('new_ctags', self.plugin.options['ctags_cmd']) self.assertEqual(True, self.plugin.options['logging']) + def test_fallback_option(self): + def eval(argument): + if argument == 'g:neotags_tags_filename': + return 'new_tags' + if argument == 'g:neotags_ctags_cmd': + raise pynvim.api.nvim.NvimError('') + if argument == 'g:neotags_logging': + return True + + self.plugin.nvim.configure_mock(eval=eval) + self.plugin.update_settings() + + self.assertEqual('new_tags', self.plugin.options['tags_filename']) + self.assertEqual('ctags', self.plugin.options['ctags_cmd']) + self.assertEqual(True, self.plugin.options['logging']) + def test_debug_logs_to_nvim_when_logging_is_active(self): self.plugin.options['logging'] = True self.plugin.nvim.out_write = MagicMock() @@ -128,3 +148,6 @@ class TestNeotagsPlugin(fake_filesystem_unittest.TestCase): self.plugin.strip_existing_tags(tags_file, os.path.basename(filename)) with open(tags_file) as f, open(expected_tags_file) as e: self.assertEqual(e.read(), f.read()) + +if __name__ == '__main__': + unittest.main() From 94bf501cf31b5a553ee347c5377a284c090e5e60 Mon Sep 17 00:00:00 2001 From: Daniel Siepmann Date: Mon, 27 Apr 2020 11:16:33 +0200 Subject: [PATCH 4/4] Migrate pep8 to pycodestyle --- .gitlab-ci.yml | 2 +- Dockerfile | 2 +- rplugin/python3/neotags.py | 6 +++--- rplugin/test/test_neotags.py | 2 ++ 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 10917e8..9a9f8f2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ lint:coding-guideline: image: 'registry.gitlab.com/danielsiepmann/neotags:latest' stage: test script: - - pep8 . + - pycodestyle --show-source --show-pep8 . test: image: 'registry.gitlab.com/danielsiepmann/neotags:latest' diff --git a/Dockerfile b/Dockerfile index cd7049c..b673e0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,4 +5,4 @@ LABEL Description="This image should provide environment to lint neotags" Vendor # Install dependencies RUN pip install --upgrade pip -RUN pip install --no-cache-dir pep8 pynvim pyfakefs==3.1 +RUN pip install --no-cache-dir pycodestyle==2.5.0 pynvim pyfakefs==3.1 diff --git a/rplugin/python3/neotags.py b/rplugin/python3/neotags.py index 8946835..3e174c9 100644 --- a/rplugin/python3/neotags.py +++ b/rplugin/python3/neotags.py @@ -36,11 +36,11 @@ class NeotagsPlugin(object): self.debug('Triggered for "%s"' % filename) pwd = self.nvim.funcs.execute('pwd').strip() - relative_filename = filename.replace(pwd, '').lstrip('\/') + relative_filename = filename.replace(pwd, '').lstrip(r'\/') try: tags_file = self.get_tags_file(filename) - except: + except BaseException: self.error( 'Could not determine tags file to update for "%s"' % ( filename @@ -53,7 +53,7 @@ class NeotagsPlugin(object): self.strip_existing_tags(tags_file, relative_filename) self.generate_tags(tags_file, relative_filename) self.debug('Tags updated for "%s"' % filename) - except: + except BaseException: self.error( 'Failed to update tags for "%s", reason: %s' % ( filename, traceback.format_exc() diff --git a/rplugin/test/test_neotags.py b/rplugin/test/test_neotags.py index 9dfc5f8..ba52754 100644 --- a/rplugin/test/test_neotags.py +++ b/rplugin/test/test_neotags.py @@ -7,6 +7,7 @@ import os from python3.neotags import NeotagsPlugin + class TestNeotagsPlugin(fake_filesystem_unittest.TestCase): def setUp(self): @@ -149,5 +150,6 @@ class TestNeotagsPlugin(fake_filesystem_unittest.TestCase): with open(tags_file) as f, open(expected_tags_file) as e: self.assertEqual(e.read(), f.read()) + if __name__ == '__main__': unittest.main()