| # This script drives creation of a bzr repository and checks |
| # that CTest can update from it. |
| |
| #----------------------------------------------------------------------------- |
| # Test in a directory next to this script. |
| get_filename_component(TOP "${CMAKE_CURRENT_LIST_FILE}" PATH) |
| string(APPEND TOP "/@CTestUpdateBZR_DIR@") |
| |
| # Include code common to all update tests. |
| include("@CMAKE_CURRENT_SOURCE_DIR@/CTestUpdateCommon.cmake") |
| |
| #----------------------------------------------------------------------------- |
| # Report bzr tools in use. |
| message("Using BZR tools:") |
| set(BZR "@BZR_EXECUTABLE@") |
| message(" bzr = ${BZR}") |
| |
| #----------------------------------------------------------------------------- |
| # Initialize the testing directory. |
| message("Creating test directory...") |
| init_testing() |
| |
| #----------------------------------------------------------------------------- |
| # Create the repository. |
| message("Creating repository...") |
| file(MAKE_DIRECTORY ${TOP}/repo.bzr) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/repo.bzr |
| COMMAND ${BZR} init |
| ) |
| set(REPO file://${TOP}/repo.bzr) |
| |
| #----------------------------------------------------------------------------- |
| # Import initial content into the repository. |
| message("Importing content...") |
| create_content(import) |
| |
| # Import the content into the repository. |
| run_child(WORKING_DIRECTORY ${TOP}/import |
| COMMAND ${BZR} init |
| ) |
| run_child(WORKING_DIRECTORY ${TOP}/import |
| COMMAND ${BZR} whoami --branch "Test Author <testauthor@cmake.org>" |
| ) |
| |
| run_child(WORKING_DIRECTORY ${TOP}/import |
| COMMAND ${BZR} add . |
| ) |
| run_child(WORKING_DIRECTORY ${TOP}/import |
| COMMAND ${BZR} commit -m "Initial content" |
| ) |
| run_child(WORKING_DIRECTORY ${TOP}/import |
| COMMAND ${BZR} push --create-prefix "${REPO}" |
| ) |
| |
| #----------------------------------------------------------------------------- |
| # Create a working tree. |
| message("Checking out revision 1...") |
| run_child( |
| WORKING_DIRECTORY ${TOP} |
| COMMAND ${BZR} branch "${REPO}" user-source |
| ) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} whoami --branch "Test Author <testauthor@cmake.org>" |
| ) |
| |
| #----------------------------------------------------------------------------- |
| # Make changes in the working tree. |
| message("Changing content...") |
| update_content(user-source files_added files_removed dirs_added) |
| if(dirs_added) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} add ${dirs_added} |
| ) |
| endif() |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} add ${files_added} |
| ) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} rm ${files_removed} |
| ) |
| |
| #----------------------------------------------------------------------------- |
| # Commit the changes to the repository. |
| message("Committing revision 2...") |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} commit -m "Changed content" |
| ) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} push "${REPO}" |
| ) |
| |
| #----------------------------------------------------------------------------- |
| # Make changes in the working tree. |
| message("Changing content again...") |
| change_content(user-source) |
| |
| #----------------------------------------------------------------------------- |
| # Commit the changes to the repository. |
| message("Committing revision 3...") |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} commit -m "Changed content again" |
| ) |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} push "${REPO}" |
| ) |
| |
| #----------------------------------------------------------------------------- |
| # Go back to before the changes so we can test updating. |
| message("Backing up to revision 1...") |
| run_child( |
| WORKING_DIRECTORY ${TOP}/user-source |
| COMMAND ${BZR} pull --overwrite -r1 |
| ) |
| |
| # Create a modified file. |
| modify_content(user-source) |
| |
| #----------------------------------------------------------------------------- |
| # Test updating the user work directory with the command-line interface. |
| message("Running CTest Dashboard Command Line...") |
| |
| # Create the user build tree. |
| create_build_tree(user-source user-binary) |
| file(APPEND ${TOP}/user-binary/CTestConfiguration.ini |
| "# BZR command configuration |
| UpdateCommand: ${BZR} |
| ") |
| |
| # Run the dashboard command line interface. |
| run_dashboard_command_line(user-binary) |
| |
| #----------------------------------------------------------------------------- |
| # Test initial checkout and update with a dashboard script. |
| message("Running CTest Dashboard Script...") |
| |
| create_dashboard_script(dash-binary |
| "# bzr command configuration |
| set(CTEST_BZR_COMMAND \"${BZR}\") |
| set(CTEST_CHECKOUT_COMMAND |
| \"\\\"\${CTEST_BZR_COMMAND}\\\" branch -r1 \\\"${REPO}\\\" dash-source\") |
| ") |
| |
| # Run the dashboard script with CTest. |
| run_dashboard_script(dash-binary) |