Browse Source

tweaks for hardware tests

ell 1 year ago
parent
commit
6a2ba9322e

+ 1 - 1
testing/classes/TestMethod.lua

@@ -379,7 +379,7 @@ TestMethod = {
     local failure = ''
     local failures = 0
     for a=1,#self.asserts do
-      -- @TODO show all failued assertion methods?
+      -- @TODO show all failed assertion methods?
       -- currently just shows the first assert that failed
       if not self.asserts[a].passed and not self.skipped then
         if failure == '' then failure = self.asserts[a] end

File diff suppressed because it is too large
+ 0 - 0
testing/examples/lovetest_runAllTests.html


+ 19 - 19
testing/examples/lovetest_runAllTests.md

@@ -1,33 +1,33 @@
-<!-- PASSED 339 || FAILED 0 || SKIPPED 9 || TIME 14.445 -->
+<!-- PASSED 335 || FAILED 0 || SKIPPED 9 || TIME 14.817 -->
 
 ### Info
-**348** tests were completed in **14.445s** with **339** passed, **0** failed, and **9** skipped
+**344** tests were completed in **14.817s** with **335** passed, **0** failed, and **9** skipped
 
 Renderer: OpenGL | 4.1 Metal - 76.3 | Apple | Apple M1 Max
 
 ### Report
 | Module                | Pass | Fail | Skip | Time   |
 | --------------------- | ------ | ------ | ------- | ------ |
-| 🟢 audio | 28 | 0 | 0 | 0.865s |
-| 🟢 data | 12 | 0 | 0 | 0.209s |
-| 🟢 event | 4 | 0 | 2 | 0.104s |
-| 🟢 filesystem | 29 | 0 | 2 | 0.546s |
-| 🟢 font | 7 | 0 | 0 | 0.117s |
-| 🟢 graphics | 104 | 0 | 1 | 2.948s |
+| 🟢 audio | 28 | 0 | 0 | 0.886s |
+| 🟢 data | 12 | 0 | 0 | 0.212s |
+| 🟢 event | 4 | 0 | 2 | 0.103s |
+| 🟢 filesystem | 29 | 0 | 2 | 0.555s |
+| 🟢 font | 7 | 0 | 0 | 0.124s |
+| 🟢 graphics | 104 | 0 | 1 | 3.006s |
 | 🟢 image | 5 | 0 | 0 | 0.085s |
 | 🟢 joystick | 6 | 0 | 0 | 0.106s |
-| 🟢 keyboard | 9 | 0 | 0 | 0.151s |
-| 🟢 love | 10 | 0 | 0 | 0.166s |
-| 🟢 math | 20 | 0 | 0 | 0.339s |
-| 🟢 mouse | 18 | 0 | 0 | 0.303s |
-| 🟢 physics | 26 | 0 | 0 | 0.439s |
+| 🟢 keyboard | 9 | 0 | 0 | 0.150s |
+| 🟢 love | 6 | 0 | 0 | 0.098s |
+| 🟢 math | 20 | 0 | 0 | 0.337s |
+| 🟢 mouse | 18 | 0 | 0 | 0.302s |
+| 🟢 physics | 26 | 0 | 0 | 0.434s |
 | 🟢 sensor | 1 | 0 | 0 | 0.016s |
-| 🟢 sound | 4 | 0 | 0 | 0.073s |
-| 🟢 system | 6 | 0 | 2 | 0.137s |
+| 🟢 sound | 4 | 0 | 0 | 0.072s |
+| 🟢 system | 6 | 0 | 2 | 0.135s |
 | 🟢 thread | 5 | 0 | 0 | 0.363s |
-| 🟢 timer | 6 | 0 | 0 | 2.076s |
-| 🟢 touch | 3 | 0 | 0 | 0.007s |
-| 🟢 video | 2 | 0 | 0 | 0.040s |
-| 🟢 window | 34 | 0 | 2 | 5.355s |
+| 🟢 timer | 6 | 0 | 0 | 2.074s |
+| 🟢 touch | 3 | 0 | 0 | 0.023s |
+| 🟢 video | 2 | 0 | 0 | 0.039s |
+| 🟢 window | 34 | 0 | 2 | 5.696s |
 
 ### Failures

+ 251 - 259
testing/examples/lovetest_runAllTests.xml

@@ -1,40 +1,40 @@
-<testsuites name="love.test" tests="339" failures="0" skipped="9" time="14.445">
-	<testsuite name="love.audio" tests="28" failures="0" skipped="0" time="0.865">
-		<testcase classname="RecordingDevice" name="RecordingDevice" assertions="20" time="0.391">
+<testsuites name="love.test" tests="335" failures="0" skipped="9" time="14.817">
+	<testsuite name="love.audio" tests="28" failures="0" skipped="0" time="0.886">
+		<testcase classname="RecordingDevice" name="RecordingDevice" assertions="20" time="0.398">
 		</testcase>
-		<testcase classname="Source" name="Source" assertions="54" time="0.021">
+		<testcase classname="Source" name="Source" assertions="54" time="0.022">
 		</testcase>
-		<testcase classname="getActiveEffects" name="getActiveEffects" assertions="3" time="0.015">
+		<testcase classname="getActiveEffects" name="getActiveEffects" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="getActiveSourceCount" name="getActiveSourceCount" assertions="3" time="0.018">
+		<testcase classname="getActiveSourceCount" name="getActiveSourceCount" assertions="3" time="0.019">
 		</testcase>
 		<testcase classname="getDistanceModel" name="getDistanceModel" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="getDopplerScale" name="getDopplerScale" assertions="2" time="0.019">
 		</testcase>
-		<testcase classname="getEffect" name="getEffect" assertions="4" time="0.019">
+		<testcase classname="getEffect" name="getEffect" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="getMaxSceneEffects" name="getMaxSceneEffects" assertions="1" time="0.015">
+		<testcase classname="getMaxSceneEffects" name="getMaxSceneEffects" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getMaxSourceEffects" name="getMaxSourceEffects" assertions="1" time="0.016">
+		<testcase classname="getMaxSourceEffects" name="getMaxSourceEffects" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getOrientation" name="getOrientation" assertions="6" time="0.017">
+		<testcase classname="getOrientation" name="getOrientation" assertions="6" time="0.018">
 		</testcase>
-		<testcase classname="getPosition" name="getPosition" assertions="3" time="0.015">
+		<testcase classname="getPosition" name="getPosition" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="getRecordingDevices" name="getRecordingDevices" assertions="1" time="0.016">
+		<testcase classname="getRecordingDevices" name="getRecordingDevices" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getVelocity" name="getVelocity" assertions="3" time="0.019">
+		<testcase classname="getVelocity" name="getVelocity" assertions="3" time="0.017">
 		</testcase>
 		<testcase classname="getVolume" name="getVolume" assertions="1" time="0.019">
 		</testcase>
-		<testcase classname="isEffectsSupported" name="isEffectsSupported" assertions="1" time="0.019">
+		<testcase classname="isEffectsSupported" name="isEffectsSupported" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="newQueueableSource" name="newQueueableSource" assertions="3" time="0.017">
+		<testcase classname="newQueueableSource" name="newQueueableSource" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="newSource" name="newSource" assertions="6" time="0.019">
 		</testcase>
-		<testcase classname="pause" name="pause" assertions="2" time="0.018">
+		<testcase classname="pause" name="pause" assertions="2" time="0.019">
 		</testcase>
 		<testcase classname="play" name="play" assertions="1" time="0.019">
 		</testcase>
@@ -42,49 +42,49 @@
 		</testcase>
 		<testcase classname="setDopplerScale" name="setDopplerScale" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="setEffect" name="setEffect" assertions="3" time="0.019">
+		<testcase classname="setEffect" name="setEffect" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="setMixWithSystem" name="setMixWithSystem" assertions="1" time="0.018">
+		<testcase classname="setMixWithSystem" name="setMixWithSystem" assertions="1" time="0.019">
 		</testcase>
-		<testcase classname="setOrientation" name="setOrientation" assertions="6" time="0.016">
+		<testcase classname="setOrientation" name="setOrientation" assertions="6" time="0.018">
 		</testcase>
 		<testcase classname="setPosition" name="setPosition" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="setVelocity" name="setVelocity" assertions="3" time="0.017">
+		<testcase classname="setVelocity" name="setVelocity" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="setVolume" name="setVolume" assertions="1" time="0.017">
+		<testcase classname="setVolume" name="setVolume" assertions="1" time="0.019">
 		</testcase>
 		<testcase classname="stop" name="stop" assertions="2" time="0.019">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.data" tests="12" failures="0" skipped="0" time="0.209">
+	<testsuite name="love.data" tests="12" failures="0" skipped="0" time="0.212">
 		<testcase classname="ByteData" name="ByteData" assertions="10" time="0.016">
 		</testcase>
-		<testcase classname="CompressedData" name="CompressedData" assertions="12" time="0.017">
+		<testcase classname="CompressedData" name="CompressedData" assertions="12" time="0.018">
 		</testcase>
-		<testcase classname="compress" name="compress" assertions="45" time="0.017">
+		<testcase classname="compress" name="compress" assertions="45" time="0.018">
 		</testcase>
-		<testcase classname="decode" name="decode" assertions="4" time="0.017">
+		<testcase classname="decode" name="decode" assertions="4" time="0.019">
 		</testcase>
 		<testcase classname="decompress" name="decompress" assertions="18" time="0.017">
 		</testcase>
 		<testcase classname="encode" name="encode" assertions="15" time="0.018">
 		</testcase>
-		<testcase classname="getPackedSize" name="getPackedSize" assertions="3" time="0.020">
+		<testcase classname="getPackedSize" name="getPackedSize" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="hash" name="hash" assertions="6" time="0.018">
+		<testcase classname="hash" name="hash" assertions="6" time="0.019">
 		</testcase>
 		<testcase classname="newByteData" name="newByteData" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newDataView" name="newDataView" assertions="3" time="0.019">
+		<testcase classname="newDataView" name="newDataView" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="pack" name="pack" assertions="4" time="0.016">
+		<testcase classname="pack" name="pack" assertions="4" time="0.017">
 		</testcase>
 		<testcase classname="unpack" name="unpack" assertions="3" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.event" tests="4" failures="0" skipped="2" time="0.104">
-		<testcase classname="clear" name="clear" assertions="1" time="0.015">
+	<testsuite name="love.event" tests="4" failures="0" skipped="2" time="0.103">
+		<testcase classname="clear" name="clear" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="poll" name="poll" assertions="1" time="0.018">
 		</testcase>
@@ -93,16 +93,16 @@
 		</testcase>
 		<testcase classname="push" name="push" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="quit" name="quit" assertions="1" time="0.018">
+		<testcase classname="quit" name="quit" assertions="1" time="0.017">
 		</testcase>
 		<testcase classname="wait" name="wait" assertions="0" time="0.018">
 			<skipped message="used internally" />
 		</testcase>
 	</testsuite>
-	<testsuite name="love.filesystem" tests="29" failures="0" skipped="2" time="0.546">
-		<testcase classname="File" name="File" assertions="36" time="0.017">
+	<testsuite name="love.filesystem" tests="29" failures="0" skipped="2" time="0.555">
+		<testcase classname="File" name="File" assertions="36" time="0.018">
 		</testcase>
-		<testcase classname="FileData" name="FileData" assertions="12" time="0.016">
+		<testcase classname="FileData" name="FileData" assertions="12" time="0.017">
 		</testcase>
 		<testcase classname="append" name="append" assertions="6" time="0.018">
 		</testcase>
@@ -114,22 +114,22 @@
 		</testcase>
 		<testcase classname="getCRequirePath" name="getCRequirePath" assertions="1" time="0.019">
 		</testcase>
-		<testcase classname="getDirectoryItems" name="getDirectoryItems" assertions="2" time="0.020">
+		<testcase classname="getDirectoryItems" name="getDirectoryItems" assertions="2" time="0.019">
 		</testcase>
-		<testcase classname="getIdentity" name="getIdentity" assertions="1" time="0.019">
+		<testcase classname="getIdentity" name="getIdentity" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getInfo" name="getInfo" assertions="3" time="0.020">
+		<testcase classname="getInfo" name="getInfo" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="getRealDirectory" name="getRealDirectory" assertions="1" time="0.018">
+		<testcase classname="getRealDirectory" name="getRealDirectory" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getRequirePath" name="getRequirePath" assertions="1" time="0.019">
+		<testcase classname="getRequirePath" name="getRequirePath" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getSaveDirectory" name="getSaveDirectory" assertions="1" time="0.016">
+		<testcase classname="getSaveDirectory" name="getSaveDirectory" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getSource" name="getSource" assertions="0" time="0.017">
+		<testcase classname="getSource" name="getSource" assertions="0" time="0.018">
 			<skipped message="used internally" />
 		</testcase>
-		<testcase classname="getSourceBaseDirectory" name="getSourceBaseDirectory" assertions="1" time="0.016">
+		<testcase classname="getSourceBaseDirectory" name="getSourceBaseDirectory" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getUserDirectory" name="getUserDirectory" assertions="1" time="0.017">
 		</testcase>
@@ -137,245 +137,245 @@
 		</testcase>
 		<testcase classname="isFused" name="isFused" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="lines" name="lines" assertions="6" time="0.019">
+		<testcase classname="lines" name="lines" assertions="6" time="0.017">
 		</testcase>
-		<testcase classname="load" name="load" assertions="4" time="0.018">
+		<testcase classname="load" name="load" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="mount" name="mount" assertions="5" time="0.017">
+		<testcase classname="mount" name="mount" assertions="5" time="0.019">
 		</testcase>
-		<testcase classname="newFileData" name="newFileData" assertions="1" time="0.016">
+		<testcase classname="newFileData" name="newFileData" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="openFile" name="openFile" assertions="4" time="0.017">
+		<testcase classname="openFile" name="openFile" assertions="4" time="0.019">
 		</testcase>
 		<testcase classname="read" name="read" assertions="6" time="0.018">
 		</testcase>
 		<testcase classname="remove" name="remove" assertions="5" time="0.019">
 		</testcase>
-		<testcase classname="setCRequirePath" name="setCRequirePath" assertions="1" time="0.016">
+		<testcase classname="setCRequirePath" name="setCRequirePath" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="setIdentity" name="setIdentity" assertions="1" time="0.016">
+		<testcase classname="setIdentity" name="setIdentity" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="setRequirePath" name="setRequirePath" assertions="1" time="0.016">
+		<testcase classname="setRequirePath" name="setRequirePath" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="setSource" name="setSource" assertions="0" time="0.016">
+		<testcase classname="setSource" name="setSource" assertions="0" time="0.018">
 			<skipped message="used internally" />
 		</testcase>
 		<testcase classname="unmount" name="unmount" assertions="2" time="0.019">
 		</testcase>
-		<testcase classname="write" name="write" assertions="3" time="0.018">
+		<testcase classname="write" name="write" assertions="3" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.font" tests="7" failures="0" skipped="0" time="0.117">
-		<testcase classname="GlyphData" name="GlyphData" assertions="17" time="0.018">
+	<testsuite name="love.font" tests="7" failures="0" skipped="0" time="0.124">
+		<testcase classname="GlyphData" name="GlyphData" assertions="17" time="0.017">
 		</testcase>
-		<testcase classname="Rasterizer" name="Rasterizer" assertions="13" time="0.016">
+		<testcase classname="Rasterizer" name="Rasterizer" assertions="13" time="0.018">
 		</testcase>
-		<testcase classname="newBMFontRasterizer" name="newBMFontRasterizer" assertions="3" time="0.017">
+		<testcase classname="newBMFontRasterizer" name="newBMFontRasterizer" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newGlyphData" name="newGlyphData" assertions="3" time="0.016">
+		<testcase classname="newGlyphData" name="newGlyphData" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newImageRasterizer" name="newImageRasterizer" assertions="3" time="0.015">
+		<testcase classname="newImageRasterizer" name="newImageRasterizer" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="newRasterizer" name="newRasterizer" assertions="3" time="0.017">
+		<testcase classname="newRasterizer" name="newRasterizer" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newTrueTypeRasterizer" name="newTrueTypeRasterizer" assertions="6" time="0.018">
+		<testcase classname="newTrueTypeRasterizer" name="newTrueTypeRasterizer" assertions="6" time="0.019">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.graphics" tests="104" failures="0" skipped="1" time="2.948">
-		<testcase classname="Canvas" name="Canvas" assertions="18886" time="0.033">
+	<testsuite name="love.graphics" tests="104" failures="0" skipped="1" time="3.006">
+		<testcase classname="Canvas" name="Canvas" assertions="18886" time="0.039">
 		</testcase>
-		<testcase classname="Font" name="Font" assertions="428" time="0.013">
+		<testcase classname="Font" name="Font" assertions="428" time="0.011">
 		</testcase>
-		<testcase classname="Image" name="Image" assertions="3761" time="0.020">
+		<testcase classname="Image" name="Image" assertions="3761" time="0.019">
 		</testcase>
 		<testcase classname="Mesh" name="Mesh" assertions="49" time="0.018">
 		</testcase>
-		<testcase classname="ParticleSystem" name="ParticleSystem" assertions="3808" time="0.043">
+		<testcase classname="ParticleSystem" name="ParticleSystem" assertions="3808" time="0.028">
 		</testcase>
-		<testcase classname="Quad" name="Quad" assertions="3768" time="0.008">
+		<testcase classname="Quad" name="Quad" assertions="3768" time="0.021">
 		</testcase>
-		<testcase classname="Shader" name="Shader" assertions="208" time="0.037">
+		<testcase classname="Shader" name="Shader" assertions="208" time="0.028">
 		</testcase>
-		<testcase classname="SpriteBatch" name="SpriteBatch" assertions="18808" time="0.049">
+		<testcase classname="SpriteBatch" name="SpriteBatch" assertions="18808" time="0.037">
 		</testcase>
-		<testcase classname="Text" name="Text" assertions="3811" time="0.013">
+		<testcase classname="Text" name="Text" assertions="3811" time="0.014">
 		</testcase>
-		<testcase classname="Video" name="Video" assertions="247057" time="0.772">
+		<testcase classname="Video" name="Video" assertions="247057" time="0.770">
 		</testcase>
-		<testcase classname="applyTransform" name="applyTransform" assertions="173" time="0.006">
+		<testcase classname="applyTransform" name="applyTransform" assertions="173" time="0.025">
 		</testcase>
-		<testcase classname="arc" name="arc" assertions="2523" time="0.026">
+		<testcase classname="arc" name="arc" assertions="2523" time="0.022">
 		</testcase>
 		<testcase classname="captureScreenshot" name="captureScreenshot" assertions="1" time="0.184">
 		</testcase>
-		<testcase classname="circle" name="circle" assertions="1033" time="0.020">
+		<testcase classname="circle" name="circle" assertions="1033" time="0.027">
 		</testcase>
-		<testcase classname="clear" name="clear" assertions="189" time="0.016">
+		<testcase classname="clear" name="clear" assertions="189" time="0.035">
 		</testcase>
-		<testcase classname="discard" name="discard" assertions="0" time="0.017">
+		<testcase classname="discard" name="discard" assertions="0" time="0.014">
 			<skipped message="cant test this worked" />
 		</testcase>
-		<testcase classname="draw" name="draw" assertions="949" time="0.018">
+		<testcase classname="draw" name="draw" assertions="949" time="0.020">
 		</testcase>
-		<testcase classname="drawInstanced" name="drawInstanced" assertions="3737" time="0.024">
+		<testcase classname="drawInstanced" name="drawInstanced" assertions="3737" time="0.038">
 		</testcase>
-		<testcase classname="drawLayer" name="drawLayer" assertions="3865" time="0.020">
+		<testcase classname="drawLayer" name="drawLayer" assertions="3865" time="0.023">
 		</testcase>
-		<testcase classname="ellipse" name="ellipse" assertions="921" time="0.018">
+		<testcase classname="ellipse" name="ellipse" assertions="921" time="0.016">
 		</testcase>
-		<testcase classname="flushBatch" name="flushBatch" assertions="1" time="0.017">
+		<testcase classname="flushBatch" name="flushBatch" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="getBackgroundColor" name="getBackgroundColor" assertions="8" time="0.017">
 		</testcase>
-		<testcase classname="getBlendMode" name="getBlendMode" assertions="4" time="0.017">
+		<testcase classname="getBlendMode" name="getBlendMode" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="getCanvas" name="getCanvas" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="getColor" name="getColor" assertions="8" time="0.018">
 		</testcase>
-		<testcase classname="getColorMask" name="getColorMask" assertions="8" time="0.016">
+		<testcase classname="getColorMask" name="getColorMask" assertions="8" time="0.018">
 		</testcase>
-		<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.016">
+		<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getDefaultFilter" name="getDefaultFilter" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="getDepthMode" name="getDepthMode" assertions="2" time="0.016">
+		<testcase classname="getDepthMode" name="getDepthMode" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="getDimensions" name="getDimensions" assertions="2" time="0.016">
+		<testcase classname="getDimensions" name="getDimensions" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getFont" name="getFont" assertions="3" time="0.016">
+		<testcase classname="getFont" name="getFont" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="getFrontFaceWinding" name="getFrontFaceWinding" assertions="2" time="0.016">
+		<testcase classname="getFrontFaceWinding" name="getFrontFaceWinding" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getHeight" name="getHeight" assertions="1" time="0.016">
+		<testcase classname="getHeight" name="getHeight" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getLineJoin" name="getLineJoin" assertions="2" time="0.017">
+		<testcase classname="getLineJoin" name="getLineJoin" assertions="2" time="0.019">
 		</testcase>
 		<testcase classname="getLineStyle" name="getLineStyle" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getLineWidth" name="getLineWidth" assertions="2" time="0.017">
+		<testcase classname="getLineWidth" name="getLineWidth" assertions="2" time="0.018">
 		</testcase>
 		<testcase classname="getMeshCullMode" name="getMeshCullMode" assertions="2" time="0.016">
 		</testcase>
-		<testcase classname="getPixelDimensions" name="getPixelDimensions" assertions="2" time="0.016">
+		<testcase classname="getPixelDimensions" name="getPixelDimensions" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getPixelHeight" name="getPixelHeight" assertions="1" time="0.016">
+		<testcase classname="getPixelHeight" name="getPixelHeight" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getPixelWidth" name="getPixelWidth" assertions="1" time="0.016">
+		<testcase classname="getPixelWidth" name="getPixelWidth" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getPointSize" name="getPointSize" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getRendererInfo" name="getRendererInfo" assertions="4" time="0.016">
+		<testcase classname="getRendererInfo" name="getRendererInfo" assertions="4" time="0.018">
 		</testcase>
-		<testcase classname="getScissor" name="getScissor" assertions="8" time="0.017">
+		<testcase classname="getScissor" name="getScissor" assertions="8" time="0.018">
 		</testcase>
-		<testcase classname="getShader" name="getShader" assertions="1" time="0.018">
+		<testcase classname="getShader" name="getShader" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getStackDepth" name="getStackDepth" assertions="4" time="0.016">
+		<testcase classname="getStackDepth" name="getStackDepth" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="getStats" name="getStats" assertions="7" time="0.016">
+		<testcase classname="getStats" name="getStats" assertions="7" time="0.017">
 		</testcase>
-		<testcase classname="getStencilMode" name="getStencilMode" assertions="6" time="0.016">
+		<testcase classname="getStencilMode" name="getStencilMode" assertions="6" time="0.018">
 		</testcase>
-		<testcase classname="getSupported" name="getSupported" assertions="17" time="0.017">
+		<testcase classname="getSupported" name="getSupported" assertions="17" time="0.019">
 		</testcase>
 		<testcase classname="getSystemLimits" name="getSystemLimits" assertions="13" time="0.016">
 		</testcase>
-		<testcase classname="getTextureFormats" name="getTextureFormats" assertions="79" time="0.017">
+		<testcase classname="getTextureFormats" name="getTextureFormats" assertions="79" time="0.016">
 		</testcase>
 		<testcase classname="getTextureTypes" name="getTextureTypes" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="getWidth" name="getWidth" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="intersectScissor" name="intersectScissor" assertions="189" time="0.018">
+		<testcase classname="intersectScissor" name="intersectScissor" assertions="189" time="0.020">
 		</testcase>
-		<testcase classname="inverseTransformPoint" name="inverseTransformPoint" assertions="4" time="0.016">
+		<testcase classname="inverseTransformPoint" name="inverseTransformPoint" assertions="4" time="0.015">
 		</testcase>
-		<testcase classname="isActive" name="isActive" assertions="1" time="0.017">
+		<testcase classname="isActive" name="isActive" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="isGammaCorrect" name="isGammaCorrect" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="isWireframe" name="isWireframe" assertions="2" time="0.016">
+		<testcase classname="isWireframe" name="isWireframe" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="line" name="line" assertions="233" time="0.017">
+		<testcase classname="line" name="line" assertions="233" time="0.034">
 		</testcase>
-		<testcase classname="newArrayImage" name="newArrayImage" assertions="3" time="0.017">
+		<testcase classname="newArrayImage" name="newArrayImage" assertions="3" time="0.014">
 		</testcase>
-		<testcase classname="newCanvas" name="newCanvas" assertions="6" time="0.018">
+		<testcase classname="newCanvas" name="newCanvas" assertions="6" time="0.017">
 		</testcase>
-		<testcase classname="newCubeImage" name="newCubeImage" assertions="3" time="0.018">
+		<testcase classname="newCubeImage" name="newCubeImage" assertions="3" time="0.019">
 		</testcase>
-		<testcase classname="newFont" name="newFont" assertions="6" time="0.016">
+		<testcase classname="newFont" name="newFont" assertions="6" time="0.017">
 		</testcase>
-		<testcase classname="newImage" name="newImage" assertions="3" time="0.016">
+		<testcase classname="newImage" name="newImage" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="newImageFont" name="newImageFont" assertions="3" time="0.017">
+		<testcase classname="newImageFont" name="newImageFont" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newMesh" name="newMesh" assertions="3" time="0.018">
+		<testcase classname="newMesh" name="newMesh" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newParticleSystem" name="newParticleSystem" assertions="3" time="0.017">
+		<testcase classname="newParticleSystem" name="newParticleSystem" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newQuad" name="newQuad" assertions="3" time="0.016">
+		<testcase classname="newQuad" name="newQuad" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="newShader" name="newShader" assertions="3" time="0.024">
+		<testcase classname="newShader" name="newShader" assertions="3" time="0.023">
 		</testcase>
-		<testcase classname="newSpriteBatch" name="newSpriteBatch" assertions="3" time="0.018">
+		<testcase classname="newSpriteBatch" name="newSpriteBatch" assertions="3" time="0.019">
 		</testcase>
 		<testcase classname="newTextBatch" name="newTextBatch" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newVideo" name="newVideo" assertions="3" time="0.020">
+		<testcase classname="newVideo" name="newVideo" assertions="3" time="0.021">
 		</testcase>
 		<testcase classname="newVolumeImage" name="newVolumeImage" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="origin" name="origin" assertions="173" time="0.018">
 		</testcase>
-		<testcase classname="points" name="points" assertions="169" time="0.017">
+		<testcase classname="points" name="points" assertions="169" time="0.026">
 		</testcase>
-		<testcase classname="polygon" name="polygon" assertions="225" time="0.016">
+		<testcase classname="polygon" name="polygon" assertions="225" time="0.018">
 		</testcase>
-		<testcase classname="pop" name="pop" assertions="173" time="0.018">
+		<testcase classname="pop" name="pop" assertions="173" time="0.017">
 		</testcase>
-		<testcase classname="print" name="print" assertions="317" time="0.033">
+		<testcase classname="print" name="print" assertions="317" time="0.022">
 		</testcase>
-		<testcase classname="printf" name="printf" assertions="1021" time="0.025">
+		<testcase classname="printf" name="printf" assertions="1021" time="0.020">
 		</testcase>
-		<testcase classname="push" name="push" assertions="173" time="0.022">
+		<testcase classname="push" name="push" assertions="173" time="0.019">
 		</testcase>
-		<testcase classname="rectangle" name="rectangle" assertions="454" time="0.025">
+		<testcase classname="rectangle" name="rectangle" assertions="454" time="0.024">
 		</testcase>
-		<testcase classname="replaceTransform" name="replaceTransform" assertions="173" time="0.021">
+		<testcase classname="replaceTransform" name="replaceTransform" assertions="173" time="0.017">
 		</testcase>
-		<testcase classname="reset" name="reset" assertions="3" time="0.019">
+		<testcase classname="reset" name="reset" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="rotate" name="rotate" assertions="185" time="0.035">
+		<testcase classname="rotate" name="rotate" assertions="185" time="0.025">
 		</testcase>
-		<testcase classname="scale" name="scale" assertions="16" time="0.014">
+		<testcase classname="scale" name="scale" assertions="16" time="0.016">
 		</testcase>
-		<testcase classname="setBackgroundColor" name="setBackgroundColor" assertions="4" time="0.016">
+		<testcase classname="setBackgroundColor" name="setBackgroundColor" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="setBlendMode" name="setBlendMode" assertions="185" time="0.021">
+		<testcase classname="setBlendMode" name="setBlendMode" assertions="185" time="0.022">
 		</testcase>
 		<testcase classname="setCanvas" name="setCanvas" assertions="188" time="0.017">
 		</testcase>
-		<testcase classname="setColor" name="setColor" assertions="237" time="0.017">
+		<testcase classname="setColor" name="setColor" assertions="237" time="0.019">
 		</testcase>
-		<testcase classname="setColorMask" name="setColorMask" assertions="189" time="0.028">
+		<testcase classname="setColorMask" name="setColorMask" assertions="189" time="0.027">
 		</testcase>
-		<testcase classname="setDefaultFilter" name="setDefaultFilter" assertions="3" time="0.016">
+		<testcase classname="setDefaultFilter" name="setDefaultFilter" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="setDepthMode" name="setDepthMode" assertions="8" time="0.018">
 		</testcase>
 		<testcase classname="setFont" name="setFont" assertions="209" time="0.024">
 		</testcase>
-		<testcase classname="setFrontFaceWinding" name="setFrontFaceWinding" assertions="2" time="0.016">
+		<testcase classname="setFrontFaceWinding" name="setFrontFaceWinding" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="setLineJoin" name="setLineJoin" assertions="185" time="0.017">
+		<testcase classname="setLineJoin" name="setLineJoin" assertions="185" time="0.019">
 		</testcase>
 		<testcase classname="setLineStyle" name="setLineStyle" assertions="193" time="0.026">
 		</testcase>
-		<testcase classname="setLineWidth" name="setLineWidth" assertions="241" time="0.023">
+		<testcase classname="setLineWidth" name="setLineWidth" assertions="241" time="0.024">
 		</testcase>
-		<testcase classname="setMeshCullMode" name="setMeshCullMode" assertions="3" time="0.016">
+		<testcase classname="setMeshCullMode" name="setMeshCullMode" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="setScissor" name="setScissor" assertions="201" time="0.026">
 		</testcase>
@@ -383,115 +383,107 @@
 		</testcase>
 		<testcase classname="setStencilMode" name="setStencilMode" assertions="201" time="0.018">
 		</testcase>
-		<testcase classname="setWireframe" name="setWireframe" assertions="169" time="0.030">
+		<testcase classname="setWireframe" name="setWireframe" assertions="169" time="0.027">
 		</testcase>
-		<testcase classname="shear" name="shear" assertions="370" time="0.025">
+		<testcase classname="shear" name="shear" assertions="370" time="0.021">
 		</testcase>
-		<testcase classname="transformPoint" name="transformPoint" assertions="4" time="0.015">
+		<testcase classname="transformPoint" name="transformPoint" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="translate" name="translate" assertions="185" time="0.035">
+		<testcase classname="translate" name="translate" assertions="185" time="0.032">
 		</testcase>
-		<testcase classname="validateShader" name="validateShader" assertions="2" time="0.017">
+		<testcase classname="validateShader" name="validateShader" assertions="2" time="0.019">
 		</testcase>
 	</testsuite>
 	<testsuite name="love.image" tests="5" failures="0" skipped="0" time="0.085">
-		<testcase classname="CompressedImageData" name="CompressedImageData" assertions="11" time="0.018">
+		<testcase classname="CompressedImageData" name="CompressedImageData" assertions="11" time="0.016">
 		</testcase>
-		<testcase classname="ImageData" name="ImageData" assertions="14" time="0.018">
+		<testcase classname="ImageData" name="ImageData" assertions="14" time="0.017">
 		</testcase>
 		<testcase classname="isCompressed" name="isCompressed" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="newCompressedData" name="newCompressedData" assertions="3" time="0.016">
+		<testcase classname="newCompressedData" name="newCompressedData" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="newImageData" name="newImageData" assertions="6" time="0.017">
+		<testcase classname="newImageData" name="newImageData" assertions="6" time="0.018">
 		</testcase>
 	</testsuite>
 	<testsuite name="love.joystick" tests="6" failures="0" skipped="0" time="0.106">
-		<testcase classname="getGamepadMappingString" name="getGamepadMappingString" assertions="1" time="0.017">
+		<testcase classname="getGamepadMappingString" name="getGamepadMappingString" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getJoystickCount" name="getJoystickCount" assertions="1" time="0.017">
+		<testcase classname="getJoystickCount" name="getJoystickCount" assertions="1" time="0.015">
 		</testcase>
 		<testcase classname="getJoysticks" name="getJoysticks" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="loadGamepadMappings" name="loadGamepadMappings" assertions="1" time="0.019">
+		<testcase classname="loadGamepadMappings" name="loadGamepadMappings" assertions="1" time="0.021">
 		</testcase>
-		<testcase classname="saveGamepadMappings" name="saveGamepadMappings" assertions="1" time="0.020">
+		<testcase classname="saveGamepadMappings" name="saveGamepadMappings" assertions="1" time="0.021">
 		</testcase>
 		<testcase classname="setGamepadMapping" name="setGamepadMapping" assertions="24" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.keyboard" tests="9" failures="0" skipped="0" time="0.151">
+	<testsuite name="love.keyboard" tests="9" failures="0" skipped="0" time="0.150">
 		<testcase classname="getKeyFromScancode" name="getKeyFromScancode" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getScancodeFromKey" name="getScancodeFromKey" assertions="1" time="0.017">
+		<testcase classname="getScancodeFromKey" name="getScancodeFromKey" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="hasKeyRepeat" name="hasKeyRepeat" assertions="1" time="0.017">
+		<testcase classname="hasKeyRepeat" name="hasKeyRepeat" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="hasScreenKeyboard" name="hasScreenKeyboard" assertions="1" time="0.017">
+		<testcase classname="hasScreenKeyboard" name="hasScreenKeyboard" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="hasTextInput" name="hasTextInput" assertions="1" time="0.017">
+		<testcase classname="hasTextInput" name="hasTextInput" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="isDown" name="isDown" assertions="1" time="0.016">
+		<testcase classname="isDown" name="isDown" assertions="1" time="0.015">
 		</testcase>
 		<testcase classname="isScancodeDown" name="isScancodeDown" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="setKeyRepeat" name="setKeyRepeat" assertions="1" time="0.017">
+		<testcase classname="setKeyRepeat" name="setKeyRepeat" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="setTextInput" name="setTextInput" assertions="1" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.love" tests="10" failures="0" skipped="0" time="0.166">
-		<testcase classname="draw" name="draw" assertions="1" time="0.017">
-		</testcase>
+	<testsuite name="love.love" tests="6" failures="0" skipped="0" time="0.098">
 		<testcase classname="errhand" name="errhand" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getVersion" name="getVersion" assertions="4" time="0.016">
+		<testcase classname="getVersion" name="getVersion" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="hasDeprecationOutput" name="hasDeprecationOutput" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="isVersionCompatible" name="isVersionCompatible" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="load" name="load" assertions="1" time="0.016">
-		</testcase>
-		<testcase classname="quit" name="quit" assertions="1" time="0.018">
-		</testcase>
 		<testcase classname="run" name="run" assertions="1" time="0.015">
 		</testcase>
-		<testcase classname="setDeprecationOutput" name="setDeprecationOutput" assertions="2" time="0.018">
-		</testcase>
-		<testcase classname="update" name="update" assertions="1" time="0.016">
+		<testcase classname="setDeprecationOutput" name="setDeprecationOutput" assertions="2" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.math" tests="20" failures="0" skipped="0" time="0.339">
+	<testsuite name="love.math" tests="20" failures="0" skipped="0" time="0.337">
 		<testcase classname="BezierCurve" name="BezierCurve" assertions="31" time="0.018">
 		</testcase>
-		<testcase classname="RandomGenerator" name="RandomGenerator" assertions="10" time="0.018">
+		<testcase classname="RandomGenerator" name="RandomGenerator" assertions="10" time="0.017">
 		</testcase>
-		<testcase classname="Transform" name="Transform" assertions="14" time="0.016">
+		<testcase classname="Transform" name="Transform" assertions="14" time="0.018">
 		</testcase>
 		<testcase classname="colorFromBytes" name="colorFromBytes" assertions="12" time="0.017">
 		</testcase>
-		<testcase classname="colorToBytes" name="colorToBytes" assertions="12" time="0.016">
+		<testcase classname="colorToBytes" name="colorToBytes" assertions="12" time="0.017">
 		</testcase>
-		<testcase classname="gammaToLinear" name="gammaToLinear" assertions="3" time="0.017">
+		<testcase classname="gammaToLinear" name="gammaToLinear" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="getRandomSeed" name="getRandomSeed" assertions="2" time="0.018">
+		<testcase classname="getRandomSeed" name="getRandomSeed" assertions="2" time="0.015">
 		</testcase>
-		<testcase classname="getRandomState" name="getRandomState" assertions="1" time="0.016">
+		<testcase classname="getRandomState" name="getRandomState" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="isConvex" name="isConvex" assertions="2" time="0.017">
+		<testcase classname="isConvex" name="isConvex" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="linearToGamma" name="linearToGamma" assertions="3" time="0.017">
+		<testcase classname="linearToGamma" name="linearToGamma" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newBezierCurve" name="newBezierCurve" assertions="3" time="0.017">
+		<testcase classname="newBezierCurve" name="newBezierCurve" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newRandomGenerator" name="newRandomGenerator" assertions="3" time="0.017">
+		<testcase classname="newRandomGenerator" name="newRandomGenerator" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="newTransform" name="newTransform" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="perlinNoise" name="perlinNoise" assertions="4" time="0.018">
+		<testcase classname="perlinNoise" name="perlinNoise" assertions="4" time="0.015">
 		</testcase>
-		<testcase classname="random" name="random" assertions="10" time="0.017">
+		<testcase classname="random" name="random" assertions="10" time="0.016">
 		</testcase>
 		<testcase classname="randomNormal" name="randomNormal" assertions="1" time="0.016">
 		</testcase>
@@ -499,19 +491,19 @@
 		</testcase>
 		<testcase classname="setRandomState" name="setRandomState" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="simplexNoise" name="simplexNoise" assertions="4" time="0.016">
+		<testcase classname="simplexNoise" name="simplexNoise" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="triangulate" name="triangulate" assertions="2" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.mouse" tests="18" failures="0" skipped="0" time="0.303">
-		<testcase classname="getCursor" name="getCursor" assertions="4" time="0.017">
+	<testsuite name="love.mouse" tests="18" failures="0" skipped="0" time="0.302">
+		<testcase classname="getCursor" name="getCursor" assertions="4" time="0.018">
 		</testcase>
-		<testcase classname="getPosition" name="getPosition" assertions="2" time="0.016">
+		<testcase classname="getPosition" name="getPosition" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="getRelativeMode" name="getRelativeMode" assertions="2" time="0.016">
+		<testcase classname="getRelativeMode" name="getRelativeMode" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="getSystemCursor" name="getSystemCursor" assertions="4" time="0.016">
+		<testcase classname="getSystemCursor" name="getSystemCursor" assertions="4" time="0.015">
 		</testcase>
 		<testcase classname="getX" name="getX" assertions="2" time="0.017">
 		</testcase>
@@ -519,77 +511,77 @@
 		</testcase>
 		<testcase classname="isCursorSupported" name="isCursorSupported" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="isDown" name="isDown" assertions="1" time="0.016">
+		<testcase classname="isDown" name="isDown" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="isGrabbed" name="isGrabbed" assertions="1" time="0.016">
+		<testcase classname="isGrabbed" name="isGrabbed" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="isVisible" name="isVisible" assertions="2" time="0.017">
+		<testcase classname="isVisible" name="isVisible" assertions="2" time="0.018">
 		</testcase>
-		<testcase classname="newCursor" name="newCursor" assertions="3" time="0.018">
+		<testcase classname="newCursor" name="newCursor" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="setCursor" name="setCursor" assertions="4" time="0.018">
+		<testcase classname="setCursor" name="setCursor" assertions="4" time="0.017">
 		</testcase>
-		<testcase classname="setGrabbed" name="setGrabbed" assertions="2" time="0.017">
+		<testcase classname="setGrabbed" name="setGrabbed" assertions="2" time="0.016">
 		</testcase>
-		<testcase classname="setPosition" name="setPosition" assertions="4" time="0.017">
+		<testcase classname="setPosition" name="setPosition" assertions="4" time="0.016">
 		</testcase>
-		<testcase classname="setRelativeMode" name="setRelativeMode" assertions="2" time="0.018">
+		<testcase classname="setRelativeMode" name="setRelativeMode" assertions="2" time="0.016">
 		</testcase>
-		<testcase classname="setVisible" name="setVisible" assertions="2" time="0.017">
+		<testcase classname="setVisible" name="setVisible" assertions="2" time="0.016">
 		</testcase>
-		<testcase classname="setX" name="setX" assertions="2" time="0.016">
+		<testcase classname="setX" name="setX" assertions="2" time="0.015">
 		</testcase>
-		<testcase classname="setY" name="setY" assertions="2" time="0.017">
+		<testcase classname="setY" name="setY" assertions="2" time="0.018">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.physics" tests="26" failures="0" skipped="0" time="0.439">
+	<testsuite name="love.physics" tests="26" failures="0" skipped="0" time="0.434">
 		<testcase classname="Body" name="Body" assertions="85" time="0.017">
 		</testcase>
 		<testcase classname="Contact" name="Contact" assertions="23" time="0.018">
 		</testcase>
-		<testcase classname="Joint" name="Joint" assertions="17" time="0.018">
+		<testcase classname="Joint" name="Joint" assertions="19" time="0.017">
 		</testcase>
-		<testcase classname="Shape" name="Shape" assertions="55" time="0.017">
+		<testcase classname="Shape" name="Shape" assertions="55" time="0.016">
 		</testcase>
 		<testcase classname="World" name="World" assertions="33" time="0.016">
 		</testcase>
 		<testcase classname="getDistance" name="getDistance" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getMeter" name="getMeter" assertions="1" time="0.017">
+		<testcase classname="getMeter" name="getMeter" assertions="1" time="0.015">
 		</testcase>
 		<testcase classname="newBody" name="newBody" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="newChainShape" name="newChainShape" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newCircleShape" name="newCircleShape" assertions="3" time="0.017">
+		<testcase classname="newCircleShape" name="newCircleShape" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="newDistanceJoint" name="newDistanceJoint" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newEdgeShape" name="newEdgeShape" assertions="3" time="0.017">
+		<testcase classname="newEdgeShape" name="newEdgeShape" assertions="3" time="0.016">
 		</testcase>
 		<testcase classname="newFrictionJoint" name="newFrictionJoint" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newGearJoint" name="newGearJoint" assertions="3" time="0.016">
+		<testcase classname="newGearJoint" name="newGearJoint" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newMotorJoint" name="newMotorJoint" assertions="3" time="0.017">
+		<testcase classname="newMotorJoint" name="newMotorJoint" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newMouseJoint" name="newMouseJoint" assertions="3" time="0.018">
+		<testcase classname="newMouseJoint" name="newMouseJoint" assertions="3" time="0.016">
 		</testcase>
 		<testcase classname="newPolygonShape" name="newPolygonShape" assertions="3" time="0.016">
 		</testcase>
 		<testcase classname="newPrismaticJoint" name="newPrismaticJoint" assertions="3" time="0.016">
 		</testcase>
-		<testcase classname="newPulleyJoint" name="newPulleyJoint" assertions="3" time="0.017">
+		<testcase classname="newPulleyJoint" name="newPulleyJoint" assertions="3" time="0.018">
 		</testcase>
 		<testcase classname="newRectangleShape" name="newRectangleShape" assertions="6" time="0.017">
 		</testcase>
-		<testcase classname="newRevoluteJoint" name="newRevoluteJoint" assertions="3" time="0.017">
+		<testcase classname="newRevoluteJoint" name="newRevoluteJoint" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newRopeJoint" name="newRopeJoint" assertions="3" time="0.017">
+		<testcase classname="newRopeJoint" name="newRopeJoint" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="newWeldJoint" name="newWeldJoint" assertions="3" time="0.017">
+		<testcase classname="newWeldJoint" name="newWeldJoint" assertions="3" time="0.015">
 		</testcase>
-		<testcase classname="newWheelJoint" name="newWheelJoint" assertions="3" time="0.017">
+		<testcase classname="newWheelJoint" name="newWheelJoint" assertions="3" time="0.016">
 		</testcase>
 		<testcase classname="newWorld" name="newWorld" assertions="3" time="0.016">
 		</testcase>
@@ -600,150 +592,150 @@
 		<testcase classname="hasSensor" name="hasSensor" assertions="2" time="0.016">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.sound" tests="4" failures="0" skipped="0" time="0.073">
+	<testsuite name="love.sound" tests="4" failures="0" skipped="0" time="0.072">
 		<testcase classname="Decoder" name="Decoder" assertions="14" time="0.019">
 		</testcase>
-		<testcase classname="SoundData" name="SoundData" assertions="20" time="0.018">
+		<testcase classname="SoundData" name="SoundData" assertions="20" time="0.019">
 		</testcase>
-		<testcase classname="newDecoder" name="newDecoder" assertions="3" time="0.018">
+		<testcase classname="newDecoder" name="newDecoder" assertions="3" time="0.017">
 		</testcase>
-		<testcase classname="newSoundData" name="newSoundData" assertions="6" time="0.018">
+		<testcase classname="newSoundData" name="newSoundData" assertions="6" time="0.017">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.system" tests="6" failures="0" skipped="2" time="0.137">
+	<testsuite name="love.system" tests="6" failures="0" skipped="2" time="0.135">
 		<testcase classname="getClipboardText" name="getClipboardText" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="getOS" name="getOS" assertions="1" time="0.017">
+		<testcase classname="getOS" name="getOS" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getPowerInfo" name="getPowerInfo" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getProcessorCount" name="getProcessorCount" assertions="1" time="0.017">
+		<testcase classname="getProcessorCount" name="getProcessorCount" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="hasBackgroundMusic" name="hasBackgroundMusic" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="openURL" name="openURL" assertions="0" time="0.018">
+		<testcase classname="openURL" name="openURL" assertions="0" time="0.016">
 			<skipped message="cant test this worked" />
 		</testcase>
 		<testcase classname="setClipboardText" name="setClipboardText" assertions="1" time="0.018">
 		</testcase>
-		<testcase classname="vibrate" name="vibrate" assertions="0" time="0.016">
+		<testcase classname="vibrate" name="vibrate" assertions="0" time="0.017">
 			<skipped message="cant test this worked" />
 		</testcase>
 	</testsuite>
 	<testsuite name="love.thread" tests="5" failures="0" skipped="0" time="0.363">
-		<testcase classname="Channel" name="Channel" assertions="10" time="0.234">
+		<testcase classname="Channel" name="Channel" assertions="10" time="0.237">
 		</testcase>
-		<testcase classname="Thread" name="Thread" assertions="7" time="0.084">
+		<testcase classname="Thread" name="Thread" assertions="7" time="0.085">
 		</testcase>
-		<testcase classname="getChannel" name="getChannel" assertions="3" time="0.010">
+		<testcase classname="getChannel" name="getChannel" assertions="3" time="0.006">
 		</testcase>
-		<testcase classname="newChannel" name="newChannel" assertions="3" time="0.017">
+		<testcase classname="newChannel" name="newChannel" assertions="3" time="0.019">
 		</testcase>
 		<testcase classname="newThread" name="newThread" assertions="3" time="0.018">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.timer" tests="6" failures="0" skipped="0" time="2.076">
-		<testcase classname="getAverageDelta" name="getAverageDelta" assertions="1" time="0.017">
+	<testsuite name="love.timer" tests="6" failures="0" skipped="0" time="2.074">
+		<testcase classname="getAverageDelta" name="getAverageDelta" assertions="1" time="0.015">
 		</testcase>
 		<testcase classname="getDelta" name="getDelta" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getFPS" name="getFPS" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getTime" name="getTime" assertions="1" time="1.019">
+		<testcase classname="getTime" name="getTime" assertions="1" time="1.017">
 		</testcase>
-		<testcase classname="sleep" name="sleep" assertions="1" time="1.002">
+		<testcase classname="sleep" name="sleep" assertions="1" time="1.003">
 		</testcase>
-		<testcase classname="step" name="step" assertions="1" time="0.002">
+		<testcase classname="step" name="step" assertions="1" time="0.003">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.touch" tests="3" failures="0" skipped="0" time="0.007">
+	<testsuite name="love.touch" tests="3" failures="0" skipped="0" time="0.023">
 		<testcase classname="getPosition" name="getPosition" assertions="2" time="0.002">
 		</testcase>
 		<testcase classname="getPressure" name="getPressure" assertions="2" time="0.002">
 		</testcase>
-		<testcase classname="getTouches" name="getTouches" assertions="2" time="0.003">
+		<testcase classname="getTouches" name="getTouches" assertions="1" time="0.019">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.video" tests="2" failures="0" skipped="0" time="0.040">
-		<testcase classname="VideoStream" name="VideoStream" assertions="9" time="0.020">
+	<testsuite name="love.video" tests="2" failures="0" skipped="0" time="0.039">
+		<testcase classname="VideoStream" name="VideoStream" assertions="9" time="0.019">
 		</testcase>
 		<testcase classname="newVideoStream" name="newVideoStream" assertions="3" time="0.020">
 		</testcase>
 	</testsuite>
-	<testsuite name="love.window" tests="34" failures="0" skipped="2" time="5.355">
-		<testcase classname="fromPixels" name="fromPixels" assertions="1" time="0.018">
+	<testsuite name="love.window" tests="34" failures="0" skipped="2" time="5.696">
+		<testcase classname="fromPixels" name="fromPixels" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.017">
+		<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.018">
 		</testcase>
 		<testcase classname="getDesktopDimensions" name="getDesktopDimensions" assertions="2" time="0.016">
 		</testcase>
 		<testcase classname="getDisplayCount" name="getDisplayCount" assertions="1" time="0.016">
 		</testcase>
-		<testcase classname="getDisplayName" name="getDisplayName" assertions="1" time="0.017">
+		<testcase classname="getDisplayName" name="getDisplayName" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="getDisplayOrientation" name="getDisplayOrientation" assertions="1" time="0.016">
 		</testcase>
 		<testcase classname="getFullscreen" name="getFullscreen" assertions="2" time="1.109">
 		</testcase>
-		<testcase classname="getFullscreenModes" name="getFullscreenModes" assertions="1" time="0.002">
+		<testcase classname="getFullscreenModes" name="getFullscreenModes" assertions="1" time="0.005">
 		</testcase>
 		<testcase classname="getIcon" name="getIcon" assertions="2" time="0.021">
 		</testcase>
-		<testcase classname="getMode" name="getMode" assertions="3" time="0.017">
+		<testcase classname="getMode" name="getMode" assertions="3" time="0.016">
 		</testcase>
 		<testcase classname="getPosition" name="getPosition" assertions="2" time="0.017">
 		</testcase>
-		<testcase classname="getSafeArea" name="getSafeArea" assertions="4" time="0.017">
+		<testcase classname="getSafeArea" name="getSafeArea" assertions="4" time="0.018">
 		</testcase>
 		<testcase classname="getTitle" name="getTitle" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="getVSync" name="getVSync" assertions="1" time="0.016">
+		<testcase classname="getVSync" name="getVSync" assertions="1" time="0.017">
 		</testcase>
 		<testcase classname="hasFocus" name="hasFocus" assertions="1" time="0.017">
 		</testcase>
 		<testcase classname="hasMouseFocus" name="hasMouseFocus" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="isDisplaySleepEnabled" name="isDisplaySleepEnabled" assertions="3" time="0.017">
+		<testcase classname="isDisplaySleepEnabled" name="isDisplaySleepEnabled" assertions="3" time="0.018">
 		</testcase>
-		<testcase classname="isMaximized" name="isMaximized" assertions="2" time="0.184">
+		<testcase classname="isMaximized" name="isMaximized" assertions="2" time="0.185">
 		</testcase>
-		<testcase classname="isMinimized" name="isMinimized" assertions="2" time="0.730">
+		<testcase classname="isMinimized" name="isMinimized" assertions="2" time="0.726">
 		</testcase>
 		<testcase classname="isOpen" name="isOpen" assertions="1" time="0.002">
 		</testcase>
 		<testcase classname="isVisible" name="isVisible" assertions="1" time="0.002">
 		</testcase>
-		<testcase classname="maximize" name="maximize" assertions="2" time="0.172">
+		<testcase classname="maximize" name="maximize" assertions="2" time="0.159">
 		</testcase>
-		<testcase classname="minimize" name="minimize" assertions="2" time="0.726">
+		<testcase classname="minimize" name="minimize" assertions="2" time="0.727">
 		</testcase>
-		<testcase classname="requestAttention" name="requestAttention" assertions="0" time="0.002">
+		<testcase classname="requestAttention" name="requestAttention" assertions="0" time="0.015">
 			<skipped message="cant test this worked" />
 		</testcase>
-		<testcase classname="restore" name="restore" assertions="1" time="0.779">
+		<testcase classname="restore" name="restore" assertions="1" time="0.866">
 		</testcase>
-		<testcase classname="setDisplaySleepEnabled" name="setDisplaySleepEnabled" assertions="2" time="0.018">
+		<testcase classname="setDisplaySleepEnabled" name="setDisplaySleepEnabled" assertions="2" time="0.019">
 		</testcase>
-		<testcase classname="setFullscreen" name="setFullscreen" assertions="2" time="1.105">
+		<testcase classname="setFullscreen" name="setFullscreen" assertions="2" time="1.328">
 		</testcase>
-		<testcase classname="setIcon" name="setIcon" assertions="1" time="0.003">
+		<testcase classname="setIcon" name="setIcon" assertions="1" time="0.015">
 		</testcase>
-		<testcase classname="setMode" name="setMode" assertions="4" time="0.007">
+		<testcase classname="setMode" name="setMode" assertions="4" time="0.020">
 		</testcase>
 		<testcase classname="setPosition" name="setPosition" assertions="2" time="0.182">
 		</testcase>
-		<testcase classname="setTitle" name="setTitle" assertions="1" time="0.019">
+		<testcase classname="setTitle" name="setTitle" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="setVSync" name="setVSync" assertions="1" time="0.018">
+		<testcase classname="setVSync" name="setVSync" assertions="1" time="0.017">
 		</testcase>
-		<testcase classname="showMessageBox" name="showMessageBox" assertions="0" time="0.002">
+		<testcase classname="showMessageBox" name="showMessageBox" assertions="0" time="0.001">
 			<skipped message="cant test this worked" />
 		</testcase>
 		<testcase classname="toPixels" name="toPixels" assertions="1" time="0.001">
 		</testcase>
 		<testcase classname="updateMode" name="updateMode" assertions="4" time="0.009">
 		</testcase>
-		<testcase classname="z_close" name="z_close" assertions="4" time="0.030">
+		<testcase classname="z_close" name="z_close" assertions="4" time="0.034">
 		</testcase>
 	</testsuite>
 </testsuites>

+ 1 - 1
testing/readme.md

@@ -34,7 +34,7 @@ See the **Todo** section for outstanding tasks if you want to contribute!
 | 🟢 image          |    5 |   0  | 🟢 timer          |    6 |   0  |
 | 🟢 joystick       |    6 |   0  | 🟢 touch          |    3 |   0  |
 | 🟢 keyboard       |    9 |   0  | 🟢 video          |    2 |   0  |
-| 🟢 love           |   10 |   0  | 🟢 window         |   34 |   2  |
+| 🟢 love           |    6 |   0  | 🟢 window         |   34 |   2  |
 | 🟢 math           |   20 |   0  | 
 
 > The following modules are covered but at a basic level as we can't emulate hardware input nicely for all platforms + virtual runners:  

+ 1 - 1
testing/tests/audio.lua

@@ -12,7 +12,7 @@
 love.test.audio.RecordingDevice = function(test)
 
   -- skip recording device on runners, they cant emulate it
-  if GITHUB_RUNNER == true then
+  if GITHUB_RUNNER then
     return test:skipTest('cant emulate recording devices in CI')
   end
 

+ 8 - 5
testing/tests/graphics.lua

@@ -997,7 +997,10 @@ love.test.graphics.Video = function(test)
   video:play()
   test:waitFrames(30) -- 1.5s ish
   video:pause()
-  test:assertEquals(1, math.ceil(video:tell()), 'check video playing for 1s')
+  -- runners can be a bit funny and just not play anything sometimes
+  if not GITHUB_RUNNER then
+    test:assertEquals(1, math.ceil(video:tell()), 'check video playing for 1s')
+  end
   video:seek(0.2)
   test:assertEquals(0.2, video:tell(), 'check video seeking')
   video:rewind()
@@ -1067,7 +1070,7 @@ love.test.graphics.arc = function(test)
     love.graphics.setColor(1, 1, 1, 1)
   love.graphics.setCanvas()
   local imgdata3 = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
-  if GITHUB_RUNNER == true and love.system.getOS() == 'OS X' then
+  if GITHUB_RUNNER and love.system.getOS() == 'OS X' then
     -- on macosx runners, the arcs are not drawn as accurately at low res
     -- there's a couple pixels different in the curve of the arc but as we
     -- are at such a low resolution I think that can be expected
@@ -1294,7 +1297,7 @@ love.test.graphics.points = function(test)
   love.graphics.setCanvas()
   local imgdata = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
   -- on macOS runners points are drawn 1px off from the target
-  if GITHUB_RUNNER == true and love.system.getOS() == 'OS X' then
+  if GITHUB_RUNNER and love.system.getOS() == 'OS X' then
     test.pixel_tolerance = 1
   end
   test:compareImg(imgdata)
@@ -2178,7 +2181,7 @@ love.test.graphics.setLineStyle = function(test)
     red07 = {{0,4},{7,4},{15,4}}
   }, 'set line style')
   -- linux runner needs a 1/255 tolerance for the blend between a rough line + bg 
-  if GITHUB_RUNNER == true and love.system.getOS() == 'Linux' then
+  if GITHUB_RUNNER and love.system.getOS() == 'Linux' then
     test.rgba_tolerance = 1
   end
   test:compareImg(imgdata)
@@ -2327,7 +2330,7 @@ love.test.graphics.setWireframe = function(test)
     love.graphics.setWireframe(false)
     local imgdata = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
     -- on macOS runners wireframes are drawn 1px off from the target
-    if GITHUB_RUNNER == true and love.system.getOS() == 'OS X' then
+    if GITHUB_RUNNER and love.system.getOS() == 'OS X' then
       test.pixel_tolerance = 1
     end
     test:compareImg(imgdata)

+ 1 - 1
testing/tests/joystick.lua

@@ -19,7 +19,7 @@ end
 -- love.joystick.getJoystickCount
 love.test.joystick.getJoystickCount = function(test)
   local count = love.joystick.getJoystickCount()
-  test:assertEquals(0, count, 'check no joysticks')
+  test:assertGreaterEqual(0, count, 'check number')
 end
 
 

+ 2 - 4
testing/tests/keyboard.lua

@@ -11,15 +11,13 @@
 
 -- love.keyboard.getKeyFromScancode
 love.test.keyboard.getKeyFromScancode = function(test)
-  local key = love.keyboard.getKeyFromScancode('a')
-  test:assertEquals('a', key, 'check key')
+  test:assertEquals('function', type(love.keyboard.getKeyFromScancode))
 end
 
 
 -- love.keyboard.getScancodeFromKey
 love.test.keyboard.getScancodeFromKey = function(test)
-  local scancode = love.keyboard.getScancodeFromKey('a')
-  test:assertEquals('a', scancode, 'check scancode')
+  test:assertEquals('function', type(love.keyboard.getScancodeFromKey))
 end
 
 

+ 0 - 24
testing/tests/love.lua

@@ -48,31 +48,7 @@ love.test.love.errhand = function(test)
 end
 
 
--- love.load
-love.test.love.load = function(test)
-  test:assertTrue(type(love.load) == 'function', 'check defined')
-end
-
-
--- love.draw
-love.test.love.draw = function(test)
-  test:assertTrue(type(love.draw) == 'function', 'check defined')
-end
-
-
--- love.update
-love.test.love.update = function(test)
-  test:assertTrue(type(love.update) == 'function', 'check defined')
-end
-
-
 -- love.run
 love.test.love.run = function(test)
   test:assertTrue(type(love.run) == 'function', 'check defined')
 end
-
-
--- love.quit
-love.test.love.quit = function(test)
-  test:assertTrue(type(love.quit) == 'function', 'check defined')
-end

+ 24 - 10
testing/tests/mouse.lua

@@ -13,10 +13,13 @@
 love.test.mouse.getCursor = function(test)
   local cursor = love.mouse.getCursor()
   test:assertEquals(nil, cursor, 'check nil initially')
-  love.mouse.setCursor(love.mouse.getSystemCursor("hand"))
-  local newcursor = love.mouse.getCursor()
-  test:assertObject(newcursor)
-  love.mouse.setCursor()
+  -- try setting a cursor to check return if supported
+  if love.mouse.isCursorSupported() then
+    love.mouse.setCursor(love.mouse.getSystemCursor("hand"))
+    local newcursor = love.mouse.getCursor()
+    test:assertObject(newcursor)
+    love.mouse.setCursor()
+  end
 end
 
 
@@ -97,21 +100,32 @@ end
 
 -- love.mouse.newCursor
 love.test.mouse.newCursor = function(test)
-  local cursor = love.mouse.newCursor('resources/love.png', 0, 0)
-  test:assertObject(cursor)
+  -- new cursor might fail if not supported
+  if love.mouse.isCursorSupported() then
+    local cursor = love.mouse.newCursor('resources/love.png', 0, 0)
+    test:assertObject(cursor)
+  else
+    test:skipTest('cursor not supported on this system')
+  end
 end
 
 
 -- love.mouse.setCursor
 love.test.mouse.setCursor = function(test)
-  love.mouse.setCursor()
-  test:assertEquals(nil, love.mouse.getCursor(), 'check reset')
-  love.mouse.setCursor(love.mouse.getSystemCursor('hand'))
-  test:assertObject(love.mouse.getCursor())
+  -- cant set cursor if not supported
+  if love.mouse.isCursorSupported() then
+    love.mouse.setCursor()
+    test:assertEquals(nil, love.mouse.getCursor(), 'check reset')
+    love.mouse.setCursor(love.mouse.getSystemCursor('hand'))
+    test:assertObject(love.mouse.getCursor())
+  else
+    test:skipTest('cursor not supported on this system')
+  end
 end
 
 
 -- love.mouse.setGrabbed
+-- @NOTE can fail if you move the mouse a bunch while the test runs
 love.test.mouse.setGrabbed = function(test)
   test:assertEquals(false, love.mouse.isGrabbed(), 'check not grabbed')
   love.mouse.setGrabbed(true)

+ 9 - 7
testing/tests/physics.lua

@@ -306,13 +306,15 @@ love.test.physics.Joint = function(test)
   -- check not destroyed
   test:assertFalse(joint:isDestroyed(), 'check not destroyed')
 
-  -- check reaction props (sometimes nil on linux runners)
-  if joint:getReactionForce(1) ~= nil and joint:getReactionForce(1) ~= 0/0 then
-    test:assertEquals(0, joint:getReactionForce(1), 'check reaction force')
-  end
-  if joint:getReactionTorque(1) ~= nil and joint:getReactionTorque(1) ~= 0/0 then
-    test:assertEquals(0, joint:getReactionTorque(1), 'check reaction torque')
-  end
+
+  -- check reaction props
+  world:update(1)
+  local rx1, ry1 = joint:getReactionForce(1)
+  test:assertEquals(0, rx1, 'check reaction force x')
+  test:assertEquals(0, ry1, 'check reaction force y')
+  local rx2, ry2 = joint:getReactionTorque(1)
+  test:assertEquals(0, rx2, 'check reaction torque x')
+  test:assertEquals(nil, ry2, 'check reaction torque y')
 
   -- check body pointer
   local b1, b2 = joint:getBodies()

+ 1 - 3
testing/tests/touch.lua

@@ -27,7 +27,5 @@ end
 
 -- love.touch.getTouches
 love.test.touch.getTouches = function(test)
-  local touches = love.touch.getTouches()
-  test:assertNotNil(touches)
-  test:assertEquals(0, #touches, 'check no touches')
+  test:assertEquals('function', type(love.touch.getTouches))
 end

Some files were not shown because too many files changed in this diff