diff options
Diffstat (limited to 'ocaml/scripts/test_solid_boot.ml')
| -rw-r--r-- | ocaml/scripts/test_solid_boot.ml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/ocaml/scripts/test_solid_boot.ml b/ocaml/scripts/test_solid_boot.ml new file mode 100644 index 0000000..06f2380 --- /dev/null +++ b/ocaml/scripts/test_solid_boot.ml @@ -0,0 +1,59 @@ +open Nock_lib + +let rec find_project_root dir = + let pills_dir = Filename.concat dir "pills" in + if Sys.file_exists pills_dir && Sys.is_directory pills_dir then dir + else + let parent = Filename.dirname dir in + if String.equal parent dir then failwith "unable to locate project root containing pills/" + else find_project_root parent + +let project_root = + match Sys.getenv_opt "NEOVERE_ROOT" with + | Some root -> root + | None -> + let exe_dir = Filename.dirname Sys.executable_name in + find_project_root exe_dir + +let () = + Printf.printf "\n╔═══════════════════════════════════════════════════════╗\n"; + Printf.printf "║ Solid Pill Boot Test ║\n"; + Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n"; + + (* Create state *) + let state = State.create () in + + (* Step 1: Boot ivory pill *) + Printf.printf "[1] Booting ivory.pill...\n%!"; + let ivory_path = Filename.concat project_root "pills/ivory.pill" in + begin match Boot.boot_ivory state ivory_path with + | Error (Boot.Invalid_pill msg) -> + Printf.printf "✗ Ivory boot failed: %s\n%!" msg; + exit 1 + | Error (Boot.Unsupported msg) -> + Printf.printf "✗ Unsupported: %s\n%!" msg; + exit 1 + | Ok () -> + Printf.printf "✓ Ivory kernel loaded\n\n%!"; + end; + + (* Step 2: Boot solid pill events *) + Printf.printf "[2] Loading solid.pill events...\n%!"; + let solid_path = Filename.concat project_root "pills/solid.pill" in + (* Process all events *) + begin match Boot.boot_solid state solid_path with + | Error (Boot.Invalid_pill msg) -> + Printf.printf "✗ Solid boot failed: %s\n%!" msg; + exit 1 + | Error (Boot.Unsupported msg) -> + Printf.printf "✗ Unsupported: %s\n%!" msg; + exit 1 + | Ok () -> + let eve = State.event_number state in + Printf.printf "✓ Solid boot completed!\n%!"; + Printf.printf " Events played: %Ld\n\n%!" eve; + end; + + Printf.printf "╔═══════════════════════════════════════════════════════╗\n"; + Printf.printf "║ Solid boot SUCCESS! 🎉 ║\n"; + Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n" |
