ctest_update: Add CTEST_UPDATE_VERSION_ONLY option to only note the version
This allows ctest_update to get the current version without actually changing the repository. This is useful when using Jenkins or an external project to update the source to a specific version, but you still want the current version to show up in CDash.
This commit is contained in:
parent
ffc1935a73
commit
39b5df2f37
|
@ -360,6 +360,7 @@ Variables for CTest
|
|||
/variable/CTEST_TRIGGER_SITE
|
||||
/variable/CTEST_UPDATE_COMMAND
|
||||
/variable/CTEST_UPDATE_OPTIONS
|
||||
/variable/CTEST_UPDATE_VERSION_ONLY
|
||||
/variable/CTEST_USE_LAUNCHERS
|
||||
|
||||
Variables for CPack
|
||||
|
|
|
@ -668,6 +668,15 @@ Configuration settings to specify the version control tool include:
|
|||
* :module:`CTest` module variable: ``UPDATE_TYPE`` if set,
|
||||
else ``CTEST_UPDATE_TYPE``
|
||||
|
||||
``UpdateVersionOnly``
|
||||
Specify that you want the version control update command to only
|
||||
discover the current version that is checked out, and not to update
|
||||
to a different version.
|
||||
|
||||
* `CTest Script`_ variable: :variable:`CTEST_UPDATE_VERSION_ONLY`
|
||||
|
||||
|
||||
|
||||
Additional configuration settings include:
|
||||
|
||||
``NightlyStartTime``
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
CTEST_UPDATE_VERSION_ONLY
|
||||
-------------------------
|
||||
|
||||
Specify the CTest ``UpdateVersionOnly`` setting
|
||||
in a :manual:`ctest(1)` dashboard client script.
|
|
@ -37,6 +37,9 @@ ConfigureCommand: "@CMAKE_COMMAND@" "@PROJECT_SOURCE_DIR@"
|
|||
MakeCommand: @MAKECOMMAND@
|
||||
DefaultCTestConfigurationType: @DEFAULT_CTEST_CONFIGURATION_TYPE@
|
||||
|
||||
# version control
|
||||
UpdateVersionOnly: @CTEST_UPDATE_VERSION_ONLY@
|
||||
|
||||
# CVS options
|
||||
# Default is "-d -P -A"
|
||||
CVSCommand: @CVSCOMMAND@
|
||||
|
|
|
@ -55,6 +55,8 @@ cmCTestGenericHandler* cmCTestUpdateCommand::InitializeHandler()
|
|||
"GITUpdateOptions", "CTEST_GIT_UPDATE_OPTIONS");
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"GITUpdateCustom", "CTEST_GIT_UPDATE_CUSTOM");
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"UpdateVersionOnly", "CTEST_UPDATE_VERSION_ONLY");
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
"HGCommand", "CTEST_HG_COMMAND");
|
||||
this->CTest->SetCTestConfigurationFromCMakeVariable(this->Makefile,
|
||||
|
|
|
@ -166,10 +166,17 @@ void cmCTestVC::CleanupImpl()
|
|||
//----------------------------------------------------------------------------
|
||||
bool cmCTestVC::Update()
|
||||
{
|
||||
this->NoteOldRevision();
|
||||
this->Log << "--- Begin Update ---\n";
|
||||
bool result = this->UpdateImpl();
|
||||
this->Log << "--- End Update ---\n";
|
||||
bool result = true;
|
||||
// if update version only is on then do not actually update,
|
||||
// just note the current version and finish
|
||||
if(!cmSystemTools::IsOn(
|
||||
this->CTest->GetCTestConfiguration("UpdateVersionOnly").c_str()))
|
||||
{
|
||||
this->NoteOldRevision();
|
||||
this->Log << "--- Begin Update ---\n";
|
||||
result = this->UpdateImpl();
|
||||
this->Log << "--- End Update ---\n";
|
||||
}
|
||||
this->NoteNewRevision();
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -218,6 +218,36 @@ function(run_dashboard_command_line bin_dir)
|
|||
)
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Function to find the Update.xml file and make sure
|
||||
# it only has the Revision in it and no updates
|
||||
function(check_no_update bin_dir)
|
||||
set(PATTERN ${TOP}/${bin_dir}/Testing/*/Update.xml)
|
||||
file(GLOB UPDATE_XML_FILE RELATIVE ${TOP} ${PATTERN})
|
||||
string(REGEX REPLACE "//Update.xml$" "/Update.xml"
|
||||
UPDATE_XML_FILE "${UPDATE_XML_FILE}")
|
||||
message(" found ${UPDATE_XML_FILE}")
|
||||
set(rev_regex "Revision|PriorRevision")
|
||||
file(STRINGS ${TOP}/${UPDATE_XML_FILE} UPDATE_XML_REVISIONS
|
||||
REGEX "^\t<(${rev_regex})>[^<\n]+</(${rev_regex})>$"
|
||||
)
|
||||
set(found_revisons FALSE)
|
||||
foreach(r IN LISTS UPDATE_XML_REVISIONS)
|
||||
if("${r}" MATCHES "PriorRevision")
|
||||
message(FATAL_ERROR "Found PriorRevision in no update test")
|
||||
endif()
|
||||
if("${r}" MATCHES "<Revision>")
|
||||
set(found_revisons TRUE)
|
||||
endif()
|
||||
endforeach()
|
||||
if(found_revisons)
|
||||
message(" found <Revision> in no update test")
|
||||
else()
|
||||
message(FATAL_ERROR " missing <Revision> in no update test")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Function to run the dashboard through a script
|
||||
function(run_dashboard_script bin_dir)
|
||||
|
@ -228,13 +258,17 @@ function(run_dashboard_script bin_dir)
|
|||
|
||||
# Verify the updates reported by CTest.
|
||||
list(APPEND UPDATE_MAYBE Updated{subdir} Updated{CTestConfig.cmake})
|
||||
check_updates(${bin_dir}
|
||||
Updated{foo.txt}
|
||||
Updated{bar.txt}
|
||||
Updated{zot.txt}
|
||||
Updated{subdir/foo.txt}
|
||||
Updated{subdir/bar.txt}
|
||||
)
|
||||
if(NO_UPDATE)
|
||||
check_no_update(${bin_dir})
|
||||
else()
|
||||
check_updates(${bin_dir}
|
||||
Updated{foo.txt}
|
||||
Updated{bar.txt}
|
||||
Updated{zot.txt}
|
||||
Updated{subdir/foo.txt}
|
||||
Updated{subdir/bar.txt}
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
|
|
@ -317,3 +317,20 @@ set(CTEST_GIT_UPDATE_CUSTOM \${CTEST_GIT_COMMAND} pull origin master)
|
|||
|
||||
# Run the dashboard script with CTest.
|
||||
run_dashboard_script(dash-binary-custom)
|
||||
|
||||
|
||||
rewind_source(dash-source)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Test no update with a dashboard script.
|
||||
message("Running CTest Dashboard Script (No update)...")
|
||||
|
||||
create_dashboard_script(dash-binary-no-update
|
||||
"# git command configuration
|
||||
set(CTEST_GIT_COMMAND \"${GIT}\")
|
||||
set(CTEST_UPDATE_VERSION_ONLY TRUE)
|
||||
")
|
||||
|
||||
# Run the dashboard script with CTest.
|
||||
set(NO_UPDATE 1)
|
||||
run_dashboard_script(dash-binary-no-update)
|
||||
|
|
Loading…
Reference in New Issue