Files
CPM.cmake/test/integration/test_simple.rb

92 lines
3.1 KiB
Ruby
Raw Normal View History

require_relative './lib'
class Simple < IntegrationTest
ADDER_PACKAGE_NAME = 'testpack-adder'
def test_update_single_package
Add file locking to support parallel runs. (#427) * Add file locking to support parallel runs. * Fixed formatting. * Prevent double locking file. * Fix SegFault from test 2. * Remove unnecessary debugging messages. * Lock the package directory rather than the cache directory. Only synchronize if CPM_SOURCE_CACHE is defined. * Lock the version specific cache entry rather than the package specific entry. * Remove unnecessary arguments in conditional statements. * Change back to locking entire cache directory. * Only check CPM_HAS_CACHE_LOCK. * Lock on a per-package basis rather than the entire cache. * Clean up the locked file. * Unlock then remove to fix Windows. * Specify use of cmake.lock as the lock file. * - Changed CPM_HAS_CACHE_LOCK to ${CPM_ARGS_NAME}_CPM_HAS_CACHE_LOCK. - Removed redundant variable initialization. * Add unit test. * Actually test if resulting git cache is clean in unit test. * - Added comments - Fixed formatting - Removed unnecessary imports * convert parallelism test to integration test * remove comment * - Removed now unnecessary variable. - Only delete file instead of unlocking it then deleting it. * Forgot to change variable name. * Add similar changes to the missed section. * Fixed formatting. * Unlock the file, but do not delete it. * Only unlock the file if it exists. * Changed cache.cmake test to ignore non-directory entries. * Integration test lib make_project: * keyword args * 'name' arg to allow multiple projects from the same test * - Moved checks to function. - Fixed small grammatical errors. * - Fix formatting * Switch to snake case. --------- Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com> Co-authored-by: Lars Melchior <lars.melchior@gmail.com> Co-authored-by: Borislav Stanimirov <b.stanimirov@abv.bg>
2023-01-28 08:36:44 -05:00
prj = make_project from_template: 'using-adder'
adder_cache0 = nil
adder_ver_file = nil
create_with_commit_sha = -> {
prj.create_lists_from_default_template package:
'CPMAddPackage("gh:cpm-cmake/testpack-adder#cad1cd4b4cdf957c5b59e30bc9a1dd200dbfc716")'
assert_success prj.configure
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_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']
# store for future comparisons
adder_cache0 = adder_cache
}
update_to_version_1 = -> {
prj.create_lists_from_default_template package:
'CPMAddPackage("gh:cpm-cmake/testpack-adder@1.0.0")'
assert_success prj.configure
cache = prj.read_cache
assert_equal 1, cache.packages.size
adder_cache = cache.packages[ADDER_PACKAGE_NAME]
assert_not_nil adder_cache
assert_equal '1.0.0', adder_cache.ver
# 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
assert_equal '1.0.0', File.read(adder_ver_file).strip
}
update_with_option_off_and_build = -> {
prj.create_lists_from_default_template 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
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