Extension:Pickle
Cette extension est incompatible avec les versions MediaWiki 1.42 et suivantes ! Il vous est déconseillé d'utiliser cette extension sur un site de production. Les développeurs MediaWiki sont invités a s'engager sur leurs efforts pour mettre à jour cette extension et la rendre compatible avec MediaWiki 1.42 en remplaçant le modèle {{Incompatible }} par {{Incompatible |version=1.42|pledge=~~~~}} . |
Pickle État de la version : expérimental |
|
---|---|
Implémentation | Interface utilisateur, Extraction de données, API |
Description | Fournit un cadre de test sur site de base pour Scribunto. |
Auteur(s) |
|
Dernière version | 0.1.0 |
Politique de compatibilité | Le master conserve la compatibilité arrière. |
MediaWiki | 1.33 - 1.35 |
Modifie la base de données |
Non |
Licence | Licence publique générale GNU v2.0 ou ultérieur |
Téléchargement | GitHub: Note : README, LDoc |
Aide | Help:Pickle |
|
|
Traduire l’extension Pickle | |
L'extension Pickle (ou Behavior-driven development, BDD, anciennement Spec) est une extension pour les tests de style « spec » pour Scribunto . Spec type testing is the same type of unit testing that is done in Rspec, Busted and other similar testing frameworks. It will provide a very thin integration to PHP and a few Lua modules and their localizations. The actual code is still valid Lua, and all editing tools will work, except for missing definitions for intellisense in the various editors.
The extension is called Pickle because you pick on your code. It is also a play with words; gherkins are used for pickles. Gherkin is also a language for "step" style testing, a kind of acceptance testing, so you might say these kinds of code snippets are pickles.
An overview of the pickle extension from a user perspective can be found at Help:Pickle .
Installation
Pickle depends on the Scribunto extension. For recreating the Vagrant-based development environment, see Pickle: Topics/Vagrant.
- Téléchargez et placez le(s) fichier(s) dans un répertoire appelé
Pickle
dans votre dossierextensions/
. - Ajoutez le code suivant à la fin de votre fichier LocalSettings.php :
wfLoadExtension( 'Pickle' );
- Fait – Accédez à Special:Version sur votre wiki pour vérifier que l'extension a bien été installée.
Usage
The extension can be configured for implicit style or explicit style of tests.
The implicit style piggybacks the installation on the describe()
call, but this depends on a functional getfenv()
call.
The Scribunto extension limits the getfenv()
call, and according to Extension:Scribunto/Lua reference manual#Differences from standard Lua it is not quite predictable, thus only the explicit style will work.
The reason for the dependency on getfenv()
is that the functions are constructed before the describe()
function is called, and thus the calling run-time environment are bound without the global functions.
To insert the global functions in the correct run-time environment the describe()
call use getfenv()
.
Without the getfenv()
call the correct run-time environment must be present while creating the functions.
Thus a call describe()
must install the global functions.
Switching between the styles are done by the config { "Setup": "implicit" }
or { "Setup": "explicit" }
.
If you have a module like "Module:HelloWorld", the ubiquitous and quite pesky example, it will be coded as something like
local p = {}
function p.helloWorld()
return "Hi there!"
end
return p
Then on a subpage /pickle
you would test this like like the following
- Implicit form
return describe 'Hello world' (function()
subject .helloWorld()
it 'says hello' (function()
expect :toBe("Hi there!");
end)
end)
- Explicit form
mw.pickle:install()
describe 'Hello world' (function()
subject .helloWorld()
it 'says hello' (function()
expect :toBe("Hi there!");
end)
end)
return mw.pickle:reports()
The implicit form has the lines in the beginning and end removed, and the return statement moved down to the new end of code.
There might be additional changes, like where the tap()
call is available, and how many describe()
calls that can be made.
- Extensions incompatible with 1.42/fr
- Experimental extensions/fr
- User interface extensions/fr
- Data extraction extensions/fr
- API extensions/fr
- GPL licensed extensions/fr
- Extensions in GitHub version control/fr
- SpecTesterGadgets extensions/fr
- SpecTesteeGadgets extensions/fr
- ParserFirstCallInit extensions/fr
- ContentAlterParserOutput extensions/fr
- OutputPageParserOutput extensions/fr
- EditPage::showStandardInputs:options extensions/fr
- EditPage::showReadOnlyForm:initial extensions/fr
- ScribuntoExternalLibraries extensions/fr
- ScribuntoExternalLibraryPaths extensions/fr
- All extensions/fr