mirror of
https://github.com/birth1mark/orbis8.git
synced 2026-10-28 23:00:29 +01:00
648 lines
16 KiB
C++
648 lines
16 KiB
C++
#include <string>
|
|
#include <vector>
|
|
#include <sstream>
|
|
#include <algorithm>
|
|
|
|
#include <chrono>
|
|
#include <thread>
|
|
#include <mutex>
|
|
#include <condition_variable>
|
|
|
|
#include <stdio.h>
|
|
#include <dirent.h>
|
|
#include <errno.h>
|
|
|
|
#include "doctest.h"
|
|
#include "../libs/lodepng/lodepng.h"
|
|
|
|
#include "../source/vm.h"
|
|
#include "../source/host.h"
|
|
#include "../source/hostVmShared.h"
|
|
#include "../source/nibblehelpers.h"
|
|
#include "../source/filehelpers.h"
|
|
|
|
|
|
const vector<string> cartsToIgnore ({
|
|
"15666.p8.png",
|
|
"16069.p8.png",
|
|
"16355.p8.png",
|
|
"16507.p8.png",
|
|
"16677.p8.png",
|
|
"16965.p8.png",
|
|
"17616.p8.png",
|
|
"17853.p8.png",
|
|
"17888.p8.png",
|
|
"18124.p8.png",
|
|
"18199.p8.png",
|
|
"18560.p8.png",
|
|
"18813.p8.png",
|
|
"18987.p8.png",
|
|
"20797.p8.png",
|
|
"21114.p8.png", // intermittent
|
|
"21242.p8.png",
|
|
"21415.p8.png",
|
|
"21677.p8.png",
|
|
"21736.p8.png",
|
|
"23013.p8.png",
|
|
"23183.p8.png",
|
|
"23402.p8.png",
|
|
"23801.p8.png",
|
|
"23842.p8.png",
|
|
"23958.p8.png",
|
|
"24007.p8.png",
|
|
"24141.p8.png",
|
|
"24292.p8.png",
|
|
"24418.p8.png",
|
|
"24443.p8.png",
|
|
"24687.p8.png",
|
|
"24695.p8.png",
|
|
"25532.p8.png",
|
|
"25735.p8.png",
|
|
"25919.p8.png",
|
|
"26194.p8.png",
|
|
"26425.p8.png",
|
|
"26646.p8.png", //different logs every time
|
|
"26782.p8.png",
|
|
"27183.p8.png",
|
|
"27672.p8.png",
|
|
"27941.p8.png",
|
|
"28607.p8.png",
|
|
"28611.p8.png",
|
|
"28725.p8.png",
|
|
"28757.p8.png",
|
|
"28912.p8.png",
|
|
"29142.p8.png",
|
|
"29216.p8.png",
|
|
"29283.p8.png",
|
|
"29420.p8.png",
|
|
"29559.p8.png",
|
|
"29562.p8.png",
|
|
"29844.p8.png",
|
|
"29982.p8.png",
|
|
"30091.p8.png",
|
|
"30427.p8.png",
|
|
"30617.p8.png",
|
|
"30625.p8.png",
|
|
"30785.p8.png",
|
|
"30819.p8.png",
|
|
"30960.p8.png",
|
|
"31183.p8.png",
|
|
"31269.p8.png",
|
|
"31458.p8.png",
|
|
"31465.p8.png",
|
|
"31474.p8.png",
|
|
"31503.p8.png",
|
|
"31546.p8.png",
|
|
"32053.p8.png",
|
|
"32485.p8.png",
|
|
"32697.p8.png",
|
|
"33667.p8.png",
|
|
"34502.p8.png",
|
|
"35079.p8.png",
|
|
"36065.p8.png",
|
|
"38099.p8.png",
|
|
"38613.p8.png",
|
|
"38733.p8.png",
|
|
"38748.p8.png",
|
|
"38801.p8.png",
|
|
"38968.p8.png",
|
|
"39488.p8.png",
|
|
"39505.p8.png",
|
|
"40026.p8.png",
|
|
"40152.p8.png",
|
|
"40309.p8.png",
|
|
"40328.p8.png",
|
|
"40832.p8.png",
|
|
"40925.p8.png",
|
|
"41333.p8.png",
|
|
"41737.p8.png",
|
|
"42371.p8.png",
|
|
"42556.p8.png",
|
|
"42594.p8.png",
|
|
"42961.p8.png",
|
|
"43336.p8.png",
|
|
"43869.p8.png",
|
|
"43885.p8.png",
|
|
"44174.p8.png",
|
|
"44176.p8.png",
|
|
"44632.p8.png",
|
|
"45029.p8.png",
|
|
"49042.p8.png",
|
|
"49173.p8.png",
|
|
"49919.p8.png",
|
|
"50458.p8.png",
|
|
"50646.p8.png",
|
|
"50802.p8.png",
|
|
"51786.p8.png",
|
|
"52377.p8.png",
|
|
"53087.p8.png",
|
|
"53717.p8.png",
|
|
"53887.p8.png",
|
|
"53938.p8.png",
|
|
"53994.p8.png",
|
|
"54184.p8.png",
|
|
"54407.p8.png",
|
|
"54477.p8.png",
|
|
"54654.p8.png",
|
|
"54744.p8.png",
|
|
"54912.p8.png",
|
|
"55036.p8.png",
|
|
"55219.p8.png",
|
|
"55253.p8.png",
|
|
"55422.p8.png",
|
|
"55520.p8.png",
|
|
"55576.p8.png",
|
|
"55585.p8.png",
|
|
"55699.p8.png",
|
|
"55773.p8.png",
|
|
"55781.p8.png",
|
|
"55785.p8.png",
|
|
"55795.p8.png",
|
|
"56003.p8.png",
|
|
"56040.p8.png",
|
|
"56234.p8.png",
|
|
"57097.p8.png",
|
|
"57177.p8.png",
|
|
"57355.p8.png",
|
|
"57362.p8.png",
|
|
"57398.p8.png",
|
|
"57568.p8.png",
|
|
"57748.p8.png",
|
|
"58068.p8.png",
|
|
"58100.p8.png",
|
|
"58429.p8.png",
|
|
"58624.p8.png",
|
|
"58730.p8.png",
|
|
"58876.p8.png",
|
|
"58914.p8.png",
|
|
"58923.p8.png",
|
|
"59036.p8.png",
|
|
"59043.p8.png",
|
|
"59051.p8.png",
|
|
"59078.p8.png",
|
|
"59084.p8.png",
|
|
"59095.p8.png",
|
|
"59103.p8.png",
|
|
"59115.p8.png",
|
|
"59186.p8.png",
|
|
"59190.p8.png",
|
|
"ac_pensate_dw817-0.p8.png",
|
|
"all_32_colors-0.p8.png",
|
|
"amongtweets-0.p8.png",
|
|
"angel_devil-3.p8.png",
|
|
"another_3d_snake-0.p8.png",
|
|
"another_bad_dream-2.p8.png",
|
|
"aquova_pipes-0.p8.png",
|
|
"aquova_simon_says-0.p8.png",
|
|
"astroclerkfonts-1.p8.png",
|
|
"atc1-0.p8.png",
|
|
"atributetomule-0.p8.png",
|
|
"avalanche_02-0.p8.png",
|
|
"axnjaxn_ajml-2.p8.png",
|
|
"axnjaxn_packmap-0.p8.png",
|
|
"bean_pride_2020-0.p8.png",
|
|
"bo-0.p8.png",
|
|
"boc_roygbiv-0.p8.png",
|
|
"bosegizare-0.p8.png",
|
|
"br-1.p8.png",
|
|
"brw-3.p8.png",
|
|
"catacombae-0.p8.png",
|
|
"catch128-0.p8.png",
|
|
"cds-1.p8.png",
|
|
"ch_func_demo-0.p8.png",
|
|
"char_maker-5.p8.png",
|
|
"chrprinter-2.p8.png",
|
|
"citylimits-0.p8.png",
|
|
"cocreate_demo-0.p8.png",
|
|
"convparade-0.p8.png",
|
|
"conways_garden-0.p8.png",
|
|
"corrupt-4.p8.png",
|
|
"cosmic_painter-0.p8.png",
|
|
"crashlinernd-0.p8.png",
|
|
"crazy_maze-0.p8.png",
|
|
"cs-1.p8.png",
|
|
"cursed_petri-0.p8.png",
|
|
"cursed_sword-14.p8.png", //sigsegv
|
|
"d8ing-0.p8.png",
|
|
"debug-2.p8.png",
|
|
"deep-0.p8.png", //sigsegv
|
|
"deform-0.p8.png",
|
|
"dehobigezu-0.p8.png",
|
|
"demo_realtime_sdf-0.p8.png",
|
|
"diruwopusa-0.p8.png",
|
|
"diwipeboju-0.p8.png",
|
|
"dofinihade-0.p8.png",
|
|
"dt-0.p8.png",
|
|
"dufrasago-1.p8.png",
|
|
"duhozayoda-0.p8.png",
|
|
"dvd-0.p8.png",
|
|
"dvdtweet-0.p8.png",
|
|
"empathy-0.p8.png",
|
|
"esiyc-0.p8.png",
|
|
"evening_train_ride-0.p8.png",
|
|
"eyn_smplsndbx-0.p8.png",
|
|
"f2ba-5.p8.png",
|
|
"fairchild001-10.p8.png",
|
|
"fb-1.p8.png",
|
|
"fesiwimufa-0.p8.png",
|
|
"fireballrebirth-0.p8.png",
|
|
"firroref-0.p8.png",
|
|
"flippingout-0.p8.png",
|
|
"fohekireba-0.p8.png",
|
|
"fohekireba-1.p8.png",
|
|
"fokmawope-0.p8.png",
|
|
"fract-1.p8.png",
|
|
"frlytweetningow-4.p8.png",
|
|
"frostpunk_pico-1.p8.png",
|
|
"frozax_windrose-0.p8.png",
|
|
"fruitlicker-1.p8.png",
|
|
"gajeyabin-0.p8.png",
|
|
"game_and_timer_ball-2.p8.png", //sigsegv
|
|
"game_and_timer_vermin-1.p8.png", //sigsegv
|
|
"gbc_startup-0.p8.png",
|
|
"ghostbuster-0.p8.png",
|
|
"gijenijato-0.p8.png",
|
|
"gimufopapi-0.p8.png",
|
|
"giopacbeta0-0.p8.png",
|
|
"gojefesozi-0.p8.png",
|
|
"golf560-0.p8.png",
|
|
"golfnado_pico_beanborg-0.p8.png",
|
|
"gotchimiya-0.p8.png",
|
|
"gumiradesu-0.p8.png",
|
|
"ha-1.p8.png",
|
|
"hackattack-0.p8.png",
|
|
"hg-6.p8.png",
|
|
"higininufo-0.p8.png",
|
|
"higumakeba-1.p8.png",
|
|
"hitting_the_slopes-1.p8.png",
|
|
"hot_simba-0.p8.png",
|
|
"hs-0.p8.png",
|
|
"humblebumble-3.p8.png",
|
|
"husotekaso-0.p8.png",
|
|
"huwihewesa-0.p8.png",
|
|
"im_a_big_fan-0.p8.png",
|
|
"impossible-1.p8.png",
|
|
"irrigationsim1-18.p8.png",
|
|
"iymp-0.p8.png",
|
|
"jack_o_random-0.p8.png",
|
|
"jammerboard-1.p8.png",
|
|
"jiyiyarodo-0.p8.png",
|
|
"jokenpico-0.p8.png",
|
|
"jotototubo-0.p8.png",
|
|
"jump_flood-1.p8.png",
|
|
"jumugujido-0.p8.png",
|
|
"jutejoguto-0.p8.png",
|
|
"karel_the_robot-0.p8.png",
|
|
"katamar1k-0.p8.png",
|
|
"keep_it_alive-0.p8.png",
|
|
"kesopohn-0.p8.png",
|
|
"kirbyinstarfield-0.p8.png",
|
|
"kirbys_big_bean_blast-0.p8.png",
|
|
"kukafamapa-0.p8.png",
|
|
"kumodot02-0.p8.png",
|
|
"la-0.p8.png",
|
|
"lighthouse-0.p8.png",
|
|
"lonesector-0.p8.png",
|
|
"loveisfunny-0.p8.png",
|
|
"lr280-0.p8.png",
|
|
"lucylovepebs-0.p8.png",
|
|
"lunar_blackout-0.p8.png",
|
|
"luvbomber-0.p8.png",
|
|
"lzw-1.p8.png",
|
|
"mab-0.p8.png",
|
|
"mawonidaba-0.p8.png",
|
|
"microgolf-6.p8.png",
|
|
"midcopy1234-0.p8.png",
|
|
"mifehifiwi-0.p8.png",
|
|
"migukohizo-0.p8.png",
|
|
"mikimekar-2.p8.png",
|
|
"monraibresim-0.p8.png",
|
|
"moon_rises-1.p8.png",
|
|
"mot_dodgeballs-1.p8.png",
|
|
"mujusukip-0.p8.png",
|
|
"navonova_wip1-0.p8.png",
|
|
"ndarwyi-0.p8.png",
|
|
"newfont2021-0.p8.png",
|
|
"nhr-4.p8.png",
|
|
"nilquesteasymode-0.p8.png",
|
|
"nipewihimi-0.p8.png",
|
|
"noclip5_card-0.p8.png",
|
|
"noclipexistential-0.p8.png",
|
|
"nocliplost-1.p8.png",
|
|
"noclipseen-0.p8.png",
|
|
"noggins_tweet-0.p8.png",
|
|
"notabs-0.p8.png",
|
|
"nuhodupiku-0.p8.png",
|
|
"nuzobanija-1.p8.png",
|
|
"obj_import_v01-1.p8.png",
|
|
"oneoffgrid-1.p8.png",
|
|
"p8os_early-1.p8.png",
|
|
"p_harrier-0.p8.png",
|
|
"pandemic-0.p8.png",
|
|
"paziwerize-0.p8.png",
|
|
"pc-0.p8.png",
|
|
"pejawedogu-0.p8.png",
|
|
"pet_the_puppos-0.p8.png",
|
|
"phonemes-0.p8.png",
|
|
"pico8lisp1-7.p8.png",
|
|
"pico_dictator-0.p8.png",
|
|
"pico_dictator101-0.p8.png",
|
|
"pico_punks-0.p8.png",
|
|
"picochallenge-0.p8.png",
|
|
"picoenix-0.p8.png",
|
|
"picoforth-0.p8.png",
|
|
"picolander-0.p8.png", //sigsegv - intermittent?
|
|
"picosolo-4.p8.png",
|
|
"picoteras_1-0.p8.png",
|
|
"picotrainsim-2.p8.png",
|
|
"picozelda-2.p8.png",
|
|
"pinchpoint-0.p8.png",
|
|
"pug_nographicpong-4.p8.png",
|
|
"pushline-0.p8.png",
|
|
"pw_renoiser-2.p8.png",
|
|
"px3_font-0.p8.png",
|
|
"px9-8.p8.png",
|
|
"quadmirrortool-0.p8.png",
|
|
"quantumbullshit-1.p8.png",
|
|
"quasarkid-7.p8.png",
|
|
"rainbow_tunnel-0.p8.png",
|
|
"rajadadaji-0.p8.png",
|
|
"rawepemaze-0.p8.png",
|
|
"reference-0.p8.png",
|
|
"refifomope-0.p8.png",
|
|
"remcode_backbuffer-4.p8.png",
|
|
"renapanehi-0.p8.png",
|
|
"render_speed_dif-0.p8.png",
|
|
"rg_snowytweet-0.p8.png",
|
|
"rg_tweettweet2-0.p8.png",
|
|
"roreguwuwo-0.p8.png",
|
|
"rubaseruzi-0.p8.png",
|
|
"ruzihedana-0.p8.png",
|
|
"s2tb-0.p8.png",
|
|
"sa-0.p8.png",
|
|
"santa1080-4.p8.png",
|
|
"scrap_boy_jam-0.p8.png",
|
|
"sebatudfi-0.p8.png",
|
|
"sepbowka-0.p8.png",
|
|
"shelob-0.p8.png",
|
|
"shelost8bitcontrol-0.p8.png",
|
|
"simple_mouse-0.p8.png",
|
|
"simpleca_040421-3.p8.png",
|
|
"siparefiti-0.p8.png",
|
|
"slingshott-0.p8.png",
|
|
"slushies3_v1-0.p8.png",
|
|
"smal-0.p8.png",
|
|
"smr_beta-0.p8.png",
|
|
"smr_extra_themes-0.p8.png",
|
|
"snowflake_tweetcart-0.p8.png",
|
|
"sonder-0.p8.png",
|
|
"sots-2.p8.png",
|
|
"spaceinvader0-8.p8.png",
|
|
"spaceoban-1.p8.png",
|
|
"spajukuro-0.p8.png",
|
|
"spritetool-1.p8.png",
|
|
"spys_demise-3.p8.png",
|
|
"squiddy-0.p8.png",
|
|
"starlight_saviors-0.p8.png",
|
|
"starmr-0.p8.png",
|
|
"starshot560-0.p8.png",
|
|
"stinkerb06rmg-1.p8.png",
|
|
"str2board-0.p8.png",
|
|
"sudjusiwe-0.p8.png",
|
|
"sufehasede-0.p8.png",
|
|
"sunrise-0.p8.png",
|
|
"super_mario_pico_stars-1.p8.png",
|
|
"superdiscbox-0.p8.png",
|
|
"swatty-0.p8.png",
|
|
"sweet_sip-0.p8.png",
|
|
"swirlypinwheel-0.p8.png",
|
|
"tardis_toolkit-1.p8.png",
|
|
"tater_evader-0.p8.png",
|
|
"td_3ddots-0.p8.png",
|
|
"tempres-0.p8.png",
|
|
"tentropy-0.p8.png",
|
|
"terrainauto-0.p8.png",
|
|
"terraworldviewer-3.p8.png",
|
|
"the_wall-0.p8.png",
|
|
"tinier_mondrian-0.p8.png",
|
|
"tirudomonu-0.p8.png",
|
|
"tline_sprite_rotation-2.p8.png",
|
|
"ttj5_canary-2.p8.png",
|
|
"tuteduhipo-0.p8.png",
|
|
"tweetbubblewrap-1.p8.png",
|
|
"tweetcartgame-1.p8.png",
|
|
"tweetcollectorgame-0.p8.png",
|
|
"tweetpaint-4.p8.png",
|
|
"tweettweetjamsnake-0.p8.png",
|
|
"twtw_bnb_remcode-0.p8.png",
|
|
"ultima_vi_intro_music-0.p8.png",
|
|
"untitled_sfx-0.p8.png",
|
|
"voroterrain-5.p8.png",
|
|
"vowels-0.p8.png",
|
|
"wadesupuso-0.p8.png",
|
|
"wapedabika-0.p8.png",
|
|
"wayofemigu-0.p8.png",
|
|
"weaver-0.p8.png",
|
|
"whereswilly-2.p8.png",
|
|
"whiletrue-0.p8.png",
|
|
"wijagabufi-0.p8.png",
|
|
"windstock-0.p8.png",
|
|
"wurorogoga-0.p8.png",
|
|
"xor_flower-0.p8.png",
|
|
"yijebofuse-0.p8.png",
|
|
"yizokigaga-0.p8.png",
|
|
"yugoyigabo-1.p8.png",
|
|
"ywosahuru-3.p8.png",
|
|
"zamidenamu-0.p8.png",
|
|
"zegegawido-0.p8.png",
|
|
"zehomimugi-0.p8.png",
|
|
"zodajeph-0.p8.png",
|
|
"zoyifizotu-0.p8.png",
|
|
|
|
//newly introduced 20220710 -- looks like from fixing exponent parsing
|
|
"39807.p8.png", // ?? this one might be intermittent
|
|
"59251.p8.png",
|
|
"amongthestars560-3.p8.png",
|
|
"avoid_the_worms-0.p8.png",
|
|
"begi_ideocart-0.p8.png",
|
|
"bitdraw-3.p8.png",
|
|
"blockbop560-1.p8.png",
|
|
"borecode-0.p8.png",
|
|
"brake_machine_broke_ld49-1.p8.png",
|
|
"bubblecat-0.p8.png",
|
|
"bubblecat-2.p8.png",
|
|
"bubblegum-0.p8.png",
|
|
"chico8-2.p8.png",
|
|
"christmas_present_panic-1.p8.png",
|
|
"circleattack560-0.p8.png",
|
|
"cursedconsole-0.p8.png",
|
|
"curve_dasher-0.p8.png",
|
|
"ebeamanime2-0.p8.png",
|
|
"endlessrunner_tweet-0.p8.png",
|
|
"fishy-0.p8.png",
|
|
"flappy_tweet-1.p8.png",
|
|
"footy560-0.p8.png",
|
|
"gt-1.p8.png",
|
|
"inside_the_hole-0.p8.png",
|
|
"isidore-0.p8.png",
|
|
"jetpackcollectorgame-1.p8.png", //crashes, doesn't hang
|
|
"ketabarihu-0.p8.png",
|
|
"kinezapubo-0.p8.png",
|
|
"lemniscate_redux-0.p8.png",
|
|
"manvirusreal-0.p8.png",
|
|
"mmo_moon_tut_ver-0.p8.png",
|
|
"munro_tweetcarts-5.p8.png",
|
|
//"nayadunaze-1.p8.png", //just long load
|
|
"nintweetasketch-0.p8.png",
|
|
"p8r-4.p8.png",
|
|
"p8sciiviz560-0.p8.png",
|
|
"petri-0.p8.png",
|
|
"pico_1k_jam_invitation-0.p8.png",
|
|
"picoforth-4.p8.png",
|
|
"pigeo-0.p8.png",
|
|
"r56oh-0.p8.png",
|
|
"racenosun_560-0.p8.png",
|
|
"redblocc-0.p8.png",
|
|
"rg_discord_swarm-0.p8.png",
|
|
"si-1.p8.png",
|
|
"somuneyetu-0.p8.png",
|
|
"spirograph-1.p8.png",
|
|
"suziwagiwo-0.p8.png",
|
|
"t3dsd-0.p8.png",
|
|
"thepicomermaid-0.p8.png",
|
|
"totafohese-0.p8.png",
|
|
"tweet_invaders-0.p8.png",
|
|
"tweetgario-0.p8.png",
|
|
"tweetormergame-0.p8.png",
|
|
"twrogue-2.p8.png",
|
|
"void_roller-0.p8.png",
|
|
"vvm-6.p8.png",
|
|
"wall_jump_platformer-4.p8.png",
|
|
});
|
|
|
|
string checkCart(Vm* vm, string cartDirectory, string cart){
|
|
printf("%s\n", cart.c_str());
|
|
vm->LoadCart(cartDirectory + "/" + cart, false);
|
|
|
|
if (vm->GetBiosError() != "") {
|
|
return vm->GetBiosError();
|
|
}
|
|
else
|
|
{
|
|
vm->Step();
|
|
|
|
if (vm->GetBiosError() != "") {
|
|
vm->GetBiosError();
|
|
}
|
|
}
|
|
|
|
vm->CloseCart();
|
|
|
|
return "";
|
|
}
|
|
/*
|
|
string checkCart_wrapper(string cartDirectory, string cart)
|
|
{
|
|
std::mutex m;
|
|
std::condition_variable cv;
|
|
string retValue;
|
|
|
|
Host* host = new Host();
|
|
Vm* vm = new Vm(host);
|
|
|
|
std::thread t([&cv, &vm, &cartDirectory, &cart, &retValue]()
|
|
{
|
|
retValue = checkCart(vm, cartDirectory, cart);
|
|
cv.notify_one();
|
|
});
|
|
|
|
t.detach();
|
|
|
|
{
|
|
std::unique_lock<std::mutex> l(m);
|
|
if(cv.wait_for(l, 1s) == std::cv_status::timeout) {
|
|
retValue = "timeout";
|
|
//This leaks host and vm. Not sure of alternative?
|
|
return retValue;
|
|
//vm->CloseCart();
|
|
}
|
|
}
|
|
|
|
delete vm;
|
|
delete host;
|
|
|
|
return retValue;
|
|
}
|
|
*/
|
|
|
|
|
|
TEST_CASE("Loading and running carts") {
|
|
vector<string> carts;
|
|
vector<string> errors;
|
|
|
|
|
|
//TODO: build library of carts to test- set up compiler flag?
|
|
std::string _cartDirectory = "";
|
|
|
|
DIR *dir;
|
|
struct dirent *ent;
|
|
if (!_cartDirectory.empty() && (dir = opendir (_cartDirectory.c_str())) != NULL) {
|
|
/* print all the files and directories within directory */
|
|
while ((ent = readdir (dir)) != NULL) {
|
|
if (isCartFile(ent->d_name)
|
|
&& ! isCPostFile(ent->d_name)
|
|
&& std::find(cartsToIgnore.begin(), cartsToIgnore.end(), ent->d_name) == cartsToIgnore.end()) {
|
|
carts.push_back(ent->d_name);
|
|
}
|
|
}
|
|
closedir (dir);
|
|
} else if (!_cartDirectory.empty()) {
|
|
/* could not open directory */
|
|
perror ("Cart directory");
|
|
}
|
|
sort(carts.begin(), carts.end());
|
|
|
|
//sort(cartsToIgnore.begin(), cartsToIgnore.end());
|
|
string lastKnownError = cartsToIgnore[cartsToIgnore.size() - 1];
|
|
|
|
|
|
Host* host = new Host();
|
|
Vm* vm = new Vm(host);
|
|
|
|
|
|
for(int i = 0; i < carts.size(); i++) {
|
|
|
|
//if (carts[i] < lastKnownError) {
|
|
// continue;
|
|
//}
|
|
|
|
try {
|
|
//string result = checkCart_wrapper(_cartDirectory, carts[i]);
|
|
|
|
string result = checkCart(vm, _cartDirectory, carts[i]);
|
|
|
|
if (result.length() > 0) {
|
|
errors.push_back(carts[i] + ": " + result);
|
|
}
|
|
}
|
|
catch(std::runtime_error& e) {
|
|
errors.push_back(carts[i] + ": Timeout" + e.what());
|
|
}
|
|
}
|
|
|
|
if (errors.size() > 0) {
|
|
printf("\n");
|
|
printf("ERRORS:\n");
|
|
for (int i = 0; i < errors.size(); i++) {
|
|
printf("%s\n", errors[i].c_str());
|
|
}
|
|
}
|
|
|
|
//TODO: compile known errors, make sure none are introduced
|
|
|
|
delete vm;
|
|
delete host;
|
|
|
|
}
|
|
|