First cut at Conanfile and Conan package test. (#50)

This commit is contained in:
David Yip
2019-03-01 03:51:12 -06:00
committed by Simon Brand
parent 815238795a
commit 5b58506abd
4 changed files with 88 additions and 0 deletions

34
conanfile.py Normal file
View File

@ -0,0 +1,34 @@
from conans import ConanFile, CMake, tools
class ExpectedConan(ConanFile):
name = "expected"
version = "master"
license = "CC0-1.0"
author = "Simon Brand <tartanllama@gmail.com>"
url = "https://github.com/TartanLlama/expected"
description = "C++11/14/17 std::expected with functional-style extensions"
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"
exports_sources = "*"
def source(self):
tools.replace_in_file('CMakeLists.txt', 'project(expected)',
'''project(expected)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
''')
def configure_cmake(self):
cmake = CMake(self)
cmake.configure()
return cmake
def build(self):
cmake = self.configure_cmake()
cmake.build()
if not tools.cross_building(self.settings):
self.run('%s/bin/tests' % self.build_folder)
def package(self):
self.copy('*.hpp', dst='include/tl', src='tl')

View File

@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 2.8.12)
project(PackageTest CXX)
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(example example.cpp)
target_link_libraries(example ${CONAN_LIBS})
# CTest is a testing tool that can be used to test your project.
# enable_testing()
# add_test(NAME example
# WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/bin
# COMMAND example)

25
test_package/conanfile.py Normal file
View File

@ -0,0 +1,25 @@
import os
from conans import ConanFile, CMake, tools
class ExpectedTestConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "cmake"
def build(self):
cmake = CMake(self)
# Current dir is "test_package/build/<build_id>" and CMakeLists.txt is
# in "test_package"
cmake.configure()
cmake.build()
def imports(self):
self.copy("*.dll", dst="bin", src="bin")
self.copy("*.dylib*", dst="bin", src="lib")
self.copy('*.so*', dst='bin', src='lib')
def test(self):
if not tools.cross_building(self.settings):
os.chdir("bin")
self.run(".%sexample" % os.sep)

15
test_package/example.cpp Normal file
View File

@ -0,0 +1,15 @@
#include <tl/expected.hpp>
tl::expected<int, const char*> maybe_do_something(int i) {
if (i < 5) {
return 0;
} else {
return tl::make_unexpected("Uh oh");
}
}
int main(int argc, char** argv) {
(void)argv;
return maybe_do_something(0).value_or(-1);
}