mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-22 12:17:36 -05:00
Small source_cache test
This commit is contained in:
@@ -140,6 +140,8 @@ class Project
|
||||
end
|
||||
|
||||
class IntegrationTest < Test::Unit::TestCase
|
||||
self.test_order = :defined # run tests in order of defintion (as opposed to alphabetical)
|
||||
|
||||
def setup
|
||||
# Clear existing cpm-related env vars
|
||||
TestLib.clear_env
|
||||
|
||||
20
test/integration/test_a_lib.rb
Normal file
20
test/integration/test_a_lib.rb
Normal file
@@ -0,0 +1,20 @@
|
||||
require_relative './lib'
|
||||
|
||||
# Tests and experiments with the integration test framework itself
|
||||
|
||||
class ALib < IntegrationTest
|
||||
def test_zza
|
||||
f = -> {
|
||||
assert_equal 2, 2
|
||||
}
|
||||
f.()
|
||||
end
|
||||
|
||||
def test_b
|
||||
test_foo('xxx')
|
||||
end
|
||||
|
||||
def test_foo(xxx)
|
||||
assert_equal 'xxx', xxx
|
||||
end
|
||||
end
|
||||
@@ -4,86 +4,86 @@ class Simple < IntegrationTest
|
||||
ADDER_PACKAGE_NAME = 'testpack-adder'
|
||||
|
||||
def test_update_single_package
|
||||
@prj = make_project 'using-adder'
|
||||
prj = make_project 'using-adder'
|
||||
adder_cache0 = nil
|
||||
adder_ver_file = nil
|
||||
|
||||
create_with_commit_sha
|
||||
update_to_version_1
|
||||
update_with_option_off_and_build
|
||||
end
|
||||
create_with_commit_sha = -> {
|
||||
prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder#cad1cd4b4cdf957c5b59e30bc9a1dd200dbfc716")'
|
||||
assert_success prj.configure
|
||||
|
||||
def create_with_commit_sha
|
||||
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder#cad1cd4b4cdf957c5b59e30bc9a1dd200dbfc716")'
|
||||
assert_success @prj.configure
|
||||
cache = prj.read_cache
|
||||
assert_equal 1, cache.packages.size
|
||||
|
||||
cache = @prj.read_cache
|
||||
assert_equal 1, cache.packages.size
|
||||
adder_cache = cache.packages[ADDER_PACKAGE_NAME]
|
||||
assert_not_nil adder_cache
|
||||
assert_equal '0', adder_cache.ver
|
||||
assert File.directory? adder_cache.src_dir
|
||||
assert File.directory? adder_cache.bin_dir
|
||||
|
||||
adder_cache = cache.packages[ADDER_PACKAGE_NAME]
|
||||
assert_not_nil adder_cache
|
||||
assert_equal '0', adder_cache.ver
|
||||
assert File.directory? adder_cache.src_dir
|
||||
assert File.directory? adder_cache.bin_dir
|
||||
adder_ver_file = File.join(adder_cache.src_dir, 'version')
|
||||
assert File.file? adder_ver_file
|
||||
assert_equal 'initial', File.read(adder_ver_file).strip
|
||||
|
||||
@adder_ver_file = File.join(adder_cache.src_dir, 'version')
|
||||
assert File.file? @adder_ver_file
|
||||
assert_equal 'initial', File.read(@adder_ver_file).strip
|
||||
# calculated adder values
|
||||
assert_equal 'ON', cache['ADDER_BUILD_EXAMPLES']
|
||||
assert_equal 'ON', cache['ADDER_BUILD_TESTS']
|
||||
assert_equal adder_cache.src_dir, cache['adder_SOURCE_DIR']
|
||||
assert_equal adder_cache.bin_dir, cache['adder_BINARY_DIR']
|
||||
|
||||
# calculated adder values
|
||||
assert_equal 'ON', cache['ADDER_BUILD_EXAMPLES']
|
||||
assert_equal 'ON', cache['ADDER_BUILD_TESTS']
|
||||
assert_equal adder_cache.src_dir, cache['adder_SOURCE_DIR']
|
||||
assert_equal adder_cache.bin_dir, cache['adder_BINARY_DIR']
|
||||
# store for future comparisons
|
||||
adder_cache0 = adder_cache
|
||||
}
|
||||
update_to_version_1 = -> {
|
||||
prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.0")'
|
||||
assert_success prj.configure
|
||||
|
||||
# store for future comparisons
|
||||
@adder_cache0 = adder_cache
|
||||
end
|
||||
cache = prj.read_cache
|
||||
assert_equal 1, cache.packages.size
|
||||
|
||||
def update_to_version_1
|
||||
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.0")'
|
||||
assert_success @prj.configure
|
||||
adder_cache = cache.packages[ADDER_PACKAGE_NAME]
|
||||
assert_not_nil adder_cache
|
||||
assert_equal '1.0.0', adder_cache.ver
|
||||
|
||||
cache = @prj.read_cache
|
||||
assert_equal 1, cache.packages.size
|
||||
# dirs shouldn't have changed
|
||||
assert_equal adder_cache0.src_dir, adder_cache.src_dir
|
||||
assert_equal adder_cache0.bin_dir, adder_cache.bin_dir
|
||||
|
||||
adder_cache = cache.packages[ADDER_PACKAGE_NAME]
|
||||
assert_not_nil adder_cache
|
||||
assert_equal '1.0.0', adder_cache.ver
|
||||
assert_equal '1.0.0', File.read(adder_ver_file).strip
|
||||
}
|
||||
update_with_option_off_and_build = -> {
|
||||
prj.create_lists_with package: <<~PACK
|
||||
CPMAddPackage(
|
||||
NAME testpack-adder
|
||||
GITHUB_REPOSITORY cpm-cmake/testpack-adder
|
||||
VERSION 1.0.0
|
||||
OPTIONS "ADDER_BUILD_TESTS OFF"
|
||||
)
|
||||
PACK
|
||||
assert_success prj.configure
|
||||
assert_success prj.build
|
||||
|
||||
# dirs shouldn't have changed
|
||||
assert_equal @adder_cache0.src_dir, adder_cache.src_dir
|
||||
assert_equal @adder_cache0.bin_dir, adder_cache.bin_dir
|
||||
exe_dir = File.join(prj.bin_dir, 'bin')
|
||||
assert File.directory? exe_dir
|
||||
|
||||
assert_equal '1.0.0', File.read(@adder_ver_file).strip
|
||||
end
|
||||
exes = Dir[exe_dir + '/**/*'].filter {
|
||||
# on multi-configuration generators (like Visual Studio) the executables will be in bin/<Config>
|
||||
# also filter-out other articacts like .pdb or .dsym
|
||||
!File.directory?(_1) && File.stat(_1).executable?
|
||||
}.map {
|
||||
# remove .exe extension if any (there will be one on Windows)
|
||||
File.basename(_1, '.exe')
|
||||
}.sort
|
||||
|
||||
def update_with_option_off_and_build
|
||||
@prj.create_lists_with package: <<~PACK
|
||||
CPMAddPackage(
|
||||
NAME testpack-adder
|
||||
GITHUB_REPOSITORY cpm-cmake/testpack-adder
|
||||
VERSION 1.0.0
|
||||
OPTIONS "ADDER_BUILD_TESTS OFF"
|
||||
)
|
||||
PACK
|
||||
assert_success @prj.configure
|
||||
assert_success @prj.build
|
||||
# we should end up with two executables
|
||||
# * simple - the simple example from adder
|
||||
# * using-adder - for this project
|
||||
# ...and notably no test for adder, which must be disabled from the option override from above
|
||||
assert_equal ['simple', 'using-adder'], exes
|
||||
}
|
||||
|
||||
exe_dir = File.join(@prj.bin_dir, 'bin')
|
||||
assert File.directory? exe_dir
|
||||
|
||||
exes = Dir[exe_dir + '/**/*'].filter {
|
||||
# on multi-configuration generators (like Visual Studio) the executables will be in bin/<Config>
|
||||
# also filter-out other articacts like .pdb or .dsym
|
||||
!File.directory?(_1) && File.stat(_1).executable?
|
||||
}.map {
|
||||
# remove .exe extension if any (there will be one on Windows)
|
||||
File.basename(_1, '.exe')
|
||||
}.sort
|
||||
|
||||
# we should end up with two executables
|
||||
# * simple - the simple example from adder
|
||||
# * using-adder - for this project
|
||||
# ...and notably no test for adder, which must be disabled from the option override from above
|
||||
assert_equal ['simple', 'using-adder'], exes
|
||||
create_with_commit_sha.()
|
||||
update_to_version_1.()
|
||||
update_with_option_off_and_build.()
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,34 +10,14 @@ class SourceCache < IntegrationTest
|
||||
end
|
||||
|
||||
def test_add_remove_dependency
|
||||
@prj = make_project 'using-fibadder'
|
||||
prj = make_project 'using-fibadder'
|
||||
|
||||
create_with_fibadder
|
||||
end
|
||||
###################################
|
||||
# create
|
||||
prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.0.0")'
|
||||
assert_success prj.configure
|
||||
|
||||
def test_second_project
|
||||
# @prj = make_project 'using-fibadder'
|
||||
|
||||
# create_with_newer_fibadder
|
||||
end
|
||||
|
||||
def dir_subdirs(dir)
|
||||
Dir["#{dir}/*/"]
|
||||
end
|
||||
|
||||
def check_package_cache(name, ver, dir_sha1)
|
||||
package = @cache.packages[name]
|
||||
assert_not_nil package, name
|
||||
assert_equal ver, package.ver
|
||||
assert package.src_dir.start_with?(@cache_dir), "#{package.src_dir} must be in #{@cache_dir}"
|
||||
assert_equal dir_sha1, File.basename(package.src_dir)
|
||||
end
|
||||
|
||||
def create_with_fibadder
|
||||
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.0.0")'
|
||||
assert_success @prj.configure
|
||||
|
||||
@cache = @prj.read_cache
|
||||
@cache = prj.read_cache
|
||||
|
||||
# fibadder - adder
|
||||
# \ fibonacci - Format
|
||||
@@ -47,21 +27,55 @@ class SourceCache < IntegrationTest
|
||||
check_package_cache 'testpack-adder', '1.0.0', '1a4c153849d8e0cf9a3a245e5f6ab6e4722d8995'
|
||||
check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6'
|
||||
check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156'
|
||||
|
||||
###################################
|
||||
# add one package with a newer version
|
||||
prj.create_lists_with packages: [
|
||||
'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.1")',
|
||||
'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.0.0")',
|
||||
]
|
||||
assert_success prj.configure
|
||||
|
||||
@cache = prj.read_cache
|
||||
assert_equal 4, @cache.packages.size
|
||||
|
||||
check_package_cache 'testpack-fibadder', '1.0.0', '6a17d24c95c44a169ff8ba173f52876a2ba3d137'
|
||||
check_package_cache 'testpack-adder', '1.0.1', '84eb33c1b8db880083cefc2adf4dc3f04778cd44'
|
||||
check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6'
|
||||
check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156'
|
||||
end
|
||||
|
||||
def create_with_newer_fibadder
|
||||
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.1.0")'
|
||||
assert_success @prj.configure
|
||||
def test_second_project
|
||||
prj = make_project 'using-fibadder'
|
||||
prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.1.0")'
|
||||
assert_success prj.configure
|
||||
|
||||
@cache = @prj.read_cache
|
||||
@cache = prj.read_cache
|
||||
|
||||
# fibadder - adder
|
||||
# \ fibonacci - Format
|
||||
assert_equal 4, @cache.packages.size
|
||||
|
||||
check_package_cache 'testpack-fibadder', '1.1.0', '6a17d24c95c44a169ff8ba173f52876a2ba3d137'
|
||||
check_package_cache 'testpack-adder', '1.0.1', '1a4c153849d8e0cf9a3a245e5f6ab6e4722d8995'
|
||||
check_package_cache 'testpack-fibadder', '1.1.0', '603d79d88d7230cc749460a0f476df862aa70ead'
|
||||
check_package_cache 'testpack-adder', '1.0.1', '84eb33c1b8db880083cefc2adf4dc3f04778cd44'
|
||||
check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6'
|
||||
check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156'
|
||||
end
|
||||
|
||||
def test_cache_dir_contents
|
||||
num_subdirs = -> (name) { Dir["#{File.join(@cache_dir, name.downcase)}/*/"].size }
|
||||
assert_equal 2, num_subdirs.('testpack-fibadder')
|
||||
assert_equal 2, num_subdirs.('testpack-adder')
|
||||
assert_equal 1, num_subdirs.('testpack-fibonacci')
|
||||
assert_equal 1, num_subdirs.('Format.cmake')
|
||||
end
|
||||
|
||||
def check_package_cache(name, ver, dir_sha1)
|
||||
package = @cache.packages[name]
|
||||
assert_not_nil package, name
|
||||
assert_equal ver, package.ver
|
||||
expected_parent_dir = File.join(@cache_dir, name.downcase)
|
||||
assert package.src_dir.start_with?(expected_parent_dir), "#{package.src_dir} must be in #{expected_parent_dir}"
|
||||
assert_equal dir_sha1, File.basename(package.src_dir)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user