diff --git a/Manual_tests.md b/Manual_tests.md index d7be344..8957542 100644 --- a/Manual_tests.md +++ b/Manual_tests.md @@ -12,7 +12,8 @@ Initializing settings: - run with a filename on commandline, scroll around, quit; restart with new filename; window opens new filename with cursor up top - run editor, scroll around, move cursor to end of some line, quit; restart with new filename; window opens in same position+dimensions - - run with an unsupported version. Error message pops up and waits for a key. The app attempts to continue, and doesn't receive the key. + - run with an untested version. Error message pops up and waits for a key. The app attempts to continue, and doesn't receive the key. + - run with a LÖVE v12 release candidate. No errors; it is a supported version. All tests pass. Code loading: * run love with directory; text editor runs diff --git a/app.lua b/app.lua index 6f8892e..3c711ed 100644 --- a/app.lua +++ b/app.lua @@ -7,16 +7,21 @@ -- and a source editor, while giving each the illusion of complete -- control. function love.run() + Version, Major_version = App.love_version() App.snapshot_love() -- Tests always run at the start. Test_errors = {} App.run_tests() if #Test_errors > 0 then - error('There were test failures:\n\n'..table.concat(Test_errors)) + local error_message = '' + if Warning_before_tests then + error_message = Warning_before_tests..'\n\n' + end + error_message = error_message .. ('There were %d test failures:\n%s'):format(#Test_errors, table.concat(Test_errors)) + error(error_message) end --? print('==') - App.version_check() App.disable_tests() App.initialize_globals() App.initialize(love.arg.parseGameArguments(arg), arg) @@ -58,6 +63,12 @@ end App = {} +function App.love_version() + local major_version, minor_version = love.getVersion() + local version = major_version..'.'..minor_version + return version, major_version +end + -- save/restore various framework globals we care about -- only on very first load function App.snapshot_love() if Love_snapshot then return end diff --git a/main.lua b/main.lua index dba2e58..c6b3fab 100644 --- a/main.lua +++ b/main.lua @@ -13,19 +13,11 @@ require 'main_tests' require 'edit' Editor_state = {} -function App.version_check() - Mode = 'version_check' - Supported_versions = {'11.5', '11.4', '11.3', '11.2', '11.1', '11.0', '12.0'} -- put the recommended version first - local minor_version - Major_version, minor_version = love.getVersion() - Version = Major_version..'.'..minor_version - if array.find(Supported_versions, Version) then - Mode = 'run' - end -end - -- called both in tests and real run function App.initialize_globals() + Supported_versions = {'11.5', '11.4', '12.0'} -- put the recommended version first + check_love_version_for_tests() + -- tests currently mostly clear their own state -- blinking cursor @@ -37,6 +29,13 @@ function App.initialize_globals() Last_resize_time = 0 end +function check_love_version_for_tests() + if array.find(Supported_versions, Version) == nil then + -- warning to include in an error message if any tests failed + Warning_before_tests = ("This app hasn't been tested with LÖVE version %s."):format(Version) + end +end + -- called only for real run function App.initialize(arg) love.keyboard.setTextInput(true) -- bring up keyboard on touch screen @@ -77,6 +76,15 @@ function App.initialize(arg) jit.off() jit.flush() end + + check_love_version() +end + +function check_love_version() + if array.find(Supported_versions, Version) == nil then + Mode = 'version_check' + -- continue initializing everything; hopefully we won't have errors during initialization + end end function print_and_log(s) @@ -173,7 +181,7 @@ function App.draw() love.graphics.setColor(1,1,0) love.graphics.rectangle('fill', 30,30, 400,400) love.graphics.setColor(0,0,0) - love.graphics.printf(("This app doesn't support version %s; please use version %s. Press any key to try it with this version anyway."):format(Version, Supported_versions[1]), 40,40, 400) + love.graphics.printf(("This app hasn't been tested with LÖVE version %s; please switch to version %s if you run into issues. Press any key to continue."):format(Version, Supported_versions[1]), 40,40, 400) return end edit.draw(Editor_state) diff --git a/reference.md b/reference.md index d0956ba..1f1f724 100644 --- a/reference.md +++ b/reference.md @@ -11,6 +11,9 @@ automatically called for you as appropriate. * `flags` -- some properties of the app window. See [`flags` in `love.graphics.getMode`](https://love2d.org/wiki/love.window.getMode) for details. +* `Version` -- the running version of LÖVE as a string, e.g. '11.4'. +* `Major_version` -- just the part before the period as an int, e.g. 11. + ## Functions that get automatically called * `App.initialize_globals()` -- called before running each test and also