mirror of
https://github.com/cpm-cmake/CPM.cmake.git
synced 2025-11-16 22:27:41 -05:00
* 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>
4.1 KiB
4.1 KiB
Integration Test Framework Reference
TestLib
A module for the framework. Provides global data and functionality. For ease of use the utility classes are not in this module.
Provides:
TMP_DIR- the temporary directory for the current test runCPM_PATH- path to CPM.cmake. The thing that is being testedTEMPLATES_DIR- path to integration test templatesCPM_ENV- an array of the names of all environment variables, which CPM.cmake may read.clear_env- a function to clear all aforementioned environment variables
Project
A helper class to manage a CMake project.
Provides:
#initialize(src_dir, bin_dir)- create a project with a given source and binary directory#src_dir,#bin_dir- get project directories#create_file(target_path, text, args = {})- create a file in the project's source directory with a given test. Theargshash is used to interpolate markup in the text string.- Will set
:cpm_pathinargstoTestLib::CPM_PATHif not already present. - If
:packageis present it will be added to the array:packages - Will convert
:packagesform an array to a string
- Will set
#create_file_from_template(target_path, source_path, args = {})- create a file in the project source directory, based on another file in the project source directory. The contents of the file atsource_pathwill be read and used increate_file#create_lists_from_default_template(args = {})- same ascreate_file_from_template('CMakeLists.txt', 'lists.in.cmake', args)::CommandResult- a struct of:out- the standard output from a command executionerr- the standard error output from the executionstatus- theProcess::Statusof the execution
#configure(extra_args = '') => CommandResult- configure the project with optional extra args to CMake#build(extra_args = '') => CommandResult- build the project with optional extra args to CMake::CMakeCache- a helper class with the contents of a CMakeCache.txt. Provides:::Entry- a CMake cache entry of:val- the value as stringtype- the type as stringadvanced?- whether the entry is an advanced optiondesc- the description of the entry (can be an empty string)
::Package- the CMake cache for a CPM.cmake package. A struct of:ver- the version as stringsrc_dir,bin_dir- the source and binary directories of the package
.from_dir(dir)- create an instance ofCMakeCachefrom<dir>/CMakeLists.txt#initialize(entries)- create a cache from a hash of entries by name. Will populate packages.#entries => {String => Entry}- the entries of the cache#packages => {String => Package}- CPM.cmake packages by name found in the cache#[](key) => String- an entry value from an entry name. Created because the value is expected to be needed much more frequently than the entire entry data. To get a full entry usecache.entries['name'].
read_cache => CMakeCache- reads the CMake cache in the binary directory of the project and returns it as aCMakeCacheinstance
IntegrationTest
The class which must be a parent of all integration test case classes. It itself extends Test::Unit::TestCase with:
Assertions
assert_success(res)- assert that an instance ofProject::CommandResultis a successassert_same_path(a, b)- assert that two strings represent the same path. For example on Windowsc:\fooandC:\Foodo.
Utils
cur_test_dir- the directory of the current test case. A subdirectory ofTestLib::TMP_DIRmake_project(name: nil, from_template: nil)- create a project from a test method. Will create the project's source and binary directories as subdirectories ofcur_test_dir.- Optionally provide a name which will be concatenated to the project directory. This allows creating multiple projects in a test
- Optionally work with a template, in which case it will copy the contents of the template directory (one from
templates) in the project's source directory.