Skip to content

Commit

Permalink
Add php code coverage (secultce#515)
Browse files Browse the repository at this point in the history
  • Loading branch information
henriquelopeslima authored Jan 14, 2025
1 parent a7ffc8e commit e116d4b
Show file tree
Hide file tree
Showing 11 changed files with 116 additions and 21 deletions.
46 changes: 46 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Tests with coverage

on:
push:
branches:
- main

jobs:
code-coverage:
name: Run PHPUnit with coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Start the aurora
run: docker compose up -d --build

- name: Install dependencies
run: docker compose exec --user root php composer install

- name: Generate public/private keys for use in your application.
run: docker compose exec --user root php bin/console lexik:jwt:generate-keypair

- name: Give permissions for var
run: sudo chmod -R 777 var/

- name: Give permissions for assets/uploads
run: chmod -R 777 assets/uploads

- name: Create the phpunit.xml
run: docker compose exec --user root php cp phpunit.xml.dist phpunit.xml

- name: Run migrations
run: docker compose exec php bin/console d:m:migrate -n

- name: Run fixtures
run: docker compose exec php bin/console d:f:l -n --purge-exclusions=city --purge-exclusions=state

- name: Start the PHPUnit
run: docker compose exec --user root -T php bash -c "php -d memory_limit=512M bin/phpunit --coverage-clover=coverage.xml"

- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
files: coverage.xml
token: ${{ secrets.CODECOV_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ jobs:
run: docker compose exec php bin/console d:f:l -n --purge-exclusions=city --purge-exclusions=state

- name: Start the PHPUnit
run: docker compose exec php bin/phpunit
run: docker compose exec php bin/phpunit --no-coverage

cypress-run:
name: Run Cypress
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,14 @@ package-lock.json
###> phpunit/phpunit ###
/phpunit.xml
.phpunit.result.cache
/var/phpunit
###< phpunit/phpunit ###

###> phpunit/php-code-coverage ###
/coverage-html
coverage.xml
###< phpunit/php-code-coverage ###

###> symfony/asset-mapper ###
/public/assets/
/assets/vendor/
Expand Down
6 changes: 5 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ tests_front: load_fixtures

# Executa as fixtures de dados e os testes de back-end
tests_back: load_fixtures
docker compose exec -T php bash -c "php bin/phpunit"
docker compose exec -T php bash -c "php bin/phpunit --no-coverage"

# Executa as fixtures de dados e os testes de back-end
tests_back_coverage: load_fixtures
docker compose exec -T php bash -c "php -d memory_limit=512M bin/phpunit"

# Limpa o cache do projeto
reset:
Expand Down
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[![codecov](https://codecov.io/gh/secultce/aurora/graph/badge.svg?token=CG2AH922DO)](https://codecov.io/gh/secultce/aurora)

# Estrutura inicial Aurora

Este repositório fornece uma configuração base de aplicação Symfony com Docker, Nginx e PostgreSQL para substituir o projeto Aurora utilizado no Ceará.
Expand Down Expand Up @@ -90,7 +92,7 @@ php bin/console doctrine:migrations:migrate -n
php bin/console doctrine:fixtures:load -n
```

5 - Instalação das dependêncis do frontend:
5 - Instalação das dependências do frontend:
```bash
php bin/console importmap:install
```
Expand All @@ -107,12 +109,12 @@ php bin/console lexik:jwt:generate-keypair

### Uso

Depois que tudo estiver configurado e as dependências instaladas, você pode acessar sua aplicação Symfony em [http://localhost:8080](http://localhost:8080).
Depois que tudo estiver configurado e as dependências instaladas, você pode acessar a sua aplicação Symfony em [http://localhost:8080](http://localhost:8080).

Há também uma rota de teste para a API. Você pode acessá-la em [http://localhost:8080/api/example](http://localhost:8080/api/example). Esta rota está definida no controller `ExampleController` e retorna a mensagem de sucesso.

#### Usuário padrão
Há alguns usuarios que você pode utilizar para fins de teste:
Há alguns usuários que você pode utilizar para fins de teste:

<table>
<tr>
Expand Down Expand Up @@ -140,7 +142,7 @@ Há alguns usuarios que você pode utilizar para fins de teste:
<details>
<summary>Arquitetura e Decisões técnicas</summary>

Estamos utilizando o Symfony e o seu ecossistma de bibliotecas, porém a arquitetura é baseada em camadas e trata-se de um monolítico com a metodologia API First
Estamos utilizando o Symfony e o seu ecossistema de bibliotecas, porém a arquitetura é baseada em camadas e trata-se de um monolítico com a metodologia API First

```mermaid
flowchart TD
Expand All @@ -161,8 +163,8 @@ flowchart TD
CW --HTML/CSS/JS--> B
```

- Para saber mais sobre nossas decisões técnicas [acesse aqui](./help/TECHNICAL-DECISIONS.md)
- Para entender nosso fluxo de desenvolvimento decisões técnicas [clique aqui](./help/DEV-FLOW.md)
- Para saber mais sobre as nossas decisões técnicas [acesse aqui](./help/TECHNICAL-DECISIONS.md)
- Para entender o nosso fluxo de desenvolvimento decisões técnicas [clique aqui](./help/DEV-FLOW.md)
</details>

## Design UI/UX
Expand Down
5 changes: 0 additions & 5 deletions bin/phpunit
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,12 @@ if (!ini_get('date.timezone')) {
ini_set('date.timezone', 'UTC');
}

$options = ['--testdox'];

if (is_file(dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit')) {
if (PHP_VERSION_ID >= 80000) {
$_SERVER['argv'] = array_merge($_SERVER['argv'], $options);
require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit';
} else {
define('PHPUNIT_COMPOSER_INSTALL', dirname(__DIR__).'/vendor/autoload.php');
require PHPUNIT_COMPOSER_INSTALL;
$_SERVER['argv'] = array_merge($_SERVER['argv'], $options);
PHPUnit\TextUI\Command::main();
}
} else {
Expand All @@ -23,6 +19,5 @@ if (is_file(dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit')) {
exit(1);
}

$_SERVER['argv'] = array_merge($_SERVER['argv'], $options);
require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php';
}
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
"dama/doctrine-test-bundle": "^8.2",
"doctrine/doctrine-fixtures-bundle": "^3.6",
"friendsofphp/php-cs-fixer": "^3.62",
"phpunit/php-code-coverage": "^11.0",
"phpunit/phpunit": "^11.3",
"symfony/browser-kit": "7.1.*",
"symfony/css-selector": "7.1.*",
Expand Down
16 changes: 8 additions & 8 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions docker/php/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ COPY --chown=user:developer . /var/www

RUN chown -R www-data /var/www/assets/uploads

RUN pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& echo "zend_extension=xdebug.so" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.mode=coverage" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
&& echo "xdebug.start_with_request=no" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

USER user

EXPOSE 9000
11 changes: 11 additions & 0 deletions help/COMMANDS.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,17 @@ Executa as fixtures de dados e os testes de backend.
- **Descrição:** Carrega os dados de fixtures e roda os testes backend usando PHPUnit.
</details>

<details>

<summary>TESTS_BACK_COVERAGE</summary>

### `tests_back_coverage`
Executa as fixtures de dados, os testes de backend e gera um relatório sobre a atual cobertura de testes.
- **Uso:** `make tests_back_coverage`
- **Descrição:** Carrega os dados de fixtures e roda os testes backend usando PHPUnit, utiliza também o xdebug e a biblioteca phpunit/php-code-coverage.
> O resultado da análise de cobertura pode ser visto no diretório coverage-html, ou no arquivo coverage.xml
</details>
<details>
<summary>RESET</summary>

Expand Down
24 changes: 24 additions & 0 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,28 @@
<extensions>
<bootstrap class="DAMA\DoctrineTestBundle\PHPUnit\PHPUnitExtension"/>
</extensions>

<source>
<include>
<directory>src</directory>
</include>
<exclude>
<directory>src/Command</directory>
<directory>src/DTO</directory>
<directory>src/Helper</directory>
<directory>src/Serializer</directory>
</exclude>
</source>

<coverage pathCoverage="true">
<report>
<html outputDirectory="coverage-html"/>
<clover outputFile="coverage.xml"/>
</report>
</coverage>

<logging>
<testdoxHtml outputFile="var/phpunit/tests.html"/>
<testdoxText outputFile="var/phpunit/tests.txt"/>
</logging>
</phpunit>

0 comments on commit e116d4b

Please sign in to comment.