mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-22 04:07:49 -05:00
Some experimental code to setup tests
This commit is contained in:
1
test/integration/.gitignore
vendored
Normal file
1
test/integration/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
tmp/
|
||||
@@ -1,3 +1,52 @@
|
||||
Dir['tests/*.rb'].sort.each do |f|
|
||||
require('./' + f)
|
||||
require 'fileutils'
|
||||
|
||||
CPMPath = File.expand_path('../../cmake/CPM.cmake')
|
||||
raise "Cannot file 'CPM.cmake' at '#{CPMPath}'" if !File.file?(CPMPath)
|
||||
|
||||
CommonHeader = <<~CMAKE
|
||||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
|
||||
include("#{CPMPath}")
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
|
||||
CMAKE
|
||||
|
||||
TestDir = File.expand_path("./tmp/#{Time.now.strftime('%Y_%m_%d-%H_%M_%S')}")
|
||||
raise "Test directory '#{TestDir}' already exists" if File.exist?(TestDir)
|
||||
|
||||
class Project
|
||||
def initialize(name)
|
||||
@name = name
|
||||
@dir = File.join(TestDir, name)
|
||||
|
||||
@lists = CommonHeader + "project(#{name})\n"
|
||||
|
||||
FileUtils.mkdir_p(File.join(TestDir, name))
|
||||
end
|
||||
|
||||
def set_body(body)
|
||||
@lists += "\n" + body + "\n"
|
||||
end
|
||||
|
||||
def configure()
|
||||
File.write(File.join(@dir, 'CMakeLists.txt'), @lists)
|
||||
end
|
||||
end
|
||||
|
||||
@cur_file = ''
|
||||
@tests = {}
|
||||
def add_test(name, func)
|
||||
raise "#{@cur_file}: Test #{name} is already defined from another file" if @tests[name]
|
||||
@tests[name] = func
|
||||
end
|
||||
|
||||
Dir['tests/*.rb'].sort.each do |file|
|
||||
@cur_file = file
|
||||
load './' + file
|
||||
end
|
||||
|
||||
# sort alphabetically
|
||||
sorted_tests = @tests.to_a.sort {|a, b| a[0] <=> b[0] }
|
||||
|
||||
sorted_tests.each do |name, func|
|
||||
proj = Project.new(name)
|
||||
func.(proj)
|
||||
end
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
add_test('basic') { |prj|
|
||||
add_test 'basic', ->(prj) {
|
||||
prj.set_body <<~CMAKE
|
||||
CPMAddPackage("gh:cpm-cmake/testpack-adder")
|
||||
add_executable(using-adder using-adder.cpp)
|
||||
target_link_libraries(using-adder PRIVATE adder)
|
||||
CMAKE
|
||||
|
||||
prj.configure
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user