A remo házi feladat megoldása közben biztos mindenkinek hasznára vált volna, hogy a titkos teszteseteket le tudja futtatni lokálisan, hiszen a centralizált tesztelésre egy teljes napot kell várni.

A modern programozástani elvek alapján tudjuk, hogy a gyors feedback loop jelentősen elősegíti a produktivitást, az egy nap pedig nem igazán számítható gyorsnak, főleg a mai körülmények mellett. Képzeljük el, mi történne, ha mindenki csak napi egyszer futtathatná le a programjait miközben fejleszti azokat. Valami hasonló, mint az 50-es évek, de most nem is ez a lényeg, hanem, hogy nyilván mindenki szeretne ez ellen tenni valamit. Ezen kényszerérzet beteljesítésére próbál a jelenlegi cikk és a leírt segédprogram valamiféle lehetőséget biztosítani.

A segédprogram

Röviden leírva, a segédprogram egy Perl nyelven írt szkript, ami a sikertelenül⁠[1] leadott remo házi kimenetéből tud egy parciális teszt esetet létrehozni. Ezzel megoldható, hogy az eddig sikertelen—​és titkos—​teszteket a lokális környezetben is ki lehessen próbálni, így nem kell a mindenkori holnap hajnalig várni a módosításaink sikerességének ellenőrzésére.

Bár pár nem szabványos csomagot is felhasznál a remo virtuális gépen található Perl verzióhoz illesztett szkript, egy összecsomagolt, a virtuális gépre készített, futtatható fájl formátumában elérhető—​csak egy függőség (manuális) telepítésére van szükség.

Maga a program grafikus felülettel rendelkezik, de csak parancssorból hajlandó elindulni a cikk írásának pillanatában (2022-03-26 23:46).

Telepítés

Ahogy a fentiekben is le lett írva, a nyers Perl forrás összecsomagolt formátumban elérhető innen: https://arnyekschereg.sch.bme.hu/~bodand/bin/mk-test, de az érdeklődőknek, az igazából elég rondácskára sikeredett⁠[2] Perl forrás is elérhető a https://arnyekschereg.sch.bme.hu/~bodand/bin/mk-test.pl címen. A következőkben a csomagolt program telepítését tárgyaljuk.

Aki esetleg szeretné a Perl verziót működésre bírni, annak a szükséges csomagok listázása egy röpke leírással ál rendelkezésre, illetve egy marék szerencse, amit mindenki a lokális varázslójánál igényelhet.

Az előre csomagolt verizó (ajánlott)

Ha valaki csak le szeretné futtatni a programot, ez mindenképpen a neki kigondolt megoldás.

Csupán két dolgot kell megtennie:

  1. A fentebb jegyzett linkről letölteni az mk-test programot, és eltárolni azt egy tetszőleges mappában. Érdemes könnyen elérhető mappát választani (pl. /home/remo/Downloads), de mindenki válassza meg magának, hogy mennyit szeretne gépelni.

  2. A Tk grafikus felületet telepíteni a rendszerre. Ez a remo virtuális gépen szimplán a sudo apt install tk paranccsal tehető meg.⁠[3]

Ezek után csak parancssorból kell odanavigálni az előbbiekben választott tetszőleges mappához. Ha esetlegesen valaki nem lenne jártas a UNIX származék operációs rendszerek parancssoros kezelésében, ezt a cd <mappanév> paranccsal teheti meg, ahol <mappanév> értelem szerűen a mk-test fájlt tartalmazó mappa neve. Ez esetlegesen kimásolható a fájl kezelőből, ilyenkor a Ctrl+Shift+v billentyűkombináció használatos beillesztésre.

A program indítása ilyenkor a ./mk-test parancs kiadásával lehetséges. Ha erre megjelenik—​pár figyelmeztető üzenet mellett—​egy grafikus ablak, kész vagyunk.

A perl verzió működésbe hozása

A Perl függőségeken kívül a Tk könyvtárat kell beszerezni a rendszer csomagkezelő programjával. A remo virtuális gépen ez a egyszerűen a tk csomag.

A szükséges Perl verzió, a remo virtuális gépeken alapból megtalálható 5.26-os verzió.

A Perl programnak szüksége van a Tkx, és Readonly csomagokra—​mind kettő megtalálható a CPAN-on.

Ezek meglétében a szkriptnek működnie kell.

Használat

Most, hogy mindenki rendelkezik a neki megfelelő mk-test programmal, ami jelenleg fut, a program használata tárgyalandó.

Ez felettébb egyszerű: két bemeneti mező és két gombból áll a képernyő. Ezekből háromra feltétlen szükség van, a negyedik pedig kényelmi funkció.

Projekt mappa

A felső vékony szövegbeviteli mező a remo házi projektjének mappájának megadására használható. Amennyiben valaki ezt tallózni szeretné, a ... nevű gomb lesz segítségére.

Ez nem az Eclipse Workspace, amit indításkor meg kell adni, hanem az abban található projekt mappa. Ez az a mappa ami a homework.sct fájlt tartalmazza.

Hibaüzenet

A nagy szövegdoboz a HF portál által generált hibakód. Ez az első hibás teszt nevétől másolandó, azaz az első Result of hidden test cases: és az azt követő üres sorokra nincs szükség, sőt nem is szabad, hogy beillesztésre kerüljenek.

Miután a szövegdoboz tartalma a következőkkel eléggé hasonló tartalommal kezdődik, jól végeztük dolgunkat.

checkSomeFancyThing
----------

Start

Ha mindent megfelelőnek találunk, akkor a Start gomb megnyomásával telepíthetjük a lokális teszteseteink közé a visszafejtett titkos tesztet. Ilyenkor, csupán elővigyázatosságból, ne fusson se maga a program, se a szimuláció, bár elméletileg nem okoznának problémát.

Ha minden sikerült, látszólag semmit nem csinált a program, viszont a tesztesetek el lettek készítve. Minden egyéb esetben hibaüzenettel fogunk találkozni. Ha ez történik, kérünk mindenkit, hogy egy ticketet készítsen ezen a linken: https://vcs.isdevnet.com/xme/tktnew. A ticket leadásához az ASCII betűkombináció legépelése lesz szükséges az anonymous fiók használatához. Lehetőleg a teljes hibaüzenetet küldjük el.

Licenc

Mind a Perl kód, mind a csomagolt program a BSD0 licenc keretei mellett elérhető bárki számára. A teljes licenc következik:

Copyright © 2022 by bodand <[email protected]>

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


1. Értsd: nem hibátlan.
2. Ezzel a Tkx grafikus csomagot vádolom, mivel a nagyon Tcl közelisége nem segíti a könnyen kezelhető és értelmesen kinéző Perl szkriptek készítését Tk-val.
3. A jelszó remo, ha nem állította át senki.