Skip to content

Commit 618ee44

Browse files
committed
Add smoke test with Tween to check for issues with handling RefCounted
1 parent 6c05f1f commit 618ee44

File tree

4 files changed

+12
-0
lines changed

4 files changed

+12
-0
lines changed

test/build_profile.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"OS",
99
"TileMap",
1010
"TileSet",
11+
"Tween",
1112
"Viewport"
1213
]
1314
}

test/project/main.gd

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ func _ready():
225225
assert_equal(new_tilemap.tile_set, new_tileset)
226226
new_tilemap.queue_free()
227227

228+
# Creates a Tween and checks that it's valid. Improper refcount handling will crash now or at shutdown.
229+
assert_equal(example.test_tween_smoke_test(), true)
230+
228231
# Test variant call.
229232
var test_obj = TestClass.new()
230233
assert_equal(example.test_variant_call(test_obj), "hello world")

test/src/example.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ void Example::_bind_methods() {
222222

223223
ClassDB::bind_method(D_METHOD("test_add_child", "node"), &Example::test_add_child);
224224
ClassDB::bind_method(D_METHOD("test_set_tileset", "tilemap", "tileset"), &Example::test_set_tileset);
225+
ClassDB::bind_method(D_METHOD("test_tween_smoke_test"), &Example::test_tween_smoke_test);
225226

226227
ClassDB::bind_method(D_METHOD("test_variant_call", "variant"), &Example::test_variant_call);
227228

@@ -616,6 +617,11 @@ void Example::test_set_tileset(TileMap *p_tilemap, const Ref<TileSet> &p_tileset
616617
p_tilemap->set_tileset(p_tileset);
617618
}
618619

620+
bool Example::test_tween_smoke_test() {
621+
Ref<Tween> tween = create_tween();
622+
return tween.is_valid() && tween->is_class("Tween") && tween->get_reference_count() > 1;
623+
}
624+
619625
Variant Example::test_variant_call(Variant p_variant) {
620626
return p_variant.call("test", "hello");
621627
}

test/src/example.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <godot_cpp/classes/input_event_key.hpp>
2020
#include <godot_cpp/classes/tile_map.hpp>
2121
#include <godot_cpp/classes/tile_set.hpp>
22+
#include <godot_cpp/classes/tween.hpp>
2223
#include <godot_cpp/classes/viewport.hpp>
2324
#include <godot_cpp/variant/typed_dictionary.hpp>
2425
#include <godot_cpp/variant/variant.hpp>
@@ -154,6 +155,7 @@ class Example : public Control {
154155

155156
void test_add_child(Node *p_node);
156157
void test_set_tileset(TileMap *p_tilemap, const Ref<TileSet> &p_tileset) const;
158+
bool test_tween_smoke_test();
157159

158160
Variant test_variant_call(Variant p_variant);
159161

0 commit comments

Comments
 (0)