New upstream snapshot.
Debian Janitor
2 years ago
0 | 0 | Revision history for Perl module CPAN::Reporter::Smoker |
1 | ||
2 | {{$NEXT}} | |
1 | 3 | |
2 | 4 | 0.29 2017-04-15 09:52:48-04:00 America/New_York |
3 | 5 |
0 | This software is Copyright (c) 2017 by David Golden. | |
1 | ||
2 | This is free software, licensed under: | |
3 | ||
4 | The Apache License, Version 2.0, January 2004 | |
5 | ||
6 | Apache License | |
7 | Version 2.0, January 2004 | |
8 | http://www.apache.org/licenses/ | |
9 | ||
10 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |
11 | ||
12 | 1. Definitions. | |
13 | ||
14 | "License" shall mean the terms and conditions for use, reproduction, | |
15 | and distribution as defined by Sections 1 through 9 of this document. | |
16 | ||
17 | "Licensor" shall mean the copyright owner or entity authorized by | |
18 | the copyright owner that is granting the License. | |
19 | ||
20 | "Legal Entity" shall mean the union of the acting entity and all | |
21 | other entities that control, are controlled by, or are under common | |
22 | control with that entity. For the purposes of this definition, | |
23 | "control" means (i) the power, direct or indirect, to cause the | |
24 | direction or management of such entity, whether by contract or | |
25 | otherwise, or (ii) ownership of fifty percent (50%) or more of the | |
26 | outstanding shares, or (iii) beneficial ownership of such entity. | |
27 | ||
28 | "You" (or "Your") shall mean an individual or Legal Entity | |
29 | exercising permissions granted by this License. | |
30 | ||
31 | "Source" form shall mean the preferred form for making modifications, | |
32 | including but not limited to software source code, documentation | |
33 | source, and configuration files. | |
34 | ||
35 | "Object" form shall mean any form resulting from mechanical | |
36 | transformation or translation of a Source form, including but | |
37 | not limited to compiled object code, generated documentation, | |
38 | and conversions to other media types. | |
39 | ||
40 | "Work" shall mean the work of authorship, whether in Source or | |
41 | Object form, made available under the License, as indicated by a | |
42 | copyright notice that is included in or attached to the work | |
43 | (an example is provided in the Appendix below). | |
44 | ||
45 | "Derivative Works" shall mean any work, whether in Source or Object | |
46 | form, that is based on (or derived from) the Work and for which the | |
47 | editorial revisions, annotations, elaborations, or other modifications | |
48 | represent, as a whole, an original work of authorship. For the purposes | |
49 | of this License, Derivative Works shall not include works that remain | |
50 | separable from, or merely link (or bind by name) to the interfaces of, | |
51 | the Work and Derivative Works thereof. | |
52 | ||
53 | "Contribution" shall mean any work of authorship, including | |
54 | the original version of the Work and any modifications or additions | |
55 | to that Work or Derivative Works thereof, that is intentionally | |
56 | submitted to Licensor for inclusion in the Work by the copyright owner | |
57 | or by an individual or Legal Entity authorized to submit on behalf of | |
58 | the copyright owner. For the purposes of this definition, "submitted" | |
59 | means any form of electronic, verbal, or written communication sent | |
60 | to the Licensor or its representatives, including but not limited to | |
61 | communication on electronic mailing lists, source code control systems, | |
62 | and issue tracking systems that are managed by, or on behalf of, the | |
63 | Licensor for the purpose of discussing and improving the Work, but | |
64 | excluding communication that is conspicuously marked or otherwise | |
65 | designated in writing by the copyright owner as "Not a Contribution." | |
66 | ||
67 | "Contributor" shall mean Licensor and any individual or Legal Entity | |
68 | on behalf of whom a Contribution has been received by Licensor and | |
69 | subsequently incorporated within the Work. | |
70 | ||
71 | 2. Grant of Copyright License. Subject to the terms and conditions of | |
72 | this License, each Contributor hereby grants to You a perpetual, | |
73 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
74 | copyright license to reproduce, prepare Derivative Works of, | |
75 | publicly display, publicly perform, sublicense, and distribute the | |
76 | Work and such Derivative Works in Source or Object form. | |
77 | ||
78 | 3. Grant of Patent License. Subject to the terms and conditions of | |
79 | this License, each Contributor hereby grants to You a perpetual, | |
80 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |
81 | (except as stated in this section) patent license to make, have made, | |
82 | use, offer to sell, sell, import, and otherwise transfer the Work, | |
83 | where such license applies only to those patent claims licensable | |
84 | by such Contributor that are necessarily infringed by their | |
85 | Contribution(s) alone or by combination of their Contribution(s) | |
86 | with the Work to which such Contribution(s) was submitted. If You | |
87 | institute patent litigation against any entity (including a | |
88 | cross-claim or counterclaim in a lawsuit) alleging that the Work | |
89 | or a Contribution incorporated within the Work constitutes direct | |
90 | or contributory patent infringement, then any patent licenses | |
91 | granted to You under this License for that Work shall terminate | |
92 | as of the date such litigation is filed. | |
93 | ||
94 | 4. Redistribution. You may reproduce and distribute copies of the | |
95 | Work or Derivative Works thereof in any medium, with or without | |
96 | modifications, and in Source or Object form, provided that You | |
97 | meet the following conditions: | |
98 | ||
99 | (a) You must give any other recipients of the Work or | |
100 | Derivative Works a copy of this License; and | |
101 | ||
102 | (b) You must cause any modified files to carry prominent notices | |
103 | stating that You changed the files; and | |
104 | ||
105 | (c) You must retain, in the Source form of any Derivative Works | |
106 | that You distribute, all copyright, patent, trademark, and | |
107 | attribution notices from the Source form of the Work, | |
108 | excluding those notices that do not pertain to any part of | |
109 | the Derivative Works; and | |
110 | ||
111 | (d) If the Work includes a "NOTICE" text file as part of its | |
112 | distribution, then any Derivative Works that You distribute must | |
113 | include a readable copy of the attribution notices contained | |
114 | within such NOTICE file, excluding those notices that do not | |
115 | pertain to any part of the Derivative Works, in at least one | |
116 | of the following places: within a NOTICE text file distributed | |
117 | as part of the Derivative Works; within the Source form or | |
118 | documentation, if provided along with the Derivative Works; or, | |
119 | within a display generated by the Derivative Works, if and | |
120 | wherever such third-party notices normally appear. The contents | |
121 | of the NOTICE file are for informational purposes only and | |
122 | do not modify the License. You may add Your own attribution | |
123 | notices within Derivative Works that You distribute, alongside | |
124 | or as an addendum to the NOTICE text from the Work, provided | |
125 | that such additional attribution notices cannot be construed | |
126 | as modifying the License. | |
127 | ||
128 | You may add Your own copyright statement to Your modifications and | |
129 | may provide additional or different license terms and conditions | |
130 | for use, reproduction, or distribution of Your modifications, or | |
131 | for any such Derivative Works as a whole, provided Your use, | |
132 | reproduction, and distribution of the Work otherwise complies with | |
133 | the conditions stated in this License. | |
134 | ||
135 | 5. Submission of Contributions. Unless You explicitly state otherwise, | |
136 | any Contribution intentionally submitted for inclusion in the Work | |
137 | by You to the Licensor shall be under the terms and conditions of | |
138 | this License, without any additional terms or conditions. | |
139 | Notwithstanding the above, nothing herein shall supersede or modify | |
140 | the terms of any separate license agreement you may have executed | |
141 | with Licensor regarding such Contributions. | |
142 | ||
143 | 6. Trademarks. This License does not grant permission to use the trade | |
144 | names, trademarks, service marks, or product names of the Licensor, | |
145 | except as required for reasonable and customary use in describing the | |
146 | origin of the Work and reproducing the content of the NOTICE file. | |
147 | ||
148 | 7. Disclaimer of Warranty. Unless required by applicable law or | |
149 | agreed to in writing, Licensor provides the Work (and each | |
150 | Contributor provides its Contributions) on an "AS IS" BASIS, | |
151 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |
152 | implied, including, without limitation, any warranties or conditions | |
153 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |
154 | PARTICULAR PURPOSE. You are solely responsible for determining the | |
155 | appropriateness of using or redistributing the Work and assume any | |
156 | risks associated with Your exercise of permissions under this License. | |
157 | ||
158 | 8. Limitation of Liability. In no event and under no legal theory, | |
159 | whether in tort (including negligence), contract, or otherwise, | |
160 | unless required by applicable law (such as deliberate and grossly | |
161 | negligent acts) or agreed to in writing, shall any Contributor be | |
162 | liable to You for damages, including any direct, indirect, special, | |
163 | incidental, or consequential damages of any character arising as a | |
164 | result of this License or out of the use or inability to use the | |
165 | Work (including but not limited to damages for loss of goodwill, | |
166 | work stoppage, computer failure or malfunction, or any and all | |
167 | other commercial damages or losses), even if such Contributor | |
168 | has been advised of the possibility of such damages. | |
169 | ||
170 | 9. Accepting Warranty or Additional Liability. While redistributing | |
171 | the Work or Derivative Works thereof, You may choose to offer, | |
172 | and charge a fee for, acceptance of support, warranty, indemnity, | |
173 | or other liability obligations and/or rights consistent with this | |
174 | License. However, in accepting such obligations, You may act only | |
175 | on Your own behalf and on Your sole responsibility, not on behalf | |
176 | of any other Contributor, and only if You agree to indemnify, | |
177 | defend, and hold each Contributor harmless for any liability | |
178 | incurred by, or claims asserted against, such Contributor by reason | |
179 | of your accepting any such warranty or additional liability. | |
180 | ||
181 | END OF TERMS AND CONDITIONS | |
182 | ||
183 | APPENDIX: How to apply the Apache License to your work. | |
184 | ||
185 | To apply the Apache License to your work, attach the following | |
186 | boilerplate notice, with the fields enclosed by brackets "[]" | |
187 | replaced with your own identifying information. (Don't include | |
188 | the brackets!) The text should be enclosed in the appropriate | |
189 | comment syntax for the file format. We also recommend that a | |
190 | file or class name and description of purpose be included on the | |
191 | same "printed page" as the copyright notice for easier | |
192 | identification within third-party archives. | |
193 | ||
194 | Copyright [yyyy] [name of copyright owner] | |
195 | ||
196 | Licensed under the Apache License, Version 2.0 (the "License"); | |
197 | you may not use this file except in compliance with the License. | |
198 | You may obtain a copy of the License at | |
199 | ||
200 | http://www.apache.org/licenses/LICENSE-2.0 | |
201 | ||
202 | Unless required by applicable law or agreed to in writing, software | |
203 | distributed under the License is distributed on an "AS IS" BASIS, | |
204 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
205 | See the License for the specific language governing permissions and | |
206 | limitations under the License. |
0 | # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.009. | |
0 | .mailmap | |
1 | Changes | |
1 | 2 | CONTRIBUTING.mkdn |
2 | Changes | |
3 | LICENSE | |
4 | MANIFEST | |
5 | META.json | |
6 | META.yml | |
7 | Makefile.PL | |
8 | README | |
9 | Todo | |
10 | cpanfile | |
3 | CPAN-Reporter-Smoker-0.30/META.json | |
4 | CPAN-Reporter-Smoker-0.30/META.yml | |
11 | 5 | dist.ini |
12 | 6 | lib/CPAN/Reporter/Smoker.pm |
7 | Makefile.PL | |
8 | MANIFEST This list of files | |
13 | 9 | perlcritic.rc |
14 | t/00-report-prereqs.dd | |
15 | t/00-report-prereqs.t | |
10 | README.mkdn | |
16 | 11 | t/00load.t |
12 | t/args.t | |
17 | 13 | t/CPAN/authors/01mailrc.txt.gz |
18 | 14 | t/CPAN/authors/id/A/AN/ANDK/Bogus-OSUnsupported-0.01.tar.gz |
19 | 15 | t/CPAN/authors/id/A/AN/ANDK/CHECKSUMS |
20 | 16 | t/CPAN/authors/id/D/DA/DAGOLDEN/Bogus-Fail-0.01.tar.gz |
17 | t/CPAN/authors/id/D/DA/DAGOLDEN/Bogus-Pass-0.01.tar.gz | |
21 | 18 | t/CPAN/authors/id/D/DA/DAGOLDEN/Bogus-PL-Fail-0.01.tar.gz |
22 | t/CPAN/authors/id/D/DA/DAGOLDEN/Bogus-Pass-0.01.tar.gz | |
23 | 19 | t/CPAN/authors/id/D/DA/DAGOLDEN/Bundle-Fake-1.00.tar.gz |
24 | 20 | t/CPAN/authors/id/D/DA/DAGOLDEN/CHECKSUMS |
25 | 21 | t/CPAN/authors/id/J/JH/JHI/Bogus-Fail-0.01_01.tar.gz |
28 | 24 | t/CPAN/authors/id/P/P6/P6DISTS/Perl6/Test-Harness-666.tar.gz |
29 | 25 | t/CPAN/authors/id/P/PE/PETDANCE/CHECKSUMS |
30 | 26 | t/CPAN/authors/id/P/PE/PETDANCE/Test-Harness-2.62.tar.gz |
27 | t/CPAN/indices/find-ls.gz | |
31 | 28 | t/CPAN/indices/README |
32 | t/CPAN/indices/find-ls.gz | |
33 | 29 | t/CPAN/modules/02packages.details.txt.gz |
34 | 30 | t/CPAN/modules/03modlist.data.gz |
35 | 31 | t/CPAN/update-checksums.pl |
36 | t/args.t | |
37 | t/data/MyConfig.pm | |
38 | 32 | t/data/disabled.yml |
39 | 33 | t/data/dist-list |
34 | t/data/MyConfig.pm | |
40 | 35 | t/lib/DotDirs.pm |
41 | 36 | t/lib/Test/Reporter.pm |
42 | 37 | t/parse_module_index.t |
50 | 45 | t/smoke-list-file.t |
51 | 46 | t/smoke-restart.t |
52 | 47 | t/smoke-reverse.t |
53 | xt/author/00-compile.t | |
54 | xt/author/critic.t | |
55 | xt/author/pod-coverage.t | |
56 | xt/author/pod-spell.t | |
57 | xt/author/pod-syntax.t | |
58 | xt/author/portability.t | |
59 | xt/author/test-version.t | |
60 | xt/release/distmeta.t | |
61 | xt/release/minimum-version.t | |
48 | Todo | |
49 | META.yml Module YAML meta-data (added by MakeMaker) | |
50 | META.json Module JSON meta-data (added by MakeMaker) |
2 | 2 | "author" : [ |
3 | 3 | "David Golden <dagolden@cpan.org>" |
4 | 4 | ], |
5 | "dynamic_config" : 0, | |
6 | "generated_by" : "Dist::Zilla version 6.009, CPAN::Meta::Converter version 2.150010", | |
5 | "dynamic_config" : 1, | |
6 | "generated_by" : "ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter version 2.150010", | |
7 | 7 | "license" : [ |
8 | 8 | "apache_2_0" |
9 | 9 | ], |
14 | 14 | "name" : "CPAN-Reporter-Smoker", |
15 | 15 | "no_index" : { |
16 | 16 | "directory" : [ |
17 | "corpus", | |
18 | "examples", | |
19 | 17 | "t", |
20 | "xt" | |
21 | ], | |
22 | "package" : [ | |
23 | "DB" | |
18 | "inc" | |
24 | 19 | ] |
25 | 20 | }, |
26 | 21 | "prereqs" : { |
22 | "build" : { | |
23 | "requires" : { | |
24 | "ExtUtils::MakeMaker" : "0" | |
25 | } | |
26 | }, | |
27 | 27 | "configure" : { |
28 | 28 | "requires" : { |
29 | "ExtUtils::MakeMaker" : "6.17", | |
30 | "perl" : "5.006" | |
31 | } | |
32 | }, | |
33 | "develop" : { | |
34 | "requires" : { | |
35 | "Dist::Zilla" : "5", | |
36 | "Dist::Zilla::Plugin::Encoding" : "0", | |
37 | "Dist::Zilla::Plugin::Prereqs" : "0", | |
38 | "Dist::Zilla::Plugin::RemovePrereqs" : "0", | |
39 | "Dist::Zilla::PluginBundle::DAGOLDEN" : "0.072", | |
40 | "English" : "0", | |
41 | "File::Spec" : "0", | |
42 | "File::Temp" : "0", | |
43 | "IO::Handle" : "0", | |
44 | "IPC::Open3" : "0", | |
45 | "Pod::Coverage::TrustPod" : "0", | |
46 | "Pod::Wordlist" : "0", | |
47 | "Software::License::Apache_2_0" : "0", | |
48 | "Test::CPAN::Meta" : "0", | |
49 | "Test::MinimumVersion" : "0", | |
50 | "Test::More" : "0", | |
51 | "Test::Pod" : "1.41", | |
52 | "Test::Pod::Coverage" : "1.08", | |
53 | "Test::Portability::Files" : "0", | |
54 | "Test::Spelling" : "0.12", | |
55 | "Test::Version" : "1", | |
56 | "blib" : "1.01" | |
29 | "ExtUtils::MakeMaker" : "6.17" | |
57 | 30 | } |
58 | 31 | }, |
59 | 32 | "runtime" : { |
81 | 54 | } |
82 | 55 | }, |
83 | 56 | "test" : { |
84 | "recommends" : { | |
85 | "CPAN::Meta" : "2.120900" | |
86 | }, | |
87 | 57 | "requires" : { |
88 | 58 | "CPAN::Checksums" : "0", |
89 | 59 | "Cwd" : "3.27", |
95 | 65 | "IO::File" : "0", |
96 | 66 | "Test::More" : "0.62", |
97 | 67 | "lib" : "0", |
98 | "perl" : "5.010", | |
99 | 68 | "vars" : "0" |
100 | 69 | } |
101 | 70 | } |
102 | 71 | }, |
103 | "provides" : { | |
104 | "CPAN::Reporter::Smoker" : { | |
105 | "file" : "lib/CPAN/Reporter/Smoker.pm", | |
106 | "version" : "0.29" | |
107 | } | |
108 | }, | |
109 | 72 | "release_status" : "stable", |
110 | "resources" : { | |
111 | "bugtracker" : { | |
112 | "web" : "https://github.com/cpan-testers/CPAN-Reporter-Smoker/issues" | |
113 | }, | |
114 | "homepage" : "https://github.com/cpan-testers/CPAN-Reporter-Smoker", | |
115 | "repository" : { | |
116 | "type" : "git", | |
117 | "url" : "https://github.com/cpan-testers/CPAN-Reporter-Smoker.git", | |
118 | "web" : "https://github.com/cpan-testers/CPAN-Reporter-Smoker" | |
119 | } | |
120 | }, | |
121 | "version" : "0.29", | |
122 | "x_authority" : "cpan:DAGOLDEN", | |
123 | "x_contributors" : [ | |
124 | "Alexandr Ciornii <alexchorny@gmail.com>", | |
125 | "Christian Walde <walde.christian@googlemail.com>", | |
126 | "gregor herrmann <gregoa@cpan.org>" | |
127 | ], | |
128 | "x_serialization_backend" : "Cpanel::JSON::XS version 3.0225" | |
73 | "version" : "0.30", | |
74 | "x_serialization_backend" : "JSON::PP version 4.04" | |
129 | 75 | } |
130 |
12 | 12 | IO::File: '0' |
13 | 13 | Test::More: '0.62' |
14 | 14 | lib: '0' |
15 | perl: '5.010' | |
16 | 15 | vars: '0' |
17 | 16 | configure_requires: |
18 | 17 | ExtUtils::MakeMaker: '6.17' |
19 | perl: '5.006' | |
20 | dynamic_config: 0 | |
21 | generated_by: 'Dist::Zilla version 6.009, CPAN::Meta::Converter version 2.150010' | |
18 | dynamic_config: 1 | |
19 | generated_by: 'ExtUtils::MakeMaker version 7.44, CPAN::Meta::Converter version 2.150010' | |
22 | 20 | license: apache |
23 | 21 | meta-spec: |
24 | 22 | url: http://module-build.sourceforge.net/META-spec-v1.4.html |
26 | 24 | name: CPAN-Reporter-Smoker |
27 | 25 | no_index: |
28 | 26 | directory: |
29 | - corpus | |
30 | - examples | |
31 | 27 | - t |
32 | - xt | |
33 | package: | |
34 | - DB | |
35 | provides: | |
36 | CPAN::Reporter::Smoker: | |
37 | file: lib/CPAN/Reporter/Smoker.pm | |
38 | version: '0.29' | |
28 | - inc | |
39 | 29 | requires: |
40 | 30 | CPAN: '1.93' |
41 | 31 | CPAN::HandleConfig: '0' |
57 | 47 | perl: '5.010' |
58 | 48 | strict: '0' |
59 | 49 | warnings: '0' |
60 | resources: | |
61 | bugtracker: https://github.com/cpan-testers/CPAN-Reporter-Smoker/issues | |
62 | homepage: https://github.com/cpan-testers/CPAN-Reporter-Smoker | |
63 | repository: https://github.com/cpan-testers/CPAN-Reporter-Smoker.git | |
64 | version: '0.29' | |
65 | x_authority: cpan:DAGOLDEN | |
66 | x_contributors: | |
67 | - 'Alexandr Ciornii <alexchorny@gmail.com>' | |
68 | - 'Christian Walde <walde.christian@googlemail.com>' | |
69 | - 'gregor herrmann <gregoa@cpan.org>' | |
70 | x_serialization_backend: 'YAML::Tiny version 1.69' | |
50 | version: '0.30' | |
51 | x_serialization_backend: 'CPAN::Meta::YAML version 0.018' |
0 | # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.009. | |
1 | 0 | use strict; |
2 | 1 | use warnings; |
3 | 2 | |
49 | 48 | "lib" => 0, |
50 | 49 | "vars" => 0 |
51 | 50 | }, |
52 | "VERSION" => "0.29", | |
51 | "VERSION" => "0.30", | |
53 | 52 | "test" => { |
54 | 53 | "TESTS" => "t/*.t" |
55 | 54 | } |
0 | NAME | |
1 | CPAN::Reporter::Smoker - Turnkey CPAN Testers smoking | |
2 | ||
3 | VERSION | |
4 | version 0.29 | |
5 | ||
6 | SYNOPSIS | |
7 | $ perl -MCPAN::Reporter::Smoker -e start | |
8 | ||
9 | DESCRIPTION | |
10 | Rudimentary smoke tester for CPAN Testers, built upon CPAN::Reporter. | |
11 | Use at your own risk. It requires a recent version of CPAN::Reporter to | |
12 | run. | |
13 | ||
14 | Currently, CPAN::Reporter::Smoker requires zero independent | |
15 | configuration; instead it uses configuration settings from CPAN.pm and | |
16 | CPAN::Reporter. | |
17 | ||
18 | Once started, it retrieves a list of distributions from the configured | |
19 | CPAN mirror and begins testing them in reverse order of upload. It will | |
20 | skip any distribution which has already had a report sent by | |
21 | CPAN::Reporter. | |
22 | ||
23 | Features (or bugs, depending on your point of view): | |
24 | ||
25 | * No configuration needed | |
26 | ||
27 | * Tests each distribution as a separate CPAN process -- each | |
28 | distribution has prerequisites like build_requires satisfied from | |
29 | scratch | |
30 | ||
31 | * Automatically checks for new distributions every twelve hours or as | |
32 | otherwise specified | |
33 | ||
34 | * Continues until interrupted with CTRL-C | |
35 | ||
36 | * Checks CPAN.pm "distroprefs" to see if distributions should be | |
37 | skipped (before handing off to CPAN) | |
38 | ||
39 | Current limitations: | |
40 | ||
41 | * Does not attempt to retest distributions that had reports discarded | |
42 | because of prerequisites that could not be satisfied | |
43 | ||
44 | * Does not test trial version if there is no non-trial version | |
45 | ||
46 | WARNING -- smoke testing is risky | |
47 | Smoke testing will download and run programs that other people have | |
48 | uploaded to CPAN. These programs could do anything to your system, | |
49 | including deleting everything on it. Do not run CPAN::Reporter::Smoker | |
50 | unless you are prepared to take these risks. | |
51 | ||
52 | USAGE | |
53 | "start()" | |
54 | Starts smoke testing using defaults already in CPAN::Config and | |
55 | CPAN::Reporter's .cpanreporter directory. Runs until all distributions | |
56 | are tested or the process is halted with CTRL-C or otherwise killed. | |
57 | ||
58 | "start()" supports several optional arguments: | |
59 | ||
60 | * "clean_cache_after" -- number of distributions that will be tested | |
61 | before checking to see if the CPAN build cache needs to be cleaned | |
62 | up (not including any prerequisites tested). Must be a positive | |
63 | integer. Defaults to 100 | |
64 | ||
65 | * "list" -- if provided, this list of distributions will be tested | |
66 | instead of all of CPAN. May be a reference to an array of | |
67 | distribution names or may be a filename containing one distribution | |
68 | name per line. Distribution names must be of the form | |
69 | 'AUTHOR/Dist-Name-0.00.tar.gz' | |
70 | ||
71 | * "restart_delay" -- number of seconds that must elapse before | |
72 | restarting smoke testing. This will reload indices to search for new | |
73 | distributions and restart testing from the most recent distribution. | |
74 | Must be a positive integer; Defaults to 43200 seconds (12 hours) | |
75 | ||
76 | * "skip_dev_versions" -- if true, unindexed distributions will not be | |
77 | tested. Valid values are 0 or 1. Defaults to 0. | |
78 | ||
79 | * "set_term_title" -- toggle for whether the terminal titlebar will be | |
80 | updated with the distribution being smoke tested and the starting | |
81 | time of the test. Helps determine if a test is hung and which | |
82 | distribution might be responsible. Valid values are 0 or 1. Defaults | |
83 | to 1 | |
84 | ||
85 | * "status_file" -- during testing, the name of the distribution under | |
86 | test and a timestamp are written to this file. The file is removed | |
87 | after the test is complete. This helps identify a problem | |
88 | distribution if testing hangs or crashes the computer. If the | |
89 | argument includes a path, all directories to the file must exist. | |
90 | Defaults to "smoker-status-$$.txt" in File::Spec->tmpdir. | |
91 | ||
92 | * "install" -- toggle for whether the distribution should be installed | |
93 | after successful testing. Can be useful to avoid prerequisite | |
94 | re-building and growing PERL5LIB for the cost of disk space used for | |
95 | installed modules. Valid values are 0 or 1. Defaults to 0 | |
96 | ||
97 | * "reverse" -- toggle the order in which releases are tested. When set | |
98 | to 1, testing starts from the older release not the most recent one | |
99 | (or the last distribution if --list is provided). Valid values are 0 | |
100 | or 1. Defaults to 0 | |
101 | ||
102 | * "random" -- toggle whether to randomize distribution test order. | |
103 | When set to 1, the list of releases is shuffled. Valid values are 0 | |
104 | or 1. Defaults to 0 | |
105 | ||
106 | * "force_trust" -- toggle whether to override CPAN's | |
107 | "trust_test_report_history" option. When set to 1, | |
108 | "trust_test_report_history" is set to 1. When set to 0, | |
109 | "trust_test_report_history" is left alone and whatever the user has | |
110 | configured for their CPAN client is used. Valid values are 0 or 1. | |
111 | Defaults to 0 | |
112 | ||
113 | * "reload_history_period" -- after this period in seconds, history of | |
114 | modules smoked will be reloaded when possible. Default value 1800 | |
115 | seconds (30 minutes). | |
116 | ||
117 | HINTS | |
118 | Selection of distributions to test | |
119 | Only the most recently uploaded developer and normal releases will be | |
120 | tested, and only if the developer release is newer than the regular | |
121 | release indexed by PAUSE. | |
122 | ||
123 | For example, if Foo-Bar-0.01, Foo-Bar-0.02, Foo-Bar-0.03_01 and | |
124 | Foo-Bar-0.03_02 are on CPAN, only Foo-Bar-0.02 and Foo-Bar-0.03_02 will | |
125 | be tested, and in reverse order of when they were uploaded. Once | |
126 | Foo-Bar-0.04 is released and indexed, Foo-Bar-0.03_02 will not longer be | |
127 | tested. | |
128 | ||
129 | To avoid testing script or other tarballs, developer distributions | |
130 | included must have a base distribution name that resembles a | |
131 | distribution tarball already indexed by PAUSE. If the first upload of | |
132 | distribution to PAUSE is a developer release -- Baz-Bam-0.00_01.tar.gz | |
133 | -- it will not be tested as there is no indexed Baz-Bam appearing in | |
134 | CPAN's 02packages.details.txt file. | |
135 | ||
136 | Unauthorized tarballs are treated like developer releases and will be | |
137 | tested if they resemble an indexed distribution and are newer than the | |
138 | indexed tarball. | |
139 | ||
140 | Perl, parrot, kurila, Pugs and similar distributions will not be tested. | |
141 | The skip list is based on CPAN::Mini and matches as follows: | |
142 | ||
143 | qr{(?: | |
144 | /(?:emb|syb|bio)?perl-\d | |
145 | | /(?:parrot|ponie|kurila|Perl6-Pugs)-\d | |
146 | | /perl-?5\.004 | |
147 | | /perl_mlb\.zip | |
148 | )}xi, | |
149 | ||
150 | Bundles and mod_perl distributions will also not be tested, though | |
151 | mod_perl is likely to be requested as a dependency by many modules. See | |
152 | the next section for how to tell CPAN.pm not to test certain | |
153 | dependencies. | |
154 | ||
155 | Skipping additional distributions | |
156 | If certain distributions hang, crash or otherwise cause trouble, you can | |
157 | use CPAN's "distroprefs" system to disable them. If a distribution is | |
158 | disabled, it won't be built or tested. If a distribution's dependency is | |
159 | disabled, a failing test is just discarded. | |
160 | ||
161 | The first step is configuring a directory for distroprefs files: | |
162 | ||
163 | $ cpan | |
164 | cpan> o conf init prefs_dir | |
165 | cpan> o conf commit | |
166 | ||
167 | Next, ensure that either the YAML or YAML::Syck module is installed. | |
168 | (YAML::Syck is faster). Then create a file in the "prefs_dir" directory | |
169 | to hold the list of distributions to disable, e.g. call it | |
170 | "disabled.yml" | |
171 | ||
172 | In that file, you can add blocks of YAML code to disable distributions. | |
173 | The match criteria "distribution" is a regex that matches against the | |
174 | canonical name of a distribution, e.g. "AUTHOR/Foo-Bar-3.14.tar.gz". | |
175 | ||
176 | Here is a sample file to show you some syntax (don't actually use these, | |
177 | though): | |
178 | ||
179 | --- | |
180 | comment: "Tests take too long" | |
181 | match: | |
182 | distribution: "^DAGOLDEN/CPAN-Reporter-\d" | |
183 | disabled: 1 | |
184 | --- | |
185 | comment: "Skip Win32 distributions" | |
186 | match: | |
187 | distribution: "/Win32" | |
188 | disabled: 1 | |
189 | --- | |
190 | comment: "Skip distributions by Andy Lester" | |
191 | match: | |
192 | distribution: "^PETDANCE" | |
193 | disabled: 1 | |
194 | ||
195 | Please note that disabling distributions like this will also disable | |
196 | them for normal, non-smoke usage of CPAN.pm. | |
197 | ||
198 | One distribution that I would recommend either installing up front or | |
199 | else disabling with distroprefs is mod_perl, as it is a common | |
200 | requirement for many Apache:: modules but does not (easily) build and | |
201 | test under automation. | |
202 | ||
203 | --- | |
204 | comment: "Don't build mod_perl if required by some other module" | |
205 | match: | |
206 | distribution: "/mod_perl-\d" | |
207 | disabled: 1 | |
208 | ||
209 | Distroprefs are more powerful than this -- they can be used to automate | |
210 | responses to prompts in distributions, set environment variables, | |
211 | specify additional dependencies and so on. Read the docs for CPAN.pm for | |
212 | more and look in the "distroprefs" directory in the CPAN distribution | |
213 | tarball for examples. | |
214 | ||
215 | Using a local CPAN::Mini mirror | |
216 | Because distributions must be retrieved from a CPAN mirror, the smoker | |
217 | may cause heavy network load and will repetitively download common build | |
218 | prerequisites. | |
219 | ||
220 | An alternative is to use CPAN::Mini to create a local CPAN mirror and to | |
221 | point CPAN's "urllist" to the local mirror. | |
222 | ||
223 | $ cpan | |
224 | cpan> o conf urllist unshift file:///path/to/minicpan | |
225 | cpan> o conf commit | |
226 | ||
227 | However, CPAN::Reporter::Smoker needs the "find-ls.gz" file, which | |
228 | CPAN::Mini does not mirror by default. Add it to a .minicpanrc file in | |
229 | your home directory to include it in your local CPAN mirror. | |
230 | ||
231 | also_mirror: indices/find-ls.gz | |
232 | ||
233 | Note that CPAN::Mini does not mirror developer versions. Therefore, a | |
234 | live, network CPAN Mirror will be needed in the urllist to retrieve | |
235 | these. | |
236 | ||
237 | Note that CPAN requires the LWP module to be installed to use a local | |
238 | CPAN mirror. | |
239 | ||
240 | Alternatively, you might experiment with the alpha-quality release of | |
241 | CPAN::Mini::Devel, which subclasses CPAN::Mini to retrieve developer | |
242 | distributions (and find-ls.gz) using the same logic as | |
243 | CPAN::Reporter::Smoker. | |
244 | ||
245 | Timing out hanging tests | |
246 | CPAN::Reporter (since 1.08) supports a 'command_timeout' configuration | |
247 | option. Set this option in the CPAN::Reporter configuration file to time | |
248 | out tests that hang up or get stuck at a prompt. Set it to a high-value | |
249 | to avoid timing out a lengthy tests that are still running -- 1000 or | |
250 | more seconds is probably enough. | |
251 | ||
252 | Warning -- on Win32, terminating processes via the command_timeout is | |
253 | equivalent to SIGKILL and could cause system instability or later | |
254 | deadlocks | |
255 | ||
256 | This option is still considered experimental. | |
257 | ||
258 | Avoiding repetitive prerequisite testing | |
259 | Because CPAN::Reporter::Smoker satisfies all requirements from scratch, | |
260 | common dependencies (e.g. Class::Accessor) will be unpacked, built and | |
261 | tested repeatedly. | |
262 | ||
263 | As of version 1.92_56, CPAN supports the "trust_test_report_history" | |
264 | config option. When set, CPAN will check the last test report for a | |
265 | distribution. If one is found, the results of that test are used instead | |
266 | of running tests again. | |
267 | ||
268 | $ cpan | |
269 | cpan> o conf init trust_test_report_history | |
270 | cpan> o conf commit | |
271 | ||
272 | Avoiding repetitive prerequisite builds (EXPERIMENTAL) | |
273 | CPAN has a "build_dir_reuse" config option. When set (and if a YAML | |
274 | module is installed and configured), CPAN will attempt to make build | |
275 | directories persistent. This has the potential to save substantial time | |
276 | and space during smoke testing. CPAN::Reporter::Smoker will recognize if | |
277 | this option is set and make adjustments to the test process to keep | |
278 | PERL5LIB from growing uncontrollably as the number of persistent | |
279 | directories increases. | |
280 | ||
281 | NOTE: Support for "build_dir_reuse" is highly experimental. Wait for at | |
282 | least CPAN version 1.92_62 before trying this option. | |
283 | ||
284 | $ cpan | |
285 | cpan> o conf init build_dir_reuse | |
286 | cpan> o conf commit | |
287 | ||
288 | Stopping early if a prerequisite fails | |
289 | Normally, CPAN.pm continues testing a distribution even if a | |
290 | prerequisite fails to build or fails testing. Some distributions may | |
291 | pass their tests even without a listed prerequisite, but most just fail | |
292 | (and CPAN::Reporter discards failures if prerequisites are not met). | |
293 | ||
294 | As of version 1.92_57, CPAN supports the "halt_on_failure" config | |
295 | option. When set, a prerequisite failure stops further processing. | |
296 | ||
297 | $ cpan | |
298 | cpan> o conf init halt_on_failure | |
299 | cpan> o conf commit | |
300 | ||
301 | However, a disadvantage of halting early is that no DISCARD grade is | |
302 | recorded in the history. The next time CPAN::Reporter::Smoker runs, the | |
303 | distribution will be tested again from scratch. It may be better to let | |
304 | all prerequisites finish so the distribution can fail its test and be | |
305 | flagged with DISCARD so it will be skipped in the future. | |
306 | ||
307 | CPAN cache bloat | |
308 | CPAN will use a lot of scratch space to download, build and test | |
309 | modules. Use CPAN's built-in cache management configuration to let it | |
310 | purge the cache periodically if you don't want to do this manually. When | |
311 | configured, the cache will be purged on start and after a certain number | |
312 | of distributions have been tested as determined by the | |
313 | "clean_cache_after" option for the "start()" function. | |
314 | ||
315 | $ cpan | |
316 | cpan> o conf init build_cache scan_cache | |
317 | cpan> o conf commit | |
318 | ||
319 | CPAN verbosity | |
320 | Recent versions of CPAN are verbose by default, but include some lesser | |
321 | known configuration settings to minimize this for untarring | |
322 | distributions and for loading support modules. Setting the verbosity for | |
323 | these to 'none' will minimize some of the clutter to the screen as | |
324 | distributions are tested. | |
325 | ||
326 | $ cpan | |
327 | cpan> o conf init /verbosity/ | |
328 | cpan> o conf commit | |
329 | ||
330 | Saving reports to files instead of sending directly | |
331 | In some cases, such as when smoke testing using a development or | |
332 | prerelease toolchain module like Test-Harness, it may be preferable to | |
333 | save reports to files in a directory for review prior to submitting | |
334 | them. To do this, manually set the "transport" option in your | |
335 | CPAN::Reporter config file to use the Test::Reporter::Transport::File | |
336 | transport. | |
337 | ||
338 | transport=File /path/to/directory | |
339 | ||
340 | After review, send saved reports using Test::Reporter: | |
341 | ||
342 | Test::Reporter->new()->read($filename)->send() | |
343 | ||
344 | ENVIRONMENT | |
345 | Automatically sets the following environment variables to true values | |
346 | while running: | |
347 | ||
348 | * "AUTOMATED_TESTING" -- signal that tests are being run by an | |
349 | automated smoke testing program (i.e. don't expect interactivity) | |
350 | ||
351 | * "PERL_MM_USE_DEFAULT" -- accept ExtUtils::MakeMaker prompt() | |
352 | defaults | |
353 | ||
354 | * "PERL_EXTUTILS_AUTOINSTALL" -- set to '--defaultdeps' for default | |
355 | dependencies | |
356 | ||
357 | The following environment variables, if set, will modify the behavior of | |
358 | CPAN::Reporter::Smoker. Generally, they are only required during the | |
359 | testing of CPAN::Reporter::Smoker | |
360 | ||
361 | * "PERL_CR_SMOKER_RUNONCE" -- if true, "start()" will exit after all | |
362 | distributions are tested instead of sleeping for the "restart_delay" | |
363 | and then continuing | |
364 | ||
365 | * "PERL_CR_SMOKER_SHORTCUT" -- if true, "start()" will process | |
366 | arguments (if any) but will return before starting smoke testing; | |
367 | used for testing argument handling by "start()" | |
368 | ||
369 | BUGS | |
370 | Please report any bugs or feature using the CPAN Request Tracker. Bugs | |
371 | can be submitted through the web interface at | |
372 | <http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter-Smoker> | |
373 | ||
374 | When submitting a bug or request, please include a test-file or a patch | |
375 | to an existing test-file that illustrates the bug or desired feature. | |
376 | ||
377 | SEE ALSO | |
378 | * CPAN | |
379 | ||
380 | * CPAN::Reporter | |
381 | ||
382 | * CPAN::Testers | |
383 | ||
384 | * CPAN::Mini | |
385 | ||
386 | * CPAN::Mini::Devel | |
387 | ||
388 | SUPPORT | |
389 | Bugs / Feature Requests | |
390 | Please report any bugs or feature requests through the issue tracker at | |
391 | <https://github.com/cpan-testers/CPAN-Reporter-Smoker/issues>. You will | |
392 | be notified automatically of any progress on your issue. | |
393 | ||
394 | Source Code | |
395 | This is open source software. The code repository is available for | |
396 | public review and contribution under the terms of the license. | |
397 | ||
398 | <https://github.com/cpan-testers/CPAN-Reporter-Smoker> | |
399 | ||
400 | git clone https://github.com/cpan-testers/CPAN-Reporter-Smoker.git | |
401 | ||
402 | AUTHOR | |
403 | David Golden <dagolden@cpan.org> | |
404 | ||
405 | CONTRIBUTORS | |
406 | * Alexandr Ciornii <alexchorny@gmail.com> | |
407 | ||
408 | * Christian Walde <walde.christian@googlemail.com> | |
409 | ||
410 | * gregor herrmann <gregoa@cpan.org> | |
411 | ||
412 | COPYRIGHT AND LICENSE | |
413 | This software is Copyright (c) 2017 by David Golden. | |
414 | ||
415 | This is free software, licensed under: | |
416 | ||
417 | The Apache License, Version 2.0, January 2004 | |
418 |
0 | ## HOW TO CONTRIBUTE | |
1 | ||
2 | Thank you for considering contributing to this distribution. This file | |
3 | contains instructions that will help you work with the source code. | |
4 | ||
5 | The distribution is managed with Dist::Zilla. This means that many of the | |
6 | usual files you might expect are not in the repository, but are generated at | |
7 | release time, as is much of the documentation. Some generated files are | |
8 | kept in the repository as a convenience (e.g. Makefile.PL or cpanfile). | |
9 | ||
10 | Generally, **you do not need Dist::Zilla to contribute patches**. You do need | |
11 | Dist::Zilla to create a tarball. See below for guidance. | |
12 | ||
13 | ### Getting dependencies | |
14 | ||
15 | If you have App::cpanminus 1.6 or later installed, you can use `cpanm` to | |
16 | satisfy dependencies like this: | |
17 | ||
18 | $ cpanm --installdeps . | |
19 | ||
20 | Otherwise, look for either a `Makefile.PL` or `cpanfile` file for | |
21 | a list of dependencies to satisfy. | |
22 | ||
23 | ### Running tests | |
24 | ||
25 | You can run tests directly using the `prove` tool: | |
26 | ||
27 | $ prove -l | |
28 | $ prove -lv t/some_test_file.t | |
29 | ||
30 | For most of my distributions, `prove` is entirely sufficient for you to test any | |
31 | patches you have. I use `prove` for 99% of my testing during development. | |
32 | ||
33 | ### Code style and tidying | |
34 | ||
35 | Please try to match any existing coding style. If there is a `.perltidyrc` | |
36 | file, please install Perl::Tidy and use perltidy before submitting patches. | |
37 | ||
38 | If there is a `tidyall.ini` file, you can also install Code::TidyAll and run | |
39 | `tidyall` on a file or `tidyall -a` to tidy all files. | |
40 | ||
41 | ### Patching documentation | |
42 | ||
43 | Much of the documentation Pod is generated at release time. Some is | |
44 | generated boilerplate; other documentation is built from pseudo-POD | |
45 | directives in the source like C<=method> or C<=func>. | |
46 | ||
47 | If you would like to submit a documentation edit, please limit yourself to | |
48 | the documentation you see. | |
49 | ||
50 | If you see typos or documentation issues in the generated docs, please | |
51 | email or open a bug ticket instead of patching. | |
52 | ||
53 | ### Where to send patches and pull requests | |
54 | ||
55 | If you found this distribution on Github, sending a pull-request is the | |
56 | best way to contribute. | |
57 | ||
58 | If a pull-request isn't possible, a bug ticket with a patch file is the | |
59 | next best option. | |
60 | ||
61 | As a last resort, an email to the author(s) is acceptable. | |
62 | ||
63 | ## Installing and using Dist::Zilla | |
64 | ||
65 | Dist::Zilla is not required for contributing, but if you'd like to learn | |
66 | more, this section will get you up to speed. | |
67 | ||
68 | Dist::Zilla is a very powerful authoring tool, optimized for maintaining a | |
69 | large number of distributions with a high degree of automation, but it has a | |
70 | large dependency chain, a bit of a learning curve and requires a number of | |
71 | author-specific plugins. | |
72 | ||
73 | To install it from CPAN, I recommend one of the following approaches for | |
74 | the quickest installation: | |
75 | ||
76 | # using CPAN.pm, but bypassing non-functional pod tests | |
77 | $ cpan TAP::Harness::Restricted | |
78 | $ PERL_MM_USE_DEFAULT=1 HARNESS_CLASS=TAP::Harness::Restricted cpan Dist::Zilla | |
79 | ||
80 | # using cpanm, bypassing *all* tests | |
81 | $ cpanm -n Dist::Zilla | |
82 | ||
83 | In either case, it's probably going to take about 10 minutes. Go for a walk, | |
84 | go get a cup of your favorite beverage, take a bathroom break, or whatever. | |
85 | When you get back, Dist::Zilla should be ready for you. | |
86 | ||
87 | Then you need to install any plugins specific to this distribution: | |
88 | ||
89 | $ cpan `dzil authordeps` | |
90 | $ dzil authordeps | cpanm | |
91 | ||
92 | Once installed, here are some dzil commands you might try: | |
93 | ||
94 | $ dzil build | |
95 | $ dzil test | |
96 | $ dzil xtest | |
97 | ||
98 | You can learn more about Dist::Zilla at http://dzil.org/ | |
99 |
0 | requires "CPAN" => "1.93"; | |
1 | requires "CPAN::HandleConfig" => "0"; | |
2 | requires "CPAN::Reporter::History" => "1.1702"; | |
3 | requires "CPAN::Tarzip" => "0"; | |
4 | requires "Carp" => "0"; | |
5 | requires "Compress::Zlib" => "1.2"; | |
6 | requires "Exporter" => "0"; | |
7 | requires "ExtUtils::MakeMaker" => "6.46"; | |
8 | requires "Fcntl" => "0"; | |
9 | requires "File::Basename" => "0"; | |
10 | requires "File::Spec" => "3.27"; | |
11 | requires "File::Temp" => "0.20"; | |
12 | requires "List::Util" => "1.03"; | |
13 | requires "Module::Build" => "0.30"; | |
14 | requires "Probe::Perl" => "0.01"; | |
15 | requires "Term::Title" => "0.01"; | |
16 | requires "Test::Reporter" => "1.58"; | |
17 | requires "perl" => "5.010"; | |
18 | requires "strict" => "0"; | |
19 | requires "warnings" => "0"; | |
20 | ||
21 | on 'test' => sub { | |
22 | requires "CPAN::Checksums" => "0"; | |
23 | requires "Cwd" => "3.27"; | |
24 | requires "ExtUtils::MakeMaker" => "6.46"; | |
25 | requires "File::Find" => "0"; | |
26 | requires "File::Path" => "0"; | |
27 | requires "File::Spec" => "3.27"; | |
28 | requires "IO::CaptureOutput" => "1.06"; | |
29 | requires "IO::File" => "0"; | |
30 | requires "Test::More" => "0.62"; | |
31 | requires "lib" => "0"; | |
32 | requires "perl" => "5.010"; | |
33 | requires "vars" => "0"; | |
34 | }; | |
35 | ||
36 | on 'test' => sub { | |
37 | recommends "CPAN::Meta" => "2.120900"; | |
38 | }; | |
39 | ||
40 | on 'configure' => sub { | |
41 | requires "ExtUtils::MakeMaker" => "6.17"; | |
42 | requires "perl" => "5.006"; | |
43 | }; | |
44 | ||
45 | on 'develop' => sub { | |
46 | requires "Dist::Zilla" => "5"; | |
47 | requires "Dist::Zilla::Plugin::Encoding" => "0"; | |
48 | requires "Dist::Zilla::Plugin::Prereqs" => "0"; | |
49 | requires "Dist::Zilla::Plugin::RemovePrereqs" => "0"; | |
50 | requires "Dist::Zilla::PluginBundle::DAGOLDEN" => "0.072"; | |
51 | requires "English" => "0"; | |
52 | requires "File::Spec" => "0"; | |
53 | requires "File::Temp" => "0"; | |
54 | requires "IO::Handle" => "0"; | |
55 | requires "IPC::Open3" => "0"; | |
56 | requires "Pod::Coverage::TrustPod" => "0"; | |
57 | requires "Pod::Wordlist" => "0"; | |
58 | requires "Software::License::Apache_2_0" => "0"; | |
59 | requires "Test::CPAN::Meta" => "0"; | |
60 | requires "Test::MinimumVersion" => "0"; | |
61 | requires "Test::More" => "0"; | |
62 | requires "Test::Pod" => "1.41"; | |
63 | requires "Test::Pod::Coverage" => "1.08"; | |
64 | requires "Test::Portability::Files" => "0"; | |
65 | requires "Test::Spelling" => "0.12"; | |
66 | requires "Test::Version" => "1"; | |
67 | requires "blib" => "1.01"; | |
68 | }; |
0 | libcpan-reporter-smoker-perl (0.29-2) UNRELEASED; urgency=medium | |
0 | libcpan-reporter-smoker-perl (0.29+git20170415.1.aab3079-1) UNRELEASED; urgency=medium | |
1 | 1 | |
2 | 2 | [ Damyan Ivanov ] |
3 | 3 | * declare conformance with Policy 4.1.3 (no changes needed) |
14 | 14 | * Set upstream metadata fields: Bug-Submit. |
15 | 15 | * Remove obsolete fields Contact, Name from debian/upstream/metadata |
16 | 16 | (already present in machine-readable debian/copyright). |
17 | * New upstream snapshot. | |
17 | 18 | |
18 | -- Damyan Ivanov <dmn@debian.org> Sun, 03 Dec 2017 22:43:23 +0000 | |
19 | -- Damyan Ivanov <dmn@debian.org> Thu, 23 Sep 2021 12:27:12 -0000 | |
19 | 20 | |
20 | 21 | libcpan-reporter-smoker-perl (0.29-1) unstable; urgency=medium |
21 | 22 |
2 | 2 | use warnings; |
3 | 3 | package CPAN::Reporter::Smoker; |
4 | 4 | |
5 | our $VERSION = '0.29'; | |
5 | our $VERSION = '0.30'; | |
6 | 6 | |
7 | 7 | use Carp; |
8 | 8 | use Config; |
549 | 549 | |
550 | 550 | __END__ |
551 | 551 | |
552 | =pod | |
553 | ||
554 | =encoding UTF-8 | |
555 | ||
556 | =head1 NAME | |
557 | ||
558 | CPAN::Reporter::Smoker - Turnkey CPAN Testers smoking | |
559 | ||
560 | =head1 VERSION | |
561 | ||
562 | version 0.29 | |
563 | ||
564 | =head1 SYNOPSIS | |
565 | ||
566 | $ perl -MCPAN::Reporter::Smoker -e start | |
567 | ||
568 | =head1 DESCRIPTION | |
569 | ||
570 | Rudimentary smoke tester for CPAN Testers, built upon L<CPAN::Reporter>. Use | |
552 | =begin wikidoc | |
553 | ||
554 | = SYNOPSIS | |
555 | ||
556 | $ perl -MCPAN::Reporter::Smoker -e start | |
557 | ||
558 | = DESCRIPTION | |
559 | ||
560 | Rudimentary smoke tester for CPAN Testers, built upon [CPAN::Reporter]. Use | |
571 | 561 | at your own risk. It requires a recent version of CPAN::Reporter to run. |
572 | 562 | |
573 | 563 | Currently, CPAN::Reporter::Smoker requires zero independent configuration; |
579 | 569 | |
580 | 570 | Features (or bugs, depending on your point of view): |
581 | 571 | |
582 | =over | |
583 | ||
584 | =item * | |
585 | ||
586 | No configuration needed | |
587 | ||
588 | =item * | |
589 | ||
590 | Tests each distribution as a separate CPAN process -- each distribution | |
572 | * No configuration needed | |
573 | * Tests each distribution as a separate CPAN process -- each distribution | |
591 | 574 | has prerequisites like build_requires satisfied from scratch |
592 | ||
593 | =item * | |
594 | ||
595 | Automatically checks for new distributions every twelve hours or as | |
575 | * Automatically checks for new distributions every twelve hours or as | |
596 | 576 | otherwise specified |
597 | ||
598 | =item * | |
599 | ||
600 | Continues until interrupted with CTRL-C | |
601 | ||
602 | =item * | |
603 | ||
604 | Checks CPAN.pm "distroprefs" to see if distributions should be skipped | |
577 | * Continues until interrupted with CTRL-C | |
578 | * Checks CPAN.pm "distroprefs" to see if distributions should be skipped | |
605 | 579 | (before handing off to CPAN) |
606 | 580 | |
607 | =back | |
608 | ||
609 | 581 | Current limitations: |
610 | 582 | |
611 | =over | |
612 | ||
613 | =item * | |
614 | ||
615 | Does not attempt to retest distributions that had reports discarded because | |
583 | * Does not attempt to retest distributions that had reports discarded because | |
616 | 584 | of prerequisites that could not be satisfied |
617 | ||
618 | =item * | |
619 | ||
620 | Does not test trial version if there is no non-trial version | |
621 | ||
622 | =back | |
623 | ||
624 | =head2 WARNING -- smoke testing is risky | |
585 | * Does not test trial version if there is no non-trial version | |
586 | ||
587 | == WARNING -- smoke testing is risky | |
625 | 588 | |
626 | 589 | Smoke testing will download and run programs that other people have uploaded to |
627 | CPAN. These programs could do B<anything> to your system, including deleting | |
590 | CPAN. These programs could do *anything* to your system, including deleting | |
628 | 591 | everything on it. Do not run CPAN::Reporter::Smoker unless you are prepared to |
629 | 592 | take these risks. |
630 | 593 | |
631 | =head1 USAGE | |
632 | ||
633 | =head2 C<<< start() >>> | |
594 | = USAGE | |
595 | ||
596 | == {start()} | |
634 | 597 | |
635 | 598 | Starts smoke testing using defaults already in CPAN::Config and |
636 | 599 | CPAN::Reporter's .cpanreporter directory. Runs until all distributions are |
637 | 600 | tested or the process is halted with CTRL-C or otherwise killed. |
638 | 601 | |
639 | C<<< start() >>> supports several optional arguments: | |
640 | ||
641 | =over | |
642 | ||
643 | =item * | |
644 | ||
645 | C<<< clean_cache_after >>> -- number of distributions that will be tested | |
602 | {start()} supports several optional arguments: | |
603 | ||
604 | * {clean_cache_after} -- number of distributions that will be tested | |
646 | 605 | before checking to see if the CPAN build cache needs to be cleaned up |
647 | 606 | (not including any prerequisites tested). Must be a positive integer. |
648 | 607 | Defaults to 100 |
649 | ||
650 | =item * | |
651 | ||
652 | C<<< list >>> -- if provided, this list of distributions will be tested instead | |
608 | * {list} -- if provided, this list of distributions will be tested instead | |
653 | 609 | of all of CPAN. May be a reference to an array of distribution names or may |
654 | 610 | be a filename containing one distribution name per line. Distribution names |
655 | must be of the form 'AUTHORE<sol>Dist-Name-0.00.tar.gz' | |
656 | ||
657 | =item * | |
658 | ||
659 | C<<< restart_delay >>> -- number of seconds that must elapse before restarting | |
611 | must be of the form 'AUTHOR/Dist-Name-0.00.tar.gz' | |
612 | * {restart_delay} -- number of seconds that must elapse before restarting | |
660 | 613 | smoke testing. This will reload indices to search for new distributions |
661 | 614 | and restart testing from the most recent distribution. Must be a positive |
662 | 615 | integer; Defaults to 43200 seconds (12 hours) |
663 | ||
664 | =item * | |
665 | ||
666 | C<<< skip_dev_versions >>> -- if true, unindexed distributions will not be tested. | |
616 | * {skip_dev_versions} -- if true, unindexed distributions will not be tested. | |
667 | 617 | Valid values are 0 or 1. Defaults to 0. |
668 | ||
669 | =item * | |
670 | ||
671 | C<<< set_term_title >>> -- toggle for whether the terminal titlebar will be | |
618 | * {set_term_title} -- toggle for whether the terminal titlebar will be | |
672 | 619 | updated with the distribution being smoke tested and the starting time |
673 | 620 | of the test. Helps determine if a test is hung and which distribution |
674 | 621 | might be responsible. Valid values are 0 or 1. Defaults to 1 |
675 | ||
676 | =item * | |
677 | ||
678 | C<<< status_file >>> -- during testing, the name of the distribution under test | |
622 | * {status_file} -- during testing, the name of the distribution under test | |
679 | 623 | and a timestamp are written to this file. The file is removed after the |
680 | 624 | test is complete. This helps identify a problem distribution if testing |
681 | 625 | hangs or crashes the computer. If the argument includes a path, all |
682 | directories to the file must exist. Defaults to C<<< smoker-status-$$.txt >>> | |
683 | in File::Spec-E<gt>tmpdir. | |
684 | ||
685 | =item * | |
686 | ||
687 | C<<< install >>> -- toggle for whether the distribution should be installed | |
626 | directories to the file must exist. Defaults to {smoker-status-$$.txt} | |
627 | in File::Spec->tmpdir. | |
628 | * {install} -- toggle for whether the distribution should be installed | |
688 | 629 | after successful testing. Can be useful to avoid prerequisite re-building |
689 | 630 | and growing PERL5LIB for the cost of disk space used for installed |
690 | 631 | modules. Valid values are 0 or 1. Defaults to 0 |
691 | ||
692 | =item * | |
693 | ||
694 | C<<< reverse >>> -- toggle the order in which releases are tested. When set to 1, | |
632 | * {reverse} -- toggle the order in which releases are tested. When set to 1, | |
695 | 633 | testing starts from the older release not the most recent one (or the last |
696 | 634 | distribution if --list is provided). Valid values are 0 or 1. Defaults to 0 |
697 | ||
698 | =item * | |
699 | ||
700 | C<<< random >>> -- toggle whether to randomize distribution test order. When set to 1, | |
635 | * {random} -- toggle whether to randomize distribution test order. When set to 1, | |
701 | 636 | the list of releases is shuffled. Valid values are 0 or 1. Defaults to 0 |
702 | ||
703 | =item * | |
704 | ||
705 | C<<< force_trust >>> -- toggle whether to override CPAN's | |
706 | C<<< trust_test_report_history >>> option. When set to 1, C<<< trust_test_report_history >>> | |
707 | is set to 1. When set to 0, C<<< trust_test_report_history >>> is left alone and | |
637 | * {force_trust} -- toggle whether to override CPAN's | |
638 | {trust_test_report_history} option. When set to 1, {trust_test_report_history} | |
639 | is set to 1. When set to 0, {trust_test_report_history} is left alone and | |
708 | 640 | whatever the user has configured for their CPAN client is used. |
709 | 641 | Valid values are 0 or 1. Defaults to 0 |
710 | ||
711 | =item * | |
712 | ||
713 | C<<< reload_history_period >>> -- after this period in seconds, history of modules | |
642 | * {reload_history_period} -- after this period in seconds, history of modules | |
714 | 643 | smoked will be reloaded when possible. |
715 | 644 | Default value 1800 seconds (30 minutes). |
716 | 645 | |
717 | =back | |
718 | ||
719 | =head1 HINTS | |
720 | ||
721 | =head2 Selection of distributions to test | |
646 | = HINTS | |
647 | ||
648 | == Selection of distributions to test | |
722 | 649 | |
723 | 650 | Only the most recently uploaded developer and normal releases will be |
724 | 651 | tested, and only if the developer release is newer than the regular release |
742 | 669 | Perl, parrot, kurila, Pugs and similar distributions will not be tested. The |
743 | 670 | skip list is based on CPAN::Mini and matches as follows: |
744 | 671 | |
745 | qr{(?: | |
746 | /(?:emb|syb|bio)?perl-\d | |
747 | | /(?:parrot|ponie|kurila|Perl6-Pugs)-\d | |
748 | | /perl-?5\.004 | |
749 | | /perl_mlb\.zip | |
750 | )}xi, | |
672 | qr{(?: | |
673 | /(?:emb|syb|bio)?perl-\d | |
674 | | /(?:parrot|ponie|kurila|Perl6-Pugs)-\d | |
675 | | /perl-?5\.004 | |
676 | | /perl_mlb\.zip | |
677 | )}xi, | |
751 | 678 | |
752 | 679 | Bundles and mod_perl distributions will also not be tested, though mod_perl is |
753 | 680 | likely to be requested as a dependency by many modules. See the next section |
754 | 681 | for how to tell CPAN.pm not to test certain dependencies. |
755 | 682 | |
756 | =head2 Skipping additional distributions | |
683 | == Skipping additional distributions | |
757 | 684 | |
758 | 685 | If certain distributions hang, crash or otherwise cause trouble, you can use |
759 | 686 | CPAN's "distroprefs" system to disable them. If a distribution is disabled, it |
762 | 689 | |
763 | 690 | The first step is configuring a directory for distroprefs files: |
764 | 691 | |
765 | $ cpan | |
766 | cpan> o conf init prefs_dir | |
767 | cpan> o conf commit | |
768 | ||
769 | Next, ensure that either the L<YAML> or L<YAML::Syck> module is installed. | |
770 | (YAML::Syck is faster). Then create a file in the C<<< prefs_dir >>> directory | |
771 | to hold the list of distributions to disable, e.g. call it C<<< disabled.yml >>> | |
692 | $ cpan | |
693 | cpan> o conf init prefs_dir | |
694 | cpan> o conf commit | |
695 | ||
696 | Next, ensure that either the [YAML] or [YAML::Syck] module is installed. | |
697 | (YAML::Syck is faster). Then create a file in the {prefs_dir} directory | |
698 | to hold the list of distributions to disable, e.g. call it {disabled.yml} | |
772 | 699 | |
773 | 700 | In that file, you can add blocks of YAML code to disable distributions. The |
774 | 701 | match criteria "distribution" is a regex that matches against the canonical |
775 | name of a distribution, e.g. C<<< AUTHOR/Foo-Bar-3.14.tar.gz >>>. | |
702 | name of a distribution, e.g. {AUTHOR/Foo-Bar-3.14.tar.gz}. | |
776 | 703 | |
777 | 704 | Here is a sample file to show you some syntax (don't actually use these, |
778 | 705 | though): |
779 | 706 | |
780 | --- | |
781 | comment: "Tests take too long" | |
782 | match: | |
783 | distribution: "^DAGOLDEN/CPAN-Reporter-\d" | |
784 | disabled: 1 | |
785 | --- | |
786 | comment: "Skip Win32 distributions" | |
787 | match: | |
788 | distribution: "/Win32" | |
789 | disabled: 1 | |
790 | --- | |
791 | comment: "Skip distributions by Andy Lester" | |
792 | match: | |
793 | distribution: "^PETDANCE" | |
794 | disabled: 1 | |
707 | --- | |
708 | comment: "Tests take too long" | |
709 | match: | |
710 | distribution: "^DAGOLDEN/CPAN-Reporter-\d" | |
711 | disabled: 1 | |
712 | --- | |
713 | comment: "Skip Win32 distributions" | |
714 | match: | |
715 | distribution: "/Win32" | |
716 | disabled: 1 | |
717 | --- | |
718 | comment: "Skip distributions by Andy Lester" | |
719 | match: | |
720 | distribution: "^PETDANCE" | |
721 | disabled: 1 | |
795 | 722 | |
796 | 723 | Please note that disabling distributions like this will also disable them |
797 | 724 | for normal, non-smoke usage of CPAN.pm. |
800 | 727 | disabling with distroprefs is mod_perl, as it is a common requirement for many |
801 | 728 | Apache:: modules but does not (easily) build and test under automation. |
802 | 729 | |
803 | --- | |
804 | comment: "Don't build mod_perl if required by some other module" | |
805 | match: | |
806 | distribution: "/mod_perl-\d" | |
807 | disabled: 1 | |
730 | --- | |
731 | comment: "Don't build mod_perl if required by some other module" | |
732 | match: | |
733 | distribution: "/mod_perl-\d" | |
734 | disabled: 1 | |
808 | 735 | |
809 | 736 | Distroprefs are more powerful than this -- they can be used to automate |
810 | 737 | responses to prompts in distributions, set environment variables, specify |
812 | 739 | look in the "distroprefs" directory in the CPAN distribution tarball for |
813 | 740 | examples. |
814 | 741 | |
815 | =head2 Using a local CPAN::Mini mirror | |
742 | == Using a local CPAN::Mini mirror | |
816 | 743 | |
817 | 744 | Because distributions must be retrieved from a CPAN mirror, the smoker may |
818 | 745 | cause heavy network load and will repetitively download common build |
819 | 746 | prerequisites. |
820 | 747 | |
821 | An alternative is to use L<CPAN::Mini> to create a local CPAN mirror and to | |
822 | point CPAN's C<<< urllist >>> to the local mirror. | |
823 | ||
824 | $ cpan | |
825 | cpan> o conf urllist unshift file:///path/to/minicpan | |
826 | cpan> o conf commit | |
827 | ||
828 | However, CPAN::Reporter::Smoker needs the C<<< find-ls.gz >>> file, which | |
748 | An alternative is to use [CPAN::Mini] to create a local CPAN mirror and to | |
749 | point CPAN's {urllist} to the local mirror. | |
750 | ||
751 | $ cpan | |
752 | cpan> o conf urllist unshift file:///path/to/minicpan | |
753 | cpan> o conf commit | |
754 | ||
755 | However, CPAN::Reporter::Smoker needs the {find-ls.gz} file, which | |
829 | 756 | CPAN::Mini does not mirror by default. Add it to a .minicpanrc file in your |
830 | 757 | home directory to include it in your local CPAN mirror. |
831 | 758 | |
832 | also_mirror: indices/find-ls.gz | |
759 | also_mirror: indices/find-ls.gz | |
833 | 760 | |
834 | 761 | Note that CPAN::Mini does not mirror developer versions. Therefore, a |
835 | 762 | live, network CPAN Mirror will be needed in the urllist to retrieve these. |
838 | 765 | mirror. |
839 | 766 | |
840 | 767 | Alternatively, you might experiment with the alpha-quality release of |
841 | L<CPAN::Mini::Devel>, which subclasses CPAN::Mini to retrieve developer | |
768 | [CPAN::Mini::Devel], which subclasses CPAN::Mini to retrieve developer | |
842 | 769 | distributions (and find-ls.gz) using the same logic as |
843 | 770 | CPAN::Reporter::Smoker. |
844 | 771 | |
845 | =head2 Timing out hanging tests | |
772 | == Timing out hanging tests | |
846 | 773 | |
847 | 774 | CPAN::Reporter (since 1.08) supports a 'command_timeout' configuration option. |
848 | 775 | Set this option in the CPAN::Reporter configuration file to time out tests that |
855 | 782 | |
856 | 783 | This option is still considered experimental. |
857 | 784 | |
858 | =head2 Avoiding repetitive prerequisite testing | |
785 | == Avoiding repetitive prerequisite testing | |
859 | 786 | |
860 | 787 | Because CPAN::Reporter::Smoker satisfies all requirements from scratch, common |
861 | 788 | dependencies (e.g. Class::Accessor) will be unpacked, built and tested |
862 | 789 | repeatedly. |
863 | 790 | |
864 | As of version 1.92_56, CPAN supports the C<<< trust_test_report_history >>> config | |
791 | As of version 1.92_56, CPAN supports the {trust_test_report_history} config | |
865 | 792 | option. When set, CPAN will check the last test report for a distribution. |
866 | 793 | If one is found, the results of that test are used instead of running tests |
867 | 794 | again. |
868 | 795 | |
869 | $ cpan | |
870 | cpan> o conf init trust_test_report_history | |
871 | cpan> o conf commit | |
872 | ||
873 | =head2 Avoiding repetitive prerequisite builds (EXPERIMENTAL) | |
874 | ||
875 | CPAN has a C<<< build_dir_reuse >>> config option. When set (and if a YAML module is | |
796 | $ cpan | |
797 | cpan> o conf init trust_test_report_history | |
798 | cpan> o conf commit | |
799 | ||
800 | == Avoiding repetitive prerequisite builds (EXPERIMENTAL) | |
801 | ||
802 | CPAN has a {build_dir_reuse} config option. When set (and if a YAML module is | |
876 | 803 | installed and configured), CPAN will attempt to make build directories |
877 | 804 | persistent. This has the potential to save substantial time and space during |
878 | 805 | smoke testing. CPAN::Reporter::Smoker will recognize if this option is set |
879 | 806 | and make adjustments to the test process to keep PERL5LIB from growing |
880 | 807 | uncontrollably as the number of persistent directories increases. |
881 | 808 | |
882 | B<NOTE:> Support for C<<< build_dir_reuse >>> is highly experimental. Wait for at least | |
809 | *NOTE:* Support for {build_dir_reuse} is highly experimental. Wait for at least | |
883 | 810 | CPAN version 1.92_62 before trying this option. |
884 | 811 | |
885 | $ cpan | |
886 | cpan> o conf init build_dir_reuse | |
887 | cpan> o conf commit | |
888 | ||
889 | =head2 Stopping early if a prerequisite fails | |
812 | $ cpan | |
813 | cpan> o conf init build_dir_reuse | |
814 | cpan> o conf commit | |
815 | ||
816 | == Stopping early if a prerequisite fails | |
890 | 817 | |
891 | 818 | Normally, CPAN.pm continues testing a distribution even if a prerequisite fails |
892 | 819 | to build or fails testing. Some distributions may pass their tests even |
893 | 820 | without a listed prerequisite, but most just fail (and CPAN::Reporter discards |
894 | 821 | failures if prerequisites are not met). |
895 | 822 | |
896 | As of version 1.92_57, CPAN supports the C<<< halt_on_failure >>> config option. | |
823 | As of version 1.92_57, CPAN supports the {halt_on_failure} config option. | |
897 | 824 | When set, a prerequisite failure stops further processing. |
898 | 825 | |
899 | $ cpan | |
900 | cpan> o conf init halt_on_failure | |
901 | cpan> o conf commit | |
826 | $ cpan | |
827 | cpan> o conf init halt_on_failure | |
828 | cpan> o conf commit | |
902 | 829 | |
903 | 830 | However, a disadvantage of halting early is that no DISCARD grade is |
904 | 831 | recorded in the history. The next time CPAN::Reporter::Smoker runs, the |
906 | 833 | prerequisites finish so the distribution can fail its test and be flagged |
907 | 834 | with DISCARD so it will be skipped in the future. |
908 | 835 | |
909 | =head2 CPAN cache bloat | |
836 | == CPAN cache bloat | |
910 | 837 | |
911 | 838 | CPAN will use a lot of scratch space to download, build and test modules. Use |
912 | 839 | CPAN's built-in cache management configuration to let it purge the cache |
913 | 840 | periodically if you don't want to do this manually. When configured, the cache |
914 | 841 | will be purged on start and after a certain number of distributions have |
915 | been tested as determined by the C<<< clean_cache_after >>> option for the | |
916 | C<<< start() >>> function. | |
917 | ||
918 | $ cpan | |
919 | cpan> o conf init build_cache scan_cache | |
920 | cpan> o conf commit | |
921 | ||
922 | =head2 CPAN verbosity | |
842 | been tested as determined by the {clean_cache_after} option for the | |
843 | {start()} function. | |
844 | ||
845 | $ cpan | |
846 | cpan> o conf init build_cache scan_cache | |
847 | cpan> o conf commit | |
848 | ||
849 | == CPAN verbosity | |
923 | 850 | |
924 | 851 | Recent versions of CPAN are verbose by default, but include some lesser |
925 | 852 | known configuration settings to minimize this for untarring distributions and |
926 | 853 | for loading support modules. Setting the verbosity for these to 'none' will |
927 | 854 | minimize some of the clutter to the screen as distributions are tested. |
928 | 855 | |
929 | $ cpan | |
930 | cpan> o conf init /verbosity/ | |
931 | cpan> o conf commit | |
932 | ||
933 | =head2 Saving reports to files instead of sending directly | |
856 | $ cpan | |
857 | cpan> o conf init /verbosity/ | |
858 | cpan> o conf commit | |
859 | ||
860 | == Saving reports to files instead of sending directly | |
934 | 861 | |
935 | 862 | In some cases, such as when smoke testing using a development or prerelease |
936 | 863 | toolchain module like Test-Harness, it may be preferable to save reports to |
937 | 864 | files in a directory for review prior to submitting them. To do this, |
938 | manually set the C<<< transport >>> option in your CPAN::Reporter config file to use | |
939 | the L<Test::Reporter::Transport::File> transport. | |
940 | ||
941 | transport=File /path/to/directory | |
865 | manually set the {transport} option in your CPAN::Reporter config file to use | |
866 | the [Test::Reporter::Transport::File] transport. | |
867 | ||
868 | transport=File /path/to/directory | |
942 | 869 | |
943 | 870 | After review, send saved reports using Test::Reporter: |
944 | 871 | |
945 | Test::Reporter->new()->read($filename)->send() | |
946 | ||
947 | =head1 ENVIRONMENT | |
872 | Test::Reporter->new()->read($filename)->send() | |
873 | ||
874 | = ENVIRONMENT | |
948 | 875 | |
949 | 876 | Automatically sets the following environment variables to true values |
950 | 877 | while running: |
951 | 878 | |
952 | =over | |
953 | ||
954 | =item * | |
955 | ||
956 | C<<< AUTOMATED_TESTING >>> -- signal that tests are being run by an automated | |
879 | * {AUTOMATED_TESTING} -- signal that tests are being run by an automated | |
957 | 880 | smoke testing program (i.e. don't expect interactivity) |
958 | ||
959 | =item * | |
960 | ||
961 | C<<< PERL_MM_USE_DEFAULT >>> -- accept L<ExtUtils::MakeMaker> prompt() defaults | |
962 | ||
963 | =item * | |
964 | ||
965 | C<<< PERL_EXTUTILS_AUTOINSTALL >>> -- set to '--defaultdeps' for default | |
881 | * {PERL_MM_USE_DEFAULT} -- accept [ExtUtils::MakeMaker] prompt() defaults | |
882 | * {PERL_EXTUTILS_AUTOINSTALL} -- set to '--defaultdeps' for default | |
966 | 883 | dependencies |
967 | ||
968 | =back | |
969 | 884 | |
970 | 885 | The following environment variables, if set, will modify the behavior of |
971 | 886 | CPAN::Reporter::Smoker. Generally, they are only required during the |
972 | 887 | testing of CPAN::Reporter::Smoker |
973 | 888 | |
974 | =over | |
975 | ||
976 | =item * | |
977 | ||
978 | C<<< PERL_CR_SMOKER_RUNONCE >>> -- if true, C<<< start() >>> will exit after all | |
979 | distributions are tested instead of sleeping for the C<<< restart_delay >>> | |
889 | * {PERL_CR_SMOKER_RUNONCE} -- if true, {start()} will exit after all | |
890 | distributions are tested instead of sleeping for the {restart_delay} | |
980 | 891 | and then continuing |
981 | ||
982 | =item * | |
983 | ||
984 | C<<< PERL_CR_SMOKER_SHORTCUT >>> -- if true, C<<< start() >>> will process arguments (if | |
892 | * {PERL_CR_SMOKER_SHORTCUT} -- if true, {start()} will process arguments (if | |
985 | 893 | any) but will return before starting smoke testing; used for testing argument |
986 | handling by C<<< start() >>> | |
987 | ||
988 | =back | |
989 | ||
990 | =head1 BUGS | |
894 | handling by {start()} | |
895 | ||
896 | = BUGS | |
991 | 897 | |
992 | 898 | Please report any bugs or feature using the CPAN Request Tracker. |
993 | 899 | Bugs can be submitted through the web interface at |
994 | L<http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter-Smoker> | |
900 | [http://rt.cpan.org/Dist/Display.html?Queue=CPAN-Reporter-Smoker] | |
995 | 901 | |
996 | 902 | When submitting a bug or request, please include a test-file or a patch to an |
997 | 903 | existing test-file that illustrates the bug or desired feature. |
998 | 904 | |
999 | =head1 SEE ALSO | |
1000 | ||
1001 | =over | |
1002 | ||
1003 | =item * | |
1004 | ||
1005 | L<CPAN> | |
1006 | ||
1007 | =item * | |
1008 | ||
1009 | L<CPAN::Reporter> | |
1010 | ||
1011 | =item * | |
1012 | ||
1013 | L<CPAN::Testers> | |
1014 | ||
1015 | =item * | |
1016 | ||
1017 | L<CPAN::Mini> | |
1018 | ||
1019 | =item * | |
1020 | ||
1021 | L<CPAN::Mini::Devel> | |
1022 | ||
1023 | =back | |
1024 | ||
1025 | =for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan | |
1026 | ||
1027 | =head1 SUPPORT | |
1028 | ||
1029 | =head2 Bugs / Feature Requests | |
1030 | ||
1031 | Please report any bugs or feature requests through the issue tracker | |
1032 | at L<https://github.com/cpan-testers/CPAN-Reporter-Smoker/issues>. | |
1033 | You will be notified automatically of any progress on your issue. | |
1034 | ||
1035 | =head2 Source Code | |
1036 | ||
1037 | This is open source software. The code repository is available for | |
1038 | public review and contribution under the terms of the license. | |
1039 | ||
1040 | L<https://github.com/cpan-testers/CPAN-Reporter-Smoker> | |
1041 | ||
1042 | git clone https://github.com/cpan-testers/CPAN-Reporter-Smoker.git | |
1043 | ||
1044 | =head1 AUTHOR | |
1045 | ||
1046 | David Golden <dagolden@cpan.org> | |
1047 | ||
1048 | =head1 CONTRIBUTORS | |
1049 | ||
1050 | =for stopwords Alexandr Ciornii Christian Walde gregor herrmann | |
1051 | ||
1052 | =over 4 | |
1053 | ||
1054 | =item * | |
1055 | ||
1056 | Alexandr Ciornii <alexchorny@gmail.com> | |
1057 | ||
1058 | =item * | |
1059 | ||
1060 | Christian Walde <walde.christian@googlemail.com> | |
1061 | ||
1062 | =item * | |
1063 | ||
1064 | gregor herrmann <gregoa@cpan.org> | |
1065 | ||
1066 | =back | |
1067 | ||
1068 | =head1 COPYRIGHT AND LICENSE | |
1069 | ||
1070 | This software is Copyright (c) 2017 by David Golden. | |
1071 | ||
1072 | This is free software, licensed under: | |
1073 | ||
1074 | The Apache License, Version 2.0, January 2004 | |
905 | = SEE ALSO | |
906 | ||
907 | * [CPAN] | |
908 | * [CPAN::Reporter] | |
909 | * [CPAN::Testers] | |
910 | * [CPAN::Mini] | |
911 | * [CPAN::Mini::Devel] | |
1075 | 912 | |
1076 | 913 | =cut |
0 | do { my $x = { | |
1 | 'configure' => { | |
2 | 'requires' => { | |
3 | 'ExtUtils::MakeMaker' => '6.17', | |
4 | 'perl' => '5.006' | |
5 | } | |
6 | }, | |
7 | 'develop' => { | |
8 | 'requires' => { | |
9 | 'Dist::Zilla' => '5', | |
10 | 'Dist::Zilla::Plugin::Encoding' => '0', | |
11 | 'Dist::Zilla::Plugin::Prereqs' => '0', | |
12 | 'Dist::Zilla::Plugin::RemovePrereqs' => '0', | |
13 | 'Dist::Zilla::PluginBundle::DAGOLDEN' => '0.072', | |
14 | 'English' => '0', | |
15 | 'File::Spec' => '0', | |
16 | 'File::Temp' => '0', | |
17 | 'IO::Handle' => '0', | |
18 | 'IPC::Open3' => '0', | |
19 | 'Pod::Coverage::TrustPod' => '0', | |
20 | 'Pod::Wordlist' => '0', | |
21 | 'Software::License::Apache_2_0' => '0', | |
22 | 'Test::CPAN::Meta' => '0', | |
23 | 'Test::MinimumVersion' => '0', | |
24 | 'Test::More' => '0', | |
25 | 'Test::Pod' => '1.41', | |
26 | 'Test::Pod::Coverage' => '1.08', | |
27 | 'Test::Portability::Files' => '0', | |
28 | 'Test::Spelling' => '0.12', | |
29 | 'Test::Version' => '1', | |
30 | 'blib' => '1.01' | |
31 | } | |
32 | }, | |
33 | 'runtime' => { | |
34 | 'requires' => { | |
35 | 'CPAN' => '1.93', | |
36 | 'CPAN::HandleConfig' => '0', | |
37 | 'CPAN::Reporter::History' => '1.1702', | |
38 | 'CPAN::Tarzip' => '0', | |
39 | 'Carp' => '0', | |
40 | 'Compress::Zlib' => '1.2', | |
41 | 'Exporter' => '0', | |
42 | 'ExtUtils::MakeMaker' => '6.46', | |
43 | 'Fcntl' => '0', | |
44 | 'File::Basename' => '0', | |
45 | 'File::Spec' => '3.27', | |
46 | 'File::Temp' => '0.20', | |
47 | 'List::Util' => '1.03', | |
48 | 'Module::Build' => '0.30', | |
49 | 'Probe::Perl' => '0.01', | |
50 | 'Term::Title' => '0.01', | |
51 | 'Test::Reporter' => '1.58', | |
52 | 'perl' => '5.010', | |
53 | 'strict' => '0', | |
54 | 'warnings' => '0' | |
55 | } | |
56 | }, | |
57 | 'test' => { | |
58 | 'recommends' => { | |
59 | 'CPAN::Meta' => '2.120900' | |
60 | }, | |
61 | 'requires' => { | |
62 | 'CPAN::Checksums' => '0', | |
63 | 'Cwd' => '3.27', | |
64 | 'ExtUtils::MakeMaker' => '6.46', | |
65 | 'File::Find' => '0', | |
66 | 'File::Path' => '0', | |
67 | 'File::Spec' => '3.27', | |
68 | 'IO::CaptureOutput' => '1.06', | |
69 | 'IO::File' => '0', | |
70 | 'Test::More' => '0.62', | |
71 | 'lib' => '0', | |
72 | 'perl' => '5.010', | |
73 | 'vars' => '0' | |
74 | } | |
75 | } | |
76 | }; | |
77 | $x; | |
78 | }⏎ |
0 | #!perl | |
1 | ||
2 | use strict; | |
3 | use warnings; | |
4 | ||
5 | # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.025 | |
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 | && (my $meta = eval { CPAN::Meta->load_file($source) } ) | |
82 | ) { | |
83 | $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); | |
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: |
0 | use 5.006; | |
1 | use strict; | |
2 | use warnings; | |
3 | ||
4 | # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.056 | |
5 | ||
6 | use Test::More; | |
7 | ||
8 | plan tests => 2; | |
9 | ||
10 | my @module_files = ( | |
11 | 'CPAN/Reporter/Smoker.pm' | |
12 | ); | |
13 | ||
14 | ||
15 | ||
16 | # fake home for cpan-testers | |
17 | use File::Temp; | |
18 | local $ENV{HOME} = File::Temp::tempdir( CLEANUP => 1 ); | |
19 | ||
20 | ||
21 | my @switches = ( | |
22 | -d 'blib' ? '-Mblib' : '-Ilib', | |
23 | ); | |
24 | ||
25 | use File::Spec; | |
26 | use IPC::Open3; | |
27 | use IO::Handle; | |
28 | ||
29 | open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; | |
30 | ||
31 | my @warnings; | |
32 | for my $lib (@module_files) | |
33 | { | |
34 | # see L<perlfaq8/How can I capture STDERR from an external command?> | |
35 | my $stderr = IO::Handle->new; | |
36 | ||
37 | diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } | |
38 | $^X, @switches, '-e', "require q[$lib]")) | |
39 | if $ENV{PERL_COMPILE_TEST_DEBUG}; | |
40 | ||
41 | my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); | |
42 | binmode $stderr, ':crlf' if $^O eq 'MSWin32'; | |
43 | my @_warnings = <$stderr>; | |
44 | waitpid($pid, 0); | |
45 | is($?, 0, "$lib loaded ok"); | |
46 | ||
47 | shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ | |
48 | and not eval { require blib; blib->VERSION('1.01') }; | |
49 | ||
50 | if (@_warnings) | |
51 | { | |
52 | warn @_warnings; | |
53 | push @warnings, @_warnings; | |
54 | } | |
55 | } | |
56 | ||
57 | ||
58 | ||
59 | is(scalar(@warnings), 0, 'no warnings found') | |
60 | or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ); | |
61 | ||
62 |
0 | #!perl | |
1 | ||
2 | use strict; | |
3 | use warnings; | |
4 | ||
5 | use Test::More; | |
6 | use English qw(-no_match_vars); | |
7 | ||
8 | eval "use Test::Perl::Critic"; | |
9 | plan skip_all => 'Test::Perl::Critic required to criticise code' if $@; | |
10 | Test::Perl::Critic->import( -profile => "perlcritic.rc" ) if -e "perlcritic.rc"; | |
11 | all_critic_ok(); |
0 | #!perl | |
1 | # This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests. | |
2 | ||
3 | use Test::Pod::Coverage 1.08; | |
4 | use Pod::Coverage::TrustPod; | |
5 | ||
6 | all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); |
0 | use strict; | |
1 | use warnings; | |
2 | use Test::More; | |
3 | ||
4 | # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007004 | |
5 | use Test::Spelling 0.12; | |
6 | use Pod::Wordlist; | |
7 | ||
8 | ||
9 | add_stopwords(<DATA>); | |
10 | all_pod_files_spelling_ok( qw( bin lib ) ); | |
11 | __DATA__ | |
12 | Alexandr | |
13 | Bam | |
14 | Baz | |
15 | CPAN | |
16 | CTRL | |
17 | Christian | |
18 | Ciornii | |
19 | David | |
20 | Distroprefs | |
21 | Golden | |
22 | Reporter | |
23 | SIGKILL | |
24 | Smoker | |
25 | Walde | |
26 | alexchorny | |
27 | cpanreporter | |
28 | dagolden | |
29 | defaultdeps | |
30 | distroprefs | |
31 | gregoa | |
32 | gregor | |
33 | herrmann | |
34 | kurila | |
35 | lib | |
36 | minicpanrc | |
37 | prerelease | |
38 | titlebar | |
39 | unindexed | |
40 | untarring | |
41 | urllist | |
42 | walde |
0 | #!perl | |
1 | # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. | |
2 | use strict; use warnings; | |
3 | use Test::More; | |
4 | use Test::Pod 1.41; | |
5 | ||
6 | all_pod_files_ok(); |
0 | use strict; | |
1 | use warnings; | |
2 | ||
3 | use Test::More; | |
4 | ||
5 | eval 'use Test::Portability::Files'; | |
6 | plan skip_all => 'Test::Portability::Files required for testing portability' | |
7 | if $@; | |
8 | options(test_one_dot => 0); | |
9 | run_tests(); |
0 | use strict; | |
1 | use warnings; | |
2 | use Test::More; | |
3 | ||
4 | # generated by Dist::Zilla::Plugin::Test::Version 1.09 | |
5 | use Test::Version; | |
6 | ||
7 | my @imports = qw( version_all_ok ); | |
8 | ||
9 | my $params = { | |
10 | is_strict => 0, | |
11 | has_version => 1, | |
12 | multiple => 0, | |
13 | ||
14 | }; | |
15 | ||
16 | push @imports, $params | |
17 | if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); | |
18 | ||
19 | Test::Version->import(@imports); | |
20 | ||
21 | version_all_ok; | |
22 | done_testing; |