diff --git a/include/takane/spatial_experiment.hpp b/include/takane/spatial_experiment.hpp index 74efe7d..a45e059 100644 --- a/include/takane/spatial_experiment.hpp +++ b/include/takane/spatial_experiment.hpp @@ -112,7 +112,7 @@ inline void validate_image(const std::filesystem::path& path, size_t i, const st inline void validate_images(const std::filesystem::path& path, size_t ncols, Options& options, const ritsuko::Version& version) { auto image_dir = path / "images"; - if (!std::filesystem::exists(image_dir)) { + if (!std::filesystem::exists(image_dir) && version.ge(1, 2, 0)) { // No images at all, which is permitted. return; } diff --git a/tests/src/spatial_experiment.cpp b/tests/src/spatial_experiment.cpp index 243143d..39e25b2 100644 --- a/tests/src/spatial_experiment.cpp +++ b/tests/src/spatial_experiment.cpp @@ -144,8 +144,20 @@ TEST_F(SpatialExperimentTest, NoImages) { options.num_samples = 3; options.num_images_per_sample = 0; spatial_experiment::mock(dir, options); + std::filesystem::remove_all(dir / "images"); EXPECT_FALSE(std::filesystem::exists(dir / "images")); + + // Bumping the version to support no images/ subdirectory. + { + auto opath = dir / "OBJECT"; + auto parsed = millijson::parse_file(opath.c_str()); + auto& remap = reinterpret_cast(parsed.get())->values; + remap["type"] = std::shared_ptr(new millijson::String("spatial_experiment")); + spatial_experiment::add_object_metadata(parsed.get(), "1.2"); + json_utils::dump(parsed.get(), opath); + } + test_validate(dir); }