Conversation
- Unit tests using unittest2 for ScriptCtx (tests/unit/) - VM script tests with custom runner (tests/vm/) - Custom testing framework for VM (vmlib/enu/testing.nim) - Nimble tasks: unit_tests, vm_tests, test - CI integration in all dist workflows
- Unit tests for Color, Vector3, and Transform JSON serialization - VM tests for state_machine loop and transitions - VM tests for parse_sig macro helper - Additional mock functions in runner for sleep, action_running
Tests round-trip JSON serialization for Build and Bot units, including id, transform origin, and color preservation.
9b4c2e5 to
9f80580
Compare
- Add --level-dir and --enu-test command line flags for test mode - Add has_block_at() and block_color_at() API for block queries - Add test world with bot movement and block placement tests - Update nimble test task to run unit, VM, and world tests - Add world tests to macOS and Windows CI workflows - Auto-exit with proper exit code when all test scripts complete Known bugs documented with commented-out tests: - left/right/up/down in move mode all move in forward direction - has_block_at doesn't find blocks at negative local coordinates
5897102 to
a51b9eb
Compare
cdeaa97 to
90f2560
Compare
- Add build task to tasks.nim - Update GitHub Actions to nim 2.2.6 - Replace nimble setup with atlas install && atlas rep - Replace nimble task calls with nim task calls - Update CLAUDE.md with new build commands
- world_tests now propagates exit codes so CI fails when tests fail - Bot movement calculates finish position upfront instead of reading potentially stale model position (matches Build behavior)
…tests - Comment out world_tests in Windows CI (no headless support until Godot 4) - Move atlas install/rep to nim prereqs task, remove from CI scripts - Disable mouse/keyboard input when TestMode is active - Fix rotation getter to return -180..180 range instead of 0..360
The dist_package build uses -d:dist which sets lib_dir paths relative to the packaged distribution layout. Headless tests run from vendor/godot/bin/ so need a non-dist build.
nim.cfg is gitignored and generated by atlas rep. On cache hit, dist_prereqs was skipped, leaving no nim.cfg and causing builds to fail with "cannot open file: pkg/compiler/nimeval".
Godot incorrectly added control:true to macOS keybindings when the project was opened. Reverted to control:false while keeping the Godot 3.6 serialization updates (canceled property).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
nimble testcommand that runs all test types with proper exit codesChanges
Test Infrastructure
tests/unit/) - test ScriptCtx, serializers without Godottests/vm/) - test vmlib API via command-line script executionvmlib/worlds/tests/) - tests that run inside EnuCommand Line Flags
--level-dir <path>- load specific level directory--enu-test- enable test mode (auto-exit when scripts finish)New API
has_block_at(position)- check if block exists at world positionblock_color_at(position)- get color of block at world positionBug Fixes
Known Bugs (documented with commented-out tests)
left/right/up/downin move mode all move in forward directionTest plan
nimble unit_testspassesnimble vm_testspassesnimble world_testspassesnimble testruns all three and reports correctly