Extension:Pickle

This page is a translated version of the page Extension:Pickle and the translation is 96% complete.
Outdated translations are marked like this.
Manual for MediaWiki-utvidelser
Pickle
Utgivelsesstatus: eksperimentell
px
Implementasjon Brukergrensesnitt, Datauthenting, API
Beskrivelse Gir grunnleggende pickle-testing for Scribunto på nettstedet.
Forfatter(e)
  • John Erling Blad (Jebladdiskusjon)
Siste versjon 0.1.0
Kompatibilitetsregler Master maintains backward compatibility.
MediaWiki 1.33 - 1.35
Databaseendringer Nei
Composer jeblad/pickle
Lisens GNU General Public License 2.0 eller senere
Last ned
README, LDoc
Help Help:Pickle
  • $wgIndicator
  • $wgLogEntry
  • $wgExtractor
  • $wgCategory
  • $wgTAP
  • $wgInvokeSubpage
  • $wgTranslationPath
  • $wgDefaultNamespace
  • $wgRenderTypes
  • $wgObserverID
  • $wgSetup
  • $wgExtractStatus
  • $wgExtractorPath
  • $wgNeglectSubpages
  • $wgTranslationFollows
  • $wgRenderPath
  • $wgRenderStyles
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 your extensions/ 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.