# PHPUnit PHAR: скачивание и запуск тестов

Эта инструкция показывает, как запускать тесты проекта через фиксированный PHP-бинарь:

- PHP-бинарь: `/home/xc_vm/bin/php/bin/php`
- PHPUnit-бинарь: локальный `tools/.bin/phpunit.phar`

## Почему так

`phpunit.phar` не содержит PHP внутри и всегда запускается через интерпретатор PHP.

Если запускать `./phpunit.phar` напрямую, может использоваться другой `php` из `PATH`.
Чтобы исключить ошибки окружения, используйте явный путь к бинарю.

## 1. Проверить PHP

```bash
/home/xc_vm/bin/php/bin/php -v
```

## 2. Скачать PHPUnit PHAR

Проект использует PHP 8.1, поэтому используйте PHPUnit 10.

```bash
cd /home/xc_vm
mkdir -p tools/.bin
wget -O tools/.bin/phpunit.phar https://phar.phpunit.de/phpunit-10.phar
chmod +x tools/.bin/phpunit.phar
```

## 3. Проверить запуск PHPUnit

```bash
/home/xc_vm/bin/php/bin/php tools/.bin/phpunit.phar --version
```

## 4. Запустить все тесты

Конфиг проекта:

- `tests/phpunit.xml.dist`

Запуск:

```bash
/home/xc_vm/bin/php/bin/php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist
```

## 5. Запустить один тестовый файл

```bash
/home/xc_vm/bin/php/bin/php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist tests/Unit/GitHubReleasesTest.php
```

## 6. Показать, какой тест выполняется сейчас

Для подробного вывода текущего выполняемого теста используйте режим отладки:

```bash
/home/xc_vm/bin/php/bin/php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist --debug --no-progress
```

## 7. Опционально: вывод покрытия

Если установлен `xdebug` или `pcov`:

```bash
XDEBUG_MODE=coverage /home/xc_vm/bin/php/bin/php tools/.bin/phpunit.phar -c tests/phpunit.xml.dist --coverage-text
```

## Заметка по безопасности

Не храните `phpunit.phar` в git-репозитории. Оставляйте его локально (`tools/.bin`) и обновляйте отдельно.

## Связанные файлы

| Файл | Роль |
| --- | --- |
| `tools/.bin/phpunit.phar` | Запиненный бинарь PHPUnit |
| `tests/phpunit.xml.dist` | Конфигурация PHPUnit |
| `tests/bootstrap.php` | Бутстрап тестов (автозагрузчик Composer + константы) |
