diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..b40cf312 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,19 @@ +name: test + +on: + push: + branches: + - master + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run test + run: | + make test + diff --git a/.gitignore b/.gitignore index 07bac2a1..59e77a33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -Makefile inc/ MANIFEST *.bak diff --git a/Dockerfile b/Dockerfile index 006f93fe..d3da349a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM perl:5.38-bookworm +FROM perl:5.38-bookworm as base ENV DEBIAN_FRONTEND=noninteractive @@ -22,4 +22,11 @@ ENV PATH=/usr/src/app/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi # 翻訳データの更新 RUN perl script/update.pl + +# テスト用のステージ +FROM base as test +RUN cpm install --with-test --with-develop --show-build-log-on-failure + +# サーバーを起動したい時のステージ +FROM base as web CMD ["./local/bin/plackup", "-p", "5000", "-Ilib", "app.psgi"] diff --git a/META.yml b/META.yml deleted file mode 100644 index 357b7149..00000000 --- a/META.yml +++ /dev/null @@ -1,45 +0,0 @@ ---- -abstract: ~ -build_requires: - ExtUtils::MakeMaker: 6.42 - Test::Requires: 0 -configure_requires: - ExtUtils::MakeMaker: 6.42 -distribution_type: module -generated_by: 'Module::Install version 1.00' -license: perl -meta-spec: - url: http://module-build.sourceforge.net/META-spec-v1.4.html - version: 1.4 -module_name: PJP -name: PJP -no_index: - directory: - - inc - - t - - xt -requires: - Amon2: 0 - CPAN::DistnameInfo: 0 - Cache::FileCache: 0 - Carp::Clan: 0 - DBD::SQLite: 0 - DBIx::TransactionManager: 0 - File::Find::Rule: 0 - LWP::UserAgent: 0 - Log::Minimal: 0 - Plack::Middleware::ReverseProxy: 0 - Pod::Simple: 3.16 - Pod::Simple::XHTML: 0 - SQL::Interp: 0 - SQL::Maker: 0 - Text::Xslate: 0 - Text::Xslate::Bridge::TT2Like: 0 - Tiffany: 0 - Time::Piece: 0 - Try::Tiny: 0 - URI::Escape: 0 - perl: 5.10.0 -resources: - license: http://dev.perl.org/licenses/ -version: 0.01 diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..6130b996 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ + +.PHONY: build +build: + docker-compose -f docker-compose.yml build web + +.PHONY: up +up: + make build + docker-compose -f docker-compose.yml up -d web + +.PHONY: down +down: + docker-compose -f docker-compose.yml down + +.PHONY: test +test: + docker-compose -f docker-compose.yml build test + docker-compose -f docker-compose.yml run test prove -Ilib -r -v t diff --git a/Makefile.PL b/Makefile.PL deleted file mode 100644 index 7d3ab21d..00000000 --- a/Makefile.PL +++ /dev/null @@ -1,57 +0,0 @@ -use inc::Module::Install; -all_from "lib/PJP.pm"; -license 'perl'; - -tests 't/*.t t/*/*.t t/*/*/*.t'; - -# XXX Use Module::Install::CPANFile or something -requires 'Amon2'; -requires 'Text::Xslate'; -requires 'Text::Xslate::Bridge::TT2Like'; -requires 'Plack::Middleware::ReverseProxy'; -requires 'Time::Piece'; -requires 'Pod::Simple' => 3.16; -requires 'Pod::Simple::XHTML'; -requires 'Log::Minimal'; -requires 'Cache::FileCache'; -requires 'CPAN::DistnameInfo'; -requires 'LWP::UserAgent'; -requires 'URI::Escape'; -requires 'Try::Tiny'; -requires 'DBD::SQLite'; -requires 'SQL::Maker' => 0.14; -requires 'DBIx::TransactionManager'; -requires 'Regexp::Common'; -requires 'Regexp::Assemble'; -requires 'Text::Diff::FormattedHTML'; -requires 'Text::Markdown'; -requires( - 'SQL::Interp' => 0, - 'Carp::Clan' => 0, - 'JSON' => 0, - 'File::Find::Rule' => 0, - 'Module::Find' => 0, - 'Server::Starter' => 0, - 'Starlet' => 0, -); - -can_run('cronlog') or do { - use File::Temp; - my $tmp = File::Temp->new(UNLINK => 1); - system "curl -L --output $tmp http://github.com/kazuho/kaztools/tarball/master"; - system "cpanm -nv $tmp"; -}; -can_run('git') or do { - system "curl -LO http://kernel.org/pub/software/scm/git/git-1.7.5.tar.bz2"; - system "tar xjvf git-1.7.5.tar.bz2"; - system "cd /home/dotcloud/code/git-1.7.5/"; - system "./configure --prefix=/home/dotcloud/perl5/ --without-tcltk"; - system "make"; - system "make install"; -}; - -test_requires 'Test::Requires'; - -# recursive_author_tests('xt'); - -WriteAll; diff --git a/cpanfile b/cpanfile index 3853039c..b246064e 100644 --- a/cpanfile +++ b/cpanfile @@ -36,3 +36,6 @@ requires 'Router::Simple'; requires 'Router::Simple::Sinatraish'; requires 'Log::Minimal'; +on 'test' => sub { + requires 'Test::WWW::Mechanize::PSGI'; +}; diff --git a/docker-compose.yml b/docker-compose.yml index 802645b9..a28b8dee 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,14 @@ version: '3' services: web: - build: . + build: + context: . + target: web ports: - "8080:5000" + test: + build: + context: . + target: test +