Skip to content

Commit 5c154da

Browse files
authored
Merge pull request #593 from nekomatata/physics-tests-cancel-fix
Physics test cases, cancel previous running test properly
2 parents 35687c3 + 7f095a6 commit 5c154da

File tree

5 files changed

+71
-5
lines changed

5 files changed

+71
-5
lines changed

2d/physics_tests/test.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func cancel_timer():
115115

116116

117117
func is_timer_canceled():
118-
return _timer.paused
118+
return _timer and _timer.paused
119119

120120

121121
func wait_for_physics_ticks(tick_count):

2d/physics_tests/tests/functional/test_character.gd

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ func _on_option_changed(option, checked):
127127

128128

129129
func _start_test():
130+
cancel_timer()
131+
130132
if _moving_body:
131133
_body_parent.remove_child(_moving_body)
132134
_moving_body.queue_free()

2d/physics_tests/tests/functional/test_character_pixels.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,14 @@ func _test_all():
101101

102102
# Test floor detection with no snapping.
103103
yield(_start_test_case(OPTION_TEST_CASE_DETECT_FLOOR_NO_SNAP), "completed")
104+
if is_timer_canceled():
105+
return
104106

105107
# Test floor detection with no snapping.
106108
# In this test case, motion alternates different speeds.
107109
yield(_start_test_case(OPTION_TEST_CASE_DETECT_FLOOR_MOTION_CHANGES), "completed")
110+
if is_timer_canceled():
111+
return
108112

109113
Log.print_log("* Done.")
110114

2d/physics_tests/tests/functional/test_character_tilemap.gd

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,25 @@ func _test_all():
8888

8989
# RigidBody tests.
9090
yield(_start_test_case(OPTION_TEST_CASE_JUMP_ONE_WAY_RIGID), "completed")
91+
if is_timer_canceled():
92+
return
93+
9194
yield(_start_test_case(OPTION_TEST_CASE_JUMP_ONE_WAY_CORNER_RIGID), "completed")
95+
if is_timer_canceled():
96+
return
9297

9398
# KinematicBody tests.
9499
yield(_start_test_case(OPTION_TEST_CASE_JUMP_ONE_WAY_KINEMATIC), "completed")
100+
if is_timer_canceled():
101+
return
102+
95103
yield(_start_test_case(OPTION_TEST_CASE_JUMP_ONE_WAY_CORNER_KINEMATIC), "completed")
104+
if is_timer_canceled():
105+
return
106+
96107
yield(_start_test_case(OPTION_TEST_CASE_FALL_ONE_WAY_KINEMATIC), "completed")
108+
if is_timer_canceled():
109+
return
97110

98111
Log.print_log("* Done.")
99112

2d/physics_tests/tests/functional/test_one_way_collision.gd

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ var _test_step = 0
4444
var _test_all_angles = false
4545
var _lock_controls = false
4646

47+
var _test_canceled = false
48+
4749

4850
func _ready():
4951
if not Engine.editor_hint:
@@ -225,16 +227,24 @@ func _test_all_rigid_body():
225227
_set_platform_size(64.0, false)
226228
_set_rigidbody_angle(0.0, false)
227229
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_RIGID), "completed")
230+
if _test_canceled:
231+
return
228232

229233
_set_platform_size(64.0, false)
230234
_set_rigidbody_angle(45.0, false)
231235
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_RIGID), "completed")
236+
if _test_canceled:
237+
return
232238

233239
_set_platform_size(32.0, false)
234240
_set_rigidbody_angle(45.0, false)
235241
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_RIGID), "completed")
242+
if _test_canceled:
243+
return
236244

237245
yield(_start_test_case(OPTION_TEST_CASE_MOVING_PLATFORM_RIGID), "completed")
246+
if _test_canceled:
247+
return
238248

239249

240250
func _test_all_kinematic_body():
@@ -243,16 +253,24 @@ func _test_all_kinematic_body():
243253
_set_platform_size(64.0, false)
244254
_set_rigidbody_angle(0.0, false)
245255
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC), "completed")
256+
if _test_canceled:
257+
return
246258

247259
_set_platform_size(64.0, false)
248260
_set_rigidbody_angle(45.0, false)
249261
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC), "completed")
262+
if _test_canceled:
263+
return
250264

251265
_set_platform_size(32.0, false)
252266
_set_rigidbody_angle(45.0, false)
253267
yield(_start_test_case(OPTION_TEST_CASE_ALL_ANGLES_KINEMATIC), "completed")
268+
if _test_canceled:
269+
return
254270

255271
yield(_start_test_case(OPTION_TEST_CASE_MOVING_PLATFORM_KINEMATIC), "completed")
272+
if _test_canceled:
273+
return
256274

257275

258276
func _test_moving_platform():
@@ -265,9 +283,13 @@ func _test_moving_platform():
265283

266284
_set_platform_angle(90.0, false)
267285
yield(_wait_for_test(), "completed")
286+
if _test_canceled:
287+
return
268288

269289
_set_platform_angle(-90.0, false)
270290
yield(_wait_for_test(), "completed")
291+
if _test_canceled:
292+
return
271293

272294
Log.print_log("* Platform moving towards body...")
273295
_set_platform_size(64.0, false)
@@ -276,9 +298,13 @@ func _test_moving_platform():
276298

277299
_set_platform_angle(90.0, false)
278300
yield(_wait_for_test(), "completed")
301+
if _test_canceled:
302+
return
279303

280304
_set_platform_angle(-90.0, false)
281305
yield(_wait_for_test(), "completed")
306+
if _test_canceled:
307+
return
282308

283309
_platform_speed = 0.0
284310
emit_signal("all_tests_done")
@@ -288,7 +314,12 @@ func _test_all():
288314
Log.print_log("* TESTING ALL...")
289315

290316
yield(_test_all_rigid_body(), "completed")
317+
if _test_canceled:
318+
return
319+
291320
yield(_test_all_kinematic_body(), "completed")
321+
if _test_canceled:
322+
return
292323

293324
Log.print_log("* Done.")
294325

@@ -342,7 +373,9 @@ func _start_test():
342373

343374

344375
func _reset_test(cancel_test = true):
345-
$Timer.stop()
376+
_test_canceled = true
377+
_on_timeout()
378+
_test_canceled = false
346379

347380
_test_step = 0
348381

@@ -415,13 +448,27 @@ func _should_collide():
415448

416449

417450
func _on_timeout():
451+
cancel_timer()
452+
453+
if $Timer.is_stopped():
454+
return
455+
456+
$Timer.stop()
457+
458+
if _test_canceled:
459+
emit_signal("test_done")
460+
emit_signal("all_tests_done")
461+
return
462+
418463
if not _contact_detected and not _target_entered:
419464
Log.print_log("Test TIMEOUT")
420465
_set_result()
421466

422-
$Timer.stop()
423-
424-
yield(get_tree().create_timer(0.5), "timeout")
467+
yield(start_timer(0.5), "timeout")
468+
if _test_canceled:
469+
emit_signal("test_done")
470+
emit_signal("all_tests_done")
471+
return
425472

426473
var was_all_angles = _test_all_angles
427474

0 commit comments

Comments
 (0)