Ver código fonte

Add initial support for integration tests on Emscripten platform.
At the moment the 'make test' cannot be run non-interactively yet on Linux host and Mac OS X host systems due to what-could-be a bug in 'emrun' script. The issue with 'emrun' has been reported to upstream (https://github.com/kripken/emscripten/issues/3234).

Yao Wei Tjong 姚伟忠 10 anos atrás
pai
commit
0fe597223f
44 arquivos alterados com 83 adições e 55 exclusões
  1. 27 5
      CMake/Modules/Urho3D-CMake-common.cmake
  2. 1 1
      Docs/GettingStarted.dox
  3. 5 5
      Rakefile
  4. 1 1
      Source/Samples/01_HelloWorld/CMakeLists.txt
  5. 1 1
      Source/Samples/02_HelloGUI/CMakeLists.txt
  6. 1 1
      Source/Samples/03_Sprites/CMakeLists.txt
  7. 1 1
      Source/Samples/04_StaticScene/CMakeLists.txt
  8. 1 1
      Source/Samples/05_AnimatingScene/CMakeLists.txt
  9. 1 1
      Source/Samples/06_SkeletalAnimation/CMakeLists.txt
  10. 1 1
      Source/Samples/07_Billboards/CMakeLists.txt
  11. 1 1
      Source/Samples/08_Decals/CMakeLists.txt
  12. 1 1
      Source/Samples/09_MultipleViewports/CMakeLists.txt
  13. 1 1
      Source/Samples/10_RenderToTexture/CMakeLists.txt
  14. 1 1
      Source/Samples/11_Physics/CMakeLists.txt
  15. 1 1
      Source/Samples/12_PhysicsStressTest/CMakeLists.txt
  16. 1 1
      Source/Samples/13_Ragdolls/CMakeLists.txt
  17. 1 1
      Source/Samples/14_SoundEffects/CMakeLists.txt
  18. 1 1
      Source/Samples/15_Navigation/CMakeLists.txt
  19. 1 1
      Source/Samples/16_Chat/CMakeLists.txt
  20. 1 1
      Source/Samples/17_SceneReplication/CMakeLists.txt
  21. 1 1
      Source/Samples/18_CharacterDemo/CMakeLists.txt
  22. 1 1
      Source/Samples/19_VehicleDemo/CMakeLists.txt
  23. 1 1
      Source/Samples/20_HugeObjectCount/CMakeLists.txt
  24. 1 1
      Source/Samples/21_AngelScriptIntegration/CMakeLists.txt
  25. 1 1
      Source/Samples/22_LuaIntegration/CMakeLists.txt
  26. 1 1
      Source/Samples/23_Water/CMakeLists.txt
  27. 1 1
      Source/Samples/24_Urho2DSprite/CMakeLists.txt
  28. 1 1
      Source/Samples/25_Urho2DParticle/CMakeLists.txt
  29. 1 1
      Source/Samples/26_ConsoleInput/CMakeLists.txt
  30. 1 1
      Source/Samples/27_Urho2DPhysics/CMakeLists.txt
  31. 1 1
      Source/Samples/28_Urho2DPhysicsRope/CMakeLists.txt
  32. 1 1
      Source/Samples/29_SoundSynthesis/CMakeLists.txt
  33. 1 1
      Source/Samples/30_LightAnimation/CMakeLists.txt
  34. 1 1
      Source/Samples/31_MaterialAnimation/CMakeLists.txt
  35. 1 1
      Source/Samples/32_Urho2DConstraints/CMakeLists.txt
  36. 1 1
      Source/Samples/33_Urho2DSpriterAnimation/CMakeLists.txt
  37. 1 1
      Source/Samples/34_DynamicGeometry/CMakeLists.txt
  38. 1 1
      Source/Samples/35_SignedDistanceFieldText/CMakeLists.txt
  39. 1 1
      Source/Samples/36_Urho2DTileMap/CMakeLists.txt
  40. 1 1
      Source/Samples/37_UIDrag/CMakeLists.txt
  41. 1 1
      Source/Samples/38_SceneAndUILoad/CMakeLists.txt
  42. 4 4
      Source/Tools/Urho3DPlayer/CMakeLists.txt
  43. 1 2
      Source/Urho3D/Engine/Application.cpp
  44. 7 0
      Source/Urho3D/Engine/Engine.cpp

+ 27 - 5
CMake/Modules/Urho3D-CMake-common.cmake

@@ -112,9 +112,14 @@ option (URHO3D_PROFILING "Enable profiling support" TRUE)
 option (URHO3D_LOGGING "Enable logging support" TRUE)
 option (URHO3D_TESTING "Enable testing support")
 if (URHO3D_TESTING)
-    set (URHO3D_TEST_TIME_OUT 5 CACHE STRING "Number of seconds to test run the executables")
+    if (EMSCRIPTEN)
+        set (DEFAULT_TIMEOUT 15)
+    else ()
+        set (DEFAULT_TIMEOUT 5)
+    endif ()
+    set (URHO3D_TEST_TIMEOUT ${DEFAULT_TIMEOUT} CACHE STRING "Number of seconds to test run the executables (when testing support is enabled only), default to 15 on Emscripten platform and 5 on other platforms")
 else ()
-    unset (URHO3D_TEST_TIME_OUT CACHE)
+    unset (URHO3D_TEST_TIMEOUT CACHE)
 endif ()
 # The URHO3D_OPENGL option is not defined on non-Windows platforms as they should always use OpenGL
 if (MSVC)
@@ -817,6 +822,9 @@ macro (setup_emscripten_linker_flags LINKER_FLAGS)
     if (NOT DEFINED ENV{CI})
         set (${LINKER_FLAGS}_DEBUG -g4)     # Preserve LLVM debug information, show line number debug comments, and generate source maps
     endif ()
+    if (URHO3D_TESTING)
+        set (${LINKER_FLAGS}_DEBUG --emrun) # Inject code into the generated Module object to enable capture of stdout, stderr and exit()
+    endif ()
     # Pass additional source files to linker with the supported flags, such as: js-library, pre-js, post-js, embed-file, preload-file, shell-file
     foreach (FILE ${SOURCE_FILES})
         get_property (EMCC_OPTION SOURCE ${FILE} PROPERTY EMCC_OPTION)
@@ -1085,6 +1093,20 @@ macro (adjust_target_name)
     set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAME ${OUTPUT_NAME})
 endmacro ()
 
+# Macro for setting up a test case
+macro (setup_test)
+    cmake_parse_arguments (ARG "" "NAME" "OPTIONS" ${ARGN})
+    if (NOT ARG_NAME)
+        set (ARG_NAME ${TARGET_NAME})
+    endif ()
+    list (APPEND ARG_OPTIONS -timeout ${URHO3D_TEST_TIMEOUT})
+    if (EMSCRIPTEN)
+        add_test (NAME ${ARG_NAME} COMMAND ${EMRUN} --kill_exit ${TARGET_NAME}.html ${ARG_OPTIONS} WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
+    else ()
+        add_test (NAME ${ARG_NAME} COMMAND ${TARGET_NAME} ${ARG_OPTIONS})
+    endif ()
+endmacro ()
+
 # Macro for defining external library dependencies
 # The purpose of this macro is emulate CMake to set the external library dependencies transitively
 # It works for both targets setup within Urho3D project and outside Urho3D project that uses Urho3D as external static/shared library
@@ -1384,9 +1406,9 @@ elseif (EMSCRIPTEN)
     # Create Urho3D custom HTML shell that also embeds our own project logo
     if (NOT EXISTS ${CMAKE_BINARY_DIR}/Source/shell.html)
         file (READ ${EMSCRIPTEN_ROOT_PATH}/src/shell.html SHELL_HTML)
-        string (REPLACE "<!doctype html>" "<!-- This is a generated file. DO NOT EDIT!-->\n\n<!doctype html>" SHELL_HTML "${SHELL_HTML}")     # Stringify to preserve semicolons
-        string (REPLACE "<body>" "<body>\n\n<a href=\"http://urho3d.github.io\" title=\"Urho3D Homepage\"><img src=\"http://urho3d.github.io/assets/images/logo.png\" alt=\"link to http://urho3d.github.io\" height=\"80\" width=\"320\" /></a>\n" SHELL_HTML "${SHELL_HTML}")
-        file (WRITE ${CMAKE_BINARY_DIR}/Source/shell.html "${SHELL_HTML}")
+        string (REPLACE "<!doctype html>" "<!-- This is a generated file. DO NOT EDIT!-->\n\n<!doctype html>" SHELL_HTML "${SHELL_HTML}")     # Stringify to preserve semicolons
+        string (REPLACE "<body>" "<body>\n\n<a href=\"http://urho3d.github.io\" title=\"Urho3D Homepage\"><img src=\"http://urho3d.github.io/assets/images/logo.png\" alt=\"link to http://urho3d.github.io\" height=\"80\" width=\"320\" /></a>\n" SHELL_HTML "${SHELL_HTML}")
+        file (WRITE ${CMAKE_BINARY_DIR}/Source/shell.html "${SHELL_HTML}")
     endif ()
 endif ()
 

+ 1 - 1
Docs/GettingStarted.dox

@@ -91,7 +91,7 @@ A number of build options can be defined when invoking the build scripts or when
 |URHO3D_PROFILING     |1|Enable profiling support|
 |URHO3D_LOGGING       |1|Enable logging support|
 |URHO3D_TESTING       |0|Enable testing support|
-|URHO3D_TEST_TIME_OUT |5|Number of seconds to test run the executables (when testing support is enabled only)|
+|URHO3D_TEST_TIMEOUT  |*|Number of seconds to test run the executables (when testing support is enabled only), default to 15 on Emscripten platform and 5 on other platforms|
 |URHO3D_OPENGL        |0|Use OpenGL instead of Direct3D (Windows platform only)|
 |URHO3D_STATIC_RUNTIME|0|Use static C/C++ runtime libraries and eliminate the need for runtime DLLs installation (VS only)|
 |URHO3D_WIN32_CONSOLE |0|Use console main() as entry point when setting up Windows executable targets (Windows platform only)|

+ 5 - 5
Rakefile

@@ -71,7 +71,7 @@ task :cmake do
     case option
     when 'cmake', 'generic'
       # do nothing
-    when 'clean', 'codeblocks', 'eclipse', 'macosx', 'ninja', 'vs2008', 'vs2010', 'vs2012', 'vs2013'
+    when 'clean', 'codeblocks', 'eclipse', 'macosx', 'ninja', 'vs2008', 'vs2010', 'vs2012', 'vs2013', 'vs2015'
       script = "cmake_#{option}" unless script == 'cmake_clean'
     when 'android', 'emscripten', 'ios', 'mingw', 'rpi'
       platform = option
@@ -100,7 +100,7 @@ task :make do
   ARGV.each { |option|
     task option.to_sym do ; end; Rake::Task[option].clear   # No-op hack
     case option
-    when 'codeblocks', 'eclipse', 'generic', 'macosx', 'make', 'ninja', 'vs2008', 'vs2010', 'vs2012', 'vs2013'
+    when 'codeblocks', 'eclipse', 'generic', 'macosx', 'make', 'ninja', 'vs2008', 'vs2010', 'vs2012', 'vs2013', 'vs2015'
       # do nothing
     when 'android', 'emscripten', 'ios', 'mingw', 'rpi'
       platform = option
@@ -169,7 +169,7 @@ task :ci do
   $build_options = "-DWIN32=#{ENV['WINDOWS']}" if ENV['WINDOWS']
   $build_options = "#{$build_options} -DANDROID_ABI=#{ENV['ABI']}" if ENV['ABI']
   $build_options = "#{$build_options} -DANDROID_NATIVE_API_LEVEL=#{ENV['API']}" if ENV['API']
-  ['URHO3D_64BIT', 'URHO3D_OPENGL', 'ANDROID', 'RPI', 'RPI_ABI', 'EMSCRIPTEN', 'EMSCRIPTEN_SHARE_DATA'].each { |var|
+  ['URHO3D_64BIT', 'URHO3D_OPENGL', 'ANDROID', 'RPI', 'RPI_ABI', 'EMSCRIPTEN', 'EMSCRIPTEN_SHARE_DATA', 'URHO3D_TEST_TIMEOUT'].each { |var|
     $build_options = "#{$build_options} -D#{var}=#{ENV[var]}" if ENV[var]
   }
   if ENV['XCODE']
@@ -373,10 +373,10 @@ setup_main_executable ()
 
 # Setup test cases
 if (URHO3D_ANGELSCRIPT)
-    add_test (NAME ExternalLibAS COMMAND ${TARGET_NAME} Scripts/12_PhysicsStressTest.as -w -timeout ${URHO3D_TEST_TIME_OUT})
+    setup_test (NAME ExternalLibAS OPTIONS Scripts/12_PhysicsStressTest.as -w)
 endif ()
 if (URHO3D_LUA)
-    add_test (NAME ExternalLibLua COMMAND ${TARGET_NAME} LuaScripts/12_PhysicsStressTest.lua -w -timeout ${URHO3D_TEST_TIME_OUT})
+    setup_test (NAME ExternalLibLua OPTIONS LuaScripts/12_PhysicsStressTest.lua -w)
 endif ()
 EOF
   # TODO: Rewrite in pure Ruby when it supports symlink creation on Windows platform

+ 1 - 1
Source/Samples/01_HelloWorld/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/02_HelloGUI/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/03_Sprites/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/04_StaticScene/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/05_AnimatingScene/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/06_SkeletalAnimation/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/07_Billboards/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/08_Decals/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/09_MultipleViewports/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/10_RenderToTexture/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/11_Physics/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/12_PhysicsStressTest/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/13_Ragdolls/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/14_SoundEffects/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/15_Navigation/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/16_Chat/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/17_SceneReplication/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/18_CharacterDemo/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/19_VehicleDemo/CMakeLists.txt

@@ -33,4 +33,4 @@ endif ()
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/20_HugeObjectCount/CMakeLists.txt

@@ -33,4 +33,4 @@ endif ()
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/21_AngelScriptIntegration/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/22_LuaIntegration/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/23_Water/CMakeLists.txt

@@ -33,4 +33,4 @@ endif ()
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/24_Urho2DSprite/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/25_Urho2DParticle/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/26_ConsoleInput/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/27_Urho2DPhysics/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/28_Urho2DPhysicsRope/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/29_SoundSynthesis/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/30_LightAnimation/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/31_MaterialAnimation/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/32_Urho2DConstraints/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/33_Urho2DSpriterAnimation/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/34_DynamicGeometry/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/35_SignedDistanceFieldText/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/36_Urho2DTileMap/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/37_UIDrag/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 1 - 1
Source/Samples/38_SceneAndUILoad/CMakeLists.txt

@@ -30,4 +30,4 @@ define_source_files (EXTRA_H_FILES ${COMMON_SAMPLE_H_FILES})
 setup_main_executable ()
 
 # Setup test cases
-add_test (NAME ${TARGET_NAME} COMMAND ${TARGET_NAME} -timeout ${URHO3D_TEST_TIME_OUT})
+setup_test ()

+ 4 - 4
Source/Tools/Urho3DPlayer/CMakeLists.txt

@@ -31,12 +31,12 @@ setup_main_executable (NOBUNDLE)
 
 # Setup test cases
 if (URHO3D_ANGELSCRIPT)
-    add_test (NAME Editor COMMAND ${TARGET_NAME} Scripts/Editor.as -w -timeout ${URHO3D_TEST_TIME_OUT})
-    add_test (NAME NinjaSnowWar COMMAND ${TARGET_NAME} Scripts/NinjaSnowWar.as -w -timeout ${URHO3D_TEST_TIME_OUT})
-    add_test (NAME SpritesAS COMMAND ${TARGET_NAME} Scripts/03_Sprites.as -w -timeout ${URHO3D_TEST_TIME_OUT})
+    setup_test (NAME Editor OPTIONS Scripts/Editor.as -w)
+    setup_test (NAME NinjaSnowWar OPTIONS Scripts/NinjaSnowWar.as -w)
+    setup_test (NAME SpritesAS OPTIONS Scripts/03_Sprites.as -w)
 endif ()
 if (URHO3D_LUA)
-    add_test (NAME SpritesLua COMMAND ${TARGET_NAME} LuaScripts/03_Sprites.lua -w -timeout ${URHO3D_TEST_TIME_OUT})
+    setup_test (NAME SpritesLua OPTIONS LuaScripts/03_Sprites.lua -w)
 endif ()
 
 # Symlink/copy helper shell scripts or batch files to invoke Urho3DPlayer

+ 1 - 2
Source/Urho3D/Engine/Application.cpp

@@ -44,8 +44,7 @@ namespace Urho3D
 #endif
 void RunFrame(void* data)
 {
-    Engine* engine = reinterpret_cast<Engine*>(data);
-    engine->RunFrame();
+    static_cast<Engine*>(data)->RunFrame();
 }
 #endif
 

+ 7 - 0
Source/Urho3D/Engine/Engine.cpp

@@ -54,6 +54,10 @@
 #include "../Core/WorkQueue.h"
 #include "../Resource/XMLFile.h"
 
+#ifdef EMSCRIPTEN
+#include <emscripten.h>
+#endif
+
 #include "../DebugNew.h"
 
 #if defined(_MSC_VER) && defined(_DEBUG)
@@ -888,6 +892,9 @@ void Engine::DoExit()
         graphics->Close();
 
     exiting_ = true;
+    #ifdef EMSCRIPTEN
+    emscripten_force_exit(EXIT_SUCCESS);    // Some how this is required to signal emrun to stop
+    #endif
 }
 
 }