Codebase list libcode-tidyall-perl / cca8918
Imported Upstream version 0.32~dfsg Jonas Smedegaard 8 years ago
133 changed file(s) with 8148 addition(s) and 2508 deletion(s). Raw diff Collapse all Expand all
+399
-177
Changes less more
0 Revision history for Code-TidyAll
1
2 ** denotes an incompatible change
3
4 0.20 May 18, 2014
5
6 * Fixes
7 - Fix option handling implentation and documentation for Test::Code::TidyAll::tidyall_ok - https://github.com/jonswar/perl-code-tidyall/issues/18 (Olad Alders)
8
9 0.19 Mar 6, 2014
10
11 * Plugins
12 - Add JSON plugin (Gregory Oschwald)
13
14 0.18 Sep 21, 2013
15
16 * Fixes
17 - Fix Test::Code::TidyAll::tidyall_ok - https://github.com/jonswar/perl-code-tidyall/issues/12 (Adam Taylor)
18 - Fix JSBeautify plugin as js-beautify no longer respects --replace
19
20 0.17 Mar 11, 2013
21
22 * Improvements
23 - ** Rename API method process_files to more accurate process_paths
24
25 * Fixes
26 - Fix recursive processing of directories (Mark Risman)
27 - Improve git precommit setup script - https://github.com/jonswar/perl-code-tidyall/pull/10 (Olaf Anders)
28
29 0.16 Oct 22, 2012
30
31 * Plugins
32 - Add phpcs plugin (Joseph Crotty)
33 - Add cssunminifier plugin
34 - Add SortLines plugin, for one-entry-per-line files like .gitignore
35
36 0.15 Oct 11, 2012
37
38 * Fixes
39 - Fix test_dirs test to not rely on file ordering
40
41 0.14 Oct 10, 2012
42
43 * Improvements
44 - Allow a plugin to be listed multiple times in config with different configuration
45 - Specify order that plugins run (tidiers before validators, then alpha) and document
46 that they are applied atomically
47 - Add etc/editors/tidyall.vim for Vim (Justin Devuyst)
48 - Add -r/--recursive flag to process directories recursively
49 - In -p/--pipe mode, mirror input to output in case of error (Justin Devuyst)
50 - Fix -l/--list handling of local files
51 - Add --version option
52 - Make git prereceive hook more modular, so it can be combined with other checks
53
54 0.13 Sep 30, 2012
55
56 * Fixes
57 - Adjust MasonTidy plugin for new API
58 - Remove Util.t containing only author-only tests
59
60 0.12 Sep 27, 2012
61
62 * Plugins
63 - Add podspell plugin (POD spell checker)
64
65 * Improvements
66 - Add --iterations flag to run tidier transforms multiple times
67 - Allow .tidyallrc as alternative to tidyall.ini
68 - Allow git prereceive hook to be bypassed by pushing an identical set of commits
0 0.32 2015-11-19
1
2 - When in verbose mode we now show what plugins are being applied to each
3 file. This is helpful if you want to know why a file isn't being ignored,
4 for example.
5
6 - Added a new plugin configuration option for the rc file, "weight". You can
7 use this to exercise greater control over the order that plugins run in.
8
9
10 0.31 2015-11-17
11
12 - Added a new plugin, DiffOnTidyError. This plugin will call "diff -u" to
13 compare the original file content to the tidy version.
14
15
16 0.30 2015-09-14
17
18 - Added a --no-cleanup option for the tidyall script that causes it to leave
19 any tempdirs it creates behind. Implemented by Mark Fowler. GitHub #41.
20
21
22 0.29 2015-08-15
23
24 - Replaced use of Digest::SHA1 with Digest::SHA. The latter module has been
25 part of the Perl core since 5.10. Implemented by Sergey Romanov. GitHub #39.
26
27
28 0.28 2015-08-06
29
30 - The JSON plugin now uses JSON::MaybeXS instead of JSON.pm. Patch by Greg
31 Oschwald. GitHub #37.
32
33 - Added a new plugin, PerlTidySweet, which uses perltidy-sweet instead of
34 perltidy. Implemented by Mark Grimes. GitHub #26.
35
36
37 0.27 2015-07-04
38
39 [BUG FIXES]
40
41 - Fixed broken POD. Most modules were missing their NAME sections because of a
42 mistake in the distro's weaver.ini file. Reported by Красимир Беров.
43
44
45 0.26 2015-06-29
46
47 [BUG FIXES]
48
49 - The tidyall script did not handle the -I option correctly. It was treated as
50 a boolean rather than a string, meaning it basically ignored whatever you
51 passed. Fixed by Andy Jack. GH #35.
52
53 - The PodChecker plugin no longer generates warnings about an undef variable
54 if the file did not have any Pod.
55
56 - Added an option for the tidyall config file, shebang. This is an additional
57 filter that selects files based on the shebang line
58 (#!/bin/foo). Implemented by timgimyee. GH #25.
59
60
61 0.25 2015-03-31
62
63 [ENHANCEMENTS]
64
65 - You can now pass "verbose => 1" to tidyall_ok(). Previously this would have
66 been overridden because we unconditionally set "quiet => 1", but now we only
67 do this when verbose is not specified.
68
69 - Added a new "msg_outputter" attribute to Code::TidyAll. By default, this is
70 a sub that simply calls "printf", but you can pass something else to change
71 how messages are printed. Test::Code::TidyAll uses this to send messages
72 through diag().
73
74 - If you set "verbose => 1" when calling Test::Code::TidyAll, it will now use
75 Text::Diff::Table to show details of how a file needs to be tidied in order
76 to pass the tidyall checks.
77
78 - Made the PerlCritic plugin pass even if a critic module issues some
79 warnings. As long as perlcritic says "source OK", we want to treat that as a
80 pass, despite any warnings it may issue. Fixed by Mark Fowler.
81
82 - Made the caching model pluggable, and added a new
83 Code::TidyAll::CacheModel::Shared class as an alternative to the default
84 model. This lets you share the cache directory between multiple branches in
85 a single checkout while still detecting file changes properly. Implemented
86 by Mark Fowler.
87
88
89 0.24 2014-11-06
90
91 [WARNING FOR A FUTURE RELEASE]
92
93 - At some point in the future, it will probably be necessary for Code::TidyAll
94 to become aware of encodings on a per-file basis. As it stands right now,
95 any tidying plugin which reformats text could, in theory, end up splitting
96 up a UTF-8 character's bytes across at a line break.
97
98 [BUG FIXES]
99
100 - Replaced the use of Capture::Tiny with IPC::Run3 for some plugins. The
101 former seems to sometimes return character data where we want bytes, even if
102 the STDOUT and STDERR handles are binmode()'d to the ":bytes" encoding. This
103 prevents warnings about writing wide characters from the JSBeautify plugin.
104
105
106 0.23 2014-11-06
107
108 - Fix test failures seen on CPANTesters.
109
110
111 0.22 2014-11-05
112
113 [BUG FIXES]
114
115 * Removed the compile test added in the last release. Many plugin modules
116 won't compile unless optional prereqs are manually installed first (such as
117 Perl::Critic, Perl::Tidy, etc.).
118
119
120 0.21 2014-11-05
121
122 [ENHANCEMENTS]
123
124 * Test::Code::TidyAll now sets "quiet => 1" when creating the Code::TidyAll
125 object to suppress noise from any plugins.
126
127 * Test::Code::TidyAll now calls Test::More::diag() after test failures instead
128 of before.
129
130 [BUG FIXES]
131
132 * Lots of little doc tweaks and fixes.
133
134
135 0.20 2014-05-18
136
137 [BUG FIXES]
138
139 * Fix option handling implentation and documentation for
140 Test::Code::TidyAll::tidyall_ok -
141 https://github.com/jonswar/perl-code-tidyall/issues/18 (Olad Alders)
142
143
144 0.19 2014-03-06
145
146 [ENHANCEMENTS]
147
148 * Added a JSON plugin (Gregory Oschwald)
149
150
151 0.18 2013-09-21
152
153 [BUG FIXES]
154
155 * Fix Test::Code::TidyAll::tidyall_ok -
156 https://github.com/jonswar/perl-code-tidyall/issues/12 (Adam Taylor)
157
158 * Fix JSBeautify plugin as js-beautify no longer respects --replace
159
160
161 0.17 2013-03-11
162
163 [BACKWARDS INCOMPATIBILITIES]
164
165 * Rename API method process_files to more accurate process_paths
166
167 [BUG FIXES]
168
169 * Fix recursive processing of directories (Mark Risman)
170
171 * Improve git precommit setup script -
172 https://github.com/jonswar/perl-code-tidyall/pull/10 (Olaf Anders)
173
174
175 0.16 2012-10-22
176
177 [ENHANCEMENTS]
178
179 * Added phpcs plugin (Joseph Crotty)
180
181 * Added cssunminifier plugin
182
183 * Added SortLines plugin, for one-entry-per-line files like .gitignore
184
185
186 0.15 2012-10-11
187
188 [BUG FIXES]
189
190 * Fix test_dirs test to not rely on file ordering
191
192
193 0.14 2012-10-10
194
195 [ENHANCEMENTS]
196
197 * Allow a plugin to be listed multiple times in config with different
198 configuration
199
200 * Specify order that plugins run (tidiers before validators, then alpha) and
201 document that they are applied atomically
202
203 * Added etc/editors/tidyall.vim for Vim (Justin Devuyst)
204
205 * Added -r/--recursive flag to process directories recursively
206
207 * In -p/--pipe mode, mirror input to output in case of error (Justin Devuyst)
208
209 * Fix -l/--list handling of local files
210
211 * Added --version option
212
213 * Make git prereceive hook more modular, so it can be combined with other
214 checks
215
216
217 0.13 2012-09-30
218
219 [BUG FIXES]
220
221 * Adjust MasonTidy plugin for new API
222
223 * Remove Util.t containing only author-only tests
224
225
226 0.12 2012-09-27
227
228 [ENHANCEMENTS]
229
230 * Added podspell plugin (POD spell checker)
231
232 * Added --iterations flag to run tidier transforms multiple times
233
234 * Allow .tidyallrc as alternative to tidyall.ini
235
236 * Allow git prereceive hook to be bypassed by pushing an identical set of commits
69237 several consecutive times (allow_repeated_push)
70 - Add handcrafted usage w/summary of options, instead of Pod::Usage
71
72 0.11 Sep 21, 2012
73
74 * Improvements
75 - Allow multiple select and ignore patterns, separated by whitespace or on separate lines
76 - Add -l/--list flag to show which plugins match which files
77 - Add conf_name parameter to specify name other than tidyall.ini
78 - Redirect stdout to stderr with -p/--pipe, so that stdout is dedicated to the tidied content
79 - In tidyall.el, hide error buffer on successful tidy
80
81 * Fixes
82 - Handle argv/config errors correctly in various plugins
83 - Eliminate double-printed error with -p/--pipe
84 - Allow relative paths to -p/--pipe
85
86 0.10 Sep 12, 2012
87
88 * Plugins
89 - Add masontidy plugin (Mason component tidier)
90 - Add jslint plugin (javascript validator)
91
92 0.09 Sep 11, 2012
93
94 * Fixes
95 - Remove use of ex-dependency Hash::MoreUtils from bin/tidyall (Jason Wieland)
96 - Add IPC::System::Simple and Pod::Usage to deps (Jason Wieland)
97
98 0.08 Sep 10, 2012
99
100 * Plugins
101 - Add js-beautify plugin (javascript tidier)
102 - Add jshint plugin (javascript validator)
103 - Add podchecker plugin
104
105 * Improvements
106 - Add -p/--pipe flag to read from STDIN and write to STDOUT
107 - Allow tidyall.el to work in narrowed regions
108 - Make plugins into Moo classes, pass configuration as attributes
109
110 * Fixes
111 - Remove unused SVN::Look - perl-code-tidyall/pull/1 (Pedro Melo)
112 - Filter just files from git status in Code::TidyAll::Git::Precommit (Pedro Melo)
113
114 0.07 Sep 5, 2012
115
116 * Improvements
117 - Add git pre-receive hook (Code::TidyAll::Git::Prereceive)
118
119 * Fixes
120 - Show file paths with errors in quiet mode
121
122 0.06 Sep 3, 2012
123
124 * Improvements
125 - Add -g/--git flag and git pre-commit hook (Code::TidyAll::Git::Precommit)
126
127 * Fixes
128 - Omit directories from svn_uncommitted_files (--svn)
129
130 0.05 Aug 21, 2012
131
132 * Improvements
133 - Add etc/editors/tidyall.el for Emacs
134 - Only print 'no plugins apply' warning in verbose mode
135
136 0.04 Aug 14, 2012
137
138 * Fixes
139 - Add back missing plugins
140 - Fix --check-only flag
141
142 * Improvements
143 - Add -s/--svn flag
144 - Add emergency_comment_prefix ("NO TIDYALL") to svn precommit hook
145
146 0.03 Jul 24, 2012
147
148 * Improvements
149 - Add svn precommit hook (Code::TidyAll::SVN::Precommit)
150 - Add preprocess_source and postprocess_source to plugins
151 - Add only_modes and except_modes configuration for plugins
152 - Add Code::TidyAll::process_source(), for processing a string instead of a file
153 - When only specified files are being processed, don't scan the whole hierarchy
154 - Add -I flag to tidyall
155
156 * Implementation
157 - Switch to Moo
158 - Add separate new_from_conf_file constructor, for cleaner separation of cases
159
160 0.02 Jul 3, 2012
161
162 * Improvements
163 - Add Test::Code::TidyAll, to test that a project is tidied
164 - Add prefilter and postfilter params, to be applied to code before and after processing
165 - Add --check-only option to check but not tidy
166 - Add --mode option and modes config entry, to activate only a subset of plugins in config
167 - Add --output-suffix to write file to a different destination
168 - Add --quiet option to suppress most output
169 - Add --tidyall-class option to specify a different Code::TidyAll subclass
170
171 * Documentation
172 - Document how to create new plugins in Code::Tidy::Plugin
173
174 0.01 Jun 17, 2012
175
176 - Initial version
177
238
239 * Added handcrafted usage w/summary of options, instead of Pod::Usage
240
241
242 0.11 2012-09-21
243
244 [ENHANCEMENTS]
245
246 * Allow multiple select and ignore patterns, separated by whitespace or on separate lines
247
248 * Added -l/--list flag to show which plugins match which files
249
250 * Added conf_name parameter to specify name other than tidyall.ini
251
252 * Redirect stdout to stderr with -p/--pipe, so that stdout is dedicated to the tidied content
253
254 * In tidyall.el, hide error buffer on successful tidy
255
256 [BUG FIXES]
257
258 * Handle argv/config errors correctly in various plugins
259
260 * Eliminate double-printed error with -p/--pipe
261
262 * Allow relative paths to -p/--pipe
263
264
265 0.10 2012-09-12
266
267 [ENHANCEMENTS]
268
269 * Added masontidy plugin (Mason component tidier)
270
271 * Added jslint plugin (javascript validator)
272
273
274 0.09 2012-09-11
275
276 [BUG FIXES]
277
278 * Remove use of ex-dependency Hash::MoreUtils from bin/tidyall (Jason Wieland)
279
280 * Added IPC::System::Simple and Pod::Usage to deps (Jason Wieland)
281
282
283 0.08 2012-09-10
284
285 [ENHANCEMENTS]
286
287 * Added js-beautify plugin (javascript tidier)
288
289 * Added jshint plugin (javascript validator)
290
291 * Added podchecker plugin
292
293 * Added -p/--pipe flag to read from STDIN and write to STDOUT
294
295 * Allow tidyall.el to work in narrowed regions
296
297 * Make plugins into Moo classes, pass configuration as attributes
298
299 [BUG FIXES]
300
301 * Remove unused SVN::Look - perl-code-tidyall/pull/1 (Pedro Melo)
302
303 * Filter just files from git status in Code::TidyAll::Git::Precommit (Pedro Melo)
304
305
306 0.07 2012-09-05
307
308 [ENHANCEMENTS]
309
310 * Added git pre-receive hook (Code::TidyAll::Git::Prereceive)
311
312 [BUG FIXES]
313
314 * Show file paths with errors in quiet mode
315
316
317 0.06 2012-09-03
318
319 [ENHANCEMENTS]
320
321 * Added -g/--git flag and git pre-commit hook (Code::TidyAll::Git::Precommit)
322
323 [BUG FIXES]
324
325 * Omit directories from svn_uncommitted_files (--svn)
326
327
328 0.05 2012-08-21
329
330 [ENHANCEMENTS]
331
332 * Added etc/editors/tidyall.el for Emacs
333
334 * Only print 'no plugins apply' warning in verbose mode
335
336
337 0.04 2012-08-14
338
339 [ENHANCEMENTS]
340
341 * Added -s/--svn flag
342
343 * Added emergency_comment_prefix ("NO TIDYALL") to svn precommit hook
344
345 [BUG FIXES]
346
347 * Added back missing plugins
348
349 * Fix --check-only flag
350
351
352 0.03 2012-07-24
353
354 [eNHANCEMENTS]
355
356 * Added svn precommit hook (Code::TidyAll::SVN::Precommit)
357
358 * Added preprocess_source and postprocess_source to plugins
359
360 * Added only_modes and except_modes configuration for plugins
361
362 * Added Code::TidyAll::process_source(), for processing a string instead of a file
363
364 * When only specified files are being processed, don't scan the whole hierarchy
365
366 * Added -I flag to tidyall
367
368 [INTERNALS]
369
370 * Switch to Moo
371
372 * Added separate new_from_conf_file constructor, for cleaner separation of cases
373
374
375 0.02 2012-07-03
376
377 [ENHANCEMENTS]
378
379 * Added Test::Code::TidyAll, to test that a project is tidied
380
381 * Added prefilter and postfilter params, to be applied to code before and after processing
382
383 * Added --check-only option to check but not tidy
384
385 * Added --mode option and modes config entry, to activate only a subset of plugins in config
386
387 * Added --output-suffix to write file to a different destination
388
389 * Added --quiet option to suppress most output
390
391 * Added --tidyall-class option to specify a different Code::TidyAll subclass
392
393 * Document how to create new plugins in Code::Tidy::Plugin
394
395
396 0.01 2012-06-17
397
398 * Initial release
399
0
10 This is the Perl distribution Code-TidyAll.
21
32 Installing Code-TidyAll is straightforward.
0 This software is copyright (c) 2011 by Jonathan Swartz.
0 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
11
22 This is free software; you can redistribute it and/or modify it under
33 the same terms as the Perl 5 programming language system itself.
1111
1212 --- The GNU General Public License, Version 1, February 1989 ---
1313
14 This software is Copyright (c) 2011 by Jonathan Swartz.
14 This software is Copyright (c) 2011 - 2015 by Jonathan Swartz.
1515
1616 This is free software, licensed under:
1717
2121 Version 1, February 1989
2222
2323 Copyright (C) 1989 Free Software Foundation, Inc.
24 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA
24 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
2525
2626 Everyone is permitted to copy and distribute verbatim copies
2727 of this license document, but changing it is not allowed.
271271
272272 --- The Artistic License 1.0 ---
273273
274 This software is Copyright (c) 2011 by Jonathan Swartz.
274 This software is Copyright (c) 2011 - 2015 by Jonathan Swartz.
275275
276276 This is free software, licensed under:
277277
+1494
-28
MANIFEST less more
0 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.012.
0 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.041.
11 Changes
22 INSTALL
33 LICENSE
55 META.json
66 META.yml
77 Makefile.PL
8 README.md
89 bin/tidyall
10 cpanfile
11 dist.ini
912 etc/editors/tidyall.el
1013 etc/editors/tidyall.vim
14 inc/MyMakeMaker.pm
15 inc/Pod/Weaver/Section/SeeAlsoCodeTidyAll.pm
16 inc/Util.pm
1117 lib/Code/TidyAll.pm
1218 lib/Code/TidyAll/Cache.pm
19 lib/Code/TidyAll/CacheModel.pm
20 lib/Code/TidyAll/CacheModel/Shared.pm
1321 lib/Code/TidyAll/Config/INI/Reader.pm
1422 lib/Code/TidyAll/Git/Precommit.pm
1523 lib/Code/TidyAll/Git/Prereceive.pm
1624 lib/Code/TidyAll/Git/Util.pm
1725 lib/Code/TidyAll/Plugin.pm
1826 lib/Code/TidyAll/Plugin/CSSUnminifier.pm
27 lib/Code/TidyAll/Plugin/DiffOnTidyError.pm
1928 lib/Code/TidyAll/Plugin/JSBeautify.pm
2029 lib/Code/TidyAll/Plugin/JSHint.pm
2130 lib/Code/TidyAll/Plugin/JSLint.pm
2433 lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm
2534 lib/Code/TidyAll/Plugin/PerlCritic.pm
2635 lib/Code/TidyAll/Plugin/PerlTidy.pm
36 lib/Code/TidyAll/Plugin/PerlTidySweet.pm
2737 lib/Code/TidyAll/Plugin/PodChecker.pm
2838 lib/Code/TidyAll/Plugin/PodSpell.pm
2939 lib/Code/TidyAll/Plugin/PodTidy.pm
3040 lib/Code/TidyAll/Plugin/SortLines.pm
3141 lib/Code/TidyAll/Result.pm
42 lib/Code/TidyAll/Role/Tempdir.pm
3243 lib/Code/TidyAll/SVN/Precommit.pm
3344 lib/Code/TidyAll/SVN/Util.pm
34 lib/Code/TidyAll/Test/Class.pm
35 lib/Code/TidyAll/Test/Plugin/AToZ.pm
36 lib/Code/TidyAll/Test/Plugin/CheckUpper.pm
37 lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm
38 lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm
39 lib/Code/TidyAll/Test/Plugin/UpperText.pm
4045 lib/Code/TidyAll/Util.pm
4146 lib/Code/TidyAll/Util/Zglob.pm
42 lib/Code/TidyAll/t/Basic.pm
43 lib/Code/TidyAll/t/Conf.pm
44 lib/Code/TidyAll/t/Git.pm
45 lib/Code/TidyAll/t/Plugin.pm
46 lib/Code/TidyAll/t/Plugin/CSSUnminifier.pm
47 lib/Code/TidyAll/t/Plugin/JSBeautify.pm
48 lib/Code/TidyAll/t/Plugin/JSHint.pm
49 lib/Code/TidyAll/t/Plugin/JSLint.pm
50 lib/Code/TidyAll/t/Plugin/MasonTidy.pm
51 lib/Code/TidyAll/t/Plugin/PHPCodeSniffer.pm
52 lib/Code/TidyAll/t/Plugin/PerlCritic.pm
53 lib/Code/TidyAll/t/Plugin/PerlTidy.pm
54 lib/Code/TidyAll/t/Plugin/PodChecker.pm
55 lib/Code/TidyAll/t/Plugin/PodSpell.pm
56 lib/Code/TidyAll/t/Plugin/PodTidy.pm
57 lib/Code/TidyAll/t/Plugin/SortLines.pm
58 lib/Code/TidyAll/t/SVN.pm
59 lib/Code/TidyAll/t/Util.pm
60 lib/Code/TidyAll/t/Zglob.pm
61 lib/Pod/Weaver/Section/SeeAlsoCodeTidyAll.pm
6247 lib/Test/Code/TidyAll.pm
48 node_modules/cssunminifier/README.md
49 node_modules/cssunminifier/bin/cssunminifier
50 node_modules/cssunminifier/lib/cssunminifier.js
51 node_modules/cssunminifier/package.json
52 node_modules/cssunminifier/test/run.sh
53 node_modules/cssunminifier/test/sample.css
54 node_modules/js-beautify/CHANGELOG.md
55 node_modules/js-beautify/CONTRIBUTING.md
56 node_modules/js-beautify/LICENSE
57 node_modules/js-beautify/README.md
58 node_modules/js-beautify/bower.json
59 node_modules/js-beautify/generate-changelog.sh
60 node_modules/js-beautify/js/bin/css-beautify.js
61 node_modules/js-beautify/js/bin/html-beautify.js
62 node_modules/js-beautify/js/bin/js-beautify.js
63 node_modules/js-beautify/js/config/defaults.json
64 node_modules/js-beautify/js/index.js
65 node_modules/js-beautify/js/lib/beautify-css.js
66 node_modules/js-beautify/js/lib/beautify-html.js
67 node_modules/js-beautify/js/lib/beautify.js
68 node_modules/js-beautify/js/lib/cli.js
69 node_modules/js-beautify/js/lib/unpackers/javascriptobfuscator_unpacker.js
70 node_modules/js-beautify/js/lib/unpackers/myobfuscate_unpacker.js
71 node_modules/js-beautify/js/lib/unpackers/p_a_c_k_e_r_unpacker.js
72 node_modules/js-beautify/js/lib/unpackers/urlencode_unpacker.js
73 node_modules/js-beautify/js/test/amd-beautify-tests.js
74 node_modules/js-beautify/js/test/beautify-tests.js
75 node_modules/js-beautify/js/test/node-beautify-perf-tests.js
76 node_modules/js-beautify/js/test/node-beautify-tests.js
77 node_modules/js-beautify/js/test/requirejs-html-beautify.html
78 node_modules/js-beautify/js/test/resources/example1.js
79 node_modules/js-beautify/js/test/resources/indent11chars/subDir1/subDir2/empty.txt
80 node_modules/js-beautify/js/test/run-tests
81 node_modules/js-beautify/js/test/sanitytest.js
82 node_modules/js-beautify/js/test/shell-smoke-test.sh
83 node_modules/js-beautify/node_modules/config-chain/LICENCE
84 node_modules/js-beautify/node_modules/config-chain/index.js
85 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/LICENSE
86 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/README.md
87 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/ini.js
88 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/package.json
89 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/bar.js
90 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/fixtures/foo.ini
91 node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/foo.js
92 node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/LICENSE
93 node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/README.md
94 node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/package.json
95 node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/proto-list.js
96 node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/test/basic.js
97 node_modules/js-beautify/node_modules/config-chain/package.json
98 node_modules/js-beautify/node_modules/config-chain/readme.markdown
99 node_modules/js-beautify/node_modules/config-chain/test/broken.js
100 node_modules/js-beautify/node_modules/config-chain/test/broken.json
101 node_modules/js-beautify/node_modules/config-chain/test/chain-class.js
102 node_modules/js-beautify/node_modules/config-chain/test/env.js
103 node_modules/js-beautify/node_modules/config-chain/test/find-file.js
104 node_modules/js-beautify/node_modules/config-chain/test/get.js
105 node_modules/js-beautify/node_modules/config-chain/test/ignore-unfound-file.js
106 node_modules/js-beautify/node_modules/config-chain/test/ini.js
107 node_modules/js-beautify/node_modules/config-chain/test/save.js
108 node_modules/js-beautify/node_modules/mkdirp/LICENSE
109 node_modules/js-beautify/node_modules/mkdirp/bin/cmd.js
110 node_modules/js-beautify/node_modules/mkdirp/bin/usage.txt
111 node_modules/js-beautify/node_modules/mkdirp/examples/pow.js
112 node_modules/js-beautify/node_modules/mkdirp/index.js
113 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/LICENSE
114 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/example/parse.js
115 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/index.js
116 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/package.json
117 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/readme.markdown
118 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/dash.js
119 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/default_bool.js
120 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/dotted.js
121 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/long.js
122 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/parse.js
123 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js
124 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/short.js
125 node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/whitespace.js
126 node_modules/js-beautify/node_modules/mkdirp/package.json
127 node_modules/js-beautify/node_modules/mkdirp/readme.markdown
128 node_modules/js-beautify/node_modules/mkdirp/test/chmod.js
129 node_modules/js-beautify/node_modules/mkdirp/test/clobber.js
130 node_modules/js-beautify/node_modules/mkdirp/test/mkdirp.js
131 node_modules/js-beautify/node_modules/mkdirp/test/opts_fs.js
132 node_modules/js-beautify/node_modules/mkdirp/test/opts_fs_sync.js
133 node_modules/js-beautify/node_modules/mkdirp/test/perm.js
134 node_modules/js-beautify/node_modules/mkdirp/test/perm_sync.js
135 node_modules/js-beautify/node_modules/mkdirp/test/race.js
136 node_modules/js-beautify/node_modules/mkdirp/test/rel.js
137 node_modules/js-beautify/node_modules/mkdirp/test/return.js
138 node_modules/js-beautify/node_modules/mkdirp/test/return_sync.js
139 node_modules/js-beautify/node_modules/mkdirp/test/root.js
140 node_modules/js-beautify/node_modules/mkdirp/test/sync.js
141 node_modules/js-beautify/node_modules/mkdirp/test/umask.js
142 node_modules/js-beautify/node_modules/mkdirp/test/umask_sync.js
143 node_modules/js-beautify/node_modules/nopt/LICENSE
144 node_modules/js-beautify/node_modules/nopt/README.md
145 node_modules/js-beautify/node_modules/nopt/bin/nopt.js
146 node_modules/js-beautify/node_modules/nopt/examples/my-program.js
147 node_modules/js-beautify/node_modules/nopt/lib/nopt.js
148 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md
149 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/LICENSE
150 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/README.md
151 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/abbrev.js
152 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/package.json
153 node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/test.js
154 node_modules/js-beautify/node_modules/nopt/package.json
155 node_modules/js-beautify/node_modules/nopt/test/basic.js
156 node_modules/js-beautify/package.json
157 node_modules/js-beautify/test/underscore-min.js
158 node_modules/js-beautify/test/underscore.js
159 node_modules/jshint/README.md
160 node_modules/jshint/bin/apply
161 node_modules/jshint/bin/build
162 node_modules/jshint/bin/changelog
163 node_modules/jshint/bin/jshint
164 node_modules/jshint/bin/land
165 node_modules/jshint/data/ascii-identifier-data.js
166 node_modules/jshint/data/non-ascii-identifier-part-only.js
167 node_modules/jshint/data/non-ascii-identifier-start.js
168 node_modules/jshint/dist/jshint-rhino.js
169 node_modules/jshint/dist/jshint.js
170 node_modules/jshint/node_modules/cli/README.md
171 node_modules/jshint/node_modules/cli/cli.js
172 node_modules/jshint/node_modules/cli/examples/cat.js
173 node_modules/jshint/node_modules/cli/examples/command.js
174 node_modules/jshint/node_modules/cli/examples/echo.js
175 node_modules/jshint/node_modules/cli/examples/glob.js
176 node_modules/jshint/node_modules/cli/examples/long_desc.js
177 node_modules/jshint/node_modules/cli/examples/progress.js
178 node_modules/jshint/node_modules/cli/examples/sort.js
179 node_modules/jshint/node_modules/cli/examples/spinner.js
180 node_modules/jshint/node_modules/cli/examples/static.coffee
181 node_modules/jshint/node_modules/cli/examples/static.js
182 node_modules/jshint/node_modules/cli/index.js
183 node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE
184 node_modules/jshint/node_modules/cli/node_modules/glob/README.md
185 node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js
186 node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js
187 node_modules/jshint/node_modules/cli/node_modules/glob/glob.js
188 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE
189 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md
190 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js
191 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js
192 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json
193 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js
194 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/LICENSE
195 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/README.md
196 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/minimatch.js
197 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS
198 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE
199 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md
200 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js
201 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json
202 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js
203 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js
204 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js
205 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE
206 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md
207 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js
208 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json
209 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js
210 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js
211 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/package.json
212 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/basic.js
213 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/brace-expand.js
214 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/caching.js
215 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/defaults.js
216 node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js
217 node_modules/jshint/node_modules/cli/node_modules/glob/package.json
218 node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js
219 node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js
220 node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json
221 node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js
222 node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js
223 node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js
224 node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js
225 node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js
226 node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js
227 node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js
228 node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js
229 node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js
230 node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js
231 node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js
232 node_modules/jshint/node_modules/cli/package.json
233 node_modules/jshint/node_modules/console-browserify/LICENCE
234 node_modules/jshint/node_modules/console-browserify/README.md
235 node_modules/jshint/node_modules/console-browserify/index.js
236 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/LICENCE
237 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/README.md
238 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/index.js
239 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/package.json
240 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/seed.js
241 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/index.js
242 node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/static/index.html
243 node_modules/jshint/node_modules/console-browserify/package.json
244 node_modules/jshint/node_modules/console-browserify/test/index.js
245 node_modules/jshint/node_modules/console-browserify/test/static/index.html
246 node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js
247 node_modules/jshint/node_modules/exit/Gruntfile.js
248 node_modules/jshint/node_modules/exit/LICENSE-MIT
249 node_modules/jshint/node_modules/exit/README.md
250 node_modules/jshint/node_modules/exit/lib/exit.js
251 node_modules/jshint/node_modules/exit/package.json
252 node_modules/jshint/node_modules/exit/test/exit_test.js
253 node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt
254 node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt
255 node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt
256 node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt
257 node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt
258 node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt
259 node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt
260 node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
261 node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt
262 node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh
263 node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js
264 node_modules/jshint/node_modules/exit/test/fixtures/log.js
265 node_modules/jshint/node_modules/htmlparser2/LICENSE
266 node_modules/jshint/node_modules/htmlparser2/README.md
267 node_modules/jshint/node_modules/htmlparser2/lib/CollectingHandler.js
268 node_modules/jshint/node_modules/htmlparser2/lib/FeedHandler.js
269 node_modules/jshint/node_modules/htmlparser2/lib/Parser.js
270 node_modules/jshint/node_modules/htmlparser2/lib/ProxyHandler.js
271 node_modules/jshint/node_modules/htmlparser2/lib/Stream.js
272 node_modules/jshint/node_modules/htmlparser2/lib/Tokenizer.js
273 node_modules/jshint/node_modules/htmlparser2/lib/WritableStream.js
274 node_modules/jshint/node_modules/htmlparser2/lib/index.js
275 node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/LICENSE
276 node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/index.js
277 node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/package.json
278 node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/readme.md
279 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/LICENSE
280 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/index.js
281 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/lib/element.js
282 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/lib/node.js
283 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/package.json
284 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/readme.md
285 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/01-basic.json
286 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/02-single_tag_1.json
287 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/03-single_tag_2.json
288 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/04-unescaped_in_script.json
289 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/05-tags_in_comment.json
290 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/06-comment_in_script.json
291 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json
292 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json
293 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json
294 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json
295 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/11-text_outside_tags.json
296 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/12-text_only.json
297 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/13-comment_in_text.json
298 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json
299 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/15-non-verbose.json
300 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/16-normalize_whitespace.json
301 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/17-xml_namespace.json
302 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/18-enforce_empty_tags.json
303 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/19-ignore_empty_tags.json
304 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/20-template_script_tags.json
305 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/21-conditional_comments.json
306 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/22-lowercase_tags.json
307 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/23-dom-lvl1.json
308 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/24-with-start-indices.json
309 node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/tests.js
310 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/LICENSE
311 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/index.js
312 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js
313 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js
314 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js
315 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/querying.js
316 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js
317 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js
318 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/package.json
319 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/readme.md
320 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/fixture.js
321 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/helpers.js
322 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/legacy.js
323 node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/utils.js
324 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/LICENSE
325 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/index.js
326 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode.js
327 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js
328 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/encode.js
329 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/decode.json
330 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/entities.json
331 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/legacy.json
332 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/xml.json
333 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/package.json
334 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/readme.md
335 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/mocha.opts
336 node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/test.js
337 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/LICENSE
338 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/README.md
339 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/duplex.js
340 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/float.patch
341 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js
342 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_passthrough.js
343 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_readable.js
344 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_transform.js
345 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_writable.js
346 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/README.md
347 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/float.patch
348 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
349 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/package.json
350 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/util.js
351 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/LICENSE
352 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/README.md
353 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits.js
354 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
355 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/package.json
356 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/test.js
357 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/README.md
358 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/build/build.js
359 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/component.json
360 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/index.js
361 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/package.json
362 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/LICENSE
363 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/README.md
364 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/index.js
365 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/package.json
366 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/package.json
367 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/passthrough.js
368 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/readable.js
369 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/transform.js
370 node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/writable.js
371 node_modules/jshint/node_modules/htmlparser2/package.json
372 node_modules/jshint/node_modules/htmlparser2/test/01-events.js
373 node_modules/jshint/node_modules/htmlparser2/test/02-stream.js
374 node_modules/jshint/node_modules/htmlparser2/test/03-feed.js
375 node_modules/jshint/node_modules/htmlparser2/test/Documents/Atom_Example.xml
376 node_modules/jshint/node_modules/htmlparser2/test/Documents/Attributes.html
377 node_modules/jshint/node_modules/htmlparser2/test/Documents/Basic.html
378 node_modules/jshint/node_modules/htmlparser2/test/Documents/RDF_Example.xml
379 node_modules/jshint/node_modules/htmlparser2/test/Documents/RSS_Example.xml
380 node_modules/jshint/node_modules/htmlparser2/test/Events/01-simple.json
381 node_modules/jshint/node_modules/htmlparser2/test/Events/02-template.json
382 node_modules/jshint/node_modules/htmlparser2/test/Events/03-lowercase_tags.json
383 node_modules/jshint/node_modules/htmlparser2/test/Events/04-cdata.json
384 node_modules/jshint/node_modules/htmlparser2/test/Events/05-cdata-special.json
385 node_modules/jshint/node_modules/htmlparser2/test/Events/06-leading-lt.json
386 node_modules/jshint/node_modules/htmlparser2/test/Events/07-self-closing.json
387 node_modules/jshint/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json
388 node_modules/jshint/node_modules/htmlparser2/test/Events/09-attributes.json
389 node_modules/jshint/node_modules/htmlparser2/test/Events/10-crazy-attrib.json
390 node_modules/jshint/node_modules/htmlparser2/test/Events/11-script_in_script.json
391 node_modules/jshint/node_modules/htmlparser2/test/Events/12-long-comment-end.json
392 node_modules/jshint/node_modules/htmlparser2/test/Events/13-long-cdata-end.json
393 node_modules/jshint/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json
394 node_modules/jshint/node_modules/htmlparser2/test/Events/15-lt-whitespace.json
395 node_modules/jshint/node_modules/htmlparser2/test/Events/16-double_attribs.json
396 node_modules/jshint/node_modules/htmlparser2/test/Events/17-numeric_entities.json
397 node_modules/jshint/node_modules/htmlparser2/test/Events/18-legacy_entities.json
398 node_modules/jshint/node_modules/htmlparser2/test/Events/19-named_entities.json
399 node_modules/jshint/node_modules/htmlparser2/test/Events/20-xml_entities.json
400 node_modules/jshint/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json
401 node_modules/jshint/node_modules/htmlparser2/test/Events/22-double_brackets.json
402 node_modules/jshint/node_modules/htmlparser2/test/Events/23-legacy_entity_fail.json
403 node_modules/jshint/node_modules/htmlparser2/test/Events/24-special_special.json
404 node_modules/jshint/node_modules/htmlparser2/test/Events/25-empty_tag_name.json
405 node_modules/jshint/node_modules/htmlparser2/test/Events/26-not-quite-closed.json
406 node_modules/jshint/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json
407 node_modules/jshint/node_modules/htmlparser2/test/Events/28-cdata_in_html.json
408 node_modules/jshint/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json
409 node_modules/jshint/node_modules/htmlparser2/test/Events/30-cdata_edge-cases.json
410 node_modules/jshint/node_modules/htmlparser2/test/Events/31-comment_false-ending.json
411 node_modules/jshint/node_modules/htmlparser2/test/Feeds/01-rss.js
412 node_modules/jshint/node_modules/htmlparser2/test/Feeds/02-atom.js
413 node_modules/jshint/node_modules/htmlparser2/test/Feeds/03-rdf.js
414 node_modules/jshint/node_modules/htmlparser2/test/Stream/01-basic.json
415 node_modules/jshint/node_modules/htmlparser2/test/Stream/02-RSS.json
416 node_modules/jshint/node_modules/htmlparser2/test/Stream/03-Atom.json
417 node_modules/jshint/node_modules/htmlparser2/test/Stream/04-RDF.json
418 node_modules/jshint/node_modules/htmlparser2/test/Stream/05-Attributes.json
419 node_modules/jshint/node_modules/htmlparser2/test/api.js
420 node_modules/jshint/node_modules/htmlparser2/test/test-helper.js
421 node_modules/jshint/node_modules/minimatch/LICENSE
422 node_modules/jshint/node_modules/minimatch/README.md
423 node_modules/jshint/node_modules/minimatch/minimatch.js
424 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS
425 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/LICENSE
426 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/README.md
427 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js
428 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/package.json
429 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/basic.js
430 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/foreach.js
431 node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js
432 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/LICENSE
433 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/README.md
434 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/bench.js
435 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/package.json
436 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/sigmund.js
437 node_modules/jshint/node_modules/minimatch/node_modules/sigmund/test/basic.js
438 node_modules/jshint/node_modules/minimatch/package.json
439 node_modules/jshint/node_modules/minimatch/test/basic.js
440 node_modules/jshint/node_modules/minimatch/test/brace-expand.js
441 node_modules/jshint/node_modules/minimatch/test/caching.js
442 node_modules/jshint/node_modules/minimatch/test/defaults.js
443 node_modules/jshint/node_modules/minimatch/test/extglob-ending-with-state-char.js
444 node_modules/jshint/node_modules/shelljs/LICENSE
445 node_modules/jshint/node_modules/shelljs/README.md
446 node_modules/jshint/node_modules/shelljs/bin/shjs
447 node_modules/jshint/node_modules/shelljs/global.js
448 node_modules/jshint/node_modules/shelljs/make.js
449 node_modules/jshint/node_modules/shelljs/package.json
450 node_modules/jshint/node_modules/shelljs/scripts/generate-docs.js
451 node_modules/jshint/node_modules/shelljs/scripts/run-tests.js
452 node_modules/jshint/node_modules/shelljs/shell.js
453 node_modules/jshint/node_modules/shelljs/src/cat.js
454 node_modules/jshint/node_modules/shelljs/src/cd.js
455 node_modules/jshint/node_modules/shelljs/src/chmod.js
456 node_modules/jshint/node_modules/shelljs/src/common.js
457 node_modules/jshint/node_modules/shelljs/src/cp.js
458 node_modules/jshint/node_modules/shelljs/src/dirs.js
459 node_modules/jshint/node_modules/shelljs/src/echo.js
460 node_modules/jshint/node_modules/shelljs/src/error.js
461 node_modules/jshint/node_modules/shelljs/src/exec.js
462 node_modules/jshint/node_modules/shelljs/src/find.js
463 node_modules/jshint/node_modules/shelljs/src/grep.js
464 node_modules/jshint/node_modules/shelljs/src/ln.js
465 node_modules/jshint/node_modules/shelljs/src/ls.js
466 node_modules/jshint/node_modules/shelljs/src/mkdir.js
467 node_modules/jshint/node_modules/shelljs/src/mv.js
468 node_modules/jshint/node_modules/shelljs/src/popd.js
469 node_modules/jshint/node_modules/shelljs/src/pushd.js
470 node_modules/jshint/node_modules/shelljs/src/pwd.js
471 node_modules/jshint/node_modules/shelljs/src/rm.js
472 node_modules/jshint/node_modules/shelljs/src/sed.js
473 node_modules/jshint/node_modules/shelljs/src/tempdir.js
474 node_modules/jshint/node_modules/shelljs/src/test.js
475 node_modules/jshint/node_modules/shelljs/src/to.js
476 node_modules/jshint/node_modules/shelljs/src/toEnd.js
477 node_modules/jshint/node_modules/shelljs/src/which.js
478 node_modules/jshint/node_modules/strip-json-comments/cli.js
479 node_modules/jshint/node_modules/strip-json-comments/package.json
480 node_modules/jshint/node_modules/strip-json-comments/readme.md
481 node_modules/jshint/node_modules/strip-json-comments/strip-json-comments.js
482 node_modules/jshint/node_modules/underscore/LICENSE
483 node_modules/jshint/node_modules/underscore/README.md
484 node_modules/jshint/node_modules/underscore/package.json
485 node_modules/jshint/node_modules/underscore/underscore-min.js
486 node_modules/jshint/node_modules/underscore/underscore.js
487 node_modules/jshint/package.json
488 node_modules/jshint/src/cli.js
489 node_modules/jshint/src/jshint.js
490 node_modules/jshint/src/lex.js
491 node_modules/jshint/src/messages.js
492 node_modules/jshint/src/name-stack.js
493 node_modules/jshint/src/options.js
494 node_modules/jshint/src/platforms/rhino.js
495 node_modules/jshint/src/reg.js
496 node_modules/jshint/src/reporters/checkstyle.js
497 node_modules/jshint/src/reporters/default.js
498 node_modules/jshint/src/reporters/jslint_xml.js
499 node_modules/jshint/src/reporters/non_error.js
500 node_modules/jshint/src/reporters/unix.js
501 node_modules/jshint/src/state.js
502 node_modules/jshint/src/style.js
503 node_modules/jshint/src/vars.js
504 node_modules/jslint/README.md
505 node_modules/jslint/bin/jslint.js
506 node_modules/jslint/doc/jslint.html
507 node_modules/jslint/doc/jslint.md
508 node_modules/jslint/lib/color.js
509 node_modules/jslint/lib/fileopener.js
510 node_modules/jslint/lib/jslint-2012-02-03.js
511 node_modules/jslint/lib/jslint-2013-02-03.js
512 node_modules/jslint/lib/jslint-2013-08-13.js
513 node_modules/jslint/lib/jslint-2013-08-26.js
514 node_modules/jslint/lib/jslint-2013-09-22.js
515 node_modules/jslint/lib/jslint-2013-11-23.js
516 node_modules/jslint/lib/jslint-2014-01-26.js
517 node_modules/jslint/lib/jslint-2014-02-06.js
518 node_modules/jslint/lib/jslint-2014-04-21.js
519 node_modules/jslint/lib/jslint-2014-07-08.js
520 node_modules/jslint/lib/jslint-latest.js
521 node_modules/jslint/lib/jslint.js
522 node_modules/jslint/lib/jsonreportstream.js
523 node_modules/jslint/lib/linter.js
524 node_modules/jslint/lib/lintstream.js
525 node_modules/jslint/lib/main.js
526 node_modules/jslint/lib/nodelint.js
527 node_modules/jslint/lib/options.js
528 node_modules/jslint/lib/reporter.js
529 node_modules/jslint/lib/reportstream.js
530 node_modules/jslint/lib/stream.js
531 node_modules/jslint/man/jslint.1
532 node_modules/jslint/node_modules/exit/Gruntfile.js
533 node_modules/jslint/node_modules/exit/LICENSE-MIT
534 node_modules/jslint/node_modules/exit/README.md
535 node_modules/jslint/node_modules/exit/lib/exit.js
536 node_modules/jslint/node_modules/exit/package.json
537 node_modules/jslint/node_modules/exit/test/exit_test.js
538 node_modules/jslint/node_modules/exit/test/fixtures/10-stderr.txt
539 node_modules/jslint/node_modules/exit/test/fixtures/10-stdout-stderr.txt
540 node_modules/jslint/node_modules/exit/test/fixtures/10-stdout.txt
541 node_modules/jslint/node_modules/exit/test/fixtures/100-stderr.txt
542 node_modules/jslint/node_modules/exit/test/fixtures/100-stdout-stderr.txt
543 node_modules/jslint/node_modules/exit/test/fixtures/100-stdout.txt
544 node_modules/jslint/node_modules/exit/test/fixtures/1000-stderr.txt
545 node_modules/jslint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt
546 node_modules/jslint/node_modules/exit/test/fixtures/1000-stdout.txt
547 node_modules/jslint/node_modules/exit/test/fixtures/create-files.sh
548 node_modules/jslint/node_modules/exit/test/fixtures/log-broken.js
549 node_modules/jslint/node_modules/exit/test/fixtures/log.js
550 node_modules/jslint/node_modules/glob/LICENSE
551 node_modules/jslint/node_modules/glob/README.md
552 node_modules/jslint/node_modules/glob/examples/g.js
553 node_modules/jslint/node_modules/glob/examples/usr-local.js
554 node_modules/jslint/node_modules/glob/glob.js
555 node_modules/jslint/node_modules/glob/node_modules/inherits/LICENSE
556 node_modules/jslint/node_modules/glob/node_modules/inherits/README.md
557 node_modules/jslint/node_modules/glob/node_modules/inherits/inherits.js
558 node_modules/jslint/node_modules/glob/node_modules/inherits/inherits_browser.js
559 node_modules/jslint/node_modules/glob/node_modules/inherits/package.json
560 node_modules/jslint/node_modules/glob/node_modules/inherits/test.js
561 node_modules/jslint/node_modules/glob/node_modules/minimatch/LICENSE
562 node_modules/jslint/node_modules/glob/node_modules/minimatch/README.md
563 node_modules/jslint/node_modules/glob/node_modules/minimatch/minimatch.js
564 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS
565 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE
566 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md
567 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js
568 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json
569 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js
570 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js
571 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js
572 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE
573 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md
574 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js
575 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json
576 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js
577 node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js
578 node_modules/jslint/node_modules/glob/node_modules/minimatch/package.json
579 node_modules/jslint/node_modules/glob/node_modules/minimatch/test/basic.js
580 node_modules/jslint/node_modules/glob/node_modules/minimatch/test/brace-expand.js
581 node_modules/jslint/node_modules/glob/node_modules/minimatch/test/caching.js
582 node_modules/jslint/node_modules/glob/node_modules/minimatch/test/defaults.js
583 node_modules/jslint/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js
584 node_modules/jslint/node_modules/glob/package.json
585 node_modules/jslint/node_modules/glob/test/00-setup.js
586 node_modules/jslint/node_modules/glob/test/bash-comparison.js
587 node_modules/jslint/node_modules/glob/test/bash-results.json
588 node_modules/jslint/node_modules/glob/test/cwd-test.js
589 node_modules/jslint/node_modules/glob/test/globstar-match.js
590 node_modules/jslint/node_modules/glob/test/mark.js
591 node_modules/jslint/node_modules/glob/test/new-glob-optional-options.js
592 node_modules/jslint/node_modules/glob/test/nocase-nomagic.js
593 node_modules/jslint/node_modules/glob/test/pause-resume.js
594 node_modules/jslint/node_modules/glob/test/readme-issue.js
595 node_modules/jslint/node_modules/glob/test/root-nomount.js
596 node_modules/jslint/node_modules/glob/test/root.js
597 node_modules/jslint/node_modules/glob/test/stat.js
598 node_modules/jslint/node_modules/glob/test/zz-cleanup.js
599 node_modules/jslint/node_modules/nopt/LICENSE
600 node_modules/jslint/node_modules/nopt/README.md
601 node_modules/jslint/node_modules/nopt/bin/nopt.js
602 node_modules/jslint/node_modules/nopt/examples/my-program.js
603 node_modules/jslint/node_modules/nopt/lib/nopt.js
604 node_modules/jslint/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md
605 node_modules/jslint/node_modules/nopt/node_modules/abbrev/LICENSE
606 node_modules/jslint/node_modules/nopt/node_modules/abbrev/README.md
607 node_modules/jslint/node_modules/nopt/node_modules/abbrev/abbrev.js
608 node_modules/jslint/node_modules/nopt/node_modules/abbrev/package.json
609 node_modules/jslint/node_modules/nopt/node_modules/abbrev/test.js
610 node_modules/jslint/node_modules/nopt/package.json
611 node_modules/jslint/node_modules/readable-stream/LICENSE
612 node_modules/jslint/node_modules/readable-stream/README.md
613 node_modules/jslint/node_modules/readable-stream/duplex.js
614 node_modules/jslint/node_modules/readable-stream/lib/_stream_duplex.js
615 node_modules/jslint/node_modules/readable-stream/lib/_stream_passthrough.js
616 node_modules/jslint/node_modules/readable-stream/lib/_stream_readable.js
617 node_modules/jslint/node_modules/readable-stream/lib/_stream_transform.js
618 node_modules/jslint/node_modules/readable-stream/lib/_stream_writable.js
619 node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/README.md
620 node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/float.patch
621 node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/lib/util.js
622 node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/package.json
623 node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/util.js
624 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/LICENSE
625 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/README.md
626 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/inherits.js
627 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/inherits_browser.js
628 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/package.json
629 node_modules/jslint/node_modules/readable-stream/node_modules/inherits/test.js
630 node_modules/jslint/node_modules/readable-stream/node_modules/isarray/README.md
631 node_modules/jslint/node_modules/readable-stream/node_modules/isarray/build/build.js
632 node_modules/jslint/node_modules/readable-stream/node_modules/isarray/component.json
633 node_modules/jslint/node_modules/readable-stream/node_modules/isarray/index.js
634 node_modules/jslint/node_modules/readable-stream/node_modules/isarray/package.json
635 node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/LICENSE
636 node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/README.md
637 node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/index.js
638 node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/package.json
639 node_modules/jslint/node_modules/readable-stream/package.json
640 node_modules/jslint/node_modules/readable-stream/passthrough.js
641 node_modules/jslint/node_modules/readable-stream/readable.js
642 node_modules/jslint/node_modules/readable-stream/transform.js
643 node_modules/jslint/node_modules/readable-stream/writable.js
644 node_modules/jslint/package.json
645 perlcriticrc
646 perltidyrc
647 php5/usr/bin/phpcs
648 php5/usr/bin/scripts/phpcs-svn-pre-commit
649 php5/usr/share/php/PHP/CodeSniffer.php
650 php5/usr/share/php/PHP/CodeSniffer/CLI.php
651 php5/usr/share/php/PHP/CodeSniffer/CommentParser/AbstractDocElement.php
652 php5/usr/share/php/PHP/CodeSniffer/CommentParser/AbstractParser.php
653 php5/usr/share/php/PHP/CodeSniffer/CommentParser/ClassCommentParser.php
654 php5/usr/share/php/PHP/CodeSniffer/CommentParser/CommentElement.php
655 php5/usr/share/php/PHP/CodeSniffer/CommentParser/DocElement.php
656 php5/usr/share/php/PHP/CodeSniffer/CommentParser/FunctionCommentParser.php
657 php5/usr/share/php/PHP/CodeSniffer/CommentParser/MemberCommentParser.php
658 php5/usr/share/php/PHP/CodeSniffer/CommentParser/PairElement.php
659 php5/usr/share/php/PHP/CodeSniffer/CommentParser/ParameterElement.php
660 php5/usr/share/php/PHP/CodeSniffer/CommentParser/ParserException.php
661 php5/usr/share/php/PHP/CodeSniffer/CommentParser/SingleElement.php
662 php5/usr/share/php/PHP/CodeSniffer/DocGenerators/Generator.php
663 php5/usr/share/php/PHP/CodeSniffer/DocGenerators/HTML.php
664 php5/usr/share/php/PHP/CodeSniffer/DocGenerators/Text.php
665 php5/usr/share/php/PHP/CodeSniffer/Exception.php
666 php5/usr/share/php/PHP/CodeSniffer/File.php
667 php5/usr/share/php/PHP/CodeSniffer/Report.php
668 php5/usr/share/php/PHP/CodeSniffer/Reporting.php
669 php5/usr/share/php/PHP/CodeSniffer/Reports/Checkstyle.php
670 php5/usr/share/php/PHP/CodeSniffer/Reports/Csv.php
671 php5/usr/share/php/PHP/CodeSniffer/Reports/Emacs.php
672 php5/usr/share/php/PHP/CodeSniffer/Reports/Full.php
673 php5/usr/share/php/PHP/CodeSniffer/Reports/Gitblame.php
674 php5/usr/share/php/PHP/CodeSniffer/Reports/Hgblame.php
675 php5/usr/share/php/PHP/CodeSniffer/Reports/Json.php
676 php5/usr/share/php/PHP/CodeSniffer/Reports/Junit.php
677 php5/usr/share/php/PHP/CodeSniffer/Reports/Notifysend.php
678 php5/usr/share/php/PHP/CodeSniffer/Reports/Source.php
679 php5/usr/share/php/PHP/CodeSniffer/Reports/Summary.php
680 php5/usr/share/php/PHP/CodeSniffer/Reports/Svnblame.php
681 php5/usr/share/php/PHP/CodeSniffer/Reports/VersionControl.php
682 php5/usr/share/php/PHP/CodeSniffer/Reports/Xml.php
683 php5/usr/share/php/PHP/CodeSniffer/Sniff.php
684 php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractPatternSniff.php
685 php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractScopeSniff.php
686 php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractVariableSniff.php
687 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Classes/DuplicateClassNameStandard.xml
688 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/EmptyStatementStandard.xml
689 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/ForLoopShouldBeWhileLoopStandard.xml
690 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/ForLoopWithTestFunctionCallStandard.xml
691 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/JumbledIncrementerStandard.xml
692 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnconditionalIfStatementStandard.xml
693 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnnecessaryFinalModifierStandard.xml
694 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnusedFunctionParameterStandard.xml
695 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UselessOverridingMethodStandard.xml
696 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Commenting/FixmeStandard.xml
697 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Commenting/TodoStandard.xml
698 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/ControlStructures/InlineControlStructureStandard.xml
699 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/CSSLintStandard.xml
700 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/ClosureLinterStandard.xml
701 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/JSHintStandard.xml
702 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/ByteOrderMarkStandard.xml
703 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/EndFileNewlineStandard.xml
704 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/EndFileNoNewlineStandard.xml
705 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/InlineHTMLStandard.xml
706 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LineEndingsStandard.xml
707 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LineLengthStandard.xml
708 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LowercasedFilenameStandard.xml
709 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/OneClassPerFileStandard.xml
710 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/OneInterfacePerFileStandard.xml
711 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/DisallowMultipleStatementsStandard.xml
712 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/MultipleStatementAlignmentStandard.xml
713 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/NoSpaceAfterCastStandard.xml
714 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/SpaceAfterCastStandard.xml
715 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/CallTimePassByReferenceStandard.xml
716 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/FunctionCallArgumentSpacingStandard.xml
717 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/OpeningFunctionBraceBsdAllmanStandard.xml
718 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/OpeningFunctionBraceKernighanRitchieStandard.xml
719 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Metrics/CyclomaticComplexityStandard.xml
720 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Metrics/NestingLevelStandard.xml
721 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/CamelCapsFunctionNameStandard.xml
722 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/ConstructorNameStandard.xml
723 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/UpperCaseConstantNameStandard.xml
724 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/CharacterBeforePHPOpeningTagStandard.xml
725 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/ClosingPHPTagStandard.xml
726 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/DeprecatedFunctionsStandard.xml
727 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/DisallowShortOpenTagStandard.xml
728 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/ForbiddenFunctionsStandard.xml
729 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/LowerCaseConstantStandard.xml
730 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/LowerCaseKeywordStandard.xml
731 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/NoSilencedErrorsStandard.xml
732 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/SAPIUsageStandard.xml
733 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/UpperCaseConstantStandard.xml
734 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Strings/UnnecessaryStringConcatStandard.xml
735 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/VersionControl/SubversionPropertiesStandard.xml
736 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/DisallowSpaceIndentStandard.xml
737 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/DisallowTabIndentStandard.xml
738 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/ScopeIndentStandard.xml
739 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php
740 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/EmptyStatementSniff.php
741 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php
742 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php
743 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php
744 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php
745 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php
746 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php
747 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php
748 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Commenting/FixmeSniff.php
749 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Commenting/TodoSniff.php
750 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php
751 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/CSSLintSniff.php
752 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/ClosureLinterSniff.php
753 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/JSHintSniff.php
754 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/ByteOrderMarkSniff.php
755 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/EndFileNewlineSniff.php
756 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/EndFileNoNewlineSniff.php
757 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/InlineHTMLSniff.php
758 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineEndingsSniff.php
759 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineLengthSniff.php
760 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LowercasedFilenameSniff.php
761 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/OneClassPerFileSniff.php
762 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/OneInterfacePerFileSniff.php
763 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/DisallowMultipleStatementsSniff.php
764 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/MultipleStatementAlignmentSniff.php
765 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/NoSpaceAfterCastSniff.php
766 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/SpaceAfterCastSniff.php
767 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/CallTimePassByReferenceSniff.php
768 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php
769 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceBsdAllmanSniff.php
770 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceKernighanRitchieSniff.php
771 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php
772 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Metrics/NestingLevelSniff.php
773 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/CamelCapsFunctionNameSniff.php
774 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/ConstructorNameSniff.php
775 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php
776 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/CharacterBeforePHPOpeningTagSniff.php
777 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/ClosingPHPTagSniff.php
778 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/DeprecatedFunctionsSniff.php
779 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/DisallowShortOpenTagSniff.php
780 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/ForbiddenFunctionsSniff.php
781 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/LowerCaseConstantSniff.php
782 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php
783 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/NoSilencedErrorsSniff.php
784 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/SAPIUsageSniff.php
785 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/SyntaxSniff.php
786 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/UpperCaseConstantSniff.php
787 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php
788 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/VersionControl/SubversionPropertiesSniff.php
789 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php
790 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php
791 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/ScopeIndentSniff.php
792 php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/ruleset.xml
793 php5/usr/share/php/PHP/CodeSniffer/Standards/IncorrectPatternException.php
794 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/CSS/BrowserSpecificStylesSniff.php
795 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/ChannelExceptionSniff.php
796 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/DisallowSelfActionsSniff.php
797 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/IncludeOwnSystemSniff.php
798 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/IncludeSystemSniff.php
799 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/UnusedSystemSniff.php
800 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Commenting/FunctionCommentSniff.php
801 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Debug/DebugCodeSniff.php
802 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Debug/FirebugConsoleSniff.php
803 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/AssignThisSniff.php
804 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/CreateWidgetTypeCallbackSniff.php
805 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/DisallowNewWidgetSniff.php
806 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/AjaxNullComparisonSniff.php
807 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/EvalObjectFactorySniff.php
808 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/GetRequestDataSniff.php
809 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/ReturnFunctionValueSniff.php
810 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Strings/JoinStringsSniff.php
811 php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/ruleset.xml
812 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Classes/ClassDeclarationStandard.xml
813 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/ClassCommentStandard.xml
814 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/FileCommentStandard.xml
815 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/FunctionCommentStandard.xml
816 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/InlineCommentStandard.xml
817 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/ControlStructures/ControlSignatureStandard.xml
818 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/ControlStructures/MultiLineConditionStandard.xml
819 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Files/IncludingFileStandard.xml
820 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Files/LineLengthStandard.xml
821 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Formatting/MultiLineAssignmentStandard.xml
822 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/FunctionCallSignatureStandard.xml
823 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/FunctionDeclarationStandard.xml
824 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/ValidDefaultValueStandard.xml
825 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidClassNameStandard.xml
826 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidFunctionNameStandard.xml
827 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidVariableNameStandard.xml
828 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ObjectOperatorIndentStandard.xml
829 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ScopeClosingBraceStandard.xml
830 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ScopeIndentStandard.xml
831 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php
832 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php
833 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php
834 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/FunctionCommentSniff.php
835 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/InlineCommentSniff.php
836 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/ControlSignatureSniff.php
837 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/MultiLineConditionSniff.php
838 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Files/IncludingFileSniff.php
839 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Formatting/MultiLineAssignmentSniff.php
840 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/FunctionCallSignatureSniff.php
841 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/FunctionDeclarationSniff.php
842 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/ValidDefaultValueSniff.php
843 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php
844 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidFunctionNameSniff.php
845 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidVariableNameSniff.php
846 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ObjectOperatorIndentSniff.php
847 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php
848 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ScopeIndentSniff.php
849 php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/ruleset.xml
850 php5/usr/share/php/PHP/CodeSniffer/Standards/PHPCS/ruleset.xml
851 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Docs/Classes/ClassDeclarationStandard.xml
852 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Docs/Files/SideEffectsStandard.xml
853 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php
854 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php
855 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Methods/CamelCapsMethodNameSniff.php
856 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/ruleset.xml
857 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Classes/ClassDeclarationStandard.xml
858 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Classes/PropertyDeclarationStandard.xml
859 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/ControlStructureSpacingStandard.xml
860 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/ElseIfDeclarationStandard.xml
861 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/SwitchDeclarationStandard.xml
862 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Files/EndFileNewlineStandard.xml
863 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Methods/MethodDeclarationStandard.xml
864 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Namespaces/NamespaceDeclarationStandard.xml
865 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Namespaces/UseDeclarationStandard.xml
866 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php
867 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Classes/PropertyDeclarationSniff.php
868 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ControlStructureSpacingSniff.php
869 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ElseIfDeclarationSniff.php
870 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/SwitchDeclarationSniff.php
871 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php
872 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Methods/FunctionCallSignatureSniff.php
873 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Methods/MethodDeclarationSniff.php
874 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php
875 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php
876 php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/ruleset.xml
877 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Arrays/ArrayBracketSpacingStandard.xml
878 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Arrays/ArrayDeclarationStandard.xml
879 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Classes/LowercaseClassKeywordsStandard.xml
880 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Classes/SelfMemberReferenceStandard.xml
881 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Commenting/DocCommentAlignmentStandard.xml
882 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Commenting/FunctionCommentThrowTagStandard.xml
883 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/ForEachLoopDeclarationStandard.xml
884 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/ForLoopDeclarationStandard.xml
885 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/LowercaseDeclarationStandard.xml
886 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Functions/FunctionDuplicateArgumentStandard.xml
887 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Functions/LowercaseFunctionKeywordsStandard.xml
888 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Scope/StaticThisUsageStandard.xml
889 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Strings/EchoedStringsStandard.xml
890 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/CastSpacingStandard.xml
891 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/FunctionOpeningBraceStandard.xml
892 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/LanguageConstructSpacingStandard.xml
893 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/ObjectOperatorSpacingStandard.xml
894 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/ScopeKeywordSpacingStandard.xml
895 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml
896 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Arrays/ArrayBracketSpacingSniff.php
897 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php
898 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionClosingBraceSpaceSniff.php
899 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionNameSpacingSniff.php
900 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionOpeningBraceSpaceSniff.php
901 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ColonSpacingSniff.php
902 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ColourDefinitionSniff.php
903 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DisallowMultipleStyleDefinitionsSniff.php
904 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DuplicateClassDefinitionSniff.php
905 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DuplicateStyleDefinitionSniff.php
906 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/EmptyClassDefinitionSniff.php
907 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/EmptyStyleDefinitionSniff.php
908 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ForbiddenStylesSniff.php
909 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/IndentationSniff.php
910 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/LowercaseStyleDefinitionSniff.php
911 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/MissingColonSniff.php
912 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/NamedColoursSniff.php
913 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/OpacitySniff.php
914 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/SemicolonSpacingSniff.php
915 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ShorthandSizeSniff.php
916 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ClassDeclarationSniff.php
917 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php
918 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/DuplicatePropertySniff.php
919 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/LowercaseClassKeywordsSniff.php
920 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/SelfMemberReferenceSniff.php
921 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php
922 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CodeAnalysis/EmptyStatementSniff.php
923 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php
924 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/ClassCommentSniff.php
925 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/ClosingDeclarationCommentSniff.php
926 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/DocCommentAlignmentSniff.php
927 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/EmptyCatchCommentSniff.php
928 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php
929 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FunctionCommentSniff.php
930 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FunctionCommentThrowTagSniff.php
931 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php
932 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/LongConditionClosingCommentSniff.php
933 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/PostStatementCommentSniff.php
934 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php
935 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php
936 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ElseIfDeclarationSniff.php
937 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ForEachLoopDeclarationSniff.php
938 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php
939 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/InlineIfDeclarationSniff.php
940 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/LowercaseDeclarationSniff.php
941 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/SwitchDeclarationSniff.php
942 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Debug/JSLintSniff.php
943 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Debug/JavaScriptLintSniff.php
944 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php
945 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Formatting/OperatorBracketSniff.php
946 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDeclarationArgumentSpacingSniff.php
947 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDeclarationSniff.php
948 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDuplicateArgumentSniff.php
949 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/GlobalFunctionSniff.php
950 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/LowercaseFunctionKeywordsSniff.php
951 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/MultiLineFunctionDeclarationSniff.php
952 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ConstantCaseSniff.php
953 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php
954 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidVariableNameSniff.php
955 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/DisallowObjectStringIndexSniff.php
956 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/ObjectInstantiationSniff.php
957 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/ObjectMemberCommaSniff.php
958 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/ComparisonOperatorUsageSniff.php
959 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/IncrementDecrementUsageSniff.php
960 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/ValidLogicalOperatorsSniff.php
961 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/CommentedOutCodeSniff.php
962 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowBooleanStatementSniff.php
963 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowComparisonAssignmentSniff.php
964 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowInlineIfSniff.php
965 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php
966 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowObEndFlushSniff.php
967 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowSizeFunctionsInLoopsSniff.php
968 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DiscouragedFunctionsSniff.php
969 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/EmbeddedPhpSniff.php
970 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/EvalSniff.php
971 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/ForbiddenFunctionsSniff.php
972 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/GlobalKeywordSniff.php
973 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/HeredocSniff.php
974 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/InnerFunctionsSniff.php
975 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/LowercasePHPFunctionsSniff.php
976 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/NonExecutableCodeSniff.php
977 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/MemberVarScopeSniff.php
978 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/MethodScopeSniff.php
979 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php
980 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/ConcatenationSpacingSniff.php
981 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php
982 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/EchoedStringsSniff.php
983 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/CastSpacingSniff.php
984 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php
985 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php
986 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php
987 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionSpacingSniff.php
988 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/LanguageConstructSpacingSniff.php
989 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/LogicalOperatorSpacingSniff.php
990 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php
991 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php
992 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php
993 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/PropertyLabelSpacingSniff.php
994 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php
995 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ScopeKeywordSpacingSniff.php
996 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php
997 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php
998 php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/ruleset.xml
999 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/Debug/CodeAnalyzerStandard.xml
1000 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/Files/ClosingTagStandard.xml
1001 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/NamingConventions/ValidVariableNameStandard.xml
1002 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/Debug/CodeAnalyzerSniff.php
1003 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/Files/ClosingTagSniff.php
1004 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php
1005 php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/ruleset.xml
1006 php5/usr/share/php/PHP/CodeSniffer/Tokenizers/CSS.php
1007 php5/usr/share/php/PHP/CodeSniffer/Tokenizers/JS.php
1008 php5/usr/share/php/PHP/CodeSniffer/Tokenizers/PHP.php
1009 php5/usr/share/php/PHP/CodeSniffer/Tokens.php
1010 php5/usr/share/php/test/PHP_CodeSniffer/AllTests.php
1011 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/AllTests.php
1012 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/ErrorSuppressionTest.php
1013 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/File/GetMethodParametersTest.php
1014 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/IsCamelCapsTest.php
1015 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/AbstractSniffUnitTest.php
1016 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/AllSniffs.php
1017 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc
1018 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc
1019 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.3.inc
1020 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.4.inc
1021 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.5.inc
1022 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.6.inc
1023 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php
1024 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/EmptyStatementUnitTest.inc
1025 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/EmptyStatementUnitTest.php
1026 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopShouldBeWhileLoopUnitTest.inc
1027 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopShouldBeWhileLoopUnitTest.php
1028 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopWithTestFunctionCallUnitTest.inc
1029 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopWithTestFunctionCallUnitTest.php
1030 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.inc
1031 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.php
1032 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.inc
1033 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.php
1034 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.inc
1035 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.php
1036 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnusedFunctionParameterUnitTest.inc
1037 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnusedFunctionParameterUnitTest.php
1038 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.inc
1039 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.php
1040 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.inc
1041 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.js
1042 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.php
1043 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.inc
1044 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.js
1045 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.php
1046 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.inc
1047 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.js
1048 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.php
1049 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/ByteOrderMarkUnitTest.inc
1050 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/ByteOrderMarkUnitTest.php
1051 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.css
1052 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.inc
1053 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.js
1054 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.css
1055 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.inc
1056 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.js
1057 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.css
1058 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.inc
1059 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.js
1060 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.php
1061 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.css
1062 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.inc
1063 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.js
1064 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.css
1065 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.inc
1066 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.js
1067 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.css
1068 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.inc
1069 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.js
1070 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.4.inc
1071 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.php
1072 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.1.inc
1073 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.2.inc
1074 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.3.inc
1075 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.4.inc
1076 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.php
1077 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.css
1078 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.inc
1079 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.js
1080 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.php
1081 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineLengthUnitTest.inc
1082 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineLengthUnitTest.php
1083 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.inc
1084 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.php
1085 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneClassPerFileUnitTest.inc
1086 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneClassPerFileUnitTest.php
1087 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneInterfacePerFileUnitTest.inc
1088 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneInterfacePerFileUnitTest.php
1089 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/DisallowMultipleStatementsUnitTest.inc
1090 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/DisallowMultipleStatementsUnitTest.php
1091 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.inc
1092 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.js
1093 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.php
1094 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/NoSpaceAfterCastUnitTest.inc
1095 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/NoSpaceAfterCastUnitTest.php
1096 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.inc
1097 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.php
1098 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.inc
1099 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.php
1100 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.inc
1101 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.php
1102 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceBsdAllmanUnitTest.inc
1103 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceBsdAllmanUnitTest.php
1104 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.inc
1105 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.php
1106 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.inc
1107 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.php
1108 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.inc
1109 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.php
1110 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc
1111 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php
1112 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.inc
1113 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.php
1114 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.inc
1115 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.php
1116 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/CharacterBeforePHPOpeningTagUnitTest.inc
1117 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/CharacterBeforePHPOpeningTagUnitTest.php
1118 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ClosingPHPTagUnitTest.inc
1119 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ClosingPHPTagUnitTest.php
1120 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.inc
1121 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.php
1122 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ForbiddenFunctionsUnitTest.inc
1123 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ForbiddenFunctionsUnitTest.php
1124 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.inc
1125 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.js
1126 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.php
1127 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc
1128 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php
1129 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/NoSilencedErrorsUnitTest.inc
1130 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/NoSilencedErrorsUnitTest.php
1131 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SAPIUsageUnitTest.inc
1132 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SAPIUsageUnitTest.php
1133 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SyntaxUnitTest.inc
1134 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SyntaxUnitTest.php
1135 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/UpperCaseConstantUnitTest.inc
1136 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/UpperCaseConstantUnitTest.php
1137 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.inc
1138 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.js
1139 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.php
1140 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.css
1141 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.inc
1142 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.js
1143 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.php
1144 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.css
1145 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.inc
1146 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.js
1147 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.php
1148 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.inc
1149 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.php
1150 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/CSS/BrowserSpecificStylesUnitTest.css
1151 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/CSS/BrowserSpecificStylesUnitTest.php
1152 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/DisallowSelfActionsUnitTest.inc
1153 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/DisallowSelfActionsUnitTest.php
1154 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/IncludeSystemUnitTest.inc
1155 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/IncludeSystemUnitTest.php
1156 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/UnusedSystemUnitTest.inc
1157 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/UnusedSystemUnitTest.php
1158 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Commenting/FunctionCommentUnitTest.inc
1159 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Commenting/FunctionCommentUnitTest.php
1160 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/DebugCodeUnitTest.inc
1161 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/DebugCodeUnitTest.php
1162 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/FirebugConsoleUnitTest.js
1163 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/FirebugConsoleUnitTest.php
1164 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/AssignThisUnitTest.js
1165 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/AssignThisUnitTest.php
1166 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/CreateWidgetTypeCallbackUnitTest.js
1167 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/CreateWidgetTypeCallbackUnitTest.php
1168 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/DisallowNewWidgetUnitTest.inc
1169 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/DisallowNewWidgetUnitTest.php
1170 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/AjaxNullComparisonUnitTest.inc
1171 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/AjaxNullComparisonUnitTest.php
1172 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/EvalObjectFactoryUnitTest.inc
1173 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/EvalObjectFactoryUnitTest.php
1174 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/GetRequestDataUnitTest.inc
1175 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/GetRequestDataUnitTest.php
1176 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/ReturnFunctionValueUnitTest.inc
1177 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/ReturnFunctionValueUnitTest.php
1178 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Strings/JoinStringsUnitTest.js
1179 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Strings/JoinStringsUnitTest.php
1180 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.inc
1181 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php
1182 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc
1183 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php
1184 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.inc
1185 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.php
1186 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FunctionCommentUnitTest.inc
1187 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FunctionCommentUnitTest.php
1188 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/InlineCommentUnitTest.inc
1189 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/InlineCommentUnitTest.php
1190 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/ControlSignatureUnitTest.inc
1191 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/ControlSignatureUnitTest.php
1192 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/MultiLineConditionUnitTest.inc
1193 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/MultiLineConditionUnitTest.php
1194 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Files/IncludingFileUnitTest.inc
1195 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Files/IncludingFileUnitTest.php
1196 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Formatting/MultiLineAssignmentUnitTest.inc
1197 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Formatting/MultiLineAssignmentUnitTest.php
1198 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionCallSignatureUnitTest.inc
1199 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionCallSignatureUnitTest.php
1200 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.inc
1201 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.php
1202 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.inc
1203 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.php
1204 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc
1205 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php
1206 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc
1207 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php
1208 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidVariableNameUnitTest.inc
1209 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidVariableNameUnitTest.php
1210 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ObjectOperatorIndentUnitTest.inc
1211 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ObjectOperatorIndentUnitTest.php
1212 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc
1213 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.php
1214 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeIndentUnitTest.inc
1215 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeIndentUnitTest.php
1216 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.inc
1217 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.php
1218 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc
1219 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.2.inc
1220 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.3.inc
1221 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.4.inc
1222 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.php
1223 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Methods/CamelCapsMethodNameUnitTest.inc
1224 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Methods/CamelCapsMethodNameUnitTest.php
1225 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.inc
1226 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.php
1227 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/PropertyDeclarationUnitTest.inc
1228 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/PropertyDeclarationUnitTest.php
1229 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc
1230 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ControlStructureSpacingUnitTest.php
1231 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ElseIfDeclarationUnitTest.inc
1232 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ElseIfDeclarationUnitTest.php
1233 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/SwitchDeclarationUnitTest.inc
1234 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/SwitchDeclarationUnitTest.php
1235 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.1.inc
1236 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.2.inc
1237 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.3.inc
1238 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.4.inc
1239 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.5.inc
1240 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.php
1241 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/FunctionCallSignatureUnitTest.inc
1242 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/FunctionCallSignatureUnitTest.php
1243 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc
1244 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php
1245 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc
1246 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.php
1247 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc
1248 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.2.inc
1249 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.3.inc
1250 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.php
1251 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayBracketSpacingUnitTest.inc
1252 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayBracketSpacingUnitTest.php
1253 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.inc
1254 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php
1255 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionClosingBraceSpaceUnitTest.css
1256 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionClosingBraceSpaceUnitTest.php
1257 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionNameSpacingUnitTest.css
1258 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionNameSpacingUnitTest.php
1259 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionOpeningBraceSpaceUnitTest.css
1260 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionOpeningBraceSpaceUnitTest.php
1261 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColonSpacingUnitTest.css
1262 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColonSpacingUnitTest.php
1263 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColourDefinitionUnitTest.css
1264 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColourDefinitionUnitTest.php
1265 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DisallowMultipleStyleDefinitionsUnitTest.css
1266 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DisallowMultipleStyleDefinitionsUnitTest.php
1267 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateClassDefinitionUnitTest.css
1268 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateClassDefinitionUnitTest.php
1269 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateStyleDefinitionUnitTest.css
1270 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateStyleDefinitionUnitTest.php
1271 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyClassDefinitionUnitTest.css
1272 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyClassDefinitionUnitTest.php
1273 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyStyleDefinitionUnitTest.css
1274 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyStyleDefinitionUnitTest.php
1275 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ForbiddenStylesUnitTest.css
1276 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ForbiddenStylesUnitTest.php
1277 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/IndentationUnitTest.css
1278 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/IndentationUnitTest.php
1279 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/LowercaseStyleDefinitionUnitTest.css
1280 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/LowercaseStyleDefinitionUnitTest.php
1281 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/MissingColonUnitTest.css
1282 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/MissingColonUnitTest.php
1283 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/NamedColoursUnitTest.css
1284 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/NamedColoursUnitTest.php
1285 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/OpacityUnitTest.css
1286 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/OpacityUnitTest.php
1287 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/SemicolonSpacingUnitTest.css
1288 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/SemicolonSpacingUnitTest.php
1289 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.css
1290 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.php
1291 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassDeclarationUnitTest.inc
1292 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassDeclarationUnitTest.php
1293 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc
1294 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php
1295 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/DuplicatePropertyUnitTest.js
1296 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/DuplicatePropertyUnitTest.php
1297 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc
1298 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php
1299 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.inc
1300 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.php
1301 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc
1302 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php
1303 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CodeAnalysis/EmptyStatementUnitTest.inc
1304 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CodeAnalysis/EmptyStatementUnitTest.php
1305 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc
1306 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.php
1307 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClassCommentUnitTest.inc
1308 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClassCommentUnitTest.php
1309 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.inc
1310 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.php
1311 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/DocCommentAlignmentUnitTest.inc
1312 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/DocCommentAlignmentUnitTest.php
1313 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/EmptyCatchCommentUnitTest.inc
1314 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/EmptyCatchCommentUnitTest.php
1315 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.inc
1316 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.js
1317 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php
1318 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentThrowTagUnitTest.inc
1319 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentThrowTagUnitTest.php
1320 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentUnitTest.inc
1321 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentUnitTest.php
1322 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc
1323 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.js
1324 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.php
1325 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.inc
1326 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.js
1327 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.php
1328 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc
1329 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.js
1330 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.php
1331 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/VariableCommentUnitTest.inc
1332 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/VariableCommentUnitTest.php
1333 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.inc
1334 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.js
1335 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.php
1336 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ElseIfDeclarationUnitTest.inc
1337 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ElseIfDeclarationUnitTest.php
1338 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForEachLoopDeclarationUnitTest.inc
1339 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForEachLoopDeclarationUnitTest.php
1340 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.inc
1341 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.js
1342 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.php
1343 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/InlineIfDeclarationUnitTest.inc
1344 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/InlineIfDeclarationUnitTest.php
1345 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/LowercaseDeclarationUnitTest.inc
1346 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/LowercaseDeclarationUnitTest.php
1347 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.inc
1348 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.js
1349 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.php
1350 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JSLintUnitTest.js
1351 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JSLintUnitTest.php
1352 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JavaScriptLintUnitTest.js
1353 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JavaScriptLintUnitTest.php
1354 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.1.inc
1355 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.2.inc
1356 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.3.inc
1357 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.4.inc
1358 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.php
1359 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.inc
1360 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.js
1361 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.php
1362 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationArgumentSpacingUnitTest.inc
1363 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationArgumentSpacingUnitTest.php
1364 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.inc
1365 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.php
1366 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDuplicateArgumentUnitTest.inc
1367 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDuplicateArgumentUnitTest.php
1368 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/GlobalFunctionUnitTest.inc
1369 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/GlobalFunctionUnitTest.php
1370 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/LowercaseFunctionKeywordsUnitTest.inc
1371 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/LowercaseFunctionKeywordsUnitTest.php
1372 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.inc
1373 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.php
1374 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.inc
1375 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.js
1376 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.php
1377 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidFunctionNameUnitTest.inc
1378 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidFunctionNameUnitTest.php
1379 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc
1380 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php
1381 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/DisallowObjectStringIndexUnitTest.js
1382 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/DisallowObjectStringIndexUnitTest.php
1383 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.inc
1384 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.php
1385 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectMemberCommaUnitTest.js
1386 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectMemberCommaUnitTest.php
1387 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.inc
1388 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.js
1389 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.php
1390 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/IncrementDecrementUsageUnitTest.inc
1391 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/IncrementDecrementUsageUnitTest.php
1392 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ValidLogicalOperatorsUnitTest.inc
1393 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ValidLogicalOperatorsUnitTest.php
1394 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.css
1395 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.inc
1396 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.php
1397 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowBooleanStatementUnitTest.inc
1398 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowBooleanStatementUnitTest.php
1399 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowComparisonAssignmentUnitTest.inc
1400 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowComparisonAssignmentUnitTest.php
1401 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.inc
1402 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.js
1403 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.php
1404 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc
1405 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php
1406 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowObEndFlushUnitTest.inc
1407 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowObEndFlushUnitTest.php
1408 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.inc
1409 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.js
1410 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.php
1411 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DiscouragedFunctionsUnitTest.inc
1412 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DiscouragedFunctionsUnitTest.php
1413 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.inc
1414 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.php
1415 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EvalUnitTest.inc
1416 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EvalUnitTest.php
1417 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/ForbiddenFunctionsUnitTest.inc
1418 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/ForbiddenFunctionsUnitTest.php
1419 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/GlobalKeywordUnitTest.inc
1420 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/GlobalKeywordUnitTest.php
1421 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/HeredocUnitTest.inc
1422 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/HeredocUnitTest.php
1423 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/InnerFunctionsUnitTest.inc
1424 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/InnerFunctionsUnitTest.php
1425 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/LowercasePHPFunctionsUnitTest.inc
1426 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/LowercasePHPFunctionsUnitTest.php
1427 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.inc
1428 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php
1429 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.inc
1430 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.php
1431 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc
1432 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php
1433 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc
1434 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php
1435 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/ConcatenationSpacingUnitTest.inc
1436 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/ConcatenationSpacingUnitTest.php
1437 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/DoubleQuoteUsageUnitTest.inc
1438 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/DoubleQuoteUsageUnitTest.php
1439 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/EchoedStringsUnitTest.inc
1440 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/EchoedStringsUnitTest.php
1441 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/CastSpacingUnitTest.inc
1442 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/CastSpacingUnitTest.php
1443 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc
1444 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.js
1445 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.php
1446 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.inc
1447 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.js
1448 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.php
1449 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.inc
1450 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.js
1451 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.php
1452 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionSpacingUnitTest.inc
1453 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionSpacingUnitTest.php
1454 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.inc
1455 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.php
1456 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.inc
1457 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.js
1458 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.php
1459 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc
1460 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php
1461 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ObjectOperatorSpacingUnitTest.inc
1462 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ObjectOperatorSpacingUnitTest.php
1463 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.inc
1464 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js
1465 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php
1466 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/PropertyLabelSpacingUnitTest.js
1467 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/PropertyLabelSpacingUnitTest.php
1468 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc
1469 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeClosingBraceUnitTest.php
1470 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.inc
1471 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.php
1472 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc
1473 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.js
1474 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.php
1475 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.1.css
1476 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.1.js
1477 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.2.css
1478 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.2.js
1479 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.3.css
1480 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.3.js
1481 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.inc
1482 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.php
1483 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Debug/CodeAnalyzerUnitTest.inc
1484 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Debug/CodeAnalyzerUnitTest.php
1485 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Files/ClosingTagUnitTest.inc
1486 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Files/ClosingTagUnitTest.php
1487 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc
1488 php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php
1489 php5/usr/share/php/test/PHP_CodeSniffer/TestSuite.php
1490 t/00-report-prereqs.dd
1491 t/00-report-prereqs.t
631492 t/Basic.t
641493 t/Conf.t
651494 t/Zglob.t
691498 t/author-Plugin-JSHint.t
701499 t/author-Plugin-JSLint.t
711500 t/author-Plugin-MasonTidy.t
1501 t/author-Plugin-PHPCodeSniffer.t
721502 t/author-Plugin-PerlCritic.t
731503 t/author-Plugin-PerlTidy.t
1504 t/author-Plugin-PerlTidySweet.t
741505 t/author-Plugin-PodChecker.t
751506 t/author-Plugin-PodSpell.t
761507 t/author-Plugin-PodTidy.t
771508 t/author-Plugin-SortLines.t
781509 t/author-Util.t
1510 t/author-mojibake.t
1511 t/author-no-tabs.t
1512 t/author-pod-spell.t
1513 t/author-pod-syntax.t
1514 t/author-self-tidyall.t
1515 t/author-test-version.t
791516 t/author-tidy-and-critic.t
80 xt/tidyall.t
1517 t/lib/Code/TidyAll/Test/Class.pm
1518 t/lib/Code/TidyAll/Test/Plugin/AToZ.pm
1519 t/lib/Code/TidyAll/Test/Plugin/AlwaysPhonetic.pm
1520 t/lib/Code/TidyAll/Test/Plugin/CheckUpper.pm
1521 t/lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm
1522 t/lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm
1523 t/lib/Code/TidyAll/Test/Plugin/UpperText.pm
1524 t/lib/Test/Code/TidyAll/Basic.pm
1525 t/lib/Test/Code/TidyAll/Conf.pm
1526 t/lib/Test/Code/TidyAll/Git.pm
1527 t/lib/Test/Code/TidyAll/Plugin.pm
1528 t/lib/Test/Code/TidyAll/Plugin/CSSUnminifier.pm
1529 t/lib/Test/Code/TidyAll/Plugin/JSBeautify.pm
1530 t/lib/Test/Code/TidyAll/Plugin/JSHint.pm
1531 t/lib/Test/Code/TidyAll/Plugin/JSLint.pm
1532 t/lib/Test/Code/TidyAll/Plugin/MasonTidy.pm
1533 t/lib/Test/Code/TidyAll/Plugin/PHPCodeSniffer.pm
1534 t/lib/Test/Code/TidyAll/Plugin/PerlCritic.pm
1535 t/lib/Test/Code/TidyAll/Plugin/PerlTidy.pm
1536 t/lib/Test/Code/TidyAll/Plugin/PerlTidySweet.pm
1537 t/lib/Test/Code/TidyAll/Plugin/PodChecker.pm
1538 t/lib/Test/Code/TidyAll/Plugin/PodSpell.pm
1539 t/lib/Test/Code/TidyAll/Plugin/PodTidy.pm
1540 t/lib/Test/Code/TidyAll/Plugin/SortLines.pm
1541 t/lib/Test/Code/TidyAll/SVN.pm
1542 t/lib/Test/Code/TidyAll/Util.pm
1543 t/lib/Test/Code/TidyAll/Zglob.pm
1544 t/release-cpan-changes.t
1545 tidyall.ini
1546 weaver.ini
00 {
1 "abstract" : "Tidy and validate code in many ways at once",
1 "abstract" : "Engine for tidyall, your all-in-one code tidier and validator",
22 "author" : [
3 "Jonathan Swartz <swartz@pobox.com>"
3 "Jonathan Swartz <swartz@pobox.com>",
4 "Dave Rolsky <autarch@urth.org>"
45 ],
56 "dynamic_config" : 0,
6 "generated_by" : "Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.131560",
7 "generated_by" : "Dist::Zilla version 5.041, CPAN::Meta::Converter version 2.150005",
78 "license" : [
89 "perl_5"
910 ],
1011 "meta-spec" : {
1112 "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
12 "version" : "2"
13 "version" : 2
1314 },
1415 "name" : "Code-TidyAll",
1516 "no_index" : {
16 "directory" : [
17 "lib/Code/TidyAll/t",
18 "lib/Code/TidyAll/Test"
19 ],
2017 "file" : [
2118 "lib/Code/TidyAll/Util.pm"
2219 ]
2421 "prereqs" : {
2522 "configure" : {
2623 "requires" : {
27 "ExtUtils::MakeMaker" : "6.30"
24 "ExtUtils::MakeMaker" : "0"
25 }
26 },
27 "develop" : {
28 "requires" : {
29 "CHI" : "0",
30 "Code::TidyAll" : "0",
31 "Code::TidyAll::Plugin::Perl::AlignMooseAttributes" : "0",
32 "JSON::MaybeXS" : "0",
33 "Mason::Tidy" : "0",
34 "Mason::Tidy::App" : "0",
35 "Perl::Critic" : "1.123",
36 "Perl::Critic::Policy::Moose::RequireMakeImmutable" : "0",
37 "Perl::Tidy" : "20150815",
38 "Perl::Tidy::Sweetened" : "1.00",
39 "Pod::Checker" : "0",
40 "Pod::Spell" : "0",
41 "Pod::Tidy" : "0",
42 "SVN::Look" : "0",
43 "Test::CPAN::Changes" : "0.19",
44 "Test::Mojibake" : "0",
45 "Test::More" : "0.88",
46 "Test::NoTabs" : "0",
47 "Test::Pod" : "1.41",
48 "Test::Spelling" : "0.12",
49 "Test::Version" : "1"
2850 }
2951 },
3052 "runtime" : {
3153 "requires" : {
32 "Capture::Tiny" : "0.12",
54 "Capture::Tiny" : "0",
3355 "Config::INI::Reader" : "0",
56 "Cwd" : "0",
57 "Data::Dumper" : "0",
3458 "Date::Format" : "0",
35 "Digest::SHA1" : "0",
59 "Digest::SHA" : "0",
60 "Exporter" : "0",
3661 "File::Basename" : "0",
3762 "File::Find" : "0",
3863 "File::Path" : "0",
64 "File::Slurp::Tiny" : "0",
65 "File::Spec::Functions" : "0",
3966 "File::Temp" : "0",
67 "File::Which" : "0",
4068 "File::Zglob" : "0",
4169 "Getopt::Long" : "0",
4270 "Guard" : "0",
4371 "IPC::Run3" : "0",
44 "IPC::System::Simple" : "0.15",
72 "IPC::System::Simple" : "0",
4573 "List::MoreUtils" : "0",
4674 "Log::Any" : "0",
47 "Moo" : "0.0091010",
75 "Moo" : "0",
76 "Moo::Role" : "0",
4877 "Scalar::Util" : "0",
78 "Test::Builder" : "0",
79 "Text::Diff" : "0",
80 "Text::Diff::Table" : "0",
4981 "Text::ParseWords" : "0",
5082 "Time::Duration::Parse" : "0",
51 "Try::Tiny" : "0"
83 "Try::Tiny" : "0",
84 "base" : "0",
85 "constant" : "0",
86 "strict" : "0",
87 "vars" : "0",
88 "warnings" : "0"
5289 }
5390 },
5491 "test" : {
92 "recommends" : {
93 "CPAN::Meta" : "2.120900"
94 },
5595 "requires" : {
56 "Test::Class::Most" : "0"
96 "Encode" : "0",
97 "ExtUtils::MakeMaker" : "0",
98 "File::Spec" : "0",
99 "Test::Class::Most" : "0",
100 "Test::Differences" : "0",
101 "Test::More" : "0.96",
102 "Test::Warnings" : "0",
103 "autodie" : "0",
104 "lib" : "0"
57105 }
106 }
107 },
108 "provides" : {
109 "Code::TidyAll" : {
110 "file" : "lib/Code/TidyAll.pm",
111 "version" : "0.32"
112 },
113 "Code::TidyAll::Cache" : {
114 "file" : "lib/Code/TidyAll/Cache.pm",
115 "version" : "0.32"
116 },
117 "Code::TidyAll::CacheModel" : {
118 "file" : "lib/Code/TidyAll/CacheModel.pm",
119 "version" : "0.32"
120 },
121 "Code::TidyAll::CacheModel::Shared" : {
122 "file" : "lib/Code/TidyAll/CacheModel/Shared.pm",
123 "version" : "0.32"
124 },
125 "Code::TidyAll::Config::INI::Reader" : {
126 "file" : "lib/Code/TidyAll/Config/INI/Reader.pm",
127 "version" : "0.32"
128 },
129 "Code::TidyAll::Git::Precommit" : {
130 "file" : "lib/Code/TidyAll/Git/Precommit.pm",
131 "version" : "0.32"
132 },
133 "Code::TidyAll::Git::Prereceive" : {
134 "file" : "lib/Code/TidyAll/Git/Prereceive.pm",
135 "version" : "0.32"
136 },
137 "Code::TidyAll::Git::Util" : {
138 "file" : "lib/Code/TidyAll/Git/Util.pm",
139 "version" : "0.32"
140 },
141 "Code::TidyAll::Plugin" : {
142 "file" : "lib/Code/TidyAll/Plugin.pm",
143 "version" : "0.32"
144 },
145 "Code::TidyAll::Plugin::CSSUnminifier" : {
146 "file" : "lib/Code/TidyAll/Plugin/CSSUnminifier.pm",
147 "version" : "0.32"
148 },
149 "Code::TidyAll::Plugin::DiffOnTidyError" : {
150 "file" : "lib/Code/TidyAll/Plugin/DiffOnTidyError.pm",
151 "version" : "0.32"
152 },
153 "Code::TidyAll::Plugin::JSBeautify" : {
154 "file" : "lib/Code/TidyAll/Plugin/JSBeautify.pm",
155 "version" : "0.32"
156 },
157 "Code::TidyAll::Plugin::JSHint" : {
158 "file" : "lib/Code/TidyAll/Plugin/JSHint.pm",
159 "version" : "0.32"
160 },
161 "Code::TidyAll::Plugin::JSLint" : {
162 "file" : "lib/Code/TidyAll/Plugin/JSLint.pm",
163 "version" : "0.32"
164 },
165 "Code::TidyAll::Plugin::JSON" : {
166 "file" : "lib/Code/TidyAll/Plugin/JSON.pm",
167 "version" : "0.32"
168 },
169 "Code::TidyAll::Plugin::MasonTidy" : {
170 "file" : "lib/Code/TidyAll/Plugin/MasonTidy.pm",
171 "version" : "0.32"
172 },
173 "Code::TidyAll::Plugin::PHPCodeSniffer" : {
174 "file" : "lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm",
175 "version" : "0.32"
176 },
177 "Code::TidyAll::Plugin::PerlCritic" : {
178 "file" : "lib/Code/TidyAll/Plugin/PerlCritic.pm",
179 "version" : "0.32"
180 },
181 "Code::TidyAll::Plugin::PerlTidy" : {
182 "file" : "lib/Code/TidyAll/Plugin/PerlTidy.pm",
183 "version" : "0.32"
184 },
185 "Code::TidyAll::Plugin::PerlTidySweet" : {
186 "file" : "lib/Code/TidyAll/Plugin/PerlTidySweet.pm",
187 "version" : "0.32"
188 },
189 "Code::TidyAll::Plugin::PodChecker" : {
190 "file" : "lib/Code/TidyAll/Plugin/PodChecker.pm",
191 "version" : "0.32"
192 },
193 "Code::TidyAll::Plugin::PodSpell" : {
194 "file" : "lib/Code/TidyAll/Plugin/PodSpell.pm",
195 "version" : "0.32"
196 },
197 "Code::TidyAll::Plugin::PodTidy" : {
198 "file" : "lib/Code/TidyAll/Plugin/PodTidy.pm",
199 "version" : "0.32"
200 },
201 "Code::TidyAll::Plugin::SortLines" : {
202 "file" : "lib/Code/TidyAll/Plugin/SortLines.pm",
203 "version" : "0.32"
204 },
205 "Code::TidyAll::Result" : {
206 "file" : "lib/Code/TidyAll/Result.pm",
207 "version" : "0.32"
208 },
209 "Code::TidyAll::Role::Tempdir" : {
210 "file" : "lib/Code/TidyAll/Role/Tempdir.pm",
211 "version" : "0.32"
212 },
213 "Code::TidyAll::SVN::Precommit" : {
214 "file" : "lib/Code/TidyAll/SVN/Precommit.pm",
215 "version" : "0.32"
216 },
217 "Code::TidyAll::SVN::Util" : {
218 "file" : "lib/Code/TidyAll/SVN/Util.pm",
219 "version" : "0.32"
220 },
221 "Code::TidyAll::Util::Zglob" : {
222 "file" : "lib/Code/TidyAll/Util/Zglob.pm",
223 "version" : "0.32"
224 },
225 "Test::Code::TidyAll" : {
226 "file" : "lib/Test/Code/TidyAll.pm",
227 "version" : "0.32"
58228 }
59229 },
60230 "release_status" : "stable",
61231 "resources" : {
62232 "bugtracker" : {
63233 "mailto" : "bug-code-tidyall@rt.cpan.org",
64 "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=Code-TidyAll"
65 },
234 "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Code-TidyAll"
235 },
236 "homepage" : "http://metacpan.org/release/Code-TidyAll",
66237 "repository" : {
67238 "type" : "git",
68 "url" : "git://github.com/jonswar/perl-code-tidyall.git",
69 "web" : "https://github.com/jonswar/perl-code-tidyall"
239 "url" : "git://github.com/houseabsolute/perl-code-tidyall.git",
240 "web" : "https://github.com/houseabsolute/perl-code-tidyall"
70241 }
71242 },
72 "version" : "0.20"
243 "version" : "0.32",
244 "x_Dist_Zilla" : {
245 "perl" : {
246 "version" : "5.022000"
247 },
248 "plugins" : [
249 {
250 "class" : "Dist::Zilla::Plugin::Authority",
251 "name" : "@DROLSKY/Authority",
252 "version" : "1.009"
253 },
254 {
255 "class" : "Dist::Zilla::Plugin::AutoPrereqs",
256 "name" : "@DROLSKY/AutoPrereqs",
257 "version" : "5.041"
258 },
259 {
260 "class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
261 "name" : "@DROLSKY/CopyFilesFromBuild",
262 "version" : "0.151680"
263 },
264 {
265 "class" : "Dist::Zilla::Plugin::Git::GatherDir",
266 "config" : {
267 "Dist::Zilla::Plugin::GatherDir" : {
268 "exclude_filename" : [
269 "Build.PL",
270 "LICENSE",
271 "Makefile.PL",
272 "README.md",
273 "cpanfile"
274 ],
275 "exclude_match" : [],
276 "follow_symlinks" : 0,
277 "include_dotfiles" : 0,
278 "prefix" : "",
279 "prune_directory" : [],
280 "root" : "."
281 },
282 "Dist::Zilla::Plugin::Git::GatherDir" : {
283 "include_untracked" : 0
284 }
285 },
286 "name" : "@DROLSKY/Git::GatherDir",
287 "version" : "2.036"
288 },
289 {
290 "class" : "Dist::Zilla::Plugin::GitHub::Meta",
291 "name" : "@DROLSKY/GitHub::Meta",
292 "version" : "0.41"
293 },
294 {
295 "class" : "Dist::Zilla::Plugin::GitHub::Update",
296 "config" : {
297 "Dist::Zilla::Plugin::GitHub::Update" : {
298 "metacpan" : 1
299 }
300 },
301 "name" : "@DROLSKY/GitHub::Update",
302 "version" : "0.41"
303 },
304 {
305 "class" : "Dist::Zilla::Plugin::MetaResources",
306 "name" : "@DROLSKY/MetaResources",
307 "version" : "5.041"
308 },
309 {
310 "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
311 "config" : {
312 "Dist::Zilla::Plugin::MetaProvides::Package" : {
313 "finder_objects" : [
314 {
315 "class" : "Dist::Zilla::Plugin::FinderCode",
316 "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
317 "version" : "5.041"
318 }
319 ]
320 },
321 "Dist::Zilla::Role::MetaProvider::Provider" : {
322 "inherit_missing" : "1",
323 "inherit_version" : "1",
324 "meta_noindex" : "1"
325 }
326 },
327 "name" : "@DROLSKY/MetaProvides::Package",
328 "version" : "2.003001"
329 },
330 {
331 "class" : "Dist::Zilla::Plugin::NextRelease",
332 "name" : "@DROLSKY/NextRelease",
333 "version" : "5.041"
334 },
335 {
336 "class" : "Dist::Zilla::Plugin::Prereqs",
337 "config" : {
338 "Dist::Zilla::Plugin::Prereqs" : {
339 "phase" : "test",
340 "type" : "requires"
341 }
342 },
343 "name" : "@DROLSKY/Test::More with subtest()",
344 "version" : "5.041"
345 },
346 {
347 "class" : "Dist::Zilla::Plugin::Prereqs",
348 "config" : {
349 "Dist::Zilla::Plugin::Prereqs" : {
350 "phase" : "develop",
351 "type" : "requires"
352 }
353 },
354 "name" : "@DROLSKY/Modules for use with tidyall",
355 "version" : "5.041"
356 },
357 {
358 "class" : "Dist::Zilla::Plugin::PromptIfStale",
359 "config" : {
360 "Dist::Zilla::Plugin::PromptIfStale" : {
361 "check_all_plugins" : 1,
362 "check_all_prereqs" : 1,
363 "modules" : [],
364 "phase" : "release",
365 "skip" : [
366 "Dist::Zilla::Plugin::DROLSKY::Contributors",
367 "Dist::Zilla::Plugin::DROLSKY::License",
368 "Dist::Zilla::Plugin::DROLSKY::TidyAll",
369 "Dist::Zilla::Plugin::DROLSKY::VersionProvider"
370 ]
371 }
372 },
373 "name" : "@DROLSKY/PromptIfStale",
374 "version" : "0.047"
375 },
376 {
377 "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
378 "config" : {
379 "Dist::Zilla::Role::FileWatcher" : {
380 "version" : "0.006"
381 }
382 },
383 "name" : "@DROLSKY/README.md in build",
384 "version" : "0.150250"
385 },
386 {
387 "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
388 "config" : {
389 "Dist::Zilla::Role::FileWatcher" : {
390 "version" : "0.006"
391 }
392 },
393 "name" : "@DROLSKY/README.md in root",
394 "version" : "0.150250"
395 },
396 {
397 "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
398 "config" : {
399 "Dist::Zilla::Plugin::Test::PodSpelling" : {
400 "directories" : [],
401 "spell_cmd" : "",
402 "stopwords" : [
403 "API",
404 "CPAN",
405 "DROLSKY",
406 "DROLSKY's",
407 "JSON",
408 "JavaScript",
409 "Misc",
410 "PHP",
411 "PREREQS",
412 "PayPal",
413 "Raggett",
414 "Rolsky",
415 "Rolsky's",
416 "STDERR",
417 "STDIN",
418 "STDOUT",
419 "Simakov",
420 "TIDYALL",
421 "Thalhammer",
422 "Vim",
423 "argv",
424 "ascii",
425 "atomicity",
426 "cmd",
427 "conf",
428 "config",
429 "cssunminifier",
430 "ctrl",
431 "dir",
432 "filename",
433 "iff",
434 "ispell",
435 "js",
436 "jsbeautify",
437 "jshint",
438 "jslint",
439 "lib",
440 "listref",
441 "masontidy",
442 "noll",
443 "npm",
444 "ok",
445 "ops",
446 "params",
447 "pathname",
448 "perlcritic",
449 "perlcriticrc",
450 "perltidy",
451 "phpcs",
452 "plugins",
453 "podspell",
454 "podtidy",
455 "pre",
456 "prereqs",
457 "repo",
458 "repos",
459 "ro",
460 "runtime",
461 "rw",
462 "shebang",
463 "sourceforge",
464 "svn",
465 "tidiers",
466 "tidyall",
467 "tidyall'd",
468 "timestamped",
469 "ttl",
470 "txn",
471 "validator",
472 "validators"
473 ],
474 "wordlist" : "Pod::Wordlist"
475 }
476 },
477 "name" : "@DROLSKY/Test::PodSpelling",
478 "version" : "2.007000"
479 },
480 {
481 "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
482 "name" : "@DROLSKY/Test::ReportPrereqs",
483 "version" : "0.021"
484 },
485 {
486 "class" : "Dist::Zilla::Plugin::Test::Version",
487 "name" : "@DROLSKY/Test::Version",
488 "version" : "1.05"
489 },
490 {
491 "class" : "Dist::Zilla::Plugin::ManifestSkip",
492 "name" : "@DROLSKY/ManifestSkip",
493 "version" : "5.041"
494 },
495 {
496 "class" : "Dist::Zilla::Plugin::MetaYAML",
497 "name" : "@DROLSKY/MetaYAML",
498 "version" : "5.041"
499 },
500 {
501 "class" : "Dist::Zilla::Plugin::License",
502 "name" : "@DROLSKY/License",
503 "version" : "5.041"
504 },
505 {
506 "class" : "Dist::Zilla::Plugin::ExtraTests",
507 "name" : "@DROLSKY/ExtraTests",
508 "version" : "5.041"
509 },
510 {
511 "class" : "Dist::Zilla::Plugin::ExecDir",
512 "name" : "@DROLSKY/ExecDir",
513 "version" : "5.041"
514 },
515 {
516 "class" : "Dist::Zilla::Plugin::ShareDir",
517 "name" : "@DROLSKY/ShareDir",
518 "version" : "5.041"
519 },
520 {
521 "class" : "Dist::Zilla::Plugin::Manifest",
522 "name" : "@DROLSKY/Manifest",
523 "version" : "5.041"
524 },
525 {
526 "class" : "Dist::Zilla::Plugin::CheckVersionIncrement",
527 "name" : "@DROLSKY/CheckVersionIncrement",
528 "version" : "0.121750"
529 },
530 {
531 "class" : "Dist::Zilla::Plugin::TestRelease",
532 "name" : "@DROLSKY/TestRelease",
533 "version" : "5.041"
534 },
535 {
536 "class" : "Dist::Zilla::Plugin::ConfirmRelease",
537 "name" : "@DROLSKY/ConfirmRelease",
538 "version" : "5.041"
539 },
540 {
541 "class" : "Dist::Zilla::Plugin::UploadToCPAN",
542 "name" : "@DROLSKY/UploadToCPAN",
543 "version" : "5.041"
544 },
545 {
546 "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
547 "name" : "@DROLSKY/CheckPrereqsIndexed",
548 "version" : "0.017"
549 },
550 {
551 "class" : "Dist::Zilla::Plugin::CPANFile",
552 "name" : "@DROLSKY/CPANFile",
553 "version" : "5.041"
554 },
555 {
556 "class" : "Dist::Zilla::Plugin::DROLSKY::Contributors",
557 "name" : "@DROLSKY/DROLSKY::Contributors",
558 "version" : "0.38"
559 },
560 {
561 "class" : "Dist::Zilla::Plugin::DROLSKY::License",
562 "name" : "@DROLSKY/DROLSKY::License",
563 "version" : "0.38"
564 },
565 {
566 "class" : "Dist::Zilla::Plugin::DROLSKY::VersionProvider",
567 "name" : "@DROLSKY/DROLSKY::VersionProvider",
568 "version" : "0.38"
569 },
570 {
571 "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
572 "config" : {
573 "Dist::Zilla::Role::Git::Repo" : {
574 "repo_root" : "."
575 }
576 },
577 "name" : "@DROLSKY/Git::CheckFor::CorrectBranch",
578 "version" : "0.013"
579 },
580 {
581 "class" : "Dist::Zilla::Plugin::Git::Contributors",
582 "config" : {
583 "Dist::Zilla::Plugin::Git::Contributors" : {
584 "include_authors" : 0,
585 "include_releaser" : 1,
586 "order_by" : "name",
587 "paths" : [
588 "."
589 ]
590 }
591 },
592 "name" : "@DROLSKY/Git::Contributors",
593 "version" : "0.015"
594 },
595 {
596 "class" : "Dist::Zilla::Plugin::InstallGuide",
597 "name" : "@DROLSKY/InstallGuide",
598 "version" : "1.200006"
599 },
600 {
601 "class" : "Dist::Zilla::Plugin::Meta::Contributors",
602 "name" : "@DROLSKY/Meta::Contributors",
603 "version" : "0.002"
604 },
605 {
606 "class" : "Dist::Zilla::Plugin::MetaConfig",
607 "name" : "@DROLSKY/MetaConfig",
608 "version" : "5.041"
609 },
610 {
611 "class" : "Dist::Zilla::Plugin::MetaJSON",
612 "name" : "@DROLSKY/MetaJSON",
613 "version" : "5.041"
614 },
615 {
616 "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
617 "config" : {
618 "Dist::Zilla::Plugin::PodWeaver" : {
619 "finder" : [
620 ":InstallModules",
621 ":ExecFiles"
622 ],
623 "plugins" : [
624 {
625 "class" : "Pod::Weaver::Plugin::EnsurePod5",
626 "name" : "@CorePrep/EnsurePod5",
627 "version" : "4.012"
628 },
629 {
630 "class" : "Pod::Weaver::Plugin::H1Nester",
631 "name" : "@CorePrep/H1Nester",
632 "version" : "4.012"
633 },
634 {
635 "class" : "Pod::Weaver::Section::Name",
636 "name" : "Name",
637 "version" : "4.012"
638 },
639 {
640 "class" : "Pod::Weaver::Section::Version",
641 "name" : "Version",
642 "version" : "4.012"
643 },
644 {
645 "class" : "Pod::Weaver::Section::Generic",
646 "name" : "SYNOPSIS",
647 "version" : "4.012"
648 },
649 {
650 "class" : "Pod::Weaver::Section::Generic",
651 "name" : "DESCRIPTION",
652 "version" : "4.012"
653 },
654 {
655 "class" : "Pod::Weaver::Section::Leftovers",
656 "name" : "Leftovers",
657 "version" : "4.012"
658 },
659 {
660 "class" : "inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll",
661 "name" : "=inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll",
662 "version" : null
663 },
664 {
665 "class" : "Pod::Weaver::Section::Region",
666 "name" : "postlude",
667 "version" : "4.012"
668 },
669 {
670 "class" : "Pod::Weaver::Section::Authors",
671 "name" : "Authors",
672 "version" : "4.012"
673 },
674 {
675 "class" : "Pod::Weaver::Section::Contributors",
676 "name" : "Contributors",
677 "version" : "0.009"
678 },
679 {
680 "class" : "Pod::Weaver::Section::Legal",
681 "name" : "Legal",
682 "version" : "4.012"
683 }
684 ]
685 }
686 },
687 "name" : "@DROLSKY/SurgicalPodWeaver",
688 "version" : "0.0023"
689 },
690 {
691 "class" : "Dist::Zilla::Plugin::MojibakeTests",
692 "name" : "@DROLSKY/MojibakeTests",
693 "version" : "0.8"
694 },
695 {
696 "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
697 "name" : "@DROLSKY/PodSyntaxTests",
698 "version" : "5.041"
699 },
700 {
701 "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
702 "name" : "@DROLSKY/Test::CPAN::Changes",
703 "version" : "0.009"
704 },
705 {
706 "class" : "Dist::Zilla::Plugin::Test::NoTabs",
707 "config" : {
708 "Dist::Zilla::Plugin::Test::NoTabs" : {
709 "filename" : "xt/author/no-tabs.t",
710 "finder" : [
711 ":InstallModules",
712 ":ExecFiles",
713 ":TestFiles"
714 ]
715 }
716 },
717 "name" : "@DROLSKY/Test::NoTabs",
718 "version" : "0.15"
719 },
720 {
721 "class" : "Dist::Zilla::Plugin::Git::Check",
722 "config" : {
723 "Dist::Zilla::Plugin::Git::Check" : {
724 "untracked_files" : "die"
725 },
726 "Dist::Zilla::Role::Git::DirtyFiles" : {
727 "allow_dirty" : [
728 "Build.PL",
729 "CONTRIBUTING.md",
730 "Changes",
731 "LICENSE",
732 "Makefile.PL",
733 "README.md",
734 "cpanfile"
735 ],
736 "allow_dirty_match" : [],
737 "changelog" : "Changes"
738 },
739 "Dist::Zilla::Role::Git::Repo" : {
740 "repo_root" : "."
741 }
742 },
743 "name" : "@DROLSKY/Git::Check",
744 "version" : "2.036"
745 },
746 {
747 "class" : "Dist::Zilla::Plugin::Git::Commit",
748 "config" : {
749 "Dist::Zilla::Plugin::Git::Commit" : {
750 "add_files_in" : [],
751 "commit_msg" : "v%v%n%n%c"
752 },
753 "Dist::Zilla::Role::Git::DirtyFiles" : {
754 "allow_dirty" : [
755 "Build.PL",
756 "CONTRIBUTING.md",
757 "Changes",
758 "LICENSE",
759 "Makefile.PL",
760 "README.md",
761 "cpanfile"
762 ],
763 "allow_dirty_match" : [],
764 "changelog" : "Changes"
765 },
766 "Dist::Zilla::Role::Git::Repo" : {
767 "repo_root" : "."
768 },
769 "Dist::Zilla::Role::Git::StringFormatter" : {
770 "time_zone" : "local"
771 }
772 },
773 "name" : "@DROLSKY/commit generated files",
774 "version" : "2.036"
775 },
776 {
777 "class" : "Dist::Zilla::Plugin::Git::Tag",
778 "config" : {
779 "Dist::Zilla::Plugin::Git::Tag" : {
780 "branch" : null,
781 "changelog" : "Changes",
782 "signed" : 0,
783 "tag" : "v0.32",
784 "tag_format" : "v%v",
785 "tag_message" : "v%v"
786 },
787 "Dist::Zilla::Role::Git::Repo" : {
788 "repo_root" : "."
789 },
790 "Dist::Zilla::Role::Git::StringFormatter" : {
791 "time_zone" : "local"
792 }
793 },
794 "name" : "@DROLSKY/Git::Tag",
795 "version" : "2.036"
796 },
797 {
798 "class" : "Dist::Zilla::Plugin::Git::Push",
799 "config" : {
800 "Dist::Zilla::Plugin::Git::Push" : {
801 "push_to" : [
802 "origin"
803 ],
804 "remotes_must_exist" : 1
805 },
806 "Dist::Zilla::Role::Git::Repo" : {
807 "repo_root" : "."
808 }
809 },
810 "name" : "@DROLSKY/Git::Push",
811 "version" : "2.036"
812 },
813 {
814 "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease",
815 "config" : {
816 "Dist::Zilla::Plugin::BumpVersionAfterRelease" : {
817 "finders" : [
818 ":ExecFiles",
819 ":InstallModules"
820 ],
821 "global" : 0,
822 "munge_makefile_pl" : 1
823 }
824 },
825 "name" : "@DROLSKY/BumpVersionAfterRelease",
826 "version" : "0.012"
827 },
828 {
829 "class" : "Dist::Zilla::Plugin::Git::Commit",
830 "config" : {
831 "Dist::Zilla::Plugin::Git::Commit" : {
832 "add_files_in" : [],
833 "commit_msg" : "Bump version after release"
834 },
835 "Dist::Zilla::Role::Git::DirtyFiles" : {
836 "allow_dirty" : [
837 "Changes",
838 "dist.ini"
839 ],
840 "allow_dirty_match" : [
841 "(?^:.+)"
842 ],
843 "changelog" : "Changes"
844 },
845 "Dist::Zilla::Role::Git::Repo" : {
846 "repo_root" : "."
847 },
848 "Dist::Zilla::Role::Git::StringFormatter" : {
849 "time_zone" : "local"
850 }
851 },
852 "name" : "@DROLSKY/commit version bump",
853 "version" : "2.036"
854 },
855 {
856 "class" : "Dist::Zilla::Plugin::Git::Push",
857 "config" : {
858 "Dist::Zilla::Plugin::Git::Push" : {
859 "push_to" : [
860 "origin"
861 ],
862 "remotes_must_exist" : 1
863 },
864 "Dist::Zilla::Role::Git::Repo" : {
865 "repo_root" : "."
866 }
867 },
868 "name" : "@DROLSKY/push version bump",
869 "version" : "2.036"
870 },
871 {
872 "class" : "inc::MyMakeMaker",
873 "config" : {
874 "Dist::Zilla::Role::TestRunner" : {
875 "default_jobs" : 1
876 }
877 },
878 "name" : "=inc::MyMakeMaker",
879 "version" : null
880 },
881 {
882 "class" : "Dist::Zilla::Plugin::Prereqs",
883 "config" : {
884 "Dist::Zilla::Plugin::Prereqs" : {
885 "phase" : "develop",
886 "type" : "requires"
887 }
888 },
889 "name" : "DevelopRequires",
890 "version" : "5.041"
891 },
892 {
893 "class" : "Dist::Zilla::Plugin::MetaNoIndex",
894 "name" : "MetaNoIndex",
895 "version" : "5.041"
896 },
897 {
898 "class" : "Dist::Zilla::Plugin::TidyAll",
899 "name" : "TidyAll",
900 "version" : "0.04"
901 },
902 {
903 "class" : "Dist::Zilla::Plugin::FinderCode",
904 "name" : ":InstallModules",
905 "version" : "5.041"
906 },
907 {
908 "class" : "Dist::Zilla::Plugin::FinderCode",
909 "name" : ":IncModules",
910 "version" : "5.041"
911 },
912 {
913 "class" : "Dist::Zilla::Plugin::FinderCode",
914 "name" : ":TestFiles",
915 "version" : "5.041"
916 },
917 {
918 "class" : "Dist::Zilla::Plugin::FinderCode",
919 "name" : ":ExtraTestFiles",
920 "version" : "5.041"
921 },
922 {
923 "class" : "Dist::Zilla::Plugin::FinderCode",
924 "name" : ":ExecFiles",
925 "version" : "5.041"
926 },
927 {
928 "class" : "Dist::Zilla::Plugin::FinderCode",
929 "name" : ":PerlExecFiles",
930 "version" : "5.041"
931 },
932 {
933 "class" : "Dist::Zilla::Plugin::FinderCode",
934 "name" : ":ShareFiles",
935 "version" : "5.041"
936 },
937 {
938 "class" : "Dist::Zilla::Plugin::FinderCode",
939 "name" : ":MainModule",
940 "version" : "5.041"
941 },
942 {
943 "class" : "Dist::Zilla::Plugin::FinderCode",
944 "name" : ":AllFiles",
945 "version" : "5.041"
946 },
947 {
948 "class" : "Dist::Zilla::Plugin::FinderCode",
949 "name" : ":NoFiles",
950 "version" : "5.041"
951 },
952 {
953 "class" : "Dist::Zilla::Plugin::FinderCode",
954 "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
955 "version" : "5.041"
956 }
957 ],
958 "zilla" : {
959 "class" : "Dist::Zilla::Dist::Builder",
960 "config" : {
961 "is_trial" : "0"
962 },
963 "version" : "5.041"
964 }
965 },
966 "x_authority" : "cpan:DROLSKY",
967 "x_contributors" : [
968 "Andy Jack <andyjack@cpan.org>",
969 "George Hartzell <georgewh@gene.com>",
970 "Gregory Oschwald <goschwald@maxmind.com>",
971 "Joe Crotty <joe.crotty@returnpath.net>",
972 "Mark Fowler <mark@twoshortplanks.com>",
973 "Mark Grimes <mgrimes@cpan.org>",
974 "Olaf Alders <olaf@wundersolutions.com>",
975 "Pedro Melo <melo@simplicidade.org>",
976 "Sergey Romanov <sromanov-dev@yandex.ru>",
977 "timgimyee <tim.gim.yee@gmail.com>"
978 ]
73979 }
74980
00 ---
1 abstract: 'Tidy and validate code in many ways at once'
1 abstract: 'Engine for tidyall, your all-in-one code tidier and validator'
22 author:
33 - 'Jonathan Swartz <swartz@pobox.com>'
4 - 'Dave Rolsky <autarch@urth.org>'
45 build_requires:
5 Test::Class::Most: 0
6 Encode: '0'
7 ExtUtils::MakeMaker: '0'
8 File::Spec: '0'
9 Test::Class::Most: '0'
10 Test::Differences: '0'
11 Test::More: '0.96'
12 Test::Warnings: '0'
13 autodie: '0'
14 lib: '0'
615 configure_requires:
7 ExtUtils::MakeMaker: 6.30
16 ExtUtils::MakeMaker: '0'
817 dynamic_config: 0
9 generated_by: 'Dist::Zilla version 5.012, CPAN::Meta::Converter version 2.131560'
18 generated_by: 'Dist::Zilla version 5.041, CPAN::Meta::Converter version 2.150005'
1019 license: perl
1120 meta-spec:
1221 url: http://module-build.sourceforge.net/META-spec-v1.4.html
13 version: 1.4
22 version: '1.4'
1423 name: Code-TidyAll
1524 no_index:
16 directory:
17 - lib/Code/TidyAll/t
18 - lib/Code/TidyAll/Test
1925 file:
2026 - lib/Code/TidyAll/Util.pm
27 provides:
28 Code::TidyAll:
29 file: lib/Code/TidyAll.pm
30 version: '0.32'
31 Code::TidyAll::Cache:
32 file: lib/Code/TidyAll/Cache.pm
33 version: '0.32'
34 Code::TidyAll::CacheModel:
35 file: lib/Code/TidyAll/CacheModel.pm
36 version: '0.32'
37 Code::TidyAll::CacheModel::Shared:
38 file: lib/Code/TidyAll/CacheModel/Shared.pm
39 version: '0.32'
40 Code::TidyAll::Config::INI::Reader:
41 file: lib/Code/TidyAll/Config/INI/Reader.pm
42 version: '0.32'
43 Code::TidyAll::Git::Precommit:
44 file: lib/Code/TidyAll/Git/Precommit.pm
45 version: '0.32'
46 Code::TidyAll::Git::Prereceive:
47 file: lib/Code/TidyAll/Git/Prereceive.pm
48 version: '0.32'
49 Code::TidyAll::Git::Util:
50 file: lib/Code/TidyAll/Git/Util.pm
51 version: '0.32'
52 Code::TidyAll::Plugin:
53 file: lib/Code/TidyAll/Plugin.pm
54 version: '0.32'
55 Code::TidyAll::Plugin::CSSUnminifier:
56 file: lib/Code/TidyAll/Plugin/CSSUnminifier.pm
57 version: '0.32'
58 Code::TidyAll::Plugin::DiffOnTidyError:
59 file: lib/Code/TidyAll/Plugin/DiffOnTidyError.pm
60 version: '0.32'
61 Code::TidyAll::Plugin::JSBeautify:
62 file: lib/Code/TidyAll/Plugin/JSBeautify.pm
63 version: '0.32'
64 Code::TidyAll::Plugin::JSHint:
65 file: lib/Code/TidyAll/Plugin/JSHint.pm
66 version: '0.32'
67 Code::TidyAll::Plugin::JSLint:
68 file: lib/Code/TidyAll/Plugin/JSLint.pm
69 version: '0.32'
70 Code::TidyAll::Plugin::JSON:
71 file: lib/Code/TidyAll/Plugin/JSON.pm
72 version: '0.32'
73 Code::TidyAll::Plugin::MasonTidy:
74 file: lib/Code/TidyAll/Plugin/MasonTidy.pm
75 version: '0.32'
76 Code::TidyAll::Plugin::PHPCodeSniffer:
77 file: lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm
78 version: '0.32'
79 Code::TidyAll::Plugin::PerlCritic:
80 file: lib/Code/TidyAll/Plugin/PerlCritic.pm
81 version: '0.32'
82 Code::TidyAll::Plugin::PerlTidy:
83 file: lib/Code/TidyAll/Plugin/PerlTidy.pm
84 version: '0.32'
85 Code::TidyAll::Plugin::PerlTidySweet:
86 file: lib/Code/TidyAll/Plugin/PerlTidySweet.pm
87 version: '0.32'
88 Code::TidyAll::Plugin::PodChecker:
89 file: lib/Code/TidyAll/Plugin/PodChecker.pm
90 version: '0.32'
91 Code::TidyAll::Plugin::PodSpell:
92 file: lib/Code/TidyAll/Plugin/PodSpell.pm
93 version: '0.32'
94 Code::TidyAll::Plugin::PodTidy:
95 file: lib/Code/TidyAll/Plugin/PodTidy.pm
96 version: '0.32'
97 Code::TidyAll::Plugin::SortLines:
98 file: lib/Code/TidyAll/Plugin/SortLines.pm
99 version: '0.32'
100 Code::TidyAll::Result:
101 file: lib/Code/TidyAll/Result.pm
102 version: '0.32'
103 Code::TidyAll::Role::Tempdir:
104 file: lib/Code/TidyAll/Role/Tempdir.pm
105 version: '0.32'
106 Code::TidyAll::SVN::Precommit:
107 file: lib/Code/TidyAll/SVN/Precommit.pm
108 version: '0.32'
109 Code::TidyAll::SVN::Util:
110 file: lib/Code/TidyAll/SVN/Util.pm
111 version: '0.32'
112 Code::TidyAll::Util::Zglob:
113 file: lib/Code/TidyAll/Util/Zglob.pm
114 version: '0.32'
115 Test::Code::TidyAll:
116 file: lib/Test/Code/TidyAll.pm
117 version: '0.32'
21118 requires:
22 Capture::Tiny: 0.12
23 Config::INI::Reader: 0
24 Date::Format: 0
25 Digest::SHA1: 0
26 File::Basename: 0
27 File::Find: 0
28 File::Path: 0
29 File::Temp: 0
30 File::Zglob: 0
31 Getopt::Long: 0
32 Guard: 0
33 IPC::Run3: 0
34 IPC::System::Simple: 0.15
35 List::MoreUtils: 0
36 Log::Any: 0
37 Moo: 0.0091010
38 Scalar::Util: 0
39 Text::ParseWords: 0
40 Time::Duration::Parse: 0
41 Try::Tiny: 0
119 Capture::Tiny: '0'
120 Config::INI::Reader: '0'
121 Cwd: '0'
122 Data::Dumper: '0'
123 Date::Format: '0'
124 Digest::SHA: '0'
125 Exporter: '0'
126 File::Basename: '0'
127 File::Find: '0'
128 File::Path: '0'
129 File::Slurp::Tiny: '0'
130 File::Spec::Functions: '0'
131 File::Temp: '0'
132 File::Which: '0'
133 File::Zglob: '0'
134 Getopt::Long: '0'
135 Guard: '0'
136 IPC::Run3: '0'
137 IPC::System::Simple: '0'
138 List::MoreUtils: '0'
139 Log::Any: '0'
140 Moo: '0'
141 Moo::Role: '0'
142 Scalar::Util: '0'
143 Test::Builder: '0'
144 Text::Diff: '0'
145 Text::Diff::Table: '0'
146 Text::ParseWords: '0'
147 Time::Duration::Parse: '0'
148 Try::Tiny: '0'
149 base: '0'
150 constant: '0'
151 strict: '0'
152 vars: '0'
153 warnings: '0'
42154 resources:
43 bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=Code-TidyAll
44 repository: git://github.com/jonswar/perl-code-tidyall.git
45 version: 0.20
155 bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=Code-TidyAll
156 homepage: http://metacpan.org/release/Code-TidyAll
157 repository: git://github.com/houseabsolute/perl-code-tidyall.git
158 version: '0.32'
159 x_Dist_Zilla:
160 perl:
161 version: '5.022000'
162 plugins:
163 -
164 class: Dist::Zilla::Plugin::Authority
165 name: '@DROLSKY/Authority'
166 version: '1.009'
167 -
168 class: Dist::Zilla::Plugin::AutoPrereqs
169 name: '@DROLSKY/AutoPrereqs'
170 version: '5.041'
171 -
172 class: Dist::Zilla::Plugin::CopyFilesFromBuild
173 name: '@DROLSKY/CopyFilesFromBuild'
174 version: '0.151680'
175 -
176 class: Dist::Zilla::Plugin::Git::GatherDir
177 config:
178 Dist::Zilla::Plugin::GatherDir:
179 exclude_filename:
180 - Build.PL
181 - LICENSE
182 - Makefile.PL
183 - README.md
184 - cpanfile
185 exclude_match: []
186 follow_symlinks: 0
187 include_dotfiles: 0
188 prefix: ''
189 prune_directory: []
190 root: .
191 Dist::Zilla::Plugin::Git::GatherDir:
192 include_untracked: 0
193 name: '@DROLSKY/Git::GatherDir'
194 version: '2.036'
195 -
196 class: Dist::Zilla::Plugin::GitHub::Meta
197 name: '@DROLSKY/GitHub::Meta'
198 version: '0.41'
199 -
200 class: Dist::Zilla::Plugin::GitHub::Update
201 config:
202 Dist::Zilla::Plugin::GitHub::Update:
203 metacpan: 1
204 name: '@DROLSKY/GitHub::Update'
205 version: '0.41'
206 -
207 class: Dist::Zilla::Plugin::MetaResources
208 name: '@DROLSKY/MetaResources'
209 version: '5.041'
210 -
211 class: Dist::Zilla::Plugin::MetaProvides::Package
212 config:
213 Dist::Zilla::Plugin::MetaProvides::Package:
214 finder_objects:
215 -
216 class: Dist::Zilla::Plugin::FinderCode
217 name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
218 version: '5.041'
219 Dist::Zilla::Role::MetaProvider::Provider:
220 inherit_missing: '1'
221 inherit_version: '1'
222 meta_noindex: '1'
223 name: '@DROLSKY/MetaProvides::Package'
224 version: '2.003001'
225 -
226 class: Dist::Zilla::Plugin::NextRelease
227 name: '@DROLSKY/NextRelease'
228 version: '5.041'
229 -
230 class: Dist::Zilla::Plugin::Prereqs
231 config:
232 Dist::Zilla::Plugin::Prereqs:
233 phase: test
234 type: requires
235 name: '@DROLSKY/Test::More with subtest()'
236 version: '5.041'
237 -
238 class: Dist::Zilla::Plugin::Prereqs
239 config:
240 Dist::Zilla::Plugin::Prereqs:
241 phase: develop
242 type: requires
243 name: '@DROLSKY/Modules for use with tidyall'
244 version: '5.041'
245 -
246 class: Dist::Zilla::Plugin::PromptIfStale
247 config:
248 Dist::Zilla::Plugin::PromptIfStale:
249 check_all_plugins: 1
250 check_all_prereqs: 1
251 modules: []
252 phase: release
253 skip:
254 - Dist::Zilla::Plugin::DROLSKY::Contributors
255 - Dist::Zilla::Plugin::DROLSKY::License
256 - Dist::Zilla::Plugin::DROLSKY::TidyAll
257 - Dist::Zilla::Plugin::DROLSKY::VersionProvider
258 name: '@DROLSKY/PromptIfStale'
259 version: '0.047'
260 -
261 class: Dist::Zilla::Plugin::ReadmeAnyFromPod
262 config:
263 Dist::Zilla::Role::FileWatcher:
264 version: '0.006'
265 name: '@DROLSKY/README.md in build'
266 version: '0.150250'
267 -
268 class: Dist::Zilla::Plugin::ReadmeAnyFromPod
269 config:
270 Dist::Zilla::Role::FileWatcher:
271 version: '0.006'
272 name: '@DROLSKY/README.md in root'
273 version: '0.150250'
274 -
275 class: Dist::Zilla::Plugin::Test::PodSpelling
276 config:
277 Dist::Zilla::Plugin::Test::PodSpelling:
278 directories: []
279 spell_cmd: ''
280 stopwords:
281 - API
282 - CPAN
283 - DROLSKY
284 - "DROLSKY's"
285 - JSON
286 - JavaScript
287 - Misc
288 - PHP
289 - PREREQS
290 - PayPal
291 - Raggett
292 - Rolsky
293 - "Rolsky's"
294 - STDERR
295 - STDIN
296 - STDOUT
297 - Simakov
298 - TIDYALL
299 - Thalhammer
300 - Vim
301 - argv
302 - ascii
303 - atomicity
304 - cmd
305 - conf
306 - config
307 - cssunminifier
308 - ctrl
309 - dir
310 - filename
311 - iff
312 - ispell
313 - js
314 - jsbeautify
315 - jshint
316 - jslint
317 - lib
318 - listref
319 - masontidy
320 - noll
321 - npm
322 - ok
323 - ops
324 - params
325 - pathname
326 - perlcritic
327 - perlcriticrc
328 - perltidy
329 - phpcs
330 - plugins
331 - podspell
332 - podtidy
333 - pre
334 - prereqs
335 - repo
336 - repos
337 - ro
338 - runtime
339 - rw
340 - shebang
341 - sourceforge
342 - svn
343 - tidiers
344 - tidyall
345 - "tidyall'd"
346 - timestamped
347 - ttl
348 - txn
349 - validator
350 - validators
351 wordlist: Pod::Wordlist
352 name: '@DROLSKY/Test::PodSpelling'
353 version: '2.007000'
354 -
355 class: Dist::Zilla::Plugin::Test::ReportPrereqs
356 name: '@DROLSKY/Test::ReportPrereqs'
357 version: '0.021'
358 -
359 class: Dist::Zilla::Plugin::Test::Version
360 name: '@DROLSKY/Test::Version'
361 version: '1.05'
362 -
363 class: Dist::Zilla::Plugin::ManifestSkip
364 name: '@DROLSKY/ManifestSkip'
365 version: '5.041'
366 -
367 class: Dist::Zilla::Plugin::MetaYAML
368 name: '@DROLSKY/MetaYAML'
369 version: '5.041'
370 -
371 class: Dist::Zilla::Plugin::License
372 name: '@DROLSKY/License'
373 version: '5.041'
374 -
375 class: Dist::Zilla::Plugin::ExtraTests
376 name: '@DROLSKY/ExtraTests'
377 version: '5.041'
378 -
379 class: Dist::Zilla::Plugin::ExecDir
380 name: '@DROLSKY/ExecDir'
381 version: '5.041'
382 -
383 class: Dist::Zilla::Plugin::ShareDir
384 name: '@DROLSKY/ShareDir'
385 version: '5.041'
386 -
387 class: Dist::Zilla::Plugin::Manifest
388 name: '@DROLSKY/Manifest'
389 version: '5.041'
390 -
391 class: Dist::Zilla::Plugin::CheckVersionIncrement
392 name: '@DROLSKY/CheckVersionIncrement'
393 version: '0.121750'
394 -
395 class: Dist::Zilla::Plugin::TestRelease
396 name: '@DROLSKY/TestRelease'
397 version: '5.041'
398 -
399 class: Dist::Zilla::Plugin::ConfirmRelease
400 name: '@DROLSKY/ConfirmRelease'
401 version: '5.041'
402 -
403 class: Dist::Zilla::Plugin::UploadToCPAN
404 name: '@DROLSKY/UploadToCPAN'
405 version: '5.041'
406 -
407 class: Dist::Zilla::Plugin::CheckPrereqsIndexed
408 name: '@DROLSKY/CheckPrereqsIndexed'
409 version: '0.017'
410 -
411 class: Dist::Zilla::Plugin::CPANFile
412 name: '@DROLSKY/CPANFile'
413 version: '5.041'
414 -
415 class: Dist::Zilla::Plugin::DROLSKY::Contributors
416 name: '@DROLSKY/DROLSKY::Contributors'
417 version: '0.38'
418 -
419 class: Dist::Zilla::Plugin::DROLSKY::License
420 name: '@DROLSKY/DROLSKY::License'
421 version: '0.38'
422 -
423 class: Dist::Zilla::Plugin::DROLSKY::VersionProvider
424 name: '@DROLSKY/DROLSKY::VersionProvider'
425 version: '0.38'
426 -
427 class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
428 config:
429 Dist::Zilla::Role::Git::Repo:
430 repo_root: .
431 name: '@DROLSKY/Git::CheckFor::CorrectBranch'
432 version: '0.013'
433 -
434 class: Dist::Zilla::Plugin::Git::Contributors
435 config:
436 Dist::Zilla::Plugin::Git::Contributors:
437 include_authors: 0
438 include_releaser: 1
439 order_by: name
440 paths:
441 - .
442 name: '@DROLSKY/Git::Contributors'
443 version: '0.015'
444 -
445 class: Dist::Zilla::Plugin::InstallGuide
446 name: '@DROLSKY/InstallGuide'
447 version: '1.200006'
448 -
449 class: Dist::Zilla::Plugin::Meta::Contributors
450 name: '@DROLSKY/Meta::Contributors'
451 version: '0.002'
452 -
453 class: Dist::Zilla::Plugin::MetaConfig
454 name: '@DROLSKY/MetaConfig'
455 version: '5.041'
456 -
457 class: Dist::Zilla::Plugin::MetaJSON
458 name: '@DROLSKY/MetaJSON'
459 version: '5.041'
460 -
461 class: Dist::Zilla::Plugin::SurgicalPodWeaver
462 config:
463 Dist::Zilla::Plugin::PodWeaver:
464 finder:
465 - ':InstallModules'
466 - ':ExecFiles'
467 plugins:
468 -
469 class: Pod::Weaver::Plugin::EnsurePod5
470 name: '@CorePrep/EnsurePod5'
471 version: '4.012'
472 -
473 class: Pod::Weaver::Plugin::H1Nester
474 name: '@CorePrep/H1Nester'
475 version: '4.012'
476 -
477 class: Pod::Weaver::Section::Name
478 name: Name
479 version: '4.012'
480 -
481 class: Pod::Weaver::Section::Version
482 name: Version
483 version: '4.012'
484 -
485 class: Pod::Weaver::Section::Generic
486 name: SYNOPSIS
487 version: '4.012'
488 -
489 class: Pod::Weaver::Section::Generic
490 name: DESCRIPTION
491 version: '4.012'
492 -
493 class: Pod::Weaver::Section::Leftovers
494 name: Leftovers
495 version: '4.012'
496 -
497 class: inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll
498 name: =inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll
499 version: ~
500 -
501 class: Pod::Weaver::Section::Region
502 name: postlude
503 version: '4.012'
504 -
505 class: Pod::Weaver::Section::Authors
506 name: Authors
507 version: '4.012'
508 -
509 class: Pod::Weaver::Section::Contributors
510 name: Contributors
511 version: '0.009'
512 -
513 class: Pod::Weaver::Section::Legal
514 name: Legal
515 version: '4.012'
516 name: '@DROLSKY/SurgicalPodWeaver'
517 version: '0.0023'
518 -
519 class: Dist::Zilla::Plugin::MojibakeTests
520 name: '@DROLSKY/MojibakeTests'
521 version: '0.8'
522 -
523 class: Dist::Zilla::Plugin::PodSyntaxTests
524 name: '@DROLSKY/PodSyntaxTests'
525 version: '5.041'
526 -
527 class: Dist::Zilla::Plugin::Test::CPAN::Changes
528 name: '@DROLSKY/Test::CPAN::Changes'
529 version: '0.009'
530 -
531 class: Dist::Zilla::Plugin::Test::NoTabs
532 config:
533 Dist::Zilla::Plugin::Test::NoTabs:
534 filename: xt/author/no-tabs.t
535 finder:
536 - ':InstallModules'
537 - ':ExecFiles'
538 - ':TestFiles'
539 name: '@DROLSKY/Test::NoTabs'
540 version: '0.15'
541 -
542 class: Dist::Zilla::Plugin::Git::Check
543 config:
544 Dist::Zilla::Plugin::Git::Check:
545 untracked_files: die
546 Dist::Zilla::Role::Git::DirtyFiles:
547 allow_dirty:
548 - Build.PL
549 - CONTRIBUTING.md
550 - Changes
551 - LICENSE
552 - Makefile.PL
553 - README.md
554 - cpanfile
555 allow_dirty_match: []
556 changelog: Changes
557 Dist::Zilla::Role::Git::Repo:
558 repo_root: .
559 name: '@DROLSKY/Git::Check'
560 version: '2.036'
561 -
562 class: Dist::Zilla::Plugin::Git::Commit
563 config:
564 Dist::Zilla::Plugin::Git::Commit:
565 add_files_in: []
566 commit_msg: v%v%n%n%c
567 Dist::Zilla::Role::Git::DirtyFiles:
568 allow_dirty:
569 - Build.PL
570 - CONTRIBUTING.md
571 - Changes
572 - LICENSE
573 - Makefile.PL
574 - README.md
575 - cpanfile
576 allow_dirty_match: []
577 changelog: Changes
578 Dist::Zilla::Role::Git::Repo:
579 repo_root: .
580 Dist::Zilla::Role::Git::StringFormatter:
581 time_zone: local
582 name: '@DROLSKY/commit generated files'
583 version: '2.036'
584 -
585 class: Dist::Zilla::Plugin::Git::Tag
586 config:
587 Dist::Zilla::Plugin::Git::Tag:
588 branch: ~
589 changelog: Changes
590 signed: 0
591 tag: v0.32
592 tag_format: v%v
593 tag_message: v%v
594 Dist::Zilla::Role::Git::Repo:
595 repo_root: .
596 Dist::Zilla::Role::Git::StringFormatter:
597 time_zone: local
598 name: '@DROLSKY/Git::Tag'
599 version: '2.036'
600 -
601 class: Dist::Zilla::Plugin::Git::Push
602 config:
603 Dist::Zilla::Plugin::Git::Push:
604 push_to:
605 - origin
606 remotes_must_exist: 1
607 Dist::Zilla::Role::Git::Repo:
608 repo_root: .
609 name: '@DROLSKY/Git::Push'
610 version: '2.036'
611 -
612 class: Dist::Zilla::Plugin::BumpVersionAfterRelease
613 config:
614 Dist::Zilla::Plugin::BumpVersionAfterRelease:
615 finders:
616 - ':ExecFiles'
617 - ':InstallModules'
618 global: 0
619 munge_makefile_pl: 1
620 name: '@DROLSKY/BumpVersionAfterRelease'
621 version: '0.012'
622 -
623 class: Dist::Zilla::Plugin::Git::Commit
624 config:
625 Dist::Zilla::Plugin::Git::Commit:
626 add_files_in: []
627 commit_msg: 'Bump version after release'
628 Dist::Zilla::Role::Git::DirtyFiles:
629 allow_dirty:
630 - Changes
631 - dist.ini
632 allow_dirty_match:
633 - (?^:.+)
634 changelog: Changes
635 Dist::Zilla::Role::Git::Repo:
636 repo_root: .
637 Dist::Zilla::Role::Git::StringFormatter:
638 time_zone: local
639 name: '@DROLSKY/commit version bump'
640 version: '2.036'
641 -
642 class: Dist::Zilla::Plugin::Git::Push
643 config:
644 Dist::Zilla::Plugin::Git::Push:
645 push_to:
646 - origin
647 remotes_must_exist: 1
648 Dist::Zilla::Role::Git::Repo:
649 repo_root: .
650 name: '@DROLSKY/push version bump'
651 version: '2.036'
652 -
653 class: inc::MyMakeMaker
654 config:
655 Dist::Zilla::Role::TestRunner:
656 default_jobs: 1
657 name: =inc::MyMakeMaker
658 version: ~
659 -
660 class: Dist::Zilla::Plugin::Prereqs
661 config:
662 Dist::Zilla::Plugin::Prereqs:
663 phase: develop
664 type: requires
665 name: DevelopRequires
666 version: '5.041'
667 -
668 class: Dist::Zilla::Plugin::MetaNoIndex
669 name: MetaNoIndex
670 version: '5.041'
671 -
672 class: Dist::Zilla::Plugin::TidyAll
673 name: TidyAll
674 version: '0.04'
675 -
676 class: Dist::Zilla::Plugin::FinderCode
677 name: ':InstallModules'
678 version: '5.041'
679 -
680 class: Dist::Zilla::Plugin::FinderCode
681 name: ':IncModules'
682 version: '5.041'
683 -
684 class: Dist::Zilla::Plugin::FinderCode
685 name: ':TestFiles'
686 version: '5.041'
687 -
688 class: Dist::Zilla::Plugin::FinderCode
689 name: ':ExtraTestFiles'
690 version: '5.041'
691 -
692 class: Dist::Zilla::Plugin::FinderCode
693 name: ':ExecFiles'
694 version: '5.041'
695 -
696 class: Dist::Zilla::Plugin::FinderCode
697 name: ':PerlExecFiles'
698 version: '5.041'
699 -
700 class: Dist::Zilla::Plugin::FinderCode
701 name: ':ShareFiles'
702 version: '5.041'
703 -
704 class: Dist::Zilla::Plugin::FinderCode
705 name: ':MainModule'
706 version: '5.041'
707 -
708 class: Dist::Zilla::Plugin::FinderCode
709 name: ':AllFiles'
710 version: '5.041'
711 -
712 class: Dist::Zilla::Plugin::FinderCode
713 name: ':NoFiles'
714 version: '5.041'
715 -
716 class: Dist::Zilla::Plugin::FinderCode
717 name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
718 version: '5.041'
719 zilla:
720 class: Dist::Zilla::Dist::Builder
721 config:
722 is_trial: '0'
723 version: '5.041'
724 x_authority: cpan:DROLSKY
725 x_contributors:
726 - 'Andy Jack <andyjack@cpan.org>'
727 - 'George Hartzell <georgewh@gene.com>'
728 - 'Gregory Oschwald <goschwald@maxmind.com>'
729 - 'Joe Crotty <joe.crotty@returnpath.net>'
730 - 'Mark Fowler <mark@twoshortplanks.com>'
731 - 'Mark Grimes <mgrimes@cpan.org>'
732 - 'Olaf Alders <olaf@wundersolutions.com>'
733 - 'Pedro Melo <melo@simplicidade.org>'
734 - 'Sergey Romanov <sromanov-dev@yandex.ru>'
735 - 'timgimyee <tim.gim.yee@gmail.com>'
0 # This Makefile.PL for Code-TidyAll was generated by
1 # inc::MyMakeMaker <self>
2 # and Dist::Zilla::Plugin::MakeMaker::Awesome 0.34.
3 # Don't edit it but the dist.ini and plugins used to construct it.
04
1 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.012.
25 use strict;
36 use warnings;
47
5
6
7 use ExtUtils::MakeMaker 6.30;
8
9
8 use ExtUtils::MakeMaker;
109
1110 my %WriteMakefileArgs = (
12 "ABSTRACT" => "Tidy and validate code in many ways at once",
13 "AUTHOR" => "Jonathan Swartz <swartz\@pobox.com>",
14 "BUILD_REQUIRES" => {},
11 "ABSTRACT" => "Engine for tidyall, your all-in-one code tidier and validator",
12 "AUTHOR" => "Jonathan Swartz <swartz\@pobox.com>, Dave Rolsky <autarch\@urth.org>",
1513 "CONFIGURE_REQUIRES" => {
16 "ExtUtils::MakeMaker" => "6.30"
14 "ExtUtils::MakeMaker" => 0
1715 },
1816 "DISTNAME" => "Code-TidyAll",
1917 "EXE_FILES" => [
2220 "LICENSE" => "perl",
2321 "NAME" => "Code::TidyAll",
2422 "PREREQ_PM" => {
25 "Capture::Tiny" => "0.12",
23 "Capture::Tiny" => 0,
2624 "Config::INI::Reader" => 0,
25 "Cwd" => 0,
26 "Data::Dumper" => 0,
2727 "Date::Format" => 0,
28 "Digest::SHA1" => 0,
28 "Digest::SHA" => 0,
29 "Exporter" => 0,
2930 "File::Basename" => 0,
3031 "File::Find" => 0,
3132 "File::Path" => 0,
33 "File::Slurp::Tiny" => 0,
34 "File::Spec::Functions" => 0,
3235 "File::Temp" => 0,
36 "File::Which" => 0,
3337 "File::Zglob" => 0,
3438 "Getopt::Long" => 0,
3539 "Guard" => 0,
3640 "IPC::Run3" => 0,
37 "IPC::System::Simple" => "0.15",
41 "IPC::System::Simple" => 0,
3842 "List::MoreUtils" => 0,
3943 "Log::Any" => 0,
40 "Moo" => "0.0091010",
44 "Moo" => 0,
45 "Moo::Role" => 0,
4146 "Scalar::Util" => 0,
47 "Test::Builder" => 0,
48 "Text::Diff" => 0,
49 "Text::Diff::Table" => 0,
4250 "Text::ParseWords" => 0,
4351 "Time::Duration::Parse" => 0,
44 "Try::Tiny" => 0
52 "Try::Tiny" => 0,
53 "base" => 0,
54 "constant" => 0,
55 "strict" => 0,
56 "vars" => 0,
57 "warnings" => 0
4558 },
4659 "TEST_REQUIRES" => {
47 "Test::Class::Most" => 0
60 "Encode" => 0,
61 "ExtUtils::MakeMaker" => 0,
62 "File::Spec" => 0,
63 "Test::Class::Most" => 0,
64 "Test::Differences" => 0,
65 "Test::More" => "0.96",
66 "Test::Warnings" => 0,
67 "autodie" => 0,
68 "lib" => 0
4869 },
49 "VERSION" => "0.20",
70 "VERSION" => "0.32",
5071 "test" => {
5172 "TESTS" => "t/*.t"
5273 }
5374 );
5475
55
5676 my %FallbackPrereqs = (
57 "Capture::Tiny" => "0.12",
77 "Capture::Tiny" => 0,
5878 "Config::INI::Reader" => 0,
79 "Cwd" => 0,
80 "Data::Dumper" => 0,
5981 "Date::Format" => 0,
60 "Digest::SHA1" => 0,
82 "Digest::SHA" => 0,
83 "Encode" => 0,
84 "Exporter" => 0,
85 "ExtUtils::MakeMaker" => 0,
6186 "File::Basename" => 0,
6287 "File::Find" => 0,
6388 "File::Path" => 0,
89 "File::Slurp::Tiny" => 0,
90 "File::Spec" => 0,
91 "File::Spec::Functions" => 0,
6492 "File::Temp" => 0,
93 "File::Which" => 0,
6594 "File::Zglob" => 0,
6695 "Getopt::Long" => 0,
6796 "Guard" => 0,
6897 "IPC::Run3" => 0,
69 "IPC::System::Simple" => "0.15",
98 "IPC::System::Simple" => 0,
7099 "List::MoreUtils" => 0,
71100 "Log::Any" => 0,
72 "Moo" => "0.0091010",
101 "Moo" => 0,
102 "Moo::Role" => 0,
73103 "Scalar::Util" => 0,
104 "Test::Builder" => 0,
74105 "Test::Class::Most" => 0,
106 "Test::Differences" => 0,
107 "Test::More" => "0.96",
108 "Test::Warnings" => 0,
109 "Text::Diff" => 0,
110 "Text::Diff::Table" => 0,
75111 "Text::ParseWords" => 0,
76112 "Time::Duration::Parse" => 0,
77 "Try::Tiny" => 0
113 "Try::Tiny" => 0,
114 "autodie" => 0,
115 "base" => 0,
116 "constant" => 0,
117 "lib" => 0,
118 "strict" => 0,
119 "vars" => 0,
120 "warnings" => 0
78121 );
79
80122
81123 unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
82124 delete $WriteMakefileArgs{TEST_REQUIRES};
89131
90132 WriteMakefile(%WriteMakefileArgs);
91133
134 use inc::Util qw(make_node_symlinks);
92135
93
136 make_node_symlinks();
+0
-127
README less more
0 NAME
1 Code::TidyAll - Engine for tidyall, your all-in-one code tidier and
2 validator
3
4 VERSION
5 version 0.20
6
7 SYNOPSIS
8 use Code::TidyAll;
9
10 my $ct = Code::TidyAll->new_from_conf_file(
11 '/path/to/conf/file',
12 ...
13 );
14
15 # or
16
17 my $ct = Code::TidyAll->new(
18 root_dir => '/path/to/root',
19 plugins => {
20 perltidy => {
21 select => 'lib/**/*.(pl|pm)',
22 argv => '-noll -it=2',
23 },
24 ...
25 }
26 );
27
28 # then...
29
30 $ct->process_paths($file1, $file2);
31
32 DESCRIPTION
33 This is the engine used by tidyall - read that first to get an overview.
34
35 You can call this API from your own program instead of executing
36 `tidyall'.
37
38 CONSTRUCTION
39 Constructor methods
40 new (%params)
41 The regular constructor. Must pass at least *plugins* and
42 *root_dir*.
43
44 new_with_conf_file ($conf_file, %params)
45 Takes a conf file path, followed optionally by a set of key/value
46 parameters. Reads parameters out of the conf file and combines them
47 with the passed parameters (the latter take precedence), and calls
48 the regular constructor.
49
50 If the conf file or params defines *tidyall_class*, then that class
51 is constructed instead of `Code::TidyAll'.
52
53 Constructor parameters
54 plugins
55 Specify a hash of plugins, each of which is itself a hash of
56 options. This is equivalent to what would be parsed out of the
57 sections in the configuration file.
58
59 backup_ttl
60 check_only
61 data_dir
62 iterations
63 mode
64 no_backups
65 no_cache
66 output_suffix
67 quiet
68 root_dir
69 verbose
70 These options are the same as the equivalent `tidyall' command-line
71 options, replacing dashes with underscore (e.g. the `backup-ttl'
72 option becomes `backup_ttl' here).
73
74 METHODS
75 process_paths (path, ...)
76 Call process_file on each file; descend recursively into each
77 directory if the `recursive' flag is on. Return a list of
78 Code::TidyAll::Result objects, one for each file.
79
80 process_file (file)
81 Process the *file*, meaning
82
83 * Check the cache and return immediately if file has not changed
84
85 * Apply appropriate matching plugins
86
87 * Print success or failure result to STDOUT, depending on
88 quiet/verbose settings
89
90 * Write the cache if enabled
91
92 * Return a Code::TidyAll::Result object
93
94 process_source (*source*, *path*)
95 Like process_file, but process the *source* string instead of a
96 file, and do not read from or write to the cache. You must still
97 pass the relative *path* from the root as the second argument, so
98 that we know which plugins to apply. Return a Code::TidyAll::Result
99 object.
100
101 plugins_for_path (*path*)
102 Given a relative *path* from the root, return a list of
103 Code::TidyAll::Plugin objects that apply to it, or an empty list if
104 no plugins apply.
105
106 find_conf_file (*conf_names*, *start_dir*)
107 Class method. Start in the *start_dir* and work upwards, looking for
108 one of the *conf_names*. Return the pathname if found or throw an
109 error if not found.
110
111 find_matched_files
112 Returns a list of sorted files that match at least one plugin in
113 configuration.
114
115 SEE ALSO
116 Code::TidyAll
117
118 AUTHOR
119 Jonathan Swartz <swartz@pobox.com>
120
121 COPYRIGHT AND LICENSE
122 This software is copyright (c) 2011 by Jonathan Swartz.
123
124 This is free software; you can redistribute it and/or modify it under
125 the same terms as the Perl 5 programming language system itself.
126
0 NAME
1
2 Code::TidyAll - Engine for tidyall, your all-in-one code tidier and
3 validator
4
5 VERSION
6
7 version 0.32
8
9 SYNOPSIS
10
11 use Code::TidyAll;
12
13 my $ct = Code::TidyAll->new_from_conf_file(
14 '/path/to/conf/file',
15 ...
16 );
17
18 # or
19
20 my $ct = Code::TidyAll->new(
21 root_dir => '/path/to/root',
22 plugins => {
23 perltidy => {
24 select => 'lib/**/*.(pl|pm)',
25 argv => '-noll -it=2',
26 },
27 ...
28 }
29 );
30
31 # then...
32
33 $ct->process_paths($file1, $file2);
34
35 DESCRIPTION
36
37 This is the engine used by tidyall - read that first to get an overview.
38
39 You can call this API from your own program instead of executing tidyall.
40
41 CONSTRUCTION
42
43 Constructor methods
44
45 new (%params)
46
47 The regular constructor. Must pass at least plugins and root_dir.
48
49 new_with_conf_file ($conf_file, %params)
50
51 Takes a conf file path, followed optionally by a set of key/value
52 parameters. Reads parameters out of the conf file and combines them with
53 the passed parameters (the latter take precedence), and calls the regular
54 constructor.
55
56 If the conf file or params defines tidyall_class, then that class is
57 constructed instead of Code::TidyAll.
58
59 Constructor parameters
60
61 plugins
62
63 Specify a hash of plugins, each of which is itself a hash of options.
64 This is equivalent to what would be parsed out of the sections in the
65 configuration file.
66
67 cache_model_class
68
69 The cache model class. Defaults to Code::TidyAll::CacheModel
70
71 cache
72
73 The cache instance (e.g. an instance of Code::TidyAll::Cache or a CHI
74 instance.) An instance of Code::TidyAll::Cache is automatically
75 instantiated by default.
76
77 backup_ttl
78
79 check_only
80
81 no_cleanup
82
83 A boolean indicating if we should skip cleaning temporary files or not.
84 Defaults to false.
85
86 data_dir
87
88 iterations
89
90 mode
91
92 no_backups
93
94 no_cache
95
96 output_suffix
97
98 quiet
99
100 root_dir
101
102 verbose
103
104 These options are the same as the equivalent tidyall command-line
105 options, replacing dashes with underscore (e.g. the backup-ttl option
106 becomes backup_ttl here).
107
108 msg_outputter
109
110 This is a subroutine reference that is called whenever a message needs to
111 be printed in some way. The sub receives a sprintf() format string
112 followed by one or more parameters. The default sub used simply calls
113 printf "$format\n", @_ but Test::Code::TidyAll overrides this to use the
114 Test::Builder->diag method.
115
116 METHODS
117
118 process_paths (path, ...)
119
120 Call "process_file" on each file; descend recursively into each directory
121 if the recursive flag is on. Return a list of Code::TidyAll::Result
122 objects, one for each file.
123
124 process_file (file)
125
126 Process the file, meaning
127
128 * Check the cache and return immediately if file has not changed
129
130 * Apply appropriate matching plugins
131
132 * Print success or failure result to STDOUT, depending on quiet/verbose
133 settings
134
135 * Write the cache if enabled
136
137 * Return a Code::TidyAll::Result object
138
139 process_source (source, path)
140
141 Like "process_file", but process the source string instead of a file, and
142 do not read from or write to the cache. You must still pass the relative
143 path from the root as the second argument, so that we know which plugins
144 to apply. Return a Code::TidyAll::Result object.
145
146 plugins_for_path (path)
147
148 Given a relative path from the root, return a list of
149 Code::TidyAll::Plugin objects that apply to it, or an empty list if no
150 plugins apply.
151
152 find_conf_file (conf_names, start_dir)
153
154 Class method. Start in the start_dir and work upwards, looking for one of
155 the conf_names. Return the pathname if found or throw an error if not
156 found.
157
158 find_matched_files
159
160 Returns a list of sorted files that match at least one plugin in
161 configuration.
162
163 AUTHORS
164
165 * Jonathan Swartz <swartz@pobox.com>
166
167 * Dave Rolsky <autarch@urth.org>
168
169 CONTRIBUTORS
170
171 * Andy Jack <andyjack@cpan.org>
172
173 * George Hartzell <georgewh@gene.com>
174
175 * Gregory Oschwald <goschwald@maxmind.com>
176
177 * Joe Crotty <joe.crotty@returnpath.net>
178
179 * Mark Fowler <mark@twoshortplanks.com>
180
181 * Mark Grimes <mgrimes@cpan.org>
182
183 * Olaf Alders <olaf@wundersolutions.com>
184
185 * Pedro Melo <melo@simplicidade.org>
186
187 * Sergey Romanov <sromanov-dev@yandex.ru>
188
189 * timgimyee <tim.gim.yee@gmail.com>
190
191 COPYRIGHT AND LICENSE
192
193 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
194
195 This is free software; you can redistribute it and/or modify it under the
196 same terms as the Perl 5 programming language system itself.
197
66 use Code::TidyAll::Util qw(can_load dirname rel2abs);
77 use strict;
88 use warnings;
9
10 our $VERSION = '0.32';
911
1012 my $usage = '
1113 Usage: tidyall [options] [file] ...
3133 --iterations <count> Number of times to repeat each transform - default is 1
3234 --no-backups Don\'t backup files before processing
3335 --no-cache Don\'t cache last processed times
36 --no-cleanup Don\'t cleanup the temporary files
3437 --output-suffix <suffix> Suffix to add to tidied file
3538 --refresh-cache Erase any existing cache info before processing each file
3639 --root-dir Specify root directory explicitly
6366 'data-dir=s' => \$params{data_dir},
6467 'no-backups' => \$params{no_backups},
6568 'no-cache' => \$params{no_cache},
69 'no-cleanup' => \$params{no_cleanup},
6670 'output-suffix=s' => \$params{output_suffix},
6771 'refresh-cache' => \$params{refresh_cache},
6872 'root-dir=s' => \$params{root_dir},
7882 's|svn' => \$svn_files,
7983 'q|quiet' => \$params{quiet},
8084 'v|verbose' => \$params{verbose},
81 'I' => \$inc_dirs,
85 'I=s' => \$inc_dirs,
8286 ) or usage();
8387 version() if $version;
8488 usage() if $help;
8892
8993 %params = map { ( $_, $params{$_} ) } grep { defined( $params{$_} ) } keys(%params);
9094
91 ($conf_file) = ( grep { -f } map { "$params{root_dir}/$_" } @conf_names )
92 if $params{root_dir} && !$conf_file;
95 ($conf_file) = ( grep {-f} map {"$params{root_dir}/$_"} @conf_names )
96 if $params{root_dir} && !$conf_file;
9397
9498 my $tidyall_class = $params{tidyall_class} || 'Code::TidyAll';
9599
101105 }
102106 elsif ( ( $all_files || $svn_files || $git_files ) ) {
103107 die "cannot use filename(s) with -a/--all, -s/--svn, or -g/--git"
104 if @ARGV;
108 if @ARGV;
105109 $conf_file ||= $tidyall_class->find_conf_file( \@conf_names, cwd() );
106110 $ct = $tidyall_class->new_from_conf_file( $conf_file, %params );
107111
173177
174178 __END__
175179
176 =pod
177
178180 =head1 NAME
179181
180182 tidyall - Your all-in-one code tidier and validator
181
182 =head1 VERSION
183
184 version 0.20
185183
186184 =head1 SYNOPSIS
187185
241239 =item *
242240
243241 Perl: L<perlcritic|Code::TidyAll::Plugin::PerlCritic>,
244 L<perltidy|Code::TidyAll::Plugin::PerlTidy>
242 L<perltidy|Code::TidyAll::Plugin::PerlTidy>,
243 L<perltidy-sweet|Code::TidyAll::Plugin::PerlTidy::Sweetened>
245244
246245 =item *
247246
265264
266265 =item *
267266
268 CSS: L<cssunminifier|Code::TidyAll::Plugin::CSUnminifier>
269
270 =item *
271
272 PHP: L<phpcs|Code::TidyAll::Plugin::CSUnminifier>
273
274 =item *
275
276 Misc: L<Code::TidyAll::Plugin::SortLines|Code::TidyAll::Plugin::SortLines>
267 CSS: L<cssunminifier|Code::TidyAll::Plugin::CSSUnminifier>
268
269 =item *
270
271 PHP: L<phpcs|Code::TidyAll::Plugin::PHPCodeSniffer>
272
273 =item *
274
275 Misc: L<Code::TidyAll::Plugin::SortLines>
277276
278277 =back
279278
280 See L<Code::TidyAll::Plugin|Code::TidyAll::Plugin> for information about
281 creating your own plugin.
279 See L<Code::TidyAll::Plugin> for information about creating your own plugin.
282280
283281 =head1 USING TIDYALL
284282
319317
320318 =head1 CONFIGURATION
321319
322 The config file (C<tidyall.ini> or C<.tidyallrc>) is in
323 L<Config::INI|Config::INI> format. Here's a sample:
320 The config file (C<tidyall.ini> or C<.tidyallrc>) is in L<Config::INI> format.
321 Here's a sample:
324322
325323 [PerlTidy]
326324 select = **/*.{pl,pm,t}
394392
395393 =item select
396394
397 One or more L<File::Zglob|File::Zglob> patterns, separated by whitespace or on
398 multiple lines, indicating which files to select. At least one is required.
399 e.g.
395 One or more L<File::Zglob> patterns, separated by whitespace or on multiple
396 lines, indicating which files to select. At least one is required. e.g.
400397
401398 ; All .t and .pl somewhere under bin and t;
402399 ; plus all .pm files directly under lib/Foo and lib/Bar
410407
411408 The pattern is relative to the root directory and should have no leading slash.
412409 All standard glob characters (C<*>, C<?>, C<[]>, C<{}>) will work; in addition,
413 C<**> can be used to represent zero or more directories. See
414 L<File::Zglob|File::Zglob> documentation for more details.
410 C<**> can be used to represent zero or more directories. See L<File::Zglob>
411 documentation for more details.
415412
416413 =item ignore
417414
418 One or more L<File::Zglob|File::Zglob> patterns, separated by whitespace or on
419 multiple lines, indicating which files to ignore. This is optional and
420 overrides C<select>. e.g.
415 One or more L<File::Zglob> patterns, separated by whitespace or on multiple
416 lines, indicating which files to ignore. This is optional and overrides
417 C<select>. e.g.
421418
422419 ; All .pl files anywhere under bin, except bin/awful.pl or anywhere
423420 ; under bin/tmp
425422 select = bin/**/*.pl
426423 ignore = bin/awful.pl bin/tmp/**/*.pl
427424
425 =item shebang
426
427 One or more words, separated by whitespace or on multiple lines, indicating
428 which shebang lines to accept. This is optional and further filters C<select>.
429 e.g.
430
431 ; All files with no extension anywhere under bin that include a "perl" or
432 ; "perl5" shebang line.
433 select = bin/**/*
434 ignore = bin/**/*.*
435 shebang = perl perl5
436
428437 =item only_modes
429438
430439 A list of modes, separated by whitespace. e.g.
431440
432 only_modes = tests cli
441 only_modes = test cli
433442
434443 The plugin will I<only> run if one of these modes is passed to C<tidyall> via
435444 C<-m> or C<--mode>.
450459 L<podtidy|Code::TidyAll::Plugin::PodTidy>) take this option, which specifies
451460 arguments to pass to the underlying command-line utility.
452461
462 =item weight
463
464 This is an integer that is used to sort plugins. By default, tidier plugins run
465 first, then validator plugins, with each group sorted alphabetically.
466
453467 =back
454468
455469 =head1 PLUGIN ORDER AND ATOMICITY
457471 If multiple plugins match a file, tidiers are applied before validators so that
458472 validators are checking the final result. Within those two groups, the plugins
459473 are applied in alphabetical order by plugin name/description.
474
475 You can also explicitly set the weight of each plugin. By default, tidiers have
476 a weight of 50 and validators have a weight of 60. You can set the weight to
477 any integer to influence when the plugin runs.
460478
461479 The application of multiple plugins is all-or-nothing. If an error occurs
462480 during the application of any plugin, the file is not modified at all.
543561 =item --backup-ttl I<duration>
544562
545563 Amount of time before backup files can be purged. Can be a number of seconds or
546 any string recognized by L<Time::Duration::Parse|Time::Duration::Parse>, e.g.
547 "4h" or "1day". Defaults to "1h".
564 any string recognized by L<Time::Duration::Parse>, e.g. "4h" or "1day".
565 Defaults to "1h".
548566
549567 =item --check-only
550568
551569 Instead of actually tidying files, check if each file is tidied (i.e. if its
552570 tidied version is equal to its current version) and consider it an error if
553 not. This is used by L<Test::Code::TidyAll|Test::Code::TidyAll> and the
571 not. This is used by L<Test::Code::TidyAll> and the
554572 L<svn|Code::TidyAll::SVN::Precommit> and L<git|Code::TidyAll::Git::Precommit>
555573 pre-commit hooks, for example, to enforce that you've tidied your files.
556574
659677
660678 =item *
661679
662 C<commit> - when using a commit hook like
663 L<Code::TidyAll::SVN::Precommit|Code::TidyAll::SVN::Precommit> or
664 L<Code::TidyAll::Git::Precommit|Code::TidyAll::Git::Precommit>
665
666 =item *
667
668 C<test> - when using L<Test::Code::TidyAll|Test::Code::TidyAll>
680 C<commit> - when using a commit hook like L<Code::TidyAll::SVN::Precommit> or
681 L<Code::TidyAll::Git::Precommit>
682
683 =item *
684
685 C<test> - when using L<Test::Code::TidyAll>
669686
670687 =back
671688
675692
676693 [PerlCritic]
677694 select = lib/**/*.pm
678 only_modes = tests cli
695 only_modes = test cli
679696 ...
680697
681698 Or you could specify that it be run in all modes I<except> the editor:
706723 runs. The duration specified in C<--backup-ttl> indicates both the minimum
707724 amount of time backups should be kept, and the frequency that purges should be
708725 run. It may be specified as "30m" or "4 hours" or any string acceptable to
709 L<Time::Duration::Parse|Time::Duration::Parse>. It defaults to "1h" (1 hour).
726 L<Time::Duration::Parse>. It defaults to "1h" (1 hour).
710727
711728 You can turn off backups with C<--no-backups>.
712729
730 =head1 "MISSING" PREREQS
731
732 The C<Code::TidyAll> distribution intentionally does not depend on the prereqs
733 needed for each plugin. This means that if you want to use the
734 L<perltidy|Code::TidyAll::Plugin::PerlTidy>, you must install the L<Perl::Tidy>
735 module manually.
736
713737 =head1 RELATED TOOLS
714738
715739 =over
716740
717741 =item *
718742
719 L<etc/editors/tidyall.el|https://raw.github.com/jonswar/perl-code-tidyall/master/etc/editors/tidyall.el>
743 L<etc/editors/tidyall.el|https://raw.github.com/autarch-code/perl-code-tidyall/master/etc/editors/tidyall.el>
720744 and
721 L<etc/editors/tidyall.vim|https://raw.github.com/jonswar/perl-code-tidyall/master/etc/editors/tidyall.vim>
745 L<etc/editors/tidyall.vim|https://raw.github.com/autarch-code/perl-code-tidyall/master/etc/editors/tidyall.vim>
722746 in this distribution contains Emacs and Vim commands for running C<tidyall> on
723747 the current buffer. You can assign this to the keystroke of your choice (e.g.
724748 ctrl-t or ,t).
725749
726750 =item *
727751
728 L<Code::TidyAll::SVN::Precommit|Code::TidyAll::SVN::Precommit> implements a
729 subversion pre-commit hook that checks if all files are tidied and valid
730 according to C<tidyall>, and rejects the commit if not.
731
732 =item *
733
734 L<Code::TidyAll::Git::Precommit|Code::TidyAll::Git::Precommit> and
735 L<Code::TidyAll::Git::Prereceive|Code::TidyAll::Git::Prereceive> implement git
736 pre-commit and pre-receive hooks, respectively, that check if all files are
737 tidied and valid according to C<tidyall>.
738
739 =item *
740
741 L<Test::Code::TidyAll|Test::Code::TidyAll> is a testing library to check that
742 all the files in your project are in a tidied and valid state.
752 L<Code::TidyAll::SVN::Precommit> implements a subversion pre-commit hook that
753 checks if all files are tidied and valid according to C<tidyall>, and rejects
754 the commit if not.
755
756 =item *
757
758 L<Code::TidyAll::Git::Precommit> and L<Code::TidyAll::Git::Prereceive>
759 implement git pre-commit and pre-receive hooks, respectively, that check if all
760 files are tidied and valid according to C<tidyall>.
761
762 =item *
763
764 L<Test::Code::TidyAll> is a testing library to check that all the files in your
765 project are in a tidied and valid state.
743766
744767 =back
745768
752775 Does not yet work on Windows
753776
754777 =back
778
779 =head1 AUTHOR
780
781 Jonathan Swartz
755782
756783 =head1 ACKNOWLEDGMENTS
757784
759786 perlcritic, Steve Hancock for perltidy, and all the other authors of great open
760787 source tidiers and validators.
761788
762 =head1 SEE ALSO
763
764 L<Code::TidyAll|Code::TidyAll>
765
766 =head1 AUTHOR
767
768 Jonathan Swartz <swartz@pobox.com>
769
770 =head1 COPYRIGHT AND LICENSE
771
772 This software is copyright (c) 2011 by Jonathan Swartz.
773
774 This is free software; you can redistribute it and/or modify it under
775 the same terms as the Perl 5 programming language system itself.
776
777789 =cut
0 requires "Capture::Tiny" => "0";
1 requires "Config::INI::Reader" => "0";
2 requires "Cwd" => "0";
3 requires "Data::Dumper" => "0";
4 requires "Date::Format" => "0";
5 requires "Digest::SHA" => "0";
6 requires "Exporter" => "0";
7 requires "File::Basename" => "0";
8 requires "File::Find" => "0";
9 requires "File::Path" => "0";
10 requires "File::Slurp::Tiny" => "0";
11 requires "File::Spec::Functions" => "0";
12 requires "File::Temp" => "0";
13 requires "File::Which" => "0";
14 requires "File::Zglob" => "0";
15 requires "Getopt::Long" => "0";
16 requires "Guard" => "0";
17 requires "IPC::Run3" => "0";
18 requires "IPC::System::Simple" => "0";
19 requires "List::MoreUtils" => "0";
20 requires "Log::Any" => "0";
21 requires "Moo" => "0";
22 requires "Moo::Role" => "0";
23 requires "Scalar::Util" => "0";
24 requires "Test::Builder" => "0";
25 requires "Text::Diff" => "0";
26 requires "Text::Diff::Table" => "0";
27 requires "Text::ParseWords" => "0";
28 requires "Time::Duration::Parse" => "0";
29 requires "Try::Tiny" => "0";
30 requires "base" => "0";
31 requires "constant" => "0";
32 requires "strict" => "0";
33 requires "vars" => "0";
34 requires "warnings" => "0";
35
36 on 'test' => sub {
37 requires "Encode" => "0";
38 requires "ExtUtils::MakeMaker" => "0";
39 requires "File::Spec" => "0";
40 requires "Test::Class::Most" => "0";
41 requires "Test::Differences" => "0";
42 requires "Test::More" => "0.96";
43 requires "Test::Warnings" => "0";
44 requires "autodie" => "0";
45 requires "lib" => "0";
46 };
47
48 on 'test' => sub {
49 recommends "CPAN::Meta" => "2.120900";
50 };
51
52 on 'configure' => sub {
53 requires "ExtUtils::MakeMaker" => "0";
54 };
55
56 on 'develop' => sub {
57 requires "CHI" => "0";
58 requires "Code::TidyAll" => "0";
59 requires "Code::TidyAll::Plugin::Perl::AlignMooseAttributes" => "0";
60 requires "JSON::MaybeXS" => "0";
61 requires "Mason::Tidy" => "0";
62 requires "Mason::Tidy::App" => "0";
63 requires "Perl::Critic" => "1.123";
64 requires "Perl::Critic::Policy::Moose::RequireMakeImmutable" => "0";
65 requires "Perl::Tidy" => "20150815";
66 requires "Perl::Tidy::Sweetened" => "1.00";
67 requires "Pod::Checker" => "0";
68 requires "Pod::Spell" => "0";
69 requires "Pod::Tidy" => "0";
70 requires "SVN::Look" => "0";
71 requires "Test::CPAN::Changes" => "0.19";
72 requires "Test::Mojibake" => "0";
73 requires "Test::More" => "0.88";
74 requires "Test::NoTabs" => "0";
75 requires "Test::Pod" => "1.41";
76 requires "Test::Spelling" => "0.12";
77 requires "Test::Version" => "1";
78 };
0 name = Code-TidyAll
1 author = Jonathan Swartz <swartz@pobox.com>
2 author = Dave Rolsky <autarch@urth.org>
3 license = Perl_5
4 copyright_year = 2011
5 copyright_holder = Jonathan Swartz
6
7 [@DROLSKY]
8 dist = Code-TidyAll
9 prereqs_skip = JSON::MaybeXS
10 prereqs_skip = Mason::Tidy
11 prereqs_skip = Mason::Tidy::App
12 prereqs_skip = Perl::Tidy
13 prereqs_skip = Perl::Tidy::Sweetened
14 prereqs_skip = Pod::Checker
15 prereqs_skip = Pod::Spell
16 prereqs_skip = Pod::Tidy
17 prereqs_skip = SVN::Look
18 stopwords_file = .ispell_english
19 -remove = DROLSKY::TidyAll
20 ; This ends up matching legitimate markdown
21 -remove = Git::CheckFor::MergeConflicts
22 -remove = MakeMaker
23 ; Many plugins won't compile without optional prereqs
24 -remove = Test::Compile
25 ; The Pod::Tidy tidying leaves spaces at the ends of lines
26 -remove = Test::EOL
27 -remove = Test::Pod::Coverage::Configurable
28 ; Can't resolve L<Mason> for some reason
29 -remove = Test::Pod::LinkCheck
30 -remove = Test::Pod::No404s
31 -remove = Test::Portability
32 -remove = Test::Synopsis
33 -remove = Test::TidyAll
34
35 ;authordep Dist::Zilla::Plugin::MakeMaker::Awesome
36 [=inc::MyMakeMaker]
37
38 ;authordep Pod::Tidy
39
40 [Prereqs / DevelopRequires]
41 CHI = 0
42 Code::TidyAll::Plugin::Perl::AlignMooseAttributes = 0
43 JSON::MaybeXS = 0
44 Mason::Tidy = 0
45 Mason::Tidy::App = 0
46 Perl::Critic::Policy::Moose::RequireMakeImmutable = 0
47 Perl::Tidy = 20150815
48 Perl::Tidy::Sweetened = 1.00
49 Pod::Checker = 0
50 Pod::Spell = 0
51 Pod::Tidy = 0
52 SVN::Look = 0
53
54 [MetaNoIndex]
55 file = lib/Code/TidyAll/Util.pm
56
57 [TidyAll]
105105 (insert-file-contents error-file))
106106 (when (< (length (window-list)) 2)
107107 (split-window-vertically))
108 (set-window-buffer (next-window) error-buffer)))))))))
108 (set-window-buffer (next-window) error-buffer))))
109 (delete-file error-file))))))
110
111 (provide 'tidyall)
0 package inc::MyMakeMaker;
1
2 use Moose;
3
4 use namespace::autoclean;
5
6 extends 'Dist::Zilla::Plugin::MakeMaker::Awesome';
7
8 override _build_MakeFile_PL_template => sub {
9 return super() . do { local $/ = undef; <DATA> };
10 };
11
12 __PACKAGE__->meta->make_immutable;
13
14 1;
15
16 __DATA__
17 use inc::Util qw(make_node_symlinks);
18
19 make_node_symlinks();
20
0 package inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll;
1
2 use namespace::autoclean;
3
4 use Moose;
5 with 'Pod::Weaver::Role::Section';
6
7 use Pod::Elemental::Selectors;
8
9 # Add "SEE ALSO: Code::TidyAll"
10
11 sub weave_section {
12 my ( $self, $document, $input ) = @_;
13
14 return if $input->{filename} =~ m{\QCode/TidyAll.pm};
15
16 my $idc = $input->{pod_document}->children;
17 for ( my $i = 0; $i < scalar @{$idc}; $i++ ) {
18 next unless my $para = $idc->[$i];
19 return
20 if $para->can('command')
21 && $para->command eq 'head1'
22 && $para->content eq 'SEE ALSO';
23 }
24
25 push @{ $document->children },
26 Pod::Elemental::Element::Nested->new(
27 {
28 command => 'head1',
29 content => 'SEE ALSO',
30 children => [
31 Pod::Elemental::Element::Pod5::Ordinary->new(
32 { content => "L<Code::TidyAll>" }
33 ),
34 ],
35 }
36 );
37 }
38
39 __PACKAGE__->meta->make_immutable;
40
41 1;
0 package inc::Util;
1
2 use strict;
3 use warnings;
4
5 use Exporter qw(import);
6 use File::Path qw(mkpath);
7
8 our @EXPORT_OK = qw(make_node_symlinks);
9
10 sub make_node_symlinks {
11 return unless eval {
12 no warnings 'uninitialized';
13 symlink( qw{}, q{} );
14 1;
15 };
16
17 my %links = (
18 'css-beautify' => '../js-beautify/js/bin/css-beautify.js',
19 'cssunminifier' => '../cssunminifier/bin/cssunminifier',
20 'html-beautify' => '../js-beautify/js/bin/html-beautify.js',
21 'js-beautify' => '../js-beautify/js/bin/js-beautify.js',
22 'jshint' => '../jshint/bin/jshint',
23 'jslint' => '../jslint/bin/jslint.js',
24 );
25
26 my $bin = 'node_modules/.bin';
27 mkpath( $bin, 0, 0755 );
28 chdir $bin or die "Cannot chdir to $bin: $!";
29
30 for my $from ( keys %links ) {
31 symlink $links{$from}, $from unless -l $from || -f _;
32 }
33 }
34
35 1;
00 package Code::TidyAll::Cache;
1 $Code::TidyAll::Cache::VERSION = '0.20';
2 use Digest::SHA1 qw(sha1_hex);
3 use Code::TidyAll::Util qw(dirname mkpath read_file write_file);
1
2 use Digest::SHA qw(sha1_hex);
3 use Code::TidyAll::Util qw(dirname mkpath);
4 use File::Slurp::Tiny qw(read_file write_file);
45 use Moo;
6
7 our $VERSION = '0.32';
58
69 has 'cache_dir' => ( is => 'ro', required => 1 );
710
0 package Code::TidyAll::CacheModel::Shared;
1
2 use Moo;
3 extends 'Code::TidyAll::CacheModel';
4
5 our $VERSION = '0.32';
6
7 sub _build_cache_key {
8 my $self = shift;
9 return $self->_sig(
10 [
11 $self->SUPER::_build_cache_key,
12 $self->file_contents
13 ]
14 );
15 }
16
17 sub _build_cache_value {
18 return 1;
19 }
20
21 sub remove {
22 return;
23 }
24
25 1;
26
27 # ABSTRACT: Shared cache model for Code::TidyAll
28
29 __END__
30
31 =pod
32
33 =head1 NAME
34
35 Code::TidyAll::CacheModel::Shared - Shared cache model for Code::TidyAll
36
37 =head1 VERSION
38
39 version 0.32
40
41 =head1 SYNOPSIS
42
43 my $cta = Code::TidyAll->new(
44 cache_model_class => 'Code::TidyAll::CacheModel::Shared',
45 ...
46 );
47
48 =head1 DESCRIPTION
49
50 An alternative caching model for Code::TidyAll designed to work in shared build
51 systems / systems with lots of branches.
52
53 This cache model uses both the file name and file contents to build the cache
54 key and a meaningless cache value. It does not care about the modification time
55 of the file.
56
57 This allows you to share a cache when you might have several versions of a file
58 that you switch backwards and forwards between (e.g. when you're working on
59 several branches) and keep the cache values
60
61 =head1 SEE ALSO
62
63 L<Code::TidyAll>
64
65 =head1 AUTHORS
66
67 =over 4
68
69 =item *
70
71 Jonathan Swartz <swartz@pobox.com>
72
73 =item *
74
75 Dave Rolsky <autarch@urth.org>
76
77 =back
78
79 =head1 COPYRIGHT AND LICENSE
80
81 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
82
83 This is free software; you can redistribute it and/or modify it under the same
84 terms as the Perl 5 programming language system itself.
85
86 =cut
0 package Code::TidyAll::CacheModel;
1
2 use Digest::SHA qw(sha1_hex);
3 use File::Slurp::Tiny qw(read_file);
4 use Moo;
5
6 our $VERSION = '0.32';
7
8 # todo, type checking?
9
10 has 'base_sig' => ( is => 'ro', default => "" );
11 has 'cache_engine' => ( is => 'ro' );
12 has 'cache_key' => ( is => 'lazy', clearer => 1 );
13 has 'cache_value' => ( is => 'lazy', clearer => 1 );
14 has 'file_contents' => ( is => 'rw', lazy => 1, builder => 1, trigger => 1, clearer => 1 );
15 has 'full_path' => ( is => 'ro', required => 1 );
16 has 'is_cached' => ( is => 'rw', lazy => 1, builder => 1, clearer => 1 );
17 has 'path' => ( is => 'ro', required => 1 );
18
19 sub _build_file_contents {
20 my ($self) = @_;
21 return read_file( $self->full_path );
22 }
23
24 sub _trigger_file_contents {
25 my $self = shift;
26 $self->clear_cache_key;
27 $self->clear_is_cached;
28 $self->clear_cache_value;
29 return;
30 }
31
32 sub _build_cache_key {
33 my ($self) = @_;
34 return 'sig/' . $self->path;
35 }
36
37 sub _build_cache_value {
38 my ($self) = @_;
39
40 # this stat isn't ideal, but it'll do
41 my $last_mod = ( stat( $self->full_path ) )[9];
42 return $self->_sig( [ $self->base_sig, $last_mod, $self->file_contents ] );
43 }
44
45 sub _build_is_cached {
46 my ($self) = @_;
47 my $cache_engine = $self->cache_engine or return;
48 my $cached_value = $cache_engine->get( $self->cache_key );
49 return defined $cached_value && $cached_value eq $self->cache_value;
50 }
51
52 sub update {
53 my ($self) = @_;
54 my $cache_engine = $self->cache_engine or return;
55 $cache_engine->set( $self->cache_key, $self->cache_value );
56 $self->is_cached(1);
57 return;
58 }
59
60 sub remove {
61 my ($self) = @_;
62 my $cache_engine = $self->cache_engine or return;
63 $cache_engine->remove( $self->cache_key );
64 return;
65 }
66
67 sub _sig {
68 my ( $self, $data ) = @_;
69 return sha1_hex( join( ",", @$data ) );
70 }
71
72 1;
73
74 # ABSTRACT: Caching model for Code::TidyAll
75
76 __END__
77
78 =pod
79
80 =head1 NAME
81
82 Code::TidyAll::CacheModel - Caching model for Code::TidyAll
83
84 =head1 VERSION
85
86 version 0.32
87
88 =head1 SYNOPSIS
89
90 my $cache_model = Cody::TidyAll::CacheModel->new(
91 cache_engine => Code::TidyAll::Cache->new(...),
92 path => "/path/to/file/to/cache",
93 );
94
95 # check cache
96 print "Yes!" if $cache_model->is_cached;
97
98 # update cache
99 $cache_model->clear_file_contents;
100 $cache_model->update;
101
102 # update the cache when you know the file contents
103 $cache_model->file_contents($new_content);
104 $cache_model->update;
105
106 # force removal from cache
107 $cache_model->remove;
108
109 =head1 DESCRIPTION
110
111 A cache model for Code::TidyAll. Different subclasses can employ different
112 caching techniques.
113
114 The basic model implemented here is simple; It stores in the cache a hash key
115 of the file contents keyed by a hash key of the file's path.
116
117 =head2 Attributes
118
119 =over
120
121 =item full_path (required, ro)
122
123 The full path to the file on disk
124
125 =item path (required, ro)
126
127 The local path to the file (i.e. what the cache system will consider the
128 canonical name of the file)
129
130 =item cache_engine (optional, default undef, ro)
131
132 A C<Code::TidyAll::Cache> compatible instance, or, if no caching is required
133 undef.
134
135 =item base_sig (optional, default empty string, ro)
136
137 A base signature.
138
139 =item file_contents (optional, default loads file contents from disk, rw)
140
141 =item is_cached (optional, default computed, rw)
142
143 A flag indicating if this is cached. By default checks that the cache key and
144 cache value match the cache.
145
146 =back
147
148 =head2 Methods
149
150 =over
151
152 =item cache_key
153
154 The computed cache key for the file
155
156 =item cache_value
157
158 The computed cache value for the file
159
160 =item update
161
162 Updates the cache
163
164 =item remove
165
166 Attempts to remove the value from the cache
167
168 =back
169
170 =head1 SEE ALSO
171
172 L<Code::TidyAll>
173
174 =head1 AUTHORS
175
176 =over 4
177
178 =item *
179
180 Jonathan Swartz <swartz@pobox.com>
181
182 =item *
183
184 Dave Rolsky <autarch@urth.org>
185
186 =back
187
188 =head1 COPYRIGHT AND LICENSE
189
190 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
191
192 This is free software; you can redistribute it and/or modify it under the same
193 terms as the Perl 5 programming language system itself.
194
195 =cut
00 package Code::TidyAll::Config::INI::Reader;
1 $Code::TidyAll::Config::INI::Reader::VERSION = '0.20';
1
22 use strict;
33 use warnings;
44 use base qw(Config::INI::Reader);
5
6 our $VERSION = '0.32';
57
68 sub set_value {
79 my ( $self, $name, $value ) = @_;
810
911 if ( exists( $self->{data}{ $self->current_section }{$name} ) ) {
1012 die "cannot list multiple config values for '$name'"
11 unless $name =~ /select|ignore/;
13 unless $name =~ /select|ignore/;
1214 $self->{data}{ $self->current_section }{$name} .= " " . $value;
1315 }
1416 else {
00 package Code::TidyAll::Git::Precommit;
1 $Code::TidyAll::Git::Precommit::VERSION = '0.20';
1
22 use Capture::Tiny qw(capture_stdout capture_stderr);
33 use Code::TidyAll;
4 use Code::TidyAll::Util qw(dirname mkpath realpath tempdir_simple write_file);
4 use Code::TidyAll::Util qw(dirname mkpath realpath tempdir_simple);
55 use Cwd qw(cwd);
6 use File::Slurp::Tiny qw(write_file);
67 use Guard;
78 use Log::Any qw($log);
89 use IPC::System::Simple qw(capturex run);
910 use Moo;
1011 use Try::Tiny;
1112
13 our $VERSION = '0.32';
14
1215 # Public
1316 has 'conf_name' => ( is => 'ro' );
14 has 'git_path' => ( is => 'ro', default => sub { 'git' } );
17 has 'git_path' => ( is => 'ro', default => 'git' );
1518 has 'no_stash' => ( is => 'ro' );
1619 has 'reject_on_error' => ( is => 'ro' );
17 has 'tidyall_class' => ( is => 'ro', default => sub { "Code::TidyAll" } );
20 has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' );
1821 has 'tidyall_options' => ( is => 'ro', default => sub { {} } );
1922
2023 sub check {
2932 # Find conf file at git root
3033 my $root_dir = capturex( $self->git_path, "rev-parse", "--show-toplevel" );
3134 chomp($root_dir);
32 my @conf_names =
33 $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names;
34 my ($conf_file) = grep { -f } map { join( "/", $root_dir, $_ ) } @conf_names
35 or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) );
35 my @conf_names
36 = $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names;
37 my ($conf_file) = grep {-f} map { join( "/", $root_dir, $_ ) } @conf_names
38 or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) );
3639
3740 # Store the stash, and restore it upon exiting this scope
3841 unless ( $self->no_stash ) {
4245
4346 # Gather file paths to be committed
4447 my $output = capturex( $self->git_path, "status", "--porcelain" );
45 my @files = grep { -f } ( $output =~ /^[MA]\s+(.*)/gm );
48 my @files = grep {-f} ( $output =~ /^[MA]\s+(.*)/gm );
4649
4750 my $tidyall = $tidyall_class->new_from_conf_file(
4851 $conf_file,
5154 mode => 'commit',
5255 %{ $self->tidyall_options },
5356 );
54 my @results = $tidyall->process_paths( map { "$root_dir/$_" } @files );
57 my @results = $tidyall->process_paths( map {"$root_dir/$_"} @files );
5558
5659 if ( my @error_results = grep { $_->error } @results ) {
5760 my $error_count = scalar(@error_results);
58 $fail_msg = sprintf( "%d file%s did not pass tidyall check\n",
59 $error_count, $error_count > 1 ? "s" : "" );
61 $fail_msg = sprintf(
62 "%d file%s did not pass tidyall check\n",
63 $error_count, $error_count > 1 ? "s" : ""
64 );
6065 }
6166 }
6267 catch {
6873
6974 1;
7075
76 # ABSTRACT: Git pre-commit hook that requires files to be tidyall'd
77
7178 __END__
7279
7380 =pod
7986
8087 =head1 VERSION
8188
82 version 0.20
89 version 0.32
8390
8491 =head1 SYNOPSIS
8592
96103
97104 This module implements a L<Git pre-commit
98105 hook|http://git-scm.com/book/en/Customizing-Git-Git-Hooks> that checks if all
99 files are tidied and valid according to L<tidyall|tidyall>, and rejects the
100 commit if not. Files/commits are never modified by this hook.
101
102 See also L<Code::TidyAll::Git::Prereceive|Code::TidyAll::Git::Prereceive>,
103 which validates pushes to a shared repo.
106 files are tidied and valid according to L<tidyall>, and rejects the commit if
107 not. Files/commits are never modified by this hook.
108
109 See also L<Code::TidyAll::Git::Prereceive>, which validates pushes to a shared
110 repo.
104111
105112 =head1 METHODS
106113
109116 =item check (key/value params...)
110117
111118 Class method. Check that all files being added or modified in this commit are
112 tidied and valid according to L<tidyall|tidyall>. If not, then the entire
113 commit is rejected and the reason(s) are output to the client. e.g.
114
115 % git commit -m "fixups" CHI.pm CHI/Driver.pm
119 tidied and valid according to L<tidyall>. If not, then the entire commit is
120 rejected and the reason(s) are output to the client. e.g.
121
122 % git commit -m "fixups" CHI.pm CHI/Driver.pm
116123 2 files did not pass tidyall check
117124 lib/CHI.pm: *** 'PerlTidy': needs tidying
118125 lib/CHI/Driver.pm: *** 'PerlCritic': Code before strictures are enabled
160167
161168 =item tidyall_class
162169
163 Subclass to use instead of L<Code::TidyAll|Code::TidyAll>
170 Subclass to use instead of L<Code::TidyAll>
164171
165172 =item tidyall_options
166173
167 Hashref of options to pass to the L<Code::TidyAll|Code::TidyAll> constructor
174 Hashref of options to pass to the L<Code::TidyAll> constructor
168175
169176 =back
170177
216223 More information on pre-commit hooks and the impossibility of enforcing them
217224 L<here|http://stackoverflow.com/questions/3703159/git-remote-shared-pre-commit-hook>.
218225
219 See also L<Code::TidyAll::Git::Prereceive|Code::TidyAll::Git::Prereceive>,
220 which enforces tidyall on pushes to a remote shared repository.
226 See also L<Code::TidyAll::Git::Prereceive>, which enforces tidyall on pushes to
227 a remote shared repository.
221228
222229 =head1 SEE ALSO
223230
224 L<Code::TidyAll|Code::TidyAll>
225
226 =head1 AUTHOR
231 L<Code::TidyAll>
232
233 =head1 AUTHORS
234
235 =over 4
236
237 =item *
227238
228239 Jonathan Swartz <swartz@pobox.com>
229240
241 =item *
242
243 Dave Rolsky <autarch@urth.org>
244
245 =back
246
230247 =head1 COPYRIGHT AND LICENSE
231248
232 This software is copyright (c) 2011 by Jonathan Swartz.
233
234 This is free software; you can redistribute it and/or modify it under
235 the same terms as the Perl 5 programming language system itself.
249 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
250
251 This is free software; you can redistribute it and/or modify it under the same
252 terms as the Perl 5 programming language system itself.
236253
237254 =cut
00 package Code::TidyAll::Git::Prereceive;
1 $Code::TidyAll::Git::Prereceive::VERSION = '0.20';
1
22 use Code::TidyAll;
3 use Code::TidyAll::Util qw(dirname realpath tempdir_simple read_file write_file);
3 use Code::TidyAll::Util qw(dirname realpath tempdir_simple);
44 use Capture::Tiny qw(capture);
5 use Digest::SHA1 qw(sha1_hex);
5 use Digest::SHA qw(sha1_hex);
6 use File::Slurp::Tiny qw(read_file write_file);
67 use IPC::System::Simple qw(capturex run);
78 use Moo;
89 use Try::Tiny;
910
11 our $VERSION = '0.32';
12
1013 # Public
11 has 'allow_repeated_push' => ( is => 'ro', default => sub { 3 } );
14 has 'allow_repeated_push' => ( is => 'ro', default => 3 );
1215 has 'conf_name' => ( is => 'ro' );
1316 has 'extra_conf_files' => ( is => 'ro', default => sub { [] } );
14 has 'git_path' => ( is => 'ro', default => sub { 'git' } );
17 has 'git_path' => ( is => 'ro', default => 'git' );
1518 has 'reject_on_error' => ( is => 'ro' );
16 has 'tidyall_class' => ( is => 'ro', default => sub { "Code::TidyAll" } );
19 has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' );
1720 has 'tidyall_options' => ( is => 'ro', default => sub { {} } );
1821
1922 sub check {
6770 if ( my @error_results = grep { $_->error } @results ) {
6871 unless ( $self->check_repeated_push($input) ) {
6972 my $error_count = scalar(@error_results);
70 $fail_msg = sprintf( "%d file%s did not pass tidyall check",
71 $error_count, $error_count > 1 ? "s" : "" );
73 $fail_msg = sprintf(
74 "%d file%s did not pass tidyall check",
75 $error_count, $error_count > 1 ? "s" : ""
76 );
7277 }
7378 }
7479 return $fail_msg;
8085 my $temp_dir = tempdir_simple();
8186 my @conf_names = $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names;
8287 my ($conf_file) = grep { $self->get_file_contents( $_, $commit ) } @conf_names
83 or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) );
88 or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) );
8489 foreach my $rel_file ( $conf_file, @{ $self->extra_conf_files } ) {
8590 my $contents = $self->get_file_contents( $rel_file, $commit )
86 or die sprintf( "could not find file '%s' in repo root", $rel_file );
91 or die sprintf( "could not find file '%s' in repo root", $rel_file );
8792 write_file( "$temp_dir/$rel_file", $contents );
8893 }
8994 my $tidyall = $self->tidyall_class->new_from_conf_file(
101106 sub get_changed_files {
102107 my ( $self, $base, $commit ) = @_;
103108 my $output = capturex( $self->git_path, "diff", "--numstat", "--name-only", "$base..$commit" );
104 my @files = grep { /\S/ } split( "\n", $output );
109 my @files = grep {/\S/} split( "\n", $output );
105110 return @files;
106111 }
107112
140145
141146 1;
142147
148 # ABSTRACT: Git pre-receive hook that requires files to be tidyall'd
149
143150 __END__
144151
145152 =pod
151158
152159 =head1 VERSION
153160
154 version 0.20
161 version 0.32
155162
156163 =head1 SYNOPSIS
157164
161168 use Code::TidyAll::Git::Prereceive;
162169 use strict;
163170 use warnings;
164
171
165172 Code::TidyAll::Git::Prereceive->check();
166173
167174
180187
181188 This module implements a L<Git pre-receive
182189 hook|http://git-scm.com/book/en/Customizing-Git-Git-Hooks> that checks if all
183 pushed files are tidied and valid according to L<tidyall|tidyall>, and rejects
184 the push if not.
190 pushed files are tidied and valid according to L<tidyall>, and rejects the push
191 if not.
185192
186193 This is typically used to validate pushes from multiple developers to a shared
187194 repo, possibly on a remote server.
188195
189 See also L<Code::TidyAll::Git::Precommit|Code::TidyAll::Git::Precommit>, which
190 operates locally.
196 See also L<Code::TidyAll::Git::Precommit>, which operates locally.
191197
192198 =head1 METHODS
193199
197203
198204 An all-in-one class method. Reads commit info from standard input, then checks
199205 that all files being added or modified in this push are tidied and valid
200 according to L<tidyall|tidyall>. If not, then the entire push is rejected and
201 the reason(s) are output to the client. e.g.
206 according to L<tidyall>. If not, then the entire push is rejected and the
207 reason(s) are output to the client. e.g.
202208
203209 % git push
204210 Counting objects: 9, done.
205211 ...
206 remote: [checked] lib/CHI/Util.pm
207 remote: Code before strictures are enabled on line 13 [TestingAndDebugging::RequireUseStrict]
208 remote:
209 remote: 1 file did not pass tidyall check
212 remote: [checked] lib/CHI/Util.pm
213 remote: Code before strictures are enabled on line 13 [TestingAndDebugging::RequireUseStrict]
214 remote:
215 remote: 1 file did not pass tidyall check
210216 To ...
211217 ! [remote rejected] master -> master (pre-receive hook declined)
212218
218224
219225 % git push
220226 ...
221 remote: 1 file did not pass tidyall check
227 remote: 1 file did not pass tidyall check
222228
223229 % git push
224230 ...
225231 *** Identical push seen 2 times
226 remote: 1 file did not pass tidyall check
232 remote: 1 file did not pass tidyall check
227233
228234 % git push
229235 ...
275281
276282 =item tidyall_class
277283
278 Subclass to use instead of L<Code::TidyAll|Code::TidyAll>
284 Subclass to use instead of L<Code::TidyAll>
279285
280286 =item tidyall_options
281287
282 Hashref of options to pass to the L<Code::TidyAll|Code::TidyAll> constructor.
283 You can use this to override the default options
288 Hashref of options to pass to the L<Code::TidyAll> constructor. You can use
289 this to override the default options
284290
285291 mode => 'commit',
286292 quiet => 1,
309315
310316 =head1 SEE ALSO
311317
312 L<Code::TidyAll|Code::TidyAll>
313
314 =head1 AUTHOR
318 L<Code::TidyAll>
319
320 =head1 AUTHORS
321
322 =over 4
323
324 =item *
315325
316326 Jonathan Swartz <swartz@pobox.com>
317327
328 =item *
329
330 Dave Rolsky <autarch@urth.org>
331
332 =back
333
318334 =head1 COPYRIGHT AND LICENSE
319335
320 This software is copyright (c) 2011 by Jonathan Swartz.
321
322 This is free software; you can redistribute it and/or modify it under
323 the same terms as the Perl 5 programming language system itself.
336 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
337
338 This is free software; you can redistribute it and/or modify it under the same
339 terms as the Perl 5 programming language system itself.
324340
325341 =cut
00 package Code::TidyAll::Git::Util;
1 $Code::TidyAll::Git::Util::VERSION = '0.20';
1
22 use Cwd qw(realpath);
33 use Code::TidyAll::Util qw(pushd uniq);
44 use IPC::System::Simple qw(capturex);
55 use strict;
66 use warnings;
77 use base qw(Exporter);
8
9 our $VERSION = '0.32';
810
911 our @EXPORT_OK = qw(git_uncommitted_files);
1012
1517 my $pushd = pushd($dir);
1618 my $output = capturex( "git", "status" );
1719 my @files = ( $output =~ /(?:new file|modified):\s+(.*)/g );
18 @files = uniq( map { "$dir/$_" } @files );
20 @files = uniq( map {"$dir/$_"} @files );
1921 return @files;
2022 }
2123
00 package Code::TidyAll::Plugin::CSSUnminifier;
1 $Code::TidyAll::Plugin::CSSUnminifier::VERSION = '0.20';
1
22 use IPC::System::Simple qw(run);
33 use Moo;
44 extends 'Code::TidyAll::Plugin';
55
6 sub _build_cmd { 'cssunminifier' }
6 our $VERSION = '0.32';
7
8 sub _build_cmd {'cssunminifier'}
79
810 sub transform_file {
911 my ( $self, $file ) = @_;
1315
1416 1;
1517
18 # ABSTACT: Use cssunminifier with tidyall
19
1620 __END__
1721
1822 =pod
19
20 =head1 NAME
21
22 Code::TidyAll::Plugin::CSUnminifier - use cssunminifier with tidyall
23
24 =head1 VERSION
25
26 version 0.20
2723
2824 =head1 SYNOPSIS
2925
5753 Full path to C<cssunminifier>
5854
5955 =back
60
61 =head1 SEE ALSO
62
63 L<Code::TidyAll|Code::TidyAll>
64
65 =head1 AUTHOR
66
67 Jonathan Swartz <swartz@pobox.com>
68
69 =head1 COPYRIGHT AND LICENSE
70
71 This software is copyright (c) 2011 by Jonathan Swartz.
72
73 This is free software; you can redistribute it and/or modify it under
74 the same terms as the Perl 5 programming language system itself.
75
76 =cut
0 package Code::TidyAll::Plugin::DiffOnTidyError;
1
2 use strict;
3 use warnings;
4
5 use File::Basename qw( basename );
6 use File::Which qw( which );
7 use IPC::Run3 qw( run3 );
8 use Moo;
9
10 our $VERSION = '0.32';
11
12 extends 'Code::TidyAll::Plugin';
13 with 'Code::TidyAll::Role::Tempdir';
14
15 sub diff {
16 my $self = shift;
17 my $diff = shift;
18 my $orig = shift;
19 my $new = shift;
20 my $path = shift;
21
22 my $cmd = which('diff');
23 die 'Could not find a diff command in your $PATH'
24 unless $cmd;
25
26 my $orig_file = $self->_write_temp_file( basename($path) . '.orig', $orig );
27 my $new_file = $self->_write_temp_file( basename($path) . '.new', $new );
28
29 my $output;
30 run3(
31 [ $cmd, '-u', $orig_file, $new_file ],
32 \undef,
33 \$output,
34 \$output,
35 );
36
37 return $output;
38 }
39
40 1;
41
42 # ABSTRACT: Include a diff in error message when code needs tidying
43
44 __END__
45
46 =pod
47
48 =head1 NAME
49
50 Code::TidyAll::Plugin::DiffOnTidyError - Include a diff in error message when
51 code needs tidying
52
53 =head1 VERSION
54
55 version 0.32
56
57 =head1 SYNOPSIS
58
59 # In configuration:
60
61 [DiffOnTidyError]
62 select = **/*
63
64 =head1 DESCRIPTION
65
66 When running L<Code::TidyAll> in C<check_only> mode, for example via
67 L<Test::Code::TidyAll>, this plugin adds a diff to the output when a file needs
68 to be tidied. This plugin uses the F<diff> command, and will simply die if it
69 cannot find one in your C<$PATH>.
70
71 This is helpful if you're trying to figure out what a test is failing on.
72
73 =head1 SEE ALSO
74
75 L<Code::TidyAll>
76
77 =head1 AUTHORS
78
79 =over 4
80
81 =item *
82
83 Jonathan Swartz <swartz@pobox.com>
84
85 =item *
86
87 Dave Rolsky <autarch@urth.org>
88
89 =back
90
91 =head1 COPYRIGHT AND LICENSE
92
93 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
94
95 This is free software; you can redistribute it and/or modify it under the same
96 terms as the Perl 5 programming language system itself.
97
98 =cut
00 package Code::TidyAll::Plugin::JSBeautify;
1 $Code::TidyAll::Plugin::JSBeautify::VERSION = '0.20';
2 use Capture::Tiny qw(capture_merged);
3 use Code::TidyAll::Util qw(write_file);
1
2 use File::Slurp::Tiny qw(write_file);
3 use IPC::Run3 qw(run3);
44 use Moo;
55 use Try::Tiny;
66 extends 'Code::TidyAll::Plugin';
77
8 sub _build_cmd { 'js-beautify' }
8 our $VERSION = '0.32';
9
10 sub _build_cmd {'js-beautify'}
911
1012 sub transform_file {
1113 my ( $self, $file ) = @_;
1214
1315 try {
1416 my $cmd = join( " ", $self->cmd, $self->argv, $file );
15 my $output = capture_merged { system($cmd) };
17
18 my $output;
19 run3( $cmd, \undef, \$output, \$output );
1620 write_file( $file, $output );
1721 }
1822 catch {
19 die sprintf( "%s exited with error - possibly bad arg list '%s'", $self->cmd, $self->argv );
23 die sprintf(
24 "%s exited with error - possibly bad arg list '%s'\n $_", $self->cmd,
25 $self->argv
26 );
2027 };
2128 }
2229
2330 1;
31
32 # ABSTRACT: Use js-beautify with tidyall
2433
2534 __END__
2635
2837
2938 =head1 NAME
3039
31 Code::TidyAll::Plugin::JSBeautify - use js-beautify with tidyall
40 Code::TidyAll::Plugin::JSBeautify - Use js-beautify with tidyall
3241
3342 =head1 VERSION
3443
35 version 0.20
44 version 0.32
3645
3746 =head1 SYNOPSIS
3847
7079
7180 =head1 SEE ALSO
7281
73 L<Code::TidyAll|Code::TidyAll>
82 L<Code::TidyAll>
7483
75 =head1 AUTHOR
84 =head1 AUTHORS
85
86 =over 4
87
88 =item *
7689
7790 Jonathan Swartz <swartz@pobox.com>
7891
92 =item *
93
94 Dave Rolsky <autarch@urth.org>
95
96 =back
97
7998 =head1 COPYRIGHT AND LICENSE
8099
81 This software is copyright (c) 2011 by Jonathan Swartz.
100 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
82101
83 This is free software; you can redistribute it and/or modify it under
84 the same terms as the Perl 5 programming language system itself.
102 This is free software; you can redistribute it and/or modify it under the same
103 terms as the Perl 5 programming language system itself.
85104
86105 =cut
00 package Code::TidyAll::Plugin::JSHint;
1 $Code::TidyAll::Plugin::JSHint::VERSION = '0.20';
2 use Code::TidyAll::Util qw(tempdir_simple write_file);
3 use Capture::Tiny qw(capture_merged);
1
2 use Code::TidyAll::Util qw(tempdir_simple);
3 use File::Slurp::Tiny qw(write_file);
4 use IPC::Run3 qw(run3);
45 use Moo;
56 extends 'Code::TidyAll::Plugin';
7
8 our $VERSION = '0.32';
69
710 sub validate_params {
811 my ( $self, $params ) = @_;
1114 return $self->SUPER::validate_params($params);
1215 }
1316
14 sub _build_cmd { 'jshint' }
17 sub _build_cmd {'jshint'}
1518
1619 sub BUILDARGS {
1720 my ( $class, %params ) = @_;
2023 my @options = split( /\s+/, $options_string );
2124 my $conf_dir = tempdir_simple();
2225 my $conf_file = "$conf_dir/jshint.json";
23 write_file( $conf_file, '{ ' . join( ",\n", map { "\"$_\": true" } @options ) . ' }' );
26 write_file( $conf_file, '{ ' . join( ",\n", map {"\"$_\": true"} @options ) . ' }' );
2427 $params{argv} ||= "";
2528 $params{argv} .= " --config $conf_file";
2629 }
3134 my ( $self, $file ) = @_;
3235
3336 my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file );
34 my $output = capture_merged { system($cmd) };
37 my $output;
38 run3( $cmd, \undef, \$output, \$output );
3539 if ( $output =~ /\S/ ) {
3640 $output =~ s/^$file:\s*//gm;
3741 die "$output\n";
4044
4145 1;
4246
47 # ABSTRACT: Use jshint with tidyall
48
4349 __END__
4450
4551 =pod
4652
4753 =head1 NAME
4854
49 Code::TidyAll::Plugin::JSHint - use jshint with tidyall
55 Code::TidyAll::Plugin::JSHint - Use jshint with tidyall
5056
5157 =head1 VERSION
5258
53 version 0.20
59 version 0.32
5460
5561 =head1 SYNOPSIS
5662
115121
116122 =head1 SEE ALSO
117123
118 L<Code::TidyAll|Code::TidyAll>
124 L<Code::TidyAll>
119125
120 =head1 AUTHOR
126 =head1 AUTHORS
127
128 =over 4
129
130 =item *
121131
122132 Jonathan Swartz <swartz@pobox.com>
123133
134 =item *
135
136 Dave Rolsky <autarch@urth.org>
137
138 =back
139
124140 =head1 COPYRIGHT AND LICENSE
125141
126 This software is copyright (c) 2011 by Jonathan Swartz.
142 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
127143
128 This is free software; you can redistribute it and/or modify it under
129 the same terms as the Perl 5 programming language system itself.
144 This is free software; you can redistribute it and/or modify it under the same
145 terms as the Perl 5 programming language system itself.
130146
131147 =cut
00 package Code::TidyAll::Plugin::JSLint;
1 $Code::TidyAll::Plugin::JSLint::VERSION = '0.20';
2 use Capture::Tiny qw(capture_merged);
1
2 use IPC::Run3 qw(run3);
33 use Moo;
44 extends 'Code::TidyAll::Plugin';
55
6 sub _build_cmd { 'jslint' }
6 our $VERSION = '0.32';
7
8 sub _build_cmd {'jslint'}
79
810 sub validate_file {
911 my ( $self, $file ) = @_;
1012
1113 my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file );
12 my $output = capture_merged { system($cmd) };
14 my $output;
15 run3( $cmd, \undef, \$output, \$output );
1316 die "$output\n" if $output !~ /is OK\./;
1417 }
1518
1619 1;
20
21 # ABSTRACT: Use jslint with tidyall
1722
1823 __END__
1924
2126
2227 =head1 NAME
2328
24 Code::TidyAll::Plugin::JSLint - use jslint with tidyall
29 Code::TidyAll::Plugin::JSLint - Use jslint with tidyall
2530
2631 =head1 VERSION
2732
28 version 0.20
33 version 0.32
2934
3035 =head1 SYNOPSIS
3136
6267
6368 =head1 SEE ALSO
6469
65 L<Code::TidyAll|Code::TidyAll>
70 L<Code::TidyAll>
6671
67 =head1 AUTHOR
72 =head1 AUTHORS
73
74 =over 4
75
76 =item *
6877
6978 Jonathan Swartz <swartz@pobox.com>
7079
80 =item *
81
82 Dave Rolsky <autarch@urth.org>
83
84 =back
85
7186 =head1 COPYRIGHT AND LICENSE
7287
73 This software is copyright (c) 2011 by Jonathan Swartz.
88 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
7489
75 This is free software; you can redistribute it and/or modify it under
76 the same terms as the Perl 5 programming language system itself.
90 This is free software; you can redistribute it and/or modify it under the same
91 terms as the Perl 5 programming language system itself.
7792
7893 =cut
00 package Code::TidyAll::Plugin::JSON;
1 $Code::TidyAll::Plugin::JSON::VERSION = '0.20';
1
22 use strict;
33 use warnings;
44
5 use JSON ();
5 use JSON::MaybeXS ();
66 use Moo;
7
8 our $VERSION = '0.32';
79
810 extends 'Code::TidyAll::Plugin';
911
10 has 'ascii' => ( is => 'ro', default => sub { 0 } );
12 has 'ascii' => ( is => 'ro', default => 0 );
1113
1214 sub transform_source {
1315 my $self = shift;
1416 my $source = shift;
1517
16 my $json = JSON->new->relaxed->pretty->canonical;
18 my $json = JSON::MaybeXS->new(
19 canonical => 1,
20 pretty => 1,
21 relaxed => 1,
22 utf8 => 1,
23 );
1724
1825 $json = $json->ascii if $self->ascii;
1926
2229
2330 1;
2431
32 # ABSTRACT: Use the JSON::MaybeXS module to tidy JSON documents with tidyall
33
2534 __END__
2635
2736 =pod
2837
2938 =head1 NAME
3039
31 Code::TidyAll::Plugin::JSON - use the JSON module with tidyall
40 Code::TidyAll::Plugin::JSON - Use the JSON::MaybeXS module to tidy JSON
41 documents with tidyall
3242
3343 =head1 VERSION
3444
35 version 0.20
45 version 0.32
3646
3747 =head1 SYNOPSIS
3848
4454
4555 =head1 DESCRIPTION
4656
47 Uses L<JSON> to format JSON files. Files are put into a canonical format with
48 the keys of objects sorted.
57 Uses L<JSON::MaybeXS> to format JSON files. Files are put into a canonical
58 format with the keys of objects sorted.
4959
5060 =head1 CONFIGURATION
5161
5969
6070 =head1 SEE ALSO
6171
62 L<Code::TidyAll|Code::TidyAll>
72 L<Code::TidyAll>
6373
64 =head1 AUTHOR
74 =head1 AUTHORS
75
76 =over 4
77
78 =item *
6579
6680 Jonathan Swartz <swartz@pobox.com>
6781
82 =item *
83
84 Dave Rolsky <autarch@urth.org>
85
86 =back
87
6888 =head1 COPYRIGHT AND LICENSE
6989
70 This software is copyright (c) 2011 by Jonathan Swartz.
90 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
7191
72 This is free software; you can redistribute it and/or modify it under
73 the same terms as the Perl 5 programming language system itself.
92 This is free software; you can redistribute it and/or modify it under the same
93 terms as the Perl 5 programming language system itself.
7494
7595 =cut
00 package Code::TidyAll::Plugin::MasonTidy;
1 $Code::TidyAll::Plugin::MasonTidy::VERSION = '0.20';
1
22 use Mason::Tidy;
33 use Mason::Tidy::App;
44 use Moo;
55 use Text::ParseWords qw(shellwords);
66 extends 'Code::TidyAll::Plugin';
77
8 sub _build_cmd { 'masontidy' }
8 our $VERSION = '0.32';
9
10 sub _build_cmd {'masontidy'}
911
1012 sub transform_source {
1113 my ( $self, $source ) = @_;
1820
1921 1;
2022
23 # ABSTRACT: Use masontidy with tidyall
24
2125 __END__
2226
2327 =pod
2428
2529 =head1 NAME
2630
27 Code::TidyAll::Plugin::MasonTidy - use masontidy with tidyall
31 Code::TidyAll::Plugin::MasonTidy - Use masontidy with tidyall
2832
2933 =head1 VERSION
3034
31 version 0.20
35 version 0.32
3236
3337 =head1 SYNOPSIS
3438
4044
4145 =head1 DESCRIPTION
4246
43 Runs L<masontidy|masontidy>, a tidier for L<HTML::Mason|HTML::Mason> and
44 L<Mason 2|Mason> components.
47 Runs L<masontidy>, a tidier for L<HTML::Mason> and L<Mason 2|Mason> components.
4548
4649 =head1 INSTALLATION
4750
48 Install L<masontidy|masontidy> from CPAN.
51 Install L<masontidy> from CPAN.
4952
5053 cpanm masontidy
5154
6568
6669 =head1 SEE ALSO
6770
68 L<Code::TidyAll|Code::TidyAll>
71 L<Code::TidyAll>
6972
70 =head1 AUTHOR
73 =head1 AUTHORS
74
75 =over 4
76
77 =item *
7178
7279 Jonathan Swartz <swartz@pobox.com>
7380
81 =item *
82
83 Dave Rolsky <autarch@urth.org>
84
85 =back
86
7487 =head1 COPYRIGHT AND LICENSE
7588
76 This software is copyright (c) 2011 by Jonathan Swartz.
89 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
7790
78 This is free software; you can redistribute it and/or modify it under
79 the same terms as the Perl 5 programming language system itself.
91 This is free software; you can redistribute it and/or modify it under the same
92 terms as the Perl 5 programming language system itself.
8093
8194 =cut
00 package Code::TidyAll::Plugin::PHPCodeSniffer;
1 $Code::TidyAll::Plugin::PHPCodeSniffer::VERSION = '0.20';
2 use IPC::System::Simple qw(runx EXIT_ANY);
3 use Capture::Tiny qw(capture_merged);
1
2 use IPC::Run3;
43 use Moo;
54 extends 'Code::TidyAll::Plugin';
65
7 sub _build_cmd { 'phpcs' }
6 our $VERSION = '0.32';
7
8 sub _build_cmd {'phpcs'}
89
910 sub validate_file {
1011 my ( $self, $file ) = @_;
1112
12 my $exit;
1313 my @cmd = ( $self->cmd, $self->argv, $file );
14 my $output = capture_merged { $exit = runx( EXIT_ANY, @cmd ) };
15 if ( $exit > 0 ) {
14 my $output;
15 run3( \@cmd, \undef, \$output, \$output );
16 if ( $? > 0 ) {
1617 $output ||= "problem running " . $self->cmd;
1718 die "$output\n";
1819 }
2021
2122 1;
2223
24 # ABSTRACT: Use phpcs with tidyall
25
2326 __END__
2427
2528 =pod
2629
2730 =head1 NAME
2831
29 Code::TidyAll::Plugin::PHPCodeSniffer - use phpcs with tidyall
32 Code::TidyAll::Plugin::PHPCodeSniffer - Use phpcs with tidyall
3033
3134 =head1 VERSION
3235
33 version 0.20
36 version 0.32
3437
3538 =head1 SYNOPSIS
3639
4649 Runs L<phpcs|http://pear.php.net/package/PHP_CodeSniffer> which analyzes PHP,
4750 JavaScript and CSS files and detects violations of a defined set of coding
4851 standards.
49
50 =head1 VERSION
51
52 version 0.15
5352
5453 =head1 INSTALLATION
5554
7372
7473 =head1 SEE ALSO
7574
76 L<Code::TidyAll|Code::TidyAll>
75 L<Code::TidyAll>
7776
78 =head1 AUTHOR
77 =head1 AUTHORS
78
79 =over 4
80
81 =item *
7982
8083 Jonathan Swartz <swartz@pobox.com>
8184
85 =item *
86
87 Dave Rolsky <autarch@urth.org>
88
89 =back
90
8291 =head1 COPYRIGHT AND LICENSE
8392
84 This software is copyright (c) 2011 by Jonathan Swartz.
93 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
8594
86 This is free software; you can redistribute it and/or modify it under
87 the same terms as the Perl 5 programming language system itself.
95 This is free software; you can redistribute it and/or modify it under the same
96 terms as the Perl 5 programming language system itself.
8897
8998 =cut
00 package Code::TidyAll::Plugin::PerlCritic;
1 $Code::TidyAll::Plugin::PerlCritic::VERSION = '0.20';
2 use Capture::Tiny qw(capture_merged);
1
2 use IPC::Run3 qw(run3);
33 use Moo;
44 extends 'Code::TidyAll::Plugin';
55
6 sub _build_cmd { 'perlcritic' }
6 our $VERSION = '0.32';
7
8 sub _build_cmd {'perlcritic'}
79
810 sub validate_file {
911 my ( $self, $file ) = @_;
1012
1113 my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file );
12 my $output = capture_merged { system($cmd) };
13 die "$output\n" if $output !~ /^.* source OK\n/;
14 my $output;
15 run3( $cmd, \undef, \$output, \$output );
16 die "$output\n" if $output !~ /^.* source OK\n/s;
1417 }
1518
1619 1;
20
21 # ABSTRACT: Use perlcritic with tidyall
1722
1823 __END__
1924
2126
2227 =head1 NAME
2328
24 Code::TidyAll::Plugin::PerlCritic - use perlcritic with tidyall
29 Code::TidyAll::Plugin::PerlCritic - Use perlcritic with tidyall
2530
2631 =head1 VERSION
2732
28 version 0.20
33 version 0.32
2934
3035 =head1 SYNOPSIS
3136
4550
4651 =head1 DESCRIPTION
4752
48 Runs L<perlcritic|perlcritic>, a Perl validator, and dies if any problems were
49 found.
53 Runs L<perlcritic>, a Perl validator, and dies if any problems were found.
5054
5155 =head1 INSTALLATION
5256
6670
6771 =head1 SEE ALSO
6872
69 L<Code::TidyAll|Code::TidyAll>
73 L<Code::TidyAll>
7074
71 =head1 AUTHOR
75 =head1 AUTHORS
76
77 =over 4
78
79 =item *
7280
7381 Jonathan Swartz <swartz@pobox.com>
7482
83 =item *
84
85 Dave Rolsky <autarch@urth.org>
86
87 =back
88
7589 =head1 COPYRIGHT AND LICENSE
7690
77 This software is copyright (c) 2011 by Jonathan Swartz.
91 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
7892
79 This is free software; you can redistribute it and/or modify it under
80 the same terms as the Perl 5 programming language system itself.
93 This is free software; you can redistribute it and/or modify it under the same
94 terms as the Perl 5 programming language system itself.
8195
8296 =cut
00 package Code::TidyAll::Plugin::PerlTidy;
1 $Code::TidyAll::Plugin::PerlTidy::VERSION = '0.20';
1
22 use Capture::Tiny qw(capture_merged);
33 use Perl::Tidy;
44 use Moo;
55 extends 'Code::TidyAll::Plugin';
6
7 our $VERSION = '0.32';
68
79 sub transform_source {
810 my ( $self, $source ) = @_;
911
1012 # perltidy reports errors in two different ways.
1113 # Argument/profile errors are output and an error_flag is returned.
12 # Syntax errors are sent to errorfile.
13 #
14 my ( $output, $error_flag, $errorfile, $destination );
14 # Syntax errors are sent to errorfile or stderr, depending on the
15 # the setting of -se/-nse (aka --standard-error-output). These flags
16 # might be hidden in other bundles, e.g. -pbp. Be defensive and
17 # check both.
18 my ( $output, $error_flag, $errorfile, $stderr, $destination );
1519 $output = capture_merged {
1620 $error_flag = Perl::Tidy::perltidy(
1721 argv => $self->argv,
1822 source => \$source,
1923 destination => \$destination,
24 stderr => \$stderr,
2025 errorfile => \$errorfile
2126 );
2227 };
28 die $stderr if $stderr;
2329 die $errorfile if $errorfile;
2430 die $output if $error_flag;
2531 print STDERR $output if defined($output);
2834
2935 1;
3036
37 # ABSTRACT: Use perltidy with tidyall
38
3139 __END__
3240
3341 =pod
3442
3543 =head1 NAME
3644
37 Code::TidyAll::Plugin::PerlTidy - use perltidy with tidyall
45 Code::TidyAll::Plugin::PerlTidy - Use perltidy with tidyall
3846
3947 =head1 VERSION
4048
41 version 0.20
49 version 0.32
4250
4351 =head1 SYNOPSIS
4452
5866
5967 =head1 DESCRIPTION
6068
61 Runs L<perltidy|perltidy>, a Perl tidier.
69 Runs L<perltidy>, a Perl tidier.
6270
6371 =head1 INSTALLATION
6472
7886
7987 =head1 SEE ALSO
8088
81 L<Code::TidyAll|Code::TidyAll>
89 L<Code::TidyAll>
8290
83 =head1 AUTHOR
91 =head1 AUTHORS
92
93 =over 4
94
95 =item *
8496
8597 Jonathan Swartz <swartz@pobox.com>
8698
99 =item *
100
101 Dave Rolsky <autarch@urth.org>
102
103 =back
104
87105 =head1 COPYRIGHT AND LICENSE
88106
89 This software is copyright (c) 2011 by Jonathan Swartz.
107 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
90108
91 This is free software; you can redistribute it and/or modify it under
92 the same terms as the Perl 5 programming language system itself.
109 This is free software; you can redistribute it and/or modify it under the same
110 terms as the Perl 5 programming language system itself.
93111
94112 =cut
0 package Code::TidyAll::Plugin::PerlTidySweet;
1
2 use Capture::Tiny qw(capture_merged);
3 use Perl::Tidy::Sweetened 1.00;
4 use Moo;
5 extends 'Code::TidyAll::Plugin';
6
7 our $VERSION = '0.32';
8
9 sub transform_source {
10 my ( $self, $source ) = @_;
11
12 # perltidy reports errors in two different ways.
13 # Argument/profile errors are output and an error_flag is returned.
14 # Syntax errors are sent to errorfile or stderr, depending on the
15 # the setting of -se/-nse (aka --standard-error-output). These flags
16 # might be hidden in other bundles, e.g. -pbp. Be defensive and
17 # check both.
18 my ( $output, $error_flag, $errorfile, $stderr, $destination );
19 $output = capture_merged {
20 $error_flag = Perl::Tidy::Sweetened::perltidy(
21 argv => $self->argv,
22 source => \$source,
23 destination => \$destination,
24 stderr => \$stderr,
25 errorfile => \$errorfile
26 );
27 };
28 die $stderr if $stderr;
29 die $errorfile if $errorfile;
30 die $output if $error_flag;
31 print STDERR $output if defined($output);
32 return $destination;
33 }
34
35 1;
36
37 # ABSTRACT: Use perltidy-sweet with tidyall
38
39 __END__
40
41 =pod
42
43 =head1 NAME
44
45 Code::TidyAll::Plugin::PerlTidySweet - Use perltidy-sweet with tidyall
46
47 =head1 VERSION
48
49 version 0.32
50
51 =head1 SYNOPSIS
52
53 # In configuration:
54
55 ; Configure in-line
56 ;
57 [PerlTidySweet]
58 select = lib/**/*.pm
59 argv = --noll
60
61 ; or refer to a .perltidyrc in the same directory
62 ;
63 [PerlTidySweet]
64 select = lib/**/*.pm
65 argv = --profile=$ROOT/.perltidyrc
66
67 =head1 DESCRIPTION
68
69 Runs L<perltidy-sweet>, a Perl tidier based on Perl::Tidy that also supports
70 new syntactic sugar as provided by L<Method::Signature::Simple>,
71 L<MooseX::Method::Signatures> and the p5-mop.
72
73 =head1 INSTALLATION
74
75 Install perltidy-sweet from CPAN.
76
77 cpanm Perl::Tidy::Sweet
78
79 =head1 CONFIGURATION
80
81 =over
82
83 =item argv
84
85 Arguments to pass to perltidy-sweet
86
87 =back
88
89 =head1 SEE ALSO
90
91 L<Code::TidyAll>
92
93 =head1 AUTHORS
94
95 =over 4
96
97 =item *
98
99 Jonathan Swartz <swartz@pobox.com>
100
101 =item *
102
103 Dave Rolsky <autarch@urth.org>
104
105 =back
106
107 =head1 COPYRIGHT AND LICENSE
108
109 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
110
111 This is free software; you can redistribute it and/or modify it under the same
112 terms as the Perl 5 programming language system itself.
113
114 =cut
00 package Code::TidyAll::Plugin::PodChecker;
1 $Code::TidyAll::Plugin::PodChecker::VERSION = '0.20';
2 use Capture::Tiny qw(capture_merged);
1
32 use Pod::Checker;
43 use Moo;
54 extends 'Code::TidyAll::Plugin';
5
6 our $VERSION = '0.32';
67
78 has 'warnings' => ( is => 'ro' );
89
1112
1213 my $result;
1314 my %options = ( defined( $self->warnings ) ? ( '-warnings' => $self->warnings ) : () );
14 my $checker = new Pod::Checker(%options);
15 my $output = capture_merged { $checker->parse_from_file( $file, \*STDERR ) };
15 my $checker = Pod::Checker->new(%options);
16 my $output;
17 open my $fh, '>', \$output;
18 $checker->parse_from_file( $file, $fh );
1619 die $output
17 if $checker->num_errors
18 or ( $self->warnings && $checker->num_warnings );
20 if $checker->num_errors > 0
21 || ( $self->warnings && $checker->num_warnings > 0 );
1922 }
2023
2124 1;
25
26 # ABSTRACT: Use podchecker with tidyall
2227
2328 __END__
2429
2631
2732 =head1 NAME
2833
29 Code::TidyAll::Plugin::PodChecker - use podchecker with tidyall
34 Code::TidyAll::Plugin::PodChecker - Use podchecker with tidyall
3035
3136 =head1 VERSION
3237
33 version 0.20
38 version 0.32
3439
3540 =head1 SYNOPSIS
3641
4954
5055 =head1 DESCRIPTION
5156
52 Runs L<podchecker|podchecker>, a POD validator, and dies if any problems were
53 found.
57 Runs L<podchecker>, a POD validator, and dies if any problems were found.
5458
5559 =head1 INSTALLATION
5660
7175
7276 =head1 SEE ALSO
7377
74 L<Code::TidyAll|Code::TidyAll>
78 L<Code::TidyAll>
7579
76 =head1 AUTHOR
80 =head1 AUTHORS
81
82 =over 4
83
84 =item *
7785
7886 Jonathan Swartz <swartz@pobox.com>
7987
88 =item *
89
90 Dave Rolsky <autarch@urth.org>
91
92 =back
93
8094 =head1 COPYRIGHT AND LICENSE
8195
82 This software is copyright (c) 2011 by Jonathan Swartz.
96 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
8397
84 This is free software; you can redistribute it and/or modify it under
85 the same terms as the Perl 5 programming language system itself.
98 This is free software; you can redistribute it and/or modify it under the same
99 terms as the Perl 5 programming language system itself.
86100
87101 =cut
00 package Code::TidyAll::Plugin::PodSpell;
1 $Code::TidyAll::Plugin::PodSpell::VERSION = '0.20';
1
22 use Code::TidyAll::Util qw(basename uniq);
33 use Capture::Tiny qw();
44 use IPC::System::Simple qw();
88 use Text::ParseWords qw(shellwords);
99 extends 'Code::TidyAll::Plugin';
1010
11 has 'ispell_argv' => ( is => 'ro', default => sub { '' } );
12 has 'ispell_cmd' => ( is => 'ro', default => sub { 'ispell' } );
11 our $VERSION = '0.32';
12
13 has 'ispell_argv' => ( is => 'ro', default => q{} );
14 has 'ispell_cmd' => ( is => 'ro', default => 'ispell' );
1315 has 'suggest' => ( is => 'ro' );
1416
1517 sub validate_file {
4345
4446 1;
4547
48 # ABSTRACT: Use Pod::Spell + ispell with tidyall
49
4650 __END__
4751
4852 =pod
4953
5054 =head1 NAME
5155
52 Code::TidyAll::Plugin::PodSpell - use Pod::Spell + ispell with tidyall
56 Code::TidyAll::Plugin::PodSpell - Use Pod::Spell + ispell with tidyall
5357
5458 =head1 VERSION
5559
56 version 0.20
60 version 0.32
5761
5862 =head1 SYNOPSIS
5963
114118
115119 =head1 SEE ALSO
116120
117 L<Code::TidyAll|Code::TidyAll>
121 L<Code::TidyAll>
118122
119 =head1 AUTHOR
123 =head1 AUTHORS
124
125 =over 4
126
127 =item *
120128
121129 Jonathan Swartz <swartz@pobox.com>
122130
131 =item *
132
133 Dave Rolsky <autarch@urth.org>
134
135 =back
136
123137 =head1 COPYRIGHT AND LICENSE
124138
125 This software is copyright (c) 2011 by Jonathan Swartz.
139 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
126140
127 This is free software; you can redistribute it and/or modify it under
128 the same terms as the Perl 5 programming language system itself.
141 This is free software; you can redistribute it and/or modify it under the same
142 terms as the Perl 5 programming language system itself.
129143
130144 =cut
00 package Code::TidyAll::Plugin::PodTidy;
1 $Code::TidyAll::Plugin::PodTidy::VERSION = '0.20';
1
22 use Capture::Tiny qw(capture_merged);
33 use Pod::Tidy;
44 use Moo;
55 extends 'Code::TidyAll::Plugin';
6
7 our $VERSION = '0.32';
68
79 has 'columns' => ( is => 'ro' );
810
2325
2426 1;
2527
28 # ABSTRACT: Use podtidy with tidyall
29
2630 __END__
2731
2832 =pod
2933
3034 =head1 NAME
3135
32 Code::TidyAll::Plugin::PodTidy - use podtidy with tidyall
36 Code::TidyAll::Plugin::PodTidy - Use podtidy with tidyall
3337
3438 =head1 VERSION
3539
36 version 0.20
40 version 0.32
3741
3842 =head1 SYNOPSIS
3943
4549
4650 =head1 DESCRIPTION
4751
48 Runs L<podtidy|podtidy>, which will tidy the POD in your Perl or POD-only file.
52 Runs L<podtidy>, which will tidy the POD in your Perl or POD-only file.
4953
5054 =head1 INSTALLATION
5155
6569
6670 =head1 SEE ALSO
6771
68 L<Code::TidyAll|Code::TidyAll>
72 L<Code::TidyAll>
6973
70 =head1 AUTHOR
74 =head1 AUTHORS
75
76 =over 4
77
78 =item *
7179
7280 Jonathan Swartz <swartz@pobox.com>
7381
82 =item *
83
84 Dave Rolsky <autarch@urth.org>
85
86 =back
87
7488 =head1 COPYRIGHT AND LICENSE
7589
76 This software is copyright (c) 2011 by Jonathan Swartz.
90 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
7791
78 This is free software; you can redistribute it and/or modify it under
79 the same terms as the Perl 5 programming language system itself.
92 This is free software; you can redistribute it and/or modify it under the same
93 terms as the Perl 5 programming language system itself.
8094
8195 =cut
00 package Code::TidyAll::Plugin::SortLines;
1 $Code::TidyAll::Plugin::SortLines::VERSION = '0.20';
1
22 use Moo;
33 extends 'Code::TidyAll::Plugin';
4
5 our $VERSION = '0.32';
46
57 sub transform_source {
68 my ( $self, $source ) = @_;
79
8 return join( "\n", sort( grep { /\S/ } split( /\n/, $source ) ) ) . "\n";
10 return join( "\n", sort( grep {/\S/} split( /\n/, $source ) ) ) . "\n";
911 }
1012
1113 1;
14
15 # ABSTRACT: Sort the lines in a file
1216
1317 __END__
1418
1620
1721 =head1 NAME
1822
19 Code::TidyAll::Plugin::SortLines - sort lines of a file
23 Code::TidyAll::Plugin::SortLines - Sort the lines in a file
2024
2125 =head1 VERSION
2226
23 version 0.20
27 version 0.32
2428
2529 =head1 SYNOPSIS
2630
3741
3842 =head1 SEE ALSO
3943
40 L<Code::TidyAll|Code::TidyAll>
44 L<Code::TidyAll>
4145
42 =head1 AUTHOR
46 =head1 AUTHORS
47
48 =over 4
49
50 =item *
4351
4452 Jonathan Swartz <swartz@pobox.com>
4553
54 =item *
55
56 Dave Rolsky <autarch@urth.org>
57
58 =back
59
4660 =head1 COPYRIGHT AND LICENSE
4761
48 This software is copyright (c) 2011 by Jonathan Swartz.
62 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
4963
50 This is free software; you can redistribute it and/or modify it under
51 the same terms as the Perl 5 programming language system itself.
64 This is free software; you can redistribute it and/or modify it under the same
65 terms as the Perl 5 programming language system itself.
5266
5367 =cut
00 package Code::TidyAll::Plugin;
1 $Code::TidyAll::Plugin::VERSION = '0.20';
2 use Code::TidyAll::Util qw(basename read_file write_file);
1
2 use Code::TidyAll::Util qw(basename);
33 use Code::TidyAll::Util::Zglob qw(zglobs_to_regex);
4 use File::Slurp::Tiny qw(read_file write_file);
45 use Scalar::Util qw(weaken);
56 use Moo;
67
8 our $VERSION = '0.32';
9
710 # External
8 has 'argv' => ( is => 'ro', default => sub { '' } );
11 has 'argv' => ( is => 'ro', default => q{} );
912 has 'class' => ( is => 'ro' );
1013 has 'cmd' => ( is => 'lazy' );
1114 has 'ignore' => ( is => 'ro' );
1316 has 'is_validator' => ( is => 'lazy' );
1417 has 'name' => ( is => 'ro', required => 1 );
1518 has 'select' => ( is => 'ro' );
19 has 'shebang' => ( is => 'ro' );
1620 has 'tidyall' => ( is => 'ro', required => 1, weak_ref => 1 );
21 has 'weight' => ( is => 'lazy' );
1722
1823 # Internal
1924 has 'ignore_regex' => ( is => 'lazy' );
5459 sub _build_is_validator {
5560 my ($self) = @_;
5661 return ( $self->can('validate_source') || $self->can('validate_file') ) ? 1 : 0;
62 }
63
64 # default weight
65 sub _build_weight {
66 my ($self) = @_;
67 return 60 if $self->is_validator;
68 return 50;
5769 }
5870
5971 sub BUILD {
7385 die sprintf(
7486 "unknown option%s %s for plugin '%s'",
7587 @bad_params > 1 ? "s" : "",
76 join( ", ", sort map { "'$_'" } @bad_params ),
88 join( ", ", sort map {"'$_'"} @bad_params ),
7789 $self->name
7890 );
7991 }
8395 my ( $self, $zglob_list ) = @_;
8496 $zglob_list = '' if !defined($zglob_list);
8597 my @zglobs = split( /\s+/, $zglob_list );
86 if ( my ($bad_zglob) = ( grep { m{^/} } @zglobs ) ) {
98 if ( my ($bad_zglob) = ( grep {m{^/}} @zglobs ) ) {
8799 die "zglob '$bad_zglob' should not begin with slash";
88100 }
89101 return \@zglobs;
95107 }
96108
97109 sub postprocess_source {
110 return $_[1];
111 }
112
113 sub diff {
98114 return $_[1];
99115 }
100116
139155
140156 1;
141157
158 # ABSTRACT: Create plugins for tidying or validating code
159
142160 __END__
143161
144162 =pod
149167
150168 =head1 VERSION
151169
152 version 0.20
170 version 0.32
153171
154172 =head1 SYNOPSIS
155173
156174 package Code::TidyAll::Plugin::SomeTidier;
157175 use Moo;
158176 extends 'Code::TidyAll::Plugin';
159
177
160178 sub transform_source {
161179 my ( $self, $source ) = @_;
162180 ...
167185 package Code::TidyAll::Plugin::SomeValidator;
168186 use Moo;
169187 extends 'Code::TidyAll::Plugin';
170
188
171189 sub validate_file {
172190 my ( $self, $file ) = @_;
173191 die "not valid" if ...;
180198 implement a new plugin.
181199
182200 The easiest way to start is to look at existing plugins, such as
183 L<Code::TidyAll::Plugin::PerlTidy|Code::TidyAll::Plugin::PerlTidy> and
184 L<Code::TidyAll::Plugin::PerlCritic|Code::TidyAll::Plugin::PerlCritic>.
201 L<Code::TidyAll::Plugin::PerlTidy> and L<Code::TidyAll::Plugin::PerlCritic>.
185202
186203 =head1 NAMING
187204
205222 ignore = lib/UtterHack.pm
206223 argv = -severity 3
207224
208 then L<Code::TidyAll::Plugin::PerlCritic|Code::TidyAll::Plugin::PerlCritic>
209 would be constructed with parameters
210
211 select => 'lib/**/*.pm',
225 then L<Code::TidyAll::Plugin::PerlCritic> would be constructed with parameters
226
227 select => 'lib/**/*.pm',
212228 ignore = 'lib/UtterHack.pm',
213229 argv = '-severity 3'
214230
226242 A standard attribute for specifying the name of the command to run, e.g.
227243 "/usr/local/bin/perlcritic".
228244
245 =item is_validator
246
247 An attribute that indicates if this is a validator or not; By default this
248 returns true if either C<validate_source> or C<validate_file> methods have been
249 implemented.
250
229251 =item name
230252
231253 Name of the plugin to be used in error messages etc.
232254
233255 =item tidyall
234256
235 A weak reference back to the L<Code::TidyAll|Code::TidyAll> object.
257 A weak reference back to the L<Code::TidyAll> object.
236258
237259 =item select, ignore
238260
239261 Select and ignore patterns - you can ignore these.
262
263 =item weight
264
265 A number indicating the relative weight of the plugin, used to calculate the
266 order the plugins will execute in. The lower the number the sooner the plugin
267 will be executed.
268
269 By default the weight will be C<50> for non validators (anything where
270 C<is_validator> returns false) and C<60> for validators (anything where
271 C<is_validator> returns true.)
272
273 The order of plugin execution is determined first by the value of the C<weight>
274 attribute, and then (if multiple plugins have the same weight>) by sorting by
275 the name of module.
240276
241277 =back
242278
285321
286322 =head1 SEE ALSO
287323
288 L<Code::TidyAll|Code::TidyAll>
289
290 =head1 AUTHOR
324 L<Code::TidyAll>
325
326 =head1 AUTHORS
327
328 =over 4
329
330 =item *
291331
292332 Jonathan Swartz <swartz@pobox.com>
293333
334 =item *
335
336 Dave Rolsky <autarch@urth.org>
337
338 =back
339
294340 =head1 COPYRIGHT AND LICENSE
295341
296 This software is copyright (c) 2011 by Jonathan Swartz.
297
298 This is free software; you can redistribute it and/or modify it under
299 the same terms as the Perl 5 programming language system itself.
342 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
343
344 This is free software; you can redistribute it and/or modify it under the same
345 terms as the Perl 5 programming language system itself.
300346
301347 =cut
00 package Code::TidyAll::Result;
1 $Code::TidyAll::Result::VERSION = '0.20';
1
22 use Moo;
33
4 has 'error' => ( is => 'ro' );
5 has 'new_contents' => ( is => 'ro' );
6 has 'path' => ( is => 'ro' );
7 has 'state' => ( is => 'ro' );
4 our $VERSION = '0.32';
5
6 has 'error' => ( is => 'ro' );
7 has 'new_contents' => ( is => 'ro' );
8 has 'orig_contents' => ( is => 'ro' );
9 has 'path' => ( is => 'ro' );
10 has 'state' => ( is => 'ro' );
811
912 sub ok { return $_[0]->state ne 'error' }
1013
1114 1;
15
16 # ABSTRACT: Result returned from processing a file/source
1217
1318 __END__
1419
2025
2126 =head1 VERSION
2227
23 version 0.20
28 version 0.32
2429
2530 =head1 SYNOPSIS
2631
6368
6469 =back
6570
71 =item orig_contents
72
73 Contains the original contents if state is 'tidied' and with some errors (like
74 when a file needs tidying in check-only mode)
75
6676 =item new_contents
6777
6878 Contains the new contents if state is 'tidied'
7989
8090 =head1 SEE ALSO
8191
82 L<Code::TidyAll|Code::TidyAll>
92 L<Code::TidyAll>
8393
84 =head1 AUTHOR
94 =head1 AUTHORS
95
96 =over 4
97
98 =item *
8599
86100 Jonathan Swartz <swartz@pobox.com>
87101
102 =item *
103
104 Dave Rolsky <autarch@urth.org>
105
106 =back
107
88108 =head1 COPYRIGHT AND LICENSE
89109
90 This software is copyright (c) 2011 by Jonathan Swartz.
110 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
91111
92 This is free software; you can redistribute it and/or modify it under
93 the same terms as the Perl 5 programming language system itself.
112 This is free software; you can redistribute it and/or modify it under the same
113 terms as the Perl 5 programming language system itself.
94114
95115 =cut
0 package Code::TidyAll::Role::Tempdir;
1
2 use Moo::Role;
3
4 use Cwd qw(realpath);
5 use File::Temp qw(tempdir);
6
7 our $VERSION = '0.32';
8
9 has '_tempdir' => ( is => 'ro', lazy => 1, builder => 1 );
10 has 'no_cleanup' => ( is => 'ro', default => 0 );
11
12 sub _build__tempdir {
13 my ($self) = @_;
14 return realpath(
15 tempdir(
16 'Code-TidyAll-XXXX',
17 TMPDIR => 1,
18 CLEANUP => !$self->no_cleanup,
19 )
20 );
21 }
22
23 1;
24
25 # ABSTRACT: Provides a _tempdir attribute for Code::TidyAll classes
26
27 __END__
28
29 =pod
30
31 =head1 NAME
32
33 Code::TidyAll::Role::Tempdir - Provides a _tempdir attribute for Code::TidyAll
34 classes
35
36 =head1 VERSION
37
38 version 0.32
39
40 =head1 SYNOPSIS
41
42 package Whatever;
43 use Moo;
44 with 'Code::TidyAll::Role::Tempdir';
45
46 =head1 DESCRIPTION
47
48 A role to add tempdir attributes to classes.
49
50 =encoding UTF-8
51
52 =head1 ATTRIBUTES
53
54 =over
55
56 =item _tempdir
57
58 The temp directory. Lazily constructed if not passed
59
60 =item no_cleanup
61
62 A boolean indicating if the temp directory created by the C<_tempdir> builder
63 should not automatically clean up after itself
64
65 =back
66
67 =head1 SEE ALSO
68
69 L<Code::TidyAll>
70
71 =head1 AUTHORS
72
73 =over 4
74
75 =item *
76
77 Jonathan Swartz <swartz@pobox.com>
78
79 =item *
80
81 Dave Rolsky <autarch@urth.org>
82
83 =back
84
85 =head1 COPYRIGHT AND LICENSE
86
87 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
88
89 This is free software; you can redistribute it and/or modify it under the same
90 terms as the Perl 5 programming language system itself.
91
92 =cut
00 package Code::TidyAll::SVN::Precommit;
1 $Code::TidyAll::SVN::Precommit::VERSION = '0.20';
1
22 use Capture::Tiny qw(capture_stdout capture_stderr);
33 use Code::TidyAll;
44 use Code::TidyAll::Util qw(basename dirname mkpath realpath tempdir_simple write_file);
77 use SVN::Look;
88 use Try::Tiny;
99
10 our $VERSION = '0.32';
11
1012 # Public
1113 has 'conf_name' => ( is => 'ro' );
12 has 'emergency_comment_prefix' => ( is => 'ro', default => sub { "NO TIDYALL" } );
14 has 'emergency_comment_prefix' => ( is => 'ro', default => 'NO TIDYALL' );
1315 has 'extra_conf_files' => ( is => 'ro', default => sub { [] } );
1416 has 'reject_on_error' => ( is => 'ro' );
1517 has 'repos' => ( is => 'ro', default => sub { $ARGV[0] } );
16 has 'tidyall_class' => ( is => 'ro', default => sub { "Code::TidyAll" } );
18 has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' );
1719 has 'tidyall_options' => ( is => 'ro', default => sub { {} } );
1820 has 'txn' => ( is => 'ro', default => sub { $ARGV[1] } );
1921
4850 $log->infof(
4951 "%s [%s] repos = %s; txn = %s",
5052 scalar(localtime), $$, scalar( getpwuid($<) ),
51 $self->repos, $self->txn
53 $self->repos, $self->txn
5254 );
5355 $log->infof( "looking at files: %s", join( ", ", @files ) );
5456
8991 %{ $self->tidyall_options },
9092 );
9193 my $stdout = capture_stdout {
92 push( @results, $tidyall->process_paths( map { "$tempdir/$_" } @files ) );
94 push( @results, $tidyall->process_paths( map {"$tempdir/$_"} @files ) );
9395 };
9496 if ($stdout) {
9597 chomp($stdout);
159161
160162 1;
161163
164 # ABSTRACT: Subversion pre-commit hook that requires files to be tidyall'd
165
162166 __END__
163167
164168 =pod
170174
171175 =head1 VERSION
172176
173 version 0.20
177 version 0.32
174178
175179 =head1 SYNOPSIS
176180
181185 use Log::Any::Adapter (File => "/path/to/hooks/logs/tidyall.log");
182186 use strict;
183187 use warnings;
184
188
185189 Code::TidyAll::SVN::Precommit->check();
186190
187191 =head1 DESCRIPTION
188192
189193 This module implements a L<Subversion pre-commit
190194 hook|http://svnbook.red-bean.com/en/1.7/svn.ref.reposhooks.pre-commit.html>
191 that checks if all files are tidied and valid according to L<tidyall|tidyall>,
192 and rejects the commit if not.
195 that checks if all files are tidied and valid according to L<tidyall>, and
196 rejects the commit if not.
193197
194198 =head1 METHODS
195199
198202 =item check (key/value params...)
199203
200204 Class method. Check that all files being added or modified in this commit are
201 tidied and valid according to L<tidyall|tidyall>. If not, then the entire
202 commit is rejected and the reason(s) are output to the client. e.g.
203
204 % svn commit -m "fixups" CHI.pm CHI/Driver.pm
205 tidied and valid according to L<tidyall>. If not, then the entire commit is
206 rejected and the reason(s) are output to the client. e.g.
207
208 % svn commit -m "fixups" CHI.pm CHI/Driver.pm
205209 Sending CHI/Driver.pm
206210 Sending CHI.pm
207211 Transmitting file data ..svn: Commit failed (details follow):
215219 In an emergency the hook can be bypassed by prefixing the comment with "NO
216220 TIDYALL", e.g.
217221
218 % svn commit -m "NO TIDYALL - this is an emergency!" CHI.pm CHI/Driver.pm
222 % svn commit -m "NO TIDYALL - this is an emergency!" CHI.pm CHI/Driver.pm
219223 Sending CHI/Driver.pm
220224 Sending CHI.pm
221 Transmitting file data .
222 Committed revision 7562.
225 Transmitting file data .
226 Committed revision 7562.
223227
224228 The configuration file (C<tidyall.ini> or C<.tidyallrc>) must be checked into
225229 svn. For each file, the hook will look upwards from the file's repo location
269273
270274 =item tidyall_class
271275
272 Subclass to use instead of L<Code::TidyAll|Code::TidyAll>
276 Subclass to use instead of L<Code::TidyAll>
273277
274278 =item tidyall_options
275279
276 Hashref of options to pass to the L<Code::TidyAll|Code::TidyAll> constructor
280 Hashref of options to pass to the L<Code::TidyAll> constructor
277281
278282 =item txn
279283
285289
286290 =head1 LOGGING
287291
288 This module uses L<Log::Any|Log::Any> to log its activity, including all files
289 that were checked, an inability to find the configuration file, and any runtime
290 errors that occur. You can create a simple date-stamped log file with
292 This module uses L<Log::Any> to log its activity, including all files that were
293 checked, an inability to find the configuration file, and any runtime errors
294 that occur. You can create a simple date-stamped log file with
291295
292296 use Log::Any::Adapter (File => "/path/to/hooks/logs/tidyall.log");
293297
305309
306310 =head1 SEE ALSO
307311
308 L<Code::TidyAll|Code::TidyAll>
309
310 =head1 AUTHOR
312 L<Code::TidyAll>
313
314 =head1 AUTHORS
315
316 =over 4
317
318 =item *
311319
312320 Jonathan Swartz <swartz@pobox.com>
313321
322 =item *
323
324 Dave Rolsky <autarch@urth.org>
325
326 =back
327
314328 =head1 COPYRIGHT AND LICENSE
315329
316 This software is copyright (c) 2011 by Jonathan Swartz.
317
318 This is free software; you can redistribute it and/or modify it under
319 the same terms as the Perl 5 programming language system itself.
330 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
331
332 This is free software; you can redistribute it and/or modify it under the same
333 terms as the Perl 5 programming language system itself.
320334
321335 =cut
00 package Code::TidyAll::SVN::Util;
1 $Code::TidyAll::SVN::Util::VERSION = '0.20';
1
22 use Cwd qw(realpath);
33 use IPC::System::Simple qw(capturex);
44 use strict;
55 use warnings;
66 use base qw(Exporter);
7
8 our $VERSION = '0.32';
79
810 our @EXPORT_OK = qw(svn_uncommitted_files);
911
1214
1315 $dir = realpath($dir);
1416 my $output = capturex( "svn", "status", $dir );
15 my @lines = grep { /^[AM]/ } split( "\n", $output );
16 my (@files) = grep { -f } ( $output =~ m{^[AM]\s+(.*)$}gm );
17 my @lines = grep {/^[AM]/} split( "\n", $output );
18 my (@files) = grep {-f} ( $output =~ m{^[AM]\s+(.*)$}gm );
1719 return @files;
1820 }
1921
+0
-9
lib/Code/TidyAll/Test/Class.pm less more
0 package Code::TidyAll::Test::Class;
1 $Code::TidyAll::Test::Class::VERSION = '0.20';
2 use Test::Class::Most;
3 use strict;
4 use warnings;
5
6 __PACKAGE__->SKIP_CLASS("abstract base class");
7
8 1;
+0
-18
lib/Code/TidyAll/Test/Plugin/AToZ.pm less more
0 package Code::TidyAll::Test::Plugin::AToZ;
1 $Code::TidyAll::Test::Plugin::AToZ::VERSION = '0.20';
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub preprocess_source {
6 my ( $self, $source ) = @_;
7 $source =~ tr/Aa/Zz/;
8 return $source;
9 }
10
11 sub postprocess_source {
12 my ( $self, $source ) = @_;
13 $source =~ tr/Zz/Aa/;
14 return $source;
15 }
16
17 1;
+0
-11
lib/Code/TidyAll/Test/Plugin/CheckUpper.pm less more
0 package Code::TidyAll::Test::Plugin::CheckUpper;
1 $Code::TidyAll::Test::Plugin::CheckUpper::VERSION = '0.20';
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub validate_source {
6 my ( $self, $source ) = @_;
7 die "lowercase found" if $source =~ /[a-z]/;
8 }
9
10 1;
+0
-15
lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm less more
0 package Code::TidyAll::Test::Plugin::RepeatFoo;
1 $Code::TidyAll::Test::Plugin::RepeatFoo::VERSION = '0.20';
2 use Code::TidyAll::Util qw(read_file write_file);
3 use Moo;
4 extends 'Code::TidyAll::Plugin';
5
6 has 'times' => ( is => 'ro' );
7
8 sub transform_source {
9 my ( $self, $source ) = @_;
10 my $times = $self->times || die "no times specified";
11 return $source x $times;
12 }
13
14 1;
+0
-12
lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm less more
0 package Code::TidyAll::Test::Plugin::ReverseFoo;
1 $Code::TidyAll::Test::Plugin::ReverseFoo::VERSION = '0.20';
2 use Code::TidyAll::Util qw(read_file write_file);
3 use Moo;
4 extends 'Code::TidyAll::Plugin';
5
6 sub transform_file {
7 my ( $self, $file ) = @_;
8 write_file( $file, scalar( reverse( read_file($file) ) ) );
9 }
10
11 1;
+0
-16
lib/Code/TidyAll/Test/Plugin/UpperText.pm less more
0 package Code::TidyAll::Test::Plugin::UpperText;
1 $Code::TidyAll::Test::Plugin::UpperText::VERSION = '0.20';
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub transform_source {
6 my ( $self, $source ) = @_;
7 if ( $source =~ /^[A-Z]*$/i ) {
8 return uc($source);
9 }
10 else {
11 die "non-alpha content found";
12 }
13 }
14
15 1;
00 # This is a copy of Text::Glob, modified to support "**/"
11 #
22 package Code::TidyAll::Util::Zglob;
3 $Code::TidyAll::Util::Zglob::VERSION = '0.20';
3
44 use strict;
55 use Exporter;
66 use vars qw/@ISA @EXPORT_OK
7 $strict_leading_dot $strict_wildcard_slash/;
7 $strict_leading_dot $strict_wildcard_slash/;
88 @ISA = 'Exporter';
99 @EXPORT_OK = qw( zglobs_to_regex zglob_to_regex );
10
11 our $VERSION = '0.32';
1012
1113 $strict_leading_dot = 1;
1214 $strict_wildcard_slash = 1;
4850 || $_ eq '^'
4951 || $_ eq '$'
5052 || $_ eq '@'
51 || $_ eq '%' )
52 {
53 || $_ eq '%' ) {
5354 $regex .= "\\$_";
5455 }
5556 elsif ( $_ eq "\cZ" ) { # handle **/ - if escaping, only escape first *
5657 $regex .=
57 $escaping
58 ? ( "\\*" . ( $strict_wildcard_slash ? "[^/]*" : ".*" ) . "/" )
59 : ".*";
58 $escaping
59 ? ( "\\*" . ( $strict_wildcard_slash ? "[^/]*" : ".*" ) . "/" )
60 : ".*";
6061 }
6162 elsif ( $_ eq '*' ) {
6263 $regex .=
63 $escaping ? "\\*"
64 : $strict_wildcard_slash ? "[^/]*"
65 : ".*";
64 $escaping ? "\\*"
65 : $strict_wildcard_slash ? "[^/]*"
66 : ".*";
6667 }
6768 elsif ( $_ eq '?' ) {
6869 $regex .=
69 $escaping ? "\\?"
70 : $strict_wildcard_slash ? "[^/]"
71 : ".";
70 $escaping ? "\\?"
71 : $strict_wildcard_slash ? "[^/]"
72 : ".";
7273 }
7374 elsif ( $_ eq '{' ) {
7475 $regex .= $escaping ? "\\{" : "(";
00 package Code::TidyAll::Util;
1 $Code::TidyAll::Util::VERSION = '0.20';
1
22 use Cwd qw(realpath);
33 use Data::Dumper;
44 use File::Basename;
1212 use warnings;
1313 use base qw(Exporter);
1414
15 our @EXPORT_OK =
16 qw(abs2rel basename can_load dirname dump_one_line mkpath pushd read_dir read_file realpath rel2abs tempdir_simple trim uniq write_file);
15 our $VERSION = '0.32';
16
17 our @EXPORT_OK
18 = qw(abs2rel basename can_load dirname dump_one_line mkpath pushd read_dir realpath rel2abs tempdir_simple trim uniq);
1719
1820 sub can_load {
1921
7173 return @dir_entries;
7274 }
7375
74 sub read_file {
75 my ($file) = @_;
76 open( my $fh, "<", $file ) or die "could not open $file: $!";
77 my $contents = do { local $/; <$fh> };
78 return $contents;
79 }
80
81 sub write_file {
82 my ( $file, $contents ) = @_;
83 open( my $fh, ">", $file ) or die "could not open $file: $!";
84 print $fh $contents;
85 }
86
8776 1;
+0
-453
lib/Code/TidyAll/t/Basic.pm less more
0 package Code::TidyAll::t::Basic;
1 $Code::TidyAll::t::Basic::VERSION = '0.20';
2 use Cwd qw(realpath);
3 use Code::TidyAll::Util qw(dirname mkpath pushd read_file tempdir_simple write_file);
4 use Code::TidyAll;
5 use Capture::Tiny qw(capture capture_stdout capture_merged);
6 use File::Find qw(find);
7 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
8
9 sub test_plugin { "+Code::TidyAll::Test::Plugin::$_[0]" }
10 my %UpperText = ( test_plugin('UpperText') => { select => '**/*.txt' } );
11 my %ReverseFoo = ( test_plugin('ReverseFoo') => { select => '**/foo*' } );
12 my %RepeatFoo = ( test_plugin('RepeatFoo') => { select => '**/foo*' } );
13 my %CheckUpper = ( test_plugin('CheckUpper') => { select => '**/*.txt' } );
14 my %AToZ = ( test_plugin('AToZ') => { select => '**/*.txt' } );
15
16 my $cli_conf;
17
18 sub create_dir {
19 my ( $self, $files ) = @_;
20
21 my $root_dir = tempdir_simple();
22 while ( my ( $path, $content ) = each(%$files) ) {
23 my $full_path = "$root_dir/$path";
24 mkpath( dirname($full_path), 0, 0775 );
25 write_file( $full_path, $content );
26 }
27 return realpath($root_dir);
28 }
29
30 sub tidy {
31 my ( $self, %params ) = @_;
32 my $desc = $params{desc};
33 if ( !defined($desc) ) {
34 ($desc) = ( ( caller(1) )[3] =~ /([^:]+$)/ );
35 }
36
37 my $root_dir = $self->create_dir( $params{source} );
38
39 my $options = $params{options} || {};
40 my $ct = Code::TidyAll->new(
41 plugins => $params{plugins},
42 root_dir => $root_dir,
43 %$options
44 );
45
46 my @results;
47 my $output = capture_stdout { @results = $ct->process_all() };
48 my $error_count = grep { $_->error } @results;
49 if ( $params{errors} ) {
50 like( $output, $params{errors}, "$desc - errors" );
51 ok( $error_count > 0, "$desc - error_count > 0" );
52 }
53 else {
54 is( $error_count, 0, "$desc - error_count == 0" );
55 }
56 while ( my ( $path, $content ) = each( %{ $params{dest} } ) ) {
57 is( read_file("$root_dir/$path"), $content, "$desc - $path content" );
58 }
59 if ( my $like_output = $params{like_output} ) {
60 like( $output, $like_output, "$desc - output" );
61 }
62 }
63
64 sub test_basic : Tests {
65 my $self = shift;
66
67 $self->tidy(
68 plugins => {},
69 source => { "foo.txt" => "abc" },
70 dest => { "foo.txt" => "abc" },
71 desc => 'one file no plugins',
72 );
73 $self->tidy(
74 plugins => {%UpperText},
75 source => { "foo.txt" => "abc" },
76 dest => { "foo.txt" => "ABC" },
77 desc => 'one file UpperText',
78 );
79 $self->tidy(
80 plugins => {
81 test_plugin('UpperText') => { select => '**/*.txt', only_modes => 'upper' },
82 test_plugin('ReverseFoo') => { select => '**/foo*', only_modes => 'reversals' }
83 },
84 source => { "foo.txt" => "abc" },
85 dest => { "foo.txt" => "cba" },
86 desc => 'one file reversals mode',
87 options => { mode => 'reversals' },
88 );
89 $self->tidy(
90 plugins => { %UpperText, %ReverseFoo },
91 source => {
92 "foo.txt" => "abc",
93 "bar.txt" => "def",
94 "foo.tx" => "ghi",
95 "bar.tx" => "jkl"
96 },
97 dest => {
98 "foo.txt" => "CBA",
99 "bar.txt" => "DEF",
100 "foo.tx" => "ihg",
101 "bar.tx" => "jkl"
102 },
103 desc => 'four files UpperText ReverseFoo',
104 );
105 $self->tidy(
106 plugins => {%UpperText},
107 source => { "foo.txt" => "abc1" },
108 dest => { "foo.txt" => "abc1" },
109 desc => 'one file UpperText errors',
110 errors => qr/non-alpha content/
111 );
112 }
113
114 sub test_multiple_plugin_instances : Tests {
115 my $self = shift;
116 $self->tidy(
117 plugins => {
118 test_plugin('RepeatFoo for txt') => { select => '**/*.txt', times => 2 },
119 test_plugin('RepeatFoo for foo') => { select => '**/foo.*', times => 3 },
120 %UpperText
121 },
122 source => { "foo.txt" => "abc", "foo.dat" => "def", "bar.txt" => "ghi" },
123 dest => {
124 "foo.txt" => scalar( "ABC" x 6 ),
125 "foo.dat" => scalar( "def" x 3 ),
126 "bar.txt" => scalar( "GHI" x 2 )
127 }
128 );
129 }
130
131 sub test_plugin_order_and_atomicity : Tests {
132 my $self = shift;
133 my @plugins = map {
134 (
135 %ReverseFoo,
136 test_plugin("UpperText $_") => { select => '**/*.txt' },
137 test_plugin("CheckUpper $_") => { select => '**/*.txt' }
138 )
139 } ( 1 .. 3 );
140 my $output = capture_stdout {
141 $self->tidy(
142 plugins => {@plugins},
143 options => { verbose => 1 },
144 source => { "foo.txt" => "abc" },
145 dest => { "foo.txt" => "CBA" },
146 like_output =>
147 qr/.*ReverseFoo, .*UpperText 1, .*UpperText 2, .*UpperText 3, .*CheckUpper 1, .*CheckUpper 2, .*CheckUpper 3/
148 );
149 };
150
151 $self->tidy(
152 plugins => { %AToZ, %ReverseFoo, %CheckUpper },
153 options => { verbose => 1 },
154 source => { "foo.txt" => "abc" },
155 dest => { "foo.txt" => "abc" },
156 errors => qr/lowercase found/,
157 like_output => qr/foo.txt (.*ReverseFoo, .*CheckUpper)/
158 );
159
160 }
161
162 sub test_quiet_and_verbose : Tests {
163 my $self = shift;
164
165 foreach my $state ( 'normal', 'quiet', 'verbose' ) {
166 foreach my $error ( 0, 1 ) {
167 my $root_dir = $self->create_dir( { "foo.txt" => ( $error ? "123" : "abc" ) } );
168 my $output = capture_stdout {
169 my $ct = Code::TidyAll->new(
170 plugins => {%UpperText},
171 root_dir => $root_dir,
172 ( $state eq 'normal' ? () : ( $state => 1 ) )
173 );
174 $ct->process_paths("$root_dir/foo.txt");
175 };
176 if ($error) {
177 like( $output, qr/non-alpha content found/, "non-alpha content found ($state)" );
178 }
179 else {
180 is( $output, "[tidied] foo.txt\n" ) if $state eq 'normal';
181 is( $output, "" ) if $state eq 'quiet';
182 like( $output, qr/purging old backups/, "purging old backups ($state)" )
183 if $state eq 'verbose';
184 like(
185 $output,
186 qr/\[tidied\] foo\.txt \(\+Code::TidyAll::Test::Plugin::UpperText\)/s,
187 "foo.txt ($state)"
188 ) if $state eq 'verbose';
189 }
190 }
191 }
192 }
193
194 sub test_iterations : Tests {
195 my $self = shift;
196 my $root_dir = $self->create_dir( { "foo.txt" => "abc" } );
197 my $ct = Code::TidyAll->new(
198 plugins => { test_plugin('RepeatFoo') => { select => '**/foo*', times => 3 } },
199 root_dir => $root_dir,
200 iterations => 2
201 );
202 my $file = "$root_dir/foo.txt";
203 $ct->process_paths($file);
204 is( read_file($file), scalar( "abc" x 9 ), "3^2 = 9" );
205 }
206
207 sub test_caching_and_backups : Tests {
208 my $self = shift;
209
210 foreach my $no_cache ( 0 .. 1 ) {
211 foreach my $no_backups ( 0 .. 1 ) {
212 my $desc = "(no_cache=$no_cache, no_backups=$no_backups)";
213 my $root_dir = $self->create_dir( { "foo.txt" => "abc" } );
214 my $ct = Code::TidyAll->new(
215 plugins => {%UpperText},
216 root_dir => $root_dir,
217 ( $no_cache ? ( no_cache => 1 ) : () ),
218 ( $no_backups ? ( no_backups => 1 ) : () )
219 );
220 my $output;
221 my $file = "$root_dir/foo.txt";
222 my $go = sub {
223 $output = capture_stdout { $ct->process_paths($file) };
224 };
225
226 $go->();
227 is( read_file($file), "ABC", "first file change $desc" );
228 is( $output, "[tidied] foo.txt\n", "first output $desc" );
229
230 $go->();
231 if ($no_cache) {
232 is( $output, "[checked] foo.txt\n", "second output $desc" );
233 }
234 else {
235 is( $output, '', "second output $desc" );
236 }
237
238 write_file( $file, "ABCD" );
239 $go->();
240 is( $output, "[checked] foo.txt\n", "third output $desc" );
241
242 write_file( $file, "def" );
243 $go->();
244 is( read_file($file), "DEF", "fourth file change $desc" );
245 is( $output, "[tidied] foo.txt\n", "fourth output $desc" );
246
247 my $backup_dir = $ct->data_dir . "/backups";
248 mkpath( $backup_dir, 0, 0775 );
249 my @files;
250 find(
251 {
252 follow => 0,
253 wanted => sub { push @files, $_ if -f },
254 no_chdir => 1
255 },
256 $backup_dir
257 );
258
259 if ($no_backups) {
260 ok( @files == 0, "no backup files $desc" );
261 }
262 else {
263 ok( scalar(@files) == 1 || scalar(@files) == 2, "1 or 2 backup files $desc" );
264 foreach my $file (@files) {
265 like(
266 $file,
267 qr|\.tidyall\.d/backups/foo\.txt-\d+-\d+\.bak|,
268 "backup filename $desc"
269 );
270 }
271 }
272 }
273 }
274 }
275
276 sub test_selects_and_ignores : Tests {
277 my $self = shift;
278
279 my @files = ( "a/foo.pl", "b/foo.pl", "a/foo.pm", "a/bar.pm", "b/bar.pm" );
280 my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } );
281 my $ct = Code::TidyAll->new(
282 root_dir => $root_dir,
283 plugins => {
284 test_plugin('UpperText') => {
285 select => '**/*.pl **/*.pm b/bar.pm c/bar.pl',
286 ignore => 'a/foo.pl **/bar.pm c/baz.pl'
287 }
288 }
289 );
290 cmp_set( [ $ct->find_matched_files() ], [ "$root_dir/a/foo.pm", "$root_dir/b/foo.pl" ] );
291 cmp_deeply( [ map { $_->name } $ct->plugins_for_path("a/foo.pm") ],
292 [ test_plugin('UpperText') ] );
293 }
294
295 sub test_dirs : Tests {
296 my $self = shift;
297
298 my @files = ( "a/foo.txt", "a/bar.txt", "a/bar.pl", "b/foo.txt" );
299 my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } );
300
301 foreach my $recursive ( 0 .. 1 ) {
302 my @results;
303 my $output = capture_merged {
304 my $ct = Code::TidyAll->new(
305 plugins => { %UpperText, %ReverseFoo },
306 root_dir => $root_dir,
307 ( $recursive ? ( recursive => 1 ) : () )
308 );
309 @results = $ct->process_paths("$root_dir/a");
310 };
311 if ($recursive) {
312 is( @results, 3, "3 results" );
313 is( scalar( grep { $_->state eq 'tidied' } @results ), 2, "2 tidied" );
314 like( $output, qr/\[tidied\] a\/foo.txt/ );
315 like( $output, qr/\[tidied\] a\/bar.txt/ );
316 is( read_file("$root_dir/a/foo.txt"), "IH" );
317 is( read_file("$root_dir/a/bar.txt"), "HI" );
318 is( read_file("$root_dir/a/bar.pl"), "hi" );
319 is( read_file("$root_dir/b/foo.txt"), "hi" );
320 }
321 else {
322 is( @results, 1, "1 result" );
323 is( $results[0]->state, "error", "error" );
324 like( $output, qr/is a directory/ );
325 }
326 }
327 }
328
329 sub test_errors : Tests {
330 my $self = shift;
331
332 my $root_dir = $self->create_dir( { "foo/bar.txt" => "abc" } );
333 throws_ok { Code::TidyAll->new( root_dir => $root_dir ) } qr/Missing required/;
334 throws_ok { Code::TidyAll->new( plugins => {} ) } qr/Missing required/;
335
336 throws_ok {
337 Code::TidyAll->new(
338 root_dir => $root_dir,
339 plugins => {},
340 bad_param => 1,
341 worse_param => 2
342 );
343 }
344 qr/unknown constructor params 'bad_param', 'worse_param'/;
345
346 throws_ok {
347 Code::TidyAll->new(
348 root_dir => $root_dir,
349 plugins => { 'DoesNotExist' => { select => '**/*' } }
350 )->plugin_objects;
351 }
352 qr/could not load plugin class/;
353
354 throws_ok {
355 Code::TidyAll->new(
356 root_dir => $root_dir,
357 plugins => {
358 test_plugin('UpperText') => { select => '**/*', bad_option => 1, worse_option => 2 }
359 }
360 )->plugin_objects;
361 }
362 qr/unknown options/;
363
364 my $ct = Code::TidyAll->new( plugins => {%UpperText}, root_dir => $root_dir );
365 my $output = capture_stdout { $ct->process_paths("$root_dir/baz/blargh.txt") };
366 like( $output, qr/baz\/blargh.txt: not a file or directory/, "file not found" );
367
368 $output = capture_stdout { $ct->process_paths("$root_dir/foo/bar.txt") };
369 is( $output, "[tidied] foo/bar.txt\n", "filename output" );
370 is( read_file("$root_dir/foo/bar.txt"), "ABC", "tidied" );
371 my $other_dir = realpath( tempdir_simple() );
372 write_file( "$other_dir/foo.txt", "ABC" );
373 throws_ok { $ct->process_paths("$other_dir/foo.txt") } qr/not underneath root dir/;
374 }
375
376 sub test_cli : Tests {
377 my $self = shift;
378 my $output;
379
380 my @cmd = ( "$^X", "-Ilib", "bin/tidyall" );
381 my $run = sub { system( @cmd, @_ ) };
382
383 $output = capture_stdout {
384 $run->("--version");
385 };
386 like( $output, qr/tidyall .* on perl/ );
387 $output = capture_stdout {
388 $run->("--help");
389 };
390 like( $output, qr/Usage.*Options:/s );
391
392 foreach my $conf_name ( "tidyall.ini", ".tidyallrc" ) {
393 my $root_dir = $self->create_dir();
394 my $conf_file = "$root_dir/$conf_name";
395 write_file( $conf_file, $cli_conf );
396
397 write_file( "$root_dir/foo.txt", "hello" );
398 my $output = capture_stdout {
399 $run->( "$root_dir/foo.txt", "-v" );
400 };
401
402 my ($params_msg) = ( $output =~ /constructing Code::TidyAll with these params:(.*)/ );
403 ok( defined($params_msg), "params msg" );
404 like( $params_msg, qr/backup_ttl => '15m'/, 'backup_ttl' );
405 like( $params_msg, qr/verbose => '?1'?/, 'verbose' );
406 like( $params_msg, qr/\Qroot_dir => '$root_dir'\E/, 'root_dir' );
407 like( $output, qr/\[tidied\] foo.txt \(.*RepeatFoo, .*UpperText\)/, 'foo.txt' );
408 is( read_file("$root_dir/foo.txt"), "HELLOHELLOHELLO", "tidied" );
409
410 mkpath( "$root_dir/subdir", 0, 0775 );
411 write_file( "$root_dir/subdir/foo.txt", "bye" );
412 write_file( "$root_dir/subdir/foo2.txt", "bye" );
413 my $cwd = realpath();
414 capture_stdout {
415 system("cd $root_dir/subdir; $^X -I$cwd/lib $cwd/bin/tidyall foo.txt");
416 };
417 is( read_file("$root_dir/subdir/foo.txt"), "BYEBYEBYE", "foo.txt tidied" );
418 is( read_file("$root_dir/subdir/foo2.txt"), "bye", "foo2.txt not tidied" );
419
420 # -p / --pipe success
421 #
422 my ( $stdout, $stderr ) = capture {
423 open( my $fh, "|-", @cmd, "-p", "$root_dir/does_not_exist/foo.txt" );
424 print $fh "echo";
425 };
426 is( $stdout, "ECHOECHOECHO", "pipe: stdin tidied" );
427 unlike( $stderr, qr/\S/, "pipe: no stderr" );
428
429 # -p / --pipe error
430 #
431 ( $stdout, $stderr ) = capture {
432 open( my $fh, "|-", @cmd, "--pipe", "$root_dir/foo.txt" );
433 print $fh "abc1";
434 };
435 is( $stdout, "abc1", "pipe: stdin mirrored to stdout" );
436 like( $stderr, qr/non-alpha content found/ );
437 }
438 }
439
440 $cli_conf = '
441 backup_ttl = 15m
442 verbose = 1
443
444 [+Code::TidyAll::Test::Plugin::UpperText]
445 select = **/*.txt
446
447 [+Code::TidyAll::Test::Plugin::RepeatFoo]
448 select = **/foo*
449 times = 3
450 ';
451
452 1;
+0
-51
lib/Code/TidyAll/t/Conf.pm less more
0 package Code::TidyAll::t::Conf;
1 $Code::TidyAll::t::Conf::VERSION = '0.20';
2 use Code::TidyAll;
3 use Code::TidyAll::Util qw(dirname tempdir_simple write_file);
4 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
5
6 my $conf1;
7
8 sub test_conf_file : Tests {
9 my $self = shift;
10 my $root_dir = tempdir_simple();
11 my $conf_file = "$root_dir/tidyall.ini";
12 write_file( $conf_file, $conf1 );
13
14 my $ct = Code::TidyAll->new_from_conf_file($conf_file);
15 my %expected = (
16 backup_ttl => '5m',
17 backup_ttl_secs => '300',
18 no_backups => undef,
19 no_cache => 1,
20 root_dir => dirname($conf_file),
21 data_dir => "$root_dir/.tidyall.d",
22 plugins => {
23 '+Code::TidyAll::Test::Plugin::UpperText' => { select => '**/*.txt' },
24 '+Code::TidyAll::Test::Plugin::RepeatFoo' => { select => '**/foo* **/bar*', times => 3 }
25 }
26 );
27 while ( my ( $method, $value ) = each(%expected) ) {
28 cmp_deeply( $ct->$method, $value, "$method" );
29 }
30
31 my $conf2 = $conf1;
32 $conf2 =~ s/times/timez/;
33 write_file( $conf_file, $conf2 );
34 throws_ok { my $ct = Code::TidyAll->new_from_conf_file($conf_file)->plugin_objects }
35 qr/unknown option 'timez'/;
36
37 }
38
39 $conf1 = '
40 backup_ttl = 5m
41 no_cache = 1
42
43 [+Code::TidyAll::Test::Plugin::UpperText]
44 select = **/*.txt
45
46 [+Code::TidyAll::Test::Plugin::RepeatFoo]
47 select = **/foo*
48 select = **/bar*
49 times = 3
50 ';
+0
-167
lib/Code/TidyAll/t/Git.pm less more
0 package Code::TidyAll::t::Git;
1 $Code::TidyAll::t::Git::VERSION = '0.20';
2 use Capture::Tiny qw(capture_stdout capture_stderr capture);
3 use Code::TidyAll::Git::Util qw(git_uncommitted_files);
4 use Code::TidyAll::Util qw(dirname mkpath pushd read_file realpath tempdir_simple write_file);
5 use Code::TidyAll;
6 use IPC::System::Simple qw(capturex run);
7 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
8
9 my ( $precommit_hook_template, $prereceive_hook_template, $tidyall_ini_template );
10
11 sub test_git : Tests {
12 my ($self) = @_;
13
14 my $temp_dir = tempdir_simple;
15 my $work_dir = "$temp_dir/work";
16 my $hooks_dir = "$work_dir/.git/hooks";
17 my $output;
18
19 my $committed = sub {
20 like( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" );
21 };
22 my $uncommitted = sub {
23 unlike( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" );
24 };
25
26 my $pushed = sub {
27 unlike( capturex( 'git', 'status' ), qr/Your branch is ahead/, "pushed" );
28 };
29 my $unpushed = sub {
30 like( capturex( 'git', 'status' ), qr/Your branch is ahead/, "unpushed" );
31 };
32
33 # Create the repo
34 #
35 run( "git", "init", $work_dir );
36 ok( -d $_, "$_ exists" ) for ( $work_dir, $hooks_dir );
37 my $pushd = pushd($work_dir);
38
39 # Add tidyall.ini and .gitignore
40 #
41 write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) );
42 write_file( "$work_dir/.gitignore", ".tidyall.d" );
43 run( "git", "add", "tidyall.ini", ".gitignore" );
44 run( "git", "commit", "-m", "added", "tidyall.ini", ".gitignore" );
45
46 # Add foo.txt, which needs tidying
47 #
48 write_file( "$work_dir/foo.txt", "abc\n" );
49 cmp_deeply( [ git_uncommitted_files($work_dir) ], [], "no uncommitted files" );
50
51 # git add foo.txt and make sure it is now in uncommitted list
52 #
53 run( "git", "add", "foo.txt" );
54 cmp_deeply( [ git_uncommitted_files($work_dir) ],
55 ["$work_dir/foo.txt"], "one uncommitted file" );
56
57 # Add pre-commit hook
58 #
59 my $precommit_hook_file = "$hooks_dir/pre-commit";
60 my $precommit_hook = sprintf( $precommit_hook_template, realpath("lib") );
61 write_file( $precommit_hook_file, $precommit_hook );
62 chmod( 0775, $precommit_hook_file );
63
64 # Try to commit, make sure we get error
65 #
66 $output = capture_stderr { system( "git", "commit", "-m", "changed", "-a" ) };
67 like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" );
68 like( $output, qr/needs tidying/, "needs tidying" );
69 $uncommitted->();
70
71 # Fix file and commit successfully
72 #
73 write_file( "$work_dir/foo.txt", "ABC\n" );
74 $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) };
75 like( $output, qr/\[checked\] foo\.txt/, "checked foo.txt" );
76 $committed->();
77
78 # Create a bare shared repo, then a clone of that
79 #
80 my $shared_dir = "$temp_dir/shared";
81 my $clone_dir = "$temp_dir/clone";
82 run( "git", "clone", "--bare", $work_dir, $shared_dir );
83 run( "git", "clone", $shared_dir, $clone_dir );
84 chdir($clone_dir);
85 $committed->();
86
87 # Add prereceive hook to shared repo
88 #
89 my $prereceive_hook_file = "$shared_dir/hooks/pre-receive";
90 my $prereceive_hook = sprintf( $prereceive_hook_template, realpath("lib") );
91 write_file( $prereceive_hook_file, $prereceive_hook );
92 chmod( 0775, $prereceive_hook_file );
93
94 # Unfix file and commit
95 #
96 write_file( "$clone_dir/foo.txt", "def\n" );
97 run( "git", "commit", "-m", "changed", "-a" );
98 $committed->();
99
100 # Try to push, make sure we get error back
101 #
102 $unpushed->();
103 $output = capture_stderr { system( "git", "push" ) };
104 like( $output, qr/master -> master/, "master -> master" );
105 like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" );
106 like( $output, qr/needs tidying/, "needs tidying" );
107 $unpushed->();
108
109 # Fix file and push successfully
110 #
111 write_file( "$clone_dir/foo.txt", "DEF\n" );
112 $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) };
113 $committed->();
114 $output = capture_stderr { system( "git", "push" ) };
115 like( $output, qr/master -> master/, "master -> master" );
116 $pushed->();
117
118 # Unfix file and commit
119 #
120 write_file( "$clone_dir/foo.txt", "def\n" );
121 run( "git", "commit", "-m", "changed", "-a" );
122 $committed->();
123
124 # Try #1: make sure we get error back
125 #
126 $unpushed->();
127 $output = capture_stderr { system( "git", "push" ) };
128 like( $output, qr/needs tidying/, "needs tidying" );
129 $unpushed->();
130
131 # Try #2: make sure we get error and repeat notification back
132 #
133 $unpushed->();
134 $output = capture_stderr { system( "git", "push" ) };
135 like( $output, qr/needs tidying/, "needs tidying" );
136 like( $output, qr/Identical push seen 2 times/, "Identical push seen 2 times" );
137 $unpushed->();
138
139 }
140
141 $precommit_hook_template = '#!/usr/bin/perl
142 use lib qw(%s);
143 use Code::TidyAll::Git::Precommit;
144 use strict;
145 use warnings;
146
147 Code::TidyAll::Git::Precommit->check(
148 tidyall_options => { verbose => 1 }
149 );
150 ';
151
152 $prereceive_hook_template = '#!/usr/bin/perl
153 use lib qw(%s);
154 use Code::TidyAll::Git::Prereceive;
155 use strict;
156 use warnings;
157
158 Code::TidyAll::Git::Prereceive->check();
159 ';
160
161 $tidyall_ini_template = '
162 [+Code::TidyAll::Test::Plugin::UpperText]
163 select = **/*.txt
164 ';
165
166 1;
+0
-20
lib/Code/TidyAll/t/Plugin/CSSUnminifier.pm less more
0 package Code::TidyAll::t::Plugin::CSSUnminifier;
1 $Code::TidyAll::t::Plugin::CSSUnminifier::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = 'body {\nfont-family:helvetica;\nfont-size:15pt;\n}';
8 $self->tidyall(
9 source => $source,
10 expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n'
11 );
12 $self->tidyall(
13 source => $source,
14 conf => { argv => '-w=2' },
15 expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n'
16 );
17 }
18
19 1;
+0
-20
lib/Code/TidyAll/t/Plugin/JSBeautify.pm less more
0 package Code::TidyAll::t::Plugin::JSBeautify;
1 $Code::TidyAll::t::Plugin::JSBeautify::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = 'sp.toggleResult=function(id){foo(id)}';
8 $self->tidyall(
9 source => $source,
10 expect_tidy => 'sp.toggleResult = function(id) {\n foo(id)\n}\n',
11 );
12 $self->tidyall(
13 source => $source,
14 conf => { argv => '--indent-size 3 --brace-style expand' },
15 expect_tidy => 'sp.toggleResult = function(id)\n{\n foo(id)\n}\n',
16 );
17 }
18
19 1;
+0
-61
lib/Code/TidyAll/t/Plugin/JSHint.pm less more
0 package Code::TidyAll::t::Plugin::JSHint;
1 $Code::TidyAll::t::Plugin::JSHint::VERSION = '0.20';
2 use Code::TidyAll::Util qw(write_file);
3 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
4
5 sub test_filename { 'foo.js' }
6
7 sub test_main : Tests {
8 my $self = shift;
9
10 my $rc_file = $self->{root_dir} . "/jshint.json";
11
12 $self->tidyall(
13 source => 'var my_object = {};',
14 expect_ok => 1,
15 desc => 'ok - camelcase',
16 );
17 $self->tidyall(
18 source => 'while (day)\n shuffle();',
19 expect_ok => 1,
20 desc => 'ok no brace',
21 );
22 $self->tidyall(
23 source => 'var my_object = new Object();',
24 expect_error => qr/object literal notation/,
25 desc => 'error - object literal',
26 );
27 $self->tidyall(
28 source => 'var my_object = {};',
29 conf => { options => 'camelcase' },
30 expect_error => qr/not in camel case/,
31 desc => 'error - camel case - options=camelcase',
32 );
33 $self->tidyall(
34 source => 'var my_object = {};',
35 conf => { options => 'camelcase curly' },
36 expect_error => qr/not in camel case/,
37 desc => 'error - camel case - options=camelcase,curly',
38 );
39 $self->tidyall(
40 source => 'while (day)\n shuffle();',
41 conf => { options => 'camelcase curly' },
42 expect_error => qr/Expected \'{/,
43 desc => 'error - curly - options=camelcase,curly',
44 );
45 write_file( $rc_file, '{"camelcase": true}' );
46 $self->tidyall(
47 source => 'var my_object = {};',
48 conf => { argv => "--config $rc_file" },
49 expect_error => qr/not in camel case/,
50 desc => 'error - camelcase - conf file',
51 );
52 $self->tidyall(
53 source => 'var my_object = {};',
54 conf => { argv => "--badoption" },
55 expect_error => qr/Unknown option/,
56 desc => 'error - bad option'
57 );
58 }
59
60 1;
+0
-35
lib/Code/TidyAll/t/Plugin/JSLint.pm less more
0 package Code::TidyAll::t::Plugin::JSLint;
1 $Code::TidyAll::t::Plugin::JSLint::VERSION = '0.20';
2 use Code::TidyAll::Util qw(write_file);
3 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
4
5 sub test_filename { 'foo.js' }
6
7 sub test_main : Tests {
8 my $self = shift;
9
10 $self->tidyall(
11 source => 'var my_object = {};',
12 expect_ok => 1,
13 desc => 'ok',
14 );
15 $self->tidyall(
16 source => 'while (true) {\nvar i = 5;\n}',
17 expect_error => qr/Expected 'var' at column 5/,
18 desc => 'error - bad indentation'
19 );
20 $self->tidyall(
21 source => 'while (true) {\nvar i = 5;\n}',
22 conf => { argv => '--white' },
23 expect_ok => 1,
24 desc => 'ok - bad indentation, --white'
25 );
26 $self->tidyall(
27 source => 'var my_object = {};',
28 conf => { argv => '--badoption' },
29 expect_error => qr/Usage/,
30 desc => 'error - bad option'
31 );
32 }
33
34 1;
+0
-33
lib/Code/TidyAll/t/Plugin/MasonTidy.pm less more
0 package Code::TidyAll::t::Plugin::MasonTidy;
1 $Code::TidyAll::t::Plugin::MasonTidy::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source;
8
9 $source = '%if($foo) {\n%bar(1,2);\n%}';
10 $self->tidyall(
11 source => $source,
12 conf => { argv => '-m 1' },
13 expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }'
14 );
15 $self->tidyall(
16 source => $source,
17 conf => { argv => '-m 1 --perltidy-argv="-pt=2 -i=3"' },
18 expect_tidy => '% if ($foo) {\n% bar(1, 2);\n% }'
19 );
20 $self->tidyall(
21 source => $source,
22 conf => { argv => '-m 2 --perltidy-line-argv=" "' },
23 expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }'
24 );
25 $self->tidyall(
26 source => $source,
27 conf => { argv => '-m 1 --badoption' },
28 expect_error => qr/Usage/
29 );
30 }
31
32 1;
+0
-29
lib/Code/TidyAll/t/Plugin/PHPCodeSniffer.pm less more
0 package Code::TidyAll::t::Plugin::PHPCodeSniffer;
1 $Code::TidyAll::t::Plugin::PHPCodeSniffer::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_filename { 'foo.php' }
5
6 sub test_main : Tests {
7 my $self = shift;
8 my $cmd = '/usr/local/pear/bin/phpcs';
9 my $source = '<?php function foo() { $bar = 5 } ?>';
10
11 $self->tidyall(
12 source => $source,
13 conf => { cmd => $cmd, argv => "--severity=6" },
14 expect_ok => 1,
15 );
16 $self->tidyall(
17 source => $source,
18 conf => { cmd => $cmd, argv => "--severity=3" },
19 expect_error => qr/Missing .* doc/,
20 );
21 $self->tidyall(
22 source => $source,
23 conf => { cmd => $cmd, argv => "--blahblah" },
24 expect_error => qr/not known/,
25 );
26 }
27
28 1;
+0
-41
lib/Code/TidyAll/t/Plugin/PerlCritic.pm less more
0 package Code::TidyAll::t::Plugin::PerlCritic;
1 $Code::TidyAll::t::Plugin::PerlCritic::VERSION = '0.20';
2 use Code::TidyAll::Util qw(write_file);
3 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
4
5 sub test_main : Tests {
6 my $self = shift;
7
8 my $rc_file = $self->{root_dir} . "/perlcriticrc";
9
10 write_file( $rc_file, "only = 1\nseverity = 1\n[TestingAndDebugging::RequireUseStrict]\n" );
11 $self->tidyall(
12 source => 'my $foo = 5\n',
13 conf => { argv => "--profile $rc_file" },
14 expect_error => qr/Code before strictures/,
15 );
16 $self->tidyall(
17 source => 'use strict;\nuse warnings;\nmy $foo = 5\n',
18 conf => { argv => "--profile $rc_file" },
19 expect_ok => 1,
20 );
21 write_file( $rc_file, "only = 1\nseverity = 1\n[CodeLayout::ProhibitHardTabs]\n" );
22 $self->tidyall(
23 source => 'my $foo = 5\n',
24 conf => { argv => "--profile $rc_file" },
25 expect_ok => 1,
26 );
27 $self->tidyall(
28 source => 'my $foo = 5\n',
29 conf => { argv => "--profile $rc_file --badoption" },
30 expect_error => qr/Unknown option: badoption/
31 );
32 write_file( $rc_file, "badconfig = 1\n" );
33 $self->tidyall(
34 source => 'my $foo = 5\n',
35 conf => { argv => "--profile $rc_file" },
36 expect_error => qr/"badconfig" is not a supported option/
37 );
38 }
39
40 1;
+0
-33
lib/Code/TidyAll/t/Plugin/PerlTidy.pm less more
0 package Code::TidyAll::t::Plugin::PerlTidy;
1 $Code::TidyAll::t::Plugin::PerlTidy::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = 'if ( $foo) {\nmy $bar = $baz;\n}\n';
8 $self->tidyall(
9 source => $source,
10 expect_tidy => 'if ($foo) {\n my $bar = $baz;\n}\n'
11 );
12 $self->tidyall(
13 conf => { argv => '-bl' },
14 source => $source,
15 expect_tidy => 'if ($foo)\n{\n my $bar = $baz;\n}\n'
16 );
17 $self->tidyall(
18 source => 'if ($foo) {\n my $bar = $baz;\n}\n',
19 expect_ok => 1
20 );
21 $self->tidyall(
22 source => 'if ($foo) {\n my $bar = $baz;\n',
23 expect_error => qr/Final nesting depth/
24 );
25 $self->tidyall(
26 conf => { argv => '--badoption' },
27 source => $source,
28 expect_error => qr/Unknown option: badoption/
29 );
30 }
31
32 1;
+0
-68
lib/Code/TidyAll/t/Plugin/PodChecker.pm less more
0 package Code::TidyAll::t::Plugin::PodChecker;
1 $Code::TidyAll::t::Plugin::PodChecker::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 $self->tidyall(
8 source => '=head1 DESCRIPTION\n\nHello',
9 expect_ok => 1,
10 desc => 'ok',
11 );
12 $self->tidyall(
13 source => '=head1 METHODS\n\n=over',
14 expect_error => qr/without closing =back/,
15 desc => 'error',
16 );
17 $self->tidyall(
18 source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n',
19 expect_ok => 1,
20 desc => 'ok - empty section, no warnings',
21 );
22 $self->tidyall(
23 source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n',
24 conf => { warnings => 1 },
25 expect_error => qr/empty section in previous paragraph/,
26 desc => 'error - empty section, warnings=1',
27 );
28 $self->tidyall(
29 source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah',
30 conf => { warnings => 1 },
31 expect_ok => 1,
32 desc => 'ok - duplicate section, warnings=1',
33 );
34 $self->tidyall(
35 source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah',
36 conf => { warnings => 2 },
37 expect_error => qr/multiple occurrence/,
38 desc => 'error - duplicate section, warnings=2',
39 );
40 }
41
42 1;
43
44 __END__
45
46 =pod
47
48 =head1 VERSION
49
50 version 0.20
51
52 =head1 SEE ALSO
53
54 L<Code::TidyAll|Code::TidyAll>
55
56 =head1 AUTHOR
57
58 Jonathan Swartz <swartz@pobox.com>
59
60 =head1 COPYRIGHT AND LICENSE
61
62 This software is copyright (c) 2011 by Jonathan Swartz.
63
64 This is free software; you can redistribute it and/or modify it under
65 the same terms as the Perl 5 programming language system itself.
66
67 =cut
+0
-39
lib/Code/TidyAll/t/Plugin/PodSpell.pm less more
0 package Code::TidyAll::t::Plugin::PodSpell;
1 $Code::TidyAll::t::Plugin::PodSpell::VERSION = '0.20';
2 use Code::TidyAll::Util qw(write_file);
3 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
4
5 sub test_filename { 'Foo.pod' }
6
7 sub test_main : Tests {
8 my $self = shift;
9
10 my $dict_file = $self->{root_dir} . "/.ispell_english";
11
12 $self->tidyall(
13 source => '=head SUMMARY\n\nthe quick brown fox jumped over the lazy dogs',
14 expect_ok => 1,
15 desc => 'ok',
16 );
17 $self->tidyall(
18 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
19 expect_error => qr/unrecognized words:\nbrowwn\nlazeey/,
20 desc => 'spelling mistakes',
21 );
22 write_file( $dict_file, "browwn\n" );
23 $self->tidyall(
24 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
25 conf => { ispell_argv => "-p $dict_file" },
26 expect_error => qr/unrecognized words:\nlazeey/,
27 desc => 'spelling mistakes, one in dictionary',
28 );
29 write_file( $dict_file, "browwn\nlazeey\n" );
30 $self->tidyall(
31 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
32 conf => { ispell_argv => "-p $dict_file" },
33 expect_ok => 1,
34 desc => 'spelling mistakes, all in dictionary',
35 );
36 }
37
38 1;
+0
-100
lib/Code/TidyAll/t/Plugin/PodTidy.pm less more
0 package Code::TidyAll::t::Plugin::PodTidy;
1 $Code::TidyAll::t::Plugin::PodTidy::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = '=head1 DESCRIPTION
8
9 There are a lot of great code tidiers and validators out there. C<tidyall> makes them available from a single unified interface.
10
11 You can run C<tidyall> on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C<tidyall> will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed.
12
13 ';
14 $self->tidyall(
15 source => $source,
16 expect_tidy => '=head1 DESCRIPTION
17
18 There are a lot of great code tidiers and validators out there. C<tidyall>
19 makes them available from a single unified interface.
20
21 You can run C<tidyall> on a single file or on an entire project hierarchy, and
22 configure which tidiers/validators are applied to which files. C<tidyall> will
23 back up files beforehand, and for efficiency will only consider files that have
24 changed since they were last processed.
25
26 ',
27 desc => 'tidy - defaults',
28 );
29
30 $self->tidyall(
31 source => '=head1 DESCRIPTION
32
33 There are a lot of great code tidiers and validators out there. C<tidyall>
34 makes them available from a single unified interface.
35
36 You can run C<tidyall> on a single file or on an entire project hierarchy, and
37 configure which tidiers/validators are applied to which files. C<tidyall> will
38 back up files beforehand, and for efficiency will only consider files that have
39 changed since they were last processed.
40
41 ',
42 expect_ok => 1,
43 desc => 'ok - defaults',
44 );
45
46 $self->tidyall(
47 source => $source,
48 conf => { columns => 30 },
49 expect_tidy => '=head1 DESCRIPTION
50
51 There are a lot of great code
52 tidiers and validators out
53 there. C<tidyall> makes them
54 available from a single
55 unified interface.
56
57 You can run C<tidyall> on a
58 single file or on an entire
59 project hierarchy, and
60 configure which
61 tidiers/validators are
62 applied to which files.
63 C<tidyall> will back up files
64 beforehand, and for
65 efficiency will only consider
66 files that have changed since
67 they were last processed.
68
69 ',
70 desc => 'tidy - columns = 30',
71 );
72 }
73
74 1;
75
76 __END__
77
78 =pod
79
80 =head1 VERSION
81
82 version 0.20
83
84 =head1 SEE ALSO
85
86 L<Code::TidyAll|Code::TidyAll>
87
88 =head1 AUTHOR
89
90 Jonathan Swartz <swartz@pobox.com>
91
92 =head1 COPYRIGHT AND LICENSE
93
94 This software is copyright (c) 2011 by Jonathan Swartz.
95
96 This is free software; you can redistribute it and/or modify it under
97 the same terms as the Perl 5 programming language system itself.
98
99 =cut
+0
-12
lib/Code/TidyAll/t/Plugin/SortLines.pm less more
0 package Code::TidyAll::t::Plugin::SortLines;
1 $Code::TidyAll::t::Plugin::SortLines::VERSION = '0.20';
2 use Test::Class::Most parent => 'Code::TidyAll::t::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 $self->tidyall( source => "c\nb\na\n", expect_tidy => "a\nb\nc\n" );
8 $self->tidyall( source => "\n\na\n\n\n", expect_tidy => "a\n" );
9 }
10
11 1;
+0
-62
lib/Code/TidyAll/t/Plugin.pm less more
0 package Code::TidyAll::t::Plugin;
1 $Code::TidyAll::t::Plugin::VERSION = '0.20';
2 use Capture::Tiny qw(capture);
3 use Code::TidyAll::Util qw(tempdir_simple);
4 use Code::TidyAll;
5 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
6
7 __PACKAGE__->SKIP_CLASS("Virtual base class");
8
9 my $Test = Test::Builder->new;
10
11 sub startup : Tests(startup => no_plan) {
12 my $self = shift;
13 $self->{root_dir} = tempdir_simple();
14 }
15
16 sub plugin_class {
17 my ($self) = @_;
18
19 return ( split( '::', ref($self) ) )[-1];
20 }
21
22 sub test_filename { 'foo.txt' }
23
24 sub tidyall {
25 my ( $self, %p ) = @_;
26
27 my $source = $p{source} || die "source required";
28 my $desc = $p{desc} || $source;
29 $desc =~ s/\n/\\n/g;
30 my $plugin_class = $self->plugin_class;
31 my %plugin_conf = ( $plugin_class => { select => '*', %{ $p{conf} || {} } } );
32 my $ct =
33 Code::TidyAll->new( quiet => 1, root_dir => $self->{root_dir}, plugins => \%plugin_conf );
34
35 $source =~ s/\\n/\n/g;
36 my $result;
37 my ( $output, $error ) =
38 capture { $result = $ct->process_source( $source, $self->test_filename ) };
39 $Test->diag($output) if $output && $ENV{TEST_VERBOSE};
40 $Test->diag($error) if $error && $ENV{TEST_VERBOSE};
41
42 if ( my $expect_tidy = $p{expect_tidy} ) {
43 $expect_tidy =~ s/\\n/\n/g;
44 is( $result->state, 'tidied', "state=tidied [$desc]" );
45 is( $result->new_contents, $expect_tidy, "new contents [$desc]" );
46 is( $result->error, undef, "no error [$desc]" );
47 }
48 elsif ( my $expect_ok = $p{expect_ok} ) {
49 is( $result->state, 'checked', "state=checked [$desc]" );
50 is( $result->error, undef, "no error [$desc]" );
51 if ( $result->new_contents ) {
52 is( $result->new_contents, $source, "same contents [$desc]" );
53 }
54 }
55 elsif ( my $expect_error = $p{expect_error} ) {
56 is( $result->state, 'error', "state=error [$desc]" );
57 like( $result->error || '', $expect_error, "error message [$desc]" );
58 }
59 }
60
61 1;
+0
-124
lib/Code/TidyAll/t/SVN.pm less more
0 package Code::TidyAll::t::SVN;
1 $Code::TidyAll::t::SVN::VERSION = '0.20';
2 use Capture::Tiny qw(capture_stdout capture_stderr capture);
3 use Code::TidyAll::SVN::Precommit;
4 use Code::TidyAll::SVN::Util qw(svn_uncommitted_files);
5 use Code::TidyAll::Util qw(dirname mkpath read_file realpath tempdir_simple write_file);
6 use Code::TidyAll;
7 use IPC::System::Simple qw(run);
8 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
9
10 my ( $precommit_hook_template, $tidyall_ini_template );
11
12 sub test_svn : Tests {
13 my ($self) = @_;
14
15 my $temp_dir = tempdir_simple;
16 my $repo_dir = "$temp_dir/repo";
17 my $src_dir = "$temp_dir/src";
18 my $work_dir = "$temp_dir/work";
19 my $hook_log = "$temp_dir/hook.log";
20 my ( $stdout, $stderr );
21
22 my $log_contains = sub {
23 my $regex = shift;
24 like( read_file($hook_log), $regex );
25 };
26
27 my $clear_log = sub {
28 run("cat /dev/null > $hook_log");
29 };
30
31 my $committed = sub {
32 $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) };
33 unlike( $stdout, qr/\S/, "committed" );
34 };
35
36 my $uncommitted = sub {
37 $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) };
38 like( $stdout, qr/^M/, "uncommitted" );
39 };
40
41 run("svnadmin create $repo_dir");
42 my $hooks_dir = "$repo_dir/hooks";
43 ok( -d $hooks_dir, "$hooks_dir exists" );
44
45 mkpath( $src_dir, 0, 0775 );
46 write_file( "$src_dir/foo.txt", "abc" );
47
48 run( sprintf( 'svn -q import %s file://%s/myapp/trunk -m "import"', $src_dir, $repo_dir ) );
49 run( sprintf( 'svn -q checkout file://%s/myapp/trunk %s', $repo_dir, $work_dir ) );
50
51 is( read_file("$work_dir/foo.txt"), "abc", "checkout and import ok" );
52 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" );
53
54 my $precommit_hook_file = "$hooks_dir/pre-commit";
55 my $precommit_hook = sprintf( $precommit_hook_template, realpath("lib"), $hook_log );
56 write_file( $precommit_hook_file, $precommit_hook );
57 chmod( 0775, $precommit_hook_file );
58
59 write_file( "$work_dir/foo.txt", "abc " );
60 mkpath( "$work_dir/bar", 0, 0775 );
61 run( sprintf( 'svn add %s/bar', $work_dir ) );
62 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [ re("foo.txt") ], "one uncommitted file" );
63
64 $stderr = capture_stderr {
65 run( sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar', $work_dir, $work_dir ) );
66 };
67 unlike( $stderr, qr/\S/ );
68 $log_contains->(qr|could not find.*upwards from 'myapp/trunk/foo.txt'|);
69 $clear_log->();
70 $committed->();
71 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" );
72
73 write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) );
74 run( sprintf( 'svn -q add %s/tidyall.ini', $work_dir ) );
75 cmp_deeply(
76 [ svn_uncommitted_files($work_dir) ],
77 [ re("tidyall.ini") ],
78 "one uncommitted file"
79 );
80 run( sprintf( 'svn -q commit -m "added" %s/tidyall.ini', $work_dir ) );
81
82 write_file( "$work_dir/foo.txt", "abc" );
83 $stderr =
84 capture_stderr { system( sprintf( 'svn -q commit -m "changed" %s/foo.txt', $work_dir ) ) };
85 like( $stderr, qr/1 file did not pass tidyall check/ );
86 like( $stderr, qr/needs tidying/ );
87 $uncommitted->();
88
89 write_file( "$work_dir/foo.txt", "ABC" );
90 write_file( "$work_dir/bar.dat", "123" );
91 run( sprintf( 'svn -q add %s/bar.dat', $work_dir ) );
92 $stderr = capture_stderr {
93 system(
94 sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar.dat', $work_dir, $work_dir ) );
95 };
96 unlike( $stderr, qr/\S/ );
97 $committed->();
98
99 write_file( "$work_dir/foo.txt", "def" );
100 $stderr = capture_stderr {
101 system( sprintf( 'svn -q commit -m "NO TIDYALL - emergency fix!" %s/foo.txt', $work_dir ) );
102 };
103 unlike( $stderr, qr/\S/ );
104 $committed->();
105 }
106
107 $precommit_hook_template = '#!/usr/bin/perl
108 use lib qw(%s);
109 use Code::TidyAll::SVN::Precommit;
110 use Log::Any::Adapter (File => "%s");
111 use strict;
112 use warnings;
113
114 Code::TidyAll::SVN::Precommit->check(
115 extra_conf_files => ["perlcriticrc"],
116 tidyall_options => { verbose => 1 }
117 );
118 ';
119
120 $tidyall_ini_template = '
121 [+Code::TidyAll::Test::Plugin::UpperText]
122 select = **/*.txt
123 ';
+0
-17
lib/Code/TidyAll/t/Util.pm less more
0 package Code::TidyAll::t::Util;
1 $Code::TidyAll::t::Util::VERSION = '0.20';
2 use Code::TidyAll::Util qw(dirname tempdir_simple);
3 use IPC::System::Simple qw(capturex);
4 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
5
6 sub test_tempdir_simple : Tests {
7 my $dir = capturex(
8 "$^X", "-I",
9 "lib", "-MCode::TidyAll::Util",
10 "-e", "print Code::TidyAll::Util::tempdir_simple "
11 );
12 ok( -d dirname($dir), "parent exists" );
13 ok( !-d $dir, "dir does not exist" );
14 }
15
16 1;
+0
-35
lib/Code/TidyAll/t/Zglob.pm less more
0 package Code::TidyAll::t::Zglob;
1 $Code::TidyAll::t::Zglob::VERSION = '0.20';
2 use File::Zglob;
3 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
4 use Code::TidyAll::Util::Zglob qw(zglob_to_regex);
5
6 sub test_match : Tests {
7 my ( $zglob, $regex );
8
9 $zglob = "**/*.txt";
10 $regex = zglob_to_regex($zglob);
11 foreach my $path (qw(foo.txt foo/baz.txt foo/bar/baz.txt)) {
12 like( $path, $regex, "$path matches $zglob" );
13 }
14 foreach my $path (qw(foo/bar/baz.tx)) {
15 unlike( $path, $regex, "$path does not match $zglob" );
16 }
17
18 $zglob = "**/*";
19 $regex = zglob_to_regex($zglob);
20 foreach my $path (qw(foo foo.txt foo/bar foo/baz.txt)) {
21 like( $path, $regex, "$path matches $zglob" );
22 }
23
24 $zglob = "foo/**/*.txt";
25 $regex = zglob_to_regex($zglob);
26 foreach my $path (qw(foo/baz.txt foo/bar/baz.txt foo/bar/baz/blargh.txt)) {
27 like( $path, $regex, "$path matches $zglob" );
28 }
29 foreach my $path (qw(foo.txt foo/bar/baz.tx)) {
30 unlike( $path, $regex, "$path does not match $zglob" );
31 }
32 }
33
34 1;
00 package Code::TidyAll;
1 $Code::TidyAll::VERSION = '0.20';
1
22 use Cwd qw(realpath);
33 use Code::TidyAll::Config::INI::Reader;
44 use Code::TidyAll::Cache;
5 use Code::TidyAll::CacheModel;
56 use Code::TidyAll::Util
6 qw(abs2rel basename can_load dirname dump_one_line mkpath read_dir read_file rel2abs tempdir_simple uniq write_file);
7 qw(abs2rel basename can_load dirname dump_one_line mkpath read_dir rel2abs tempdir_simple uniq);
78 use Code::TidyAll::Result;
89 use Date::Format;
9 use Digest::SHA1 qw(sha1_hex);
10 use Digest::SHA qw(sha1_hex);
1011 use File::Find qw(find);
12 use File::Slurp::Tiny qw(read_file write_file);
1113 use File::Zglob;
1214 use List::MoreUtils qw(uniq);
1315 use Moo;
1618 use strict;
1719 use warnings;
1820
21 our $VERSION = '0.32';
22
1923 sub default_conf_names { ( 'tidyall.ini', '.tidyallrc' ) }
2024
2125 # External
22 has 'backup_ttl' => ( is => 'ro', default => sub { '1 hour' } );
23 has 'check_only' => ( is => 'ro' );
24 has 'data_dir' => ( is => 'lazy' );
25 has 'iterations' => ( is => 'ro', default => sub { 1 } );
26 has 'list_only' => ( is => 'ro' );
27 has 'mode' => ( is => 'ro', default => sub { 'cli' } );
28 has 'no_backups' => ( is => 'ro' );
29 has 'no_cache' => ( is => 'ro' );
30 has 'output_suffix' => ( is => 'ro', default => sub { '' } );
31 has 'plugins' => ( is => 'ro', required => 1 );
32 has 'quiet' => ( is => 'ro' );
33 has 'recursive' => ( is => 'ro' );
34 has 'refresh_cache' => ( is => 'ro' );
35 has 'root_dir' => ( is => 'ro', required => 1 );
36 has 'verbose' => ( is => 'ro' );
26 has 'backup_ttl' => ( is => 'ro', default => '1 hour' );
27 has 'cache' => ( is => 'lazy' );
28 has 'cache_model_class' => ( is => 'ro', default => 'Code::TidyAll::CacheModel' );
29 has 'check_only' => ( is => 'ro' );
30 has 'data_dir' => ( is => 'lazy' );
31 has 'iterations' => ( is => 'ro', default => 1 );
32 has 'list_only' => ( is => 'ro' );
33 has 'mode' => ( is => 'ro', default => 'cli' );
34 has 'msg_outputter' => ( is => 'ro', builder => '_build_msg_outputter' );
35 has 'no_backups' => ( is => 'ro' );
36 has 'no_cache' => ( is => 'ro' );
37 has 'output_suffix' => ( is => 'ro', default => q{} );
38 has 'plugins' => ( is => 'ro', required => 1 );
39 has 'quiet' => ( is => 'ro' );
40 has 'recursive' => ( is => 'ro' );
41 has 'refresh_cache' => ( is => 'ro' );
42 has 'root_dir' => ( is => 'ro', required => 1 );
43 has 'verbose' => ( is => 'ro' );
3744
3845 # Internal
3946 has 'backup_dir' => ( is => 'lazy', init_arg => undef, trigger => 1 );
4047 has 'backup_ttl_secs' => ( is => 'lazy', init_arg => undef );
4148 has 'base_sig' => ( is => 'lazy', init_arg => undef );
42 has 'cache' => ( is => 'lazy', init_arg => undef );
4349 has 'plugin_objects' => ( is => 'lazy', init_arg => undef );
4450 has 'plugins_for_mode' => ( is => 'lazy', init_arg => undef );
51
52 with 'Code::TidyAll::Role::Tempdir';
4553
4654 sub _build_backup_dir {
4755 my $self = shift;
8391
8492 sub _build_plugin_objects {
8593 my $self = shift;
86 my @plugin_objects =
87 map { $self->_load_plugin( $_, $self->plugins->{$_} ) } keys( %{ $self->plugins_for_mode } );
88
89 # Sort tidiers before validators, then alphabetical
90 #
91 return [ sort { ( $a->is_validator <=> $b->is_validator ) || ( $a->name cmp $b->name ) }
92 @plugin_objects ];
94 my @plugin_objects = map { $self->_load_plugin( $_, $self->plugins->{$_} ) }
95 keys( %{ $self->plugins_for_mode } );
96
97 # Sort tidiers by weight (by default validators have a weight of 60 and non-
98 # validators a weight of 50 meaning non-validators normally go first), then
99 # alphabetical
100 # TODO: These should probably sort in a consistent way independent of locale
101 return [ sort { ( $a->weight <=> $b->weight ) || ( $a->name cmp $b->name ) } @plugin_objects ];
93102 }
94103
95104 sub BUILD {
101110 die sprintf(
102111 "unknown constructor param%s %s for %s",
103112 @bad_params > 1 ? "s" : "",
104 join( ", ", sort map { "'$_'" } @bad_params ),
113 join( ", ", sort map {"'$_'"} @bad_params ),
105114 ref($self)
106115 );
107116 }
134143 $class = $tidyall_class;
135144 }
136145
137 $class->msg( "constructing %s with these params: %s", $class, dump_one_line( \%params ) )
138 if ( $params{verbose} );
146 if ( $params{verbose} ) {
147 my $msg_outputter = $params{msg_outputter} || $class->_build_msg_outputter();
148 $msg_outputter->(
149 "constructing %s with these params: %s", $class,
150 dump_one_line( \%params )
151 );
152 }
139153
140154 return $class->new(%params);
141155 }
196210
197211 if ( -d $path ) {
198212 if ( $self->recursive ) {
199 return $self->process_paths( map { "$path/$_" } read_dir($path) );
213 return $self->process_paths( map {"$path/$_"} read_dir($path) );
200214 }
201215 else {
202216 return ( $self->_error_result( "$path: is a directory (try -r/--recursive)", $path ) );
211225 }
212226
213227 sub process_file {
214 my ( $self, $file ) = @_;
215 die "$file is not a file" unless -f $file;
216
217 my $path = $self->_small_path($file);
228 my ( $self, $full_path ) = @_;
229 die "$full_path is not a file" unless -f $full_path;
230
231 my $path = $self->_small_path($full_path);
218232
219233 if ( $self->list_only ) {
220234 if ( my @plugins = $self->plugins_for_path($path) ) {
223237 return Code::TidyAll::Result->new( path => $path, state => 'checked' );
224238 }
225239
226 my $cache = $self->no_cache ? undef : $self->cache;
227 my $cache_key = "sig/$path";
228 my $contents = my $orig_contents = read_file($file);
229 if ( $cache && ( my $sig = $cache->get($cache_key) ) ) {
230 if ( $self->refresh_cache ) {
231 $cache->remove($cache_key);
232 }
233 elsif ( $sig eq $self->_file_sig( $file, $orig_contents ) ) {
234 $self->msg( "[cached] %s", $path ) if $self->verbose;
235 return Code::TidyAll::Result->new( path => $path, state => 'cached' );
236 }
237 }
238
239 my $result = $self->process_source( $orig_contents, $path );
240 my $cache_model = $self->_cache_model_for( $path, $full_path );
241 if ( $self->refresh_cache ) {
242 $cache_model->remove;
243 }
244 elsif ( $cache_model->is_cached ) {
245 $self->msg( "[cached] %s", $path ) if $self->verbose;
246 return Code::TidyAll::Result->new( path => $path, state => 'cached' );
247 }
248
249 my $contents = $cache_model->file_contents || read_file($full_path);
250 my $result = $self->process_source( $contents, $path );
240251
241252 if ( $result->state eq 'tidied' ) {
253
254 # backup original contents
242255 $self->_backup_file( $path, $contents );
256
257 # write new contents out to disk
243258 $contents = $result->new_contents;
244 write_file( join( '', $file, $self->output_suffix ), $contents );
245 }
246 $cache->set( $cache_key, $self->_file_sig( $file, $contents ) ) if $cache && $result->ok;
247
259 write_file( join( '', $full_path, $self->output_suffix ), $contents );
260
261 # change the in memory contents of the cache (but don't update yet)
262 $cache_model->file_contents($contents) unless $self->output_suffix;
263 }
264
265 $cache_model->update if $result->ok;
248266 return $result;
267 }
268
269 sub _cache_model_for {
270 my ( $self, $path, $full_path ) = @_;
271 return $self->cache_model_class->new(
272 path => $path,
273 full_path => $full_path,
274 cache_engine => $self->no_cache ? undef : $self->cache,
275 base_sig => $self->base_sig,
276 );
249277 }
250278
251279 sub process_source {
254282 die "contents and path required" unless defined($contents) && defined($path);
255283 my @plugins = $self->plugins_for_path($path);
256284 if ( !@plugins ) {
257 $self->msg( "[no plugins apply%s] %s",
258 $self->mode ? " for mode '" . $self->mode . "'" : "", $path )
259 if $self->verbose;
285 $self->msg(
286 "[no plugins apply%s] %s",
287 $self->mode ? " for mode '" . $self->mode . "'" : "", $path
288 ) if $self->verbose;
260289 return Code::TidyAll::Result->new( path => $path, state => 'no_match' );
261290 }
262291
265294
266295 my $new_contents = my $orig_contents = $contents;
267296 my $plugin;
297
298 if ( $self->verbose ) {
299 $self->msg("[applying the following plugins: @plugins]");
300 }
268301
269302 try {
270303 foreach my $method (qw(preprocess_source process_source_or_file postprocess_source)) {
282315 my $was_tidied = !$error && ( $new_contents ne $orig_contents );
283316 if ( $was_tidied && $self->check_only ) {
284317 $error = "*** needs tidying";
318 my $diff = q{};
319 foreach $plugin (@plugins) {
320 $diff = $plugin->diff( $diff, $orig_contents, $new_contents, $path );
321 }
322 $error .= "\n\n" . $diff if length $diff;
285323 undef $was_tidied;
286324 }
287325
288326 if ( !$self->quiet || $error ) {
289327 my $status = $was_tidied ? "[tidied] " : "[checked] ";
290 my $plugin_names =
291 $self->verbose ? sprintf( " (%s)", join( ", ", map { $_->name } @plugins ) ) : "";
328 my $plugin_names
329 = $self->verbose ? sprintf( " (%s)", join( ", ", map { $_->name } @plugins ) ) : "";
292330 $self->msg( "%s%s%s", $status, $path, $plugin_names );
293331 }
294332
295333 if ($error) {
296 return $self->_error_result( $error, $path );
334 return $self->_error_result( $error, $path, $orig_contents, $new_contents );
297335 }
298336 elsif ($was_tidied) {
299337 return Code::TidyAll::Result->new(
300 path => $path,
301 state => 'tidied',
302 new_contents => $new_contents
338 path => $path,
339 state => 'tidied',
340 orig_contents => $orig_contents,
341 new_contents => $new_contents
303342 );
304343 }
305344 else {
314353 $conf_string =~ s/\$ROOT/$root_dir/g;
315354 my $conf_hash = Code::TidyAll::Config::INI::Reader->read_string($conf_string);
316355 die "'$conf_file' did not evaluate to a hash"
317 unless ( ref($conf_hash) eq 'HASH' );
356 unless ( ref($conf_hash) eq 'HASH' );
318357 return $conf_hash;
319358 }
320359
364403 my $path1 = rel2abs($start_dir);
365404 my $path2 = realpath($start_dir);
366405 my $conf_file = $class->_find_conf_file_upward( $conf_names, $path1 )
367 || $class->_find_conf_file_upward( $conf_names, $path2 );
406 || $class->_find_conf_file_upward( $conf_names, $path2 );
368407 unless ( defined $conf_file ) {
369408 die sprintf(
370409 "could not find %s upwards from %s",
408447 my %is_ignored = map { ( $_, 1 ) } $self->_zglob( $plugin->ignores );
409448 @selected = grep { !$is_ignored{$_} } @selected;
410449 }
450 if ( my $shebang = $plugin->shebang ) {
451 my $re = join '|', map {quotemeta} split ' ', $shebang;
452 $re = qr/^#!.*\b(?:$re)\b/;
453 @selected = grep {
454 my $fh;
455 open $fh, '<', $_ and <$fh> =~ /$re/;
456 } @selected;
457 }
411458 push( @matched_files, @selected );
412459 foreach my $file (@selected) {
413460 my $path = substr( $file, $root_length + 1 );
421468 sub plugins_for_path {
422469 my ( $self, $path ) = @_;
423470
424 $self->{plugins_for_path}->{$path} ||=
425 [ grep { $_->matches_path($path) } @{ $self->plugin_objects } ];
471 $self->{plugins_for_path}->{$path}
472 ||= [ grep { $_->matches_path($path) } @{ $self->plugin_objects } ];
426473 return @{ $self->{plugins_for_path}->{$path} };
427474 }
428475
445492 sub _small_path {
446493 my ( $self, $path ) = @_;
447494 die sprintf( "'%s' is not underneath root dir '%s'!", $path, $self->root_dir )
448 unless index( $path, $self->root_dir ) == 0;
495 unless index( $path, $self->root_dir ) == 0;
449496 return substr( $path, length( $self->root_dir ) + 1 );
450 }
451
452 sub _file_sig {
453 my ( $self, $file, $contents ) = @_;
454 my $last_mod = ( stat($file) )[9];
455 return $self->_sig( [ $self->base_sig, $last_mod, $contents ] );
456497 }
457498
458499 sub _sig {
460501 return sha1_hex( join( ",", @$data ) );
461502 }
462503
463 sub _tempdir {
464 my ($self) = @_;
465 $self->{tempdir} ||= tempdir_simple();
466 return $self->{tempdir};
467 }
468
469504 sub msg {
470505 my ( $self, $format, @params ) = @_;
471 printf "$format\n", @params;
506 $self->msg_outputter()->( $format, @params );
507 }
508
509 sub _build_msg_outputter {
510 return sub {
511 my $format = shift;
512 printf "$format\n", @_;
513 };
472514 }
473515
474516 sub _error_result {
475 my ( $self, $msg, $path ) = @_;
517 my ( $self, $msg, $path, $orig_contents, $new_contents ) = @_;
476518 $self->msg( "%s", $msg );
477 return Code::TidyAll::Result->new( path => $path, state => 'error', error => $msg );
519 return Code::TidyAll::Result->new(
520 path => $path,
521 state => 'error',
522 error => $msg,
523 orig_contents => $orig_contents,
524 new_contents => $new_contents,
525 );
478526 }
479527
480528 1;
481529
530 # ABSTRACT: Engine for tidyall, your all-in-one code tidier and validator
531
482532 __END__
483533
484534 =pod
489539
490540 =head1 VERSION
491541
492 version 0.20
542 version 0.32
493543
494544 =head1 SYNOPSIS
495545
519569
520570 =head1 DESCRIPTION
521571
522 This is the engine used by L<tidyall|tidyall> - read that first to get an
523 overview.
572 This is the engine used by L<tidyall> - read that first to get an overview.
524573
525574 You can call this API from your own program instead of executing C<tidyall>.
526575
576 =encoding UTF-8
577
527578 =head1 CONSTRUCTION
528579
529580 =head2 Constructor methods
536587
537588 =item new_with_conf_file ($conf_file, %params)
538589
539 Takes a conf file path, followed optionally by a set of key/value parameters.
590 Takes a conf file path, followed optionally by a set of key/value parameters.
540591 Reads parameters out of the conf file and combines them with the passed
541592 parameters (the latter take precedence), and calls the regular constructor.
542593
555606 equivalent to what would be parsed out of the sections in the configuration
556607 file.
557608
609 =item cache_model_class
610
611 The cache model class. Defaults to C<Code::TidyAll::CacheModel>
612
613 =item cache
614
615 The cache instance (e.g. an instance of C<Code::TidyAll::Cache> or a C<CHI>
616 instance.) An instance of C<Code::TidyAll::Cache> is automatically instantiated
617 by default.
618
558619 =item backup_ttl
559620
560621 =item check_only
622
623 =item no_cleanup
624
625 A boolean indicating if we should skip cleaning temporary files or not.
626 Defaults to false.
561627
562628 =item data_dir
563629
581647 replacing dashes with underscore (e.g. the C<backup-ttl> option becomes
582648 C<backup_ttl> here).
583649
650 =item msg_outputter
651
652 This is a subroutine reference that is called whenever a message needs to be
653 printed in some way. The sub receives a C<sprintf()> format string followed by
654 one or more parameters. The default sub used simply calls C<printf "$format\n",
655 @_> but L<Test::Code::TidyAll> overrides this to use the C<<
656 Test::Builder->diag >> method.
657
584658 =back
585659
586660 =head1 METHODS
590664 =item process_paths (path, ...)
591665
592666 Call L</process_file> on each file; descend recursively into each directory if
593 the C<recursive> flag is on. Return a list of
594 L<Code::TidyAll::Result|Code::TidyAll::Result> objects, one for each file.
667 the C<recursive> flag is on. Return a list of L<Code::TidyAll::Result> objects,
668 one for each file.
595669
596670 =item process_file (file)
597671
617691
618692 =item *
619693
620 Return a L<Code::TidyAll::Result|Code::TidyAll::Result> object
694 Return a L<Code::TidyAll::Result> object
621695
622696 =back
623697
626700 Like L</process_file>, but process the I<source> string instead of a file, and
627701 do not read from or write to the cache. You must still pass the relative
628702 I<path> from the root as the second argument, so that we know which plugins to
629 apply. Return a L<Code::TidyAll::Result|Code::TidyAll::Result> object.
703 apply. Return a L<Code::TidyAll::Result> object.
630704
631705 =item plugins_for_path (I<path>)
632706
633707 Given a relative I<path> from the root, return a list of
634 L<Code::TidyAll::Plugin|Code::TidyAll::Plugin> objects that apply to it, or an
635 empty list if no plugins apply.
708 L<Code::TidyAll::Plugin> objects that apply to it, or an empty list if no
709 plugins apply.
636710
637711 =item find_conf_file (I<conf_names>, I<start_dir>)
638712
639713 Class method. Start in the I<start_dir> and work upwards, looking for one of
640 the I<conf_names>. Return the pathname if found or throw an error if not
641 found.
714 the I<conf_names>. Return the pathname if found or throw an error if not found.
642715
643716 =item find_matched_files
644717
646719
647720 =back
648721
649 =head1 SEE ALSO
650
651 L<Code::TidyAll|Code::TidyAll>
652
653 =head1 AUTHOR
722 =head1 AUTHORS
723
724 =over 4
725
726 =item *
654727
655728 Jonathan Swartz <swartz@pobox.com>
656729
730 =item *
731
732 Dave Rolsky <autarch@urth.org>
733
734 =back
735
736 =head1 CONTRIBUTORS
737
738 =for stopwords Andy Jack George Hartzell Gregory Oschwald Joe Crotty Mark Fowler Grimes Olaf Alders Pedro Melo Sergey Romanov timgimyee
739
740 =over 4
741
742 =item *
743
744 Andy Jack <andyjack@cpan.org>
745
746 =item *
747
748 George Hartzell <georgewh@gene.com>
749
750 =item *
751
752 Gregory Oschwald <goschwald@maxmind.com>
753
754 =item *
755
756 Joe Crotty <joe.crotty@returnpath.net>
757
758 =item *
759
760 Mark Fowler <mark@twoshortplanks.com>
761
762 =item *
763
764 Mark Grimes <mgrimes@cpan.org>
765
766 =item *
767
768 Olaf Alders <olaf@wundersolutions.com>
769
770 =item *
771
772 Pedro Melo <melo@simplicidade.org>
773
774 =item *
775
776 Sergey Romanov <sromanov-dev@yandex.ru>
777
778 =item *
779
780 timgimyee <tim.gim.yee@gmail.com>
781
782 =back
783
657784 =head1 COPYRIGHT AND LICENSE
658785
659 This software is copyright (c) 2011 by Jonathan Swartz.
660
661 This is free software; you can redistribute it and/or modify it under
662 the same terms as the Perl 5 programming language system itself.
786 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
787
788 This is free software; you can redistribute it and/or modify it under the same
789 terms as the Perl 5 programming language system itself.
663790
664791 =cut
+0
-39
lib/Pod/Weaver/Section/SeeAlsoCodeTidyAll.pm less more
0 package Pod::Weaver::Section::SeeAlsoCodeTidyAll;
1 $Pod::Weaver::Section::SeeAlsoCodeTidyAll::VERSION = '0.20';
2 use Moose;
3 with 'Pod::Weaver::Role::Section';
4
5 use Moose::Autobox;
6
7 # Add "SEE ALSO: CodeTidyAll"
8
9 sub weave_section {
10 my ( $self, $document, $input ) = @_;
11
12 my $idc = $input->{pod_document}->children;
13 for ( my $i = 0 ; $i < $idc->length ; $i++ ) {
14 next unless my $para = $idc->[$i];
15 return
16 if $para->can('command')
17 && $para->command eq 'head1'
18 && $para->content eq 'SEE ALSO';
19 }
20 $document->children->push(
21 Pod::Elemental::Element::Nested->new(
22 {
23 command => 'head1',
24 content => 'SEE ALSO',
25 children => [
26 Pod::Elemental::Element::Pod5::Ordinary->new(
27 { content => "L<Code::TidyAll|Code::TidyAll>" }
28 ),
29 ],
30 }
31 ),
32 );
33 }
34
35 __PACKAGE__->meta->make_immutable;
36
37 no Moose;
38 1;
00 package Test::Code::TidyAll;
1 $Test::Code::TidyAll::VERSION = '0.20';
2 use IPC::System::Simple qw(run);
1
32 use Code::TidyAll;
43 use Test::Builder;
4 use Text::Diff;
5 use Text::Diff::Table;
56 use strict;
67 use warnings;
78 use base qw(Exporter);
9
10 our $VERSION = '0.32';
811
912 my $test = Test::Builder->new;
1013
1821 my @conf_names = Code::TidyAll->default_conf_names;
1922 $conf_file = Code::TidyAll->find_conf_file( \@conf_names, "." );
2023 }
21 my $ct =
22 Code::TidyAll->new_from_conf_file( $conf_file, check_only => 1, mode => 'test', %options );
24 $options{quiet} = 1 unless $options{verbose};
25 $test->diag("Using $conf_file for config")
26 if $options{verbose};
27 my $ct = Code::TidyAll->new_from_conf_file(
28 $conf_file,
29 check_only => 1,
30 mode => 'test',
31 msg_outputter => \&_msg_outputter,
32 %options,
33 );
2334 my @files = $ct->find_matched_files;
2435 $test->plan( tests => scalar(@files) );
2536 foreach my $file (@files) {
2940 $test->ok( 1, $desc );
3041 }
3142 else {
43 $test->ok( 0, $desc );
3244 $test->diag( $result->error );
33 $test->ok( 0, $desc );
45
46 if ( $options{verbose} ) {
47 my $orig = $result->orig_contents;
48 my $new = $result->new_contents;
49 if ( defined $orig && defined $new ) {
50 $test->diag( diff( \$orig, \$new, { STYLE => 'Table' } ) );
51 }
52 }
3453 }
3554 }
3655 }
3756
57 sub _msg_outputter {
58 my $format = shift;
59 $test->diag( sprintf $format, @_ );
60 }
61
3862 1;
63
64 # ABSTRACT: Check that all your files are tidy and valid according to tidyall
3965
4066 __END__
4167
4369
4470 =head1 NAME
4571
46 Test::Code::TidyAll - check that all your files are tidy and valid according to
72 Test::Code::TidyAll - Check that all your files are tidy and valid according to
4773 tidyall
4874
4975 =head1 VERSION
5076
51 version 0.20
77 version 0.32
5278
5379 =head1 SYNOPSIS
5480
6692
6793 By default, looks for config file C<tidyall.ini> or C<.tidyallrc> in the
6894 current directory and parent directories, which is generally the right place if
69 you are running L<prove|prove>.
95 you are running L<prove>.
7096
7197 Passes mode = "test" by default; see L<modes|tidyall/MODES>.
7298
7399 C<tidyall_ok> is exported by default. Any options will be passed along to the
74 L<Code::TidyAll|Code::TidyAll> constructor. For example, if you don't want to
75 use the tidyall cache and instead check all files every time:
100 L<Code::TidyAll> constructor. For example, if you don't want to use the tidyall
101 cache and instead check all files every time:
76102
77103 tidyall_ok(no_cache => 1);
78104
82108
83109 =head1 SEE ALSO
84110
85 L<tidyall|tidyall>
111 L<tidyall>
86112
87 =head1 AUTHOR
113 =head1 AUTHORS
114
115 =over 4
116
117 =item *
88118
89119 Jonathan Swartz <swartz@pobox.com>
90120
121 =item *
122
123 Dave Rolsky <autarch@urth.org>
124
125 =back
126
91127 =head1 COPYRIGHT AND LICENSE
92128
93 This software is copyright (c) 2011 by Jonathan Swartz.
129 This software is copyright (c) 2011 - 2015 by Jonathan Swartz.
94130
95 This is free software; you can redistribute it and/or modify it under
96 the same terms as the Perl 5 programming language system itself.
131 This is free software; you can redistribute it and/or modify it under the same
132 terms as the Perl 5 programming language system itself.
97133
98134 =cut
0 only = 1
1 severity = 1
2 verbose = %m at %f line %l [%p]\n
3
4 [Moose::RequireMakeImmutable]
5 [TestingAndDebugging::RequireUseStrict]
6 equivalent_modules = Moo Test::Class::Most
7 [Variables::ProhibitConditionalDeclarations]
0 -l=100
1 -i=4
2 -ci=4
3 -se
4 -b
5 -bar
6 -boc
7 -vt=0
8 -vtc=0
9 -cti=0
10 -pt=1
11 -bt=1
12 -sbt=1
13 -bbt=1
14 -nolq
15 -npro
16 -nsfs
17 --opening-hash-brace-right
18 --no-outdent-long-comments
19 -wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x="
20 --iterations=2
0 do { my $x = {
1 'configure' => {
2 'requires' => {
3 'ExtUtils::MakeMaker' => '0'
4 }
5 },
6 'develop' => {
7 'requires' => {
8 'CHI' => '0',
9 'Code::TidyAll' => '0',
10 'Code::TidyAll::Plugin::Perl::AlignMooseAttributes' => '0',
11 'JSON::MaybeXS' => '0',
12 'Mason::Tidy' => '0',
13 'Mason::Tidy::App' => '0',
14 'Perl::Critic' => '1.123',
15 'Perl::Critic::Policy::Moose::RequireMakeImmutable' => '0',
16 'Perl::Tidy' => '20150815',
17 'Perl::Tidy::Sweetened' => '1.00',
18 'Pod::Checker' => '0',
19 'Pod::Spell' => '0',
20 'Pod::Tidy' => '0',
21 'SVN::Look' => '0',
22 'Test::CPAN::Changes' => '0.19',
23 'Test::Mojibake' => '0',
24 'Test::More' => '0.88',
25 'Test::NoTabs' => '0',
26 'Test::Pod' => '1.41',
27 'Test::Spelling' => '0.12',
28 'Test::Version' => '1'
29 }
30 },
31 'runtime' => {
32 'requires' => {
33 'Capture::Tiny' => '0',
34 'Config::INI::Reader' => '0',
35 'Cwd' => '0',
36 'Data::Dumper' => '0',
37 'Date::Format' => '0',
38 'Digest::SHA' => '0',
39 'Exporter' => '0',
40 'File::Basename' => '0',
41 'File::Find' => '0',
42 'File::Path' => '0',
43 'File::Slurp::Tiny' => '0',
44 'File::Spec::Functions' => '0',
45 'File::Temp' => '0',
46 'File::Which' => '0',
47 'File::Zglob' => '0',
48 'Getopt::Long' => '0',
49 'Guard' => '0',
50 'IPC::Run3' => '0',
51 'IPC::System::Simple' => '0',
52 'List::MoreUtils' => '0',
53 'Log::Any' => '0',
54 'Moo' => '0',
55 'Moo::Role' => '0',
56 'Scalar::Util' => '0',
57 'Test::Builder' => '0',
58 'Text::Diff' => '0',
59 'Text::Diff::Table' => '0',
60 'Text::ParseWords' => '0',
61 'Time::Duration::Parse' => '0',
62 'Try::Tiny' => '0',
63 'base' => '0',
64 'constant' => '0',
65 'strict' => '0',
66 'vars' => '0',
67 'warnings' => '0'
68 }
69 },
70 'test' => {
71 'recommends' => {
72 'CPAN::Meta' => '2.120900'
73 },
74 'requires' => {
75 'Encode' => '0',
76 'ExtUtils::MakeMaker' => '0',
77 'File::Spec' => '0',
78 'Test::Class::Most' => '0',
79 'Test::Differences' => '0',
80 'Test::More' => '0.96',
81 'Test::Warnings' => '0',
82 'autodie' => '0',
83 'lib' => '0'
84 }
85 }
86 };
87 $x;
88 }
0 #!perl
1
2 use strict;
3 use warnings;
4
5 # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.021
6
7 use Test::More tests => 1;
8
9 use ExtUtils::MakeMaker;
10 use File::Spec;
11
12 # from $version::LAX
13 my $lax_version_re =
14 qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
15 |
16 (?:\.[0-9]+) (?:_[0-9]+)?
17 ) | (?:
18 v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
19 |
20 (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
21 )
22 )/x;
23
24 # hide optional CPAN::Meta modules from prereq scanner
25 # and check if they are available
26 my $cpan_meta = "CPAN::Meta";
27 my $cpan_meta_pre = "CPAN::Meta::Prereqs";
28 my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
29
30 # Verify requirements?
31 my $DO_VERIFY_PREREQS = 1;
32
33 sub _max {
34 my $max = shift;
35 $max = ( $_ > $max ) ? $_ : $max for @_;
36 return $max;
37 }
38
39 sub _merge_prereqs {
40 my ($collector, $prereqs) = @_;
41
42 # CPAN::Meta::Prereqs object
43 if (ref $collector eq $cpan_meta_pre) {
44 return $collector->with_merged_prereqs(
45 CPAN::Meta::Prereqs->new( $prereqs )
46 );
47 }
48
49 # Raw hashrefs
50 for my $phase ( keys %$prereqs ) {
51 for my $type ( keys %{ $prereqs->{$phase} } ) {
52 for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
53 $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
54 }
55 }
56 }
57
58 return $collector;
59 }
60
61 my @include = qw(
62
63 );
64
65 my @exclude = qw(
66
67 );
68
69 # Add static prereqs to the included modules list
70 my $static_prereqs = do 't/00-report-prereqs.dd';
71
72 # Merge all prereqs (either with ::Prereqs or a hashref)
73 my $full_prereqs = _merge_prereqs(
74 ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
75 $static_prereqs
76 );
77
78 # Add dynamic prereqs to the included modules list (if we can)
79 my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
80 if ( $source && $HAS_CPAN_META ) {
81 if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
82 $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
83 }
84 }
85 else {
86 $source = 'static metadata';
87 }
88
89 my @full_reports;
90 my @dep_errors;
91 my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
92
93 # Add static includes into a fake section
94 for my $mod (@include) {
95 $req_hash->{other}{modules}{$mod} = 0;
96 }
97
98 for my $phase ( qw(configure build test runtime develop other) ) {
99 next unless $req_hash->{$phase};
100 next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
101
102 for my $type ( qw(requires recommends suggests conflicts modules) ) {
103 next unless $req_hash->{$phase}{$type};
104
105 my $title = ucfirst($phase).' '.ucfirst($type);
106 my @reports = [qw/Module Want Have/];
107
108 for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
109 next if $mod eq 'perl';
110 next if grep { $_ eq $mod } @exclude;
111
112 my $file = $mod;
113 $file =~ s{::}{/}g;
114 $file .= ".pm";
115 my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
116
117 my $want = $req_hash->{$phase}{$type}{$mod};
118 $want = "undef" unless defined $want;
119 $want = "any" if !$want && $want == 0;
120
121 my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
122
123 if ($prefix) {
124 my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
125 $have = "undef" unless defined $have;
126 push @reports, [$mod, $want, $have];
127
128 if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
129 if ( $have !~ /\A$lax_version_re\z/ ) {
130 push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
131 }
132 elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
133 push @dep_errors, "$mod version '$have' is not in required range '$want'";
134 }
135 }
136 }
137 else {
138 push @reports, [$mod, $want, "missing"];
139
140 if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
141 push @dep_errors, "$mod is not installed ($req_string)";
142 }
143 }
144 }
145
146 if ( @reports ) {
147 push @full_reports, "=== $title ===\n\n";
148
149 my $ml = _max( map { length $_->[0] } @reports );
150 my $wl = _max( map { length $_->[1] } @reports );
151 my $hl = _max( map { length $_->[2] } @reports );
152
153 if ($type eq 'modules') {
154 splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl];
155 push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports;
156 }
157 else {
158 splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
159 push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
160 }
161
162 push @full_reports, "\n";
163 }
164 }
165 }
166
167 if ( @full_reports ) {
168 diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
169 }
170
171 if ( @dep_errors ) {
172 diag join("\n",
173 "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
174 "The following REQUIRED prerequisites were not satisfied:\n",
175 @dep_errors,
176 "\n"
177 );
178 }
179
180 pass;
181
182 # vim: ts=4 sts=4 sw=4 et:
00 #!/usr/bin/perl
1 use Code::TidyAll::t::Basic;
2 Code::TidyAll::t::Basic->runtests;
1 use lib 't/lib';
2 use Test::Code::TidyAll::Basic;
3 Test::Code::TidyAll::Basic->runtests;
00 #!/usr/bin/perl
1 use Code::TidyAll::t::Conf;
2 Code::TidyAll::t::Conf->runtests;
1 use lib 't/lib';
2 use Test::Code::TidyAll::Conf;
3 Test::Code::TidyAll::Conf->runtests;
00 #!/usr/bin/perl
1 use Code::TidyAll::t::Zglob;
2 Code::TidyAll::t::Zglob->runtests;
1 use lib 't/lib';
2 use Test::Code::TidyAll::Zglob;
3 Test::Code::TidyAll::Zglob->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Git;
10 Code::TidyAll::t::Git->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Git;
11 Test::Code::TidyAll::Git->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::CSSUnminifier;
10 Code::TidyAll::t::Plugin::CSSUnminifier->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::CSSUnminifier;
11 Test::Code::TidyAll::Plugin::CSSUnminifier->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::JSBeautify;
10 Code::TidyAll::t::Plugin::JSBeautify->runtests;
9 use lib 't/lib';
10 use lib 't/lib';
11 use Test::Code::TidyAll::Plugin::JSBeautify;
12 Test::Code::TidyAll::Plugin::JSBeautify->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::JSHint;
10 Code::TidyAll::t::Plugin::JSHint->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::JSHint;
11 Test::Code::TidyAll::Plugin::JSHint->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::JSLint;
10 Code::TidyAll::t::Plugin::JSLint->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::JSLint;
11 Test::Code::TidyAll::Plugin::JSLint->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::MasonTidy;
10 Code::TidyAll::t::Plugin::MasonTidy->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::MasonTidy;
11 Test::Code::TidyAll::Plugin::MasonTidy->runtests;
0 #!/usr/bin/perl
1
2 BEGIN {
3 unless ($ENV{AUTHOR_TESTING}) {
4 require Test::More;
5 Test::More::plan(skip_all => 'these tests are for testing by the author');
6 }
7 }
8
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PHPCodeSniffer;
11 Test::Code::TidyAll::Plugin::PHPCodeSniffer->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::PerlCritic;
10 Code::TidyAll::t::Plugin::PerlCritic->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PerlCritic;
11 Test::Code::TidyAll::Plugin::PerlCritic->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::PerlTidy;
10 Code::TidyAll::t::Plugin::PerlTidy->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PerlTidy;
11 Test::Code::TidyAll::Plugin::PerlTidy->runtests;
0 #!/usr/bin/perl
1
2 BEGIN {
3 unless ($ENV{AUTHOR_TESTING}) {
4 require Test::More;
5 Test::More::plan(skip_all => 'these tests are for testing by the author');
6 }
7 }
8
9
10 use Test::More;
11
12 plan skip_all => 'This plugin requires Perl 5.10+'
13 unless $] >= 5.010;
14
15 use lib 't/lib';
16 use Test::Code::TidyAll::Plugin::PerlTidySweet;
17 Test::Code::TidyAll::Plugin::PerlTidySweet->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::PodChecker;
10 Code::TidyAll::t::Plugin::PodChecker->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PodChecker;
11 Test::Code::TidyAll::Plugin::PodChecker->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::PodSpell;
10 Code::TidyAll::t::Plugin::PodSpell->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PodSpell;
11 Test::Code::TidyAll::Plugin::PodSpell->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::PodTidy;
10 Code::TidyAll::t::Plugin::PodTidy->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::PodTidy;
11 Test::Code::TidyAll::Plugin::PodTidy->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Plugin::SortLines;
10 Code::TidyAll::t::Plugin::SortLines->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Plugin::SortLines;
11 Test::Code::TidyAll::Plugin::SortLines->runtests;
66 }
77 }
88
9 use Code::TidyAll::t::Util;
10 Code::TidyAll::t::Util->runtests;
9 use lib 't/lib';
10 use Test::Code::TidyAll::Util;
11 Test::Code::TidyAll::Util->runtests;
0 #!perl
1
2 BEGIN {
3 unless ($ENV{AUTHOR_TESTING}) {
4 require Test::More;
5 Test::More::plan(skip_all => 'these tests are for testing by the author');
6 }
7 }
8
9
10 use strict;
11 use warnings qw(all);
12
13 use Test::More;
14 use Test::Mojibake;
15
16 all_files_encoding_ok();
0
1 BEGIN {
2 unless ($ENV{AUTHOR_TESTING}) {
3 require Test::More;
4 Test::More::plan(skip_all => 'these tests are for testing by the author');
5 }
6 }
7
8 use strict;
9 use warnings;
10
11 # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15
12
13 use Test::More 0.88;
14 use Test::NoTabs;
15
16 my @files = (
17 'bin/tidyall',
18 'lib/Code/TidyAll.pm',
19 'lib/Code/TidyAll/Cache.pm',
20 'lib/Code/TidyAll/CacheModel.pm',
21 'lib/Code/TidyAll/CacheModel/Shared.pm',
22 'lib/Code/TidyAll/Config/INI/Reader.pm',
23 'lib/Code/TidyAll/Git/Precommit.pm',
24 'lib/Code/TidyAll/Git/Prereceive.pm',
25 'lib/Code/TidyAll/Git/Util.pm',
26 'lib/Code/TidyAll/Plugin.pm',
27 'lib/Code/TidyAll/Plugin/CSSUnminifier.pm',
28 'lib/Code/TidyAll/Plugin/DiffOnTidyError.pm',
29 'lib/Code/TidyAll/Plugin/JSBeautify.pm',
30 'lib/Code/TidyAll/Plugin/JSHint.pm',
31 'lib/Code/TidyAll/Plugin/JSLint.pm',
32 'lib/Code/TidyAll/Plugin/JSON.pm',
33 'lib/Code/TidyAll/Plugin/MasonTidy.pm',
34 'lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm',
35 'lib/Code/TidyAll/Plugin/PerlCritic.pm',
36 'lib/Code/TidyAll/Plugin/PerlTidy.pm',
37 'lib/Code/TidyAll/Plugin/PerlTidySweet.pm',
38 'lib/Code/TidyAll/Plugin/PodChecker.pm',
39 'lib/Code/TidyAll/Plugin/PodSpell.pm',
40 'lib/Code/TidyAll/Plugin/PodTidy.pm',
41 'lib/Code/TidyAll/Plugin/SortLines.pm',
42 'lib/Code/TidyAll/Result.pm',
43 'lib/Code/TidyAll/Role/Tempdir.pm',
44 'lib/Code/TidyAll/SVN/Precommit.pm',
45 'lib/Code/TidyAll/SVN/Util.pm',
46 'lib/Code/TidyAll/Util.pm',
47 'lib/Code/TidyAll/Util/Zglob.pm',
48 'lib/Test/Code/TidyAll.pm',
49 't/00-report-prereqs.dd',
50 't/00-report-prereqs.t',
51 't/Basic.t',
52 't/Conf.t',
53 't/Zglob.t',
54 't/author-Git.t',
55 't/author-Plugin-CSSUnminifier.t',
56 't/author-Plugin-JSBeautify.t',
57 't/author-Plugin-JSHint.t',
58 't/author-Plugin-JSLint.t',
59 't/author-Plugin-MasonTidy.t',
60 't/author-Plugin-PHPCodeSniffer.t',
61 't/author-Plugin-PerlCritic.t',
62 't/author-Plugin-PerlTidy.t',
63 't/author-Plugin-PerlTidySweet.t',
64 't/author-Plugin-PodChecker.t',
65 't/author-Plugin-PodSpell.t',
66 't/author-Plugin-PodTidy.t',
67 't/author-Plugin-SortLines.t',
68 't/author-Util.t',
69 't/author-mojibake.t',
70 't/author-no-tabs.t',
71 't/author-pod-spell.t',
72 't/author-pod-syntax.t',
73 't/author-self-tidyall.t',
74 't/author-test-version.t',
75 't/author-tidy-and-critic.t',
76 't/lib/Code/TidyAll/Test/Class.pm',
77 't/lib/Code/TidyAll/Test/Plugin/AToZ.pm',
78 't/lib/Code/TidyAll/Test/Plugin/AlwaysPhonetic.pm',
79 't/lib/Code/TidyAll/Test/Plugin/CheckUpper.pm',
80 't/lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm',
81 't/lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm',
82 't/lib/Code/TidyAll/Test/Plugin/UpperText.pm',
83 't/lib/Test/Code/TidyAll/Basic.pm',
84 't/lib/Test/Code/TidyAll/Conf.pm',
85 't/lib/Test/Code/TidyAll/Git.pm',
86 't/lib/Test/Code/TidyAll/Plugin.pm',
87 't/lib/Test/Code/TidyAll/Plugin/CSSUnminifier.pm',
88 't/lib/Test/Code/TidyAll/Plugin/JSBeautify.pm',
89 't/lib/Test/Code/TidyAll/Plugin/JSHint.pm',
90 't/lib/Test/Code/TidyAll/Plugin/JSLint.pm',
91 't/lib/Test/Code/TidyAll/Plugin/MasonTidy.pm',
92 't/lib/Test/Code/TidyAll/Plugin/PHPCodeSniffer.pm',
93 't/lib/Test/Code/TidyAll/Plugin/PerlCritic.pm',
94 't/lib/Test/Code/TidyAll/Plugin/PerlTidy.pm',
95 't/lib/Test/Code/TidyAll/Plugin/PerlTidySweet.pm',
96 't/lib/Test/Code/TidyAll/Plugin/PodChecker.pm',
97 't/lib/Test/Code/TidyAll/Plugin/PodSpell.pm',
98 't/lib/Test/Code/TidyAll/Plugin/PodTidy.pm',
99 't/lib/Test/Code/TidyAll/Plugin/SortLines.pm',
100 't/lib/Test/Code/TidyAll/SVN.pm',
101 't/lib/Test/Code/TidyAll/Util.pm',
102 't/lib/Test/Code/TidyAll/Zglob.pm',
103 't/release-cpan-changes.t'
104 );
105
106 notabs_ok($_) foreach @files;
107 done_testing;
0
1 BEGIN {
2 unless ($ENV{AUTHOR_TESTING}) {
3 require Test::More;
4 Test::More::plan(skip_all => 'these tests are for testing by the author');
5 }
6 }
7
8 use strict;
9 use warnings;
10 use Test::More;
11
12 # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007000
13 use Test::Spelling 0.12;
14 use Pod::Wordlist;
15
16
17 add_stopwords(<DATA>);
18 all_pod_files_spelling_ok( qw( bin lib ) );
19 __DATA__
20 DROLSKY
21 DROLSKY's
22 PayPal
23 Rolsky
24 Rolsky's
25 API
26 CPAN
27 JSON
28 JavaScript
29 Misc
30 PHP
31 PREREQS
32 Raggett
33 STDERR
34 STDIN
35 STDOUT
36 Simakov
37 TIDYALL
38 Thalhammer
39 Vim
40 argv
41 ascii
42 atomicity
43 cmd
44 conf
45 config
46 cssunminifier
47 ctrl
48 dir
49 filename
50 iff
51 ispell
52 js
53 jsbeautify
54 jshint
55 jslint
56 lib
57 listref
58 masontidy
59 noll
60 npm
61 ok
62 ops
63 params
64 pathname
65 perlcritic
66 perlcriticrc
67 perltidy
68 phpcs
69 plugins
70 podspell
71 podtidy
72 pre
73 prereqs
74 repo
75 repos
76 ro
77 runtime
78 rw
79 shebang
80 sourceforge
81 svn
82 tidiers
83 tidyall
84 tidyall'd
85 timestamped
86 ttl
87 txn
88 validator
89 validators
90 Jonathan
91 Swartz
92 swartz
93 Dave
94 autarch
95 Andy
96 Jack
97 andyjack
98 George
99 Hartzell
100 georgewh
101 Gregory
102 Oschwald
103 goschwald
104 Joe
105 Crotty
106 joe
107 Mark
108 Fowler
109 mark
110 Grimes
111 mgrimes
112 Olaf
113 Alders
114 olaf
115 Pedro
116 Melo
117 melo
118 Sergey
119 Romanov
120 sromanov
121 timgimyee
122 tim
123 Code
124 TidyAll
125 Cache
126 CacheModel
127 Shared
128 Config
129 INI
130 Reader
131 Git
132 Precommit
133 Prereceive
134 Util
135 Plugin
136 CSSUnminifier
137 DiffOnTidyError
138 JSBeautify
139 JSHint
140 JSLint
141 MasonTidy
142 PHPCodeSniffer
143 PerlCritic
144 PerlTidy
145 PerlTidySweet
146 PodChecker
147 PodSpell
148 PodTidy
149 SortLines
150 Result
151 Role
152 Tempdir
153 SVN
154 Zglob
155 Test
0 #!perl
1
2 BEGIN {
3 unless ($ENV{AUTHOR_TESTING}) {
4 require Test::More;
5 Test::More::plan(skip_all => 'these tests are for testing by the author');
6 }
7 }
8
9 # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests.
10 use strict; use warnings;
11 use Test::More;
12 use Test::Pod 1.41;
13
14 all_pod_files_ok();
0
1 BEGIN {
2 unless ($ENV{AUTHOR_TESTING}) {
3 require Test::More;
4 Test::More::plan(skip_all => 'these tests are for testing by the author');
5 }
6 }
7
8 use strict;
9 use warnings;
10
11 use Test::Code::TidyAll;
12 use Test::More;
13
14 plan skip_all => 'This plugin requires Perl 5.10+'
15 unless $] >= 5.010;
16
17 tidyall_ok( verbose => 1 );
18
19 done_testing();
0
1 BEGIN {
2 unless ($ENV{AUTHOR_TESTING}) {
3 require Test::More;
4 Test::More::plan(skip_all => 'these tests are for testing by the author');
5 }
6 }
7
8 use strict;
9 use warnings;
10 use Test::More;
11
12 # generated by Dist::Zilla::Plugin::Test::Version 1.05
13 use Test::Version;
14
15 my @imports = qw( version_all_ok );
16
17 my $params = {
18 is_strict => 1,
19 has_version => 1,
20 multiple => 0,
21
22 };
23
24 push @imports, $params
25 if version->parse( $Test::Version::VERSION ) >= version->parse('1.002');
26
27
28 Test::Version->import(@imports);
29
30 version_all_ok;
31 done_testing;
66 }
77 }
88
9 use Code::TidyAll::Util qw(read_file tempdir_simple write_file);
9 use lib 't/lib';
10 use Code::TidyAll::Util qw(tempdir_simple);
1011 use Code::TidyAll;
1112 use File::Basename;
1213 use File::Path;
14 use File::Slurp::Tiny qw(read_file write_file);
1315 use Test::More;
1416 use Capture::Tiny qw(capture_merged);
1517
0 package Code::TidyAll::Test::Class;
1
2 use File::Which qw( which );
3 use Test::Class::Most;
4 use strict;
5 use warnings;
6
7 __PACKAGE__->SKIP_CLASS("abstract base class");
8
9 sub require_executable {
10 my $self = shift;
11 my $exe = shift;
12
13 which($exe)
14 or $self->FAIL_ALL("These tests require that $exe be in your \$PATH");
15
16 return;
17 }
18
19 1;
0 package Code::TidyAll::Test::Plugin::AToZ;
1
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub preprocess_source {
6 my ( $self, $source ) = @_;
7 $source =~ tr/Aa/Zz/;
8 return $source;
9 }
10
11 sub postprocess_source {
12 my ( $self, $source ) = @_;
13 $source =~ tr/Zz/Aa/;
14 return $source;
15 }
16
17 1;
0 package Code::TidyAll::Test::Plugin::AlwaysPhonetic;
1
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 my %phonetic = (
6 A => 'ALFA',
7 B => 'BRAVO',
8 C => 'CHARLIE',
9 D => 'DELTA',
10 E => 'ECHO',
11 F => 'FOXTROT',
12 G => 'GOLF',
13 H => 'HOTEL',
14 I => 'INDIA',
15 J => 'JULIETT',
16 K => 'KILO',
17 L => 'LIMA',
18 M => 'MIKE',
19 N => 'NOVEMBER',
20 O => 'OSCAR',
21 P => 'PAPA',
22 Q => 'QUEBEC',
23 R => 'ROMEO',
24 S => 'SIERRA',
25 T => 'TANGO',
26 U => 'UNIFORM',
27 V => 'VICTOR',
28 W => 'WHISKEY',
29 X => 'X-RAY',
30 Y => 'YANKEE',
31 Z => 'ZULU',
32 );
33
34 sub transform_source {
35 my ( $self, $source ) = @_;
36 return join '-', map { $phonetic{$_} } split //, $source;
37 }
0 package Code::TidyAll::Test::Plugin::CheckUpper;
1
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub validate_source {
6 my ( $self, $source ) = @_;
7 die "lowercase found" if $source =~ /[a-z]/;
8 }
9
10 1;
0 package Code::TidyAll::Test::Plugin::RepeatFoo;
1
2 use File::Slurp::Tiny qw(read_file write_file);
3 use Moo;
4 extends 'Code::TidyAll::Plugin';
5
6 has 'times' => ( is => 'ro' );
7
8 sub transform_source {
9 my ( $self, $source ) = @_;
10 my $times = $self->times || die "no times specified";
11 return $source x $times;
12 }
13
14 1;
0 package Code::TidyAll::Test::Plugin::ReverseFoo;
1
2 use File::Slurp::Tiny qw(read_file write_file);
3 use Moo;
4 extends 'Code::TidyAll::Plugin';
5
6 sub transform_file {
7 my ( $self, $file ) = @_;
8 write_file( $file, scalar( reverse( read_file($file) ) ) );
9 }
10
11 1;
0 package Code::TidyAll::Test::Plugin::UpperText;
1
2 use Moo;
3 extends 'Code::TidyAll::Plugin';
4
5 sub transform_source {
6 my ( $self, $source ) = @_;
7 if ( $source =~ /^[A-Z]*$/i ) {
8 return uc($source);
9 }
10 else {
11 die "non-alpha content found";
12 }
13 }
14
15 1;
0 package Test::Code::TidyAll::Basic;
1
2 use Cwd qw(realpath);
3 use Code::TidyAll::Util qw(dirname mkpath pushd tempdir_simple);
4 use Code::TidyAll;
5 use Capture::Tiny qw(capture capture_stdout capture_merged);
6 use File::Find qw(find);
7 use File::Slurp::Tiny qw(read_file write_file);
8 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
9 use Code::TidyAll::CacheModel::Shared;
10
11 sub test_plugin {"+Code::TidyAll::Test::Plugin::$_[0]"}
12 my %UpperText = ( test_plugin('UpperText') => { select => '**/*.txt' } );
13 my %ReverseFoo = ( test_plugin('ReverseFoo') => { select => '**/foo*' } );
14 my %RepeatFoo = ( test_plugin('RepeatFoo') => { select => '**/foo*' } );
15 my %CheckUpper = ( test_plugin('CheckUpper') => { select => '**/*.txt' } );
16 my %AToZ = ( test_plugin('AToZ') => { select => '**/*.txt' } );
17
18 my $cli_conf;
19
20 sub create_dir {
21 my ( $self, $files ) = @_;
22
23 my $root_dir = tempdir_simple();
24 while ( my ( $path, $content ) = each(%$files) ) {
25 my $full_path = "$root_dir/$path";
26 mkpath( dirname($full_path), 0, 0775 );
27 write_file( $full_path, $content );
28 }
29 return realpath($root_dir);
30 }
31
32 sub tidy {
33 my ( $self, %params ) = @_;
34 my $desc = $params{desc};
35 if ( !defined($desc) ) {
36 ($desc) = ( ( caller(1) )[3] =~ /([^:]+$)/ );
37 }
38
39 my $root_dir = $self->create_dir( $params{source} );
40
41 my $options = $params{options} || {};
42 my $ct = Code::TidyAll->new(
43 plugins => $params{plugins},
44 root_dir => $root_dir,
45 %$options
46 );
47
48 my @results;
49 my $output = capture_stdout { @results = $ct->process_all() };
50 my $error_count = grep { $_->error } @results;
51 if ( $params{errors} ) {
52 like( $output, $params{errors}, "$desc - errors" );
53 ok( $error_count > 0, "$desc - error_count > 0" );
54 }
55 else {
56 is( $error_count, 0, "$desc - error_count == 0" );
57 }
58 while ( my ( $path, $content ) = each( %{ $params{dest} } ) ) {
59 is( read_file("$root_dir/$path"), $content, "$desc - $path content" );
60 }
61 if ( my $like_output = $params{like_output} ) {
62 like( $output, $like_output, "$desc - output" );
63 }
64 }
65
66 sub test_basic : Tests {
67 my $self = shift;
68
69 $self->tidy(
70 plugins => {},
71 source => { "foo.txt" => "abc" },
72 dest => { "foo.txt" => "abc" },
73 desc => 'one file no plugins',
74 );
75 $self->tidy(
76 plugins => {%UpperText},
77 source => { "foo.txt" => "abc" },
78 dest => { "foo.txt" => "ABC" },
79 desc => 'one file UpperText',
80 );
81 $self->tidy(
82 plugins => {
83 test_plugin('UpperText') => { select => '**/*.txt', only_modes => 'upper' },
84 test_plugin('ReverseFoo') => { select => '**/foo*', only_modes => 'reversals' }
85 },
86 source => { "foo.txt" => "abc" },
87 dest => { "foo.txt" => "cba" },
88 desc => 'one file reversals mode',
89 options => { mode => 'reversals' },
90 );
91 $self->tidy(
92 plugins => { %UpperText, %ReverseFoo },
93 source => {
94 "foo.txt" => "abc",
95 "bar.txt" => "def",
96 "foo.tx" => "ghi",
97 "bar.tx" => "jkl"
98 },
99 dest => {
100 "foo.txt" => "CBA",
101 "bar.txt" => "DEF",
102 "foo.tx" => "ihg",
103 "bar.tx" => "jkl"
104 },
105 desc => 'four files UpperText ReverseFoo',
106 );
107 $self->tidy(
108 plugins => {%UpperText},
109 source => { "foo.txt" => "abc1" },
110 dest => { "foo.txt" => "abc1" },
111 desc => 'one file UpperText errors',
112 errors => qr/non-alpha content/
113 );
114 }
115
116 sub test_multiple_plugin_instances : Tests {
117 my $self = shift;
118 $self->tidy(
119 plugins => {
120 test_plugin('RepeatFoo for txt') => { select => '**/*.txt', times => 2 },
121 test_plugin('RepeatFoo for foo') => { select => '**/foo.*', times => 3 },
122 %UpperText
123 },
124 source => { "foo.txt" => "abc", "foo.dat" => "def", "bar.txt" => "ghi" },
125 dest => {
126 "foo.txt" => scalar( "ABC" x 6 ),
127 "foo.dat" => scalar( "def" x 3 ),
128 "bar.txt" => scalar( "GHI" x 2 )
129 }
130 );
131 }
132
133 sub test_plugin_order_and_atomicity : Tests {
134 my $self = shift;
135 my @plugins = map {
136 (
137 %ReverseFoo,
138 test_plugin("UpperText $_") => { select => '**/*.txt' },
139 test_plugin("CheckUpper $_") => { select => '**/*.txt' },
140
141 # note without the weight here this would run first, and the
142 # letters in the photetic words themselves would be reversed
143 test_plugin("AlwaysPhonetic") => { select => '**/*.txt', weight => 51 }
144 )
145 } ( 1 .. 3 );
146 my $output = capture_stdout {
147 $self->tidy(
148 plugins => {@plugins},
149 options => { verbose => 1 },
150 source => { "foo.txt" => "abc" },
151 dest => { "foo.txt" => "CHARLIE-BRAVO-ALFA" },
152 like_output =>
153 qr/.*ReverseFoo, .*UpperText 1, .*UpperText 2, .*UpperText 3, .*CheckUpper 1, .*CheckUpper 2, .*CheckUpper 3/
154 );
155 };
156
157 $self->tidy(
158 plugins => { %AToZ, %ReverseFoo, %CheckUpper },
159 options => { verbose => 1 },
160 source => { "foo.txt" => "abc" },
161 dest => { "foo.txt" => "abc" },
162 errors => qr/lowercase found/,
163 like_output => qr/foo.txt (.*ReverseFoo, .*CheckUpper)/
164 );
165
166 }
167
168 sub test_quiet_and_verbose : Tests {
169 my $self = shift;
170
171 foreach my $state ( 'normal', 'quiet', 'verbose' ) {
172 foreach my $error ( 0, 1 ) {
173 my $root_dir = $self->create_dir( { "foo.txt" => ( $error ? "123" : "abc" ) } );
174 my $output = capture_stdout {
175 my $ct = Code::TidyAll->new(
176 plugins => {%UpperText},
177 root_dir => $root_dir,
178 ( $state eq 'normal' ? () : ( $state => 1 ) )
179 );
180 $ct->process_paths("$root_dir/foo.txt");
181 };
182 if ($error) {
183 like( $output, qr/non-alpha content found/, "non-alpha content found ($state)" );
184 }
185 else {
186 is( $output, "[tidied] foo.txt\n" ) if $state eq 'normal';
187 is( $output, "" ) if $state eq 'quiet';
188 like( $output, qr/purging old backups/, "purging old backups ($state)" )
189 if $state eq 'verbose';
190 like(
191 $output,
192 qr/\[tidied\] foo\.txt \(\+Code::TidyAll::Test::Plugin::UpperText\)/s,
193 "foo.txt ($state)"
194 ) if $state eq 'verbose';
195 }
196 }
197 }
198 }
199
200 sub test_iterations : Tests {
201 my $self = shift;
202 my $root_dir = $self->create_dir( { "foo.txt" => "abc" } );
203 my $ct = Code::TidyAll->new(
204 plugins => { test_plugin('RepeatFoo') => { select => '**/foo*', times => 3 } },
205 root_dir => $root_dir,
206 iterations => 2
207 );
208 my $file = "$root_dir/foo.txt";
209 $ct->process_paths($file);
210 is( read_file($file), scalar( "abc" x 9 ), "3^2 = 9" );
211 }
212
213 sub test_caching_and_backups : Tests {
214 my $self = shift;
215
216 my @chi_or_no_chi = ('');
217 if ( eval "use CHI; 1" ) {
218 push @chi_or_no_chi, "chi";
219 }
220
221 foreach my $chi (@chi_or_no_chi) {
222 foreach my $cache_model_class (
223 qw(
224 Code::TidyAll::CacheModel
225 Code::TidyAll::CacheModel::Shared
226 )
227 ) {
228 foreach my $no_cache ( 0 .. 1 ) {
229 foreach my $no_backups ( 0 .. 1 ) {
230 my $desc
231 = "(no_cache=$no_cache, no_backups=$no_backups, model=$cache_model_class, cache_class=$chi)";
232 my $root_dir = $self->create_dir( { "foo.txt" => "abc" } );
233 my $ct = Code::TidyAll->new(
234 plugins => {%UpperText},
235 root_dir => $root_dir,
236 cache_model_class => $cache_model_class,
237 ( $no_cache ? ( no_cache => 1 ) : () ),
238 ( $no_backups ? ( no_backups => 1 ) : () ),
239 ( $chi ? ( cache => _chi() ) : () ),
240 );
241 my $output;
242 my $file = "$root_dir/foo.txt";
243 my $go = sub {
244 $output = capture_stdout { $ct->process_paths($file) };
245 };
246
247 $go->();
248 is( read_file($file), "ABC", "first file change $desc" );
249 is( $output, "[tidied] foo.txt\n", "first output $desc" );
250
251 $go->();
252 if ($no_cache) {
253 is( $output, "[checked] foo.txt\n", "second output $desc" );
254 }
255 else {
256 is( $output, '', "second output $desc" );
257 }
258
259 write_file( $file, "ABCD" );
260 $go->();
261 is( $output, "[checked] foo.txt\n", "third output $desc" );
262
263 write_file( $file, "def" );
264 $go->();
265 is( read_file($file), "DEF", "fourth file change $desc" );
266 is( $output, "[tidied] foo.txt\n", "fourth output $desc" );
267
268 my $backup_dir = $ct->data_dir . "/backups";
269 mkpath( $backup_dir, 0, 0775 );
270 my @files;
271 find(
272 {
273 follow => 0,
274 wanted => sub { push @files, $_ if -f },
275 no_chdir => 1
276 },
277 $backup_dir
278 );
279
280 if ($no_backups) {
281 ok( @files == 0, "no backup files $desc" );
282 }
283 else {
284 ok(
285 scalar(@files) == 1 || scalar(@files) == 2,
286 "1 or 2 backup files $desc"
287 );
288 foreach my $file (@files) {
289 like(
290 $file,
291 qr|\.tidyall\.d/backups/foo\.txt-\d+-\d+\.bak|,
292 "backup filename $desc"
293 );
294 }
295 }
296 }
297 }
298 }
299 }
300 }
301
302 sub _chi {
303 my $datastore = {};
304 return CHI->new( driver => 'Memory', datastore => $datastore );
305 }
306
307 sub test_selects_and_ignores : Tests {
308 my $self = shift;
309
310 my @files = ( "a/foo.pl", "b/foo.pl", "a/foo.pm", "a/bar.pm", "b/bar.pm" );
311 my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } );
312 my $ct = Code::TidyAll->new(
313 root_dir => $root_dir,
314 plugins => {
315 test_plugin('UpperText') => {
316 select => '**/*.pl **/*.pm b/bar.pm c/bar.pl',
317 ignore => 'a/foo.pl **/bar.pm c/baz.pl'
318 }
319 }
320 );
321 cmp_set( [ $ct->find_matched_files() ], [ "$root_dir/a/foo.pm", "$root_dir/b/foo.pl" ] );
322 cmp_deeply(
323 [ map { $_->name } $ct->plugins_for_path("a/foo.pm") ],
324 [ test_plugin('UpperText') ]
325 );
326 }
327
328 sub test_shebang : Tests {
329 my $self = shift;
330
331 my %files = (
332 "a/foo.pl" => "#!/usr/bin/perl",
333 "a/foo" => "#!/usr/bin/perl",
334 "a/bar" => "#!/usr/bin/ruby",
335 "a/baz" => "just another perl hacker",
336 "b/foo" => "#!/usr/bin/perl6",
337 "b/bar" => "#!/usr/bin/perl5",
338 "b/baz" => "#!perl -w",
339 "b/bar.pm" => "package b::bar;",
340 );
341 my $root_dir = $self->create_dir( \%files );
342 my $ct = Code::TidyAll->new(
343 root_dir => $root_dir,
344 plugins => {
345 test_plugin('UpperText') => {
346 select => '**/*',
347 ignore => '**/*.*',
348 shebang => 'perl perl5',
349 }
350 }
351 );
352 cmp_set(
353 [ $ct->find_matched_files() ],
354 [ map "$root_dir/$_", qw< a/foo b/bar b/baz > ],
355 );
356 }
357
358 sub test_dirs : Tests {
359 my $self = shift;
360
361 my @files = ( "a/foo.txt", "a/bar.txt", "a/bar.pl", "b/foo.txt" );
362 my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } );
363
364 foreach my $recursive ( 0 .. 1 ) {
365 my @results;
366 my $output = capture_merged {
367 my $ct = Code::TidyAll->new(
368 plugins => { %UpperText, %ReverseFoo },
369 root_dir => $root_dir,
370 ( $recursive ? ( recursive => 1 ) : () )
371 );
372 @results = $ct->process_paths("$root_dir/a");
373 };
374 if ($recursive) {
375 is( @results, 3, "3 results" );
376 is( scalar( grep { $_->state eq 'tidied' } @results ), 2, "2 tidied" );
377 like( $output, qr/\[tidied\] a\/foo.txt/ );
378 like( $output, qr/\[tidied\] a\/bar.txt/ );
379 is( read_file("$root_dir/a/foo.txt"), "IH" );
380 is( read_file("$root_dir/a/bar.txt"), "HI" );
381 is( read_file("$root_dir/a/bar.pl"), "hi" );
382 is( read_file("$root_dir/b/foo.txt"), "hi" );
383 }
384 else {
385 is( @results, 1, "1 result" );
386 is( $results[0]->state, "error", "error" );
387 like( $output, qr/is a directory/ );
388 }
389 }
390 }
391
392 sub test_errors : Tests {
393 my $self = shift;
394
395 my $root_dir = $self->create_dir( { "foo/bar.txt" => "abc" } );
396 throws_ok { Code::TidyAll->new( root_dir => $root_dir ) } qr/Missing required/;
397 throws_ok { Code::TidyAll->new( plugins => {} ) } qr/Missing required/;
398
399 throws_ok {
400 Code::TidyAll->new(
401 root_dir => $root_dir,
402 plugins => {},
403 bad_param => 1,
404 worse_param => 2
405 );
406 }
407 qr/unknown constructor params 'bad_param', 'worse_param'/;
408
409 throws_ok {
410 Code::TidyAll->new(
411 root_dir => $root_dir,
412 plugins => { 'DoesNotExist' => { select => '**/*' } }
413 )->plugin_objects;
414 }
415 qr/could not load plugin class/;
416
417 throws_ok {
418 Code::TidyAll->new(
419 root_dir => $root_dir,
420 plugins => {
421 test_plugin('UpperText') => { select => '**/*', bad_option => 1, worse_option => 2 }
422 }
423 )->plugin_objects;
424 }
425 qr/unknown options/;
426
427 my $ct = Code::TidyAll->new( plugins => {%UpperText}, root_dir => $root_dir );
428 my $output = capture_stdout { $ct->process_paths("$root_dir/baz/blargh.txt") };
429 like( $output, qr/baz\/blargh.txt: not a file or directory/, "file not found" );
430
431 $output = capture_stdout { $ct->process_paths("$root_dir/foo/bar.txt") };
432 is( $output, "[tidied] foo/bar.txt\n", "filename output" );
433 is( read_file("$root_dir/foo/bar.txt"), "ABC", "tidied" );
434 my $other_dir = realpath( tempdir_simple() );
435 write_file( "$other_dir/foo.txt", "ABC" );
436 throws_ok { $ct->process_paths("$other_dir/foo.txt") } qr/not underneath root dir/;
437 }
438
439 sub test_cli : Tests {
440 my $self = shift;
441 my $output;
442
443 my @cmd = ( $^X, qw( -Ilib -It/lib bin/tidyall ) );
444 my $run = sub { system( @cmd, @_ ) };
445
446 $output = capture_stdout {
447 $run->("--version");
448 };
449 like( $output, qr/tidyall .* on perl/, '--version output' );
450 $output = capture_stdout {
451 $run->("--help");
452 };
453 like( $output, qr/Usage.*Options:/s, '--help output' );
454
455 foreach my $conf_name ( "tidyall.ini", ".tidyallrc" ) {
456 subtest(
457 "conf at $conf_name",
458 sub {
459 my $root_dir = $self->create_dir();
460 my $conf_file = "$root_dir/$conf_name";
461 write_file( $conf_file, $cli_conf );
462
463 write_file( "$root_dir/foo.txt", "hello" );
464 my $output = capture_stdout {
465 $run->( "$root_dir/foo.txt", "-v" );
466 };
467
468 my ($params_msg)
469 = ( $output =~ /constructing Code::TidyAll with these params:(.*)/ );
470 ok( defined($params_msg), "params msg" );
471 like( $params_msg, qr/backup_ttl => '15m'/, 'backup_ttl' );
472 like( $params_msg, qr/verbose => '?1'?/, 'verbose' );
473 like(
474 $params_msg, qr/\Qroot_dir => '$root_dir'\E/,
475 'root_dir'
476 );
477 like(
478 $output,
479 qr/\[tidied\] foo.txt \(.*RepeatFoo, .*UpperText\)/,
480 'foo.txt'
481 );
482 is(
483 read_file("$root_dir/foo.txt"), "HELLOHELLOHELLO",
484 "tidied"
485 );
486
487 mkpath( "$root_dir/subdir", 0, 0775 );
488 write_file( "$root_dir/subdir/foo.txt", "bye" );
489 write_file( "$root_dir/subdir/foo2.txt", "bye" );
490 my $cwd = realpath();
491 capture_stdout {
492 my $dir = pushd "$root_dir/subdir";
493 system( $^X, "-I$cwd/lib", "-I$cwd/t/lib", "$cwd/bin/tidyall", 'foo.txt' );
494 };
495 is(
496 read_file("$root_dir/subdir/foo.txt"), "BYEBYEBYE",
497 "foo.txt tidied"
498 );
499 is(
500 read_file("$root_dir/subdir/foo2.txt"), "bye",
501 "foo2.txt not tidied"
502 );
503
504 # -p / --pipe success
505 #
506 my ( $stdout, $stderr ) = capture {
507 open(
508 my $fh, "|-", @cmd, "-p",
509 "$root_dir/does_not_exist/foo.txt"
510 );
511 print $fh "echo";
512 };
513 is( $stdout, "ECHOECHOECHO", "pipe: stdin tidied" );
514 unlike( $stderr, qr/\S/, "pipe: no stderr" );
515
516 # -p / --pipe error
517 #
518 ( $stdout, $stderr ) = capture {
519 open( my $fh, "|-", @cmd, "--pipe", "$root_dir/foo.txt" );
520 print $fh "abc1";
521 };
522 is( $stdout, "abc1", "pipe: stdin mirrored to stdout" );
523 like( $stderr, qr/non-alpha content found/ );
524 }
525 );
526 }
527 }
528
529 $cli_conf = '
530 backup_ttl = 15m
531 verbose = 1
532
533 [+Code::TidyAll::Test::Plugin::UpperText]
534 select = **/*.txt
535
536 [+Code::TidyAll::Test::Plugin::RepeatFoo]
537 select = **/foo*
538 times = 3
539 ';
540
541 1;
0 package Test::Code::TidyAll::Conf;
1
2 use Code::TidyAll;
3 use Code::TidyAll::Util qw(dirname tempdir_simple);
4 use File::Slurp::Tiny qw(read_file write_file);
5 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
6
7 my $conf1;
8
9 sub test_conf_file : Tests {
10 my $self = shift;
11 my $root_dir = tempdir_simple();
12 my $conf_file = "$root_dir/tidyall.ini";
13 write_file( $conf_file, $conf1 );
14
15 my $ct = Code::TidyAll->new_from_conf_file($conf_file);
16 my %expected = (
17 backup_ttl => '5m',
18 backup_ttl_secs => '300',
19 no_backups => undef,
20 no_cache => 1,
21 root_dir => dirname($conf_file),
22 data_dir => "$root_dir/.tidyall.d",
23 plugins => {
24 '+Code::TidyAll::Test::Plugin::UpperText' => { select => '**/*.txt' },
25 '+Code::TidyAll::Test::Plugin::RepeatFoo' => { select => '**/foo* **/bar*', times => 3 }
26 }
27 );
28 while ( my ( $method, $value ) = each(%expected) ) {
29 cmp_deeply( $ct->$method, $value, "$method" );
30 }
31
32 my $conf2 = $conf1;
33 $conf2 =~ s/times/timez/;
34 write_file( $conf_file, $conf2 );
35 throws_ok { my $ct = Code::TidyAll->new_from_conf_file($conf_file)->plugin_objects }
36 qr/unknown option 'timez'/;
37
38 }
39
40 $conf1 = '
41 backup_ttl = 5m
42 no_cache = 1
43
44 [+Code::TidyAll::Test::Plugin::UpperText]
45 select = **/*.txt
46
47 [+Code::TidyAll::Test::Plugin::RepeatFoo]
48 select = **/foo*
49 select = **/bar*
50 times = 3
51 ';
0 package Test::Code::TidyAll::Git;
1
2 use Capture::Tiny qw(capture_stdout capture_stderr capture);
3 use Code::TidyAll::Git::Util qw(git_uncommitted_files);
4 use Code::TidyAll::Util qw(dirname mkpath pushd realpath tempdir_simple);
5 use Code::TidyAll;
6 use File::Slurp::Tiny qw(read_file write_file);
7 use IPC::System::Simple qw(capturex run);
8 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
9
10 my ( $precommit_hook_template, $prereceive_hook_template, $tidyall_ini_template );
11
12 sub test_git : Tests {
13 my ($self) = @_;
14
15 $self->require_executable('git');
16
17 my $temp_dir = tempdir_simple;
18 my $work_dir = "$temp_dir/work";
19 my $hooks_dir = "$work_dir/.git/hooks";
20 my $output;
21
22 my $committed = sub {
23 like( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" );
24 };
25 my $uncommitted = sub {
26 unlike( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" );
27 };
28
29 my $pushed = sub {
30 unlike( capturex( 'git', 'status' ), qr/Your branch is ahead/, "pushed" );
31 };
32 my $unpushed = sub {
33 like( capturex( 'git', 'status' ), qr/Your branch is ahead/, "unpushed" );
34 };
35
36 my $lib_dirs = join q{ }, map { realpath($_) } qw( lib t/lib );
37
38 # Create the repo
39 #
40 run( "git", "init", $work_dir );
41 ok( -d $_, "$_ exists" ) for ( $work_dir, $hooks_dir );
42 my $pushd = pushd($work_dir);
43
44 # Add tidyall.ini and .gitignore
45 #
46 write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) );
47 write_file( "$work_dir/.gitignore", ".tidyall.d" );
48 run( "git", "add", "tidyall.ini", ".gitignore" );
49 run( "git", "commit", "-m", "added", "tidyall.ini", ".gitignore" );
50
51 # Add foo.txt, which needs tidying
52 #
53 write_file( "$work_dir/foo.txt", "abc\n" );
54 cmp_deeply( [ git_uncommitted_files($work_dir) ], [], "no uncommitted files" );
55
56 # git add foo.txt and make sure it is now in uncommitted list
57 #
58 run( "git", "add", "foo.txt" );
59 cmp_deeply(
60 [ git_uncommitted_files($work_dir) ],
61 ["$work_dir/foo.txt"], "one uncommitted file"
62 );
63
64 # Add pre-commit hook
65 #
66 my $precommit_hook_file = "$hooks_dir/pre-commit";
67 my $precommit_hook = sprintf( $precommit_hook_template, $lib_dirs );
68 write_file( $precommit_hook_file, $precommit_hook );
69 chmod( 0775, $precommit_hook_file );
70
71 # Try to commit, make sure we get error
72 #
73 $output = capture_stderr { system( "git", "commit", "-m", "changed", "-a" ) };
74 like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" );
75 like( $output, qr/needs tidying/, "needs tidying" );
76 $uncommitted->();
77
78 # Fix file and commit successfully
79 #
80 write_file( "$work_dir/foo.txt", "ABC\n" );
81 $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) };
82 like( $output, qr/\[checked\] foo\.txt/, "checked foo.txt" );
83 $committed->();
84
85 # Create a bare shared repo, then a clone of that
86 #
87 my $shared_dir = "$temp_dir/shared";
88 my $clone_dir = "$temp_dir/clone";
89 run( "git", "clone", "-q", "--bare", $work_dir, $shared_dir );
90 run( "git", "clone", "-q", $shared_dir, $clone_dir );
91 chdir($clone_dir);
92 $committed->();
93
94 # Add prereceive hook to shared repo
95 #
96 my $prereceive_hook_file = "$shared_dir/hooks/pre-receive";
97 my $prereceive_hook = sprintf( $prereceive_hook_template, $lib_dirs );
98 write_file( $prereceive_hook_file, $prereceive_hook );
99 chmod( 0775, $prereceive_hook_file );
100
101 # Unfix file and commit
102 #
103 write_file( "$clone_dir/foo.txt", "def\n" );
104 run( "git", "commit", "-m", "changed", "-a" );
105 $committed->();
106
107 # Try to push, make sure we get error back
108 #
109 $unpushed->();
110 $output = capture_stderr { system( "git", "push" ) };
111 like( $output, qr/master -> master/, "master -> master" );
112 like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" );
113 like( $output, qr/needs tidying/, "needs tidying" );
114 $unpushed->();
115
116 # Fix file and push successfully
117 #
118 write_file( "$clone_dir/foo.txt", "DEF\n" );
119 $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) };
120 $committed->();
121 $output = capture_stderr { system( "git", "push" ) };
122 like( $output, qr/master -> master/, "master -> master" );
123 $pushed->();
124
125 # Unfix file and commit
126 #
127 write_file( "$clone_dir/foo.txt", "def\n" );
128 run( "git", "commit", "-m", "changed", "-a" );
129 $committed->();
130
131 # Try #1: make sure we get error back
132 #
133 $unpushed->();
134 $output = capture_stderr { system( "git", "push" ) };
135 like( $output, qr/needs tidying/, "needs tidying" );
136 $unpushed->();
137
138 # Try #2: make sure we get error and repeat notification back
139 #
140 $unpushed->();
141 $output = capture_stderr { system( "git", "push" ) };
142 like( $output, qr/needs tidying/, "needs tidying" );
143 like( $output, qr/Identical push seen 2 times/, "Identical push seen 2 times" );
144 $unpushed->();
145
146 }
147
148 $precommit_hook_template = '#!' . $^X . "\n" . <<'EOF';
149 use lib qw(%s);
150 use Code::TidyAll::Git::Precommit;
151 use strict;
152 use warnings;
153
154 Code::TidyAll::Git::Precommit->check(
155 tidyall_options => { verbose => 1 }
156 );
157 EOF
158
159 $prereceive_hook_template = '#!' . $^X . "\n" . <<'EOF';
160 use lib qw(%s);
161 use Code::TidyAll::Git::Prereceive;
162 use strict;
163 use warnings;
164
165 Code::TidyAll::Git::Prereceive->check();
166 EOF
167
168 $tidyall_ini_template = <<'EOF';
169 [+Code::TidyAll::Test::Plugin::UpperText]
170 select = **/*.txt
171 EOF
172
173 1;
0 package Test::Code::TidyAll::Plugin::CSSUnminifier;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub _extra_path {
5 'node_modules/.bin';
6 }
7
8 sub test_main : Tests {
9 my $self = shift;
10
11 $self->require_executable('node');
12
13 my $source = 'body {\nfont-family:helvetica;\nfont-size:15pt;\n}';
14 $self->tidyall(
15 source => $source,
16 expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n'
17 );
18 $self->tidyall(
19 source => $source,
20 conf => { argv => '-w=2' },
21 expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n'
22 );
23 }
24
25 1;
0 package Test::Code::TidyAll::Plugin::JSBeautify;
1
2 use Encode qw(encode);
3 use File::Slurp::Tiny qw(write_file);
4 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
5 use Test::Warnings qw(warnings);
6
7 sub _extra_path {
8 'node_modules/.bin';
9 }
10
11 sub test_main : Tests {
12 my $self = shift;
13
14 $self->require_executable('node');
15
16 my $source = 'sp.toggleResult=function(id){foo(id)}';
17 $self->tidyall(
18 source => $source,
19 expect_tidy => 'sp.toggleResult = function(id) {\n foo(id)\n}',
20 );
21 $self->tidyall(
22 source => $source,
23 conf => { argv => '--indent-size 3 --brace-style expand' },
24 expect_tidy => 'sp.toggleResult = function(id)\n{\n foo(id)\n}',
25 );
26 }
27
28 sub test_utf8 : Tests {
29 my $self = shift;
30
31 my $contents = encode( 'UTF-8', qq{var unicode = "Unicode - \x{263a}";} );
32 my $expect = encode( 'UTF-8', qq{var unicode = "Unicode - \x{263a}";} );
33
34 local $SIG{__WARN__} = sub { Carp::cluck(@_) };
35 is_deeply(
36 [
37 warnings {
38 $self->tidyall(
39 source => $contents,
40 expect_tidy => $expect,
41 desc => 'tidy UTF-8 from string',
42 );
43 }
44 ],
45 [],
46 'no warnings tidying UTF-8 source'
47 );
48
49 my $file = $self->{root_dir} . '/test.js';
50 write_file( $file, $contents );
51
52 is_deeply(
53 [
54 warnings {
55 $self->tidyall(
56 source_file => $file,
57 expect_tidy => $expect,
58 desc => 'tidy UTF-8 from file',
59 );
60 }
61 ],
62 [],
63 'no warnings tidying UTF-8 source'
64 );
65 }
66
67 1;
0 package Test::Code::TidyAll::Plugin::JSHint;
1
2 use File::Slurp::Tiny qw(write_file);
3 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
4
5 sub test_filename {'foo.js'}
6
7 sub _extra_path {
8 'node_modules/.bin';
9 }
10
11 sub test_main : Tests {
12 my $self = shift;
13
14 $self->require_executable('node');
15
16 $self->tidyall(
17 source => 'var my_object = {};',
18 expect_ok => 1,
19 desc => 'ok - camelcase',
20 );
21 $self->tidyall(
22 source => 'while (day)\n shuffle();',
23 expect_ok => 1,
24 desc => 'ok no brace',
25 );
26 $self->tidyall(
27 source => 'var my_object = new Object();',
28 expect_error => qr/object literal notation/,
29 desc => 'error - object literal',
30 );
31 $self->tidyall(
32 source => 'var my_object = {};',
33 conf => { options => 'camelcase' },
34 expect_error => qr/not in camel case/,
35 desc => 'error - camel case - options=camelcase',
36 );
37 $self->tidyall(
38 source => 'var my_object = {};',
39 conf => { options => 'camelcase curly' },
40 expect_error => qr/not in camel case/,
41 desc => 'error - camel case - options=camelcase,curly',
42 );
43 $self->tidyall(
44 source => 'while (day)\n shuffle();',
45 conf => { options => 'camelcase curly' },
46 expect_error => qr/Expected \'\{/,
47 desc => 'error - curly - options=camelcase,curly',
48 );
49
50 my $rc_file = $self->{root_dir} . "/jshint.json";
51 write_file( $rc_file, '{"camelcase": true}' );
52
53 $self->tidyall(
54 source => 'var my_object = {};',
55 conf => { argv => "--config $rc_file" },
56 expect_error => qr/not in camel case/,
57 desc => 'error - camelcase - conf file',
58 );
59 $self->tidyall(
60 source => 'var my_object = {};',
61 conf => { argv => "--badoption" },
62 expect_error => qr/Unknown option/,
63 desc => 'error - bad option'
64 );
65 }
66
67 1;
0 package Test::Code::TidyAll::Plugin::JSLint;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_filename {'foo.js'}
5
6 sub _extra_path {
7 'node_modules/.bin';
8 }
9
10 sub test_main : Tests {
11 my $self = shift;
12
13 $self->require_executable('node');
14
15 $self->tidyall(
16 source => 'var my_object = {};',
17 expect_ok => 1,
18 desc => 'ok',
19 );
20 $self->tidyall(
21 source => 'while (true) {\nvar i = 5;\n}',
22 expect_error => qr/Expected 'var' at column 5/,
23 desc => 'error - bad indentation'
24 );
25 $self->tidyall(
26 source => 'var i; while (true) {\ni = 5;\n}',
27 conf => { argv => '--white' },
28 expect_ok => 1,
29 desc => 'ok - bad indentation, --white'
30 );
31 $self->tidyall(
32 source => 'var my_object = {};',
33 conf => { argv => '--badoption' },
34 expect_error => qr/Usage/,
35 desc => 'error - bad option'
36 );
37 }
38
39 1;
0 package Test::Code::TidyAll::Plugin::MasonTidy;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source;
8
9 $source = '%if($foo) {\n%bar(1,2);\n%}';
10 $self->tidyall(
11 source => $source,
12 conf => { argv => '-m 1' },
13 expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }'
14 );
15 $self->tidyall(
16 source => $source,
17 conf => { argv => '-m 1 --perltidy-argv="-pt=2 -i=3"' },
18 expect_tidy => '% if ($foo) {\n% bar(1, 2);\n% }'
19 );
20 $self->tidyall(
21 source => $source,
22 conf => { argv => '-m 2 --perltidy-line-argv=" "' },
23 expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }'
24 );
25 $self->tidyall(
26 source => $source,
27 conf => { argv => '-m 1 --badoption' },
28 expect_error => qr/Usage/
29 );
30 }
31
32 1;
0 package Test::Code::TidyAll::Plugin::PHPCodeSniffer;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_filename {'foo.php'}
5
6 sub _extra_path {
7 'php5/usr/bin';
8 }
9
10 sub test_main : Tests {
11 my $self = shift;
12
13 $self->require_executable('php');
14
15 my $source = '<?php function foo() { $bar = 5 } ?>';
16
17 $self->tidyall(
18 source => $source,
19 conf => { argv => "--severity=6" },
20 expect_ok => 1,
21 );
22 $self->tidyall(
23 source => $source,
24 conf => { argv => "--severity=3" },
25 expect_error => qr/Missing .* doc/,
26 );
27 $self->tidyall(
28 source => $source,
29 conf => { argv => "--blahblah" },
30 expect_error => qr/not known/,
31 );
32 }
33
34 1;
0 package Test::Code::TidyAll::Plugin::PerlCritic;
1
2 use File::Slurp::Tiny qw(write_file);
3 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
4
5 sub test_main : Tests {
6 my $self = shift;
7
8 my $rc_file = $self->{root_dir} . "/perlcriticrc";
9
10 write_file( $rc_file, "only = 1\nseverity = 1\n[TestingAndDebugging::RequireUseStrict]\n" );
11 $self->tidyall(
12 source => 'my $foo = 5\n',
13 conf => { argv => "--profile $rc_file" },
14 expect_error => qr/Code before strictures/,
15 );
16 $self->tidyall(
17 source => 'use strict;\nuse warnings;\nmy $foo = 5\n',
18 conf => { argv => "--profile $rc_file" },
19 expect_ok => 1,
20 );
21 write_file( $rc_file, "only = 1\nseverity = 1\n[CodeLayout::ProhibitHardTabs]\n" );
22 $self->tidyall(
23 source => 'my $foo = 5\n',
24 conf => { argv => "--profile $rc_file" },
25 expect_ok => 1,
26 );
27 $self->tidyall(
28 source => 'my $foo = 5\n',
29 conf => { argv => "--profile $rc_file --badoption" },
30 expect_error => qr/Unknown option: badoption/
31 );
32 write_file( $rc_file, "badconfig = 1\n" );
33 $self->tidyall(
34 source => 'my $foo = 5\n',
35 conf => { argv => "--profile $rc_file" },
36 expect_error => qr/"badconfig" is not a supported option/
37 );
38 }
39
40 1;
0 package Test::Code::TidyAll::Plugin::PerlTidy;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = 'if ( $foo) {\nmy $bar = $baz;\n}\n';
8 $self->tidyall(
9 conf => { argv => '-npro' },
10 source => $source,
11 expect_tidy => 'if ($foo) {\n my $bar = $baz;\n}\n'
12 );
13 $self->tidyall(
14 conf => { argv => '-npro -bl' },
15 source => $source,
16 expect_tidy => 'if ($foo)\n{\n my $bar = $baz;\n}\n'
17 );
18 $self->tidyall(
19 conf => { argv => '-npro' },
20 source => 'if ($foo) {\n my $bar = $baz;\n}\n',
21 expect_ok => 1
22 );
23 $self->tidyall(
24 conf => { argv => '-npro' },
25 source => 'if ($foo) {\n my $bar = $baz;\n',
26 expect_error => qr/Final nesting depth/
27 );
28 $self->tidyall(
29 conf => { argv => '-npro --badoption' },
30 source => $source,
31 expect_error => qr/Unknown option: badoption/
32 );
33 }
34
35 1;
0 package Test::Code::TidyAll::Plugin::PerlTidySweet;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = 'if ( $foo) {\nmy $bar = $baz;\n}\n';
8 $self->tidyall(
9 conf => { argv => '-npro' },
10 source => $source,
11 expect_tidy => 'if ($foo) {\n my $bar = $baz;\n}\n'
12 );
13 $self->tidyall(
14 conf => { argv => '-npro -bl' },
15 source => $source,
16 expect_tidy => 'if ($foo)\n{\n my $bar = $baz;\n}\n'
17 );
18 $self->tidyall(
19 conf => { argv => '-npro' },
20 source => 'if ($foo) {\n my $bar = $baz;\n}\n',
21 expect_ok => 1
22 );
23 $self->tidyall(
24 source => 'method foo ($x,$y){\nmy $x=$self->x;}\n',
25 expect_tidy => 'method foo ($x,$y) {\n my $x = $self->x;\n}\n',
26 );
27 $self->tidyall(
28 source => 'if ($foo) {\n my $bar = $baz;\n',
29 expect_error => qr/Final nesting depth/
30 );
31 $self->tidyall(
32 conf => { argv => '--badoption' },
33 source => $source,
34 expect_error => qr/Unknown option: badoption/
35 );
36 }
37
38 1;
0 package Test::Code::TidyAll::Plugin::PodChecker;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 $self->tidyall(
8 source => '=head1 DESCRIPTION\n\nHello',
9 expect_ok => 1,
10 desc => 'ok',
11 );
12 $self->tidyall(
13 source => '=head1 METHODS\n\n=over\n\n=item * foo\n\n',
14 expect_error => qr/without closing =back/,
15 desc => 'error',
16 );
17 $self->tidyall(
18 source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n',
19 expect_ok => 1,
20 desc => 'ok - empty section, no warnings',
21 );
22 $self->tidyall(
23 source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n',
24 conf => { warnings => 1 },
25 expect_error => qr/empty section in previous paragraph/,
26 desc => 'error - empty section, warnings=1',
27 );
28 $self->tidyall(
29 source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah',
30 conf => { warnings => 1 },
31 expect_ok => 1,
32 desc => 'ok - duplicate section, warnings=1',
33 );
34 $self->tidyall(
35 source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah',
36 conf => { warnings => 2 },
37 expect_error => qr/multiple occurrence/,
38 desc => 'error - duplicate section, warnings=2',
39 );
40 }
41
42 1;
0 package Test::Code::TidyAll::Plugin::PodSpell;
1
2 use File::Slurp::Tiny qw(write_file);
3 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
4
5 sub test_filename {'Foo.pod'}
6
7 sub test_main : Tests {
8 my $self = shift;
9
10 my $dict_file = $self->{root_dir} . "/.ispell_english";
11
12 $self->tidyall(
13 source => '=head SUMMARY\n\nthe quick brown fox jumped over the lazy dogs',
14 expect_ok => 1,
15 desc => 'ok',
16 );
17 $self->tidyall(
18 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
19 expect_error => qr/unrecognized words:\nbrowwn\nlazeey/,
20 desc => 'spelling mistakes',
21 );
22 write_file( $dict_file, "browwn\n" );
23 $self->tidyall(
24 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
25 conf => { ispell_argv => "-p $dict_file" },
26 expect_error => qr/unrecognized words:\nlazeey/,
27 desc => 'spelling mistakes, one in dictionary',
28 );
29 write_file( $dict_file, "browwn\nlazeey\n" );
30 $self->tidyall(
31 source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs',
32 conf => { ispell_argv => "-p $dict_file" },
33 expect_ok => 1,
34 desc => 'spelling mistakes, all in dictionary',
35 );
36 }
37
38 1;
0 package Test::Code::TidyAll::Plugin::PodTidy;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 my $source = '=head1 DESCRIPTION
8
9 There are a lot of great code tidiers and validators out there. C<tidyall> makes them available from a single unified interface.
10
11 You can run C<tidyall> on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C<tidyall> will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed.
12
13 ';
14 $self->tidyall(
15 source => $source,
16 expect_tidy => '=head1 DESCRIPTION
17
18 There are a lot of great code tidiers and validators out there. C<tidyall>
19 makes them available from a single unified interface.
20
21 You can run C<tidyall> on a single file or on an entire project hierarchy, and
22 configure which tidiers/validators are applied to which files. C<tidyall> will
23 back up files beforehand, and for efficiency will only consider files that have
24 changed since they were last processed.
25
26 ',
27 desc => 'tidy - defaults',
28 );
29
30 $self->tidyall(
31 source => '=head1 DESCRIPTION
32
33 There are a lot of great code tidiers and validators out there. C<tidyall>
34 makes them available from a single unified interface.
35
36 You can run C<tidyall> on a single file or on an entire project hierarchy, and
37 configure which tidiers/validators are applied to which files. C<tidyall> will
38 back up files beforehand, and for efficiency will only consider files that have
39 changed since they were last processed.
40
41 ',
42 expect_ok => 1,
43 desc => 'ok - defaults',
44 );
45
46 $self->tidyall(
47 source => $source,
48 conf => { columns => 30 },
49 expect_tidy => '=head1 DESCRIPTION
50
51 There are a lot of great code
52 tidiers and validators out
53 there. C<tidyall> makes them
54 available from a single
55 unified interface.
56
57 You can run C<tidyall> on a
58 single file or on an entire
59 project hierarchy, and
60 configure which
61 tidiers/validators are
62 applied to which files.
63 C<tidyall> will back up files
64 beforehand, and for
65 efficiency will only consider
66 files that have changed since
67 they were last processed.
68
69 ',
70 desc => 'tidy - columns = 30',
71 );
72 }
73
74 1;
0 package Test::Code::TidyAll::Plugin::SortLines;
1
2 use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin';
3
4 sub test_main : Tests {
5 my $self = shift;
6
7 $self->tidyall( source => "c\nb\na\n", expect_tidy => "a\nb\nc\n" );
8 $self->tidyall( source => "\n\na\n\n\n", expect_tidy => "a\n" );
9 }
10
11 1;
0 package Test::Code::TidyAll::Plugin;
1
2 use Capture::Tiny qw(capture);
3 use Code::TidyAll::Util qw(pushd tempdir_simple);
4 use Code::TidyAll;
5 use File::Slurp::Tiny qw(read_file);
6 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
7 use Test::Differences qw( eq_or_diff );
8 use autodie;
9
10 __PACKAGE__->SKIP_CLASS("Virtual base class");
11
12 my $Test = Test::Builder->new;
13
14 sub startup : Tests(startup => no_plan) {
15 my $self = shift;
16
17 $self->{root_dir} = tempdir_simple();
18 }
19
20 sub plugin_class {
21 my ($self) = @_;
22
23 return ( split( '::', ref($self) ) )[-1];
24 }
25
26 sub test_filename {'foo.txt'}
27
28 sub tidyall {
29 my ( $self, %p ) = @_;
30
31 my $extra = $self->_extra_path();
32 local $ENV{PATH} = $ENV{PATH};
33 $ENV{PATH} .= q{:} . $extra if $extra;
34
35 my $plugin_class = $self->plugin_class;
36 my %plugin_conf = ( $plugin_class => { select => '*', %{ $p{conf} || {} } } );
37 my $ct = Code::TidyAll->new(
38 quiet => 1,
39 root_dir => $self->{root_dir},
40 plugins => \%plugin_conf,
41 );
42
43 my ( $source, $result, $output, $error );
44 if ( $p{source} ) {
45 $source = $p{source};
46 $source =~ s/\\n/\n/g;
47 ( $output, $error ) = capture {
48 $result = $ct->process_source( $source, $self->test_filename )
49 };
50 }
51 elsif ( $p{source_file} ) {
52 ( $output, $error )
53 = capture { $result = $ct->process_file( $p{source_file} ) };
54 }
55 else {
56 die 'The tidyall() method requires a source or source_file parameter';
57 }
58
59 my $desc = $p{desc} || $p{source} || $p{source_file};
60
61 $Test->diag($output) if $output && $ENV{TEST_VERBOSE};
62 $Test->diag($error) if $error && $ENV{TEST_VERBOSE};
63
64 if ( my $expect_tidy = $p{expect_tidy} ) {
65 $expect_tidy =~ s/\\n/\n/g;
66 is( $result->state, 'tidied', "state=tidied [$desc]" );
67 eq_or_diff(
68 $result->new_contents, $expect_tidy,
69 "new contents [$desc]"
70 );
71 is( $result->error, undef, "no error [$desc]" );
72 }
73 elsif ( my $expect_ok = $p{expect_ok} ) {
74 is( $result->state, 'checked', "state=checked [$desc]" );
75 is( $result->error, undef, "no error [$desc]" );
76 if ( $result->new_contents ) {
77 $source ||= read_file( $p{source_file} );
78 is( $result->new_contents, $source, "same contents [$desc]" );
79 }
80 }
81 elsif ( my $expect_error = $p{expect_error} ) {
82 is( $result->state, 'error', "state=error [$desc]" );
83 like( $result->error || '', $expect_error, "error message [$desc]" );
84 }
85 }
86
87 sub _extra_path {
88 return;
89 }
90
91 1;
0 package Test::Code::TidyAll::SVN;
1
2 use Capture::Tiny qw(capture_stdout capture_stderr capture);
3 use Code::TidyAll::SVN::Precommit;
4 use Code::TidyAll::SVN::Util qw(svn_uncommitted_files);
5 use Code::TidyAll::Util qw(dirname mkpath realpath tempdir_simple);
6 use Code::TidyAll;
7 use File::Slurp::Tiny qw(read_file write_file);
8 use IPC::System::Simple qw(run);
9 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
10
11 my ( $precommit_hook_template, $tidyall_ini_template );
12
13 sub test_svn : Tests {
14 my ($self) = @_;
15
16 $self->require_executable('svn');
17
18 my $temp_dir = tempdir_simple;
19 my $repo_dir = "$temp_dir/repo";
20 my $src_dir = "$temp_dir/src";
21 my $work_dir = "$temp_dir/work";
22 my $hook_log = "$temp_dir/hook.log";
23 my ( $stdout, $stderr );
24
25 my $log_contains = sub {
26 my $regex = shift;
27 like( read_file($hook_log), $regex );
28 };
29
30 my $clear_log = sub {
31 run("cat /dev/null > $hook_log");
32 };
33
34 my $committed = sub {
35 $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) };
36 unlike( $stdout, qr/\S/, "committed" );
37 };
38
39 my $uncommitted = sub {
40 $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) };
41 like( $stdout, qr/^M/, "uncommitted" );
42 };
43
44 run("svnadmin create $repo_dir");
45 my $hooks_dir = "$repo_dir/hooks";
46 ok( -d $hooks_dir, "$hooks_dir exists" );
47
48 mkpath( $src_dir, 0, 0775 );
49 write_file( "$src_dir/foo.txt", "abc" );
50
51 run( sprintf( 'svn -q import %s file://%s/myapp/trunk -m "import"', $src_dir, $repo_dir ) );
52 run( sprintf( 'svn -q checkout file://%s/myapp/trunk %s', $repo_dir, $work_dir ) );
53
54 is( read_file("$work_dir/foo.txt"), "abc", "checkout and import ok" );
55 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" );
56
57 my $precommit_hook_file = "$hooks_dir/pre-commit";
58 my $precommit_hook = sprintf( $precommit_hook_template, realpath("lib"), $hook_log );
59 write_file( $precommit_hook_file, $precommit_hook );
60 chmod( 0775, $precommit_hook_file );
61
62 write_file( "$work_dir/foo.txt", "abc " );
63 mkpath( "$work_dir/bar", 0, 0775 );
64 run( sprintf( 'svn add %s/bar', $work_dir ) );
65 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [ re("foo.txt") ], "one uncommitted file" );
66
67 $stderr = capture_stderr {
68 run( sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar', $work_dir, $work_dir ) );
69 };
70 unlike( $stderr, qr/\S/ );
71 $log_contains->(qr|could not find.*upwards from 'myapp/trunk/foo.txt'|);
72 $clear_log->();
73 $committed->();
74 cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" );
75
76 write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) );
77 run( sprintf( 'svn -q add %s/tidyall.ini', $work_dir ) );
78 cmp_deeply(
79 [ svn_uncommitted_files($work_dir) ],
80 [ re("tidyall.ini") ],
81 "one uncommitted file"
82 );
83 run( sprintf( 'svn -q commit -m "added" %s/tidyall.ini', $work_dir ) );
84
85 write_file( "$work_dir/foo.txt", "abc" );
86 $stderr
87 = capture_stderr { system( sprintf( 'svn -q commit -m "changed" %s/foo.txt', $work_dir ) ) };
88 like( $stderr, qr/1 file did not pass tidyall check/ );
89 like( $stderr, qr/needs tidying/ );
90 $uncommitted->();
91
92 write_file( "$work_dir/foo.txt", "ABC" );
93 write_file( "$work_dir/bar.dat", "123" );
94 run( sprintf( 'svn -q add %s/bar.dat', $work_dir ) );
95 $stderr = capture_stderr {
96 system(
97 sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar.dat', $work_dir, $work_dir ) );
98 };
99 unlike( $stderr, qr/\S/ );
100 $committed->();
101
102 write_file( "$work_dir/foo.txt", "def" );
103 $stderr = capture_stderr {
104 system( sprintf( 'svn -q commit -m "NO TIDYALL - emergency fix!" %s/foo.txt', $work_dir ) );
105 };
106 unlike( $stderr, qr/\S/ );
107 $committed->();
108 }
109
110 $precommit_hook_template = '#!' . $^X . "\n" . <<'EOF';
111 use lib qw(%s);
112 use Code::TidyAll::SVN::Precommit;
113 use Log::Any::Adapter (File => "%s");
114 use strict;
115 use warnings;
116
117 Code::TidyAll::SVN::Precommit->check(
118 extra_conf_files => ["perlcriticrc"],
119 tidyall_options => { verbose => 1 }
120 );
121 EOF
122
123 $tidyall_ini_template = <<'EOF';
124 [+Code::TidyAll::Test::Plugin::UpperText]
125 select = **/*.txt
126 EOF
0 package Test::Code::TidyAll::Util;
1
2 use Code::TidyAll::Util qw(dirname tempdir_simple);
3 use IPC::System::Simple qw(capturex);
4 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
5
6 sub test_tempdir_simple : Tests {
7 my $dir = capturex(
8 "$^X", "-I",
9 "lib", "-MCode::TidyAll::Util",
10 "-e", "print Code::TidyAll::Util::tempdir_simple "
11 );
12 ok( -d dirname($dir), "parent exists" );
13 ok( !-d $dir, "dir does not exist" );
14 }
15
16 1;
0 package Test::Code::TidyAll::Zglob;
1
2 use File::Zglob;
3 use Test::Class::Most parent => 'Code::TidyAll::Test::Class';
4 use Code::TidyAll::Util::Zglob qw(zglob_to_regex);
5
6 sub test_match : Tests {
7 my ( $zglob, $regex );
8
9 $zglob = "**/*.txt";
10 $regex = zglob_to_regex($zglob);
11 foreach my $path (qw(foo.txt foo/baz.txt foo/bar/baz.txt)) {
12 like( $path, $regex, "$path matches $zglob" );
13 }
14 foreach my $path (qw(foo/bar/baz.tx)) {
15 unlike( $path, $regex, "$path does not match $zglob" );
16 }
17
18 $zglob = "**/*";
19 $regex = zglob_to_regex($zglob);
20 foreach my $path (qw(foo foo.txt foo/bar foo/baz.txt)) {
21 like( $path, $regex, "$path matches $zglob" );
22 }
23
24 $zglob = "foo/**/*.txt";
25 $regex = zglob_to_regex($zglob);
26 foreach my $path (qw(foo/baz.txt foo/bar/baz.txt foo/bar/baz/blargh.txt)) {
27 like( $path, $regex, "$path matches $zglob" );
28 }
29 foreach my $path (qw(foo.txt foo/bar/baz.tx)) {
30 unlike( $path, $regex, "$path does not match $zglob" );
31 }
32 }
33
34 1;
0 #!perl
1
2 BEGIN {
3 unless ($ENV{RELEASE_TESTING}) {
4 require Test::More;
5 Test::More::plan(skip_all => 'these tests are for release candidate testing');
6 }
7 }
8
9
10 use strict;
11 use warnings;
12
13 use Test::More 0.96 tests => 2;
14 use_ok('Test::CPAN::Changes');
15 subtest 'changes_ok' => sub {
16 changes_file_ok('Changes');
17 };
18 done_testing();
0 [PerlTidy]
1 argv = --pro=$ROOT/perltidyrc
2 except_modes = dzil
3 select = {bin,lib,t}/**/{tidyall,*.{pl,pm,t}}
4 ignore = t/00-report-prereqs.t
5 ignore = t/author-*
6 ignore = t/release-*
7
8 [PerlTidySweet]
9 argv = --pro=$ROOT/perltidyrc
10 except_modes = dzil
11 select = {bin,lib,t}/**/{tidyall,*.{pl,pm,t}}
12 ignore = t/00-report-prereqs.t
13 ignore = t/author-*
14 ignore = t/release-*
15
16 [PodTidy]
17 select = {bin,lib}/**/{tidyall,*.{pl,pm,pod}}
18 ignore = t/00-report-prereqs.t
19 ignore = t/author-*
20 ignore = t/release-*
21
22 [PerlCritic]
23 select = lib/**/*.pm
24 argv = --profile $ROOT/perlcriticrc
25 except_modes = editor dzil
26 ignore = t/00-report-prereqs.t
27 ignore = t/author-*
28 ignore = t/release-*
29
30 [SortLines]
31 select = .gitignore .ispell* **/.gitignore
32
33 [Perl::AlignMooseAttributes]
34 select = {bin,lib,t}/**/*.{pl,pm,t}
35 except_modes = dzil
36 ignore = t/00-report-prereqs.t
37 ignore = t/author-*
38 ignore = t/release-*
0 [@CorePrep]
1 [Name]
2 [Version]
3 [Generic / SYNOPSIS]
4 [Generic / DESCRIPTION]
5 [Leftovers]
6 [=inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll]
7 [Region / postlude]
8 [Authors]
9 [Contributors]
10 [Legal]
+0
-3
xt/tidyall.t less more
0 #!/usr/bin/perl
1 use Test::Code::TidyAll;
2 tidyall_ok();