From 9af4105688b0b65f63317daf3c27e53ec365393f Mon Sep 17 00:00:00 2001
From: Todd Rinaldo <toddr@cpan.org>
Date: Thu, 5 Nov 2020 12:40:59 -0600
Subject: [PATCH] Switch to a CI workflow depending on cpanfile

---
 .github/workflows/linux.yml     |  42 ---------
 .github/workflows/macos.yml     |  43 ---------
 .github/workflows/testsuite.yml | 128 +++++++++++++++++++++++++
 .github/workflows/windows.yml   |  52 -----------
 META.json                       | 160 --------------------------------
 5 files changed, 128 insertions(+), 297 deletions(-)
 delete mode 100644 .github/workflows/linux.yml
 delete mode 100644 .github/workflows/macos.yml
 create mode 100644 .github/workflows/testsuite.yml
 delete mode 100644 .github/workflows/windows.yml
 delete mode 100644 META.json

diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
deleted file mode 100644
index 52272fb..0000000
--- a/.github/workflows/linux.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: linux
-on:
-  push:
-    branches:
-      - '*'
-    tags-ignore:
-      - '*'
-  pull_request:
-jobs:
-  perl:
-    runs-on: ubuntu-latest
-    strategy:
-      matrix:
-        perl-version:
-          - '5.32'
-          # - '5.30'
-          # - '5.28'
-          # - '5.26'
-          # - '5.24'
-          # - '5.22'
-          # - '5.20'
-          - '5.18'
-          # - '5.16'
-          # - '5.14'
-          # - '5.12'
-          - '5.10'
-    container:
-      image: perl:${{ matrix.perl-version }}
-    steps:
-      - uses: actions/checkout@v2
-      - name: perl -V
-        run: perl -V
-      - name: Install Dependencies
-        run: cpanm -n --installdeps .
-      - name: Create a non-root user called "runner"
-        run: adduser --disabled-password --gecos '' runner
-      - name: Run Tests as non-root user "runner"
-        run: |
-          chown -R runner:runner .
-          runuser runner -c 'perl Makefile.PL'
-          runuser runner -c 'make'
-          runuser runner -c 'make test'
diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml
deleted file mode 100644
index 15c19d7..0000000
--- a/.github/workflows/macos.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: macos
-on:
-  push:
-    branches:
-      - '*'
-    tags-ignore:
-      - '*'
-  pull_request:
-jobs:
-  perl:
-    runs-on: macOS-latest
-    strategy:
-      matrix:
-        perl-version:
-          - '5.32'
-          # - '5.30'
-          # - '5.28'
-          # - '5.26'
-          # - '5.24'
-          # - '5.22'
-          # - '5.20'
-          - '5.18'
-          # - '5.16'
-          # - '5.14'
-          # - '5.12'
-          - '5.10'
-    steps:
-      - uses: actions/checkout@v2
-      - name: Setup perl
-        uses: shogo82148/actions-setup-perl@v1
-        with:
-          perl-version: ${{ matrix.perl-version }}
-      - name: perl -V
-        run: perl -V
-      - name: Ensure old Perls have a good toolchain
-        run: cpanm ExtUtils::Manifest App::cpanminus
-      - name: Install Dependencies
-        run: cpanm -n --installdeps .
-      - name: Run Tests
-        run: |
-          perl Makefile.PL
-          make
-          make test
diff --git a/.github/workflows/testsuite.yml b/.github/workflows/testsuite.yml
new file mode 100644
index 0000000..6089edc
--- /dev/null
+++ b/.github/workflows/testsuite.yml
@@ -0,0 +1,128 @@
+name: testsuite
+
+on:
+  push:
+    branches:
+      - "*"
+    tags-ignore:
+      - "*"
+  pull_request:
+
+jobs:
+  ubuntu:
+    env:
+      PERL_USE_UNSAFE_INC: 0
+      AUTHOR_TESTING: 1
+      AUTOMATED_TESTING: 1
+      RELEASE_TESTING: 1
+
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+      - name: perl -V
+        run: perl -V
+      - name: Install Dependencies
+        uses: perl-actions/install-with-cpm@v1
+        with:
+          cpanfile: "cpanfile"
+      - name: Makefile.PL
+        run: perl -I$(pwd) Makefile.PL
+      - name: make test
+        run: make test
+
+  linux:
+    name: "linux ${{ matrix.perl-version }}"
+    needs: [ubuntu]
+    runs-on: ubuntu-latest
+
+    env:
+      PERL_USE_UNSAFE_INC: 0
+      AUTHOR_TESTING: 1
+      AUTOMATED_TESTING: 1
+      RELEASE_TESTING: 1
+      PERL_CARTON_PATH: $GITHUB_WORKSPACE/local
+
+    strategy:
+      matrix:
+        perl-version:
+          - "latest"
+          - "5.32"
+          - "5.30"
+          - "5.28"
+          - "5.26"
+          - "5.24"
+          - "5.22"
+          - "5.20"
+          - "5.18"
+          - "5.16"
+          - "5.14"
+          - "5.12"
+          - "5.10"
+          - "5.8"
+
+    container:
+      image: perl:${{ matrix.perl-version }}
+
+    steps:
+      - uses: actions/checkout@v2
+      - name: perl -V
+        run: perl -V
+      - name: Install Dependencies
+        uses: perl-actions/install-with-cpm@v1
+        with:
+          sudo: false
+          cpanfile: "cpanfile"
+      - run: perl Makefile.PL
+      - run: make
+      - run: make test
+
+  macOS:
+    needs: [ubuntu, linux]
+    runs-on: macOS-latest
+
+    env:
+      PERL_USE_UNSAFE_INC: 0
+      AUTHOR_TESTING: 1
+      AUTOMATED_TESTING: 1
+      RELEASE_TESTING: 1
+      PERL_CARTON_PATH: $GITHUB_WORKSPACE/local
+
+    steps:
+      - uses: actions/checkout@v2
+      - name: Set up Perl
+        run: brew install perl
+      - name: perl -V
+        run: perl -V
+      - name: Install Dependencies
+        uses: perl-actions/install-with-cpm@v1
+        with:
+          sudo: false
+          cpanfile: "cpanfile"
+      - run: perl Makefile.PL
+      - run: make
+      - run: make test
+
+  windows:
+    needs: [ubuntu, linux]
+    runs-on: windows-latest
+
+    steps:
+      - uses: actions/checkout@v2
+      - name: Set up Perl
+        run: |
+          choco install strawberryperl
+          echo "##[add-path]C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin"
+      - name: perl -V
+        run: perl -V
+      - name: Install Dependencies
+        uses: perl-actions/install-with-cpm@v1
+        with:
+          sudo: false
+          cpanfile: "cpanfile"
+      - name: perl Makefile.PL
+        run: perl Makefile.PL
+      - name: make
+        run: make
+      - name: Run Tests
+        run: make test
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
deleted file mode 100644
index 8c8ccfc..0000000
--- a/.github/workflows/windows.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-name: windows
-on:
-  push:
-    branches:
-      - '*'
-    tags-ignore:
-      - '*'
-  pull_request:
-jobs:
-  perl:
-    runs-on: windows-latest
-    strategy:
-      fail-fast: true
-      matrix:
-        perl-version:
-          - '5.32.0.1'
-          # - '5.30.3.1'
-          # - '5.28.2.1'
-          # - '5.26.3.1'
-          # - '5.24.4.1'
-          # - '5.22.3.1'
-          # - '5.20.3.3'
-          # - '5.18.4.1'
-          # - '5.16.3.1'
-          - '5.14.4.1'
-    steps:
-      - name: Set git to use LF
-        run: |
-          git config --global core.autocrlf false
-          git config --global core.eol lf
-      - uses: actions/checkout@v2
-      - name: Remove GH's Strawberry Perl and MinGW from Path
-        run: |
-          echo "::set-env name=PATH::$(($env:Path.split(";", [System.StringSplitOptions]::RemoveEmptyEntries) | where{-not ($_ -clike '*Strawberry*' -or $_ -clike '*mingw*')}) -join ';')"
-      - name: Add our new Strawberry Portable Perl Paths
-        run: |
-          Remove-Item C:\straw -Recurse -ErrorAction Ignore
-          mkdir C:\straw
-          echo "::add-path::C:\straw\c\bin;C:\straw\perl\site\bin;C:\straw\perl\bin"
-          echo $env:PATH
-      - name: Set up our new Strawberry Perl
-        run: |
-          Invoke-WebRequest -Uri https://strawberry.perl.bot/download/${{ matrix.perl-version }}/strawberry-perl-${{ matrix.perl-version }}-64bit-portable.zip -OutFile ${{matrix.perl-version}}.zip
-          7z x "${{matrix.perl-version}}.zip" -oC:\straw
-      - name: perl -V
-        run: perl -V
-      - name: Ensure old Strawberries have a good toolchain
-        run: cpanm ExtUtils::Manifest App::cpanminus
-      - name: Install Dependencies
-        run: cpanm --installdeps .
-      - name: Run Tests
-        run: cpanm --test-only -v .
diff --git a/META.json b/META.json
deleted file mode 100644
index 2e6fec0..0000000
--- a/META.json
+++ /dev/null
@@ -1,160 +0,0 @@
-{
-   "abstract" : "HTML parser class",
-   "author" : [
-      "Gisle Aas <gaas@cpan.org>"
-   ],
-   "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010",
-   "license" : [
-      "perl_5"
-   ],
-   "meta-spec" : {
-      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
-      "version" : 2
-   },
-   "name" : "HTML-Parser",
-   "no_index" : {
-      "directory" : [
-         "eg",
-         "examples",
-         "inc",
-         "share",
-         "t",
-         "xt"
-      ]
-   },
-   "prereqs" : {
-      "configure" : {
-         "requires" : {
-            "ExtUtils::MakeMaker" : "6.52",
-            "perl" : "5.008"
-         },
-         "suggests" : {
-            "JSON::PP" : "2.27300"
-         }
-      },
-      "develop" : {
-         "requires" : {
-            "Dist::Zilla" : "0",
-            "Dist::Zilla::Plugin::MinimumPerl" : "0",
-            "Dist::Zilla::PluginBundle::Starter" : "v4.0.0",
-            "File::Spec" : "0",
-            "IO::Handle" : "0",
-            "IPC::Open3" : "0",
-            "Pod::Coverage::TrustPod" : "0",
-            "Test::CPAN::Changes" : "0.4",
-            "Test::CPAN::Meta" : "0",
-            "Test::CheckManifest" : "1.29",
-            "Test::Kwalitee" : "1.22",
-            "Test::More" : "0.88",
-            "Test::Pod" : "1.41",
-            "Test::Pod::Coverage" : "1.08",
-            "Test::Pod::Spelling::CommonMistakes" : "1.000",
-            "Test::Spelling" : "0.12",
-            "Test::Version" : "2.00"
-         }
-      },
-      "runtime" : {
-         "requires" : {
-            "Carp" : "0",
-            "Exporter" : "0",
-            "HTML::Tagset" : "0",
-            "HTTP::Headers" : "0",
-            "IO::File" : "0",
-            "URI" : "0",
-            "URI::URL" : "0",
-            "XSLoader" : "0",
-            "perl" : "5.008",
-            "strict" : "0",
-            "vars" : "0"
-         }
-      },
-      "test" : {
-         "recommends" : {
-            "CPAN::Meta" : "2.120900"
-         },
-         "requires" : {
-            "Config" : "0",
-            "ExtUtils::MakeMaker" : "0",
-            "File::Spec" : "0",
-            "FileHandle" : "0",
-            "IO::File" : "0",
-            "SelectSaver" : "0",
-            "Test" : "0",
-            "Test::More" : "0",
-            "URI" : "0",
-            "perl" : "5.008",
-            "strict" : "0",
-            "vars" : "0"
-         }
-      }
-   },
-   "provides" : {
-      "HTML::Entities" : {
-         "file" : "lib/HTML/Entities.pm",
-         "version" : "3.75"
-      },
-      "HTML::Filter" : {
-         "file" : "lib/HTML/Filter.pm",
-         "version" : "3.75",
-         "x_deprecated" : 1
-      },
-      "HTML::HeadParser" : {
-         "file" : "lib/HTML/HeadParser.pm",
-         "version" : "3.75"
-      },
-      "HTML::LinkExtor" : {
-         "file" : "lib/HTML/LinkExtor.pm",
-         "version" : "3.75"
-      },
-      "HTML::Parser" : {
-         "file" : "lib/HTML/Parser.pm",
-         "version" : "3.75"
-      },
-      "HTML::PullParser" : {
-         "file" : "lib/HTML/PullParser.pm",
-         "version" : "3.75"
-      },
-      "HTML::TokeParser" : {
-         "file" : "lib/HTML/TokeParser.pm",
-         "version" : "3.75"
-      }
-   },
-   "release_status" : "stable",
-   "resources" : {
-      "bugtracker" : {
-         "web" : "https://github.com/libwww-perl/html-parser/issues"
-      },
-      "homepage" : "https://github.com/libwww-perl/html-parser",
-      "repository" : {
-         "type" : "git",
-         "url" : "https://github.com/libwww-perl/html-parser.git",
-         "web" : "https://github.com/libwww-perl/html-parser"
-      }
-   },
-   "version" : "3.75",
-   "x_contributors" : [
-      "Antonio Radici <antonio@dyne.org>",
-      "Barbie <barbie@missbarbell.co.uk>",
-      "bulk88 <bulk88@hotmail.com>",
-      "Chase Whitener <capoeirab@cpan.org>",
-      "Chip Salzenberg <chip@pobox.com>",
-      "Damyan Ivanov <dmn@debian.org>",
-      "David Steinbrunner <dsteinbrunner@pobox.com>",
-      "Fran\u00e7ois Perrad <francois.perrad@gadz.org>",
-      "Gisle Aas <gisle@aas.no>",
-      "Jacques Germishuys <jacquesg@striata.com>",
-      "Jon Jensen <jon@endpoint.com>",
-      "Mike South <msouth@gmail.com>",
-      "Nicholas Clark <nick@ccl4.org>",
-      "Nicolas R <nicolas@atoomic.org>",
-      "Salvatore Bonaccorso <salvatore.bonaccorso@gmail.com>",
-      "Ville Skytt\u00e4 <ville.skytta@iki.fi>",
-      "Yves Orton <demerphq@gmail.com>",
-      "Zefram <zefram@fysh.org>"
-   ],
-   "x_generated_by_perl" : "v5.26.1",
-   "x_serialization_backend" : "Cpanel::JSON::XS version 4.19",
-   "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later"
-}
-