Installare PHPUnit su MAMP

Ciao a tutti,
ho notato che l’installazione e la preparazione dell’environment per l’utilizzo di PHPUnit su MAMP non è poi così semplice … quindi vorrei fare un pò di chiarezza e dare delle linee guida per eseguire velocemente l’installazione di questo fantastico strumento per lo unit testing.

Informazioni sulla mia installazione :

  • MAMP 2.0.5 (ma non dovreste aver problemi anche con versione più datate)
  • PHP 5.3.6
  • Mac OS X Lion 10.7

Installiamo PHPUnit :

Dato che MAMP permette di gestire versioni multiple di PHP, decidiamo innanzitutto su che versione di PHP installare PHPUnit … nel mio caso ho scelto la 5.3.6.

Quindi apriamo il Terminale e digitiamo :
cd /Applications/MAMP/bin/php/php5.3.6/bin
sudo ./pear channel-update pear.php.net
sudo ./pear upgrade pear

Nel caso in cui PEAR vi segnali questo messaggio :

Notice: unserialize(): Error at offset 276 of 1133 bytes in Config.php on line 1050
ERROR: The default config file is not a valid config file or is corrupted.

Andate nella directory “/Applications/MAMP/bin/php/php5.3.6/conf” e rinominate il file “pear.conf” in “_pear.conf”, poi eseguite nuovamente i comandi

Bene, ora procediamo ad aggiungere i canali ed a eseguire la vera e propria installazione di PHPUnit

sudo ./pear channel-discover pear.phpunit.de
sudo ./pear channel-discover pear.symfony-project.com
sudo ./pear install --alldeps phpunit/PHPUnit

Ora PHPUnit è installato … proviamo a digitare :

./phpunit --version

PHPUnit 3.6.4 by Sebastian Bergmann.

E dovremmo visualizzare la versione di PHPUnit … questo è un buon segno, significa che funziona! :-)

Ma ecco un problemino (e ti pareva) … nel Terminale siamo costretti a specificare ogni volta il percorso di MAMP dove risiede la versione di PHPUnit che abbiamo appena installato; non se ne parla proprio!!

Quindi risolviamo facilmente il problema (siamo ancora nella directory “/Applications/MAMP/bin/php/php5.3.6/bin”) :

sudo cp ./phpunit /usr/bin/phpunit

Bene, ora possiamo, eseguire “phpunit” dal nostro terminale senza doverci preoccupare di andare a specificare la cartella di MAMP dove l’abbiamo installato.

Un’ultima cosa … nel caso in cui siate utilizzatori del framework FuelPHP, potrebbe succedere una cosa poco simpatica quando provate ad eseguire lo unit test, ovvero con il comando “php oil test” potrebbe ritornare un messaggio :

Error: PHPUnit does not appear to be installed.

Please visit http://phpunit.de and install.

Ma l’abbiamo già installato!!!!!! Il problema è che il comando “php” viene eseguito dalla cartella /usr/bin e non dalla versione di MAMP che ci aspettiamo!
Beh allora risolviamo anche questo, verifichiamo innanzitutto da dove viene eseguito il comando aprendo il Terminale e digitando :

rfc-1918:bin davide$ which php
/usr/bin/php

Abbiamo la prova che sta eseguendo PHP dalla cartella sbagliata … sistemiamolo :

rfc-1918:bin davide$ cd /usr/bin/
rfc-1918:bin davide$ sudo mv php _php
Password:
rfc-1918:bin davide$ sudo ln -s /Applications/MAMP/bin/php/php5.3.6/bin/php php
rfc-1918:bin davide$ php --version
PHP 5.3.6 (cli) (built: Sep 15 2011 11:22:25)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies
    with XCache v1.3.1, Copyright (c) 2005-2010, by mOo

In poche parole rinominiamo l’attuale file PHP in “_php” in modo che non venga eseguito e creiamo un Symlink per indicare al Terminale che al comando “php …” deve essere eseguito “/Applications/MAMP/bin/php/php5.3.6/bin/php”.

Bene siamo operativi … ora eseguendo “php oil test” dalla directory del nostro progetto FuelPHP dovrebbe funzionare tutto regolarmente