[CMake] Calling a Python Testing Script from CMake/CTest

George Ryan George.Ryan at geospectrum.ca
Wed Feb 24 09:09:47 EST 2016


Hi,

I am having difficulty getting a python script to run a C++ subprocess
on Window 7 using VS2013. On Linux, the following code works fine, but
on Windows, from the command line I get the following output:

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

Running tests...
Test project C:/work/s/sandbox/ctestpy/b
    Start 1: sample_test
1/1 Test #1: sample_test ......................***Not Run   0.00 sec

0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.06 sec

The following tests FAILED:
          1 - sample_test (BAD_COMMAND)
Errors while running CTest
NMAKE : fatal error U1077: 'echo' : return code '0x8'
Stop.

No matter what options I supply to ctest, I can't seem to get any
additional insight. I am assuming that for some reason the
WORKING_DIRECTORY isn't being obeyed on Windows?

If I run the python script manually from the command prompt, it works
fine. The python executable is in my $PATH.On Linux I am using CMake
3.3.1, and on Windows I have CMake 3.2.3.

----

sample.cpp

int main()
{
  return 0;
}

--------------

sample_test.py

#!/usr/bin/env python
import sys
import subprocess

sample = subprocess.Popen("./sample")
sample.wait()
if sample.returncode != 0:
    sys.exit(1)
else:
    sys.exit(0)
~
------------------------

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)
project(sampleprg)

enable_testing()

add_executable( sample sample.cpp )

add_test(NAME sample_test
         COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/sample_test.py
         WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} )






More information about the CMake mailing list