PHPackages                             torotil/upal - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. torotil/upal

ActiveLibrary[Testing &amp; Quality](/categories/testing)

torotil/upal
============

PHPUnit integeration for Drupal

1.2.1(6y ago)13.8kGPL-2.0+PHPPHP &gt;=7.0

Since Nov 18Pushed 5y ago1 watchersCompare

[ Source](https://github.com/torotil/upal)[ Packagist](https://packagist.org/packages/torotil/upal)[ Docs](https://github.com/torotil/upal)[ RSS](/packages/torotil-upal/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependencies (1)Versions (10)Used By (0)

A group of classes used to help run tests using PHPUnit in Drupal.

upal assumes that tests are allowed to modify the database.

Usage
-----

[](#usage)

- Install PHPUnit () and Drush ().
- Checkout or download a core Drupal that is to be tested (only tested with 7.x).
- Use any of `Upal\*TestCase` classes as base-class for your tests.
- With PHP7.2+ you need a bootstrap script that bootstraps at least to level 4, ie. calls `\Upal\DrupalBootstrap::bootstrap(4)`.

Configuration
-------------

[](#configuration)

By default the configuration is read from `UPAL_*` environment variables. If that’s fine for you only need to ensure that upal’s classes are autoloadable.

Configuration can be loaded from array or file (YAML, XML, etc). upal uses this config library: .

### Example bootstrap.php

[](#example-bootstrapphp)

```
$config = new Upal\Config();
$config->set('drush', '/path/to/drush');
$config->set('drupal_root', '/path/to/drupal/root');
Upal\DrupalBootstrap::$config = $config;
```

### Config Defaults

[](#config-defaults)

- `drush`: `UPAL_DRUSH`, `trim(`which drush`)`
- `root`: `UPAL_ROOT`, `realpath('.')`
- `web_url`: `UPAL_WEB_URL`, `'http://upal'`
- `tmp`: `UPAL_TMP`, `sys_get_temp_dir()`

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity23

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity62

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~107 days

Recently: every ~188 days

Total

8

Last Release

2027d ago

Major Versions

1.2.1 → 2.0.0-RC12020-12-10

PHP version history (2 changes)1.1.0PHP &gt;=5.3.0

1.1.2PHP &gt;=7.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/182122?v=4)[Roman Zimmermann](/maintainers/torotil)[@torotil](https://github.com/torotil)

---

Top Contributors

[![torotil](https://avatars.githubusercontent.com/u/182122?v=4)](https://github.com/torotil "torotil (41 commits)")[![weitzman](https://avatars.githubusercontent.com/u/7740?v=4)](https://github.com/weitzman "weitzman (24 commits)")[![chriscalip](https://avatars.githubusercontent.com/u/479454?v=4)](https://github.com/chriscalip "chriscalip (17 commits)")[![indytechcook](https://avatars.githubusercontent.com/u/121603?v=4)](https://github.com/indytechcook "indytechcook (14 commits)")[![jordansebastian](https://avatars.githubusercontent.com/u/1842772?v=4)](https://github.com/jordansebastian "jordansebastian (3 commits)")[![msonnabaum](https://avatars.githubusercontent.com/u/49792?v=4)](https://github.com/msonnabaum "msonnabaum (1 commits)")[![jhedstrom](https://avatars.githubusercontent.com/u/76833?v=4)](https://github.com/jhedstrom "jhedstrom (1 commits)")

### Embed Badge

![Health badge](/badges/torotil-upal/health.svg)

```
[![Health](https://phpackages.com/badges/torotil-upal/health.svg)](https://phpackages.com/packages/torotil-upal)
```

###  Alternatives

[codedungeon/phpunit-result-printer

PHPUnit Pretty Result Printer

1.2k8.9M407](/packages/codedungeon-phpunit-result-printer)[dms/phpunit-arraysubset-asserts

This package provides ArraySubset and related asserts once deprecated in PHPUnit 8

14228.7M341](/packages/dms-phpunit-arraysubset-asserts)[acquia/orca

A tool for testing a company's software packages together in the context of a realistic, functioning, best practices Drupal build

30914.4k](/packages/acquia-orca)[duxweb/dux-lite

The lightweight framework based on slim php

161.0k9](/packages/duxweb-dux-lite)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
