summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-07-13 10:08:26 +0000
committerGerrit Code Review <review@openstack.org>2018-07-13 10:08:26 +0000
commit6123a7e555c6c23c977075c6460aac0b8b5a15b6 (patch)
tree9f3506f9044cdc82490a239c3d36e9f92a904be4
parent746a089d4a699857ebd0dff5b5a0a6e51a7949f1 (diff)
parent4953756c27e1a6a76d3fcc7fd8989491979008b3 (diff)
Merge "adopt pre-commit hooks"2.1.0
-rw-r--r--.pre-commit-config.yaml11
-rw-r--r--README.rst3
-rw-r--r--doc/source/conf.py127
-rw-r--r--setup.cfg7
-rw-r--r--test-requirements.txt1
-rw-r--r--tests/base.py11
-rw-r--r--tests/multibranch/fixtures/scm_bitbucket_full.yaml1
-rw-r--r--tests/parameters/fixtures/node-label001.yaml2
-rw-r--r--tests/parameters/fixtures/node-label002.yaml2
-rw-r--r--tests/parameters/fixtures/node-label003.yaml2
-rw-r--r--tests/yamlparser/fixtures/folders/folders001.xml1
-rw-r--r--tox.ini10
12 files changed, 98 insertions, 80 deletions
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000..ff6899a
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,11 @@
1# See https://pre-commit.com for more information
2# See https://pre-commit.com/hooks.html for more hooks
3repos:
4- repo: https://github.com/pre-commit/pre-commit-hooks
5 rev: v1.2.1-1
6 hooks:
7 - id: check-added-large-files
8 - id: end-of-file-fixer
9 - id: flake8
10 args: ['--config=setup.cfg']
11 - id: trailing-whitespace
diff --git a/README.rst b/README.rst
index 632e295..bc270ac 100644
--- a/README.rst
+++ b/README.rst
@@ -29,6 +29,9 @@ Cloning::
29 29
30 git clone https://git.openstack.org/openstack-infra/jenkins-job-builder 30 git clone https://git.openstack.org/openstack-infra/jenkins-job-builder
31 31
32Install pre-commit from https://pre-commit.com/#intro in order to run some
33minimal testing on your commits.
34
32A virtual environment is recommended for development. For example, Jenkins 35A virtual environment is recommended for development. For example, Jenkins
33Job Builder may be installed from the top level directory:: 36Job Builder may be installed from the top level directory::
34 37
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 3a5e6d3..c4f01a1 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -3,7 +3,7 @@
3# Jenkins Job Builder documentation build configuration file, created by 3# Jenkins Job Builder documentation build configuration file, created by
4# sphinx-quickstart on Mon Sep 10 19:36:21 2012. 4# sphinx-quickstart on Mon Sep 10 19:36:21 2012.
5# 5#
6# This file is execfile()d with the current directory set to its containing dir. 6# This file is execfile()d with the current directory set to its containing dir
7# 7#
8# Note that not all possible configuration values are present in this 8# Note that not all possible configuration values are present in this
9# autogenerated file. 9# autogenerated file.
@@ -11,7 +11,9 @@
11# All configuration values have a default; values that are commented out 11# All configuration values have a default; values that are commented out
12# serve to show the default. 12# serve to show the default.
13 13
14import sys, os 14import os
15import sys
16from jenkins_jobs.version import version_info as jenkins_jobs_version
15 17
16# If extensions (or modules to document with autodoc) are in another directory, 18# If extensions (or modules to document with autodoc) are in another directory,
17# add these directories to sys.path here. If the directory is relative to the 19# add these directories to sys.path here. If the directory is relative to the
@@ -19,13 +21,13 @@ import sys, os
19sys.path.insert(0, os.path.abspath('../..')) 21sys.path.insert(0, os.path.abspath('../..'))
20sys.path.insert(0, os.path.abspath('../../jenkins_jobs/modules')) 22sys.path.insert(0, os.path.abspath('../../jenkins_jobs/modules'))
21 23
22# -- General configuration ----------------------------------------------------- 24# -- General configuration ----------------------------------------------------
23 25
24# If your documentation needs a minimal Sphinx version, state it here. 26# If your documentation needs a minimal Sphinx version, state it here.
25#needs_sphinx = '1.0' 27# needs_sphinx = '1.0'
26 28
27# Add any Sphinx extension module names here, as strings. They can be extensions 29# Add any Sphinx extension module names here, as strings. They can be
28# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 30# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
29extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage', 31extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage',
30 'jenkins_jobs.sphinx.yaml', 'sphinxcontrib.programoutput', 32 'jenkins_jobs.sphinx.yaml', 'sphinxcontrib.programoutput',
31 'sphinx.ext.extlinks'] 33 'sphinx.ext.extlinks']
@@ -37,7 +39,7 @@ templates_path = ['_templates']
37source_suffix = '.rst' 39source_suffix = '.rst'
38 40
39# The encoding of source files. 41# The encoding of source files.
40#source_encoding = 'utf-8-sig' 42# source_encoding = 'utf-8-sig'
41 43
42# The master toctree document. 44# The master toctree document.
43master_doc = 'index' 45master_doc = 'index'
@@ -51,47 +53,46 @@ copyright = u'2012, Jenkins Job Builder Maintainers'
51# built documents. 53# built documents.
52# 54#
53# Version info 55# Version info
54from jenkins_jobs.version import version_info as jenkins_jobs_version
55release = jenkins_jobs_version.version_string_with_vcs() 56release = jenkins_jobs_version.version_string_with_vcs()
56# The short X.Y version. 57# The short X.Y version.
57version = jenkins_jobs_version.canonical_version_string() 58version = jenkins_jobs_version.canonical_version_string()
58 59
59# The language for content autogenerated by Sphinx. Refer to documentation 60# The language for content autogenerated by Sphinx. Refer to documentation
60# for a list of supported languages. 61# for a list of supported languages.
61#language = None 62# language = None
62 63
63# There are two options for replacing |today|: either, you set today to some 64# There are two options for replacing |today|: either, you set today to some
64# non-false value, then it is used: 65# non-false value, then it is used:
65#today = '' 66# today = ''
66# Else, today_fmt is used as the format for a strftime call. 67# Else, today_fmt is used as the format for a strftime call.
67#today_fmt = '%B %d, %Y' 68# today_fmt = '%B %d, %Y'
68 69
69# List of patterns, relative to source directory, that match files and 70# List of patterns, relative to source directory, that match files and
70# directories to ignore when looking for source files. 71# directories to ignore when looking for source files.
71exclude_patterns = [] 72exclude_patterns = []
72 73
73# The reST default role (used for this markup: `text`) to use for all documents. 74# The reST default role (used for this markup: `text`) to use for all documents
74#default_role = None 75# default_role = None
75 76
76# If true, '()' will be appended to :func: etc. cross-reference text. 77# If true, '()' will be appended to :func: etc. cross-reference text.
77#add_function_parentheses = True 78# add_function_parentheses = True
78 79
79# If true, the current module name will be prepended to all description 80# If true, the current module name will be prepended to all description
80# unit titles (such as .. function::). 81# unit titles (such as .. function::).
81#add_module_names = True 82# add_module_names = True
82 83
83# If true, sectionauthor and moduleauthor directives will be shown in the 84# If true, sectionauthor and moduleauthor directives will be shown in the
84# output. They are ignored by default. 85# output. They are ignored by default.
85#show_authors = False 86# show_authors = False
86 87
87# The name of the Pygments (syntax highlighting) style to use. 88# The name of the Pygments (syntax highlighting) style to use.
88pygments_style = 'sphinx' 89pygments_style = 'sphinx'
89 90
90# A list of ignored prefixes for module index sorting. 91# A list of ignored prefixes for module index sorting.
91#modindex_common_prefix = [] 92# modindex_common_prefix = []
92 93
93 94
94# -- Options for HTML output --------------------------------------------------- 95# -- Options for HTML output --------------------------------------------------
95 96
96# The theme to use for HTML and HTML Help pages. See the documentation for 97# The theme to use for HTML and HTML Help pages. See the documentation for
97# a list of builtin themes. 98# a list of builtin themes.
@@ -100,116 +101,117 @@ html_theme = 'default'
100# Theme options are theme-specific and customize the look and feel of a theme 101# Theme options are theme-specific and customize the look and feel of a theme
101# further. For a list of options available for each theme, see the 102# further. For a list of options available for each theme, see the
102# documentation. 103# documentation.
103#html_theme_options = {} 104# html_theme_options = {}
104 105
105# Add any paths that contain custom themes here, relative to this directory. 106# Add any paths that contain custom themes here, relative to this directory.
106#html_theme_path = [] 107# html_theme_path = []
107 108
108# The name for this set of Sphinx documents. If None, it defaults to 109# The name for this set of Sphinx documents. If None, it defaults to
109# "<project> v<release> documentation". 110# "<project> v<release> documentation".
110#html_title = None 111# html_title = None
111 112
112# A shorter title for the navigation bar. Default is the same as html_title. 113# A shorter title for the navigation bar. Default is the same as html_title.
113#html_short_title = None 114# html_short_title = None
114 115
115# The name of an image file (relative to this directory) to place at the top 116# The name of an image file (relative to this directory) to place at the top
116# of the sidebar. 117# of the sidebar.
117#html_logo = None 118# html_logo = None
118 119
119# The name of an image file (within the static path) to use as favicon of the 120# The name of an image file (within the static path) to use as favicon of the
120# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 121# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
121# pixels large. 122# pixels large.
122#html_favicon = None 123# html_favicon = None
123 124
124# Add any paths that contain custom static files (such as style sheets) here, 125# Add any paths that contain custom static files (such as style sheets) here,
125# relative to this directory. They are copied after the builtin static files, 126# relative to this directory. They are copied after the builtin static files,
126# so a file named "default.css" will overwrite the builtin "default.css". 127# so a file named "default.css" will overwrite the builtin "default.css".
127#html_static_path = ['_static'] 128# html_static_path = ['_static']
128 129
129# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 130# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
130# using the given strftime format. 131# using the given strftime format.
131#html_last_updated_fmt = '%b %d, %Y' 132# html_last_updated_fmt = '%b %d, %Y'
132 133
133# If true, SmartyPants will be used to convert quotes and dashes to 134# If true, SmartyPants will be used to convert quotes and dashes to
134# typographically correct entities. 135# typographically correct entities.
135#html_use_smartypants = True 136# html_use_smartypants = True
136 137
137# Custom sidebar templates, maps document names to template names. 138# Custom sidebar templates, maps document names to template names.
138#html_sidebars = {} 139# html_sidebars = {}
139 140
140# Additional templates that should be rendered to pages, maps page names to 141# Additional templates that should be rendered to pages, maps page names to
141# template names. 142# template names.
142#html_additional_pages = {} 143# html_additional_pages = {}
143 144
144# If false, no module index is generated. 145# If false, no module index is generated.
145#html_domain_indices = True 146# html_domain_indices = True
146 147
147# If false, no index is generated. 148# If false, no index is generated.
148#html_use_index = True 149# html_use_index = True
149 150
150# If true, the index is split into individual pages for each letter. 151# If true, the index is split into individual pages for each letter.
151#html_split_index = False 152# html_split_index = False
152 153
153# If true, links to the reST sources are added to the pages. 154# If true, links to the reST sources are added to the pages.
154#html_show_sourcelink = True 155# html_show_sourcelink = True
155 156
156# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 157# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
157#html_show_sphinx = True 158# html_show_sphinx = True
158 159
159# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 160# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
160#html_show_copyright = True 161# html_show_copyright = True
161 162
162# If true, an OpenSearch description file will be output, and all pages will 163# If true, an OpenSearch description file will be output, and all pages will
163# contain a <link> tag referring to it. The value of this option must be the 164# contain a <link> tag referring to it. The value of this option must be the
164# base URL from which the finished HTML is served. 165# base URL from which the finished HTML is served.
165#html_use_opensearch = '' 166# html_use_opensearch = ''
166 167
167# This is the file name suffix for HTML files (e.g. ".xhtml"). 168# This is the file name suffix for HTML files (e.g. ".xhtml").
168#html_file_suffix = None 169# html_file_suffix = None
169 170
170# Output file base name for HTML help builder. 171# Output file base name for HTML help builder.
171htmlhelp_basename = 'JenkinsJobBuilderdoc' 172htmlhelp_basename = 'JenkinsJobBuilderdoc'
172 173
173 174
174# -- Options for LaTeX output -------------------------------------------------- 175# -- Options for LaTeX output -------------------------------------------------
175 176
176latex_elements = { 177latex_elements = {
177# The paper size ('letterpaper' or 'a4paper'). 178 # The paper size ('letterpaper' or 'a4paper').
178#'papersize': 'letterpaper', 179 # 'papersize': 'letterpaper',
179 180
180# The font size ('10pt', '11pt' or '12pt'). 181 # The font size ('10pt', '11pt' or '12pt').
181#'pointsize': '10pt', 182 # 'pointsize': '10pt',
182 183
183# Additional stuff for the LaTeX preamble. 184 # Additional stuff for the LaTeX preamble.
184#'preamble': '', 185 # 'preamble': '',
185} 186}
186 187
187# Grouping the document tree into LaTeX files. List of tuples 188# Grouping the document tree into LaTeX files. List of tuples
188# (source start file, target name, title, author, documentclass [howto/manual]). 189# (source start file, target name, title, author, documentclass
190# [howto/manual]).
189latex_documents = [ 191latex_documents = [
190 ('index', 'JenkinsJobBuilder.tex', u'Jenkins Job Builder Documentation', 192 ('index', 'JenkinsJobBuilder.tex', u'Jenkins Job Builder Documentation',
191 u'Jenkins Job Builder Maintainers', 'manual'), 193 u'Jenkins Job Builder Maintainers', 'manual'),
192] 194]
193 195
194# The name of an image file (relative to this directory) to place at the top of 196# The name of an image file (relative to this directory) to place at the top of
195# the title page. 197# the title page.
196#latex_logo = None 198# latex_logo = None
197 199
198# For "manual" documents, if this is true, then toplevel headings are parts, 200# For "manual" documents, if this is true, then toplevel headings are parts,
199# not chapters. 201# not chapters.
200#latex_use_parts = False 202# latex_use_parts = False
201 203
202# If true, show page references after internal links. 204# If true, show page references after internal links.
203#latex_show_pagerefs = False 205# latex_show_pagerefs = False
204 206
205# If true, show URL addresses after external links. 207# If true, show URL addresses after external links.
206#latex_show_urls = False 208# latex_show_urls = False
207 209
208# Documents to append as an appendix to all manuals. 210# Documents to append as an appendix to all manuals.
209#latex_appendices = [] 211# latex_appendices = []
210 212
211# If false, no module index is generated. 213# If false, no module index is generated.
212#latex_domain_indices = True 214# latex_domain_indices = True
213 215
214# -- Options for linkcheck ---------------------------------------------------- 216# -- Options for linkcheck ----------------------------------------------------
215 217
@@ -218,7 +220,7 @@ latex_documents = [
218linkcheck_timeout = 15 220linkcheck_timeout = 15
219 221
220 222
221# -- Options for manual page output -------------------------------------------- 223# -- Options for manual page output ------------------------------------------
222 224
223# One entry per manual page. List of tuples 225# One entry per manual page. List of tuples
224# (source start file, name, description, authors, manual section). 226# (source start file, name, description, authors, manual section).
@@ -228,28 +230,29 @@ man_pages = [
228] 230]
229 231
230# If true, show URL addresses after external links. 232# If true, show URL addresses after external links.
231#man_show_urls = False 233# man_show_urls = False
232 234
233 235
234# -- Options for Texinfo output ------------------------------------------------ 236# -- Options for Texinfo output -----------------------------------------------
235 237
236# Grouping the document tree into Texinfo files. List of tuples 238# Grouping the document tree into Texinfo files. List of tuples
237# (source start file, target name, title, author, 239# (source start file, target name, title, author,
238# dir menu entry, description, category) 240# dir menu entry, description, category)
239texinfo_documents = [ 241texinfo_documents = [
240 ('index', 'JenkinsJobBuilder', u'Jenkins Job Builder Documentation', 242 ('index', 'JenkinsJobBuilder', u'Jenkins Job Builder Documentation',
241 u'Jenkins Job Builder Maintainers', 'JenkinsJobBuilder', 'One line description of project.', 243 u'Jenkins Job Builder Maintainers',
242 'Miscellaneous'), 244 'JenkinsJobBuilder', 'One line description of project.',
245 'Miscellaneous'),
243] 246]
244 247
245# Documents to append as an appendix to all manuals. 248# Documents to append as an appendix to all manuals.
246#texinfo_appendices = [] 249# texinfo_appendices = []
247 250
248# If false, no module index is generated. 251# If false, no module index is generated.
249#texinfo_domain_indices = True 252# texinfo_domain_indices = True
250 253
251# How to display URL addresses: 'footnote', 'no', or 'inline'. 254# How to display URL addresses: 'footnote', 'no', or 'inline'.
252#texinfo_show_urls = 'footnote' 255# texinfo_show_urls = 'footnote'
253 256
254extlinks = {'jenkins-wiki': ('https://wiki.jenkins.io/display/JENKINS/%s', 257extlinks = {'jenkins-wiki': ('https://wiki.jenkins.io/display/JENKINS/%s',
255 None)} 258 None)}
diff --git a/setup.cfg b/setup.cfg
index d0bb95c..82caa88 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -97,3 +97,10 @@ jenkins_jobs.modules =
97 triggers=jenkins_jobs.modules.triggers:Triggers 97 triggers=jenkins_jobs.modules.triggers:Triggers
98 wrappers=jenkins_jobs.modules.wrappers:Wrappers 98 wrappers=jenkins_jobs.modules.wrappers:Wrappers
99 zuul=jenkins_jobs.modules.zuul:Zuul 99 zuul=jenkins_jobs.modules.zuul:Zuul
100
101[flake8]
102# These are ignored intentionally in openstack-infra projects; please
103# don't submit patches that solely correct them or enable them.
104ignore = E125,E128,H
105show-source = True
106exclude = .virtualenv,.venv,.tox,dist,build,*.egg,.test
diff --git a/test-requirements.txt b/test-requirements.txt
index 0869b2c..da8910b 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -13,3 +13,4 @@ stestr>=2.0.0 # Apache-2.0/BSD
13tox>=2.9.1 # MIT 13tox>=2.9.1 # MIT
14mock>=2.0 # BSD 14mock>=2.0 # BSD
15sphinxcontrib-programoutput 15sphinxcontrib-programoutput
16pre-commit
diff --git a/tests/base.py b/tests/base.py
index 740e223..1f233b0 100644
--- a/tests/base.py
+++ b/tests/base.py
@@ -246,7 +246,8 @@ class SingleJobTestCase(BaseScenariosTestCase):
246 def test_yaml_snippet(self): 246 def test_yaml_snippet(self):
247 config = self._get_config() 247 config = self._get_config()
248 248
249 expected_xml = self._read_utf8_content().strip() 249 expected_xml = self._read_utf8_content().strip() \
250 .replace('<BLANKLINE>', '').replace('\n\n', '\n')
250 251
251 parser = YamlParser(config) 252 parser = YamlParser(config)
252 parser.parse(self.in_filename) 253 parser.parse(self.in_filename)
@@ -290,14 +291,14 @@ class SingleJobTestCase(BaseScenariosTestCase):
290 291
291 # Prettify generated XML 292 # Prettify generated XML
292 pretty_xml = u"\n".join(job.output().decode('utf-8') 293 pretty_xml = u"\n".join(job.output().decode('utf-8')
293 for job in xml_jobs).strip() 294 for job in xml_jobs) \
295 .strip().replace('\n\n', '\n')
294 296
295 self.assertThat( 297 self.assertThat(
296 pretty_xml, 298 pretty_xml,
297 testtools.matchers.DocTestMatches(expected_xml, 299 testtools.matchers.DocTestMatches(expected_xml,
298 doctest.ELLIPSIS | 300 doctest.ELLIPSIS |
299 doctest.REPORT_NDIFF) 301 doctest.REPORT_NDIFF))
300 )
301 302
302 303
303class JsonTestCase(BaseScenariosTestCase): 304class JsonTestCase(BaseScenariosTestCase):
diff --git a/tests/multibranch/fixtures/scm_bitbucket_full.yaml b/tests/multibranch/fixtures/scm_bitbucket_full.yaml
index effee2c..592b63c 100644
--- a/tests/multibranch/fixtures/scm_bitbucket_full.yaml
+++ b/tests/multibranch/fixtures/scm_bitbucket_full.yaml
@@ -11,4 +11,3 @@ scm:
11 head-filter-regex: 'master|\d+\.\d+' 11 head-filter-regex: 'master|\d+\.\d+'
12 discover-pr-origin: headOnly 12 discover-pr-origin: headOnly
13 discover-branch: all 13 discover-branch: all
14
diff --git a/tests/parameters/fixtures/node-label001.yaml b/tests/parameters/fixtures/node-label001.yaml
index 3028d1a..4037805 100644
--- a/tests/parameters/fixtures/node-label001.yaml
+++ b/tests/parameters/fixtures/node-label001.yaml
@@ -3,4 +3,4 @@ parameters:
3 name: EXAMPLE LABEL 1 3 name: EXAMPLE LABEL 1
4 description: "EXAMPLE LABEL DESCRIPTION 1" 4 description: "EXAMPLE LABEL DESCRIPTION 1"
5 matching-label: "success" 5 matching-label: "success"
6 node-eligibility: "all" \ No newline at end of file 6 node-eligibility: "all"
diff --git a/tests/parameters/fixtures/node-label002.yaml b/tests/parameters/fixtures/node-label002.yaml
index 4b61f8f..878fd69 100644
--- a/tests/parameters/fixtures/node-label002.yaml
+++ b/tests/parameters/fixtures/node-label002.yaml
@@ -3,4 +3,4 @@ parameters:
3 name: EXAMPLE LABEL 2 3 name: EXAMPLE LABEL 2
4 description: "EXAMPLE LABEL DESCRIPTION 2" 4 description: "EXAMPLE LABEL DESCRIPTION 2"
5 matching-label: "unstable" 5 matching-label: "unstable"
6 node-eligibility: "ignore-offline" \ No newline at end of file 6 node-eligibility: "ignore-offline"
diff --git a/tests/parameters/fixtures/node-label003.yaml b/tests/parameters/fixtures/node-label003.yaml
index 93d6f4c..65d015e 100644
--- a/tests/parameters/fixtures/node-label003.yaml
+++ b/tests/parameters/fixtures/node-label003.yaml
@@ -3,4 +3,4 @@ parameters:
3 name: EXAMPLE LABEL 3 3 name: EXAMPLE LABEL 3
4 description: "EXAMPLE LABEL DESCRIPTION 3" 4 description: "EXAMPLE LABEL DESCRIPTION 3"
5 matching-label: "allCases" 5 matching-label: "allCases"
6 node-eligibility: "ignore-temp-offline" \ No newline at end of file 6 node-eligibility: "ignore-temp-offline"
diff --git a/tests/yamlparser/fixtures/folders/folders001.xml b/tests/yamlparser/fixtures/folders/folders001.xml
index 1d2494f..0570e10 100644
--- a/tests/yamlparser/fixtures/folders/folders001.xml
+++ b/tests/yamlparser/fixtures/folders/folders001.xml
@@ -13,4 +13,3 @@
13 <publishers/> 13 <publishers/>
14 <buildWrappers/> 14 <buildWrappers/>
15</project> 15</project>
16
diff --git a/tox.ini b/tox.ini
index 7631bcf..da193c0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -46,7 +46,8 @@ commands =
46 46
47[testenv:pep8] 47[testenv:pep8]
48basepython = python3 48basepython = python3
49commands = flake8 49commands =
50 python -m pre_commit run --all
50 51
51[testenv:pyflakes] 52[testenv:pyflakes]
52deps = pyflakes 53deps = pyflakes
@@ -72,10 +73,3 @@ commands = python setup.py build_sphinx -b linkcheck
72 73
73[testenv:venv] 74[testenv:venv]
74commands = {posargs} 75commands = {posargs}
75
76[flake8]
77# These are ignored intentionally in openstack-infra projects; please
78# don't submit patches that solely correct them or enable them.
79ignore = E125,E128,H
80show-source = True
81exclude = .virtualenv,.venv,.tox,dist,doc,build,*.egg,.test