diff --git a/.github/workflows/build_docker_images.yml b/.github/workflows/build_docker_images.yml index 9a930e0..6b08460 100644 --- a/.github/workflows/build_docker_images.yml +++ b/.github/workflows/build_docker_images.yml @@ -15,6 +15,8 @@ jobs: - {type: "php", tag: "php-only"} - {type: "swoole", tag: "swoole-enabled"} + name: build image deminy/counit:${{ matrix.docker.tag }} + steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 58263ad..4239da0 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -16,39 +16,38 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Setup Services + - name: Start Docker Containers + uses: isbang/compose-action@v1.5.1 + + - name: Install Dependencies run: | - docker-compose up -d - docker exec -t $(docker ps -qf "name=swoole") sh -c "composer require phpunit/phpunit ${{ matrix.phpunit }} -nq --no-progress" + set -ex + sleep 15 # Seems that we need to give the MySQL container enough time to warm up. - docker ps + + docker compose exec -T swoole composer require "phpunit/phpunit=${{ matrix.phpunit }}" -W -nq --no-progress + docker compose exec -T swoole ./vendor/bin/phpunit --version # Check current version of PHPUnit. - name: Run Unit Tests run: | set -ex - # Check current version of PHPUnit. - docker exec -t $(docker ps -qf "name=swoole") sh -c "./vendor/bin/phpunit --version" - # Run tests using PHPUnit (Swoole is disabled). - docker exec -t $(docker ps -qf "name=php") sh -c "./vendor/bin/phpunit --testsuite global" - docker exec -t $(docker ps -qf "name=php") sh -c "./vendor/bin/phpunit --testsuite case-by-case" + docker compose exec -T php ./vendor/bin/phpunit --testsuite global + docker compose exec -T php ./vendor/bin/phpunit --testsuite case-by-case # Run tests using PHPUnit, with Swoole enabled. - docker exec -t $(docker ps -qf "name=swoole") sh -c "./vendor/bin/phpunit --testsuite global" - docker exec -t $(docker ps -qf "name=swoole") sh -c "./vendor/bin/phpunit --testsuite case-by-case" + docker compose exec -T swoole ./vendor/bin/phpunit --testsuite global + docker compose exec -T swoole ./vendor/bin/phpunit --testsuite case-by-case # Run tests using counit (Swoole is disabled). - docker exec -t $(docker ps -qf "name=php") sh -c "./counit --testsuite global" - docker exec -t $(docker ps -qf "name=php") sh -c "./counit --testsuite case-by-case" + docker compose exec -T php ./counit --testsuite global + docker compose exec -T php ./counit --testsuite case-by-case # Run tests using counit, with Swoole enabled. - docker exec -t $(docker ps -qf "name=swoole") sh -c "./counit --testsuite global" - docker exec -t $(docker ps -qf "name=swoole") sh -c "./counit --testsuite case-by-case" + docker compose exec -T swoole ./counit --testsuite global + docker compose exec -T swoole ./counit --testsuite case-by-case # Test compatibility with PHPUnit. - docker exec -t $(docker ps -qf "name=php") sh -c "./counit --testsuite compatibility" - docker exec -t $(docker ps -qf "name=swoole") sh -c "./counit --testsuite compatibility" - - - name: Stop and Remove Docker Containers - run: docker-compose down + docker compose exec -T php ./counit --testsuite compatibility + docker compose exec -T swoole ./counit --testsuite compatibility diff --git a/README.md b/README.md index 5e9181d..ddc8599 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ To run the sample tests, please start the Docker containers and install Composer ```bash docker-compose up -d -docker exec -ti $(docker ps -qf "name=swoole") sh -c "composer install -n" +docker compose exec -ti swoole composer install -n ``` There are five containers started: a PHP container, a Swoole container, a Redis container, a MySQL container, and a web @@ -241,34 +241,34 @@ Here we will run the tests under different environments, with or without Swoole. ```bash # To run test suite "global": -docker exec -ti $(docker ps -qf "name=php") sh -c "./vendor/bin/phpunit --testsuite global" +docker compose exec -ti php ./vendor/bin/phpunit --testsuite global # or, -docker exec -ti $(docker ps -qf "name=swoole") sh -c "./vendor/bin/phpunit --testsuite global" +docker compose exec -ti swoole ./vendor/bin/phpunit --testsuite global # To run test suite "case-by-case": -docker exec -ti $(docker ps -qf "name=php") sh -c "./vendor/bin/phpunit --testsuite case-by-case" +docker compose exec -ti php ./vendor/bin/phpunit --testsuite case-by-case # or, -docker exec -ti $(docker ps -qf "name=swoole") sh -c "./vendor/bin/phpunit --testsuite case-by-case" +docker compose exec -ti swoole ./vendor/bin/phpunit --testsuite case-by-case ``` `#2` Run the test suites using _counit_ (without Swoole): ```bash # To run test suite "global": -docker exec -ti $(docker ps -qf "name=php") sh -c "./counit --testsuite global" +docker compose exec -ti php ./counit --testsuite global # To run test suite "case-by-case": -docker exec -ti $(docker ps -qf "name=php") sh -c "./counit --testsuite case-by-case" +docker compose exec -ti php ./counit --testsuite case-by-case ``` `#3` Run the test suites using _counit_ (with extension Swoole enabled): ```bash # To run test suite "global": -docker exec -ti $(docker ps -qf "name=swoole") sh -c "./counit --testsuite global" +docker compose exec -ti swoole ./counit --testsuite global # To run test suite "case-by-case": -docker exec -ti $(docker ps -qf "name=swoole") sh -c "./counit --testsuite case-by-case" +docker compose exec -ti swoole ./counit --testsuite case-by-case ``` The first two sets of commands take about same amount of time to finish. The last set of commands uses _counit_ and runs