Browse Source

adopt pre-commit hooks

Change-Id: I98bc0b5717c3921b35e74f53c55f896427880a84
Signed-off-by: Sorin Sbarnea <ssbarnea@redhat.com>
tags/2.1.0^2
Sorin Sbarnea 11 months ago
parent
commit
4953756c27
No account linked to committer's email address

+ 11
- 0
.pre-commit-config.yaml View File

@@ -0,0 +1,11 @@
1
+# See https://pre-commit.com for more information
2
+# See https://pre-commit.com/hooks.html for more hooks
3
+repos:
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

+ 3
- 0
README.rst View File

@@ -29,6 +29,9 @@ Cloning::
29 29
 
30 30
     git clone https://git.openstack.org/openstack-infra/jenkins-job-builder
31 31
 
32
+Install pre-commit from https://pre-commit.com/#intro in order to run some
33
+minimal testing on your commits.
34
+
32 35
 A virtual environment is recommended for development.  For example, Jenkins
33 36
 Job Builder may be installed from the top level directory::
34 37
 

+ 65
- 62
doc/source/conf.py View File

@@ -3,7 +3,7 @@
3 3
 # Jenkins Job Builder documentation build configuration file, created by
4 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 8
 # Note that not all possible configuration values are present in this
9 9
 # autogenerated file.
@@ -11,7 +11,9 @@
11 11
 # All configuration values have a default; values that are commented out
12 12
 # serve to show the default.
13 13
 
14
-import sys, os
14
+import os
15
+import sys
16
+from jenkins_jobs.version import version_info as jenkins_jobs_version
15 17
 
16 18
 # If extensions (or modules to document with autodoc) are in another directory,
17 19
 # add these directories to sys.path here. If the directory is relative to the
@@ -19,13 +21,13 @@ import sys, os
19 21
 sys.path.insert(0, os.path.abspath('../..'))
20 22
 sys.path.insert(0, os.path.abspath('../../jenkins_jobs/modules'))
21 23
 
22
-# -- General configuration -----------------------------------------------------
24
+# -- General configuration ----------------------------------------------------
23 25
 
24 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
28
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
29
+# Add any Sphinx extension module names here, as strings. They can be
30
+#  extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
29 31
 extensions = ['sphinx.ext.autodoc', 'sphinx.ext.coverage',
30 32
               'jenkins_jobs.sphinx.yaml', 'sphinxcontrib.programoutput',
31 33
               'sphinx.ext.extlinks']
@@ -37,7 +39,7 @@ templates_path = ['_templates']
37 39
 source_suffix = '.rst'
38 40
 
39 41
 # The encoding of source files.
40
-#source_encoding = 'utf-8-sig'
42
+# source_encoding = 'utf-8-sig'
41 43
 
42 44
 # The master toctree document.
43 45
 master_doc = 'index'
@@ -51,47 +53,46 @@ copyright = u'2012, Jenkins Job Builder Maintainers'
51 53
 # built documents.
52 54
 #
53 55
 # Version info
54
-from jenkins_jobs.version import version_info as jenkins_jobs_version
55 56
 release = jenkins_jobs_version.version_string_with_vcs()
56 57
 # The short X.Y version.
57 58
 version = jenkins_jobs_version.canonical_version_string()
58 59
 
59 60
 # The language for content autogenerated by Sphinx. Refer to documentation
60 61
 # for a list of supported languages.
61
-#language = None
62
+# language = None
62 63
 
63 64
 # There are two options for replacing |today|: either, you set today to some
64 65
 # non-false value, then it is used:
65
-#today = ''
66
+# today = ''
66 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 70
 # List of patterns, relative to source directory, that match files and
70 71
 # directories to ignore when looking for source files.
71 72
 exclude_patterns = []
72 73
 
73
-# The reST default role (used for this markup: `text`) to use for all documents.
74
-#default_role = None
74
+# The reST default role (used for this markup: `text`) to use for all documents
75
+# default_role = None
75 76
 
76 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 80
 # If true, the current module name will be prepended to all description
80 81
 # unit titles (such as .. function::).
81
-#add_module_names = True
82
+# add_module_names = True
82 83
 
83 84
 # If true, sectionauthor and moduleauthor directives will be shown in the
84 85
 # output. They are ignored by default.
85
-#show_authors = False
86
+# show_authors = False
86 87
 
87 88
 # The name of the Pygments (syntax highlighting) style to use.
88 89
 pygments_style = 'sphinx'
89 90
 
90 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 97
 # The theme to use for HTML and HTML Help pages.  See the documentation for
97 98
 # a list of builtin themes.
@@ -100,116 +101,117 @@ html_theme = 'default'
100 101
 # Theme options are theme-specific and customize the look and feel of a theme
101 102
 # further.  For a list of options available for each theme, see the
102 103
 # documentation.
103
-#html_theme_options = {}
104
+# html_theme_options = {}
104 105
 
105 106
 # Add any paths that contain custom themes here, relative to this directory.
106
-#html_theme_path = []
107
+# html_theme_path = []
107 108
 
108 109
 # The name for this set of Sphinx documents.  If None, it defaults to
109 110
 # "<project> v<release> documentation".
110
-#html_title = None
111
+# html_title = None
111 112
 
112 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 116
 # The name of an image file (relative to this directory) to place at the top
116 117
 # of the sidebar.
117
-#html_logo = None
118
+# html_logo = None
118 119
 
119 120
 # The name of an image file (within the static path) to use as favicon of the
120 121
 # docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
121 122
 # pixels large.
122
-#html_favicon = None
123
+# html_favicon = None
123 124
 
124 125
 # Add any paths that contain custom static files (such as style sheets) here,
125 126
 # relative to this directory. They are copied after the builtin static files,
126 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 130
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
130 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 134
 # If true, SmartyPants will be used to convert quotes and dashes to
134 135
 # typographically correct entities.
135
-#html_use_smartypants = True
136
+# html_use_smartypants = True
136 137
 
137 138
 # Custom sidebar templates, maps document names to template names.
138
-#html_sidebars = {}
139
+# html_sidebars = {}
139 140
 
140 141
 # Additional templates that should be rendered to pages, maps page names to
141 142
 # template names.
142
-#html_additional_pages = {}
143
+# html_additional_pages = {}
143 144
 
144 145
 # If false, no module index is generated.
145
-#html_domain_indices = True
146
+# html_domain_indices = True
146 147
 
147 148
 # If false, no index is generated.
148
-#html_use_index = True
149
+# html_use_index = True
149 150
 
150 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 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 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 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 163
 # If true, an OpenSearch description file will be output, and all pages will
163 164
 # contain a <link> tag referring to it.  The value of this option must be the
164 165
 # base URL from which the finished HTML is served.
165
-#html_use_opensearch = ''
166
+# html_use_opensearch = ''
166 167
 
167 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 171
 # Output file base name for HTML help builder.
171 172
 htmlhelp_basename = 'JenkinsJobBuilderdoc'
172 173
 
173 174
 
174
-# -- Options for LaTeX output --------------------------------------------------
175
+# -- Options for LaTeX output -------------------------------------------------
175 176
 
176 177
 latex_elements = {
177
-# The paper size ('letterpaper' or 'a4paper').
178
-#'papersize': 'letterpaper',
178
+    # The paper size ('letterpaper' or 'a4paper').
179
+    # 'papersize': 'letterpaper',
179 180
 
180
-# The font size ('10pt', '11pt' or '12pt').
181
-#'pointsize': '10pt',
181
+    # The font size ('10pt', '11pt' or '12pt').
182
+    # 'pointsize': '10pt',
182 183
 
183
-# Additional stuff for the LaTeX preamble.
184
-#'preamble': '',
184
+    # Additional stuff for the LaTeX preamble.
185
+    # 'preamble': '',
185 186
 }
186 187
 
187 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]).
189 191
 latex_documents = [
190
-  ('index', 'JenkinsJobBuilder.tex', u'Jenkins Job Builder Documentation',
191
-   u'Jenkins Job Builder Maintainers', 'manual'),
192
+    ('index', 'JenkinsJobBuilder.tex', u'Jenkins Job Builder Documentation',
193
+     u'Jenkins Job Builder Maintainers', 'manual'),
192 194
 ]
193 195
 
194 196
 # The name of an image file (relative to this directory) to place at the top of
195 197
 # the title page.
196
-#latex_logo = None
198
+# latex_logo = None
197 199
 
198 200
 # For "manual" documents, if this is true, then toplevel headings are parts,
199 201
 # not chapters.
200
-#latex_use_parts = False
202
+# latex_use_parts = False
201 203
 
202 204
 # If true, show page references after internal links.
203
-#latex_show_pagerefs = False
205
+# latex_show_pagerefs = False
204 206
 
205 207
 # If true, show URL addresses after external links.
206
-#latex_show_urls = False
208
+# latex_show_urls = False
207 209
 
208 210
 # Documents to append as an appendix to all manuals.
209
-#latex_appendices = []
211
+# latex_appendices = []
210 212
 
211 213
 # If false, no module index is generated.
212
-#latex_domain_indices = True
214
+# latex_domain_indices = True
213 215
 
214 216
 # -- Options for linkcheck ----------------------------------------------------
215 217
 
@@ -218,7 +220,7 @@ latex_documents = [
218 220
 linkcheck_timeout = 15
219 221
 
220 222
 
221
-# -- Options for manual page output --------------------------------------------
223
+# -- Options for manual page output ------------------------------------------
222 224
 
223 225
 # One entry per manual page. List of tuples
224 226
 # (source start file, name, description, authors, manual section).
@@ -228,28 +230,29 @@ man_pages = [
228 230
 ]
229 231
 
230 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 238
 # Grouping the document tree into Texinfo files. List of tuples
237 239
 # (source start file, target name, title, author,
238 240
 #  dir menu entry, description, category)
239 241
 texinfo_documents = [
240
-  ('index', 'JenkinsJobBuilder', u'Jenkins Job Builder Documentation',
241
-   u'Jenkins Job Builder Maintainers', 'JenkinsJobBuilder', 'One line description of project.',
242
-   'Miscellaneous'),
242
+    ('index', 'JenkinsJobBuilder', u'Jenkins Job Builder Documentation',
243
+    u'Jenkins Job Builder Maintainers',
244
+    'JenkinsJobBuilder', 'One line description of project.',
245
+    'Miscellaneous'),
243 246
 ]
244 247
 
245 248
 # Documents to append as an appendix to all manuals.
246
-#texinfo_appendices = []
249
+# texinfo_appendices = []
247 250
 
248 251
 # If false, no module index is generated.
249
-#texinfo_domain_indices = True
252
+# texinfo_domain_indices = True
250 253
 
251 254
 # How to display URL addresses: 'footnote', 'no', or 'inline'.
252
-#texinfo_show_urls = 'footnote'
255
+# texinfo_show_urls = 'footnote'
253 256
 
254 257
 extlinks = {'jenkins-wiki': ('https://wiki.jenkins.io/display/JENKINS/%s',
255 258
                              None)}

+ 7
- 0
setup.cfg View File

@@ -97,3 +97,10 @@ jenkins_jobs.modules =
97 97
     triggers=jenkins_jobs.modules.triggers:Triggers
98 98
     wrappers=jenkins_jobs.modules.wrappers:Wrappers
99 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.
104
+ignore = E125,E128,H
105
+show-source = True
106
+exclude = .virtualenv,.venv,.tox,dist,build,*.egg,.test

+ 1
- 0
test-requirements.txt View File

@@ -13,3 +13,4 @@ stestr>=2.0.0 # Apache-2.0/BSD
13 13
 tox>=2.9.1 # MIT
14 14
 mock>=2.0 # BSD
15 15
 sphinxcontrib-programoutput
16
+pre-commit

+ 6
- 5
tests/base.py View File

@@ -246,7 +246,8 @@ class SingleJobTestCase(BaseScenariosTestCase):
246 246
     def test_yaml_snippet(self):
247 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 252
         parser = YamlParser(config)
252 253
         parser.parse(self.in_filename)
@@ -290,14 +291,14 @@ class SingleJobTestCase(BaseScenariosTestCase):
290 291
 
291 292
         # Prettify generated XML
292 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 297
         self.assertThat(
296 298
             pretty_xml,
297 299
             testtools.matchers.DocTestMatches(expected_xml,
298
-                                              doctest.ELLIPSIS |
299
-                                              doctest.REPORT_NDIFF)
300
-        )
300
+                                            doctest.ELLIPSIS |
301
+                                            doctest.REPORT_NDIFF))
301 302
 
302 303
 
303 304
 class JsonTestCase(BaseScenariosTestCase):

+ 0
- 1
tests/multibranch/fixtures/scm_bitbucket_full.yaml View File

@@ -11,4 +11,3 @@ scm:
11 11
         head-filter-regex: 'master|\d+\.\d+'
12 12
         discover-pr-origin: headOnly
13 13
         discover-branch: all
14
-

+ 1
- 1
tests/parameters/fixtures/node-label001.yaml View File

@@ -3,4 +3,4 @@ parameters:
3 3
       name: EXAMPLE LABEL 1
4 4
       description: "EXAMPLE LABEL DESCRIPTION 1"
5 5
       matching-label: "success"
6
-      node-eligibility: "all"
6
+      node-eligibility: "all"

+ 1
- 1
tests/parameters/fixtures/node-label002.yaml View File

@@ -3,4 +3,4 @@ parameters:
3 3
       name: EXAMPLE LABEL 2
4 4
       description: "EXAMPLE LABEL DESCRIPTION 2"
5 5
       matching-label: "unstable"
6
-      node-eligibility: "ignore-offline"
6
+      node-eligibility: "ignore-offline"

+ 1
- 1
tests/parameters/fixtures/node-label003.yaml View File

@@ -3,4 +3,4 @@ parameters:
3 3
       name: EXAMPLE LABEL 3
4 4
       description: "EXAMPLE LABEL DESCRIPTION 3"
5 5
       matching-label: "allCases"
6
-      node-eligibility: "ignore-temp-offline"
6
+      node-eligibility: "ignore-temp-offline"

+ 0
- 1
tests/yamlparser/fixtures/folders/folders001.xml View File

@@ -13,4 +13,3 @@
13 13
   <publishers/>
14 14
   <buildWrappers/>
15 15
 </project>
16
-

+ 2
- 8
tox.ini View File

@@ -46,7 +46,8 @@ commands =
46 46
 
47 47
 [testenv:pep8]
48 48
 basepython = python3
49
-commands = flake8
49
+commands =
50
+   python -m pre_commit run --all
50 51
 
51 52
 [testenv:pyflakes]
52 53
 deps = pyflakes
@@ -72,10 +73,3 @@ commands = python setup.py build_sphinx -b linkcheck
72 73
 
73 74
 [testenv:venv]
74 75
 commands = {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.
79
-ignore = E125,E128,H
80
-show-source = True
81
-exclude = .virtualenv,.venv,.tox,dist,doc,build,*.egg,.test

Loading…
Cancel
Save