from conan import ConanFile from conan.tools.build import can_run from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout from conan.tools.env import VirtualRunEnv import os class TestPackageConan(ConanFile): settings = "os", "arch", "compiler", "build_type" generators = "CMakeDeps" test_type = "explicit" def layout(self): cmake_layout(self) def requirements(self): self.requires(self.tested_reference_str, run=can_run(self)) def generate(self): env = VirtualRunEnv(self) env.generate() if can_run(self): env = VirtualRunEnv(self) env.generate(scope="build") tc = CMakeToolchain(self) tc.variables["FLATBUFFERS_HEADER_ONLY"] = self.dependencies["flatbuffers"].options.header_only tc.generate() def build(self): cmake = CMake(self) cmake.configure() cmake.build() def test(self): if can_run(self): bin_path = os.path.join(self.cpp.build.bindirs[0], "test_package") self.run(bin_path, env="conanrun") sample_binary = os.path.join(self.cpp.build.bindirs[0], "sample_binary") self.run(sample_binary, env="conanrun")