From 245e8685ad6eee56aa7224fc8c9f5c17edf93135 Mon Sep 17 00:00:00 2001 From: RDW Date: Sun, 28 Jan 2024 13:11:43 +0100 Subject: [PATCH] Tests: Fix a flaky test for the WebGPU renderer This causes sporadic CI failures because the function call detection is wonky. It's also outdated since each mesh now requires five buffers and not three, so a bit of generalization may be needed here. Still not great, but should at least reliably pass. --- Core/NativeClient/WebGPU/Mesh.lua | 4 +++- Tests/NativeClient/Renderer.spec.lua | 15 +++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Core/NativeClient/WebGPU/Mesh.lua b/Core/NativeClient/WebGPU/Mesh.lua index ea117166..4a9abc6b 100644 --- a/Core/NativeClient/WebGPU/Mesh.lua +++ b/Core/NativeClient/WebGPU/Mesh.lua @@ -2,7 +2,9 @@ local UnlitMeshMaterial = require("Core.NativeClient.WebGPU.Materials.UnlitMeshM local uuid = require("uuid") -local Mesh = {} +local Mesh = { + NUM_BUFFERS_PER_MESH = 5, -- Positions, indices, colors, diffuse UVs, normals +} function Mesh:Construct(name) local globallyUniqueID = uuid.createMersenneTwistedUUID() -- Might be overkill, but oh well... diff --git a/Tests/NativeClient/Renderer.spec.lua b/Tests/NativeClient/Renderer.spec.lua index 43832b96..e7d2b19c 100644 --- a/Tests/NativeClient/Renderer.spec.lua +++ b/Tests/NativeClient/Renderer.spec.lua @@ -433,13 +433,16 @@ describe("Renderer", function() it("should remove all existing meshes from the scene", function() local scene = require("Core.NativeClient.DebugDraw.Scenes.wgpu") Renderer:LoadSceneObjects(scene) - assertEquals(#Renderer.meshes, 9) + assertEquals(#Renderer.meshes, #scene.meshes) - -- A bit sketchy, but oh well... Better: Track wgpu calls (again)? Maybe later, seems redundant - _G.assertCallsFunction(function() - Renderer:ResetScene() - end, Renderer.DestroyMeshGeometry, 42) - assertEquals(#Renderer.meshes, 0) + etrace.clear() + Renderer:ResetScene() + local events = etrace.filter() + + assertEquals(#events, #scene.meshes * Mesh.NUM_BUFFERS_PER_MESH) + for index = 1, #scene.meshes * Mesh.NUM_BUFFERS_PER_MESH, 1 do + assertEquals(events[index].name, "GPU_BUFFER_DESTROY") + end end) it("should reset the scene lighting to its default values", function()