Build: add "make test" command for Windows, output log file
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 12 Sep 2019 18:13:47 +0000 (20:13 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Thu, 12 Sep 2019 18:23:03 +0000 (20:23 +0200)
Differential Revision: https://developer.blender.org/D5715

GNUmakefile
build_files/utils/make_test.py
build_files/windows/find_dependencies.cmd
build_files/windows/parse_arguments.cmd
build_files/windows/reset_variables.cmd
build_files/windows/show_help.cmd
build_files/windows/test.cmd [new file with mode: 0644]
make.bat

index ef1b6b711d2b69f8caa229267b65cee155568df5..d960a67e407125cd85890d89ed7d69ba8acd7948 100644 (file)
@@ -62,8 +62,7 @@ Testing Targets
    Not associated with building Blender.
 
    * test:
-     Run ctest, currently tests import/export,
-     operator execution and that python modules load
+     Run automated tests with ctest.
    * test_cmake:
      Runs our own cmake file checker
      which detects errors in the cmake file list definitions
index 0a5e4055a1894f96cb027432547b11e05aa7a38e..a18b1c8814a814f13797f9be3bc8485ca10b7103 100755 (executable)
@@ -18,6 +18,7 @@ def parse_arguments():
     parser.add_argument("--cmake-command", default="cmake")
     parser.add_argument("--svn-command", default="svn")
     parser.add_argument("--git-command", default="git")
+    parser.add_argument("--config", default="")
     parser.add_argument("build_directory")
     return parser.parse_args()
 
@@ -26,12 +27,17 @@ git_command = args.git_command
 svn_command = args.svn_command
 ctest_command = args.ctest_command
 cmake_command = args.cmake_command
+config = args.config
 build_dir = args.build_directory
 
 if shutil.which(ctest_command) is None:
     sys.stderr.write("ctest not found, can't run tests\n")
     sys.exit(1)
 
+if shutil.which(git_command) is None:
+    sys.stderr.write("git not found, can't run tests\n")
+    sys.exit(1)
+
 # Test if we are building a specific release version.
 release_version = make_utils.git_branch_release_version(git_command)
 lib_tests_dirpath = os.path.join('..', 'lib', "tests")
@@ -43,6 +49,10 @@ if not os.path.exists(lib_tests_dirpath):
         sys.stderr.write("svn not found, can't checkout test files\n")
         sys.exit(1)
 
+    if shutil.which(cmake_command) is None:
+        sys.stderr.write("cmake not found, can't checkout test files\n")
+        sys.exit(1)
+
     svn_url = make_utils.svn_libraries_base_url(release_version) + "/tests"
     call([svn_command, "checkout", svn_url, lib_tests_dirpath])
 
@@ -52,4 +62,7 @@ if not os.path.exists(lib_tests_dirpath):
 
 # Run tests
 os.chdir(build_dir)
-call([ctest_command, ".", "--output-on-failure"])
+command = [ctest_command, ".", "--output-on-failure"]
+if len(config):
+    command += ["-C", config]
+call(command)
index 6a2233ecff78cdbd4666a66da999683321b354ce..7419a0bc77ee1cbf86564aceddcd38c1f6abb140 100644 (file)
@@ -1,15 +1,17 @@
 REM find all dependencies and set the corresponding environment variables. 
 for %%X in (svn.exe) do (set SVN=%%~$PATH:X)
 for %%X in (cmake.exe) do (set CMAKE=%%~$PATH:X)
+for %%X in (ctest.exe) do (set CTEST=%%~$PATH:X)
 for %%X in (git.exe) do (set GIT=%%~$PATH:X)
 set PYTHON=%BLENDER_DIR%\..\lib\win64_vc14\python\37\bin\python.exe
 if NOT "%verbose%" == "" (
        echo svn    : "%SVN%"
        echo cmake  : "%CMAKE%"
+       echo ctest  : "%CTEST%"
        echo git    : "%GIT%"
        echo python : "%PYTHON%"
 )
 if "%CMAKE%" == "" (
        echo Cmake not found in path, required for building, exiting...
        exit /b 1
-)
\ No newline at end of file
+)
index acbbc355f578dc8bdff04d68e870e26b93083da1..47c6f81adb31f8a119b63c0656784a0867242c28 100644 (file)
@@ -92,6 +92,9 @@ if NOT "%1" == "" (
                set MUST_CLEAN=1
        ) else if "%1" == "verbose" (
                set VERBOSE=1
+       ) else if "%1" == "test" (
+               set TEST=1
+               set NOBUILD=1
        ) else if "%1" == "format" (
                set FORMAT=1
                set FORMAT_ARGS=%2 %3 %4 %5 %6 %7 %8 %9
index 8b74cec238dfcf89c465efc8a5942d7e5e53fd8f..48a61aff44ae9fd8cbdece7e4541cfbbee84e0b1 100644 (file)
@@ -29,3 +29,4 @@ set ASAN_CMAKE_ARGS=
 set WITH_PYDEBUG=
 set PYDEBUG_CMAKE_ARGS=
 set FORMAT=
+set TEST=
index d0469688b5aa55249c5725ac8b683253e7ee7e7e..30f753164997023c48f8baf71f044af833fe110d 100644 (file)
@@ -13,6 +13,7 @@ echo - update ^(Update both SVN and GIT^)
 echo - code_update ^(Update only GIT^)
 echo - nobuild ^(only generate project files^)
 echo - showhash ^(Show git hashes of source tree^)
+echo - test ^(Run automated tests with ctest^)
 echo - format [path] ^(Format the source using clang-format, path is optional, requires python 3.x to be available^)
 echo.
 echo Configuration options
diff --git a/build_files/windows/test.cmd b/build_files/windows/test.cmd
new file mode 100644 (file)
index 0000000..cad6b50
--- /dev/null
@@ -0,0 +1,13 @@
+if EXIST %PYTHON% (
+       goto detect_python_done
+)
+
+echo python not found in lib folder
+exit /b 1
+
+:detect_python_done
+
+REM Use -B to avoid writing __pycache__ in lib directory and causing update conflicts.
+%PYTHON% -B %BLENDER_DIR%\build_files\utils\make_test.py --git-command "%GIT%" --svn-command "%SVN%" --cmake-command="%CMAKE%" --ctest-command="%CTEST%" --config="%BUILD_TYPE%" %BUILD_DIR%
+
+:EOF
index 3f09718ab4fd1a6a4bc182b390d92eb400b907ce..ea80bd591f7834aac4d813584877bbefbd1af6a0 100644 (file)
--- a/make.bat
+++ b/make.bat
@@ -63,6 +63,11 @@ echo Building blender with VS%BUILD_VS_YEAR% for %BUILD_ARCH% in %BUILD_DIR%
 call "%BLENDER_DIR%\build_files\windows\check_libraries.cmd"
 if errorlevel 1 goto EOF
 
+if "%TEST%" == "1" (
+       call "%BLENDER_DIR%\build_files\windows\test.cmd"
+       goto EOF
+)
+
 call "%BLENDER_DIR%\build_files\windows\check_submodules.cmd"
 if errorlevel 1 goto EOF