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(5y ago)13.6kGPL-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 2d 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 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity22

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

1980d 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://www.gravatar.com/avatar/3279e6ad0935c61fad5fb1d64d71cf44d13d27528f1514f41e71fc56d3c57354?d=identicon)[torotil](/maintainers/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

[phpspec/prophecy

Highly opinionated mocking framework for PHP 5.3+

8.5k551.7M682](/packages/phpspec-prophecy)[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[brianium/paratest

Parallel testing for PHP

2.5k118.8M754](/packages/brianium-paratest)[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k39.1M32.1k](/packages/orchestra-testbench)[pdepend/pdepend

Official version of pdepend to be handled with Composer

954110.9M815](/packages/pdepend-pdepend)[codedungeon/phpunit-result-printer

PHPUnit Pretty Result Printer

1.2k8.8M397](/packages/codedungeon-phpunit-result-printer)

PHPackages © 2026

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