Small source_cache test

This commit is contained in:
Borislav Stanimirov
2022-01-13 05:16:51 +02:00
parent cef108e86e
commit 8ba308cdba
4 changed files with 135 additions and 99 deletions

View File

@@ -140,6 +140,8 @@ class Project
end end
class IntegrationTest < Test::Unit::TestCase class IntegrationTest < Test::Unit::TestCase
self.test_order = :defined # run tests in order of defintion (as opposed to alphabetical)
def setup def setup
# Clear existing cpm-related env vars # Clear existing cpm-related env vars
TestLib.clear_env TestLib.clear_env

View 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

View File

@@ -4,18 +4,15 @@ class Simple < IntegrationTest
ADDER_PACKAGE_NAME = 'testpack-adder' ADDER_PACKAGE_NAME = 'testpack-adder'
def test_update_single_package 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 create_with_commit_sha = -> {
update_to_version_1 prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder#cad1cd4b4cdf957c5b59e30bc9a1dd200dbfc716")'
update_with_option_off_and_build assert_success prj.configure
end
def create_with_commit_sha cache = prj.read_cache
@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 assert_equal 1, cache.packages.size
adder_cache = cache.packages[ADDER_PACKAGE_NAME] adder_cache = cache.packages[ADDER_PACKAGE_NAME]
@@ -24,9 +21,9 @@ class Simple < IntegrationTest
assert File.directory? adder_cache.src_dir assert File.directory? adder_cache.src_dir
assert File.directory? adder_cache.bin_dir assert File.directory? adder_cache.bin_dir
@adder_ver_file = File.join(adder_cache.src_dir, 'version') adder_ver_file = File.join(adder_cache.src_dir, 'version')
assert File.file? @adder_ver_file assert File.file? adder_ver_file
assert_equal 'initial', File.read(@adder_ver_file).strip assert_equal 'initial', File.read(adder_ver_file).strip
# calculated adder values # calculated adder values
assert_equal 'ON', cache['ADDER_BUILD_EXAMPLES'] assert_equal 'ON', cache['ADDER_BUILD_EXAMPLES']
@@ -35,14 +32,13 @@ class Simple < IntegrationTest
assert_equal adder_cache.bin_dir, cache['adder_BINARY_DIR'] assert_equal adder_cache.bin_dir, cache['adder_BINARY_DIR']
# store for future comparisons # store for future comparisons
@adder_cache0 = adder_cache adder_cache0 = adder_cache
end }
update_to_version_1 = -> {
prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.0")'
assert_success prj.configure
def update_to_version_1 cache = prj.read_cache
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.0")'
assert_success @prj.configure
cache = @prj.read_cache
assert_equal 1, cache.packages.size assert_equal 1, cache.packages.size
adder_cache = cache.packages[ADDER_PACKAGE_NAME] adder_cache = cache.packages[ADDER_PACKAGE_NAME]
@@ -50,14 +46,13 @@ class Simple < IntegrationTest
assert_equal '1.0.0', adder_cache.ver assert_equal '1.0.0', adder_cache.ver
# dirs shouldn't have changed # dirs shouldn't have changed
assert_equal @adder_cache0.src_dir, adder_cache.src_dir assert_equal adder_cache0.src_dir, adder_cache.src_dir
assert_equal @adder_cache0.bin_dir, adder_cache.bin_dir assert_equal adder_cache0.bin_dir, adder_cache.bin_dir
assert_equal '1.0.0', File.read(@adder_ver_file).strip assert_equal '1.0.0', File.read(adder_ver_file).strip
end }
update_with_option_off_and_build = -> {
def update_with_option_off_and_build prj.create_lists_with package: <<~PACK
@prj.create_lists_with package: <<~PACK
CPMAddPackage( CPMAddPackage(
NAME testpack-adder NAME testpack-adder
GITHUB_REPOSITORY cpm-cmake/testpack-adder GITHUB_REPOSITORY cpm-cmake/testpack-adder
@@ -65,10 +60,10 @@ class Simple < IntegrationTest
OPTIONS "ADDER_BUILD_TESTS OFF" OPTIONS "ADDER_BUILD_TESTS OFF"
) )
PACK PACK
assert_success @prj.configure assert_success prj.configure
assert_success @prj.build assert_success prj.build
exe_dir = File.join(@prj.bin_dir, 'bin') exe_dir = File.join(prj.bin_dir, 'bin')
assert File.directory? exe_dir assert File.directory? exe_dir
exes = Dir[exe_dir + '/**/*'].filter { exes = Dir[exe_dir + '/**/*'].filter {
@@ -85,5 +80,10 @@ class Simple < IntegrationTest
# * using-adder - for this project # * using-adder - for this project
# ...and notably no test for adder, which must be disabled from the option override from above # ...and notably no test for adder, which must be disabled from the option override from above
assert_equal ['simple', 'using-adder'], exes assert_equal ['simple', 'using-adder'], exes
}
create_with_commit_sha.()
update_to_version_1.()
update_with_option_off_and_build.()
end end
end end

View File

@@ -10,34 +10,14 @@ class SourceCache < IntegrationTest
end end
def test_add_remove_dependency 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 @cache = prj.read_cache
# @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
# fibadder - adder # fibadder - adder
# \ fibonacci - Format # \ fibonacci - Format
@@ -47,21 +27,55 @@ class SourceCache < IntegrationTest
check_package_cache 'testpack-adder', '1.0.0', '1a4c153849d8e0cf9a3a245e5f6ab6e4722d8995' check_package_cache 'testpack-adder', '1.0.0', '1a4c153849d8e0cf9a3a245e5f6ab6e4722d8995'
check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6' check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6'
check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156' 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 end
def create_with_newer_fibadder def test_second_project
@prj.create_lists_with package: 'CPMAddPackage("gh:cpm-cmake/testpack-fibadder@1.1.0")' prj = make_project 'using-fibadder'
assert_success @prj.configure 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 # fibadder - adder
# \ fibonacci - Format # \ fibonacci - Format
assert_equal 4, @cache.packages.size assert_equal 4, @cache.packages.size
check_package_cache 'testpack-fibadder', '1.1.0', '6a17d24c95c44a169ff8ba173f52876a2ba3d137' check_package_cache 'testpack-fibadder', '1.1.0', '603d79d88d7230cc749460a0f476df862aa70ead'
check_package_cache 'testpack-adder', '1.0.1', '1a4c153849d8e0cf9a3a245e5f6ab6e4722d8995' check_package_cache 'testpack-adder', '1.0.1', '84eb33c1b8db880083cefc2adf4dc3f04778cd44'
check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6' check_package_cache 'testpack-fibonacci', '2.0', '332c789cb09b8c2f92342dfb874c82bec643daf6'
check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156' check_package_cache 'Format.cmake', '1.0', 'c5897bd28c5032d45f7f669c8fb470790d2ae156'
end 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 end