Extension:Pickle
This extension is incompatible with MediaWiki 1.42 or any later release! You are advised against using this extension on a live site. MediaWiki developers are invited to pledge their efforts to updating this extension to make it compatible with MediaWiki 1.42 by replacing the {{Incompatible }} template with {{Incompatible |version=1.42|pledge=~~~~}} . |
Pickle Utgivelsesstatus: eksperimentell |
|
---|---|
Implementasjon | Brukergrensesnitt, Datauthenting, API |
Beskrivelse | Gir grunnleggende pickle-testing for Scribunto på nettstedet. |
Forfatter(e) | |
Siste versjon | 0.1.0 |
Kompatibilitetsregler | Master maintains backward compatibility. |
MediaWiki | 1.33 - 1.35 |
Databaseendringer | Nei |
Lisens | GNU General Public License 2.0 eller senere |
Last ned | GitHub: Note: README, LDoc |
Help | Help:Pickle |
|
|
Translate the Pickle extension | |
Pickle (eller Oppførselsdrevet utvikling, tidligere Spec) utvidelsen er en utviding for «spec» type testing i Scribunto . Spec-type testing er samme type enhetstesting som blir gjort i Rspec, Busted og andre lignende testrammeverk. Den vil tilby et veldig tynt integrasjonslag mot PHP og noen få Lua-moduler og tilhørende lokaliseringer. Den faktiske koden er fortsatt gyldig Lua, og alle redigeringsverktøy vil fungere, med unntak av manglende definisjoner for intellisense i de forskjellige editorene.
Utvidelsen kalles Pickle fordi du plukker på din kode. Det er også et spill med ord; sylteagurk (gherkin) er brukt for pickles Gherkin er også et språk for «step»-stil testing, en type akseptansetesting, så du kan si at disse typene av kodesnutter er pickles.
En oversikt over pickle-utvidelsen fra et brukerperspektiv finnes på Help:Pickle .
Installering
Spec avhenger av Scribunto -utvidelsen. For å gjenskape det Vagrant-baserte utviklingsmiljøet, se Pickle: Topics/Vagrant.
- Download and place the file(s) in a directory called
Pickle
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php file:
wfLoadExtension( 'Pickle' );
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Bruk
Utvidelsen kan bli konfigurert for implisitt eller eksplisitt teststil.
Den implisitte stilen henger seg på installasjonen via describe()
kallet, men dette er avhengig av et funksjonelt getfenv()
kall.
Scribunto-utvidelsen begrenser getfenv()
kall, og i henhold til Extension:Scribunto/Lua reference manual#Differences from standard Lua så er dette ikke helt forutsigelig, dermed er bare den eksplisitte formen fungere.
Grunnen til avhengigheten av getfenv()
er at funksjonene er konstruert før describe()
er kalt, og dermed er det kallende kjøremiljøet allerede bundet uten de globale funksjonene.
For å injisere de globale funksjonene i det riktige kjøremiljøet bruker describe()
kallet getfenv()
.
Uten getfenv()
kallet må det korrekte kjøremiljøet være tilgjengelig når funksjonene skapes.
Dermed må et kall describe()
installere de globale funksjonene.
Bytting mellom stiler blir gjort med konfigurasjonen { "Setup": "implicit" }
eller { "Setup": "explicit" }
.
Hvis du har en modul slik som «Module:HelloWorld», det allestedsnærværende og ganske irriterende eksemplet, så vil det være kodet som noe ala
local p = {}
function p.helloWorld()
return "Hi there!"
end
return p
Deretter, på en testside /pickle
, vil du teste dette som det etterfølgende
- Implisitt form
return describe 'Hello world' (function()
subject .helloWorld()
it 'says hello' (function()
expect :toBe("Hi there!");
end)
end)
- Eksplisitt form
mw.pickle:install()
describe 'Hello world' (function()
subject .helloWorld()
it 'says hello' (function()
expect :toBe("Hi there!");
end)
end)
return mw.pickle:reports()
På den implisitte formen er linjene i starten og på slutten blitt fjernet, og returutsagnet er flyttet ned til slutten av koden.
Det kan være ekstra endringer, slik som hvor kallet tap()
er tilgjengelig, og hvor mange describe()
som kan bli gjort.
- Extensions incompatible with 1.42/nb
- Experimental extensions/nb
- User interface extensions/nb
- Data extraction extensions/nb
- API extensions/nb
- GPL licensed extensions/nb
- Extensions in GitHub version control/nb
- SpecTesterGadgets extensions/nb
- SpecTesteeGadgets extensions/nb
- ParserFirstCallInit extensions/nb
- ContentAlterParserOutput extensions/nb
- OutputPageParserOutput extensions/nb
- EditPage::showStandardInputs:options extensions/nb
- EditPage::showReadOnlyForm:initial extensions/nb
- ScribuntoExternalLibraries extensions/nb
- ScribuntoExternalLibraryPaths extensions/nb
- All extensions/nb