missing VTKData

Is there an environment variable which needs to be set, so that when the tests are run they find data in
Or is it set in CMake?


Use the Utilities/SetupForDeveloppement.sh scripts, it will set it up for you.

But it should work out of the box when activating testing.

Well I ran the scripts and set up a path for VTK data store, but there are no files in it. What next?

The only noticeable thing it did was to clone some files into

Did you enabled BUILD_TESTING ? Did you configured and built VTK ?

Yes to all. I am using Windows 10.

I should say that the data does appear to be in
but the tests look in

So I’m wondering where this folder information is coming from.

It seems the problem arises here

char* vtkTestUtilities::GetDataRoot(int argc, char* argv[])
  return vtkTestUtilities::GetArgOrEnvOrDefault(
    "-D", argc, argv,

char* vtkTestUtilities::ExpandDataFileName(int argc, char* argv[],
                                           const char* fname,
                                           int slash)
  return vtkTestUtilities::ExpandFileNameWithArgOrEnvOrDefault(
    "-D", argc, argv,

I either have to pass the data folder as a command line option with -D or setup an environment variable for VTK_DATA_ROOT. So the most generic solution seems to be setting
VTK_DATA_ROOT = "../../../../ExternalData/Testing"

I don’t see how any of this relates to the cmake VTK_DATA_STORE variable.

This is further complicated by the issue that, when running the tests inside Visual Studio, the current working directory is not the root build folder,
or the bin folder
but rather the test project folder

So it would appear that setting the data and testing directories explicitly using -D and -T options for each test project in Visual Studio via Cmake would be the best option i.e.

-D …/…/…/…/ExternalData/Testing
-T …/…/…/…/Testing/Temporary

@ben.boeckel may know more.

This works just fine for any Windows builds I’ve done recently and for our buildbots. Could you show how you configured VTK? Is this from a Git repository or a release tarball?

I build from my own fork of VTK on gitlab. The master branch on the fork is synchronised with (identical to) Kitware’s master branch. I use cmake-gui for the configuration and it is completely standard.

Data management for testing should Just Work in that case. How are you declaring your tests?

I just build the RUN_TESTS project in Visual Studio

Did you at least build the VTKData target first or just the relevant test binary?

Yes. I built the VTKData binary and I have rebuilt it since I updated VTKDataStore. Since I set up the environment variables for VTK_DATA_ROOT and VTK_TEMP_DIR the tests are all working, but I thought they should just work out of the box. Previously some tests certainly did not.

AFAIK, it does work out-of-the-box. Granted, Visual Studio is not likely widely tested, but I can’t think of a reason off-hand why it’d be different in VS. I’ll try and test this week.

I’ve tried running existing tests on the command line using the *CxxTests executable, but anything that is passed data from CMakeLists receives no args in main() and the tests fail. Am I missing a configuration step?

If I cannot get existing tests to run I cannot add a test to https://gitlab.kitware.com/vtk/vtk/merge_requests/6122