MantisBT - CMake | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0011734 | CMake | CTest | public | 2011-01-20 13:31 | 2011-05-02 14:46 |
Reporter | David Cole | ||||
Assigned To | Ben Boeckel | ||||
Priority | high | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | OS | OS Version | |||
Product Version | CMake 2.8.4 | ||||
Target Version | CMake 2.8.4 | Fixed in Version | CMake 2.8.4 | ||
Summary | 0011734: Regression from 2.8.3 : add_test in subdir incorrectly keeps cwd at top level CMAKE_BINARY_DIR | ||||
Description | The code in the "Steps to Reproduce" section, after running: cmake cmake --build . --config Debug ctest -C Debug ...produces files ending in ".args.txt" as follows: dir /s /b *.args.txt C:\...\echoargs-test0.args.txt C:\...\echoargs-test1.args.txt C:\...\echoargs-test3.args.txt C:\...\sub\echoargs-test2.args.txt Actual: "echoargs-test3.args.txt" is in the top level directory Expected: The file "echoargs-test3.args.txt" should be in the "sub" subdir... Just like the corresponding file for test2. Apparently, only the NAME/COMMAND signature of add_test is affected by this bug. Thanks to Andy Bauer for the bug report. I reproduced this using the attached code on Windows 7 with Visual Studio 2010. Andy originally discovered this on a Linux box. | ||||
Steps To Reproduce | # top level "CMakeLists.txt" cmake_minimum_required(VERSION 2.8) project(SmallAndFast) include(CTest) add_definitions(-D_CRT_SECURE_NO_WARNINGS) add_executable(echoargs echoargs.c) add_test(test0 echoargs test0) add_test(NAME test1 COMMAND echoargs test1 1 $<CONFIGURATION>) add_subdirectory(sub) # subdir "sub/CMakeLists.txt" add_executable(echoargsSub ../echoargs.c) add_test(test2 echoargsSub test2 1 2) add_test(NAME test3 COMMAND echoargsSub test3 1 2 3 $<CONFIGURATION>) // top level "echoargs.c" #include <direct.h> #include <stdio.h> int main(int argc, const char* argv[]) { int i = 0; FILE *fp = (FILE *) 0; char buf[4096]; char filename[256]; const char *cwd = _getcwd(buf, 4095); const char *name = argc>1 ? argv[1] : "unknown"; for (; i<argc; ++i) { fprintf(stdout, "%s\n", argv[i]); } if (cwd != NULL) { fprintf(stdout, "cwd='%s'\n", cwd); } // When this test is over, there should be an "echoargs.txt" left in the // current working directory (the one that was current when the test was // run...) sprintf(filename, "echoargs-%s.args.txt", name); fp = fopen(filename, "w"); if (NULL != fp) { i = 0; for (; i<argc; ++i) { fprintf(fp, "%s\n", argv[i]); } if (cwd != NULL) { fprintf(fp, "cwd='%s'\n", cwd); } fclose(fp); } return 0; } | ||||
Additional Information | |||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2011-01-20 13:31 | David Cole | New Issue | |||
2011-01-20 13:55 | David Cole | Assigned To | => Ben Boeckel | ||
2011-01-20 13:55 | David Cole | Status | new => assigned | ||
2011-01-20 16:37 | David Cole | Note Added: 0024974 | |||
2011-01-20 16:37 | David Cole | Status | assigned => resolved | ||
2011-01-20 16:37 | David Cole | Fixed in Version | => CMake 2.8.4 | ||
2011-01-20 16:37 | David Cole | Resolution | open => fixed | ||
2011-05-02 14:46 | David Cole | Note Added: 0026372 | |||
2011-05-02 14:46 | David Cole | Status | resolved => closed |
Notes | |||||
|
|||||
|
|
||||
|
|||||
|
|