WordPress plugin testen met PHPUnit – mysqli_query(): Couldn’t fetch mysqli

Verschillende WordPress plugins die we ontwikkelen bij Pronamic testen we automatisch. Hiervoor maken we gebruik van de WordPress test repository https://develop.svn.wordpress.org/ en PHPUnit. Voor onder andere de Pronamic iDEAL plugin maken we hier al een aantal jaren gebruik maken. Echter na het bijwerken naar de laatste versie van de WordPress test repository https://develop.svn.wordpress.org/ liep ik tegen de volgende foutmelding aan:

mysqli_query(): Couldn't fetch mysqli

In eerste instantie kon ik niet achterhalen waar wat fout ging, maar na lang zoeken en overleg met mijn collega Reüel heb ik hier wat meer informatie over kunnen vinden. In een WordPress.org support topic van 1½ maand geleden werd dezelfde foutmelding genoemd: https://wordpress.org/support/topic/wp_unittestcaseteardown-causes-mysqli_query-couldnt-fetch-mysqli/. Ryan McCue verwijst daar weer naar WordPress Trac ticket 39327. Hij beschrijft hier ook direct een oplossing:

Tracked this down a bit with @pento; it turns out to be a problem with PHPUnit’s global backups, and can be fixed by setting protected $backupGlobals = true in the test class. The key is that PHPUnit serialises the data and unserialises it to restore it.

Vervolgens geeft @pento later in een reactie ook aan hoe dit probleem het beste opgelost kan worden:

For an immediate plugin fix, the best option is to add backupGlobals=”false” to your phpunit.xms.dist.

Plugins zoals bijvoorbeeld Easy Digital Downloads hebben dit ook opgenomen in hun phpunit.xml  bestand: https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/phpunit.xml. Na het toevoegen van backupGlobals="false" is het probleem ook daadwerkelijk opgelost.

Schermafbeelding venster schaduw Mac OS uitschakelen

Als WordPress webontwikkelaar bij Pronamic maak ik veel gebruik van de Mac OS schermafbeelding functionaliteit (cmd ⌘ + shift ⇧ + 4 » spatie). Voornamelijk voor blog berichten, support en documentatie doeleinden komt deze functionaliteit goed van pas. Wat ik minder mooi vind is de schaduw rondom schermafbeeldingen van Mac OS applicatie vensters. Na een zoektocht via Google blijkt dit eenvoudig uitgeschakeld te kunnen worden. Door het uitvoeren van de volgende commando in de terminal is dit uit te schakelen:

defaults write com.apple.screencapture disable-shadow -bool true

Hierna zal SystemUIServer herstart moeten worden om de wijziging actief te maken:

killall SystemUIServer

Schermafbeelding met venster schaduw 

Schermafbeelding zonder venster schaduw

Uiteraard kan de schaduw ook weer ingeschakeld worden:

defaults write com.apple.screencapture disable-shadow -bool false

Bron: http://osxdaily.com/2011/05/23/disable-shadow-screen-shots-mac/