From 0068a85a5a6f7da05e9c1639e9f317aec590a31e Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 15:59:36 -0400 Subject: [PATCH 01/18] first pass at github workflow --- .github/workflows/perl-tests.yml | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/perl-tests.yml diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml new file mode 100644 index 000000000..d87011e6a --- /dev/null +++ b/.github/workflows/perl-tests.yml @@ -0,0 +1,40 @@ +name: "perl test suite" +on: [ push, pull_request ] + +jobs: + the-tests: + runs-on: ubuntu-latest + container: + image: perldocker/perl-tester:5.16 + strategy: + fail-fast: false + steps: + - name: Check out repo + uses: actions/checkout@v3 + - name: Install cpanminus + run: | + curl https://cpanmin.us/ > /tmp/cpanm + chmod u+x /tmp/cpanm + - name: Makefile.PL + run: | + perl Makefile.PL && make + - name: Install prereqs + # This could probably be made more efficient by looking at what it's + # installing via cpanm that could, instead, be installed from apt. I + # may do that later, but for now, it's fine! -- rjbs, 2023-01-07 + run: | + cpanm --installdeps . + - name: Install yath + run: cpanm --notest Test2::Harness + - name: Install testing libraries + run: cpanm --notest Test2::Harness::Renderer::JUnit + - name: Run the tests + run: | + JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D + - name: Publish test report + uses: mikepenz/action-junit-report@v3 + if: always() # always run even if the previous step fails + with: + check_name: JUnit Report (${{ matrix.perl-version }}) + report_paths: /tmp/test-output.xml + From a1dc9abc065ffaafed4c7aff25d8606f093b98ef Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 16:17:48 -0400 Subject: [PATCH 02/18] workflow: install rsync --- .github/workflows/perl-tests.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index d87011e6a..7f9ee11d2 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -18,7 +18,10 @@ jobs: - name: Makefile.PL run: | perl Makefile.PL && make - - name: Install prereqs + - name: Install prereqs (apt) + run: | + apt install -y rsync + - name: Install prereqs (cpan) # This could probably be made more efficient by looking at what it's # installing via cpanm that could, instead, be installed from apt. I # may do that later, but for now, it's fine! -- rjbs, 2023-01-07 From 6d73d170cb624e4ac0e2a850457a164e3a9adf8b Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 16:57:50 -0400 Subject: [PATCH 03/18] github workflow: install some pinned versions of prereqs --- .github/workflows/perl-tests.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 7f9ee11d2..6d3e9b9fa 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -21,6 +21,10 @@ jobs: - name: Install prereqs (apt) run: | apt install -y rsync + - name: Install prereqs (cpanm, pinned versions) + run: | + cpanm Log::Dispatchouli@2.023 + cpanm Mojolicious@8.73 - name: Install prereqs (cpan) # This could probably be made more efficient by looking at what it's # installing via cpanm that could, instead, be installed from apt. I From 799d262601c4071cde42c58e1a4bf2f2f1a56982 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 20:08:14 -0400 Subject: [PATCH 04/18] github workflow: remove mention of perl version --- .github/workflows/perl-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 6d3e9b9fa..b9c6889a1 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -42,6 +42,6 @@ jobs: uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails with: - check_name: JUnit Report (${{ matrix.perl-version }}) + check_name: JUnit Report report_paths: /tmp/test-output.xml From b5ecb4053f4877d9b6006e3f26ed8d2469c42eab Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 20:14:44 -0400 Subject: [PATCH 05/18] github workflow: simplify yathing --- .github/workflows/perl-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index b9c6889a1..626df202e 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -37,7 +37,7 @@ jobs: run: cpanm --notest Test2::Harness::Renderer::JUnit - name: Run the tests run: | - JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D + ALLOW_PASSING_TODOS=1 yath test - name: Publish test report uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails From 8f8346f111700f86ac25aaa6bf2ce18f313317ef Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 20:56:45 -0400 Subject: [PATCH 06/18] programs.t: remove bogus shebang --- t/programs.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/programs.t b/t/programs.t index 441d48a16..9caafd0e5 100644 --- a/t/programs.t +++ b/t/programs.t @@ -1,4 +1,4 @@ -#!perl -- -*- mode: cperl -*- +#!perl use Test::More; use File::Spec; From b39bca75b97a947a104229eca70943ba6ffa7b81 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 21:02:42 -0400 Subject: [PATCH 07/18] remove signature test, since there is no signature --- t/0-signature.t | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 t/0-signature.t diff --git a/t/0-signature.t b/t/0-signature.t deleted file mode 100644 index 0c2975af2..000000000 --- a/t/0-signature.t +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/perl - -use strict; -print "1..1\n"; - -if (!-s 'SIGNATURE') { - print "ok 1 # skip No signature file found\n"; -} -elsif (!eval { require Module::Signature; 1 }) { - print "ok 1 # skip ", - "Next time around, consider installing Module::Signature, ", - "so you can verify the integrity of this distribution.\n"; -} -elsif (!eval { require Socket; Socket::inet_aton('pgp.mit.edu') }) { - print "ok 1 # skip ", - "Cannot connect to the keyserver\n"; -} -else { - (Module::Signature::verify() == Module::Signature::SIGNATURE_OK()) - or print "not "; - print "ok 1 # Valid signature\n"; -} - -__END__ From a4a25c96b098f60e574afcde3ac481545af80aaa Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 21:08:54 -0400 Subject: [PATCH 08/18] TestPAUSE: make our own git config --- t/lib/PAUSE/TestPAUSE.pm | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/t/lib/PAUSE/TestPAUSE.pm b/t/lib/PAUSE/TestPAUSE.pm index 4754f95d5..e9cf7a8a0 100644 --- a/t/lib/PAUSE/TestPAUSE.pm +++ b/t/lib/PAUSE/TestPAUSE.pm @@ -242,6 +242,15 @@ has pause_config_overrides => ( builder => '_build_pause_config_overrides', ); +my $GIT_CONFIG = <<'END_GIT_CONFIG'; +[user] + email = pause.git@example.com + name = "PAUSE Daemon Git User" + +[init] + defaultBranch = main +END_GIT_CONFIG + sub _build_pause_config_overrides { my ($self) = @_; @@ -262,7 +271,15 @@ sub _build_pause_config_overrides { { my $chdir_guard = pushd($git_dir); - system(qw(git init)) and die "error running git init"; + system(qw(git init --initial-branch main)) and die "error running git init"; + + my $git_config = File::Spec->catdir($git_dir, '.git/config'); + open my $config_fh, '>', $git_config + or die "can't create git config at $git_config: $!"; + + print {$config_fh} $GIT_CONFIG; + close $config_fh + or die "can't write git config at $git_config: $!"; } my $dsnbase = "DBI:SQLite:dbname=$db_root"; From 08e08d0323486b737819873ba32faa39fd7f7bc2 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 21:21:40 -0400 Subject: [PATCH 09/18] github workflow: do not test prereqs Dangerous and stupid, but fast. --- .github/workflows/perl-tests.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 626df202e..712272fee 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -29,8 +29,7 @@ jobs: # This could probably be made more efficient by looking at what it's # installing via cpanm that could, instead, be installed from apt. I # may do that later, but for now, it's fine! -- rjbs, 2023-01-07 - run: | - cpanm --installdeps . + run: cpanm --notest --installdeps . - name: Install yath run: cpanm --notest Test2::Harness - name: Install testing libraries From 064371d82bb724726059e77fa88673bcfe8d9c69 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 21:26:33 -0400 Subject: [PATCH 10/18] github workflow: cope with old git docker image git does not have --initial-branch --- t/lib/PAUSE/TestPAUSE.pm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/t/lib/PAUSE/TestPAUSE.pm b/t/lib/PAUSE/TestPAUSE.pm index e9cf7a8a0..255ad5d8f 100644 --- a/t/lib/PAUSE/TestPAUSE.pm +++ b/t/lib/PAUSE/TestPAUSE.pm @@ -246,9 +246,6 @@ my $GIT_CONFIG = <<'END_GIT_CONFIG'; [user] email = pause.git@example.com name = "PAUSE Daemon Git User" - -[init] - defaultBranch = main END_GIT_CONFIG sub _build_pause_config_overrides { @@ -271,7 +268,7 @@ sub _build_pause_config_overrides { { my $chdir_guard = pushd($git_dir); - system(qw(git init --initial-branch main)) and die "error running git init"; + system(qw(git init)) and die "error running git init"; my $git_config = File::Spec->catdir($git_dir, '.git/config'); open my $config_fh, '>', $git_config From e9ad966e8f35d6c30c654bf5d0e978ada9b1fb04 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 22:25:11 -0400 Subject: [PATCH 11/18] github workflow: install mysqld --- .github/workflows/perl-tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 712272fee..88c43f5d8 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -20,7 +20,8 @@ jobs: perl Makefile.PL && make - name: Install prereqs (apt) run: | - apt install -y rsync + apt update + apt install -y rsync default-mysql-server - name: Install prereqs (cpanm, pinned versions) run: | cpanm Log::Dispatchouli@2.023 From cd98198525c2ac984957fecdd27b1daf3efa3660 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 08:09:15 -0400 Subject: [PATCH 12/18] github workflow: do not install mysql server ...it lets the web tests run, which run forever. We should fix this! --- .github/workflows/perl-tests.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 88c43f5d8..87da23c73 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -19,9 +19,14 @@ jobs: run: | perl Makefile.PL && make - name: Install prereqs (apt) + # If we install "default-mysql-server", the web tests will run, which + # is good, but they will run forever when we get to + # t/pause_2017/action/change_passwd.t not responding to SIGTERM or + # SIGKILL. I seem to recall something about signals being weird on + # Actions, but not how... -- rjbs, 2023-05-05 run: | apt update - apt install -y rsync default-mysql-server + apt install -y rsync - name: Install prereqs (cpanm, pinned versions) run: | cpanm Log::Dispatchouli@2.023 From ef990f2e843324d5a59da2438a4433eb4ce76e4d Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 08:10:04 -0400 Subject: [PATCH 13/18] github workflow: reenable JUnit output This was failing weirdly earlier. --- .github/workflows/perl-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 87da23c73..2a8acb18b 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -42,7 +42,7 @@ jobs: run: cpanm --notest Test2::Harness::Renderer::JUnit - name: Run the tests run: | - ALLOW_PASSING_TODOS=1 yath test + JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D - name: Publish test report uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails From 73ab81d66216ac37357fdd00d20bd49d0f6782f3 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 08:25:19 -0400 Subject: [PATCH 14/18] github workflow: for now, disable JUnit output --- .github/workflows/perl-tests.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index 2a8acb18b..f4dedb460 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -41,8 +41,14 @@ jobs: - name: Install testing libraries run: cpanm --notest Test2::Harness::Renderer::JUnit - name: Run the tests + # I want to use this: + # JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 \ + # yath test --renderer=Formatter --renderer=JUnit -D + # + # ...but it fails weirdly. Dumps one object to the output and bails. + # Total mystery for now. -- rjbs, 2023-05-05 run: | - JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D + ALLOW_PASSING_TODOS=1 yath test -D - name: Publish test report uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails From 4024843cd7ad6beaaea6d3fbbc77a8cc56eb527b Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 08:43:50 -0400 Subject: [PATCH 15/18] make it possible to skip the test critic test These tests are not compatible with the JUnit formatter, so skip for now. --- .github/workflows/perl-tests.yml | 8 +------- t/70_critic.t | 6 ++++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index f4dedb460..a8c268b8c 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -41,14 +41,8 @@ jobs: - name: Install testing libraries run: cpanm --notest Test2::Harness::Renderer::JUnit - name: Run the tests - # I want to use this: - # JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 \ - # yath test --renderer=Formatter --renderer=JUnit -D - # - # ...but it fails weirdly. Dumps one object to the output and bails. - # Total mystery for now. -- rjbs, 2023-05-05 run: | - ALLOW_PASSING_TODOS=1 yath test -D + NO_PERL_CRITIC=1 JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D - name: Publish test report uses: mikepenz/action-junit-report@v3 if: always() # always run even if the previous step fails diff --git a/t/70_critic.t b/t/70_critic.t index a133e467e..467a7d5c9 100644 --- a/t/70_critic.t +++ b/t/70_critic.t @@ -3,6 +3,10 @@ use warnings; use File::Spec; use Test::More; +if ($ENV{NO_PERL_CRITIC}) { + plan( skip_all => '$NO_PERL_CRITIC set, skipping'); +} + eval { require Test::Perl::Critic; }; if ( $@ ) { @@ -14,8 +18,6 @@ my $rcfile = File::Spec->catfile( 't', 'perlcriticrc' ); Test::Perl::Critic->import( -profile => $rcfile ); all_critic_ok(); - - # Local Variables: # mode: cperl # cperl-indent-level: 4 From f1c8a01a85ff8d2a2307a3971ecd7ad5a9ff3baf Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Thu, 4 May 2023 21:52:51 -0400 Subject: [PATCH 16/18] make MySQL-using tests skip if no mysql binary --- t/pause_2017/lib/Test/PAUSE/MySQL.pm | 7 +++++++ t/run_test_class_tests.t | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/t/pause_2017/lib/Test/PAUSE/MySQL.pm b/t/pause_2017/lib/Test/PAUSE/MySQL.pm index 5dc621b17..b94786565 100644 --- a/t/pause_2017/lib/Test/PAUSE/MySQL.pm +++ b/t/pause_2017/lib/Test/PAUSE/MySQL.pm @@ -1,7 +1,14 @@ package Test::PAUSE::MySQL; +use Test::Builder (); use Test::Requires qw(Test::mysqld); +BEGIN { + unless (-e '/usr/local/mysql/bin/mysql') { + Test::Builder->new->skip_all("no mysql found, needed for this test") + } +} + use Moose; use Test::mysqld; use Test::More; diff --git a/t/run_test_class_tests.t b/t/run_test_class_tests.t index 46f0b2e56..156e1caee 100644 --- a/t/run_test_class_tests.t +++ b/t/run_test_class_tests.t @@ -3,6 +3,14 @@ use strict; use warnings; +use Test::Requires qw(Test::mysqld); + +BEGIN { + unless (-e '/usr/local/mysql/bin/mysql') { + Test::Builder->new->skip_all("no mysql found, needed for this test") + } +} + use lib 't/lib'; use TestSetup; From 14e59c2779349e97cfb8022b77e1b225b2eb519b Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 09:45:47 -0400 Subject: [PATCH 17/18] github workflow: comment and consolidate --- .github/workflows/perl-tests.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/perl-tests.yml b/.github/workflows/perl-tests.yml index a8c268b8c..5c2bfde6d 100644 --- a/.github/workflows/perl-tests.yml +++ b/.github/workflows/perl-tests.yml @@ -11,10 +11,6 @@ jobs: steps: - name: Check out repo uses: actions/checkout@v3 - - name: Install cpanminus - run: | - curl https://cpanmin.us/ > /tmp/cpanm - chmod u+x /tmp/cpanm - name: Makefile.PL run: | perl Makefile.PL && make @@ -28,6 +24,9 @@ jobs: apt update apt install -y rsync - name: Install prereqs (cpanm, pinned versions) + # PAUSE is run (for now?) on v5.16, and the latest versions from the + # CPAN don't install on v5.16, so we install these version that do. + # -- rjbs, 2023-05-05 run: | cpanm Log::Dispatchouli@2.023 cpanm Mojolicious@8.73 @@ -36,11 +35,13 @@ jobs: # installing via cpanm that could, instead, be installed from apt. I # may do that later, but for now, it's fine! -- rjbs, 2023-01-07 run: cpanm --notest --installdeps . - - name: Install yath - run: cpanm --notest Test2::Harness - - name: Install testing libraries - run: cpanm --notest Test2::Harness::Renderer::JUnit + - name: Install yath and JUnit renderer + run: cpanm --notest Test2::Harness Test2::Harness::Renderer::JUnit - name: Run the tests + # We disable Test::Perl::Critic because of a bug in + # Test2::Harness::Renderer::JUnit. See: + # https://github.com/cpanel/Test2-Harness-Renderer-JUnit/issues/16 + # -- rjbs, 2023-05-05 run: | NO_PERL_CRITIC=1 JUNIT_TEST_FILE="/tmp/test-output.xml" ALLOW_PASSING_TODOS=1 yath test --renderer=Formatter --renderer=JUnit -D - name: Publish test report From bd5ea540cfcd5484abc5313893ef051dd00ed754 Mon Sep 17 00:00:00 2001 From: Ricardo Signes Date: Fri, 5 May 2023 09:51:15 -0400 Subject: [PATCH 18/18] Makefile.PL: reformat with no functional changes --- Makefile.PL | 216 ++++++++++++++++++++++++++-------------------------- 1 file changed, 109 insertions(+), 107 deletions(-) diff --git a/Makefile.PL b/Makefile.PL index ae3dbdbcf..b507c72a2 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -3,113 +3,115 @@ use strict; use ExtUtils::MakeMaker; WriteMakefile( - NAME => 'PAUSE', - VERSION_FROM => 'lib/PAUSE.pm', - ABSTRACT_FROM => 'lib/PAUSE.pod', - AUTHOR => 'Andreas Koenig ', - LICENSE => 'perl', - PREREQ_PM => { map +($_ => 0), qw( - Apache::Session::Counted - BSD::Resource - Capture::Tiny - CPAN::Checksums - CPAN::DistnameInfo - CPAN::Indexer::Mirror - Class::MOP::Class - Class::Singleton - Compress::Zlib - Crypt::Eksblowfish::Bcrypt - Cwd - DB_File - DBD::mysql - DBD::SQLite - DBI - DBIx::RunSQL - Devel::Peek - Dumpvalue - Email::Address - Email::MIME - Email::Sender::Simple - EV - File::Copy::Recursive - File::pushd - File::Rsync::Mirror::Recentfile - File::Temp - File::Which - Git::Wrapper - HTML::Entities - HTTP::Date - HTTP::Request::Common - HTTP::Tiny - IO::Socket::SSL - IPC::Cmd - IPC::Run3 - JSON::XS - Log::Dispatch - Log::Dispatch::Config - Log::Dispatchouli - Log::Dispatchouli::Global - LWP::UserAgent - LWP::Protocol::https - Digest::SHA - Mail::Mailer - Module::Faker::Dist - Module::Signature - Moo - Mojolicious - Mojolicious::Plugin::WithCSRFProtection - MojoX::Log::Dispatch::Simple - MooseX::StrictConstructor - Net::FTP - Net::SSLeay - Parse::CPAN::Packages - Parse::CPAN::Perms - Path::Class - Path::Tiny - Plack - Plack::App::Directory::Apaxy - Plack::Middleware::Auth::Basic - Plack::Middleware::ReverseProxy - Plack::Middleware::ServerStatus::Tiny - Process::Status - Set::Crontab - SQL::Maker - String::Random - Test::Class - Test::Deep - Test::FITesque::Fixture - Test::MockObject - Test::mysqld - Test::Requires - Test::WWW::Mechanize::PSGI - Text::Format - Text::Markdown::Hoedown - Text::Metaphone - Text::Soundex - Text::Unidecode - Time::Duration - Time::HiRes - URI::Escape - URI::URL - Unicode::Collate - Unicode::String - WWW::Mechanize::Boilerplate - XML::LibXML - XML::Parser - XML::SAX::Base - XML::SAX::Writer - YAML::XS -)}, - SIGN => 1, - test => { RECURSIVE_TEST_FILES => 1 }, - ($ExtUtils::MakeMaker::VERSION >= 6.4502 ? - (META_ADD => { - resources => { - repository => "git://github.com/andk/pause.git", - }, - keywords => ['CPAN','perl','perl authors upload server'], - }) : ()), - ); + NAME => 'PAUSE', + VERSION_FROM => 'lib/PAUSE.pm', + ABSTRACT_FROM => 'lib/PAUSE.pod', + AUTHOR => 'Andreas Koenig ', + LICENSE => 'perl', + PREREQ_PM => { map +($_ => 0), qw( + Apache::Session::Counted + BSD::Resource + Capture::Tiny + CPAN::Checksums + CPAN::DistnameInfo + CPAN::Indexer::Mirror + Class::MOP::Class + Class::Singleton + Compress::Zlib + Crypt::Eksblowfish::Bcrypt + Cwd + DB_File + DBD::mysql + DBD::SQLite + DBI + DBIx::RunSQL + Devel::Peek + Dumpvalue + Email::Address + Email::MIME + Email::Sender::Simple + EV + File::Copy::Recursive + File::pushd + File::Rsync::Mirror::Recentfile + File::Temp + File::Which + Git::Wrapper + HTML::Entities + HTTP::Date + HTTP::Request::Common + HTTP::Tiny + IO::Socket::SSL + IPC::Cmd + IPC::Run3 + JSON::XS + Log::Dispatch + Log::Dispatch::Config + Log::Dispatchouli + Log::Dispatchouli::Global + LWP::UserAgent + LWP::Protocol::https + Digest::SHA + Mail::Mailer + Module::Faker::Dist + Module::Signature + Moo + Mojolicious + Mojolicious::Plugin::WithCSRFProtection + MojoX::Log::Dispatch::Simple + MooseX::StrictConstructor + Net::FTP + Net::SSLeay + Parse::CPAN::Packages + Parse::CPAN::Perms + Path::Class + Path::Tiny + Plack + Plack::App::Directory::Apaxy + Plack::Middleware::Auth::Basic + Plack::Middleware::ReverseProxy + Plack::Middleware::ServerStatus::Tiny + Process::Status + Set::Crontab + SQL::Maker + String::Random + Test::Class + Test::Deep + Test::FITesque::Fixture + Test::MockObject + Test::mysqld + Test::Requires + Test::WWW::Mechanize::PSGI + Text::Format + Text::Markdown::Hoedown + Text::Metaphone + Text::Soundex + Text::Unidecode + Time::Duration + Time::HiRes + URI::Escape + URI::URL + Unicode::Collate + Unicode::String + WWW::Mechanize::Boilerplate + XML::LibXML + XML::Parser + XML::SAX::Base + XML::SAX::Writer + YAML::XS + )}, + SIGN => 1, + + test => { RECURSIVE_TEST_FILES => 1 }, + ($ExtUtils::MakeMaker::VERSION >= 6.4502 + ? (META_ADD => { + resources => { + repository => "git://github.com/andk/pause.git", + }, + keywords => ['CPAN','perl','perl authors upload server'], + }) + : ()), +); sub MY::postamble { <