Fix all things tox

This commit fixes all the issues with the tox jobs. I initially wrote
this project outside of the openstack infrastructure and played kinda
hard and fast with anything from tox. To correct this I need to add
sphinx docs, a pro forma test to (and the preresiquite testr
boilerplate), and a bunch of random pep8 fixes.

Change-Id: I9946fc7db5c030b5860f03b45471f70c1fc4efb1
This commit is contained in:
Matthew Treinish 2016-07-27 01:03:57 -04:00
parent f2d79631da
commit 59fe450ae9
No known key found for this signature in database
GPG Key ID: FD12A0F214C9E177
10 changed files with 164 additions and 8 deletions

8
.testr.conf Normal file
View File

@ -0,0 +1,8 @@
[DEFAULT]
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-500} \
OS_TEST_LOCK_PATH=${OS_TEST_LOCK_PATH:-${TMPDIR:-'/tmp'}} \
${PYTHON:-python} -m subunit.run discover -t ./ ./germqtt/tests $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list

74
doc/source/conf.py Executable file
View File

@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))
# -- General configuration ----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'sphinx.ext.autodoc',
'oslosphinx',
]
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
# The suffix of source filenames.
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'germqtt'
copyright = u'2016, Matthew Treinish'
# If true, '()' will be appended to :func: etc. cross-reference text.
add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
add_module_names = True
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
# html_theme_path = ["."]
# html_theme = '_theme'
# html_static_path = ['static']
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index',
'%s.tex' % project,
u'%s Documentation' % project,
u'Matthew Treinish', 'manual'),
]
# Example configuration for intersphinx: refer to the Python standard library.
# intersphinx_mapping = {'http://docs.python.org/': None}

9
doc/source/index.rst Normal file
View File

@ -0,0 +1,9 @@
germqtt
=======
Contents:
.. toctree::
:maxdepth: 2
readme

1
doc/source/readme.rst Normal file
View File

@ -0,0 +1 @@
.. include:: ../../README.rst

View File

@ -15,14 +15,14 @@
# under the License.
import argparse
import ConfigParser
import logging
import json
import logging
import os
import daemon
import gerritlib.gerrit
import paho.mqtt.publish as publish
from six.moves import configparser as ConfigParser
try:
import daemon.pidlockfile
@ -36,6 +36,7 @@ except Exception:
log = logging.getLogger('germqtt')
class GerritStream(object):
def __init__(self, user, host, key, thread=True, port=29418):
@ -81,6 +82,7 @@ def get_options():
parser.add_argument('conffile', nargs=1, help="Configuration file")
return parser.parse_args()
def get_topic(base_topic, event):
project = event.get('project', '')
event_type = event.get('type', '')

37
germqtt/tests/base.py Normal file
View File

@ -0,0 +1,37 @@
# Copyright (c) 2016 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import fixtures
import testtools
class TestCase(testtools.TestCase):
true = ('True', 'true', '1', 'yes')
def setUp(self):
super(TestCase, self).setUp()
if os.environ.get('OS_STDOUT_CAPTURE') in self.true:
stdout = self.useFixture(fixtures.StringStream('stdout')).stream
self.useFixture(fixtures.MonkeyPatch('sys.stdout', stdout))
if os.environ.get('OS_STDERR_CAPTURE') in self.true:
stderr = self.useFixture(fixtures.StringStream('stderr')).stream
self.useFixture(fixtures.MonkeyPatch('sys.stderr', stderr))
if (os.environ.get('OS_LOG_CAPTURE') != 'False' and
os.environ.get('OS_LOG_CAPTURE') != '0'):
self.useFixture(fixtures.LoggerFixture(nuke_handlers=False,
level=None))

View File

@ -0,0 +1,29 @@
# Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from germqtt import germqtt
from germqtt.tests import base
class TestGermqtt(base.TestCase):
def test_get_topic_with_project(self):
base_topic = 'gerrit'
event = {
'project': 'fake_project',
'type': 'fake-type',
}
full_topic = germqtt.get_topic(base_topic, event)
self.assertEqual('gerrit/fake_project/fake-type', full_topic)

View File

@ -2,6 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr>=1.6 # Apache-2.0
six>=1.9.0 # MIT
paho-mqtt>=1.1
gerritlib>=0.6.0
python-daemon

View File

@ -5,11 +5,6 @@
hacking<0.11,>=0.10.2 # Apache-2.0
coverage>=3.6 # Apache-2.0
discover # BSD
sphinx!=1.2.0,!=1.3b1,<1.3,>=1.1.2 # BSD
oslosphinx!=3.4.0,>=2.5.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0
testscenarios>=0.4 # Apache-2.0/BSD
ddt>=1.0.1 # MIT
six>=1.9.0 # MIT
os-testr>=0.6.0

View File

@ -31,6 +31,6 @@ commands = python setup.py build_sphinx
# E123, E125 skipped as they are invalid PEP-8.
show-source = True
ignore = E123,E125
ignore = E123,E125,E129
builtins = _
exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build