diff --git a/Code/Mantid/Build/CMake/CommonSetup.cmake b/Code/Mantid/Build/CMake/CommonSetup.cmake index e185358b4f15..10625001e3b6 100644 --- a/Code/Mantid/Build/CMake/CommonSetup.cmake +++ b/Code/Mantid/Build/CMake/CommonSetup.cmake @@ -305,29 +305,7 @@ endif() # External Data for testing ########################################################################### if ( CXXTEST_FOUND OR PYUNITTEST_FOUND ) - include ( MantidExternalData ) - -# None of our tests reference files directly as arguments so we have to manually -# call ExternalData_Expand_Arguments to register the files with the ExternalData -# mechanism -get_filename_component ( EXTERNALDATATEST_SOURCE_DIR ${PROJECT_SOURCE_DIR} ABSOLUTE ) -file( GLOB_RECURSE doctest_content_links - RELATIVE "${EXTERNALDATATEST_SOURCE_DIR}" "Testing/Data/DocTest/*.md5" ) -file( GLOB_RECURSE unittest_content_links - RELATIVE "${EXTERNALDATATEST_SOURCE_DIR}" "Testing/Data/UnitTest/*.md5" ) -set ( content_links "${doctest_content_links};${unittest_content_links}" ) -foreach(link ${content_links}) - string( REGEX REPLACE "\\.md5$" "" link ${link} ) - ExternalData_Expand_Arguments( StandardTestData - link_location - DATA{${link}} - ) -endforeach() - -# Create target to download data from the StandardTestData group. This must come after -# all tests have been added that reference the group, so we put it last. -ExternalData_Add_Target(StandardTestData) -set_target_properties(StandardTestData PROPERTIES EXCLUDE_FROM_ALL TRUE) + include( SetupDataTargets ) endif() ########################################################################### diff --git a/Code/Mantid/Build/CMake/EmbeddedGTest.cmake b/Code/Mantid/Build/CMake/EmbeddedGTest.cmake index 25e55227cd58..545837105cc1 100644 --- a/Code/Mantid/Build/CMake/EmbeddedGTest.cmake +++ b/Code/Mantid/Build/CMake/EmbeddedGTest.cmake @@ -3,8 +3,8 @@ # GTEST_FOUND If false, do not try to use Google Test find_path ( GTEST_INCLUDE_DIR gtest/gtest.h - PATHS ${PROJECT_SOURCE_DIR}/TestingTools/gmock-${GMOCK_VERSION}/gtest/include - ${PROJECT_SOURCE_DIR}/../TestingTools/gmock-${GMOCK_VERSION}/gtest/include + PATHS ${PROJECT_SOURCE_DIR}/Testing/Tools/gmock-${GMOCK_VERSION}/gtest/include + ${PROJECT_SOURCE_DIR}/../Testing/Tools/gmock-${GMOCK_VERSION}/gtest/include NO_DEFAULT_PATH ) # handle the QUIETLY and REQUIRED arguments and set GTEST_FOUND to TRUE if diff --git a/Code/Mantid/Build/CMake/FindCxxTest.cmake b/Code/Mantid/Build/CMake/FindCxxTest.cmake index cc9a5cb40c3b..8aaeadbb37fd 100644 --- a/Code/Mantid/Build/CMake/FindCxxTest.cmake +++ b/Code/Mantid/Build/CMake/FindCxxTest.cmake @@ -194,8 +194,8 @@ endmacro(CXXTEST_ADD_TEST) #============================================================= find_path(CXXTEST_INCLUDE_DIR cxxtest/TestSuite.h - PATHS ${PROJECT_SOURCE_DIR}/TestingTools/cxxtest - ${PROJECT_SOURCE_DIR}/../TestingTools/cxxtest ) + PATHS ${PROJECT_SOURCE_DIR}/Testing/Tools/cxxtest + ${PROJECT_SOURCE_DIR}/../Testing/Tools/cxxtest ) find_program(CXXTEST_TESTGEN_EXECUTABLE python/scripts/cxxtestgen PATHS ${CXXTEST_INCLUDE_DIR}) diff --git a/Code/Mantid/Build/CMake/FindGMock.cmake b/Code/Mantid/Build/CMake/FindGMock.cmake index e540e5a18af2..a611ce2fb73d 100644 --- a/Code/Mantid/Build/CMake/FindGMock.cmake +++ b/Code/Mantid/Build/CMake/FindGMock.cmake @@ -17,8 +17,8 @@ ENDIF() set (GMOCK_VERSION ${GMOCK_VERSION} CACHE INTERNAL "") find_path ( GMOCK_INCLUDE_DIR gmock/gmock.h - PATHS ${PROJECT_SOURCE_DIR}/TestingTools/gmock-${GMOCK_VERSION}/include - ${PROJECT_SOURCE_DIR}/../TestingTools/gmock-${GMOCK_VERSION}/include + PATHS ${PROJECT_SOURCE_DIR}/Testing/Tools/gmock-${GMOCK_VERSION}/include + ${PROJECT_SOURCE_DIR}/../Testing/Tools/gmock-${GMOCK_VERSION}/include NO_DEFAULT_PATH ) SET(GMOCK_LIB gmock) diff --git a/Code/Mantid/Build/CMake/FindMatlab.cmake b/Code/Mantid/Build/CMake/FindMatlab.cmake deleted file mode 100644 index 685006f10be6..000000000000 --- a/Code/Mantid/Build/CMake/FindMatlab.cmake +++ /dev/null @@ -1,57 +0,0 @@ -# Based upon FindMatlab.cmake from the CMake 2.8.3 distribution -# The script included with the distribution fails to find Matlab as it contains references -# to paths that no longer exist within Matlab - -# NOTE: Unsupported on Linux/Mac as I can't get a working version there to test it. Plus it was never built there before ... - -# Defines: -# MATLAB_INCLUDE_DIR: include path for mex.h, engine.h -# MATLAB_LIBRARIES: required libraries: libmex, etc -# MATLAB_MEX_LIBRARY: path to libmex.lib -# MATLAB_MX_LIBRARY: path to libmx.lib -# MATLAB_ENG_LIBRARY: path to libeng.lib - -if ( MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES ) - # Already in cache, be silent - set ( MATLAB_FOUND TRUE ) -endif () - -set ( MATLAB_FOUND FALSE ) -if ( WIN32 ) - # There seems to be know better way of querying the keys in the registry so we'll have to assume that all of the versions are 7.XX and search for these - set ( MATLAB_MAJOR_VERSION "7" ) - set ( REGISTRY_ROOT "HKEY_LOCAL_MACHINE\\SOFTWARE\\MathWorks\\MATLAB" ) - set ( REGISTRY_KEY "MATLABROOT" ) - set ( EXTERN_INCLUDE "/extern/include") - set ( EXTERN_SRC "/extern/src") - if( CMAKE_CL_64 ) - set( EXTERN_LIB "/extern/lib/win64/microsoft/" ) - else () - set( EXTERN_LIB "/extern/lib/win32/microsoft/" ) - endif () - # We'll assume we want to link to the oldest version so that it is most likely to be forward compatible. - # 2010 = 7.11 so stop at 15? - foreach ( MATLAB_MINOR_VERSION RANGE 1 15 ) - find_library ( MATLAB_MEX_LIBRARY libmex "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_LIB}" ) - find_library ( MATLAB_MX_LIBRARY libmx "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_LIB}" ) - find_library ( MATLAB_ENG_LIBRARY libeng "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_LIB}" ) - find_library ( MATLAB_MAT_LIBRARY libmat "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_LIB}" ) - set ( MATLAB_LIBRARIES ${MATLAB_MEX_LIBRARY} ${MATLAB_MX_LIBRARY} ${MATLAB_ENG_LIBRARY} ${MATLAB_MAT_LIBRARY} ) - find_path( MATLAB_INCLUDE_DIR "mex.h" "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_INCLUDE}" ) - find_path( MATLAB_EXTERN_SRC "mwdebug.c" "[${REGISTRY_ROOT}\\${MATLAB_MAJOR_VERSION}.${MATLAB_MINOR_VERSION};${REGISTRY_KEY}]${EXTERN_SRC}" ) - if ( MATLAB_INCLUDE_DIR AND MATLAB_LIBRARIES AND MATLAB_EXTERN_SRC ) - if ( NOT MATLAB_FIND_QUIETLY ) - message ( STATUS "Found Matlab: ${MATLAB_INCLUDE_DIR}" ) - endif () - set ( MATLAB_FOUND 1 ) - break () - endif () - endforeach ( MATLAB_MINOR_VERSION ) - - # Clean up temporary variables - set ( MATLAB_MAJOR_VERSION ) - set ( REGISTRY_ROOT ) - set ( REGISTRY_KEY ) - set ( EXTERN_INCLUDE ) - -endif () diff --git a/Code/Mantid/Build/CMake/FindPyUnitTest.cmake b/Code/Mantid/Build/CMake/FindPyUnitTest.cmake index 893cb5b392a5..bd6c3661633b 100644 --- a/Code/Mantid/Build/CMake/FindPyUnitTest.cmake +++ b/Code/Mantid/Build/CMake/FindPyUnitTest.cmake @@ -59,13 +59,13 @@ endmacro ( PYUNITTEST_ADD_TEST ) # find the driver script find_program ( PYUNITTEST_GEN_EXEC pyunit_gen.py - PATHS ${PROJECT_SOURCE_DIR}/TestingTools/pyunit_gen - ${PROJECT_SOURCE_DIR}/../TestingTools/pyunit_gen ) + PATHS ${PROJECT_SOURCE_DIR}/Testing/Tools/pyunit_gen + ${PROJECT_SOURCE_DIR}/../Testing/Tools/pyunit_gen ) # determine where the xmlrunner lives find_path ( PYUNITTEST_XMLRUNNER xmlrunner/__init__.py - PATHS ${PROJECT_SOURCE_DIR}/TestingTools/unittest-xml-reporting/src/ - ${PROJECT_SOURCE_DIR}/../TestingTools/unittest-xml-reporting/src/ ) + PATHS ${PROJECT_SOURCE_DIR}/Testing/Tools/unittest-xml-reporting/src/ + ${PROJECT_SOURCE_DIR}/../Testing/Tools/unittest-xml-reporting/src/ ) # let people know whether or not it was found if (PYUNITTEST_GEN_EXEC) diff --git a/Code/Mantid/Build/CMake/FindPythonLibs.cmake b/Code/Mantid/Build/CMake/FindPythonLibs.cmake deleted file mode 100644 index acd7ff4ba5c3..000000000000 --- a/Code/Mantid/Build/CMake/FindPythonLibs.cmake +++ /dev/null @@ -1,218 +0,0 @@ -# Taken from the CMake 2.8.3 distribution -# Contains a fix to find the shared library on Linux, which isn't present -# in default Redhat CMake version (2.6.4) - -# - Find python libraries -# This module finds if Python is installed and determines where the -# include files and libraries are. It also determines what the name of -# the library is. This code sets the following variables: -# -# PYTHONLIBS_FOUND - have the Python libs been found -# PYTHON_LIBRARIES - path to the python library -# PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) -# PYTHON_INCLUDE_DIRS - path to where Python.h is found -# PYTHON_DEBUG_LIBRARIES - path to the debug library -# - -#============================================================================= -# CMake - Cross Platform Makefile Generator -# Copyright 2000-2009 Kitware, Inc., Insight Software Consortium -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# * Neither the names of Kitware, Inc., the Insight Software Consortium, -# nor the names of their contributors may be used to endorse or promote -# products derived from this software without specific prior written -# permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#============================================================================= - -INCLUDE(CMakeFindFrameworks) -# Search for the python framework on Apple. -CMAKE_FIND_FRAMEWORKS(Python) - -FOREACH(_CURRENT_VERSION 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) - STRING(REPLACE "." "" _CURRENT_VERSION_NO_DOTS ${_CURRENT_VERSION}) - IF(WIN32) - FIND_LIBRARY(PYTHON_DEBUG_LIBRARY - NAMES python${_CURRENT_VERSION_NO_DOTS}_d python - PATHS - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs - [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs/Debug - [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs"${CMAKE_LIBRARY_PATH}/Python"${_CURRENT_VERSION_NO_DOTS}) - ENDIF(WIN32) - - FIND_LIBRARY(PYTHON_LIBRARY - NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION} - PATHS - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs - [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/libs - # Avoid finding the .dll in the PATH. We want the .lib. - NO_SYSTEM_ENVIRONMENT_PATH - ) - # Look for the static library in the Python config directory - FIND_LIBRARY(PYTHON_LIBRARY - NAMES python${_CURRENT_VERSION_NO_DOTS} python${_CURRENT_VERSION} - # Avoid finding the .dll in the PATH. We want the .lib. - NO_SYSTEM_ENVIRONMENT_PATH - # This is where the static library is usually located - PATH_SUFFIXES python${_CURRENT_VERSION}/config - ) - - # For backward compatibility, honour value of PYTHON_INCLUDE_PATH, if - # PYTHON_INCLUDE_DIR is not set. - IF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR) - SET(PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}" CACHE PATH - "Path to where Python.h is found" FORCE) - ENDIF(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR) - - SET(PYTHON_FRAMEWORK_INCLUDES) - IF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR) - FOREACH(dir ${Python_FRAMEWORKS}) - SET(PYTHON_FRAMEWORK_INCLUDES ${PYTHON_FRAMEWORK_INCLUDES} - ${dir}/Versions/${_CURRENT_VERSION}/include/python${_CURRENT_VERSION}) - ENDFOREACH(dir) - ENDIF(Python_FRAMEWORKS AND NOT PYTHON_INCLUDE_DIR) - - FIND_PATH(PYTHON_INCLUDE_DIR - NAMES Python.h - PATHS - ${PYTHON_FRAMEWORK_INCLUDES} - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include - [HKEY_CURRENT_USER\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath]/include - PATH_SUFFIXES - python${_CURRENT_VERSION} - ) - - # For backward compatibility, set PYTHON_INCLUDE_PATH, but make it internal. - SET(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}" CACHE INTERNAL - "Path to where Python.h is found (deprecated)") - -ENDFOREACH(_CURRENT_VERSION) - -MARK_AS_ADVANCED( - PYTHON_DEBUG_LIBRARY - PYTHON_LIBRARY - PYTHON_INCLUDE_DIR -) - -# We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the -# cache entries because they are meant to specify the location of a single -# library. We now set the variables listed by the documentation for this -# module. -SET(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") -SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") -SET(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}") - - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs DEFAULT_MSG PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) - - -# PYTHON_ADD_MODULE( src1 src2 ... srcN) is used to build modules for python. -# PYTHON_WRITE_MODULES_HEADER() writes a header file you can include -# in your sources to initialize the static python modules -FUNCTION(PYTHON_ADD_MODULE _NAME ) - GET_PROPERTY(_TARGET_SUPPORTS_SHARED_LIBS - GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) - OPTION(PYTHON_ENABLE_MODULE_${_NAME} "Add module ${_NAME}" TRUE) - OPTION(PYTHON_MODULE_${_NAME}_BUILD_SHARED - "Add module ${_NAME} shared" ${_TARGET_SUPPORTS_SHARED_LIBS}) - - # Mark these options as advanced - MARK_AS_ADVANCED(PYTHON_ENABLE_MODULE_${_NAME} - PYTHON_MODULE_${_NAME}_BUILD_SHARED) - - IF(PYTHON_ENABLE_MODULE_${_NAME}) - IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) - SET(PY_MODULE_TYPE MODULE) - ELSE(PYTHON_MODULE_${_NAME}_BUILD_SHARED) - SET(PY_MODULE_TYPE STATIC) - SET_PROPERTY(GLOBAL APPEND PROPERTY PY_STATIC_MODULES_LIST ${_NAME}) - ENDIF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) - - SET_PROPERTY(GLOBAL APPEND PROPERTY PY_MODULES_LIST ${_NAME}) - ADD_LIBRARY(${_NAME} ${PY_MODULE_TYPE} ${ARGN}) -# TARGET_LINK_LIBRARIES(${_NAME} ${PYTHON_LIBRARIES}) - - IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) - SET_TARGET_PROPERTIES(${_NAME} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}") - IF(WIN32 AND NOT CYGWIN) - SET_TARGET_PROPERTIES(${_NAME} PROPERTIES SUFFIX ".pyd") - ENDIF(WIN32 AND NOT CYGWIN) - ENDIF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) - - ENDIF(PYTHON_ENABLE_MODULE_${_NAME}) -ENDFUNCTION(PYTHON_ADD_MODULE) - -FUNCTION(PYTHON_WRITE_MODULES_HEADER _filename) - - GET_PROPERTY(PY_STATIC_MODULES_LIST GLOBAL PROPERTY PY_STATIC_MODULES_LIST) - - GET_FILENAME_COMPONENT(_name "${_filename}" NAME) - STRING(REPLACE "." "_" _name "${_name}") - STRING(TOUPPER ${_name} _nameUpper) - - SET(_filenameTmp "${_filename}.in") - FILE(WRITE ${_filenameTmp} "/*Created by cmake, do not edit, changes will be lost*/\n") - FILE(APPEND ${_filenameTmp} -"#ifndef ${_nameUpper} -#define ${_nameUpper} - -#include - -#ifdef __cplusplus -extern \"C\" { -#endif /* __cplusplus */ - -") - - FOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - FILE(APPEND ${_filenameTmp} "extern void init${PYTHON_MODULE_PREFIX}${_currentModule}(void);\n\n") - ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - - FILE(APPEND ${_filenameTmp} -"#ifdef __cplusplus -} -#endif /* __cplusplus */ - -") - - - FOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - FILE(APPEND ${_filenameTmp} "int ${_name}_${_currentModule}(void) \n{\n static char name[]=\"${PYTHON_MODULE_PREFIX}${_currentModule}\"; return PyImport_AppendInittab(name, init${PYTHON_MODULE_PREFIX}${_currentModule});\n}\n\n") - ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - - FILE(APPEND ${_filenameTmp} "void ${_name}_LoadAllPythonModules(void)\n{\n") - FOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - FILE(APPEND ${_filenameTmp} " ${_name}_${_currentModule}();\n") - ENDFOREACH(_currentModule ${PY_STATIC_MODULES_LIST}) - FILE(APPEND ${_filenameTmp} "}\n\n") - FILE(APPEND ${_filenameTmp} "#ifndef EXCLUDE_LOAD_ALL_FUNCTION\nvoid CMakeLoadAllPythonModules(void)\n{\n ${_name}_LoadAllPythonModules();\n}\n#endif\n\n#endif\n") - -# with CONFIGURE_FILE() cmake complains that you may not use a file created using FILE(WRITE) as input file for CONFIGURE_FILE() - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${_filenameTmp}" "${_filename}" OUTPUT_QUIET ERROR_QUIET) - -ENDFUNCTION(PYTHON_WRITE_MODULES_HEADER) diff --git a/Code/Mantid/Build/CMake/Packaging/launch_mantidplot.sh.in b/Code/Mantid/Build/CMake/Packaging/launch_mantidplot.sh.in index 94ac4695d25a..33556e1b1c79 100644 --- a/Code/Mantid/Build/CMake/Packaging/launch_mantidplot.sh.in +++ b/Code/Mantid/Build/CMake/Packaging/launch_mantidplot.sh.in @@ -21,4 +21,4 @@ else fi # Launch -LD_PRELOAD=${LOCAL_PRELOAD} TCMALLOC_RELEASE_RATE=${TCM_RELEASE} LD_LIBRARY_PATH=${LOCAL_LDPATH} @WRAPPER_PREFIX@$INSTALLDIR/@MANTIDPLOT_EXEC@ $*@WRAPPER_POSTFIX@ +LD_PRELOAD=${LOCAL_PRELOAD} TCMALLOC_RELEASE_RATE=${TCM_RELEASE} LD_LIBRARY_PATH=${LOCAL_LDPATH} QT_API=pyqt @WRAPPER_PREFIX@$INSTALLDIR/@MANTIDPLOT_EXEC@ $*@WRAPPER_POSTFIX@ diff --git a/Code/Mantid/Build/CMake/SetupDataTargets.cmake b/Code/Mantid/Build/CMake/SetupDataTargets.cmake new file mode 100644 index 000000000000..8f8a87e1e291 --- /dev/null +++ b/Code/Mantid/Build/CMake/SetupDataTargets.cmake @@ -0,0 +1,32 @@ +########################################################################### +# Define targets to download the data +########################################################################### +include ( MantidExternalData ) + +# None of our tests reference files directly as arguments so we have to manually +# call ExternalData_Expand_Arguments to register the files with the ExternalData +# mechanism +function(_create_data_target _targetname _content_link_patterns) + get_filename_component ( EXTERNALDATATEST_SOURCE_DIR ${PROJECT_SOURCE_DIR} ABSOLUTE ) + foreach(_pattern ${_content_link_patterns}) + file( GLOB_RECURSE _content_links + RELATIVE "${EXTERNALDATATEST_SOURCE_DIR}" ${_pattern} ) + foreach(link ${_content_links}) + string( REGEX REPLACE "\\.md5$" "" link ${link} ) + ExternalData_Expand_Arguments( ${_targetname} + link_location + DATA{${link}} + ) + endforeach() + endforeach() + # Create target to download data from the StandardTestData group. This must come after + # all tests have been added that reference the group, so we put it last. + ExternalData_Add_Target(${_targetname}) + set_target_properties(${_targetname} PROPERTIES EXCLUDE_FROM_ALL TRUE) +endfunction() + +# We'll create two targets: +# - StandardTestData: data required by the unit tests and documentation tests +# - SystemTestData: data required for the system tests +_create_data_target(StandardTestData "Testing/Data/DocTest/*.md5;Testing/Data/UnitTest/*.md5") +_create_data_target(SystemTestData "Testing/Data/SystemTest/*.md5;Testing/SystemTests/tests/analysis/reference/*.md5") diff --git a/Code/Mantid/Build/Jenkins/buildscript b/Code/Mantid/Build/Jenkins/buildscript index 9d5c910eaf46..461364befab4 100755 --- a/Code/Mantid/Build/Jenkins/buildscript +++ b/Code/Mantid/Build/Jenkins/buildscript @@ -4,10 +4,12 @@ # # Notes: # -# WORKSPACE, JOB_NAME & NODE_LABEL are environment variables that are set by -# Jenkins. The last one corresponds to any labels set on a slave. -# BUILD_THREADS & PARAVIEW_DIR should be set in the configuration of each slave. +# WORKSPACE, JOB_NAME, NODE_LABEL GIT_COMMIT are environment variables that +# are set by Jenkins. The last one corresponds to any labels set on a slave. +# BUILD_THREADS & PARAVIEW_DIR should be set in the configuration of each +# slave. ############################################################################### +SCRIPT_DIR=$(dirname "$0") ############################################################################### # Print out the versions of things we are using @@ -15,8 +17,9 @@ cmake --version echo "SHA1=${sha1}" - -#determine if should use the clang compiler. +############################################################################### +# Setup clang +############################################################################### if [[ ${JOB_NAME} == *clang* ]]; then USE_CLANG=true elif [[ $(uname) == 'Darwin' ]] ; then @@ -63,30 +66,56 @@ fi ############################################################################### # Set up the location for the local object store outside of the build and # source tree, which can be shared by multiple builds. -# It defaults to the parent directory of the workspace but can be overridden -# by setting the MANTID_DATA_STORE environment variable. +# It defaults to a MantidExternalData directory within the HOME directory. +# It can be overridden by setting the MANTID_DATA_STORE environment variable. ############################################################################### if [ -z "$MANTID_DATA_STORE" ]; then - export MANTID_DATA_STORE=$(dirname $WORKSPACE) + export MANTID_DATA_STORE=$HOME/MantidExternalData +fi + +############################################################################### +# RHEL6 setup steps - nodes must have a "rhel6" label set (in lowercase) +############################################################################### +if [[ ${NODE_LABELS} == *rhel6* ]]; then + SCL_ON_RHEL6="scl enable mantidlibs" + ON_RHEL6=true +else + SCL_ON_RHEL6="eval" fi ############################################################################### -# Check whether this is a clean build (must have 'clean' in the job name) +# Check job requirements from the name ############################################################################### if [[ ${JOB_NAME} == *clean* ]]; then CLEANBUILD=true - # Removing the build directory entirely guarantees a completely clean build - rm -rf $WORKSPACE/build + BUILDPKG=true +fi + +if [[ -e $WORKSPACE/build/CMakeCache.txt ]]; then + # Temporary while the builds flick between old & new TestingTools locations + TESTINGTOOLS_DIR=$(grep 'Code/Mantid/TestingTools/cxxtest' $WORKSPACE/build/CMakeCache.txt || true) + if [ ! -z "$TESTINGTOOLS_DIR" ]; then + rm -fr $WORKSPACE/build + fi +fi + +if [[ ${JOB_NAME} == *pull_requests* ]]; then + BUILDPKG=true +fi - # Set some variables relating to the linux packages created from clean builds +############################################################################### +# Packaging options +############################################################################### +if [[ "$BUILDPKG" == true ]]; then + # Set some variables relating to the linux packages if [[ $(uname) != 'Darwin' ]]; then # Use different suffix for linux builds - if [[ ${JOB_NAME} == *master* ]]; then + if [[ ${JOB_NAME} == *release* ]]; then + PACKAGINGVARS="-DENVVARS_ON_INSTALL=True -DCPACK_SET_DESTDIR=ON -DPACKAGE_DOCS=ON" + elif [[ ${JOB_NAME} == *master* ]]; then PACKAGINGVARS="-DENVVARS_ON_INSTALL=False -DCMAKE_INSTALL_PREFIX=/opt/mantidnightly -DCPACK_PACKAGE_SUFFIX=nightly -DCPACK_SET_DESTDIR=OFF -DPACKAGE_DOCS=ON" - elif [[ ${JOB_NAME} == *develop* ]]; then + else PACKAGINGVARS="-DENVVARS_ON_INSTALL=False -DCMAKE_INSTALL_PREFIX=/opt/mantidunstable -DCPACK_PACKAGE_SUFFIX=unstable -DCPACK_SET_DESTDIR=OFF -DPACKAGE_DOCS=ON" - elif [[ ${JOB_NAME} == *release* ]]; then - PACKAGINGVARS="-DENVVARS_ON_INSTALL=True -DCPACK_SET_DESTDIR=ON -DPACKAGE_DOCS=ON" fi else # Mac packaging @@ -95,20 +124,19 @@ if [[ ${JOB_NAME} == *clean* ]]; then fi ############################################################################### -# RHEL6 setup steps - nodes must have a "rhel6" label set (in lowercase) +# Setup the build directory ############################################################################### -if [[ ${NODE_LABELS} == *rhel6* ]]; then - SCL_ON_RHEL6="scl enable mantidlibs" - ON_RHEL6=true -else - SCL_ON_RHEL6="eval" +if [[ "$CLEANBUILD" == true ]]; then + rm -rf $WORKSPACE/build fi +[ -d $WORKSPACE/build ] || mkdir $WORKSPACE/build +cd $WORKSPACE/build ############################################################################### -# Create the build directory if it doesn't exist +# Clean up any artifacts from last build so that if it fails +# they don't get archived again ############################################################################### -[ -d $WORKSPACE/build ] || mkdir $WORKSPACE/build -cd $WORKSPACE/build +rm -f *.dmg *.rpm *.deb *.tar.gz ############################################################################### ## Check the required build configuration @@ -154,45 +182,39 @@ $SCL_ON_RHEL6 "cmake --build . --target AllTests -- -j$BUILD_THREADS" # Run the tests ############################################################################### # Remove any Mantid.user.properties file -rm -f ~/.mantid/Mantid.user.properties +userprops=~/.mantid/Mantid.user.properties +rm -f $userprops $SCL_ON_RHEL6 "ctest -j$BUILD_THREADS --schedule-random --output-on-failure" ############################################################################### -# Documentation -# Build Qt help on all platforms for a clean build so that it can be packaged +# Create the install kit if required. This includes building the Qt help +# documentation ############################################################################### -if [[ "$CLEANBUILD" == true ]]; then +if [[ "$BUILDPKG" == true ]]; then # Workaround so that the target can find the properties file # CMake doesn't easily allow environment variables on custom targets if [[ $(uname) == 'Darwin' ]]; then export MANTIDPATH=$PWD/bin fi $SCL_ON_RHEL6 "cmake --build . --target docs-qthelp" -fi - -############################################################################### -# Create the install kit if this is a clean or non-Mac build -############################################################################### -rm -f *.dmg *.rpm *.deb *.tar.gz -# Always build a package on linux -if [[ $(uname) != 'Darwin' ]]; then $SCL_ON_RHEL6 "cpack" -fi -if [[ "$CLEANBUILD" == true ]]; then - # On the Mac, only create a package for clean builds - if [[ $(uname) == 'Darwin' ]]; then - $SCL_ON_RHEL6 "cpack" - fi - - # We could build the source tarball anywhere, but we choose to do it on RHEL6 - # We also parcel up the documentation into a tar file that is easier to move around + # Source tarball on clean build (arbitrarily choose rhel6) + # Also, parcel up the documentation into a tar file that is easier to move around # and labelled by the commit id it was built with. This assumes the Jenkins git plugin # has set the GIT_COMMIT environment variable - if [[ "$ON_RHEL6" == true ]]; then + if [[ "$CLEANBUILD" == true && "$ON_RHEL6" == true ]]; then $SCL_ON_RHEL6 "cmake --build . --target docs-html" tar -cjf mantiddocs-g${GIT_COMMIT:0:7}.tar.bz2 --exclude='*.buildinfo' --exclude="MantidProject.q*" docs/html # The ..._PREFIX argument avoids opt/Mantid directories at the top of the tree $SCL_ON_RHEL6 "cpack --config CPackSourceConfig.cmake -D CPACK_PACKAGING_INSTALL_PREFIX=" fi fi + +############################################################################### +# Run the system tests on RHEL6 when doing a pull request build. Run +# from a package to have at least one Linux checks it install okay +############################################################################### +if [[ "${ON_RHEL6}" == true ]] && [[ ${JOB_NAME} == *pull_requests* ]]; then + $SCRIPT_DIR/systemtests +fi diff --git a/Code/Mantid/Build/Jenkins/buildscript.bat b/Code/Mantid/Build/Jenkins/buildscript.bat index f861162c87c9..ce0d2ca69f03 100755 --- a/Code/Mantid/Build/Jenkins/buildscript.bat +++ b/Code/Mantid/Build/Jenkins/buildscript.bat @@ -1,3 +1,4 @@ +setlocal enableextensions enabledelayedexpansion ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: WINDOWS SCRIPT TO DRIVE THE JENKINS BUILDS OF MANTID. :: @@ -6,23 +7,10 @@ :: WORKSPACE & JOB_NAME are environment variables that are set by Jenkins. :: BUILD_THREADS & PARAVIEW_DIR should be set in the configuration of each slave. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: - -"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" --version +set CMAKE_BIN_DIR=C:\Program Files (x86)\CMake 2.8\bin +"%CMAKE_BIN_DIR%\cmake.exe" --version echo %sha1% -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: Check the required build configuration -::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -set BUILD_CONFIG= -if not "%JOB_NAME%"=="%JOB_NAME:debug=%" ( - set BUILD_CONFIG=Debug -) else ( -if not "%JOB_NAME%"=="%JOB_NAME:relwithdbg=%" ( - set BUILD_CONFIG=RelWithDbg -) else ( - set BUILD_CONFIG=Release - )) - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Get or update the third party dependencies ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @@ -30,40 +18,81 @@ cd %WORKSPACE%\Code call fetch_Third_Party win64 cd %WORKSPACE% -set PATH=%WORKSPACE%\Code\Third_Party\lib\win64;%WORKSPACE%\Code\Third_Party\lib\win64\Python27;%PARAVIEW_DIR%\bin\%BUILD_CONFIG%;%PATH% - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Set up the location for local object store outside of the build and source :: tree, which can be shared by multiple builds. -:: It defaults to the parent directory of the workspace but can be overridden -:: by setting the MANTID_DATA_STORE environment variable. +:: It defaults to a MantidExternalData directory within the USERPROFILE +:: directory. It can be overridden by setting the MANTID_DATA_STORE environment +:: variable. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: if NOT DEFINED MANTID_DATA_STORE ( - for %%F in ("%WORKSPACE%") do set MANTID_DATA_STORE=%%~dpF + set MANTID_DATA_STORE=%USERPROFILE%\MantidExternalData +) + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Check job requirements from the name +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +set CLEANBUILD= +set BUILDPKG= +if not "%JOB_NAME%" == "%JOB_NAME:clean=%" ( + set CLEANBUILD=yes + set BUILDPKG=yes +) + +if EXIST %WORKSPACE%\build\CMakeCache.txt ( + FINDSTR "Code/Mantid/TestingTools/cxxtest" %WORKSPACE%\build\CMakeCache.txt && ( + rmdir /S /Q %WORKSPACE%\build + ) +) + +if not "%JOB_NAME%" == "%JOB_NAME:pull_requests=%" ( + set BUILDPKG=yes ) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: Check whether this is a clean build (must have 'clean' in the job name) +:: Packaging options ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: set PACKAGE_DOCS= -if "%JOB_NAME%"=="%JOB_NAME:clean=%" ( - set CLEANBUILD=no -) else ( - set CLEANBUILD=yes - set PACKAGE_DOCS=-DPACKAGE_DOCS=True - rmdir /S /Q build +if "%BUILDPKG%" == "yes" ( + set PACKAGE_DOCS=-DPACKAGE_DOCS=ON ) ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: Create the build directory if it doesn't exist +:: Setup the build directory ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +if "%CLEANBUILD%" == "yes" ( + rmdir /S /Q %WORKSPACE%\build +) md %WORKSPACE%\build cd %WORKSPACE%\build +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Clean up any artifacts from last build so that if it fails +:: they don't get archived again. +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +del /Q *.exe + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Check the required build configuration +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +set BUILD_CONFIG= +if not "%JOB_NAME%"=="%JOB_NAME:debug=%" ( + set BUILD_CONFIG=Debug +) else ( +if not "%JOB_NAME%"=="%JOB_NAME:relwithdbg=%" ( + set BUILD_CONFIG=RelWithDbg +) else ( + set BUILD_CONFIG=Release + )) +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Update the PATH so that we can find everything +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +set PATH=%WORKSPACE%\Code\Third_Party\lib\win64;%WORKSPACE%\Code\Third_Party\lib\win64\Python27;%PARAVIEW_DIR%\bin\%BUILD_CONFIG%;%PATH% + ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: CMake configuration ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -G "Visual Studio 11 Win64" -DCONSOLE=OFF -DENABLE_CPACK=ON -DMAKE_VATES=ON -DParaView_DIR=%PARAVIEW_DIR% -DMANTID_DATA_STORE=%MANTID_DATA_STORE% -DUSE_PRECOMPILED_HEADERS=ON %PACKAGE_DOCS% ..\Code\Mantid +"%CMAKE_BIN_DIR%\cmake.exe" -G "Visual Studio 11 Win64" -DCONSOLE=OFF -DENABLE_CPACK=ON -DMAKE_VATES=ON -DParaView_DIR=%PARAVIEW_DIR% -DMANTID_DATA_STORE=!MANTID_DATA_STORE! -DUSE_PRECOMPILED_HEADERS=ON %PACKAGE_DOCS% ..\Code\Mantid if ERRORLEVEL 1 exit /B %ERRORLEVEL% ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: @@ -75,17 +104,53 @@ if ERRORLEVEL 1 exit /B %ERRORLEVEL% ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Run the tests ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -"C:\Program Files (x86)\CMake 2.8\bin\ctest.exe" -C %BUILD_CONFIG% -j%BUILD_THREADS% --schedule-random --output-on-failure +:: Remove the user properties file just in case anything polluted it +set USERPROPS=bin\%BUILD_CONFIG%\Mantid.user.properties +del %USERPROPS% +"%CMAKE_BIN_DIR%\ctest.exe" -C %BUILD_CONFIG% -j%BUILD_THREADS% --schedule-random --output-on-failure if ERRORLEVEL 1 exit /B %ERRORLEVEL% ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -:: Create the install kit if this is a clean build +:: Create the install kit if required +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +if "%BUILDPKG%" == "yes" ( + echo Building package + :: Build offline documentation + msbuild /nologo /nr:false /p:Configuration=%BUILD_CONFIG% docs/docs-qthelp.vcxproj + + :: Ignore errors as the exit code of msbuild is wrong here. + :: It always marks the build as a failure even thought the MantidPlot exit + :: code is correct! + ::if ERRORLEVEL 1 exit /B %ERRORLEVEL% + "%CMAKE_BIN_DIR%\cpack.exe" -C %BUILD_CONFIG% --config CPackConfig.cmake +) + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Run the doc tests when doing a pull request build. Run from a package +:: from a package to have at least one Linux checks it install okay ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -if "%CLEANBUILD%" EQU "yes" ( - :: Build offline documentation - msbuild /nologo /nr:false /p:Configuration=%BUILD_CONFIG% docs/docs-qthelp.vcxproj +if not "%JOB_NAME%"=="%JOB_NAME:pull_requests=%" ( + :: Install package + set SYSTEMTESTS_DIR=%WORKSPACE%\Code\Mantid\Testing\SystemTests + python !SYSTEMTESTS_DIR!\scripts\mantidinstaller.py install %WORKSPACE%\build - :: ignore errors as the exit code of the build isn't correct - ::if ERRORLEVEL 1 exit /B %ERRORLEVEL% - cpack -C %BUILD_CONFIG% --config CPackConfig.cmake + ::Remove user properties, disable instrument updating & usage reports and add data paths + del /Q C:\MantidInstall\bin\Mantid.user.properties + echo UpdateInstrumentDefinitions.OnStartup = 0 > C:\MantidInstall\bin\Mantid.user.properties + echo usagereports.enabled = 0 >> C:\MantidInstall\bin\Mantid.user.properties + :: User properties file cannot contain backslash characters + set WORKSPACE_UNIX_STYLE=%WORKSPACE:\=/% + set DATA_ROOT=!WORKSPACE_UNIX_STYLE!/build/ExternalData/Testing/Data + echo datasearch.directories = !DATA_ROOT!/UnitTest;!DATA_ROOT!/DocTest;!WORKSPACE_UNIX_STYLE!/Code/Mantid/instrument >> C:\MantidInstall\bin\Mantid.user.properties + + :: Run tests + cd %WORKSPACE%\build\docs + C:\MantidInstall\bin\MantidPlot.exe -xq runsphinx_doctest.py + set RETCODE=!ERRORLEVEL! + + :: Remove Mantid + cd %WORKSPACE%\build + python !SYSTEMTESTS_DIR!\scripts\mantidinstaller.py uninstall %WORKSPACE%\build + if !RETCODE! NEQ 0 exit /B 1 ) + diff --git a/Code/Mantid/Build/Jenkins/systemtests b/Code/Mantid/Build/Jenkins/systemtests new file mode 100755 index 000000000000..16f29a98e56b --- /dev/null +++ b/Code/Mantid/Build/Jenkins/systemtests @@ -0,0 +1,73 @@ +#!/bin/bash -ex +############################################################################### +# LINUX/MAC SCRIPT TO DRIVE THE SYSTEM TESTS OF MANTID +# +# Notes: +# +# WORKSPACE, JOB_NAME, NODE_LABEL GIT_COMMIT are environment variables that +# are set by Jenkins. The last one corresponds to any labels set on a slave. +############################################################################### + +############################################################################### +# Print out the versions of things we are using +############################################################################### +cmake --version +echo "SHA1=${sha1}" + +############################################################################### +# Set up the location for the local object store outside of the build and +# source tree, which can be shared by multiple builds. +# It defaults to the parent directory of the workspace but can be overridden +# by setting the MANTID_DATA_STORE environment variable. +############################################################################### +if [ -z "$MANTID_DATA_STORE" ]; then + export MANTID_DATA_STORE=$(dirname $WORKSPACE) +fi + +############################################################################### +# RHEL6 setup steps - nodes must have a "rhel6" label set (in lowercase) +############################################################################### +if [[ ${NODE_LABELS} == *rhel6* ]]; then + SCL_ON_RHEL6="scl enable mantidlibs" + ON_RHEL6=true +else + SCL_ON_RHEL6="eval" +fi + +############################################################################### +# Create the build directory if it doesn't exist +############################################################################### +[ -d $WORKSPACE/build ] || mkdir $WORKSPACE/build +cd $WORKSPACE/build + +############################################################################### +# CMake configuration if it has not already been configured. +# We use the special flag that only creates the targets for the data +############################################################################### +if [[ ! -e $WORKSPACE/build/CMakeCache.txt ]]; then + $SCL_ON_RHEL6 "cmake -DMANTID_DATA_STORE=${MANTID_DATA_STORE} -DDATA_TARGETS_ONLY=ON ../Code/Mantid" +else + $SCL_ON_RHEL6 "cmake ." +fi + +############################################################################### +# Build step +############################################################################### +$SCL_ON_RHEL6 "cmake --build . -- StandardTestData" +$SCL_ON_RHEL6 "cmake --build . -- SystemTestData" + +############################################################################### +# Run the tests +############################################################################### +# Remove any Mantid.user.properties file +userprops=~/.mantid/Mantid.user.properties +rm -f $userprops +# Turn off usage reports and instrument downloading for the mantid call +# that creates the properties file +echo "UpdateInstrumentDefinitions.OnStartup = 0" > $userprops +echo "usagereports.enabled = 0" >> $userprops + +# Run +PKGDIR=${WORKSPACE}/build +python $WORKSPACE/Code/Mantid/Testing/SystemTests/scripts/InstallerTests.py -o -d $PKGDIR + diff --git a/Code/Mantid/Build/Jenkins/systemtests.bat b/Code/Mantid/Build/Jenkins/systemtests.bat new file mode 100755 index 000000000000..3c2f3e003568 --- /dev/null +++ b/Code/Mantid/Build/Jenkins/systemtests.bat @@ -0,0 +1,66 @@ +setlocal enbaleextensions enabledelayedexpansion +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: WINDOWS SCRIPT TO DRIVE THE SYSTEM TESTS OF MANTID +:: +:: Notes: +:: +:: WORKSPACE, JOB_NAME & NODE_LABEL are environment variables that +:: are set by Jenkins. The last one corresponds to any labels set on a slave. +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Print out the versions of things we are using +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +set CMAKE_BIN_DIR=C:\Program Files (x86)\CMake 2.8\bin +"%CMAKE_BIN_DIR%\cmake" --version +echo %sha1% + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Set up the location for local object store outside of the build and source +:: tree, which can be shared by multiple builds. +:: It defaults to a MantidExternalData directory within the USERPROFILE +:: directory. It can be overridden by setting the MANTID_DATA_STORE environment +:: variable. +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +if NOT DEFINED MANTID_DATA_STORE ( + set MANTID_DATA_STORE=%USERPROFILE%\MantidExternalData +) + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Setup the build directory +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +md %WORKSPACE%\build +cd %WORKSPACE%\build + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: CMake configuration if it has not already been configured. +:: We use the special flag that only creates the targets for the data +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +if not EXIST %WORKSPACE%\build\CMakeCache.txt ( + "%CMAKE_BIN_DIR%\cmake" -DMANTID_DATA_STORE=!MANTID_DATA_STORE! -DDATA_TARGETS_ONLY=ON ..\Code\Mantid +) else ( + :: This ensures that any new data files are picked up by the cmake globbing + "%CMAKE_BIN_DIR%\cmake" . +) + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Build step +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +"%CMAKE_BIN_DIR%\cmake" --build . -- StandardTestData +"%CMAKE_BIN_DIR%\cmake" --build . -- SystemTestData + +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Run the tests +::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Remove any Mantid.user.properties file +set USERPROPS=C:\MantidInstall\bin\Mantid.user.properties +del /Q %USERPROPS% +:: Turn off usage reports and instrument downloading for the mantid call +:: that creates the properties file +echo UpdateInstrumentDefinitions.OnStartup = 0 > %USERPROPS% +echo usagereports.enabled = 0 >> %USERPROPS% + +:: Run +set PKGDIR=%WORKSPACE%\build +python %WORKSPACE%\Code\Mantid\Testing\SystemTests\scripts\InstallerTests.py -o -d %PKGDIR% + diff --git a/Code/Mantid/CMakeLists.txt b/Code/Mantid/CMakeLists.txt index 2b79286d6eb5..a055859f89e1 100644 --- a/Code/Mantid/CMakeLists.txt +++ b/Code/Mantid/CMakeLists.txt @@ -1,8 +1,8 @@ ########################################################################### # CMake version check. -# Only versions after 2.8.5 will find the HL component for HDF5 +# Only versions after 2.8.12 will find the HL component for HDF5 ########################################################################### -cmake_minimum_required ( VERSION 2.8.5 ) +cmake_minimum_required ( VERSION 2.8.12 ) # System package target is important for the windows builds as it allows us to package only the dlls and exes and exclude libs. Defaults to empty for other platforms. set ( SYSTEM_PACKAGE_TARGET "") @@ -12,6 +12,17 @@ set ( CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Build/CMake") # Define the project name. project ( Mantid ) + +########################################################################### +# Quick exit if we only want data targets +########################################################################### +if( DATA_TARGETS_ONLY ) + include( SetupDataTargets ) + # System test config files + add_subdirectory( Testing/SystemTests/scripts ) + return() +endif() + set ( CPACK_PACKAGE_SUFFIX "" CACHE STRING "suffix used to determine the deployment type") set_property(CACHE CPACK_PACKAGE_SUFFIX PROPERTY STRINGS nightly unstable "") #empty string and release are treated as the same thing @@ -147,6 +158,9 @@ add_subdirectory ( scripts ) add_subdirectory ( docs ) +# System test data target +add_subdirectory ( Testing/SystemTests/scripts ) + ########################################################################### # Installation settings ########################################################################### diff --git a/Code/Mantid/Framework/API/src/PeakFunctionIntegrator.cpp b/Code/Mantid/Framework/API/src/PeakFunctionIntegrator.cpp index 75fcc48e3c40..b36896423ffc 100644 --- a/Code/Mantid/Framework/API/src/PeakFunctionIntegrator.cpp +++ b/Code/Mantid/Framework/API/src/PeakFunctionIntegrator.cpp @@ -12,7 +12,7 @@ namespace API { * See also PeakFunctionIntegrator::setRequiredRelativePrecision. * * @param requiredRelativePrecision :: Desired relative precision of the - *integral estimations. + * integral estimations. */ PeakFunctionIntegrator::PeakFunctionIntegrator(double requiredRelativePrecision) : m_integrationWorkspace(gsl_integration_workspace_alloc(1000)), @@ -69,6 +69,7 @@ IntegrationResult PeakFunctionIntegrator::integrateInfinity( * gsl_integration_qagiu is used for this. * * @param peakFunction :: Peak function to integrate. + * @param lowerLimit :: Lower limit of the integration. */ IntegrationResult PeakFunctionIntegrator::integratePositiveInfinity( const IPeakFunction &peakFunction, double lowerLimit) const { @@ -89,6 +90,7 @@ IntegrationResult PeakFunctionIntegrator::integratePositiveInfinity( * gsl_integration_qagil is used for this. * * @param peakFunction :: Peak function to integrate. + * @param upperLimit :: Upper limit of the integration. */ IntegrationResult PeakFunctionIntegrator::integrateNegativeInfinity( const IPeakFunction &peakFunction, double upperLimit) const { @@ -109,6 +111,8 @@ IntegrationResult PeakFunctionIntegrator::integrateNegativeInfinity( * gsl_integration_qags is used for this. * * @param peakFunction :: Peak function to integrate. + * @param lowerLimit :: Lower limit of the integration. + * @param upperLimit :: Upper limit of the integration. */ IntegrationResult PeakFunctionIntegrator::integrate(const IPeakFunction &peakFunction, diff --git a/Code/Mantid/Framework/Algorithms/inc/MantidAlgorithms/PlotAsymmetryByLogValue.h b/Code/Mantid/Framework/Algorithms/inc/MantidAlgorithms/PlotAsymmetryByLogValue.h index 26508de9191b..e10891b09dc7 100644 --- a/Code/Mantid/Framework/Algorithms/inc/MantidAlgorithms/PlotAsymmetryByLogValue.h +++ b/Code/Mantid/Framework/Algorithms/inc/MantidAlgorithms/PlotAsymmetryByLogValue.h @@ -116,6 +116,8 @@ class DLLExport PlotAsymmetryByLogValue : public API::Algorithm { MantidVec m_diffX, m_diffY, m_diffE; // LogValue name std::string m_logName; + // LogValue function + std::string m_logFunc; }; } // namespace Algorithm diff --git a/Code/Mantid/Framework/Algorithms/src/GenerateEventsFilter.cpp b/Code/Mantid/Framework/Algorithms/src/GenerateEventsFilter.cpp index c5e4e660b520..dd1f338b860c 100644 --- a/Code/Mantid/Framework/Algorithms/src/GenerateEventsFilter.cpp +++ b/Code/Mantid/Framework/Algorithms/src/GenerateEventsFilter.cpp @@ -10,6 +10,7 @@ #include "MantidAPI/WorkspaceProperty.h" #include "MantidAPI/Column.h" #include "MantidKernel/VisibleWhenProperty.h" +#include "MantidKernel/ArrayProperty.h" using namespace Mantid; using namespace Mantid::Kernel; @@ -74,8 +75,14 @@ void GenerateEventsFilter::init() { "while the relative time takes integer or float. "); // Split by time (only) in steps - declareProperty("TimeInterval", EMPTY_DBL(), - "Length of the time splices if filtered in time only."); + declareProperty(new ArrayProperty("TimeInterval"), + "Array for lengths of time intervals for splitters. " + "If the array is empty, then there will be one splitter " + "created from StartTime and StopTime. " + "If the array has one value, then all splitters will have " + "same time intervals. " + "If the size of the array is larger than one, then the " + "splitters can have various time interval values."); setPropertySettings("TimeInterval", new VisibleWhenProperty("LogName", IS_EQUAL_TO, "")); @@ -113,16 +120,6 @@ void GenerateEventsFilter::init() { setPropertySettings("LogValueInterval", new VisibleWhenProperty("LogName", IS_NOT_EQUAL_TO, "")); - /* - Documentation doesn't include property options in property descriptions or - anywhere else. - For example, FilterLogValueByChangingDirection doesn't let me know that - Increasing and Decreasing - are valid options without using the MantidPlotGui to open the algorithm - dialog. - - */ - std::vector filteroptions; filteroptions.push_back("Both"); filteroptions.push_back("Increase"); @@ -379,10 +376,10 @@ void GenerateEventsFilter::processInputTime() { /** Set splitters by time value / interval only */ void GenerateEventsFilter::setFilterByTimeOnly() { - double timeinterval = this->getProperty("TimeInterval"); + vector vec_timeintervals = this->getProperty("TimeInterval"); bool singleslot = false; - if (timeinterval == EMPTY_DBL()) + if (vec_timeintervals.size() == 0) singleslot = true; // Progress @@ -401,7 +398,8 @@ void GenerateEventsFilter::setFilterByTimeOnly() { ss << "Time Interval From " << m_startTime << " to " << m_stopTime; addNewTimeFilterSplitter(m_startTime, m_stopTime, wsindex, ss.str()); - } else { + } else if (vec_timeintervals.size() == 1) { + double timeinterval = vec_timeintervals[0]; int64_t timeslot = 0; // Explicitly N time intervals @@ -439,6 +437,67 @@ void GenerateEventsFilter::setFilterByTimeOnly() { } } // END-WHILE } // END-IF-ELSE + else + { + // Explicitly N time intervals with various interval + + // Construct a vector for time intervals in nanosecond + size_t numtimeintervals = vec_timeintervals.size(); + std::vector vec_dtimens(numtimeintervals); + for (size_t id = 0; id < numtimeintervals; ++id) + { + int64_t deltatime_ns = + static_cast(vec_timeintervals[id] * m_timeUnitConvertFactorToNS); + vec_dtimens[id] = deltatime_ns; + } + + // Build the splitters + int64_t timeslot = 0; + + int64_t curtime_ns = m_startTime.totalNanoseconds(); + int wsindex = 0; + while (curtime_ns < m_stopTime.totalNanoseconds()) { + int64_t deltatime_ns; + for (size_t id = 0; id < numtimeintervals; ++id) + { + // get next time interval value + deltatime_ns = vec_dtimens[id]; + // Calculate next.time + int64_t nexttime_ns = curtime_ns + deltatime_ns; + bool breaklater = false; + if (nexttime_ns > m_stopTime.totalNanoseconds()) + { + nexttime_ns = m_stopTime.totalNanoseconds(); + breaklater = true; + } + + // Create splitter and information + Kernel::DateAndTime t0(curtime_ns); + Kernel::DateAndTime tf(nexttime_ns); + std::stringstream ss; + ss << "Time Interval From " << t0 << " to " << tf; + + addNewTimeFilterSplitter(t0, tf, wsindex, ss.str()); + + // Update loop variable + curtime_ns = nexttime_ns; + ++wsindex; + + // Update progress + int64_t newtimeslot = + (curtime_ns - m_startTime.totalNanoseconds()) * 90 / totaltime; + if (newtimeslot > timeslot) { + // There is change and update progress + timeslot = newtimeslot; + double prog = 0.1 + double(timeslot) / 100.0; + progress(prog); + } + + if (breaklater) + break; + } // END-FOR + } // END-WHILE + } return; } diff --git a/Code/Mantid/Framework/Algorithms/src/PlotAsymmetryByLogValue.cpp b/Code/Mantid/Framework/Algorithms/src/PlotAsymmetryByLogValue.cpp index bc9cb6bda5c6..260a5244b6e2 100644 --- a/Code/Mantid/Framework/Algorithms/src/PlotAsymmetryByLogValue.cpp +++ b/Code/Mantid/Framework/Algorithms/src/PlotAsymmetryByLogValue.cpp @@ -8,6 +8,7 @@ #include #include "MantidAPI/FileProperty.h" +#include #include "MantidAPI/Progress.h" #include "MantidAPI/ScopedWorkspace.h" #include "MantidAPI/TableRow.h" @@ -21,6 +22,7 @@ #include "MantidKernel/MandatoryValidator.h" #include "MantidKernel/PropertyWithValue.h" #include "MantidKernel/TimeSeriesProperty.h" +#include "Poco/File.h" #include #include @@ -37,11 +39,21 @@ namespace // anonymous */ template bool convertLogToDouble(const Mantid::Kernel::Property *property, - double &value) { + double &value, const std::string& function) { const Mantid::Kernel::TimeSeriesProperty *log = dynamic_cast *>(property); if (log) { - value = static_cast(log->lastValue()); + if (function=="Mean") { + value = static_cast(log->timeAverageValue()); + } else if (function=="First") { + value = static_cast(log->firstValue()); + } else if (function=="Min") { + value = static_cast(log->minValue()); + } else if (function=="Max") { + value = static_cast(log->maxValue()); + } else { // Default + value = static_cast(log->lastValue()); + } return true; } auto tlog = @@ -83,6 +95,17 @@ void PlotAsymmetryByLogValue::init() { boost::make_shared>(), "The name of the log values which will be used as the x-axis " "in the output workspace."); + + std::vector optionsLog; + optionsLog.push_back("Mean"); + optionsLog.push_back("Min"); + optionsLog.push_back("Max"); + optionsLog.push_back("First"); + optionsLog.push_back("Last"); + declareProperty("Function", "Last", + boost::make_shared(optionsLog), + "The function to apply: 'Mean', 'Min', 'Max', 'First' or 'Last'."); + declareProperty("Red", 1, "The period number for the 'red' data."); declareProperty("Green", EMPTY_INT(), "The period number for the 'green' data."); @@ -93,7 +116,6 @@ void PlotAsymmetryByLogValue::init() { declareProperty("Type", "Integral", boost::make_shared(options), "The calculation type: 'Integral' or 'Differential'."); - declareProperty( "TimeMin", EMPTY_DBL(), "The beginning of the time interval used in the calculations."); @@ -150,6 +172,8 @@ void PlotAsymmetryByLogValue::exec() { // Get runs std::string firstFN = getProperty("FirstRun"); std::string lastFN = getProperty("LastRun"); + // Get function to apply to logValue + m_logFunc = getPropertyValue("Function"); // Parse run names and get the number of runs std::string fnBase, fnExt; @@ -353,34 +377,69 @@ void PlotAsymmetryByLogValue::populateOutputWorkspace (MatrixWorkspace_sptr &out void PlotAsymmetryByLogValue::parseRunNames (std::string& firstFN, std::string& lastFN, std::string& fnBase, std::string& fnExt) { - if ( firstFN.size() != lastFN.size() ) - { - throw std::runtime_error("First and last runs are not in the same directory\n"); - } - - fnExt = firstFN.substr(firstFN.find_last_of(".")); - + // Parse first run's name + std::string firstExt = firstFN.substr(firstFN.find_last_of(".")); firstFN.erase(firstFN.size() - 4); - lastFN.erase(lastFN.size() - 4); - fnBase = firstFN; - size_t i = fnBase.size() - 1; - while (isdigit(fnBase[i])) + std::string firstBase = firstFN; + size_t i = firstBase.size() - 1; + while (isdigit(firstBase[i])) i--; - if (i == fnBase.size() - 1) { + if (i == firstBase.size() - 1) { throw Exception::FileError("File name must end with a number.", firstFN); } - fnBase.erase(i + 1); + firstBase.erase(i + 1); + firstFN.erase(0, firstBase.size()); - std::string fnBase2 = lastFN; - fnBase2.erase(i + 1); - if ( fnBase != fnBase2 ) - { - throw std::runtime_error("First and last runs are not in the same directory\n"); + // Parse last run's name + std::string lastExt = lastFN.substr(lastFN.find_last_of(".")); + lastFN.erase(lastFN.size() - 4); + + std::string lastBase = lastFN; + i = lastBase.size() - 1; + while (isdigit(lastBase[i])) + i--; + if (i == lastBase.size() - 1) { + throw Exception::FileError("File name must end with a number.", lastFN); } + lastBase.erase(i + 1); + lastFN.erase(0, lastBase.size()); + + // Compare first and last + if ( firstBase != lastBase ) { + // Runs are not in the same directory + + // First run number with last base name + std::ostringstream tempFirst; + tempFirst << lastBase << firstFN << firstExt << std::endl; + std::string pathFirst = FileFinder::Instance().getFullPath(tempFirst.str()); + // Last run number with first base name + std::ostringstream tempLast; + tempLast << firstBase << lastFN << lastExt << std::endl; + std::string pathLast = FileFinder::Instance().getFullPath(tempLast.str()); + + // Try to correct this on the fly by + // checking if the last run can be found in the first directory... + if ( Poco::File(pathLast).exists() ) { + fnBase = firstBase; + fnExt = firstExt; + g_log.warning() << "First and last run are not in the same directory. File " + << pathLast << " will be used instead." << std::endl; + } else if (Poco::File(pathFirst).exists()) { + // ...or viceversa + fnBase = lastBase; + fnExt = lastExt; + g_log.warning() << "First and last run are not in the same directory. File " + << pathFirst << " will be used instead." << std::endl; + } else { + throw std::runtime_error("First and last runs are not in the same directory."); + } + + } else { - firstFN.erase(0, fnBase.size()); - lastFN.erase(0, fnBase.size()); + fnBase = firstBase; + fnExt = firstExt; + } } /** Apply dead-time corrections. The calculation is done by ApplyDeadTimeCorr algorithm @@ -620,24 +679,23 @@ double PlotAsymmetryByLogValue::getLogValue(MatrixWorkspace &ws) { if (!property) { throw std::invalid_argument("Log " + m_logName + " does not exist."); } - double value = 0; // try different property types - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; - if (convertLogToDouble(property, value)) + if (convertLogToDouble(property, value, m_logFunc)) return value; // try if it's a string and can be lexically cast to double auto slog = diff --git a/Code/Mantid/Framework/Algorithms/src/TOFSANSResolutionByPixel.cpp b/Code/Mantid/Framework/Algorithms/src/TOFSANSResolutionByPixel.cpp index bd062648c9c4..6b2cb131d0ce 100644 --- a/Code/Mantid/Framework/Algorithms/src/TOFSANSResolutionByPixel.cpp +++ b/Code/Mantid/Framework/Algorithms/src/TOFSANSResolutionByPixel.cpp @@ -3,14 +3,10 @@ //---------------------------------------------------------------------- #include "MantidAlgorithms/TOFSANSResolutionByPixel.h" #include "MantidAPI/WorkspaceValidators.h" -#include "MantidDataObjects/EventWorkspace.h" -#include "MantidDataObjects/EventList.h" #include "MantidDataObjects/Workspace2D.h" -#include "MantidKernel/RebinParamsValidator.h" #include "MantidKernel/ArrayProperty.h" -#include "MantidKernel/VectorHelper.h" -#include "MantidKernel/Interpolation.h" #include "MantidKernel/BoundedValidator.h" +#include "MantidKernel/Interpolation.h" #include "boost/math/special_functions/fpclassify.hpp" @@ -28,7 +24,7 @@ using namespace DataObjects; void TOFSANSResolutionByPixel::init() { declareProperty(new WorkspaceProperty<>( - "InputWorkspace", "", Direction::InOut, + "Workspace", "", Direction::InOut, boost::make_shared("Wavelength")), "Name the workspace to calculate the resolution for, for " "each pixel and wavelenght"); @@ -55,7 +51,7 @@ double TOFSANSResolutionByPixel::getTOFResolution(double wl) { } void TOFSANSResolutionByPixel::exec() { - MatrixWorkspace_sptr inOutWS = getProperty("InputWorkspace"); + MatrixWorkspace_sptr inOutWS = getProperty("Workspace"); double deltaR = getProperty("DeltaR"); double R1 = getProperty("SourceApertureRadius"); double R2 = getProperty("SampleApertureRadius"); @@ -99,9 +95,7 @@ void TOFSANSResolutionByPixel::exec() { const int numberOfSpectra = static_cast(inOutWS->getNumberHistograms()); Progress progress(this, 0.0, 1.0, numberOfSpectra); - // PARALLEL_FOR1(inOutWS) for (int i = 0; i < numberOfSpectra; i++) { - // PARALLEL_START_INTERUPT_REGION IDetector_const_sptr det; try { det = inOutWS->getDetector(i); @@ -109,11 +103,6 @@ void TOFSANSResolutionByPixel::exec() { g_log.information() << "Spectrum index " << i << " has no detector assigned to it - discarding" << std::endl; - // Catch if no detector. Next line tests whether this happened - test - // placed - // outside here because Mac Intel compiler doesn't like 'continue' in a - // catch - // in an openmp block. } // If no detector found or if it's masked or a monitor, skip onto the next // spectrum @@ -168,7 +157,6 @@ void TOFSANSResolutionByPixel::exec() { } progress.report("Computing Q resolution"); - // PARALLEL_END_INTERUPT_REGION } } } // namespace Algorithms diff --git a/Code/Mantid/Framework/Algorithms/test/GenerateEventsFilterTest.h b/Code/Mantid/Framework/Algorithms/test/GenerateEventsFilterTest.h index 33816f2d7cdf..e9715535e5cb 100644 --- a/Code/Mantid/Framework/Algorithms/test/GenerateEventsFilterTest.h +++ b/Code/Mantid/Framework/Algorithms/test/GenerateEventsFilterTest.h @@ -123,7 +123,7 @@ class GenerateEventsFilterTest : public CxxTest::TestSuite TS_ASSERT_THROWS_NOTHING(alg.setProperty("InputWorkspace", eventWS)); TS_ASSERT_THROWS_NOTHING(alg.setProperty("OutputWorkspace", "Splitters01")); TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("InformationWorkspace", "InfoWS");) - TS_ASSERT_THROWS_NOTHING(alg.setProperty("TimeInterval", 15000.0)); + TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("TimeInterval", "15000.0")); TS_ASSERT_THROWS_NOTHING(alg.setProperty("UnitOfTime", "Nanoseconds")); // 3. Running and get result @@ -597,7 +597,7 @@ class GenerateEventsFilterTest : public CxxTest::TestSuite TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("OutputWorkspace", "Splitters08")); TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("InformationWorkspace", "InfoWS08")); TS_ASSERT_THROWS_NOTHING(alg.setProperty("FastLog", true)); - TS_ASSERT_THROWS_NOTHING(alg.setProperty("TimeInterval", 15000.0)); + TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("TimeInterval", "15000.0")); TS_ASSERT_THROWS_NOTHING(alg.setProperty("UnitOfTime", "Nanoseconds")); // Running and get result @@ -941,6 +941,79 @@ class GenerateEventsFilterTest : public CxxTest::TestSuite } + //---------------------------------------------------------------------------------------------- + /** Test generation of splitters by various time intervals + * (1) Multiple time interval with various time interval lengths + * (2) Default start time and stop time + */ + void test_genTimeVariousIntervalMatrixSplitter() + { + // Create input Workspace & initial setup + DataObjects::EventWorkspace_sptr eventWS = createEventWorkspace(); + AnalysisDataService::Instance().addOrReplace("TestEventWorkspace08v", eventWS); + int64_t timeinterval_ns = 15000; + + // Init and set property + GenerateEventsFilter alg; + alg.initialize(); + + std::vector vectimeintervals; + vectimeintervals.push_back(static_cast(timeinterval_ns)); + vectimeintervals.push_back(static_cast(timeinterval_ns)*2.); + vectimeintervals.push_back(static_cast(timeinterval_ns)*3.); + TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("InputWorkspace", "TestEventWorkspace08v")); + TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("OutputWorkspace", "Splitters08v")); + TS_ASSERT_THROWS_NOTHING(alg.setPropertyValue("InformationWorkspace", "InfoWS08v")); + TS_ASSERT_THROWS_NOTHING(alg.setProperty("FastLog", true)); + TS_ASSERT_THROWS_NOTHING(alg.setProperty("TimeInterval", vectimeintervals)); + TS_ASSERT_THROWS_NOTHING(alg.setProperty("UnitOfTime", "Nanoseconds")); + + // Running and get result + TS_ASSERT_THROWS_NOTHING(alg.execute()); + TS_ASSERT(alg.isExecuted()); + + // Check output workspace + API::MatrixWorkspace_sptr splittersws = + boost::dynamic_pointer_cast(AnalysisDataService::Instance().retrieve("Splitters08v")); + + TS_ASSERT(splittersws); + + // Check values of output workspace + size_t numintervals = 38; + TS_ASSERT_EQUALS(splittersws->readY(0).size(), numintervals); + + std::string runstarttimestr = eventWS->run().getProperty("run_start")->value(); + Kernel::DateAndTime runstarttime(runstarttimestr); + int64_t runstarttime_ns = runstarttime.totalNanoseconds(); + + Kernel::TimeSeriesProperty *protonchargelog = + dynamic_cast* >(eventWS->run().getProperty("proton_charge")); + Kernel::DateAndTime runstoptime = Kernel::DateAndTime(protonchargelog->lastTime().totalNanoseconds() + 100000); + + // First 3 intervals + TS_ASSERT_EQUALS(static_cast(splittersws->readX(0)[0]), runstarttime_ns); + TS_ASSERT_EQUALS(static_cast(splittersws->readX(0)[1]), runstarttime_ns + timeinterval_ns); + TS_ASSERT_EQUALS(static_cast(splittersws->readY(0)[0]), 0); + + TS_ASSERT_EQUALS(static_cast(splittersws->readX(0)[2]), runstarttime_ns + timeinterval_ns*3); + TS_ASSERT_EQUALS(static_cast(splittersws->readY(0)[1]), 1); + + TS_ASSERT_EQUALS(static_cast(splittersws->readX(0)[3]), runstarttime_ns + timeinterval_ns*6); + TS_ASSERT_EQUALS(static_cast(splittersws->readY(0)[2]), 2); + + // Last interval + TS_ASSERT_EQUALS(static_cast(splittersws->readX(0).back()), runstoptime.totalNanoseconds()); + TS_ASSERT_EQUALS(static_cast(splittersws->readY(0).back()), numintervals-1); + + // Clean + AnalysisDataService::Instance().remove("Splitters08v"); + AnalysisDataService::Instance().remove("InfoWS08v"); + AnalysisDataService::Instance().remove("TestEventWorkspace08v"); + + return; + } + + //---------------------------------------------------------------------------------------------- /** Convert the splitters stored in a matrix workspace to a vector of SplittingInterval objects */ diff --git a/Code/Mantid/Framework/Algorithms/test/PlotAsymmetryByLogValueTest.h b/Code/Mantid/Framework/Algorithms/test/PlotAsymmetryByLogValueTest.h index e6bed858dac2..2ec9773aeab6 100644 --- a/Code/Mantid/Framework/Algorithms/test/PlotAsymmetryByLogValueTest.h +++ b/Code/Mantid/Framework/Algorithms/test/PlotAsymmetryByLogValueTest.h @@ -254,6 +254,44 @@ class PlotAsymmetryByLogValueTest : public CxxTest::TestSuite AnalysisDataService::Instance().remove(ws); } + void test_LogValueFunction () + { + const std::string ws = "Test_LogValueFunction"; + + PlotAsymmetryByLogValue alg; + + TS_ASSERT_THROWS_NOTHING(alg.initialize()); + + alg.setPropertyValue("FirstRun", firstRun); + alg.setPropertyValue("LastRun", lastRun); + alg.setPropertyValue("OutputWorkspace", ws); + // We use 'beamlog_current' as log value because + // we want to test the 'Mean' function below and this is + // one of the few properties that contains different values over time + alg.setPropertyValue("LogValue","beamlog_current"); + alg.setPropertyValue("Function","Mean"); + alg.setPropertyValue("DeadTimeCorrType","None"); + + TS_ASSERT_THROWS_NOTHING(alg.execute()); + TS_ASSERT(alg.isExecuted()); + + MatrixWorkspace_sptr outWs = boost::dynamic_pointer_cast( + AnalysisDataService::Instance().retrieve(ws)); + + TS_ASSERT(outWs); + TS_ASSERT_EQUALS(outWs->blocksize(), 2); + TS_ASSERT_EQUALS(outWs->getNumberHistograms(),1); + + // Now we want to test X values (log values) in the output workspace + // rather than asymmetry (Y values) + const Mantid::MantidVec& X = outWs->readX(0); + + TS_ASSERT_DELTA(X[0], 179.078620, 0.00001); + TS_ASSERT_DELTA(X[1], 178.849998, 0.00001); + + AnalysisDataService::Instance().remove(ws); + } + private: std::string firstRun,lastRun; diff --git a/Code/Mantid/Framework/CMakeLists.txt b/Code/Mantid/Framework/CMakeLists.txt index 03c5ab5792d2..aa04d1bd087c 100644 --- a/Code/Mantid/Framework/CMakeLists.txt +++ b/Code/Mantid/Framework/CMakeLists.txt @@ -1,5 +1,5 @@ # This is mainly here so you don't get a complaint when running cmake -cmake_minimum_required (VERSION 2.8.5) +cmake_minimum_required (VERSION 2.8.12) # Add the path to our custom 'find' modules set ( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../Build/CMake") @@ -121,9 +121,7 @@ endif () # Unit test helper packages if ( CXXTEST_FOUND ) add_subdirectory ( UserAlgorithms ) - # This needs to be here so that a Framework-only build will work. -# add_subdirectory ( ../TestingTools ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/TestingTools/gmock-${GMOCK_VERSION} ) - add_subdirectory ( ../TestingTools ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/TestingTools ) + add_subdirectory ( ../Testing/Tools ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/Testing/Tools ) endif () add_subdirectory (MDAlgorithms) diff --git a/Code/Mantid/Framework/Geometry/src/Rendering/OCGeometryGenerator.cpp b/Code/Mantid/Framework/Geometry/src/Rendering/OCGeometryGenerator.cpp index bab1459e647d..d7b2f36805bc 100644 --- a/Code/Mantid/Framework/Geometry/src/Rendering/OCGeometryGenerator.cpp +++ b/Code/Mantid/Framework/Geometry/src/Rendering/OCGeometryGenerator.cpp @@ -44,7 +44,7 @@ GCC_DIAG_OFF(cast-qual) #include #include #include -#include +#include #include #include #include @@ -121,7 +121,7 @@ void OCGeometryGenerator::AnalyzeObject() { TopoDS_Shape Result = AnalyzeRule(const_cast(top)); try { ObjSurface = new TopoDS_Shape(Result); - BRepMesh::Mesh(Result, 0.001); + BRepMesh_IncrementalMesh(Result, 0.001); } catch (StdFail_NotDone &) { g_log.error("Cannot build the geometry. Check the geometry definition"); } diff --git a/Code/Mantid/Framework/MDEvents/src/IntegrateEllipsoids.cpp b/Code/Mantid/Framework/MDEvents/src/IntegrateEllipsoids.cpp index f13b9ca9a077..118e2caf1012 100644 --- a/Code/Mantid/Framework/MDEvents/src/IntegrateEllipsoids.cpp +++ b/Code/Mantid/Framework/MDEvents/src/IntegrateEllipsoids.cpp @@ -15,6 +15,7 @@ #include "MantidMDEvents/UnitsConversionHelper.h" #include "MantidMDEvents/Integrate3DEvents.h" #include "MantidMDEvents/IntegrateEllipsoids.h" +#include "MantidDataObjects/Workspace2D.h" #include "MantidKernel/Statistics.h" @@ -268,7 +269,7 @@ void IntegrateEllipsoids::exec() { double inti; double sigi; - std::vector r1,r2,r3; + std::vector principalaxis1,principalaxis2,principalaxis3; for (size_t i = 0; i < n_peaks; i++) { V3D hkl(peaks[i].getH(), peaks[i].getK(), peaks[i].getL()); if (Geometry::IndexingUtils::ValidIndex(hkl, 1.0)) { @@ -281,79 +282,106 @@ void IntegrateEllipsoids::exec() { peaks[i].setSigmaIntensity(sigi); peaks[i].setPeakShape(shape); if (axes_radii.size() == 3) { - if (inti/sigi > cutoffIsigI && !specify_size) - { - r1.push_back(axes_radii[0]); - r2.push_back(axes_radii[1]); - r3.push_back(axes_radii[2]); + if (inti/sigi > cutoffIsigI || cutoffIsigI == EMPTY_DBL()){ + principalaxis1.push_back(axes_radii[0]); + principalaxis2.push_back(axes_radii[1]); + principalaxis3.push_back(axes_radii[2]); } - g_log.notice() - << "Radii of three axes of ellipsoid for integrating peak " << i - << " = "; - for (int i3 = 0; i3 < 3; i3++) { - g_log.notice() << axes_radii[i3] << " "; - } - g_log.notice() << std::endl; } } else { peaks[i].setIntensity(0.0); peaks[i].setSigmaIntensity(0.0); } } - if (r1.size() > 1 && !specify_size) - { - Statistics stats = getStatistics(r1); - g_log.notice() << "r1: " - << " mean " << stats.mean - << " standard_deviation " << stats.standard_deviation - << " minimum " << stats.minimum - << " maximum " << stats.maximum - << " median " << stats.median << "\n"; - stats = getStatistics(r2); - g_log.notice() << "r2: " - << " mean " << stats.mean - << " standard_deviation " << stats.standard_deviation - << " minimum " << stats.minimum - << " maximum " << stats.maximum - << " median " << stats.median << "\n"; - stats = getStatistics(r3); - g_log.notice() << "r3: " - << " mean " << stats.mean - << " standard_deviation " << stats.standard_deviation - << " minimum " << stats.minimum - << " maximum " << stats.maximum - << " median " << stats.median << "\n"; - specify_size=true; - peak_radius = stats.mean + numSigmas * stats.standard_deviation; - back_inner_radius = peak_radius; - back_outer_radius = peak_radius * 1.25992105; // A factor of 2 ^ (1/3) will make the background - // shell volume equal to the peak region volume. - for (size_t i = 0; i < n_peaks; i++) { - V3D hkl(peaks[i].getH(), peaks[i].getK(), peaks[i].getL()); - if (Geometry::IndexingUtils::ValidIndex(hkl, 1.0)) { - V3D peak_q(peaks[i].getQLabFrame()); - std::vector axes_radii; - integrator.ellipseIntegrateEvents(peak_q, specify_size, peak_radius, - back_inner_radius, back_outer_radius, - axes_radii, inti, sigi); - peaks[i].setIntensity(inti); - peaks[i].setSigmaIntensity(sigi); - if (axes_radii.size() == 3) { - g_log.notice() - << "Radii of three axes of ellipsoid for integrating peak " << i - << " = "; - for (int i3 = 0; i3 < 3; i3++) { - g_log.notice() << axes_radii[i3] << " "; + if (principalaxis1.size() > 1 ){ + size_t histogramNumber = 3; + Workspace_sptr wsProfile = WorkspaceFactory::Instance().create( + "Workspace2D", histogramNumber, principalaxis1.size(), principalaxis1.size()); + Workspace2D_sptr wsProfile2D = boost::dynamic_pointer_cast(wsProfile); + AnalysisDataService::Instance().addOrReplace("EllipsoidAxes", wsProfile2D); + for (size_t j = 0; j < principalaxis1.size(); j++) { + wsProfile2D->dataX(0)[j] = static_cast(j); + wsProfile2D->dataY(0)[j] = principalaxis1[j]; + wsProfile2D->dataE(0)[j] = std::sqrt(principalaxis1[j]); + wsProfile2D->dataX(1)[j] = static_cast(j); + wsProfile2D->dataY(1)[j] = principalaxis2[j]; + wsProfile2D->dataE(1)[j] = std::sqrt(principalaxis2[j]); + wsProfile2D->dataX(2)[j] = static_cast(j); + wsProfile2D->dataY(2)[j] = principalaxis3[j]; + wsProfile2D->dataE(2)[j] = std::sqrt(principalaxis3[j]); + } + Statistics stats1 = getStatistics(principalaxis1); + g_log.notice() << "principalaxis1: " + << " mean " << stats1.mean + << " standard_deviation " << stats1.standard_deviation + << " minimum " << stats1.minimum + << " maximum " << stats1.maximum + << " median " << stats1.median << "\n"; + Statistics stats2 = getStatistics(principalaxis2); + g_log.notice() << "principalaxis2: " + << " mean " << stats2.mean + << " standard_deviation " << stats2.standard_deviation + << " minimum " << stats2.minimum + << " maximum " << stats2.maximum + << " median " << stats2.median << "\n"; + Statistics stats3 = getStatistics(principalaxis3); + g_log.notice() << "principalaxis3: " + << " mean " << stats3.mean + << " standard_deviation " << stats3.standard_deviation + << " minimum " << stats3.minimum + << " maximum " << stats3.maximum + << " median " << stats3.median << "\n"; + if (cutoffIsigI != EMPTY_DBL()){ + principalaxis1.clear(); + principalaxis2.clear(); + principalaxis3.clear(); + specify_size=true; + peak_radius = std::max(std::max(stats1.mean,stats2.mean),stats3.mean) + numSigmas * + std::max(std::max(stats1.standard_deviation,stats2.standard_deviation),stats3.standard_deviation); + back_inner_radius = peak_radius; + back_outer_radius = peak_radius * 1.25992105; // A factor of 2 ^ (1/3) will make the background + // shell volume equal to the peak region volume. + for (size_t i = 0; i < n_peaks; i++) { + V3D hkl(peaks[i].getH(), peaks[i].getK(), peaks[i].getL()); + if (Geometry::IndexingUtils::ValidIndex(hkl, 1.0)) { + V3D peak_q(peaks[i].getQLabFrame()); + std::vector axes_radii; + integrator.ellipseIntegrateEvents(peak_q, specify_size, peak_radius, + back_inner_radius, back_outer_radius, + axes_radii, inti, sigi); + peaks[i].setIntensity(inti); + peaks[i].setSigmaIntensity(sigi); + if (axes_radii.size() == 3){ + principalaxis1.push_back(axes_radii[0]); + principalaxis2.push_back(axes_radii[1]); + principalaxis3.push_back(axes_radii[2]); } - g_log.notice() << std::endl; + } else { + peaks[i].setIntensity(0.0); + peaks[i].setSigmaIntensity(0.0); + } + } + if (principalaxis1.size() > 1 ){ + size_t histogramNumber = 3; + Workspace_sptr wsProfile2 = WorkspaceFactory::Instance().create( + "Workspace2D", histogramNumber, principalaxis1.size(), principalaxis1.size()); + Workspace2D_sptr wsProfile2D2 = boost::dynamic_pointer_cast(wsProfile2); + AnalysisDataService::Instance().addOrReplace("EllipsoidAxes_2ndPass", wsProfile2D2); + for (size_t j = 0; j < principalaxis1.size(); j++) { + wsProfile2D2->dataX(0)[j] = static_cast(j); + wsProfile2D2->dataY(0)[j] = principalaxis1[j]; + wsProfile2D2->dataE(0)[j] = std::sqrt(principalaxis1[j]); + wsProfile2D2->dataX(1)[j] = static_cast(j); + wsProfile2D2->dataY(1)[j] = principalaxis2[j]; + wsProfile2D2->dataE(1)[j] = std::sqrt(principalaxis2[j]); + wsProfile2D2->dataX(2)[j] = static_cast(j); + wsProfile2D2->dataY(2)[j] = principalaxis3[j]; + wsProfile2D2->dataE(2)[j] = std::sqrt(principalaxis3[j]); } - } else { - peaks[i].setIntensity(0.0); - peaks[i].setSigmaIntensity(0.0); } } - } + // This flag is used by the PeaksWorkspace to evaluate whether it has been // integrated. peak_ws->mutableRun().addProperty("PeaksIntegrated", 1, true); diff --git a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/CalculateSampleTransmission.py b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/CalculateSampleTransmission.py index 78979a25c8a7..7b8c955bd398 100644 --- a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/CalculateSampleTransmission.py +++ b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/CalculateSampleTransmission.py @@ -19,17 +19,14 @@ def category(self): def summary(self): - return "Calculates the scattering & transmission for a given sample \ - material and size over a given wavelength range." + return 'Calculates the scattering & transmission for a given sample material and size over a given wavelength range.' def PyInit(self): - self.declareProperty(name='WavelengthRange', defaultValue='', - validator=StringMandatoryValidator(), + self.declareProperty(name='WavelengthRange', defaultValue='', validator=StringMandatoryValidator(), doc='Wavelength range to calculate transmission for.') - self.declareProperty(name='ChemicalFormula', defaultValue='', - validator=StringMandatoryValidator(), + self.declareProperty(name='ChemicalFormula', defaultValue='', validator=StringMandatoryValidator(), doc='Sample chemical formula') self.declareProperty(name='NumberDensity', defaultValue=0.1, @@ -39,19 +36,18 @@ def PyInit(self): doc='Sample thickness (cm). Default=0.1') self.declareProperty(MatrixWorkspaceProperty('OutputWorkspace', '', Direction.Output), - doc='Outputs the sample transmission over the wavelength range ' - 'as a function of wavelength.') + doc='Outputs the sample transmission over the wavelength range as a function of wavelength.') def validateInputs(self): issues = dict() density = self.getProperty('NumberDensity').value - if density < 0.0: + if(density < 0.0): issues['NumberDensity'] = 'NumberDensity must be positive' thickness = self.getProperty('Thickness').value - if thickness < 0.0: + if(thickness < 0.0): issues['Thickness'] = 'Thickness must be positive' return issues @@ -61,14 +57,15 @@ def PyExec(self): self._setup() # Create the workspace and set the sample material - CreateWorkspace(OutputWorkspace=self._output_ws, NSpec=2, DataX=[0, 0], DataY=[0, 0]) + CreateWorkspace(OutputWorkspace=self._output_ws, NSpec=2, DataX=[0, 0], DataY=[0, 0], + VerticalAxisUnit='Text', VerticalAxisValues='Transmission,Scattering') Rebin(InputWorkspace=self._output_ws, OutputWorkspace=self._output_ws, Params=self._bin_params) SetSampleMaterial(InputWorkspace=self._output_ws, ChemicalFormula=self._chemical_formula) ConvertToPointData(InputWorkspace=self._output_ws, OutputWorkspace=self._output_ws) - workspace = mtd[self._output_ws] - wavelengths = workspace.readX(0) + ws = mtd[self._output_ws] + wavelengths = ws.readX(0) transmission_data = np.zeros(len(wavelengths)) scattering_data = np.zeros(len(wavelengths)) @@ -78,8 +75,8 @@ def PyExec(self): transmission_data[idx] = transmission scattering_data[idx] = scattering - workspace.setY(0, transmission_data) - workspace.setY(1, scattering_data) + ws.setY(0, transmission_data) + ws.setY(1, scattering_data) self.setProperty('OutputWorkspace', self._output_ws) @@ -115,5 +112,6 @@ def _calculate_at_wavelength(self, wavelength): return transmission, scattering + # Register algorithm with Mantid AlgorithmFactory.subscribe(CalculateSampleTransmission) diff --git a/Code/Mantid/MantidPlot/src/Graph.cpp b/Code/Mantid/MantidPlot/src/Graph.cpp index c791973a8530..a3fcaf85c6d6 100644 --- a/Code/Mantid/MantidPlot/src/Graph.cpp +++ b/Code/Mantid/MantidPlot/src/Graph.cpp @@ -238,9 +238,12 @@ void Graph::deselectMarker() cp->disableEditing(); QObjectList lst = d_plot->children(); - foreach(QObject *o, lst){ - if (o->inherits("LegendWidget")) - dynamic_cast(o)->setSelected(false); + foreach(QObject *o, lst) { + if (o->inherits("LegendWidget")) { + LegendWidget *lw = dynamic_cast(o); + if (lw) + lw->setSelected(false); + } } } @@ -302,19 +305,33 @@ void Graph::setSelectedMarker(int _mrk, bool add) selectedMarker = mrk; if (add) { if (d_markers_selector) { - if (d_lines.contains(mrk)) - d_markers_selector->add(dynamic_cast(d_plot->marker(mrk))); - else if (d_images.contains(mrk)) - d_markers_selector->add(dynamic_cast(d_plot->marker(mrk))); - else + if (d_lines.contains(mrk)) { + ArrowMarker *am = dynamic_cast(d_plot->marker(mrk)); + if (!am) + return; + d_markers_selector->add(am); + } else if (d_images.contains(mrk)) { + ImageMarker *im = dynamic_cast(d_plot->marker(mrk)); + if (!im) + return; + d_markers_selector->add(im); + } else { return; + } } else { - if (d_lines.contains(mrk)) - d_markers_selector = new SelectionMoveResizer(dynamic_cast(d_plot->marker(mrk))); - else if (d_images.contains(mrk)) - d_markers_selector = new SelectionMoveResizer(dynamic_cast(d_plot->marker(mrk))); - else + if (d_lines.contains(mrk)) { + ArrowMarker *am = dynamic_cast(d_plot->marker(mrk)); + if (!am) + return; + d_markers_selector = new SelectionMoveResizer(am); + } else if (d_images.contains(mrk)) { + ImageMarker *im = dynamic_cast(d_plot->marker(mrk)); + if (!im) + return; + d_markers_selector = new SelectionMoveResizer(im); + } else { return; + } connect(d_markers_selector, SIGNAL(targetsChanged()), this, SIGNAL(modifiedGraph())); } @@ -325,14 +342,20 @@ void Graph::setSelectedMarker(int _mrk, bool add) return; delete d_markers_selector; } - d_markers_selector = new SelectionMoveResizer(dynamic_cast(d_plot->marker(mrk))); + ArrowMarker *am = dynamic_cast(d_plot->marker(mrk)); + if (!am) + return; + d_markers_selector = new SelectionMoveResizer(am); } else if (d_images.contains(mrk)) { if (d_markers_selector) { if (d_markers_selector->contains(dynamic_cast(d_plot->marker(mrk)))) return; delete d_markers_selector; } - d_markers_selector = new SelectionMoveResizer(dynamic_cast(d_plot->marker(mrk))); + ImageMarker *im = dynamic_cast(d_plot->marker(mrk)); + if (!im) + return; + d_markers_selector = new SelectionMoveResizer(im); } else return; @@ -404,7 +427,11 @@ ScaleDraw::ScaleType Graph::axisType(int axis) if (!d_plot->axisEnabled(axis)) return ScaleDraw::Numeric; - return dynamic_cast(d_plot->axisScaleDraw(axis))->scaleType(); + ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw(axis)); + if (sd) + return sd->scaleType(); + else // assuming this is a good default + return ScaleDraw::Numeric; } void Graph::setLabelsNumericFormat(int axis, int format, int prec, const QString& formula) @@ -445,14 +472,17 @@ void Graph::setMajorTicksType(const QList& lst) for (int i=0;i<(int)lst.count();i++) { ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw (i)); + if (!sd) + continue; + if (lst[i]==ScaleDraw::None || lst[i]==ScaleDraw::In) sd->enableComponent (QwtAbstractScaleDraw::Ticks, false); else { - sd->enableComponent (QwtAbstractScaleDraw::Ticks); - sd->setTickLength (QwtScaleDiv::MinorTick, d_plot->minorTickLength()); - sd->setTickLength (QwtScaleDiv::MediumTick, d_plot->minorTickLength()); - sd->setTickLength (QwtScaleDiv::MajorTick, d_plot->majorTickLength()); + sd->enableComponent(QwtAbstractScaleDraw::Ticks); + sd->setTickLength(QwtScaleDiv::MinorTick, d_plot->minorTickLength()); + sd->setTickLength(QwtScaleDiv::MediumTick, d_plot->minorTickLength()); + sd->setTickLength(QwtScaleDiv::MajorTick, d_plot->majorTickLength()); } sd->setMajorTicksStyle((ScaleDraw::TicksStyle)lst[i]); } @@ -499,6 +529,9 @@ void Graph::setAxisTicksLength(int axis, int majTicksType, int minTicksType, d_plot->setTickLength(minLength, majLength); ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw(axis)); + if (!sd) + return; + sd->setMajorTicksStyle((ScaleDraw::TicksStyle)majTicksType); sd->setMinorTicksStyle((ScaleDraw::TicksStyle)minTicksType); @@ -558,11 +591,16 @@ void Graph::showAxis(int axis, int type, const QString& formatInfo, Table *table if (!axisOn) return; - QList majTicksTypeList = d_plot->getMajorTicksType(); - QList minTicksTypeList = d_plot->getMinorTicksType(); - QwtScaleWidget *scale = dynamic_cast(d_plot->axisWidget(axis)); + if (!scale) + return; + ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw(axis)); + if (!sd) + return; + + QList majTicksTypeList = d_plot->getMajorTicksType(); + QList minTicksTypeList = d_plot->getMinorTicksType(); if (d_plot->axisEnabled (axis) == axisOn && majTicksTypeList[axis] == majTicksType && @@ -928,7 +966,7 @@ void Graph::updateSecondaryAxis(int axis) if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram){ Spectrogram *sp = dynamic_cast(it); - if (sp->colorScaleAxis() == axis) + if (!sp || sp->colorScaleAxis() == axis) return; } @@ -945,7 +983,10 @@ void Graph::updateSecondaryAxis(int axis) return; ScaleEngine *sc_engine = dynamic_cast(d_plot->axisScaleEngine(axis)); - sc_engine->clone(dynamic_cast(d_plot->axisScaleEngine(a))); + if (sc_engine) { + ScaleEngine *a_engine = dynamic_cast(d_plot->axisScaleEngine(a)); + sc_engine->clone(a_engine); + } /*QwtScaleEngine *qwtsc_engine = d_plot->axisScaleEngine(axis); ScaleEngine *sc_engine=dynamic_cast(qwtsc_engine); @@ -1074,17 +1115,23 @@ void Graph::niceLogScales(QwtPlot::Axis axis) double start = QMIN(scDiv->lBound(), scDiv->hBound()); double end = QMAX(scDiv->lBound(), scDiv->hBound()); - // log scales can't represent zero or negative values, 1e-10 as a low range is enough to display all data but still be plottable on a log scale + // log scales can't represent zero or negative values, 1e-10 as a + // low range is enough to display all data but still be plottable on + // a log scale start = start < 1e-90 ? 1e-10 : start; - // improve the scale labelling by ensuring that the graph starts and ends on numbers that can have major ticks e.g. 0.1 or 1 or 100 + // improve the scale labelling by ensuring that the graph starts and + // ends on numbers that can have major ticks e.g. 0.1 or 1 or 100 const double exponent = floor(log10(start)); start = pow(10.0, exponent); end = ceil(log10(end)); end = pow(10.0, end); ScaleEngine *scaleEng = dynamic_cast(d_plot->axisScaleEngine(axis)); + if (!scaleEng) + return; - // call the QTiPlot function set scale which takes many arguments, fill the arguments with the same settings the plot already has + // call the QTiPlot function set scale which takes many arguments, + // fill the arguments with the same settings the plot already has setScale(axis, start, end, axisStep(axis), scDiv->ticks(QwtScaleDiv::MajorTick).count(), d_plot->axisMaxMinor(axis), @@ -1140,6 +1187,9 @@ void Graph::setScale(QwtPlot::Axis axis, QwtScaleTransformation::Type scaleType) { //check if the scale is already of the desired type, ScaleEngine *sc_engine = dynamic_cast(d_plot->axisScaleEngine(axis)); + if (!sc_engine) + return; + QwtScaleTransformation::Type type = sc_engine->type(); if ( scaleType == QwtScaleTransformation::Log10 ) { @@ -1158,8 +1208,11 @@ void Graph::setScale(QwtPlot::Axis axis, QwtScaleTransformation::Type scaleType) double end = QMAX(scDiv->lBound(), scDiv->hBound()); ScaleEngine *scaleEng = dynamic_cast(d_plot->axisScaleEngine(axis)); + if (!scaleEng) + return; - // call the QTiPlot function set scale which takes many arguments, fill the arguments with the same settings the plot already has + // call the QTiPlot function set scale which takes many arguments, + // fill the arguments with the same settings the plot already has setScale(axis, start, end, axisStep(axis), scDiv->ticks(QwtScaleDiv::MajorTick).count(), d_plot->axisMaxMinor(axis), scaleType, @@ -1669,11 +1722,13 @@ void Graph::deselectCurves() foreach(QwtPlotItem *i, curves){ PlotCurve *c = dynamic_cast(i); DataCurve *dc = dynamic_cast(i); - if(dc && i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && - c->type() != Graph::Function && dc->hasSelectedLabels() ){ - dc->setLabelsSelected(false); - return; - } + if(c && dc && + i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && + c->type() != Graph::Function && dc->hasSelectedLabels() ) + { + dc->setLabelsSelected(false); + return; + } } } @@ -1683,8 +1738,9 @@ DataCurve* Graph::selectedCurveLabels() foreach(QwtPlotItem *i, curves){ PlotCurve *c = dynamic_cast(i); DataCurve *dc = dynamic_cast(i); - if(dc && i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && - c->type() != Graph::Function && dc->hasSelectedLabels()) + if(dc && c && + i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && + c->type() != Graph::Function && dc->hasSelectedLabels()) return dc; } return NULL; @@ -1752,6 +1808,9 @@ void Graph::removeLegend() void Graph::updateImageMarker(int x, int y, int w, int h) { ImageMarker* mrk = dynamic_cast(d_plot->marker(selectedMarker)); + if (!mrk) + return; + mrk->setRect(x, y, w, h); d_plot->replot(); emit modifiedGraph(); @@ -1932,6 +1991,9 @@ QString Graph::savePieCurveLayout() QString s="PieCurve\t"; QwtPieCurve *pie = dynamic_cast(curve(0)); + if (!pie) + return s; + s+= pie->title().text()+"\t"; QPen pen = pie->pen(); s+=QString::number(pen.widthF())+"\t"; @@ -1995,30 +2057,36 @@ QString Graph::saveCurveLayout(int index) if(style == VerticalBars || style == HorizontalBars || style == Histogram){ QwtBarCurve *b = dynamic_cast(c); - s+=QString::number(b->gap())+"\t"; - s+=QString::number(b->offset())+"\t"; + if (b) { + s+=QString::number(b->gap())+"\t"; + s+=QString::number(b->offset())+"\t"; + } } if (style == Histogram){ QwtHistogram *h = dynamic_cast(c); - s+=QString::number(h->autoBinning())+"\t"; - s+=QString::number(h->binSize())+"\t"; - s+=QString::number(h->begin())+"\t"; - s+=QString::number(h->end())+"\t"; + if (h) { + s+=QString::number(h->autoBinning())+"\t"; + s+=QString::number(h->binSize())+"\t"; + s+=QString::number(h->begin())+"\t"; + s+=QString::number(h->end())+"\t"; + } } else if(style == VectXYXY || style == VectXYAM){ VectorCurve *v = dynamic_cast(c); - s+=v->color().name()+"\t"; - s+=QString::number(v->width())+"\t"; - s+=QString::number(v->headLength())+"\t"; - s+=QString::number(v->headAngle())+"\t"; - s+=QString::number(v->filledArrowHead())+"\t"; - - QStringList colsList = v->plotAssociation().split(",", QString::SkipEmptyParts); - s+=colsList[2].remove("(X)").remove("(A)")+"\t"; - s+=colsList[3].remove("(Y)").remove("(M)"); - if (style == VectXYAM) - s+="\t"+QString::number(v->position()); - s+="\t"; + if (v) { + s+=v->color().name()+"\t"; + s+=QString::number(v->width())+"\t"; + s+=QString::number(v->headLength())+"\t"; + s+=QString::number(v->headAngle())+"\t"; + s+=QString::number(v->filledArrowHead())+"\t"; + + QStringList colsList = v->plotAssociation().split(",", QString::SkipEmptyParts); + s+=colsList[2].remove("(X)").remove("(A)")+"\t"; + s+=colsList[3].remove("(Y)").remove("(M)"); + if (style == VectXYAM) + s+="\t"+QString::number(v->position()); + s+="\t"; + } } else if(style == Box){ BoxCurve *b = static_cast(c); s+=QString::number(SymbolBox::symbolIndex(b->maxStyle()))+"\t"; @@ -2780,7 +2848,9 @@ PlotCurve* Graph::insertCurve(Table* w, const QString& xColName, const QString& c = new QwtBarCurve(QwtBarCurve::Horizontal, w, xColName, yColName, startRow, endRow); } else if (style == Histogram){ c = new QwtHistogram(w, xColName, yColName, startRow, endRow); - dynamic_cast(c)->initData(Y.data(), size); + QwtHistogram *histo = dynamic_cast(c); + if (histo) + histo->initData(Y.data(), size); } else c = new DataCurve(w, xColName, yColName, startRow, endRow); @@ -3024,9 +3094,13 @@ void Graph::removePie() if (d_legend) d_legend->setText(QString::null); - QList labels = dynamic_cast(curve(0))->labelsList(); + QwtPieCurve *pieCurve = dynamic_cast(curve(0)); + if (!pieCurve) + return; + + QList labels = pieCurve->labelsList(); foreach(PieLabel *l, labels) - l->setPieCurve(0); + l->setPieCurve(0); d_plot->removeCurve(c_keys[0]); d_plot->replot(); @@ -3054,7 +3128,9 @@ void Graph::removeCurves(const QString& s) if (it->rtti() != QwtPlotItem::Rtti_PlotCurve) continue; - if (dynamic_cast(it)->type() == Function) + + PlotCurve *pc = dynamic_cast(it); + if (!pc || pc->type() == Function) continue; DataCurve * dc = dynamic_cast(it); @@ -3091,9 +3167,10 @@ void Graph::removeCurve(int index) if (it->rtti() != QwtPlotItem::Rtti_PlotSpectrogram) { - if (dynamic_cast(it)->type() == ErrorBars) - dynamic_cast(it)->detachFromMasterCurve(); - else if (c->type() != Function && dc){ + if (c->type() == ErrorBars) { + QwtErrorPlotCurve *epc = dynamic_cast(it); + epc->detachFromMasterCurve(); + } else if (c->type() != Function && dc) { dc->clearErrorBars(); dc->clearLabels(); } @@ -3685,9 +3762,13 @@ void Graph::scaleFonts(double factor) QObjectList lst = d_plot->children(); foreach(QObject *o, lst){ if (o->inherits("LegendWidget")){ - QFont font = dynamic_cast(o)->font(); + LegendWidget *lw = dynamic_cast(o); + if (!lw) + continue; + + QFont font = lw->font(); font.setPointSizeFloat(factor*font.pointSizeFloat()); - dynamic_cast(o)->setFont(font); + lw->setFont(font); } } @@ -4033,9 +4114,14 @@ void Graph::copy(Graph* g) QwtPlotItem *it = (QwtPlotItem *)g->plotItem(i); if (it->rtti() == QwtPlotItem::Rtti_PlotCurve){ DataCurve *cv = dynamic_cast(it); - if (!cv) continue; + if (!cv) + continue; + + PlotCurve *pc = dynamic_cast(it); + if (!pc) + continue; + int n = cv->dataSize(); - int style = dynamic_cast(it)->type(); QVector x(n); QVector y(n); for (int j=0; jy(j); } + int style = pc->type(); + PlotCurve *c = 0; c_keys.resize(++n_curves); c_type.resize(n_curves); @@ -4054,43 +4142,73 @@ void Graph::copy(Graph* g) } else if (style == Function) { c = new FunctionCurve(cv->title().text()); c_keys[i] = d_plot->insertCurve(c); - dynamic_cast(c)->copy(dynamic_cast(cv)); + FunctionCurve *fc = dynamic_cast(c); + if (fc) { + FunctionCurve *fcCV = dynamic_cast(cv); + if (fcCV) + fc->copy(fcCV); + } } else if (style == VerticalBars || style == HorizontalBars) { - c = new QwtBarCurve(dynamic_cast(cv)->orientation(), cv->table(), cv->xColumnName(), - cv->title().text(), cv->startRow(), cv->endRow()); - c_keys[i] = d_plot->insertCurve(c); - (dynamic_cast(c))->copy(dynamic_cast(cv)); + QwtBarCurve *bc = dynamic_cast(c); + if (bc) { + c = new QwtBarCurve(bc->orientation(), cv->table(), cv->xColumnName(), + cv->title().text(), cv->startRow(), cv->endRow()); + c_keys[i] = d_plot->insertCurve(c); + + const QwtBarCurve *cvBC = dynamic_cast(cv); + if (cvBC) + bc->copy(cvBC); + } } else if (style == ErrorBars) { QwtErrorPlotCurve *er = dynamic_cast(cv); - DataCurve *master_curve = masterCurve(er); - if (master_curve) { - c = new QwtErrorPlotCurve(cv->table(), cv->title().text()); - c_keys[i] = d_plot->insertCurve(c); - dynamic_cast(c)->copy(er); - dynamic_cast(c)->setMasterCurve(master_curve); + if (er) { + DataCurve *master_curve = masterCurve(er); + if (master_curve) { + c = new QwtErrorPlotCurve(cv->table(), cv->title().text()); + c_keys[i] = d_plot->insertCurve(c); + QwtErrorPlotCurve *epc = dynamic_cast(c); + if (epc) { + epc->copy(er); + epc->setMasterCurve(master_curve); + } + } } } else if (style == Histogram) { QwtHistogram *h = dynamic_cast(cv); - if (h->matrix()) + if (h && h->matrix()) c = new QwtHistogram(h->matrix()); else c = new QwtHistogram(cv->table(), cv->xColumnName(), cv->title().text(), cv->startRow(), cv->endRow()); c_keys[i] = d_plot->insertCurve(c); - dynamic_cast(c)->copy(h); + + QwtHistogram *cQH = dynamic_cast(c); + if (cQH) + cQH->copy(h); } else if (style == VectXYXY || style == VectXYAM) { VectorCurve::VectorStyle vs = VectorCurve::XYXY; if (style == VectXYAM) vs = VectorCurve::XYAM; - c = new VectorCurve(vs, cv->table(), cv->xColumnName(), cv->title().text(), - dynamic_cast(cv)->vectorEndXAColName(), - dynamic_cast(cv)->vectorEndYMColName(), - cv->startRow(), cv->endRow()); - c_keys[i] = d_plot->insertCurve(c); - dynamic_cast(c)->copy(dynamic_cast(cv)); + VectorCurve *cvVC = dynamic_cast(cv); + if (cvVC) { + c = new VectorCurve(vs, cv->table(), cv->xColumnName(), cv->title().text(), + cvVC->vectorEndXAColName(), + cvVC->vectorEndYMColName(), + cv->startRow(), cv->endRow()); + c_keys[i] = d_plot->insertCurve(c); + + VectorCurve *cVC = dynamic_cast(c); + if (cVC) // it really should be, just did 'c = new VectorCurve(...' + cVC->copy(cvVC); + } } else if (style == Box) { c = new BoxCurve(cv->table(), cv->title().text(), cv->startRow(), cv->endRow()); c_keys[i] = d_plot->insertCurve(c); - dynamic_cast(c)->copy(dynamic_cast(cv)); + BoxCurve *bc = dynamic_cast(c); + if (bc) { + const BoxCurve *cvBC = dynamic_cast(cv); + if (cvBC) + bc->copy(cvBC); + } QwtSingleArrayData dat(x[0], y, n); c->setData(dat); } else { @@ -4100,12 +4218,23 @@ void Graph::copy(Graph* g) if (c_type[i] != Box && c_type[i] != ErrorBars){ c->setData(x.data(), y.data(), n); - if (c->type() != Function && c->type() != Pie) - dynamic_cast(c)->clone(cv); - else if (c->type() == Pie) - dynamic_cast(c)->clone(dynamic_cast(cv)); + if (c->type() != Function && c->type() != Pie) { + DataCurve *dc = dynamic_cast(c); + if (dc) + dc->clone(cv); + } else if (c->type() == Pie) { + QwtPieCurve *cPie = dynamic_cast(c); + if (cPie) { + QwtPieCurve *cvPie = dynamic_cast(cv); + if (cvPie) + cPie->clone(cvPie); + } + } } + if (!c) + continue; + c->setPen(cv->pen()); c->setBrush(cv->brush()); c->setStyle(cv->style()); @@ -4122,8 +4251,11 @@ void Graph::copy(Graph* g) QListlst = g->fitCurvesList(); if (lst.contains(dynamic_cast(it))) d_fit_curves << c; - }else if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram){ - Spectrogram *sp = (dynamic_cast(it))->copy(); + } else if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram){ + Spectrogram *spc = (dynamic_cast(it)); + if (!spc) + continue; + Spectrogram *sp = spc->copy(); c_keys.resize(++n_curves); c_keys[i] = d_plot->insertCurve(sp); @@ -4157,7 +4289,7 @@ void Graph::copy(Graph* g) continue; ScaleDraw *sdg = dynamic_cast(g->plotWidget()->axisScaleDraw (i)); - if (sdg->hasComponent(QwtAbstractScaleDraw::Labels)) + if (sdg && sdg->hasComponent(QwtAbstractScaleDraw::Labels)) { ScaleDraw::ScaleType type = sdg->scaleType(); if (type == ScaleDraw::Numeric) @@ -4168,9 +4300,10 @@ void Graph::copy(Graph* g) setLabelsMonthFormat(i, sdg->nameFormat()); else if (type == ScaleDraw::Time || type == ScaleDraw::Date) setLabelsDateTimeFormat(i, type, sdg->formatString()); - else{ + else { ScaleDraw *sd = dynamic_cast(plot->axisScaleDraw(i)); - d_plot->setAxisScaleDraw(i, new ScaleDraw(d_plot, sd->labelsList(), sd->formatString(), sd->scaleType())); + if (sd) + d_plot->setAxisScaleDraw(i, new ScaleDraw(d_plot, sd->labelsList(), sd->formatString(), sd->scaleType())); } } else { ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw (i)); @@ -4182,9 +4315,6 @@ void Graph::copy(Graph* g) if (!se) continue; - ScaleEngine *sc_engine = dynamic_cast(d_plot->axisScaleEngine(i)); - sc_engine->clone(se); - int majorTicks = plot->axisMaxMajor(i); int minorTicks = plot->axisMaxMinor(i); d_plot->setAxisMaxMajor (i, majorTicks); @@ -4192,6 +4322,12 @@ void Graph::copy(Graph* g) double step = g->axisStep(i); d_user_step[i] = step; + + ScaleEngine *sc_engine = dynamic_cast(d_plot->axisScaleEngine(i)); + if (!sc_engine) + continue; + + sc_engine->clone(se); const QwtScaleDiv *sd = plot->axisScaleDiv(i); QwtScaleDiv div = sc_engine->divideScale (QMIN(sd->lBound(), sd->hBound()), QMAX(sd->lBound(), sd->hBound()), majorTicks, minorTicks, step); @@ -4434,6 +4570,9 @@ void Graph::guessUniqueCurveLayout(int& colorIndex, int& symbolIndex) if (curve_index >= 0 && c_type[curve_index] == ErrorBars) {// find out the pen color of the master curve QwtErrorPlotCurve *er = dynamic_cast(d_plot->curve(c_keys[curve_index])); + if (!er) + return; + DataCurve *master_curve = er->masterCurve(); if (master_curve){ colorIndex = ColorBox::colorIndex(master_curve->pen().color()); @@ -4739,7 +4878,11 @@ QString Graph::axisFormatInfo(int axis) if (axis < 0 || axis > QwtPlot::axisCnt) return QString(); - return dynamic_cast(d_plot->axisScaleDraw(axis))->formatString(); + ScaleDraw *sd = dynamic_cast(d_plot->axisScaleDraw(axis)); + if (sd) + return sd->formatString(); + else + return "Not available!"; } void Graph::updateCurveNames(const QString& oldName, const QString& newName, bool updateTableName) @@ -4834,12 +4977,14 @@ void Graph::setGrayScale() QwtPlotItem * it = plotItem(i); if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram) { - dynamic_cast(it)->setGrayScale(); + Spectrogram *spec = dynamic_cast(it); + if (spec) + spec->setGrayScale(); continue; } PlotCurve *c = dynamic_cast(it); - if (c->type() == ErrorBars) + if (!c || c->type() == ErrorBars) continue; QPen pen = c->pen(); @@ -4877,9 +5022,12 @@ void Graph::setGrayScale() continue; PlotCurve *c = dynamic_cast(it); - if (c->type() == ErrorBars) + if (c && c->type() == ErrorBars) { - QwtErrorPlotCurve *er = dynamic_cast(it); // QtiPlot: ErrorBarsCurve *er = (ErrorBarsCurve *) it; + // QtiPlot: ErrorBarsCurve *er = (ErrorBarsCurve *) it; + QwtErrorPlotCurve *er = dynamic_cast(it); + if (!er) + continue; DataCurve* mc = er->masterCurve(); if (mc) er->setColor(mc->pen().color()); @@ -4909,7 +5057,7 @@ void Graph::setIndexedColors() continue; PlotCurve *c = dynamic_cast(it); - if (c->type() == ErrorBars) + if (!c || c->type() == ErrorBars) continue; QPen pen = c->pen(); @@ -4943,7 +5091,11 @@ void Graph::setIndexedColors() PlotCurve *c = dynamic_cast(it); if (c->type() == ErrorBars) { - QwtErrorPlotCurve *er = dynamic_cast(it); // QtiPlot: ErrorBarsCurve *er = (ErrorBarsCurve *) it; + // QtiPlot: ErrorBarsCurve *er = (ErrorBarsCurve *) it; + QwtErrorPlotCurve *er = dynamic_cast(it); + if (!er) + continue; + DataCurve* mc = er->masterCurve(); if (mc) er->setColor(mc->pen().color()); @@ -4964,7 +5116,8 @@ DataCurve* Graph::masterCurve(QwtErrorPlotCurve *er) continue; if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram) continue; - if (dynamic_cast(it)->type() == Function) + PlotCurve *pc = dynamic_cast(it); + if (!pc || pc->type() == Function) continue; DataCurve* dc = dynamic_cast(it); @@ -4986,7 +5139,8 @@ DataCurve* Graph::masterCurve(const QString& xColName, const QString& yColName) continue; if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram) continue; - if (dynamic_cast(it)->type() == Function) + PlotCurve *pc = dynamic_cast(it); + if (!pc || pc->type() == Function) continue; DataCurve* dc = dynamic_cast(it); @@ -5139,8 +5293,10 @@ void Graph::setCurrentFont(const QFont& f) QList curves = d_plot->curvesList(); foreach(QwtPlotItem *i, curves){ DataCurve* dc = dynamic_cast(i); - if(dc && i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && - dynamic_cast(i)->type() != Graph::Function){ + PlotCurve* pc = dynamic_cast(i); + if(pc && dc + && i->rtti() != QwtPlotItem::Rtti_PlotSpectrogram && + pc->type() != Graph::Function){ if(dc->hasSelectedLabels()){ dc->setLabelsFont(f); d_plot->replot(); @@ -5921,8 +6077,13 @@ void Graph::loadFromProject(const std::string& lines, ApplicationWindow* app, co if(plotType == Graph::Histogram) { QwtHistogram* h = dynamic_cast(curve(curveID)); - h->setBinning(curveValues[17].toInt(),curveValues[18].toDouble(),curveValues[19].toDouble(),curveValues[20].toDouble()); - h->loadData(); + if (h) { + h->setBinning(curveValues[17].toInt(), + curveValues[18].toDouble(), + curveValues[19].toDouble(), + curveValues[20].toDouble()); + h->loadData(); + } } if(plotType == Graph::VerticalBars diff --git a/Code/Mantid/MantidPlot/src/PlotDialog.cpp b/Code/Mantid/MantidPlot/src/PlotDialog.cpp index eae4be1e6635..839fd3f965ba 100644 --- a/Code/Mantid/MantidPlot/src/PlotDialog.cpp +++ b/Code/Mantid/MantidPlot/src/PlotDialog.cpp @@ -283,6 +283,9 @@ void PlotDialog::setEquidistantLevels() return; CurveTreeItem *item = dynamic_cast(it); + if (!item) + return; + QwtPlotItem *plotItem = dynamic_cast(item->plotItem()); if (!plotItem) return; @@ -317,30 +320,37 @@ void PlotDialog::showPlotAssociations(QTreeWidgetItem *item, int) if (item->type() != CurveTreeItem::PlotCurveTreeItem) return; - QwtPlotItem *it = dynamic_cast(dynamic_cast(item)->plotItem()); // crazy + CurveTreeItem *ctit = dynamic_cast(item); + if (!ctit) + return; + QwtPlotItem *it = dynamic_cast(ctit->plotItem()); if (!it) return; if (it->rtti() == QwtPlotItem::Rtti_PlotSpectrogram) { Spectrogram *sp = dynamic_cast(it); - if (sp->matrix()) + if (sp && sp->matrix()) sp->matrix()->showMaximized(); return; } hide(); - if (dynamic_cast(it)->type() == Graph::Function) + PlotCurve *pc = dynamic_cast(it); + if (!pc) + return; + if (pc->type() == Graph::Function) { - FunctionDialog *fd = d_app->showFunctionDialog((dynamic_cast(item))->graph(), - dynamic_cast(item)->plotItemIndex()); + FunctionDialog *fd = d_app->showFunctionDialog(ctit->graph(), + ctit->plotItemIndex()); + if (fd) connect((QObject *) fd, SIGNAL(destroyed()), this, SLOT(show())); } else { - AssociationsDialog* ad = d_app->showPlotAssociations( - dynamic_cast(item)->plotItemIndex()); + AssociationsDialog* ad = d_app->showPlotAssociations(ctit->plotItemIndex()); + if (ad) connect((QObject *) ad, SIGNAL(destroyed()), this, SLOT(show())); } @@ -356,7 +366,10 @@ void PlotDialog::editCurve() return; int index = item->plotItemIndex(); - int curveType = dynamic_cast(item->plotItem())->type(); + PlotCurve* pc = dynamic_cast(item->plotItem()); + if (!pc) + return; + int curveType = pc->type(); hide(); @@ -403,6 +416,9 @@ void PlotDialog::changePlotType(int plotType) insertTabs(curveType); VectorCurve *v = dynamic_cast(item->plotItem()); + if (!v) + return; + if (plotType) { graph->setCurveType(item->plotItemIndex(), Graph::VectXYAM); @@ -1415,7 +1431,10 @@ void PlotDialog::selectCurve(int index) QTreeWidgetItem *item = layerItem->child(index); if (item) { - (dynamic_cast(item))->setActive(true); + CurveTreeItem *ctit = dynamic_cast(item); + if (!ctit) + return; + ctit->setActive(true); listBox->setCurrentItem(item); } } @@ -1431,7 +1450,11 @@ void PlotDialog::showStatistics() if (it->type() != CurveTreeItem::PlotCurveTreeItem) return; - QwtPlotItem *plotItem = dynamic_cast(dynamic_cast(it)->plotItem()); + CurveTreeItem *ctit = dynamic_cast(it); + if (!ctit) + return; + + QwtPlotItem *plotItem = dynamic_cast(ctit->plotItem()); if (!plotItem) return; @@ -1486,7 +1509,12 @@ void PlotDialog::contextMenuEvent(QContextMenuEvent *e) return; if (item->type() != CurveTreeItem::PlotCurveTreeItem) return; - QwtPlotItem *it = dynamic_cast(dynamic_cast(item)->plotItem()); + + CurveTreeItem *ctit = dynamic_cast(item); + if (!ctit) + return; + + QwtPlotItem *it = dynamic_cast(ctit->plotItem()); if (!it) return; @@ -1499,7 +1527,10 @@ void PlotDialog::contextMenuEvent(QContextMenuEvent *e) if (it->rtti() == QwtPlotItem::Rtti_PlotCurve) { - if (dynamic_cast(it)->type() == Graph::Function) + PlotCurve *pc = dynamic_cast(it); + if (!pc) + return; + if (pc->type() == Graph::Function) contextMenu.insertItem(tr("&Edit..."), this, SLOT(editCurve())); else contextMenu.insertItem(tr("&Plot Associations..."), this, SLOT(editCurve())); @@ -1548,18 +1579,32 @@ void PlotDialog::updateTabWindow(QTreeWidgetItem *currentItem, QTreeWidgetItem * forceClearTabs = true; } - if (previousItem->type() == CurveTreeItem::PlotCurveTreeItem) - dynamic_cast(previousItem)->setActive(false); - else if (previousItem->type() == LayerItem::LayerTreeItem) - dynamic_cast(previousItem)->setActive(false); + if (previousItem->type() == CurveTreeItem::PlotCurveTreeItem) { + CurveTreeItem *prev = dynamic_cast(previousItem); + if (!prev) + return; + prev->setActive(false); + } else if (previousItem->type() == LayerItem::LayerTreeItem) { + LayerItem *prev = dynamic_cast(previousItem); + if (!prev) + return; + prev->setActive(false); + } boxPlotType->blockSignals(true); if (currentItem->type() == CurveTreeItem::PlotCurveTreeItem) { CurveTreeItem *curveItem = dynamic_cast(currentItem); + if (!curveItem) + return; + + CurveTreeItem *pi = dynamic_cast(previousItem); + if (!pi) + return; + if (previousItem->type() != CurveTreeItem::PlotCurveTreeItem - || dynamic_cast(previousItem)->plotItemType() != curveItem->plotItemType() + || pi->plotItemType() != curveItem->plotItemType() || forceClearTabs) { clearTabWidget(); @@ -1682,7 +1727,11 @@ void PlotDialog::insertTabs(int plot_type) if (!item || item->type() != CurveTreeItem::PlotCurveTreeItem) return; - const DataCurve *c = dynamic_cast((dynamic_cast(item))->plotItem()); + CurveTreeItem *ctit = dynamic_cast(item); + if (!ctit) + return; + + const DataCurve *c = dynamic_cast(ctit->plotItem()); if (!c) return; if (c && c->type() != Graph::Function) @@ -1885,6 +1934,8 @@ void PlotDialog::setActiveCurve(CurveTreeItem *item) btnEditCurve->hide(); Spectrogram *sp = dynamic_cast(i); + if (!sp) + return; imageGroupBox->setChecked(sp->testDisplayMode(QwtPlotSpectrogram::ImageMode)); grayScaleBox->setChecked(sp->colorMapPolicy() == Spectrogram::GrayScale); @@ -1942,7 +1993,11 @@ void PlotDialog::setActiveCurve(CurveTreeItem *item) privateTabWidget->showPage(labelsPage); return; } + PlotCurve *c = dynamic_cast(i); + if (!c) + return; + if (c->type() == Graph::Function) btnEditCurve->setText(tr("&Edit...")); else @@ -1952,6 +2007,8 @@ void PlotDialog::setActiveCurve(CurveTreeItem *item) if (curveType == Graph::Pie) { QwtPieCurve *pie = dynamic_cast(i); + if (!pie) + return; boxPiePattern->setPattern(pie->pattern()); boxPieLineWidth->setValue(pie->pen().widthF()); boxPieLineColor->setColor(pie->pen().color()); @@ -2298,6 +2355,9 @@ bool PlotDialog::acceptParams() return false; CurveTreeItem *item = dynamic_cast(it); + if (!item) + return false; + QwtPlotItem *plotItem = dynamic_cast(item->plotItem()); if (!plotItem) return false; @@ -2479,6 +2539,9 @@ bool PlotDialog::acceptParams() else if (privateTabWidget->currentPage() == piePage) { QwtPieCurve *pie = dynamic_cast(plotItem); + if (!pie) + return false; + pie->setPen( QPen(boxPieLineColor->color(), boxPieLineWidth->value(), Graph::getPenStyle(boxPieLineStyle->currentIndex()))); @@ -2488,6 +2551,9 @@ bool PlotDialog::acceptParams() else if (privateTabWidget->currentPage() == pieGeometryPage) { QwtPieCurve *pie = dynamic_cast(plotItem); + if (!pie) + return false; + pie->setViewAngle(boxPieViewAngle->value()); pie->setThickness(boxPieThickness->value()); pie->setRadius(boxRadius->value()); @@ -2498,6 +2564,9 @@ bool PlotDialog::acceptParams() else if (privateTabWidget->currentPage() == pieLabelsPage) { QwtPieCurve *pie = dynamic_cast(plotItem); + if (!pie) + return false; + pie->setLabelsAutoFormat(pieAutoLabelsBox->isChecked()); pie->setLabelValuesFormat(boxPieValues->isChecked()); pie->setLabelPercentagesFormat(boxPiePercentages->isChecked()); @@ -3002,8 +3071,12 @@ void PlotDialog::chooseLabelsFont() if (!item || item->type() != CurveTreeItem::PlotCurveTreeItem) return; - QwtPlotItem *i = dynamic_cast(item)->plotItem(); - Graph *graph = dynamic_cast(item)->graph(); + CurveTreeItem* ctit = dynamic_cast(item); + if (!ctit) + return; + + QwtPlotItem *i = ctit->plotItem(); + Graph *graph = ctit->graph(); if (!i || !graph) return; @@ -3075,6 +3148,9 @@ void LayerItem::insertCurvesList() { PlotCurve *c = dynamic_cast(it); DataCurve* dc = dynamic_cast(it); + if (!c || !dc) + continue; + if (dc && c->type() != Graph::Function && dc->table()) { QString s = dc->plotAssociation(); @@ -3110,6 +3186,16 @@ CurveTreeItem::CurveTreeItem(QwtPlotItem *curve, LayerItem *parent, const QStrin setIcon(0, getQPixmap("graph_disabled_xpm")); } +Graph* CurveTreeItem::graph() +{ + LayerItem *l = dynamic_cast(parent()); + if (l) { + return l->graph(); + } else { + return NULL; + } +} + void CurveTreeItem::setActive(bool on) { if (on) diff --git a/Code/Mantid/MantidPlot/src/PlotDialog.h b/Code/Mantid/MantidPlot/src/PlotDialog.h index cebfeacc1dce..f5e1d9017a55 100644 --- a/Code/Mantid/MantidPlot/src/PlotDialog.h +++ b/Code/Mantid/MantidPlot/src/PlotDialog.h @@ -298,7 +298,7 @@ class CurveTreeItem : public QTreeWidgetItem enum {PlotCurveTreeItem = 1002}; CurveTreeItem(QwtPlotItem *curve, LayerItem *parent, const QString& s); - Graph* graph(){return dynamic_cast(parent())->graph();}; + Graph* graph(); void setActive(bool on); QwtPlotItem *plotItem() const{ return d_curve; }; diff --git a/Code/Mantid/MantidPlot/test/MantidPlot1DPlotTest.py b/Code/Mantid/MantidPlot/test/MantidPlot1DPlotTest.py index 829047a78158..9f30dff27a0b 100644 --- a/Code/Mantid/MantidPlot/test/MantidPlot1DPlotTest.py +++ b/Code/Mantid/MantidPlot/test/MantidPlot1DPlotTest.py @@ -41,7 +41,6 @@ def tearDown(self): def test_plotSpectrum_errorBars(self): g = plotSpectrum("fake", 0, error_bars=True) - screenshot(g, "plotSpectrum_errorBars", "Call to plotSpectrum() of 1 spectrum, with error bars.") self.g = g def test_plotSpectrum_fromWorkspaceProxy(self): @@ -51,7 +50,6 @@ def test_plotSpectrum_fromWorkspaceProxy(self): def test_plotSpectrum_severalSpectra(self): g = plotSpectrum("fake", [0, 1]) - screenshot(g, "plotSpectrum_severalSpectra", "Call to plotSpectrum() of 2 spectra, no error bars.") self.g = g def test_Customized1DPlot(self): @@ -65,7 +63,6 @@ def test_Customized1DPlot(self): l.setTitleAlignment(QtCore.Qt.AlignLeft) l.setScale(2, 0.0, 3.0) l.setAntialiasing(True) - screenshot(g, "Customized1DPlot", "1D plot of a spectrum, with error bars, an orange line of width 2, a custom title in red Arial font, with X from 0 to 3") self.g = g def test_standard_plot_command(self): diff --git a/Code/Mantid/MantidPlot/test/MantidPlotProxiesTest.py b/Code/Mantid/MantidPlot/test/MantidPlotProxiesTest.py index 9c08fd1bcc6e..b1c355684955 100644 --- a/Code/Mantid/MantidPlot/test/MantidPlotProxiesTest.py +++ b/Code/Mantid/MantidPlot/test/MantidPlotProxiesTest.py @@ -121,7 +121,6 @@ def test_closing_MantidMatrix_plotGraph2D(self): mm = importMatrixWorkspace("fake", visible=True) g = mm.plotGraph2D() spec = g.activeLayer().spectrogram() - screenshot(g, "MantidMatrix.plotGraph2D", "Call to MantidMatrix.plotGraph2D() on a workspace.") self.try_closing(mm, "importMatrixWorkspace()") self.assertTrue(g._getHeldObject() is None, "Deleted graph safely when the parent MantidMatrix was deleted") self.assertTrue(spec._getHeldObject() is None, "Deleted spectrogram safely") @@ -135,13 +134,11 @@ def test_closing_MantidMatrix_plotGraph3D(self): def test_closing_getInstrumentView(self): iv = getInstrumentView("IRS26173") - screenshot(iv, "getInstrumentView", "Call to getInstrumentView() on a workspace.") self.try_closing(iv, "getInstrumentView()") def test_convertToWaterfall(self): g = plot(workspace("IRS26173"),(0,1,2,3,4)) convertToWaterfall(g) - screenshot(g, "convertToWaterfall", "Call to convertToWaterfall() on a workspace.") self.try_closing(g, "convertToWaterfall()") def test_dock_method_produces_docked_window_on_matrix(self): diff --git a/Code/Mantid/MantidPlot/test/MantidPlotSliceViewerTest.py b/Code/Mantid/MantidPlot/test/MantidPlotSliceViewerTest.py index 734da230cc4f..27961933c3f1 100644 --- a/Code/Mantid/MantidPlot/test/MantidPlotSliceViewerTest.py +++ b/Code/Mantid/MantidPlot/test/MantidPlotSliceViewerTest.py @@ -41,7 +41,6 @@ def test_mouseMove(self): svw = plotSlice('uniform') svw.setSlicePoint(2, 2.5) moveMouseToCentre(svw._getHeldObject()) - screenshot(svw, "SliceViewer", "SliceViewer with mouse at center, showing coordinates.") def test_plotSlice_empty(self): """ Plot slice on an empty workspace """ @@ -68,7 +67,6 @@ def test_plot4D_workspace(self): svw.setSlicePoint(3, 7.5) self.assertAlmostEqual(svw.getSlicePoint(2), 2.5, 3) self.assertAlmostEqual(svw.getSlicePoint(3), 7.5, 3) - screenshot(svw, "SliceViewer_4D", "SliceViewer open to a 4D workspace; z=2.5, e=7.5.") svw.setXYDim("z", "e") self.assertEqual(svw.getDimX(), 2) self.assertEqual(svw.getDimY(), 3) @@ -114,10 +112,16 @@ def test_saveImage(self): dest = get_screenshot_dir() if not dest is None: filename = "SliceViewerSaveImage" - svw.saveImage(os.path.join(dest, filename+".png") ) - # Add to the HTML report - screenshot(None, filename, "SliceViewer: result of saveImage(). Should be only the 2D plot with a color bar (no GUI elements)", - png_exists=True) + filepath = os.path.join(dest, filename+".png") + # Remove any old file + if os.path.isfile(filepath): + os.remove(filepath) + # Save + svw.saveImage(filepath) + self.assertEquals(os.path.isfile(filepath), True, + "Screenshot was not written out as expected.") + if os.path.isfile(filepath): + os.remove(filepath) def test_showLine(self): svw = plotSlice('uniform') @@ -133,7 +137,6 @@ def test_showLine(self): self.assertAlmostEqual(liner.getBinWidth(), 0.05, 3) # Width was set self.assertAlmostEqual(liner.getPlanarWidth(), 0.88, 3) - screenshot(svw, "SliceViewer_and_LineViewer", "SliceViewer with LineViewer open, showing line overlay and integrated line.") # Now turn it off svw.toggleLineMode(False) self.assertFalse( liner.isVisible(), "LineViewer was hidden") diff --git a/Code/Mantid/MantidPlot/test/mantidplottests.py b/Code/Mantid/MantidPlot/test/mantidplottests.py index 39d59919da8f..f5b14b0c5dba 100644 --- a/Code/Mantid/MantidPlot/test/mantidplottests.py +++ b/Code/Mantid/MantidPlot/test/mantidplottests.py @@ -46,7 +46,7 @@ def runTests(classname): if src is None: runner = unittest.TextTestRunner() else: - sys.path.append( os.path.join(src, "TestingTools/unittest-xml-reporting/src") ) + sys.path.append( os.path.join(src, "Testing", "Tools", "unittest-xml-reporting", "src") ) import xmlrunner runner = xmlrunner.XMLTestRunner(output='Testing') diff --git a/Code/Mantid/MantidQt/CustomDialogs/inc/MantidQtCustomDialogs/PlotAsymmetryByLogValueDialog.ui b/Code/Mantid/MantidQt/CustomDialogs/inc/MantidQtCustomDialogs/PlotAsymmetryByLogValueDialog.ui index 5d891ba75661..57ba9eee696c 100644 --- a/Code/Mantid/MantidQt/CustomDialogs/inc/MantidQtCustomDialogs/PlotAsymmetryByLogValueDialog.ui +++ b/Code/Mantid/MantidQt/CustomDialogs/inc/MantidQtCustomDialogs/PlotAsymmetryByLogValueDialog.ui @@ -1,351 +1,373 @@ - PlotAsymmetryByLogValueDialog - - - - 0 - 0 - 479 - 544 - - - - PlotAsymmetryByLogValue - - - - - - - - + PlotAsymmetryByLogValueDialog + + + + 0 + 0 + 479 + 544 + + + + PlotAsymmetryByLogValue + + - - - - - First run + + + - - - - - - - - - Browse - - - - + + + + + + + First run + + + + + + + + + + Browse + + + + + + + + + + + Last run + + + + + + + + + + Browse + + + + + + + + + + + Log value + + + + + + + + 0 + 0 + + + + true + + + + + + + + + + Function + + + + + + + + 0 + 0 + + + + + + + + + + + + + + Output workspace + + + + + + + + + + + + Type + + + + + + + + 0 + 0 + + + + + + + + + + - - - - - Last run - - - - - - - - - - Browse + + + Periods - - - + + + + + + + Red + + + + + + + + + + Green + + + + + + + + + + - - - - - Log value - - - - - - - - 0 - 0 - - - - true + + + Grouping - - - + + + + + + + Forward spectra + + + + + + + false + + + + + + + Backward spectra + + + + + + + + + + - - - - - Output workspace + + + Time - - - - - - - - - - - Type - - - - - - - - 0 - 0 - - - - - - - + + + + + + + Min + + + + + + + + + + Max + + + + + + + + + + - - - - - - - Periods - - - - - - - Red + + + Dead Time Correction - - - - - - - - - Green - - - - - - - + + + + + QLayout::SetDefaultConstraint + + + + + Type + + + + + + + + 0 + 0 + + + + + + + + + + + 0 + + + + + File + + + + + + + + + + Browse + + + + + + + + - - - - - - - Grouping - - - - - - - Forward spectra - - - - - - - false - - - - - - - Backward spectra - - - - - - - - - - - - - - - Time - - - - - - - - Min - - - - - - - - - - Max + + + 6 - - - - - - - - - - - - - - Dead Time Correction - - - - - - QLayout::SetDefaultConstraint - - - - - Type - - - - - - - - 0 - 0 - - - - - - - - - - - 0 - - - - - File - - - - - - - - - - Browse - - - + + + + + 31 + 26 + + + + ? + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + OK + + + + + + + Cancel + + + - - - - - - - - 6 - - - - - - 31 - 26 - - - - ? - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - firstRunBox - browseFirstButton - lastRunBox - browseLastButton - logBox - outWSBox - redBox - forwardBox - timeMinBox - - - + + + firstRunBox + browseFirstButton + lastRunBox + browseLastButton + logBox + outWSBox + redBox + forwardBox + timeMinBox + + + diff --git a/Code/Mantid/MantidQt/CustomDialogs/src/PlotAsymmetryByLogValueDialog.cpp b/Code/Mantid/MantidQt/CustomDialogs/src/PlotAsymmetryByLogValueDialog.cpp index 3d6fe444ee56..9d9acccbb437 100644 --- a/Code/Mantid/MantidQt/CustomDialogs/src/PlotAsymmetryByLogValueDialog.cpp +++ b/Code/Mantid/MantidQt/CustomDialogs/src/PlotAsymmetryByLogValueDialog.cpp @@ -66,6 +66,7 @@ void PlotAsymmetryByLogValueDialog::initLayout() tie(m_uiForm.firstRunBox, "FirstRun", m_uiForm.FirstRunLayout); tie(m_uiForm.lastRunBox, "LastRun", m_uiForm.LastRunLayout); tie(m_uiForm.logBox, "LogValue"); + tie(m_uiForm.typeBoxLog, "Function"); tie(m_uiForm.outWSBox, "OutputWorkspace", m_uiForm.OutputWSLayout); tie(m_uiForm.typeBox, "Type"); tie(m_uiForm.redBox, "Red"); @@ -96,6 +97,7 @@ void PlotAsymmetryByLogValueDialog::initLayout() // Fill ComboBoxes with allowed values fillAndSetComboBox("Type", m_uiForm.typeBox); + fillAndSetComboBox("Function", m_uiForm.typeBoxLog); fillAndSetComboBox("DeadTimeCorrType", m_uiForm.dtcType); // Fill log values from the file diff --git a/Code/Mantid/MantidQt/CustomInterfaces/CMakeLists.txt b/Code/Mantid/MantidQt/CustomInterfaces/CMakeLists.txt index df981cd0a56b..533685acb0a1 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/CMakeLists.txt +++ b/Code/Mantid/MantidQt/CustomInterfaces/CMakeLists.txt @@ -63,6 +63,7 @@ set ( SRC_FILES src/ReflLegacyTransferStrategy.cpp src/ReflMainViewPresenter.cpp src/ReflSearchModel.cpp + src/SampleTransmission.cpp src/SANSAddFiles.cpp src/SANSDiagnostics.cpp src/SANSEventSlicing.cpp @@ -151,6 +152,7 @@ set ( INC_FILES inc/MantidQtCustomInterfaces/QReflTableModel.h inc/MantidQtCustomInterfaces/QtReflMainView.h inc/MantidQtCustomInterfaces/QtReflOptionsDialog.h + inc/MantidQtCustomInterfaces/SampleTransmission.h inc/MantidQtCustomInterfaces/SANSAddFiles.h inc/MantidQtCustomInterfaces/SANSDiagnostics.h inc/MantidQtCustomInterfaces/SANSEventSlicing.h @@ -223,6 +225,7 @@ set ( MOC_FILES inc/MantidQtCustomInterfaces/Background.h inc/MantidQtCustomInterfaces/QReflTableModel.h inc/MantidQtCustomInterfaces/QtReflMainView.h inc/MantidQtCustomInterfaces/QtReflOptionsDialog.h + inc/MantidQtCustomInterfaces/SampleTransmission.h inc/MantidQtCustomInterfaces/SANSAddFiles.h inc/MantidQtCustomInterfaces/SANSPlotSpecial.h inc/MantidQtCustomInterfaces/SANSRunWindow.h @@ -273,6 +276,7 @@ set ( UI_FILES inc/MantidQtCustomInterfaces/AddWorkspace.ui inc/MantidQtCustomInterfaces/ReflMainWidget.ui inc/MantidQtCustomInterfaces/ReflOptionsDialog.ui inc/MantidQtCustomInterfaces/ReflWindow.ui + inc/MantidQtCustomInterfaces/SampleTransmission.ui inc/MantidQtCustomInterfaces/SANSPlotSpecial.ui inc/MantidQtCustomInterfaces/SANSRunWindow.ui inc/MantidQtCustomInterfaces/SANSEventSlicing.ui diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ApplyCorr.ui b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ApplyCorr.ui index dff69d081f13..4c9363a65e14 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ApplyCorr.ui +++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/Indirect/ApplyCorr.ui @@ -97,7 +97,7 @@ - false + true diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.h new file mode 100644 index 000000000000..c40016894a5b --- /dev/null +++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.h @@ -0,0 +1,57 @@ +#ifndef MANTIDQTCUSTOMINTERFACES_SAMPLETRANSMISSION_H_ +#define MANTIDQTCUSTOMINTERFACES_SAMPLETRANSMISSION_H_ + +//---------------------- +// Includes +//---------------------- +#include "ui_SampleTransmission.h" +#include "MantidQtAPI/AlgorithmRunner.h" +#include "MantidQtAPI/UserSubWindow.h" +#include "MantidQtAPI/WorkspaceObserver.h" +#include "MantidAPI/MatrixWorkspace.h" + + +namespace MantidQt +{ +namespace CustomInterfaces +{ + class SampleTransmission : public MantidQt::API::UserSubWindow + { + Q_OBJECT + + public: + /// The name of the interface as registered into the factory + static std::string name() { return "Sample Transmission Calculator"; } + // This interface's categories. + static QString categoryInfo() { return "General"; } + + public: + /// Default Constructor + SampleTransmission(QWidget *parent = 0); + + private slots: + /// Opens the Qt help page for the interface + void showHelp(); + /// Runs the calculation + void calculate(); + /// Handle completion of the calculation algorithm + void algorithmComplete(bool error); + + private: + /// Initialize the layout + virtual void initLayout(); + /// Validates UI input + bool validate(bool silent = false); + + private: + /// The form generated by Qt Designer + Ui::SampleTransmission m_uiForm; + /// Algorithm runner + API::AlgorithmRunner * m_algRunner; + + }; + +} +} + +#endif //MANTIDQTCUSTOMINTERFACES_SAMPLETRANSMISSION_H_ diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.ui b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.ui new file mode 100644 index 000000000000..cb9b0b849dbb --- /dev/null +++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/SampleTransmission.ui @@ -0,0 +1,368 @@ + + + SampleTransmission + + + + 0 + 0 + 550 + 570 + + + + + 0 + 0 + + + + Sample Transmission Calculator + + + + + 0 + 0 + + + + + + + Input Wavelength Range (Ã…) + + + + 0 + + + 0 + + + + + + Single + + + + + Multiple + + + + + + + + Type: + + + + + + + + 0 + 0 + + + + 0 + + + + + + + Low: + + + + + + + -99.989999999999995 + + + 0.100000000000000 + + + + + + + Width: + + + + + + + -99.989999999999995 + + + 0.100000000000000 + + + + + + + High: + + + + + + + -99.989999999999995 + + + 0.100000000000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sample Details + + + + + + Number Density + + + + + + + Thickness + + + + + + + Chemical Formula + + + + + + + Ã…^3 + + + 0.100000000000000 + + + 0.100000000000000 + + + + + + + cm + + + 0.100000000000000 + + + 0.100000000000000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Output + + + + + + + 0 + 0 + + + + false + + + + 255 + 255 + 255 + + + + + + + + + Property + + + + + Value + + + + + + + + + + + + + + 0 + 0 + + + + + 25 + 25 + + + + + 25 + 25 + + + + <html><head/><body><p>Opens the help page for the interface.</p></body></html> + + + ? + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + <html><head/><body><p>Runs the sample transmission calculation.</p></body></html> + + + Calculate + + + + + + + + + + + MantidQt::MantidWidgets::PreviewPlot + QWidget +
MantidQtMantidWidgets/PreviewPlot.h
+ 1 +
+
+ + cbBinningType + spSingleLow + spSingleWidth + spSingleHigh + leMultiple + leChemicalFormula + spNumberDensity + spThickness + twResults + pbCalculate + + + + + cbBinningType + currentIndexChanged(int) + swBinningTypes + setCurrentIndex(int) + + + 98 + 54 + + + 308 + 54 + + + + +
diff --git a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/UserInputValidator.h b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/UserInputValidator.h index 8356e3821fc0..0a9c44070a14 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/UserInputValidator.h +++ b/Code/Mantid/MantidQt/CustomInterfaces/inc/MantidQtCustomInterfaces/UserInputValidator.h @@ -71,9 +71,14 @@ namespace MantidQt bool checkRangeIsEnclosed(const QString & outerName, std::pair outer, const QString & innerName, std::pair inner); /// Check that the given range can be split evenly into bins of the given width. bool checkBins(double lower, double binWidth, double upper, double tolerance = 0.00000001); + /// Checks two values are not equal + bool checkNotEqual(const QString & name, double x, double y = 0.0, double tolerance = 0.00000001); /// Add a custom error message to the list. void addErrorMessage(const QString & message); + /// Sets a validation label + void setErrorLabel(QLabel * errorLabel, bool valid); + /// Returns an error message which contains all the error messages raised by the check functions. QString generateErrorMessage(); /// Checks to see if all input is valid @@ -82,6 +87,7 @@ namespace MantidQt private: /// Any raised error messages. QStringList m_errorMessages; + }; } } diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ApplyCorr.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ApplyCorr.cpp index 2af7c0b021bc..7ca36c482874 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ApplyCorr.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ApplyCorr.cpp @@ -60,7 +60,7 @@ namespace IDA geom = "cyl"; } - QString pyInput = "from IndirectDataAnalysis import abscorFeeder, loadNexus\n"; + QString pyInput = "from IndirectDataAnalysis import abscorFeeder\n"; QString sample = m_uiForm.dsSample->getCurrentDataName(); MatrixWorkspace_const_sptr sampleWs = AnalysisDataService::Instance().retrieveWS(sample.toStdString()); @@ -102,16 +102,7 @@ namespace IDA { pyInput += "useCor = True\n"; QString corrections = m_uiForm.dsCorrections->getCurrentDataName(); - if ( !Mantid::API::AnalysisDataService::Instance().doesExist(corrections.toStdString()) ) - { - pyInput += - "corrections = loadNexus(r'" + m_uiForm.dsCorrections->getFullFilePath() + "')\n"; - } - else - { - pyInput += - "corrections = '" + corrections + "'\n"; - } + pyInput += "corrections = '" + corrections + "'\n"; } else { diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Fury.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Fury.cpp index c7c3867669e9..e131644b51ea 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Fury.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Fury.cpp @@ -105,7 +105,6 @@ namespace IDA furyAlg->setProperty("NumBins", numBins); furyAlg->setProperty("Plot", plot); - furyAlg->setProperty("Verbose", true); furyAlg->setProperty("Save", save); furyAlg->setProperty("DryRun", false); @@ -205,7 +204,6 @@ namespace IDA furyAlg->setProperty("NumBins", numBins); furyAlg->setProperty("Plot", false); - furyAlg->setProperty("Verbose", true); furyAlg->setProperty("Save", false); furyAlg->setProperty("DryRun", true); diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Quasi.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Quasi.cpp index aab618bf18e3..7cb65da529e0 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Quasi.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Quasi.cpp @@ -190,7 +190,7 @@ namespace MantidQt pyInput += "QLRun('"+program+"','"+sampleName+"','"+resName+"','"+resNormFile+"',"+eRange+"," " "+nBins+","+fitOps+",'"+fixedWidthFile+"',"+sequence+", " - " Save="+save+", Plot='"+plot+"', Verbose=True)\n"; + " Save="+save+", Plot='"+plot+"')\n"; runPythonScript(pyInput); diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ResNorm.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ResNorm.cpp index 354d1f50df9e..6cd8e4e43a6a 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ResNorm.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/ResNorm.cpp @@ -97,7 +97,7 @@ namespace MantidQt QString plot = m_uiForm.cbPlot->currentText(); pyInput += "ResNormRun('"+VanName+"', '"+ResName+"', "+ERange+", "+nBin+"," - " Save="+save+", Plot='"+plot+"', Verbose=True)\n"; + " Save="+save+", Plot='"+plot+"')\n"; runPythonScript(pyInput); diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Stretch.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Stretch.cpp index 98a8c958ed76..78f13b6113eb 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Stretch.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/Indirect/Stretch.cpp @@ -126,7 +126,7 @@ namespace MantidQt QString plot = m_uiForm.cbPlot->currentText(); pyInput += "QuestRun('"+sampleName+"','"+resName+"',"+betaSig+","+eRange+","+nBins+","+fitOps+","+sequence+"," - " Save="+save+", Plot='"+plot+"', Verbose=True)\n"; + " Save="+save+", Plot='"+plot+"')\n"; runPythonScript(pyInput); } diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/SampleTransmission.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/SampleTransmission.cpp new file mode 100644 index 000000000000..c44be8a5c1cd --- /dev/null +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/SampleTransmission.cpp @@ -0,0 +1,220 @@ +//---------------------- +// Includes +//---------------------- +#include "MantidQtCustomInterfaces/SampleTransmission.h" + +#include "MantidAPI/AlgorithmManager.h" +#include "MantidKernel/Statistics.h" +#include "MantidQtAPI/HelpWindow.h" +#include "MantidQtCustomInterfaces/UserInputValidator.h" + + +namespace +{ + Mantid::Kernel::Logger g_log("SampleTransmission"); +} + +//Add this class to the list of specialised dialogs in this namespace +namespace MantidQt +{ +namespace CustomInterfaces +{ + DECLARE_SUBWINDOW(SampleTransmission); +} +} + +using namespace MantidQt::CustomInterfaces; +using namespace Mantid::API; + + +//---------------------- +// Public member functions +//---------------------- +///Constructor +SampleTransmission::SampleTransmission(QWidget *parent) : + UserSubWindow(parent), + m_algRunner(new API::AlgorithmRunner(this)) +{ + connect(m_algRunner, SIGNAL(algorithmComplete(bool)), this, SLOT(algorithmComplete(bool))); +} + + +/** + * Set up the dialog layout. + */ +void SampleTransmission::initLayout() +{ + m_uiForm.setupUi(this); + connect(m_uiForm.pbCalculate, SIGNAL(clicked()), this, SLOT(calculate())); + connect(m_uiForm.pbHelp, SIGNAL(clicked()), this, SLOT(showHelp())); + + validate(true); +} + + +/** + * Opens the Qt help page for the interface. + */ +void SampleTransmission::showHelp() +{ + MantidQt::API::HelpWindow::showCustomInterface(NULL, QString("SampleTransmissionCalculator")); +} + + +/** + * Validate user input. + * Outputs any warnings to the results log at warning level. + * + * @param silent If the results should not be logged + * @return Result of validation + */ +bool SampleTransmission::validate(bool silent) +{ + UserInputValidator uiv; + + // Valudate input binning + int wavelengthBinning = m_uiForm.cbBinningType->currentIndex(); + switch(wavelengthBinning) + { + // Single + case 0: + uiv.checkBins(m_uiForm.spSingleLow->value(), + m_uiForm.spSingleWidth->value(), + m_uiForm.spSingleHigh->value()); + break; + + // Multiple + case 1: + uiv.checkFieldIsNotEmpty("Multiple binning", + m_uiForm.leMultiple, + m_uiForm.valMultiple); + break; + } + + // Validate chemical formula + uiv.checkFieldIsNotEmpty("Chemical Formula", + m_uiForm.leChemicalFormula, + m_uiForm.valChemicalFormula); + + // Ensure number density is not zero + uiv.setErrorLabel(m_uiForm.valNumberDensity, + uiv.checkNotEqual("Number Density", m_uiForm.spNumberDensity->value())); + + // Ensure thickness is not zero + uiv.setErrorLabel(m_uiForm.valThickness, + uiv.checkNotEqual("Thickness", m_uiForm.spThickness->value())); + + // Give error message + if(!silent && !uiv.isAllInputValid()) + showInformationBox(uiv.generateErrorMessage()); + + return uiv.isAllInputValid(); +} + + +/** + * Performs a calculation with the current settings + */ +void SampleTransmission::calculate() +{ + // Do not try to run with invalid input + if(!validate()) + return; + + // Create the transmission calculation algorithm + IAlgorithm_sptr transCalcAlg = AlgorithmManager::Instance().create("CalculateSampleTransmission"); + transCalcAlg->initialize(); + + // Set the wavelength binning based on type set in UI + int wavelengthBinning = m_uiForm.cbBinningType->currentIndex(); + switch(wavelengthBinning) + { + // Single + case 0: + { + QStringList params; + params << m_uiForm.spSingleLow->text() + << m_uiForm.spSingleWidth->text() + << m_uiForm.spSingleHigh->text(); + QString binString = params.join(","); + transCalcAlg->setProperty("WavelengthRange", binString.toStdString()); + break; + } + + // Multiple + case 1: + transCalcAlg->setProperty("WavelengthRange", m_uiForm.leMultiple->text().toStdString()); + break; + } + + // Set sample material properties + transCalcAlg->setProperty("ChemicalFormula", m_uiForm.leChemicalFormula->text().toStdString()); + transCalcAlg->setProperty("NumberDensity", m_uiForm.spNumberDensity->value()); + transCalcAlg->setProperty("Thickness", m_uiForm.spThickness->value()); + + transCalcAlg->setProperty("OutputWorkspace", "CalculatedSampleTransmission"); + + // Clear the previous results + m_uiForm.twResults->clear(); + m_uiForm.ppTransmission->clear(); + + // Run algorithm + m_algRunner->startAlgorithm(transCalcAlg); +} + + +/** + * Handles completion of the calculation algorithm. + * + * @param error If the algorithm exited with an error + */ +void SampleTransmission::algorithmComplete(bool error) +{ + using namespace Mantid::Kernel; + + // Ignore errors + if(error) + { + showInformationBox("Transmission calculation failed.\nSee Results Log for details."); + return; + } + + MatrixWorkspace_sptr ws = + AnalysisDataService::Instance().retrieveWS("CalculatedSampleTransmission"); + + // Fill the output table + double scattering = ws->dataY(1)[0]; + QTreeWidgetItem *scatteringItem = new QTreeWidgetItem(); + scatteringItem->setText(0, "Scattering"); + scatteringItem->setText(1, QString::number(scattering)); + m_uiForm.twResults->addTopLevelItem(scatteringItem); + + QTreeWidgetItem *transmissionItem = new QTreeWidgetItem(); + transmissionItem->setText(0, "Transmission"); + m_uiForm.twResults->addTopLevelItem(transmissionItem); + transmissionItem->setExpanded(true); + + std::vector transmissionData = ws->dataY(0); + Statistics stats = getStatistics(transmissionData); + + QMap transmissionStats; + transmissionStats["Min"] = stats.minimum; + transmissionStats["Max"] = stats.maximum; + transmissionStats["Mean"] = stats.mean; + transmissionStats["Median"] = stats.median; + transmissionStats["Std. Dev."] = stats.standard_deviation; + + for(auto it = transmissionStats.begin(); it != transmissionStats.end(); ++it) + { + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, it.key()); + item->setText(1, QString::number(it.value())); + transmissionItem->addChild(item); + } + + m_uiForm.twResults->resizeColumnToContents(0); + + // Plot transmission curve on preview plot + m_uiForm.ppTransmission->addSpectrum("Transmission", "CalculatedSampleTransmission", 0); + m_uiForm.ppTransmission->resizeX(); +} diff --git a/Code/Mantid/MantidQt/CustomInterfaces/src/UserInputValidator.cpp b/Code/Mantid/MantidQt/CustomInterfaces/src/UserInputValidator.cpp index ae7bba5358be..649917e064f7 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/src/UserInputValidator.cpp +++ b/Code/Mantid/MantidQt/CustomInterfaces/src/UserInputValidator.cpp @@ -45,13 +45,13 @@ namespace MantidQt { if(field->text() == "") { - errorLabel->setText("*"); + setErrorLabel(errorLabel, false); m_errorMessages.append(name + " has been left blank."); return false; } else { - errorLabel->setText(""); + setErrorLabel(errorLabel, true); return true; } } @@ -72,12 +72,12 @@ namespace MantidQt if( fieldState == QValidator::Acceptable ) { - errorLabel->setText(""); + setErrorLabel(errorLabel, true); return true; } else { - errorLabel->setText("*"); + setErrorLabel(errorLabel, false); m_errorMessages.append(errorMessage); return false; } @@ -254,6 +254,32 @@ namespace MantidQt return true; } + /** + * Checks two values are not equal. + * + * @param name Name of value + * @param x First value + * @param y Second value (defaults to zero) + * @param tolerance Tolerance to which to compare + * @return True if input was valid + */ + bool UserInputValidator::checkNotEqual(const QString & name, double x, double y, double tolerance) + { + double delta = x - y; + + if(std::abs(delta) <= tolerance) + { + std::stringstream msg; + msg << name.toStdString() << " (" << x << ")" + << " should not be equal to " << y << "."; + QString msgStr = QString::fromStdString(msg.str()); + m_errorMessages.append(msgStr); + return false; + } + + return true; + } + /** * Add a custom error message to the list. * @@ -273,7 +299,7 @@ namespace MantidQt if( m_errorMessages.isEmpty() ) return ""; - return "Please correct the following:\n\n" + m_errorMessages.join("\n"); + return "Please correct the following:\n" + m_errorMessages.join("\n"); } /** @@ -285,5 +311,36 @@ namespace MantidQt { return m_errorMessages.isEmpty(); } + + /** + * Sets a validation label that is displyed next to the widget on the UI. + * + * @param errorLabel Label to change + * @param valid If the input was valid + */ + void UserInputValidator::setErrorLabel(QLabel * errorLabel, bool valid) + { + // Do nothing if no error label was provided + if(errorLabel == NULL) + return; + + if(!valid) + { + // Set the label to be red + QPalette palette = errorLabel->palette(); + palette.setColor(errorLabel->foregroundRole(), Qt::red); + errorLabel->setPalette(palette); + + errorLabel->setText("*"); + } + else + { + errorLabel->setText(""); + } + + // Only show the label if input is invalid + errorLabel->setVisible(!valid); + } + } } diff --git a/Code/Mantid/MantidQt/CustomInterfaces/test/UserInputValidatorTest.h b/Code/Mantid/MantidQt/CustomInterfaces/test/UserInputValidatorTest.h index 4ed7c14a14e9..775ef03668e4 100644 --- a/Code/Mantid/MantidQt/CustomInterfaces/test/UserInputValidatorTest.h +++ b/Code/Mantid/MantidQt/CustomInterfaces/test/UserInputValidatorTest.h @@ -32,7 +32,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite UserInputValidator uiv; TS_ASSERT(!uiv.checkBins(0.6, -0.1, 1.8)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nBin width must be a positive value."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nBin width must be a positive value."); } void test_zeroWidthRebin() @@ -40,7 +40,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite UserInputValidator uiv; TS_ASSERT(!uiv.checkBins(0.6, 0.0, 1.8)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nBin width must be non-zero."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nBin width must be non-zero."); } void test_zeroRangeRebin() @@ -48,7 +48,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite UserInputValidator uiv; TS_ASSERT(!uiv.checkBins(0.6, 0.1, 0.6)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nBinning ranges must be non-zero."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nBinning ranges must be non-zero."); } void test_reverseRangeRebin() @@ -56,7 +56,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite UserInputValidator uiv; TS_ASSERT(!uiv.checkBins(1.8, 0.1, 0.6)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nThe start of a binning range must be less than the end."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nThe start of a binning range must be less than the end."); } void test_binsNotFactorsRebin() @@ -64,7 +64,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite UserInputValidator uiv; TS_ASSERT(!uiv.checkBins(0.0, 0.2, 0.7)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nBin width must allow for even splitting of the range."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nBin width must allow for even splitting of the range."); } void test_validRange() @@ -81,7 +81,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite std::pair range(10, 5); TS_ASSERT(!uiv.checkValidRange("test range", range)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nThe start of test range must be less than the end."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nThe start of test range must be less than the end."); } void test_invalidRangeZeroWidth() @@ -90,7 +90,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite std::pair range(5, 5); TS_ASSERT(!uiv.checkValidRange("test range", range)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\ntest range must have a non-zero width."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\ntest range must have a non-zero width."); } void test_nonOverlappingRanges() @@ -109,7 +109,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite std::pair rangeB(3, 8); TS_ASSERT(!uiv.checkRangesDontOverlap(rangeA, rangeB)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nThe ranges must not overlap: [1,5], [3,8]."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nThe ranges must not overlap: [1,5], [3,8]."); } void test_enclosedRange() @@ -128,7 +128,7 @@ class UserInputValidatorTest : public CxxTest::TestSuite std::pair inner(3, 15); TS_ASSERT(!uiv.checkRangeIsEnclosed("outer range", outer, "inner range", inner)); TS_ASSERT(!uiv.isAllInputValid()); - TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\n\nouter range must completely enclose inner range."); + TS_ASSERT_EQUALS(uiv.generateErrorMessage(), "Please correct the following:\nouter range must completely enclose inner range."); } }; diff --git a/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp b/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp index 376582042ef4..b235a3935591 100644 --- a/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp +++ b/Code/Mantid/MantidQt/MantidWidgets/src/PreviewPlot.cpp @@ -194,7 +194,7 @@ QPair PreviewPlot::getCurveRange(const Mantid::API::MatrixWorksp /** * Gets the X range of a curve given its name. * - * @param wsName Name of curve + * @param curveName Name of curve */ QPair PreviewPlot::getCurveRange(const QString & curveName) { @@ -217,7 +217,7 @@ QPair PreviewPlot::getCurveRange(const QString & curveName) * Adds a workspace to the preview plot given a pointer to it. * * @param curveName Name of curve - * @param wsName Name of workspace in ADS + * @param ws Pointer to the workspace * @param specIndex Spectrum index to plot * @param curveColour Colour of curve to plot */ @@ -274,9 +274,9 @@ void PreviewPlot::addSpectrum(const QString & curveName, const QString & wsName, /** - * Removes spectra from a gievn workspace from the plot given a pointer to it. + * Removes spectra from a given workspace from the plot given a pointer to it. * - * If multiple curves are plotted form the smae workspace then all wil lbe removed. + * If multiple curves are plotted form the same workspace then all will be removed. * * @param ws Pointer to workspace */ @@ -290,9 +290,9 @@ void PreviewPlot::removeSpectrum(const MatrixWorkspace_sptr ws) /** - * Removes spectra from a gievn workspace from the plot given its name. + * Removes spectra from a given workspace from the plot given its name. * - * @param wsName Name of curve + * @param curveName Name of curve */ void PreviewPlot::removeSpectrum(const QString & curveName) { @@ -316,7 +316,7 @@ void PreviewPlot::removeSpectrum(const QString & curveName) /** - * Checks to see if a given curne name is present on the plot. + * Checks to see if a given curve name is present on the plot. * * @param curveName Curve name * @return True if curve is on plot @@ -460,7 +460,7 @@ void PreviewPlot::hardReplot() * * Removes it from the plot (via removeSpectrum). * - * @param pNF Poco notification + * @param pNf Poco notification */ void PreviewPlot::handleRemoveEvent(WorkspacePreDeleteNotification_ptr pNf) { @@ -564,7 +564,7 @@ void PreviewPlot::removeCurve(QwtPlotCurve * curve) /** - * Helper function for adding a set of items to an exclusive menu oon the context menu. + * Helper function for adding a set of items to an exclusive menu on the context menu. * * @param menuName Name of sub menu * @param group Pointer to ActionGroup @@ -598,7 +598,7 @@ QList PreviewPlot::addOptionsToMenus(QString menuName, QActionGroup * /** - * Returns the type of axis scale specified for a giev axis. + * Returns the type of axis scale specified for a given axis. * * @param axisID ID of axis * @return Axis type as string @@ -625,7 +625,7 @@ QString PreviewPlot::getAxisType(int axisID) /** * Gets a list of curve names that are plotted form the given workspace. * - * @param Pointer to workspace + * @param ws Pointer to workspace * @return List of curve names */ QStringList PreviewPlot::getCurvesForWorkspace(const MatrixWorkspace_sptr ws) diff --git a/Code/Mantid/Testing/Data/SystemTest/HRP39187.RAW.md5 b/Code/Mantid/Testing/Data/SystemTest/HRP39187.RAW.md5 new file mode 100644 index 000000000000..6736dcddd7b0 --- /dev/null +++ b/Code/Mantid/Testing/Data/SystemTest/HRP39187.RAW.md5 @@ -0,0 +1 @@ +6aa506e83ba085964781b480d71c59fe diff --git a/Code/Mantid/Testing/Data/SystemTest/HRP39191.RAW.md5 b/Code/Mantid/Testing/Data/SystemTest/HRP39191.RAW.md5 new file mode 100644 index 000000000000..d9d1923775b2 --- /dev/null +++ b/Code/Mantid/Testing/Data/SystemTest/HRP39191.RAW.md5 @@ -0,0 +1 @@ +e422e2456884b0bd4c686e5d883f9d57 diff --git a/Code/Mantid/Testing/Data/SystemTest/hrpd_new_072_01_corr.cal.md5 b/Code/Mantid/Testing/Data/SystemTest/hrpd_new_072_01_corr.cal.md5 new file mode 100644 index 000000000000..37c71d5dbfe1 --- /dev/null +++ b/Code/Mantid/Testing/Data/SystemTest/hrpd_new_072_01_corr.cal.md5 @@ -0,0 +1 @@ +21f937d9b1bfc5032d3fbf8f85920c15 diff --git a/Test/PerformanceTests/.gitignore b/Code/Mantid/Testing/PerformanceTests/.gitignore similarity index 100% rename from Test/PerformanceTests/.gitignore rename to Code/Mantid/Testing/PerformanceTests/.gitignore diff --git a/Test/PerformanceTests/Mantid.systemtests.properties.template b/Code/Mantid/Testing/PerformanceTests/Mantid.systemtests.properties.template similarity index 100% rename from Test/PerformanceTests/Mantid.systemtests.properties.template rename to Code/Mantid/Testing/PerformanceTests/Mantid.systemtests.properties.template diff --git a/Test/PerformanceTests/README.txt b/Code/Mantid/Testing/PerformanceTests/README.txt similarity index 100% rename from Test/PerformanceTests/README.txt rename to Code/Mantid/Testing/PerformanceTests/README.txt diff --git a/Test/PerformanceTests/analysis.py b/Code/Mantid/Testing/PerformanceTests/analysis.py similarity index 100% rename from Test/PerformanceTests/analysis.py rename to Code/Mantid/Testing/PerformanceTests/analysis.py diff --git a/Test/PerformanceTests/check_performance.py b/Code/Mantid/Testing/PerformanceTests/check_performance.py similarity index 100% rename from Test/PerformanceTests/check_performance.py rename to Code/Mantid/Testing/PerformanceTests/check_performance.py diff --git a/Test/PerformanceTests/make_report.py b/Code/Mantid/Testing/PerformanceTests/make_report.py similarity index 100% rename from Test/PerformanceTests/make_report.py rename to Code/Mantid/Testing/PerformanceTests/make_report.py diff --git a/Test/PerformanceTests/reporters.py b/Code/Mantid/Testing/PerformanceTests/reporters.py similarity index 100% rename from Test/PerformanceTests/reporters.py rename to Code/Mantid/Testing/PerformanceTests/reporters.py diff --git a/Test/PerformanceTests/setup.py b/Code/Mantid/Testing/PerformanceTests/setup.py similarity index 100% rename from Test/PerformanceTests/setup.py rename to Code/Mantid/Testing/PerformanceTests/setup.py diff --git a/Test/PerformanceTests/sqlresults.py b/Code/Mantid/Testing/PerformanceTests/sqlresults.py similarity index 100% rename from Test/PerformanceTests/sqlresults.py rename to Code/Mantid/Testing/PerformanceTests/sqlresults.py diff --git a/Test/PerformanceTests/testresult.py b/Code/Mantid/Testing/PerformanceTests/testresult.py similarity index 100% rename from Test/PerformanceTests/testresult.py rename to Code/Mantid/Testing/PerformanceTests/testresult.py diff --git a/Test/PerformanceTests/xunit_to_sql.py b/Code/Mantid/Testing/PerformanceTests/xunit_to_sql.py similarity index 100% rename from Test/PerformanceTests/xunit_to_sql.py rename to Code/Mantid/Testing/PerformanceTests/xunit_to_sql.py diff --git a/Code/Mantid/Testing/SystemTests/lib/systemtests/algorithm_decorator.py b/Code/Mantid/Testing/SystemTests/lib/systemtests/algorithm_decorator.py new file mode 100644 index 000000000000..91c0fd54546d --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/lib/systemtests/algorithm_decorator.py @@ -0,0 +1,61 @@ +import inspect +import re + +def make_decorator(algorithm_to_decorate): + """ + Dynamically create a builder pattern style decorator around a Mantid algorithm. + This allows you to separate out setting algorithm parameters from the actual method execution. Parameters may be reset multiple times. + + Usage: + rebin = make_decorator(Rebin) + rebin.set_Params([0, 0.1, 1]) + .... + rebin.execute() + + Arguments: + algorithm_to_decorate: The mantid.simpleapi algorithm to decorate. + + + + """ + + class Decorator(object): + + def __init__(self, alg_subject): + self.__alg_subject = alg_subject + self.__parameters__ = dict() + + def execute(self, additional=None, verbose=False): + if verbose: + print "Algorithm Parameters:" + print self.__parameters__ + print + out = self.__alg_subject(**self.__parameters__) + return out + + def set_additional(self, additional): + self.__parameters__.update(**additional) + + def add_getter_setter(type, name): + + def setter(self, x): + self.__parameters__[name] = x + + def getter(self): + return self.__parameters__[name] + + setattr(type, "set_" + name, setter) + setattr(type, "get_" + name, getter) + + + argspec = inspect.getargspec(algorithm_to_decorate) + for parameter in argspec.varargs.split(','): + m = re.search('(^\w+)', parameter) # Take the parameter key part from the defaults given as 'key=value' + if m: + parameter = m.group(0).strip() + m = re.search('\w+$', parameter) # strip off any leading numerical values produced by argspec + if m: + parameter = m.group(0).strip() + add_getter_setter(Decorator, m.group(0).strip()) + + return Decorator(algorithm_to_decorate) diff --git a/Code/Mantid/Testing/SystemTests/lib/systemtests/stresstesting.py b/Code/Mantid/Testing/SystemTests/lib/systemtests/stresstesting.py new file mode 100644 index 000000000000..31aa6f54b281 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/lib/systemtests/stresstesting.py @@ -0,0 +1,1023 @@ +''' +Mantid stress testing framework. This module contains all of the necessary code +to run sets of stress tests on the Mantid framework by executing scripts directly +or by importing them into MantidPlot. + +Copyright © 2009 STFC Rutherford Appleton Laboratories + +This file is part of Mantid. + +Mantid is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +Mantid is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +File change history is stored at: . +''' +import sys +import os +import types +import re +import time +import datetime +import platform +import subprocess +import tempfile +import imp +import inspect +import abc +import numpy +import unittest + +# Path to this file +THIS_MODULE_DIR = os.path.dirname(os.path.realpath(__file__)) + +######################################################################### +# The base test class. +######################################################################### +class MantidStressTest(unittest.TestCase): + '''Defines a base class for stress tests, providing functions + that should be overridden by inheriting classes to perform tests. + ''' + + # Define a delimiter when reporting results + DELIMITER = '|' + + # Define a prefix for reporting results + PREFIX = 'RESULT' + + def __init__(self): + super(MantidStressTest, self).__init__() + # A list of things not to check when validating + self.disableChecking = [] + # Whether or not to strip off whitespace when doing simple ascii diff + self.stripWhitespace = True + # Tolerance + self.tolerance = 0.00000001 + # Store the resident memory of the system (in MB) before starting the test + import mantid.api + mantid.api.FrameworkManager.clear() + from mantid.kernel import MemoryStats + self.memory = MemoryStats().residentMem()/1024 + + def runTest(self): + raise NotImplementedError('"runTest(self)" should be overridden in a derived class') + + def skipTests(self): + ''' + Override this to return True when the tests should be skipped for some + reason. + See also: requiredFiles() and requiredMemoryMB() + ''' + return False + + def validate(self): + ''' + Override this to provide a pair of workspaces which should be checked for equality + by the doValidation method. + The overriding method should return a pair of strings. This could be two workspace + names, e.g. return 'workspace1','workspace2', or a workspace name and a nexus + filename (which must have nxs suffix), e.g. return 'workspace1','GEM00001.nxs'. + ''' + return None + + def requiredFiles(self): + ''' + Override this method if you want to require files for the test. + Return a list of files. + ''' + return [] + + def requiredMemoryMB(self): + ''' + Override this method to specify the amount of free memory, + in megabytes, that is required to run the test. + The test is skipped if there is not enough memory. + ''' + return 0 + + def validateMethod(self): + ''' + Override this to specify which validation method to use. Look at the validate* methods to + see what allowed values are. + ''' + return "WorkspaceToNeXus" + + def maxIterations(self): + '''Override this to perform more than 1 iteration of the implemented test.''' + return 1 + + def reportResult(self, name, value): + ''' + Send a result to be stored as a name,value pair + ''' + print self.PREFIX + self.DELIMITER + name + self.DELIMITER + str(value) + '\n', + + def __verifyRequiredFile(self, filename): + '''Return True if the specified file name is findable by Mantid.''' + from mantid.api import FileFinder + + # simple way is just getFullPath which never uses archive search + if os.path.exists(FileFinder.getFullPath(filename)): + return True + + # try full findRuns which will use archive search if it is turned on + try: + candidates = FileFinder.findRuns(filename) + for item in candidates: + if os.path.exists(item): + return True + except RuntimeError, e: + return False + + + # file was not found + return False + + def __verifyRequiredFiles(self): + # first see if there is anything to do + reqFiles = self.requiredFiles() + if len(reqFiles) <= 0: + return + + # by default everything is ok + foundAll = True + + # initialize mantid so it can get the data directories to look in + import mantid + # check that all of the files exist + for filename in reqFiles: + if not self.__verifyRequiredFile(filename): + print "Missing required file: '%s'" % filename + foundAll = False + + if not foundAll: + sys.exit(PythonTestRunner.SKIP_TEST) + + def __verifyMemory(self): + """ Do we need to skip due to lack of memory? """ + required = self.requiredMemoryMB() + if required <= 0: + return + + # Check if memory is available + from mantid.kernel import MemoryStats + MB_avail = MemoryStats().availMem()/(1024.) + if (MB_avail < required): + print "Insufficient memory available to run test! %g MB available, need %g MB." % (MB_avail,required) + sys.exit(PythonTestRunner.SKIP_TEST) + + def execute(self): + ''' + Run the defined number of iterations of this test + ''' + # Do we need to skip due to missing files? + self.__verifyRequiredFiles() + + self.__verifyMemory() + + # A custom check for skipping the tests for other reasons + if self.skipTests(): + sys.exit(PythonTestRunner.SKIP_TEST) + + # Start timer + start = time.time() + countmax = self.maxIterations() + 1 + for i in range(1, countmax): + istart = time.time() + self.runTest() + delta_t = time.time() - istart + self.reportResult('iteration time_taken', str(i) + ' %.2f' % delta_t) + delta_t = float(time.time() - start) + # Finish + #self.reportResult('time_taken', '%.2f' % delta_t) + + def __prepASCIIFile(self, filename): + """ + Prepare an ascii file for comparison using difflib. + """ + handle = open(filename, mode='r') + stuff = handle.readlines() + if self.stripWhitespace: + stuff = [line.strip() for line in stuff] + handle.close() + return stuff + + def validateASCII(self): + """ + Validate ASCII files using difflib. + """ + (measured, expected) = self.validate() + measured = self.__prepASCIIFile(measured) + expected = self.__prepASCIIFile(expected) + + # calculate the difference + import difflib + diff = difflib.Differ().compare(measured, expected) + result = [] + for line in diff: + if line.startswith('+') or line.startswith('-') or line.startswith('?'): + result.append(line) + + # print the difference + if len(result) > 0: + if self.stripWhitespace: + msg = "(whitespace striped from ends)" + else: + msg = "" + print "******************* Difference in files", msg + print "\n".join(result) + print "*******************" + return False + else: + return True + + def validateWorkspaceToNeXus(self): + ''' + Assumes the second item from self.validate() is a nexus file and loads it + to compare to the supplied workspace. + ''' + valNames = list(self.validate()) + from mantid.simpleapi import Load + numRezToCheck=len(valNames) + mismatchName=None; + + validationResult =True; + for ik in range(0,numRezToCheck,2): # check All results + workspace2 = valNames[ik+1] + if workspace2.endswith('.nxs'): + Load(Filename=workspace2,OutputWorkspace="RefFile") + workspace2 = "RefFile" + else: + raise RuntimeError("Should supply a NeXus file: %s" % workspace2) + valPair=(valNames[ik],"RefFile"); + if numRezToCheck>2: + mismatchName = valNames[ik]; + + if not(self.validateWorkspaces(valPair,mismatchName)): + validationResult = False; + print 'Workspace {0} not equal to its reference file'.format(valNames[ik]); + #end check All results + + return validationResult; + + def validateWorkspaceToWorkspace(self): + ''' + Assumes the second item from self.validate() is an existing workspace + to compare to the supplied workspace. + ''' + valNames = list(self.validate()) + return self.validateWorkspaces(valNames) + + def validateWorkspaces(self, valNames=None,mismatchName=None): + ''' + Performs a check that two workspaces are equal using the CheckWorkspacesMatch + algorithm. Loads one workspace from a nexus file if appropriate. + Returns true if: the workspaces match + OR the validate method has not been overridden. + Returns false if the workspace do not match. The reason will be in the log. + ''' + if valNames is None: + valNames = self.validate() + + from mantid.simpleapi import SaveNexus, AlgorithmManager + checker = AlgorithmManager.create("CheckWorkspacesMatch") + checker.setLogging(True) + checker.setPropertyValue("Workspace1",valNames[0]) + checker.setPropertyValue("Workspace2",valNames[1]) + checker.setPropertyValue("Tolerance", str(self.tolerance)) + if hasattr(self,'tolerance_is_reller') and self.tolerance_is_reller: + checker.setPropertyValue("ToleranceRelerr", "1") + for d in self.disableChecking: + checker.setPropertyValue("Check"+d,"0") + checker.execute() + if checker.getPropertyValue("Result") != 'Success!': + print self.__class__.__name__ + if mismatchName: + SaveNexus(InputWorkspace=valNames[0],Filename=self.__class__.__name__+mismatchName+'-mismatch.nxs') + else: + SaveNexus(InputWorkspace=valNames[0],Filename=self.__class__.__name__+'-mismatch.nxs') + return False + + return True + + def doValidation(self): + """ + Perform validation. This selects which validation method to use by the result + of validateMethod() and validate(). If validate() is not overridden this will + return True. + """ + # if no validation is specified then it must be ok + validation = self.validate() + if validation is None: + return True + + # if a simple boolean then use this + if type(validation) == bool: + return validation + # or numpy boolean + if type(validation) == numpy.bool_: + return bool(validation) + + # switch based on validation methods + method = self.validateMethod() + if method is None: + return True # don't validate + method = method.lower() + if "validateworkspacetonexus".endswith(method): + return self.validateWorkspaceToNeXus() + elif "validateworkspacetoworkspace".endswith(method): + return self.validateWorkspaceToWorkspace() + elif "validateascii".endswith(method): + return self.validateASCII() + else: + raise RuntimeError("invalid validation method '%s'" % self.validateMethod()) + + def returnValidationCode(self,code): + """ + Calls doValidation() and returns 0 in success and code if failed. This will be + used as return code from the calling python subprocess + """ + if self.doValidation(): + retcode = 0 + else: + retcode = code + if retcode == 0: + self._success = True + else: + self._success = False + # Now the validation is complete we can clear out all the stored data and check memory usage + import mantid.api + mantid.api.FrameworkManager.clear() + # Get the resident memory again and work out how much it's gone up by (in MB) + from mantid.kernel import MemoryStats + memorySwallowed = MemoryStats().residentMem()/1024 - self.memory + # Store the result + self.reportResult('memory footprint increase', memorySwallowed ) + return retcode + + def succeeded(self): + """ + Returns true if the test has been run and it succeeded, false otherwise + """ + if hasattr(self, '_success'): + return self._success + else: + return False + + def cleanup(self): + ''' + This function is called after a test has completed and can be used to + clean up, i.e. remove workspaces etc + ''' + pass + + + def assertDelta(self, value, expected, delta, msg=""): + """ + Check that a value is within +- delta of the expected value + """ + # Build the error message + if msg != "": msg += " " + msg += "Expected %g == %g within +- %g." % (value, expected, delta) + + if (value > expected+delta) or (value < expected-delta): + raise Exception(msg) + + def assertLessThan(self, value, expected, msg=""): + """ + Check that a value is < expected. + """ + # Build the error message + if msg != "": msg += " " + msg += "Expected %g < %g " % (value, expected) + + if (value >= expected): + raise Exception(msg) + + def assertGreaterThan(self, value, expected, msg=""): + """ + Check that a value is > expected. + """ + # Build the error message + if msg != "": msg += " " + msg += "Expected %g > %g " % (value, expected) + + if (value <= expected): + raise Exception(msg) + + +######################################################################### +# A class to store the results of a test +######################################################################### +class TestResult(object): + ''' + Stores the results of each test so that they can be reported later. + ''' + + def __init__(self): + self._results = [] + self.name = '' + self.filename = '' + self.date = '' + self.status = '' + self.time_taken = '' + self.total_time = '' + self.output = '' + self.err = '' + + def addItem(self, item): + ''' + Add an item to the store, this should be a list containing 2 entries: [Name, Value] + ''' + self._results.append(item) + + def resultLogs(self): + ''' + Get the map storing the results + ''' + return self._results + +######################################################################### +# A base class to support report results in an appropriate manner +######################################################################### +class ResultReporter(object): + ''' + A base class for results reporting. In order to get the results in an + appropriate form, subclass this class and implement the dispatchResults + method. + ''' + + def __init__(self): + '''Initialize a class instance, e.g. connect to a database''' + pass + + def dispatchResults(self, result): + raise NotImplementedError('"dispatchResults(self, result)" should be overridden in a derived class') + +######################################################################### +# A class to report results as formatted text output +######################################################################### +class TextResultReporter(ResultReporter): + ''' + Report the results of a test using standard out + ''' + + def dispatchResults(self, result): + ''' + Print the results to standard out + ''' + nstars = 30 + print '*' * nstars + for t in result.resultLogs(): + print '\t' + str(t[0]).ljust(15) + '-> ', str(t[1]) + print '*' * nstars + +######################################################################### +# A class to report results as junit xml +######################################################################### +from xmlreporter import XmlResultReporter + +######################################################################### +# A base class for a TestRunner +######################################################################### +class PythonTestRunner(object): + ''' + A base class to serve as a wrapper to actually run the tests in a specific + environment, i.e. console, gui + ''' + SUCCESS_CODE = 0 + GENERIC_FAIL_CODE = 1 + SEGFAULT_CODE = 139 + VALIDATION_FAIL_CODE = 99 + NOT_A_TEST = 98 + SKIP_TEST = 97 + + def __init__(self, need_escaping = False): + self._mtdpy_header = '' + self._test_dir = '' + # Get the path that this module resides in so that the tests know about it + self._framework_path = THIS_MODULE_DIR + # A string to prefix the code with + self._code_prefix = '' + self._using_escape = need_escaping + + def commandString(self, pycode): + ''' + Return the appropriate command to pass to subprocess.Popen + ''' + raise NotImplementedError('"commandString(self)" should be overridden in a derived class') + + def setMantidDir(self, mtdheader_dir): + # Store the path to mantid module + self._mtdpy_header = os.path.abspath(mtdheader_dir).replace('\\','/') + + def setTestDir(self, test_dir): + self._test_dir = os.path.abspath(test_dir).replace('\\','/') + + def createCodePrefix(self): + if self._using_escape == True: + esc = '\\' + else: + esc = '' + + self._code_prefix = 'import sys, time;' + self._code_prefix += 'sys.path.insert(0, ' + esc + '"' + self._mtdpy_header + esc + '");' + \ + 'sys.path.append(' + esc + '"' + self._framework_path + esc + '");' + \ + 'sys.path.append(' + esc + '"' + self._test_dir + esc + '");' + + def getCodePrefix(self): + ''' + Return a prefix to the code that will be executed + ''' + return self._code_prefix + + def spawnSubProcess(self, cmd): + ''' + Spawn a new process and run the given command within it + ''' + + proc = subprocess.Popen(cmd, shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, bufsize=-1) + std_out = "" + std_err = "" + for line in proc.stdout: + print line, + std_out += line + proc.wait() + + return proc.returncode, std_out, std_err + + def start(self, pycode): + ''' + Run the given test code in a new subprocess + ''' + raise NotImplementedError('"run(self, pycode)" should be overridden in a derived class') + +######################################################################### +# A runner class to execute the tests on using the command line interface +######################################################################### +class PythonConsoleRunner(PythonTestRunner): + ''' + This class executes tests within a Mantid environment inside a standalone python + interpreter + ''' + + def __init__(self): + PythonTestRunner.__init__(self, True) + + def start(self, pycode): + ''' + Run the code in a new instance of a python interpreter + ''' + return self.spawnSubProcess(sys.executable + ' -c \"' + self.getCodePrefix() + pycode + '\"') + +######################################################################### +# A runner class to execute the tests on using the command line interface +######################################################################### +class MantidPlotTestRunner(PythonTestRunner): + ''' + This class executes tests within the Python scripting environment inside + MantidPlot + ''' + + def __init__(self, mtdplot_dir): + PythonTestRunner.__init__(self) + mtdplot_bin = mtdplot_dir + '/MantidPlot' + if os.name == 'nt': + mtdplot_bin += '.exe' + self._mtdplot_bin = os.path.abspath(mtdplot_bin).replace('\\','/') + + def start(self, pycode): + ''' + Run the code in a new instance of the MantidPlot scripting environment + ''' + # The code needs wrapping in a temporary file so that it can be passed + # to MantidPlot, along with the redirection of the scripting output to + # stdout + # On Windows, just using the file given back by tempfile doesn't work + # as the name is mangled to a short version where all characters after + # a space are replace by ~. So on windows use put the file in the + # current directory + if os.name == 'nt': + loc = '.' + else: + loc = '' + # MG 11/09/2009: I tried the simple tempfile.NamedTemporaryFile() method + # but this didn't work on Windows so I had to be a little long winded + # about it + fd, tmpfilepath = tempfile.mkstemp(suffix = '.py', dir = loc, text=True) + + os.write(fd, 'import sys\nsys.stdout = sys.__stdout__\n' + self.getCodePrefix() + pycode) + retcode, output, err = self.spawnSubProcess('"' +self._mtdplot_bin + '" -xq \'' + tmpfilepath + '\'') + # Remove the temporary file + os.close(fd) + os.remove(tmpfilepath) + return retcode, output, err + +######################################################################### +# A class to tie together a test and its results +######################################################################### +class TestSuite(object): + ''' + Tie together a test and its results. + ''' + def __init__(self, modname, testname, filename = None): + self._modname = modname + self._fullname = modname + # A None testname indicates the source did not load properly + # It has come this far so that it gets reported as a proper failure + # by the framework + if testname is not None: + self._fullname += '.' + testname + + self._result = TestResult() + # Add some results that are not linked to the actually test itself + self._result.name = self._fullname + if filename: + self._result.filename = filename + else: + self._result.filename = self._fullname + self._result.addItem(['test_name', self._fullname]) + sysinfo = platform.uname() + self._result.addItem(['host_name', sysinfo[1]]) + self._result.addItem(['environment', self.envAsString()]) + self._result.status = 'skipped' # the test has been skipped until it has been executed + + name = property(lambda self: self._fullname) + status = property(lambda self: self._result.status) + + def envAsString(self): + if os.name == 'nt': + system = platform.system().lower()[:3] + arch = platform.architecture()[0][:2] + env = system + arch + elif os.name == 'mac': + env = platform.mac_ver()[0] + else: + env = platform.dist()[0] + return env + + def markAsSkipped(self, reason): + self.setOutputMsg(reason) + self._result.status = 'skipped' + + def execute(self, runner): + print time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) + ': Executing ' + self._fullname + pycode = 'import ' + self._modname + ';'\ + + 'systest = ' + self._fullname + '();'\ + + 'systest.execute();'\ + + 'retcode = systest.returnValidationCode('+str(PythonTestRunner.VALIDATION_FAIL_CODE)+');'\ + + 'systest.cleanup();'\ + + 'sys.exit(retcode)' + # Start the new process + self._result.date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + self._result.addItem(['test_date',self._result.date]) + retcode, output, err = runner.start(pycode) + + + if retcode == PythonTestRunner.SUCCESS_CODE: + status = 'success' + elif retcode == PythonTestRunner.GENERIC_FAIL_CODE: + # This is most likely an algorithm failure, but it's not certain + status = 'algorithm failure' + elif retcode == PythonTestRunner.VALIDATION_FAIL_CODE: + status = 'failed validation' + elif retcode == PythonTestRunner.SEGFAULT_CODE: + status = 'crashed' + elif retcode == PythonTestRunner.SKIP_TEST: + status = 'skipped' + elif retcode < 0: + status = 'hung' + else: + status = 'unknown' + + # Check return code and add result + self._result.status = status + self._result.addItem(['status', status]) + # Dump std out so we know what happened + print output + self._result.output = output + all_lines = output.split('\n') + # Find the test results + for line in all_lines: + entries = line.split(MantidStressTest.DELIMITER) + if len(entries) == 3 and entries[0] == MantidStressTest.PREFIX: + self._result.addItem([entries[1], entries[2]]) + + def setOutputMsg(self, msg=None): + if msg is not None: + self._result.output = msg + + def reportResults(self, reporters): + for r in reporters: + r.dispatchResults(self._result) + +######################################################################### +# The main API class +######################################################################### +class TestManager(object): + '''A manager class that is responsible for overseeing the testing process. + This is the main interaction point for the framework. + ''' + + def __init__(self, test_loc, runner = PythonConsoleRunner(), output = [TextResultReporter()], + testsInclude=None, testsExclude=None): + '''Initialize a class instance''' + + # Check whether the MANTIDPATH variable is set + mtdheader_dir = os.getenv("MANTIDPATH") + if mtdheader_dir is None: + raise RuntimeError('MANTIDPATH variable not be found. Please ensure Mantid is installed correctly.') + + # Runners and reporters + self._runner = runner + self._reporters = output + + # Init mantid + sys.path.append(os.path.abspath(mtdheader_dir).replace('\\','/')) + runner.setMantidDir(mtdheader_dir) + + # If given option is a directory + if os.path.isdir(test_loc) == True: + test_dir = os.path.abspath(test_loc).replace('\\','/') + sys.path.append(test_dir) + runner.setTestDir(test_dir) + self._tests = self.loadTestsFromDir(test_dir) + else: + if os.path.exists(test_loc) == False: + print 'Cannot find file ' + test_loc + '.py. Please check the path.' + exit(2) + test_dir = os.path.abspath(os.path.dirname(test_loc)).replace('\\','/') + sys.path.append(test_dir) + runner.setTestDir(test_dir) + self._tests = self.loadTestsFromModule(os.path.basename(test_loc)) + + if len(self._tests) == 0: + print 'No tests defined in ' + test_dir + '. Please ensure all test classes sub class stresstesting.MantidStressTest.' + exit(2) + + self._passedTests = 0 + self._skippedTests = 0 + self._failedTests = 0 + self._lastTestRun = 0 + + self._testsInclude = testsInclude + self._testsExclude = testsExclude + + # Create a prefix to use when executing the code + runner.createCodePrefix() + + totalTests = property(lambda self: len(self._tests)) + skippedTests = property(lambda self: (self.totalTests - self._passedTests - self._failedTests)) + passedTests = property(lambda self: self._passedTests) + failedTests = property(lambda self: self._failedTests) + + def __shouldTest(self, suite): + if self._testsInclude is not None: + if not self._testsInclude in suite.name: + suite.markAsSkipped("NotIncludedTest") + return False + if self._testsExclude is not None: + if self._testsExclude in suite.name: + suite.markAsSkipped("ExcludedTest") + return False + return True + + def executeTests(self): + # Get the defined tests + for suite in self._tests: + if self.__shouldTest(suite): + suite.execute(self._runner) + if suite.status == "success": + self._passedTests += 1 + elif suite.status == "skipped": + self._skippedTests += 1 + else: + self._failedTests += 1 + suite.reportResults(self._reporters) + self._lastTestRun += 1 + + def markSkipped(self, reason=None): + for suite in self._tests[self._lastTestRun:]: + suite.setOutputMsg(reason) + suite.reportResults(self._reporters) # just let people know you were skipped + + def loadTestsFromDir(self, test_dir): + ''' Load all of the tests defined in the given directory''' + entries = os.listdir(test_dir) + tests = [] + regex = re.compile('^.*\.py$', re.IGNORECASE) + for file in entries: + if regex.match(file) != None: + tests.extend(self.loadTestsFromModule(os.path.join(test_dir,file))) + return tests + + def loadTestsFromModule(self, filename): + ''' + Load test classes from the given module object which has been + imported with the __import__ statement + ''' + modname = os.path.basename(filename) + modname = modname.split('.py')[0] + path = os.path.dirname(filename) + pyfile = open(filename, 'r') + tests = [] + try: + mod = imp.load_module(modname, pyfile, filename, ("","",imp.PY_SOURCE)) + mod_attrs = dir(mod) + for key in mod_attrs: + value = getattr(mod, key) + if key is "MantidStressTest" or not inspect.isclass(value): + continue + if self.isValidTestClass(value): + test_name = key + tests.append(TestSuite(modname, test_name, filename)) + except Exception: + # Error loading the source, add fake unnamed test so that an error + # will get generated when the tests are run and it will be counted properly + tests.append(TestSuite(modname, None, filename)) + finally: + pyfile.close() + return tests + + def isValidTestClass(self, class_obj): + """Returns true if the test is a valid test class. It is valid + if: the class subclassses MantidStressTest and has no abstract methods + """ + if not issubclass(class_obj, MantidStressTest): + return False + # Check if the get_reference_file is abstract or not + if hasattr(class_obj, "__abstractmethods__"): + if len(class_obj.__abstractmethods__) == 0: + return True + else: + return False + else: + return True + +######################################################################### +# Class to handle the environment +######################################################################### +class MantidFrameworkConfig: + + def __init__(self, mantidDir=None, sourceDir=None, + data_dirs="", save_dir = "", + loglevel='information', archivesearch=False): + # force the environment variable + if mantidDir is not None: + if os.path.isfile(mantidDir): + mantidDir = os.path.split(mantidDir)[0] + os.environ['MANTIDPATH'] = mantidDir + + # add it to the python path + directory = os.getenv("MANTIDPATH") + if directory is None: + raise RuntimeError("MANTIDPATH not found.") + else: + sys.path.append(directory) + if not os.path.isdir(os.path.join(directory, "mantid")): + raise RuntimeError("Did not find mantid package in %s" % directory) + + self.__sourceDir = self.__locateSourceDir(sourceDir) + + # add location of stress tests + self.__testDir = self.__locateTestsDir() + + # add location of the analysis tests + sys.path.insert(0,self.__locateTestsDir()) + + # setup the rest of the magic directories + self.__saveDir = save_dir + if not os.path.exists(save_dir): + print "Making directory %s to save results" % save_dir + os.mkdir(save_dir) + + else: + if not os.path.isdir(save_dir): + raise RuntimeError("%s is not a directory" % save_dir) + + # assume a string is already semicolon-seaprated + if type(data_dirs) == str: + self.__dataDirs = data_dirs + self.__dataDirs += ";%s" % self.__saveDir + else: + data_path = "" + data_dirs.append(self.__saveDir) + for direc in data_dirs: + if not os.path.exists(direc): + raise RuntimeError('Directory ' + direc + ' was not found.') + search_dir = direc.replace('\\','/') + if not search_dir.endswith('/'): + search_dir += '/' + data_path += search_dir + ';' + #endfor + self.__dataDirs = data_path + + # set the log level + self.__loglevel = loglevel + self.__datasearch = archivesearch + + def __locateSourceDir(self, suggestion): + if suggestion is None: + loc = os.path.abspath(__file__) + suggestion = os.path.split(loc)[0] # get the directory + loc = os.path.abspath(suggestion) + loc = os.path.normpath(loc) + + if os.path.isdir(loc): + return loc + else: + raise RuntimeError("Failed to find source directory") + + def __locateTestsDir(self): + loc = os.path.join(self.__sourceDir, "..", "..", "tests", "analysis") + loc = os.path.abspath(loc) + if os.path.isdir(loc): + return loc + else: + raise RuntimeError("Expected the analysis tests directory at '%s' but it is not a directory " % loc) + + def __getDataDirsAsString(self): + return self._dataDirs + + def __moveFile(self, src, dst): + if os.path.exists(src): + import shutil + shutil.move(src, dst) + + def __copyFile(self, src, dst): + if os.path.exists(src): + import shutil + shutil.copyfile(src, dst) + + saveDir = property(lambda self: self.__saveDir) + testDir = property(lambda self: self.__testDir) + + def config(self): + + # Start mantid + import mantid + from mantid.kernel import config + + # backup the existing user properties so we can step all over it + self.__userPropsFile = config.getUserFilename() + self.__userPropsFileBackup = self.__userPropsFile + ".bak" + self.__userPropsFileSystest = self.__userPropsFile + ".systest" + self.__moveFile(self.__userPropsFile, self.__userPropsFileBackup) + + # Make sure we only save these keys here + config.reset() + + # Up the log level so that failures can give useful information + config['logging.loggers.root.level'] = self.__loglevel + # Set the correct search path + config['datasearch.directories'] = self.__dataDirs + + # Save path + config['defaultsave.directory'] = self.__saveDir + + # Do not show paraview dialog + config['paraview.ignore'] = "1" + + # Do not update instrument definitions + config['UpdateInstrumentDefinitions.OnStartup'] = "0" + + # Disable usage reports + config['usagereports.enabled'] = "0" + + # Case insensitive + config['filefinder.casesensitive'] = 'Off' + + # datasearch + if self.__datasearch: + config["datasearch.searcharchive"] = 'On' + + # Save this configuration + config.saveConfig(self.__userPropsFile) + + def restoreconfig(self): + self.__moveFile(self.__userPropsFile, self.__userPropsFileSystest) + self.__moveFile(self.__userPropsFileBackup, self.__userPropsFile) + + +#============================================================================== +def envAsString(): + """Returns a string describing the environment + (platform) of this test.""" + if os.name == 'nt': + system = platform.system().lower()[:3] + arch = platform.architecture()[0][:2] + env = system + arch + elif os.name == 'mac': + env = platform.mac_ver()[0] + else: + env = platform.dist()[0] + "-" + platform.dist()[1] + return env diff --git a/Code/Mantid/Testing/SystemTests/lib/systemtests/xmlreporter.py b/Code/Mantid/Testing/SystemTests/lib/systemtests/xmlreporter.py new file mode 100644 index 000000000000..a991fe30f7df --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/lib/systemtests/xmlreporter.py @@ -0,0 +1,86 @@ +import os +import sys +from xml.dom.minidom import getDOMImplementation +import stresstesting + +class XmlResultReporter(stresstesting.ResultReporter): + + _time_taken = 0.0 + _failures = [] + _skipped = [] + + def __init__(self, showSkipped=True): + self._doc = getDOMImplementation().createDocument(None,'testsuite',None) + self._show_skipped = showSkipped + + def reportStatus(self): + return len(self._failures) == 0 + + def getResults(self): + # print the command line summary version of the results + self._failures.sort() + self._skipped.sort() + print + if self._show_skipped and len(self._skipped) > 0: + print "SKIPPED:" + for test in self._skipped: + print test.name + if len(self._failures) > 0: + print "FAILED:" + for test in self._failures: + print test.name + + # return the xml document version + docEl = self._doc.documentElement + docEl.setAttribute('name','SystemTests') + docEl.setAttribute('tests',str(len(docEl.childNodes))) + docEl.setAttribute('failures',str(len(self._failures))) + docEl.setAttribute('skipped', str(len(self._skipped))) + docEl.setAttribute('time',str(self._time_taken)) + return self._doc.toxml() + + def dispatchResults(self, result): + ''' This relies on the order and names of the items to give the correct output ''' + test_name = result.name.split('.') + if len(test_name) > 1: + class_name = '.'.join(test_name[:-1]) + name = test_name[-1] + else: + class_name = result.name + name = result.name + elem = self._doc.createElement('testcase') + elem.setAttribute('classname',"SystemTests." + class_name) + elem.setAttribute('name',name) + if result.status == 'skipped': + self._skipped.append(result) + skipEl = self._doc.createElement('skipped') + if len(result.output) > 0: + if "Missing required file" in result.output: + skipEl.setAttribute('message', "MissingRequiredFile") + else: + skipEl.setAttribute('message', result.output) + skipEl.appendChild(self._doc.createTextNode(result.output)) + elem.appendChild(skipEl) + elif result.status != 'success': + self._failures.append(result) + failEl = self._doc.createElement('failure') + failEl.setAttribute('file',result.filename) + output = '' + if len(result.output) > 0: + output += result.output + if len(output) > 0: + failEl.appendChild(self._doc.createTextNode(output)) + elem.appendChild(failEl) + else: + time_taken = 0.0 + for t in result.resultLogs(): + if t[0] == 'iteration time_taken': + time_taken = float(t[1].split(' ')[1]) + self._time_taken += time_taken + if t[0] == 'memory footprint increase': + memEl = self._doc.createElement('memory') + memEl.appendChild(self._doc.createTextNode(t[1])) + elem.appendChild(memEl) + elem.setAttribute('time',str(time_taken)) + elem.setAttribute('totalTime',str(time_taken)) + self._doc.documentElement.appendChild(elem) diff --git a/Code/Mantid/Testing/SystemTests/scripts/.gitignore b/Code/Mantid/Testing/SystemTests/scripts/.gitignore new file mode 100644 index 000000000000..a2eca9a1a72a --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/.gitignore @@ -0,0 +1,2 @@ +datasearch-directories.txt +defaultsave-directory.txt diff --git a/Code/Mantid/Testing/SystemTests/scripts/CMakeLists.txt b/Code/Mantid/Testing/SystemTests/scripts/CMakeLists.txt new file mode 100644 index 000000000000..ba4866680fca --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/CMakeLists.txt @@ -0,0 +1,28 @@ +###################################################################### +# Write out a files containing +# - the data search directories +# - the default save directory +# These will be read by the MantidConfig class to configure the +# properties file +###################################################################### +# Data search directories +set(DATA_DIRS "") +# Input data +set(SYSTEM_TEST_DATA_DIR ${ExternalData_BINARY_ROOT}/Testing/Data/SystemTest) +list(APPEND DATA_DIRS ${SYSTEM_TEST_DATA_DIR}) +list(APPEND DATA_DIRS ${SYSTEM_TEST_DATA_DIR}/LOQ) +list(APPEND DATA_DIRS ${SYSTEM_TEST_DATA_DIR}/SANS2D) +list(APPEND DATA_DIRS ${SYSTEM_TEST_DATA_DIR}/PEARL) +# Reference results +list(APPEND DATA_DIRS ${ExternalData_BINARY_ROOT}/Testing/SystemTests/tests/analysis/reference) + +# Output to file +# If this is changed, make sure to update the .gitignore in this directory +set(DATA_DIRS_FILE ${CMAKE_CURRENT_LIST_DIR}/datasearch-directories.txt) +# The quotes are important as CMake translates the list to a semicolon-separated string +file(WRITE ${DATA_DIRS_FILE} "${DATA_DIRS}") + +# Default save directory +set(SAVE_DIR ${CMAKE_CURRENT_BINARY_DIR} ) +set(SAVE_DIR_FILE ${CMAKE_CURRENT_LIST_DIR}/defaultsave-directory.txt) +file(WRITE ${SAVE_DIR_FILE} "${SAVE_DIR}") diff --git a/Code/Mantid/Testing/SystemTests/scripts/InstallerTests.py b/Code/Mantid/Testing/SystemTests/scripts/InstallerTests.py new file mode 100644 index 000000000000..620d4e5e7563 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/InstallerTests.py @@ -0,0 +1,130 @@ +"""Finds a package, installs it and runs the tests against it. +""" +import os +import sys +import platform +import shutil +import subprocess +from getopt import getopt + +from mantidinstaller import (createScriptLog, log, stop, failure, scriptfailure, + get_installer, run) + +THIS_MODULE_DIR = os.path.dirname(os.path.realpath(__file__)) +SAVE_DIR_LIST_PATH = os.path.join(THIS_MODULE_DIR, "defaultsave-directory.txt") + +try: + opt, argv = getopt(sys.argv[1:],'d:nohvR:l:') +except: + opt = [('-h','')] + +if ('-h','') in opt: + print "Usage: %s [OPTIONS]" % os.path.basename(sys.argv[0]) + print + print "Valid options are:" + print " -d Directory to look for packages. Defaults to current working directory" + print " -n Run tests without installing Mantid (it must be already installed)" + print " -o Output to the screen instead of log files" + print " -h Display the usage" + print " -R Optionally only run the test matched by the regex" + print " -l Log level" + sys.exit(0) + +doInstall = True +test_regex = None +out2stdout = False +log_level = 'notice' +package_dir = os.getcwd() +for option, arg in opt: + if option == '-n': + doInstall = False + if option == '-o': + out2stdout = True + if option == '-R' and arg != "": + test_regex = arg + if option == '-l' and arg != "": + log_level = arg + if option == '-d' and arg != "": + package_dir = arg + +# Log to the configured default save directory +with open(SAVE_DIR_LIST_PATH, 'r') as f_handle: + output_dir = f_handle.read().strip() + +createScriptLog(os.path.join(output_dir, "TestScript.log")) +testRunLogPath = os.path.join(output_dir, "test_output.log") +testRunErrPath = os.path.join(output_dir, "test_errors.log") + +log('Starting system tests') +log('Searching for packages in ' + package_dir) +installer = get_installer(package_dir, doInstall) + +# Install the found package +if doInstall: + log("Installing package '%s'" % installer.mantidInstaller) + try: + installer.install() + log("Application path " + installer.mantidPlotPath) + installer.no_uninstall = False + except Exception,err: + scriptfailure("Installing failed. "+str(err)) +else: + installer.no_uninstall = True + +# Ensure MANTIDPATH points at this directory so that +# the correct properties file is loaded +mantidPlotDir = os.path.dirname(installer.mantidPlotPath) +log('MantidPlot directory %s' % mantidPlotDir) +log('Pointing MANTIDPATH at MantidPlot directory %s' % mantidPlotDir) +os.environ["MANTIDPATH"] = mantidPlotDir + +try: + # Keep hold of the version that was run + version = run(installer.mantidPlotPath + ' -v') + version_tested = open(os.path.join(output_dir,'version_tested.log'),'w') + if version and len(version) > 0: + version_tested.write(version) + version_tested.close() +except Exception, err: + scriptfailure('Version test failed: '+str(err), installer) + +try: + # Now get the revision number/git commit ID (remove the leading 'g' that isn't part of it) + revision = run(installer.mantidPlotPath + ' -r').lstrip('g') + revision_tested = open(os.path.join(output_dir, 'revision_tested.log'), 'w') + if revision and len(version) > 0: + revision_tested.write(revision) + revision_tested.close() +except Exception, err: + scriptfailure('Revision test failed: '+str(err), installer) + +log("Running system tests. Log files are: '%s' and '%s'" % (testRunLogPath,testRunErrPath)) +try: + # Pick the correct Mantid along with the bundled python on windows + run_test_cmd = "%s %s/runSystemTests.py --loglevel=%s --mantidpath=%s" % \ + (installer.python_cmd, THIS_MODULE_DIR, log_level, mantidPlotDir) + if test_regex is not None: + run_test_cmd += " -R " + test_regex + if out2stdout: + p = subprocess.Popen(run_test_cmd, shell=True) # no PIPE: print on screen for debugging + p.wait() + else: + p = subprocess.Popen(run_test_cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) + out,err = p.communicate() # waits for p to finish + testsRunLog = open(testRunLogPath,'w') + if out: + testsRunLog.write(out) + testsRunLog.close() + testsRunErr = open(testRunErrPath,'w') + if err: + testsRunErr.write(err) + testsRunErr.close() + if p.returncode != 0: + failure(installer) +except Exception, exc: + scriptfailure(str(exc),installer) +except: + failure(installer) + +# Test run completed successfully +stop(installer) diff --git a/Code/Mantid/Testing/SystemTests/scripts/mantidinstaller.py b/Code/Mantid/Testing/SystemTests/scripts/mantidinstaller.py new file mode 100644 index 000000000000..88a6aeb13457 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/mantidinstaller.py @@ -0,0 +1,277 @@ +"""Defines classes for handling installation +""" +import platform +import os +import glob +import sys +import subprocess + +scriptLog = None + +def createScriptLog(path): + global scriptLog + scriptLog = open(path,'w') + +def stop(installer): + ''' Save the log, uninstall the package and exit with error code 0 ''' + try: + installer.uninstall() + except Exception, exc: + log("Could not uninstall package %s: %s" % (installer.mantidInstaller, str(exc))) + scriptLog.close() + sys.exit(0) + +def log(txt): + ''' Write text to the script log file ''' + if scriptLog is None: + return + if txt and len(txt) > 0: + scriptLog.write(txt) + if not txt.endswith('\n'): + scriptLog.write('\n') + print txt + +def failure(installer): + ''' Report failure of test(s), try to uninstall package and exit with code 1 ''' + try: + installer.uninstall() + except Exception, exc: + log("Could not uninstall package %s: %s" % (installer.mantidInstaller, str(exc))) + pass + + log('Tests failed') + print 'Tests failed' + sys.exit(1) + +def scriptfailure(txt, installer=None): + '''Report failure of this script, try to uninstall package and exit with code 1 ''' + if txt: + log(txt) + if installer is not None: + try: + installer.uninstall() + except Exception: + log("Could not uninstall package %s " % self.mantidInstaller) + scriptLog.close() + sys.exit(1) + + +def get_installer(package_dir, do_install=True): + """ + Creates the correct class for the current platform + @param package_dir :: The directory to search for packages + @param do_install :: True if installation is to be performed + """ + system = platform.system() + if system == 'Windows': + return NSISInstaller(package_dir, do_install) + elif system == 'Linux': + dist = platform.dist() + if dist[0] == 'Ubuntu': + return DebInstaller(package_dir, do_install) + elif dist[0] == 'redhat': + return RPMInstaller(package_dir, do_install) + else: + scriptfailure('Unknown Linux flavour: %s' % str(dist)) + elif system == 'Darwin': + return DMGInstaller(package_dir, do_install) + else: + raise scriptfailure("Unsupported platform") + +def run(cmd): + """Run a command in a subprocess""" + try: + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) + out = p.communicate()[0] + if p.returncode != 0: + raise Exception('Returned with code '+str(p.returncode)+'\n'+out) + except Exception,err: + log('Error in subprocess %s:\n' % str(err)) + raise + log(out) + return out + + +class MantidInstaller(object): + """ + Base-class for installer objects + """ + mantidInstaller = None + mantidPlotPath = None + no_uninstall = False + python_cmd = "python" + + def __init__(self, package_dir, filepattern, + do_install): + """Initialized with a pattern to + find a path to an installer + """ + if not do_install: + return + # Glob for packages + matches = glob.glob(os.path.join(package_dir, filepattern)) + if len(matches) > 0: + # This will put the release mantid packages at the start and the nightly ones at the end + # with increasing version numbers + matches.sort() + # Make sure we don't get Vates + for match in matches: + if 'vates'in match: + matches.remove(match) + # Take the last one as it will have the highest version number + if len(matches) > 0: + self.mantidInstaller = os.path.join(os.getcwd(), matches[-1]) + log("Using installer " + self.mantidInstaller) + else: + raise RuntimeError('Unable to find installer package in "%s"' % os.getcwd()) + + def install(self): + self.do_install() + + def do_install(self): + raise NotImplementedError("Override the do_install method") + + def uninstall(self): + if not self.no_uninstall: + self.do_uninstall() + + def do_uninstall(self): + raise NotImplementedError("Override the do_uninstall method") + +class NSISInstaller(MantidInstaller): + """Uses an NSIS installer + to install Mantid + """ + + def __init__(self, package_dir, do_install): + MantidInstaller.__init__(self, package_dir, 'Mantid-*-win*.exe', do_install) + self.mantidPlotPath = 'C:/MantidInstall/bin/MantidPlot.exe' + self.python_cmd = "C:/MantidInstall/bin/python.exe" + + def do_install(self): + """ + The NSIS installer spawns a new process and returns immediately. + We use the start command with the /WAIT option to make it stay around + until completion. + The chained "&& exit 1" ensures that if the return code of the + installer > 0 then the resulting start process exits with a return code + of 1 so we can pick this up as a failure + """ + run('start "Installer" /wait ' + self.mantidInstaller + ' /S') + + def do_uninstall(self): + "Runs the uninstall exe" + uninstall_path = 'C:/MantidInstall/Uninstall.exe' + run('start "Uninstaller" /wait ' + uninstall_path + ' /S') + +class DebInstaller(MantidInstaller): + """Uses a deb package to install mantid + """ + + def __init__(self, package_dir, do_install): + MantidInstaller.__init__(self, package_dir, 'mantid*.deb', do_install) + package = os.path.basename(self.mantidInstaller) + if 'mantidnightly' in package: + self.mantidPlotPath = '/opt/mantidnightly/bin/MantidPlot' + elif 'mantidunstable' in package: + self.mantidPlotPath = '/opt/mantidunstable/bin/MantidPlot' + else: + self.mantidPlotPath = '/opt/Mantid/bin/MantidPlot' + + def do_install(self): + """Uses gdebi to run the install + """ + run('sudo gdebi -n ' + self.mantidInstaller) + + def do_uninstall(self): + """Removes the debian package + """ + package_name = os.path.basename(self.mantidInstaller).split("_")[0] + run('sudo dpkg --purge %s' % package_name) + +class RPMInstaller(MantidInstaller): + """Uses a rpm package to install mantid + """ + + def __init__(self, package_dir, do_install): + MantidInstaller.__init__(self, package_dir, 'mantid*.rpm', do_install) + package = os.path.basename(self.mantidInstaller) + if 'mantidnightly' in package: + self.mantidPlotPath = '/opt/mantidnightly/bin/MantidPlot' + elif 'mantidunstable' in package: + self.mantidPlotPath = '/opt/mantidunstable/bin/MantidPlot' + else: + self.mantidPlotPath = '/opt/Mantid/bin/MantidPlot' + + def do_install(self): + """Uses yum to run the install. Current user must be in sudoers + """ + try: + run('sudo yum -y install ' + self.mantidInstaller) + except Exception, exc: + # This reports an error if the same package is already installed + if 'is already installed' in str(exc): + log("Current version is up-to-date, continuing.\n") + pass + else: + raise + + def do_uninstall(self): + """Removes the rpm package + """ + package_name = os.path.basename(self.mantidInstaller).split("-")[0] + run('sudo yum -y erase %s' % package_name) + + +class DMGInstaller(MantidInstaller): + """Uses an OS X dmg file to install mantid + """ + def __init__(self, package_dir, do_install): + MantidInstaller.__init__(self, package_dir, 'mantid-*.dmg', do_install) + self.mantidPlotPath = '/Applications/MantidPlot.app/Contents/MacOS/MantidPlot' + # only necessary on 10.8 build + if int(platform.release().split('.')[0]) < 13: + os.environ['DYLD_LIBRARY_PATH'] = '/Applications/MantidPlot.app/Contents/MacOS' + + def do_install(self): + """Mounts the dmg and copies the application into the right place. + """ + p = subprocess.Popen(['hdiutil','attach',self.mantidInstaller],stdin=subprocess.PIPE,stdout=subprocess.PIPE) + p.stdin.write('yes') # This accepts the GPL + p.communicate()[0] # This captures (and discards) the GPL text + mantidInstallerName = os.path.basename(self.mantidInstaller) + mantidInstallerName = mantidInstallerName.replace('.dmg','') + run('sudo cp -r /Volumes/'+ mantidInstallerName+'/MantidPlot.app /Applications/' ) + run('hdiutil detach /Volumes/'+ mantidInstallerName+'/') + + def do_uninstall(self): + run('sudo rm -fr /Applications/MantidPlot.app/') + +#------------------------------------------------------------------------------- +# Main +#------------------------------------------------------------------------------- +# If called as a standalone script then this can be used to install/uninstall +# Mantid +if __name__ == "__main__": + import optparse + parser = optparse.OptionParser("Usage: %prog ", + description="Commands available: install, uninstall") + (options, args) = parser.parse_args() + # All arguments are required + if len(args) != 2: + parser.print_help() + sys.exit(1) + + command, package_dir = args[0], args[1] + package_dir = os.path.abspath(package_dir) + print package_dir + installer = get_installer(package_dir) + if command.lower() == "install": + print "Installing package '%s'" % installer.mantidInstaller + installer.install() + elif command.lower() == "uninstall": + print "Removing package '%s'" % installer.mantidInstaller + installer.uninstall() + else: + raise RuntimeError("Invalid command '%s'. Options are: install, uninstall" % command) + diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/README.txt b/Code/Mantid/Testing/SystemTests/scripts/performance/README.txt new file mode 100644 index 000000000000..717d3e96cfe6 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/README.txt @@ -0,0 +1 @@ +This is basically a fork of the performance test support code in the main Mantid repository (https://github.com/mantidproject/mantid/tree/master/Test/PerformanceTests) to enable performance monitoring of the system tests in a similar fashion. diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/analysis.py b/Code/Mantid/Testing/SystemTests/scripts/performance/analysis.py new file mode 100644 index 000000000000..c6d3429fae11 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/analysis.py @@ -0,0 +1,699 @@ +""" Module containing functions for test +performance analyis, plotting, and saving +to other formats (CSV, PDF) """ + +import testresult +import os +import sys +import sqlresults +from sqlresults import get_results +import matplotlib +from pylab import * +import numpy as np +import datetime +import random + +# This is the date string format as returned by the database +DATE_STR_FORMAT = "%Y-%m-%d %H:%M:%S.%f" + +#============================================================================================ +def get_orderby_clause(last_num): + """Returns a order by clause that limits to the last # revisions """ + if last_num > 0: + return " ORDER BY revision DESC limit %d" % last_num + else: + return '' + + +#============================================================================================ +def get_data(name='', type='', x_field='revision', y_field='runtime', last_num=-1): + """Get the test runtime/iteration as a function of an X variable. + + Parameters + ---------- + name :: full name of the test + type :: type of test to filter by + x_field :: name of the field for the X axis. + e.g. 'revision' (default) + or 'date' : exact date/time of launch + or 'index' : using the date, but returning an index of build # + instead of the date (better scaling) + last_num :: only get the last this-many entries from the table, sorted by revision. + if < 0, then get everything + + Returns + ------- + x :: list of X values, sorted increasing + y :: list of runtime/iteration for each x + """ + + results = get_results(name, type, where_clause='', orderby_clause=get_orderby_clause(last_num)) + + # Data dict. Key = X variable; Value = (iterations total, runtime total) + data = {} + for res in results: + # Get the x field value + if x_field == 'index': + x = res['date'] + else: + x = res[x_field] + + if data.has_key(x): + old = data[x] + iters = old[0] + 1 # Iterations + runtime = old[1] + res[y_field] + else: + iters = 1 + runtime = res[y_field] + # Save the # of iterations and runtime + data[x] = (iters, runtime) + + # Now make a sorted list of (x, runtime/iteration) + sorted = [(x, y[1]/y[0]) for (x,y) in data.items()] + sorted.sort() + + x = [a for (a,b) in sorted] + # For index, convert into an integer index + if x_field == 'index': + x = range( len(x) ) + y = [b for (a,b) in sorted] + + return (x,y) + + +#============================================================================================ +def get_unique_fields(results, field): + """Given a list of TestResult, return a + list of all unique values of 'field'""" + out = set() + for res in results: + out.add( res[field] ) + return list(out) + +#============================================================================================ +def get_results_matching(results, field, value): + """Given a list of TestResult, + return a list of TestResult's where 'field' matches 'value'.""" + out = [] + for res in results: + if res[field] == value: + out.append(res) + return out + + +#============================================================================================ +def smart_ticks(index, values): + """On the current figure, set the ticks at X positions + given by index, with value given by values (ints). + But it tries to space them out in a reasonable way. + """ + if type(values[0]).__name__ == "unicode": + # Make the array of dates + dates = [] + for val in values: + try: + datetime.datetime.strptime(val, DATE_STR_FORMAT) + dates.append(val) + except: + pass + if len(dates) == 0: return + td = dates[-1] - dates[0] + if (td < datetime.timedelta(hours=1)): + values_str = [d.strftime("%M:%S") for d in dates] + elif (td < datetime.timedelta(days=1)): + values_str = [d.strftime("%H:%M") for d in dates] + else: + values_str = [d.strftime("%m-%d, %H:%M") for d in dates] + else: + # convert to list of strings + values_str = [str(val) for val in values] + + if len(values_str) == 0: return + + w = gcf().get_figwidth()*gcf().get_dpi() + spacing = w/len(index) + + tick_index = [] + tick_strings = [] + + space_available = 0 + for i in xrange(len(index)): + s = str(values_str[i]); + s_width = (len(s)+1) * 12.0 # About 12 pixels per letter? And add a space + space_available +=spacing + if space_available >= s_width: + space_available = 0 + tick_index.append(i) + tick_strings.append(s) + + xticks( tick_index, tick_strings ) + + + +#============================================================================================ +def plot_success_count(type='system', last_num=-1, x_field='revision'): + """ Plot the count of successful/failed tests vs revision number + + Parameters + ---------- + type :: 'system', or 'performance' + """ + results = get_results('', type, where_clause='', orderby_clause=get_orderby_clause(last_num)) + revisions = get_unique_fields(results, x_field) + + # Go through each revision + success = [] + fail = [] + for revision in revisions: + these = get_results_matching(results, x_field, revision) + succeeded = 0 + failed = 0 + for res in these: + if res["success"]: + succeeded += 1 + else: + failed += 1 + # Keep the list of them + success.append(succeeded) + fail.append(failed) + + figure() + revisions = np.array(revisions) + fail = np.array(fail) + success = np.array(success) + + index = np.arange(len(revisions)) +# p1 = bar(index, fail, color='r') +# p2 = bar(index, success, color='g', bottom=fail) +# legend( (p1[0], p2[0]), ('Failure', 'Success') ) + + p1 = fill_between(index, fail, 0, color='r') + p2 = fill_between(index, success+fail, fail, color='g') + #legend( (p1, p2), ('Failure', 'Success') ) + + smart_ticks( index, revisions) + + + ylabel('Success/Fail') + xlabel(x_field) + revsare = "all revs" + if last_num > 0: revsare = "last %d revs" % last_num + title("Success/Fail History of %s tests (%s)" % (type, revsare)) + + +#============================================================================================ +def plot_runtime(*args, **kwargs): + """ Call get_data() + + Parameters + ---------- + - See get_data() for the full list + """ + (x,y) = get_data(*args, **kwargs) + + figure() + index = np.arange(len(x)) + plot(index,y,'-b.') + smart_ticks( index, x) + ylabel('Runtime/iteration (sec)') + xlabel(kwargs['x_field']) + + last_num =kwargs.get('last_num',-1) + if last_num > 0: + title("Runtime History of %s (last %d revs)" % (kwargs['name'], kwargs["last_num"]) ) + else: + title("Runtime History of %s (all revs)" % kwargs['name']) + + + + +#============================================================================================ +def plot_memory(*args, **kwargs): + """ Call get_data() + + Parameters + ---------- + - See get_data() for the full list + """ + (x,y) = get_data(*args, **kwargs) + + figure() + index = np.arange(len(x)) + plot(index,y,'-b.') + smart_ticks( index, x) + ylabel("Memory 'loss' (MB)") + xlabel(kwargs['x_field']) + + last_num =kwargs.get('last_num',-1) + if last_num > 0: + title("Memory History of %s (last %d revs)" % (kwargs['name'], kwargs["last_num"]) ) + else: + title("Memory History of %s (all revs)" % kwargs['name']) + + + + + + + + + + + +# The default HTML header +default_html_header = """ + +""" + +default_html_footer = """""" + +#============================================================================================ +def make_css_file(path): + """ Make a save the report.css file to be used by all html """ + default_css = """ +table +{ +border-collapse:collapse; +background-color:FFAAAA; +} +table, th, td +{ +border: 1px solid black; +padding: 2px 6px; +} +.failedrow, .failedrow TD, .failedrow TH +{ +background-color:#FFAAAA; +color:black; +} +.alternaterow, .alternaterow TD, .alternaterow TH +{ +background-color:#FFFFAA; +color:black; +} +.error +{ +color:red; +font-weight: bold; +} + + """ + f = open(os.path.join(path, "report.css"), 'w') + f.write(default_css) + f.close() + +#============================================================================================ +def make_environment_html(res): + """Return a HTML string with details of test environment, taken from the + 'res' TestResult object""" + html = """ + + + +
Host name: %s
Environment: %s
Type of runner: %s
+ """ % (res['host'], res['environment'], res['runner']) + return html + +#============================================================================================ +def make_detailed_html_file(basedir, name, fig1, fig2, fig3, fig4, last_num): + """ Create a detailed HTML report for the named test """ + html = default_html_header + html += """

Detailed report for %s


""" % (name) + html += """runtime vs revision number (latest %d entries)\n""" % (fig1, last_num) + html += """runtime vs revision number\n""" % (fig2) + html += """memory vs revision number (latest %d entries)\n""" % (fig3, last_num) + html += """memory vs revision number\n""" % (fig4) + html += """

Test Results

""" + + fields = ['revision', 'date', 'commitid', 'compare', 'status', 'runtime', 'cpu_fraction', 'memory_change', 'variables'] + + table_row_header = "" + for field in fields: + if field == "runtime": field = "Runtime/Iter." + if field == "memory_change": field = "Memory 'loss'" + field = field[0].upper() + field[1:] + table_row_header += "%s" % field + table_row_header += "" + + html += """""" + table_row_header + + table_html = '' + results = get_results(name, type='', where_clause='') + sorted = [(res["revision"], res["variables"], res["date"], res) for res in results] + sorted.sort(reverse=False) + count = 0 + last_rev = 0 + commitid = '' + last_commitid = '' + row_class = '' + table_rows = [] + for (rev, variable, date, res) in sorted: + table_row_html = '' + if (rev != last_rev): + # Changed SVN revision. Swap row color + if row_class == '': + row_class = "class=alternaterow" + else: + row_class = '' + last_rev = rev + + if commitid != last_commitid: + last_commitid = commitid + + if res["success"]: + table_row_html += "\n" % row_class + else: + table_row_html += "\n" + + for field in fields: + val = '' + + if field == 'compare': + # Comparison to previous commit, if anything can be done + if (last_commitid != ""): + val = """diff""" % (last_commitid, commitid) + + else: + # Normal fields + val = res[field] + + # Trim the fractional seconds + if field=="date": + val = str(val)[0:19] + + # Add a trac link + if field=="commitid": + commitid = val + partial_commitid = val + if (len(partial_commitid) > 7): partial_commitid = partial_commitid[0:7]; + val = """%s""" % (commitid, partial_commitid) + + if field=="runtime": + val = "%.3f" % (res["runtime"]) + + table_row_html += "" % val + table_row_html += "\n\n" + table_rows.append(table_row_html) + + # Now print out all the rows in reverse order + table_rows.reverse() + for row in table_rows: + html += row +# # Add the row header every 30 entries +# count += 1 +# if count % 30 == 0: html += table_row_header + + # And one more at the end for good measure + html += table_row_header + html += "
%s
" + + if len(results)> 0: + html += """

Environment

+ %s""" % make_environment_html(results[0]) + + html += default_html_footer + +# last_date = sorted[-1][1]["date"] +# results = get_results(name, type='', get_log=False, where_clause=" date = '%s'" % last_date) +# if len(results)>0: +# html += + + f = open(os.path.join(basedir, "%s.htm" % name), "w") + html = html.replace("\n", os.linesep) # Fix line endings for windows + f.write(html) + f.close() + + +#============================================================================================ +def how_long_ago(timestr): + """Returns a string giving how long ago something happened, + in human-friendly way """ + import time + now = datetime.datetime.now() + then = datetime.datetime.strptime(timestr, DATE_STR_FORMAT) + td = (now-then) + sec = td.seconds + min = int(sec / 60) + hours = int(min / 60) + days = td.days + weeks = int(days / 7) + sec = sec % 60 + min = min % 60 + hours = hours % 24 + days = days % 7 + + if weeks > 0: + return "%dw%dd" % (weeks,days) + elif days > 0: + return "%dd%dh" % (days, hours) + elif hours > 0: + return "%dh%dm" % (hours, min) + elif min > 0: + return "%dm%ds" % (min, sec) + else: + return "%ds" % (sec) + + return "" + + +#============================================================================================ +def get_html_summary_table(test_names): + """Returns a html string summarizing the tests with these names """ + html = """ + + + + + + + + """ + + for name in test_names: + res = sqlresults.get_latest_result(name) + if not res is None: + # Calculate how long ago + + if not res["success"]: + html += """""" + else: + html += """""" + html += """""" % (name, name) + html += """""" % res['type'] + html += """""" % res['status'] + + # Friendly date + try: + date = datetime.datetime.strptime(res['date'], DATE_STR_FORMAT) + html += """""" % date.strftime("%b %d, %H:%M:%S") + except: + html += """""" + + html += """""" % res['runtime'] + html += """""" % res['memory_change'] + html += """""" + + html += """
Test NameTypeStatusWhen?Total runtime (s)Memory 'loss'
%s%s%s%s%s%s
""" + return html + + +#============================================================================================ +def generate_html_subproject_report(path, last_num, x_field='revision', starts_with=""): + """ HTML report for a subproject set of tests. + + starts_with : the prefix of the test name + + Returns: (filename saved, HTML for a page with ALL figures in it) + """ + basedir = os.path.abspath(path) + if not os.path.exists(basedir): + os.mkdir(basedir) + + + # Detect if you can do figures + dofigs = True + try: + figure() + rcParams['axes.titlesize'] = 'small' + except: + dofigs = False + + # Start the HTML + overview_html = "" + + # ------ Find the test names of interest ---------------- + # Limit with only those tests that exist in the latest rev + latest_rev = sqlresults.get_latest_revison() + temp_names = list(sqlresults.get_all_test_names(" revision = %d" % latest_rev)) + # Filter by their start + test_names = [] + for name in temp_names: + if name.startswith(starts_with): + test_names.append(name) + + test_names.sort() + + # -------- Report for each test ------------------------ + for name in test_names: + print "Plotting", name + overview_html += """

%s

\n""" % name + + # Path to the figures + fig1 = "%s.runtime.v.revision.png" % name + fig2 = "%s.runtime.v.revision.ALL.png" % name + fig3 = "%s.memory.v.revision.png" % name + fig4 = "%s.memory.v.revision.ALL.png" % name + + if dofigs: + # Only the latest X entries + plot_runtime(name=name,x_field=x_field,last_num=last_num) + savefig(os.path.join(basedir, fig1)) + close() + + # Plot all svn times + plot_runtime(name=name,x_field=x_field,last_num=-1) + savefig(os.path.join(basedir, fig2)) + close() + + # Only the latest X entries + plot_memory(name=name,x_field=x_field,y_field='memory_change',last_num=last_num) + savefig(os.path.join(basedir, fig3)) + close() + + # Plot all svn times + plot_memory(name=name,x_field=x_field,y_field='memory_change',last_num=-1) + savefig(os.path.join(basedir, fig4)) + close() + + overview_html += """runtime vs revision number""" % (fig1) + overview_html += """memory vs revision number\n""" % (fig3) + + make_detailed_html_file(basedir, name, fig1, fig2, fig3, fig4, last_num) + detailed_html = """
Detailed test report for %s +

+ """ % (name, name) + overview_html += detailed_html + + filename = starts_with + ".htm" + + return (filename, overview_html) + + + +#============================================================================================ +def generate_html_report(path, last_num, x_field='revision'): + """Make a comprehensive HTML report of runtime history for all tests. + Parameters + ---------- + path :: base path to the report folder + last_num :: in the shorter plot, how many SVN revs to show? + x_field :: the field to use as the x-axis. 'revision' or 'date' make sense + """ + basedir = os.path.abspath(path) + if not os.path.exists(basedir): + os.mkdir(basedir) + + # Make the CSS file to be used by all HTML + make_css_file(path) + + # Detect if you can do figures + dofigs = True + try: + figure() + except: + dofigs = False + + # --------- Start the HTML -------------- + html = default_html_header + html += """

Mantid System Tests Auto-Generated Report

""" + html += """

See an overview of performance plots for all tests by clicking here.

""" + if not dofigs: + html += """

There was an error generating plots. No figures will be present in the report.

""" + + html += """

Run Environment

+ %s + """ % ( make_environment_html(sqlresults.get_latest_result()) ) + + overview_html = "" + + # ------ Find the test names of interest ---------------- + # Limit with only those tests that exist in the latest rev + latest_rev = sqlresults.get_latest_revison() + test_names = list(sqlresults.get_all_test_names(" revision = %d" % latest_rev)) + test_names.sort() + + # ------ Find a list of subproject names -------- + subprojects = set() + for name in test_names: + n = name.find(".") + if n > 0: + subprojects.add( name[:n] ) + subprojects = list(subprojects) + subprojects.sort() + html += """

Test Subprojects

+ + """ + + for subproject in subprojects: + (filename, this_overview) = generate_html_subproject_report(path, last_num, x_field, subproject) + overview_html += this_overview + html += """ + """ % (filename, subproject) + html += """
%s
""" + + # --------- Table with the summary of latest results -------- + html += """

Overall Results Summary

""" + html += get_html_summary_table(test_names) + + # -------- Overall success history graphs ------------ + #if dofigs: + # # We report the overall success + # fig_path = "OverallSuccess.png" + # plot_success_count(type='',last_num=last_num, x_field=x_field) + # savefig(os.path.join(basedir, fig_path)) + # close() + # + # fig_path2 = "OverallSuccess.ALL.png" + # plot_success_count(type='',last_num=-1, x_field=x_field) + # savefig(os.path.join(basedir, fig_path2)) + # close() + # + # html += """

Overall Success/Failure

+ # + # + # """ % (fig_path, fig_path2) + + html += default_html_footer + + f = open(os.path.join(basedir, "report.htm"), "w") + html = html.replace("\n", os.linesep) # Fix line endings for windows + f.write(html) + f.close() + + # -------- Overview of plots ------------ + f = open(os.path.join(basedir, "overview_plot.htm"), "w") + overview_html = overview_html.replace("\n", os.linesep) # Fix line endings for windows + f.write(overview_html) + f.close() + + print "Report complete!" + + + + +#============================================================================================ +if __name__ == "__main__": + sqlresults.set_database_filename("MyFakeData.db") + # Make up some test data + if 0: + if os.path.exists("MyFakeData.db"): os.remove("MyFakeData.db") + sqlresults.generate_fake_data(300) + + + generate_html_report("../Report", 50) + +# plot_runtime(name='MyFakeTest', x_field='revision') +# plot_runtime(name='MyFakeTest', x_field='date') +# plot_success_count() +# show() + diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/make_report.py b/Code/Mantid/Testing/SystemTests/scripts/performance/make_report.py new file mode 100755 index 000000000000..1934d84e2a19 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/make_report.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python + +import argparse +import sys +import os +import subprocess +import sqlite3 + +#==================================================================================== +def getSourceDir(): + """Returns the location of the source code.""" + import os + import sys + script = os.path.abspath(sys.argv[0]) + if os.path.islink(script): + script = os.path.realpath(script) + return os.path.dirname(script) + + + +def join_databases(dbfiles): + """Create a single DB joining several ones + Returns: filename created + """ + outfile = os.path.join(os.path.dirname(dbfiles[0]), "JoinedDatabases.db") + all_results = [] + # Get the results of each file + for dbfile in dbfiles: + print "Reading", dbfile + sqlresults.set_database_filename(dbfile) + these_results = sqlresults.get_results("") + all_results += these_results + # Write them into one + sqlresults.set_database_filename(outfile) + sqlresults.setup_database() + reporter = sqlresults.SQLResultReporter() + for res in all_results: + reporter.dispatchResults(res) + # Done! + return outfile + + + +#==================================================================================== +if __name__ == "__main__": + # Parse the command line + parser = argparse.ArgumentParser(description='Generates a HTML report using the Mantid System Tests results database') + + parser.add_argument('--path', dest='path', + default="./Report", + help='Path to the ouput HTML. Default "./Report".' ) + + parser.add_argument('--x_field', dest='x_field', + default="revision", + help="Field to use as the x-axis. Default: 'revision'. Other possibilities: 'date'.") + + parser.add_argument('dbfile', metavar='DBFILE', type=str, nargs='+', + default=["./MantidSystemTests.db"], + help='Required: Path to the SQL database file(s).') + + + args = parser.parse_args() + + # Import the manager definition + import analysis + import sqlresults + + if len(args.dbfile) > 1: + # Several files - join them into one big .db + dbfile = join_databases(args.dbfile) + else: + # Only one file - use it + dbfile = args.dbfile[0] + + + if not os.path.exists(dbfile): + print "Error! Could not find", dbfile + sys.exit(1) + + # This is where we look for the DB file + sqlresults.set_database_filename(dbfile) + + # Make the report + analysis.generate_html_report(args.path, 100, args.x_field) \ No newline at end of file diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/reporters.py b/Code/Mantid/Testing/SystemTests/scripts/performance/reporters.py new file mode 100644 index 000000000000..a2852ec1f4dd --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/reporters.py @@ -0,0 +1,126 @@ +import os +import sys + +######################################################################### +# A base class to support report results in an appropriate manner +######################################################################### +class ResultReporter(object): + ''' + A base class for results reporting. In order to get the results in an + appropriate form, subclass this class and implement the dispatchResults + method. + ''' + + def __init__(self): + '''Initialize a class instance, e.g. connect to a database''' + pass + + def dispatchResults(self, result): + """ + Parameters + result: a TestResult object """ + raise NotImplementedError('"dispatchResults(self, result)" should be overridden in a derived class') + + +######################################################################### +# A class to report results as formatted text output +######################################################################### +class TextResultReporter(ResultReporter): + ''' + Report the results of a test using standard out + ''' + + def dispatchResults(self, result): + ''' + Print the results to standard out + ''' + nstars = 30 + print '*' * nstars + for (name, val) in result.data.items(): + str_val = str(val) + str_val = str_val.replace("\n", " ") + if len(str_val) > 50: + str_val = str_val[:50] + " . . . " + print ' ' + name.ljust(15) + '-> ', str_val + print '*' * nstars + + +######################################################################### +# A class to report results as formatted text output +######################################################################### +class LogArchivingReporter(ResultReporter): + ''' + Report the results of a test using standard out + ''' + def __init__(self, logarchive): + # Path to a log archiving folder + self.logarchive = os.path.abspath(logarchive) + if not os.path.exists(self.logarchive): + os.mkdir(self.logarchive) + + def dispatchResults(self, result): + ''' + Print the results to standard out + ''' + fullpath = os.path.join(self.logarchive, result.get_logarchive_filename()) + f = open(fullpath, "w") + f.write(result["log_contents"]) + f.close() + +######################################################################### +# A class to report results as XML that Hudson can interpret +######################################################################### +class JUnitXMLReporter(ResultReporter): + ''' + Report the results of a test to a JUnit style XML format + that can be read by Hudson/Jenkins + ''' + + def __init__(self, path): + # Path to .xml files + self._path = path + + def dispatchResults(self, result): + ''' + Make a junit .xml file + ''' + fullpath = os.path.join(self._path, "%s.xml" % result["name"]) + f = open(fullpath, 'w') + + names = result["name"].split(".") + suitename = names[0] + testname = ".".join(names[1:]) + + failure = "" + num_failures = 0 + if not result["success"]: + failure = """\n %s + """ % (result["status"], result["log_contents"]) + num_failures = 1 + + f.write(""" + + %s + + +""" % (suitename, num_failures, testname, result["runtime"], suitename, failure) ) + + + +if __name__=="__main__": + import testresult + rep = JUnitXMLReporter(".") + + res = testresult.TestResult() + res["name"] = "MyTestTest.Test" + res["status"] = "success maybe?" + res["success"] = True + res["runtime"] = 1.234 + rep.dispatchResults(res) + + res = testresult.TestResult() + res["name"] = "MyTestTest.OtherTest" + res["status"] = "failure" + res["success"] = False + res["runtime"] = 3.456 + rep.dispatchResults(res) diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/sqlresults.py b/Code/Mantid/Testing/SystemTests/scripts/performance/sqlresults.py new file mode 100644 index 000000000000..b7eb3e4289c4 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/sqlresults.py @@ -0,0 +1,327 @@ +try: + import sqlite3 + has_sql = True +except ImportError: + has_sql = False + print "Error importing sqlite3. SQL will not work" + +import reporters +import datetime +import testresult +import os +import shutil +import math +import random + +#==================================================================================== +def getSourceDir(): + """Returns the location of the source code.""" + import os + import sys + script = os.path.abspath(sys.argv[0]) + if os.path.islink(script): + script = os.path.realpath(script) + return os.path.dirname(script) + + +#===================================================================== +# These are the table fields, in order +TABLE_FIELDS = ['date', 'name', 'type', 'host', 'environment', 'runner', + 'revision', 'commitid', 'runtime', 'cpu_fraction', + 'memory_change', 'success', + 'status', 'logarchive', 'variables'] + +#===================================================================== +# The default path to the database file +database_file = os.path.join(getSourceDir(), "MantidSystemTests.db") + +#===================================================================== +def get_database_filename(): + """Return the path to the database to use """ + return database_file + +#===================================================================== +def set_database_filename(value): + """Override the default database location""" + global database_file + database_file = value + +#===================================================================== +def SQLgetConnection(): + """ Get a connection to the SQL database """ + # These are automatic conversion factors + return sqlite3.connect(get_database_filename()) + + +#===================================================================== +def get_TestResult_from_row(row): + """Return a filled TestResult object from a "row" + obtained by selecting * from the TestRuns table + Returns + ------- + result :: TestResult object, with an extra + .testID member containing the ID into the table (testID field) + """ + res = testresult.TestResult() + res.testID = row[0] + # ------ Get each entry in the table --------- + for i in xrange(len(TABLE_FIELDS)): + res[TABLE_FIELDS[i]] = row[i+1] + + return (res) + + +#===================================================================== +def get_latest_result(name=''): + """Returns a TestResult object corresponding to the + last result in the table + Parameters + ---------- + name :: optional, test name to filter by""" + db = SQLgetConnection() + c = db.cursor() + where = "" + if name != "": where = " WHERE name='%s'" % name + query = """SELECT * FROM TestRuns %s ORDER BY testID DESC LIMIT 1;""" % where + c.execute(query) + # Get all rows - there should be only one + rows = c.fetchall() + c.close() + + if len(rows) > 0: + res = get_TestResult_from_row(rows[0]) + return res + else: + return None + +#===================================================================== +def get_results(name, type="", where_clause='', orderby_clause=''): + """Return a list of testresult.TestResult objects + generated from looking up in the table + Parameters: + name: test name to search for. Empty string = don't limit by name + type: limit by type; default empty string means = don't limit by type. + get_log : set to True to retrieve the log_contents too. + where_clause : an additional SQL "where" clause to further limit the search. + Do not include the WHERE keyword! + e.g "date > 2010 AND environment='mac'". + orderby_clause : a clause to order and/or limit the results. + e.g. "ORDER BY revision DESC limit 100" to get only the latest 100 revisions. + """ + out = [] + + db = SQLgetConnection() + c = db.cursor() + + query = "SELECT * FROM TestRuns " + + # Build up the where clause + where_clauses = [] + if name != "": + where_clauses.append(" name = '%s'" % name) + if (type != ""): + where_clauses.append(" type = '%s'" % type) + if (where_clause != ""): + where_clauses.append(" (" + where_clause + ")") + # Add it to the query + if len(where_clauses) > 0: + query += "WHERE " + " AND ".join(where_clauses) + # Now the ordering clause + query += " " + orderby_clause + + c.execute(query) + + # Get all rows + rows = c.fetchall() + + for row in rows: + # Turn the row into TestResult + res = get_TestResult_from_row(row) + + out.append(res) + c.close() + return out + + +#===================================================================== +def get_all_field_values(field_name, where_clause=""): + """Return a list of every entry of the given + field (e.g. 'name' or 'environment'). + Parameters: + field_name: field/column name to search for. + where_clause : an additional SQL "where" clause to further limit the search. + Do not include the WHERE keyword! + e.g "date > 2010 AND environment='mac'". + + """ + db = SQLgetConnection() + c = db.cursor() + + query = "SELECT (%s) FROM TestRuns " % field_name + if (where_clause != ""): + query += "WHERE " + where_clause + + c.execute(query) + + # Get all rows + rows = c.fetchall() + + out = [x for (x,) in rows] + + return out + +#===================================================================== +def get_latest_revison(): + """ Return the latest revision number """ + # Now get the latest revision + db = SQLgetConnection() + c = db.cursor() + query = "SELECT (revision) FROM Revisions ORDER BY revision DESC LIMIT 1;" + c.execute(query) + rows = c.fetchall() + if (len(rows)>0): + return int(rows[0][0]) + else: + return 0 + +#===================================================================== +def add_revision(): + """ Adds an entry with the current date/time to the table. + Retrieve the index of that entry = the "revision". + Returns the current revision""" + db = SQLgetConnection() + c = db.cursor() + query = "INSERT INTO Revisions VALUES(NULL, '%s');" % str(datetime.datetime.now()) + c.execute(query) + db.commit() + return get_latest_revison() + + +#===================================================================== +def get_all_test_names(where_clause=""): + """Returns a set containing all the UNIQUE test names in the database. + ---- + where_clause: Do not include the WHERE keyword! """ + return set(get_all_field_values('name', where_clause)) + + +#===================================================================== +def setup_database(): + """ Routine to set up the mysql database the first time. + WARNING: THIS DELETES ANY TABLES ALREADY THERE + """ + print "Setting up SQL database at",get_database_filename() + if os.path.exists(get_database_filename()): + print "Creating a backup at", get_database_filename()+".bak" + shutil.copyfile(get_database_filename(), get_database_filename()+".bak") + + db = SQLgetConnection() + + c = db.cursor() + try: + c.execute("DROP TABLE TestRuns;") + c.execute("DROP TABLE Revisions;") + except: + print "Error dropping tables. Perhaps one does not exist (this is normal on first run)." + + c.execute("""CREATE TABLE TestRuns ( + testID INTEGER PRIMARY KEY, + date DATETIME, name VARCHAR(60), type VARCHAR(20), + host VARCHAR(30), environment VARCHAR(50), runner VARCHAR(20), + revision INT, commitid VARCHAR(45), + runtime DOUBLE, cpu_fraction DOUBLE, memory_change INT, + success BOOL, + status VARCHAR(50), logarchive VARCHAR(80), + variables VARCHAR(200) + ); """) + + # Now a table that is just one entry per run (a fake "revision") + + c.execute("""CREATE TABLE Revisions ( + revision INTEGER PRIMARY KEY, + date DATETIME + ); """) + + +########################################################################### +# A class to report the results of stress tests to the Mantid Test database +# (requires sqlite3 module) +########################################################################### +class SQLResultReporter(reporters.ResultReporter): + ''' + Send the test results to the Mantid test results database + ''' + + def __init__(self): + pass + + + def dispatchResults(self, result): + ''' + Construct the SQL commands and send them to the databse + ''' + dbcxn = SQLgetConnection() + cur = dbcxn.cursor() + #last_id = dbcxn.insert_id() + + # Create the field for the log archive name + result["logarchive"] = result.get_logarchive_filename() + + valuessql = "INSERT INTO TestRuns VALUES(NULL, " + + # Insert the test results in the order of the table + for field in TABLE_FIELDS: + val = result[field] + # Make into a string + val_str = str(val) + + # Booleans must be 0 or 1 + if type(val).__name__ == "bool": + val_str = ["0", "1"][val] + + valuessql += "'" + val_str + "'," + + valuessql = valuessql.rstrip(',') + valuessql += ');' + cur.execute(valuessql) + # Save test id for iteration table + test_id = cur.lastrowid + + # Commit and close the connection + dbcxn.commit() + cur.close() + dbcxn.close() + + +#============================================================================================ +def generate_fake_data(num_extra = 0): + """ Make up some data for a database """ + print "Generating fake data..." + setup_database() + rep = SQLResultReporter() + for timer in [9400, 9410,9411, 9412] + range(9420,9440) + [9450, 9466] + range(9450, 9450+num_extra): + rev = add_revision() + for name in ["Project1.MyFakeTest", "Project1.AnotherFakeTest", "Project2.FakeTest", "Project2.OldTest"]: + if (name != "Project2.OldTest"): + result = testresult.TestResult() + result["name"] = name + result["date"] = datetime.datetime.now() + datetime.timedelta(days=timer, minutes=timer) + result["log_contents"] = "Revision %d" % rev + result["runtime"] = timer/10.0 + random.randrange(-2,2) + result["commitid"] = rev #'926bf82e36b4c90c95efc3f1151725696273de5a' + result["success"] = (random.randint(0,10) > 0) + result["status"] = ["failed","success"][result["success"]] + result["revision"] = rev + rep.dispatchResults(result) + print "... Fake data made." + + +#===================================================================== +if __name__ == "__main__": + set_database_filename("SqlResults.test.db") + generate_fake_data() + + res = get_latest_result() + print res + + diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/testresult.py b/Code/Mantid/Testing/SystemTests/scripts/performance/testresult.py new file mode 100644 index 000000000000..fd772de16a3d --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/testresult.py @@ -0,0 +1,120 @@ +''' +Data object for a TestResult + +Copyright © 2009 STFC Rutherford Appleton Laboratories + +This file is part of Mantid. + +Mantid is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, or +(at your option) any later version. + +Mantid is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +File change history is stored at: . +''' + +import sys +import os +import reporters +import re +import time +import datetime +import platform +import subprocess +import tempfile +import sqlresults +import numpy as np + + + + +######################################################################### +######################################################################### +def envAsString(): + """ Return the environment as a string """ + if os.name == 'nt': + system = platform.system().lower()[:3] + arch = platform.architecture()[0][:2] + env = system + arch + elif os.name == 'mac': + env = platform.mac_ver()[0] + else: + env = " ".join(platform.dist()) + return env + + +######################################################################### +# A class to store the results of a test +######################################################################### +class TestResult(object): + ''' + Stores the results of each test so that they can be reported later. + ''' + + def __init__(self, + date = datetime.datetime.now(), + name="", + type="system", + host=platform.uname()[1], + environment=envAsString(), + runner="", + commitid='', + revision=0, + runtime=0.0, + speed_up=0.0, + cpu_fraction=0.0, + memory_change=0, + iterations=1, + success=False, + status="", + log_contents="", + variables=""): + """ Fill the TestResult object with the contents """ + self.data = {} + self.data["date"] = date + self.data["name"] = name + self.data["type"] = type + self.data["host"] = host + self.data["environment"] = environment + self.data["runner"] = runner + self.data["revision"] = revision + self.data["commitid"] = commitid + self.data["runtime"] = runtime + self.data["cpu_fraction"] = cpu_fraction + self.data["memory_change"] = memory_change + self.data["success"] = success + self.data["status"] = status + self.data["log_contents"] = log_contents + self.data["variables"] = variables + + + def get_logarchive_filename(self): + "Return a bare filename that will hold the archived log contents" + s = str(self.data["date"]) + s = s.replace(" ", "_") + s = s.replace(":", "-") + return "%s.%s.log" % (s, self.data["name"]) + + def __getitem__(self, key): + return self.data[key] + + def __setitem__(self, key, value): + self.data.__setitem__(key, value) + + def getData(self): + ''' Get the map storing the results ''' + return self.data + + def __str__(self): + return str(self.data) + + + diff --git a/Code/Mantid/Testing/SystemTests/scripts/performance/xunit_to_sql.py b/Code/Mantid/Testing/SystemTests/scripts/performance/xunit_to_sql.py new file mode 100755 index 000000000000..e70c27d91c99 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/performance/xunit_to_sql.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python +""" Module to convert XUnit XML to SQL database of test results of the same type used +by python system tests """ + +import argparse +import sys +import os +import sqlresults +from testresult import TestResult, envAsString +from xml.dom.minidom import parse, parseString +import re +import time +import datetime +import platform +import subprocess +import tempfile +import sqlresults +import numpy as np +import glob + +# Global SQL result reporter +sql_reporter = None +# Variables string for all tests +variables = "" +revision = 0 +commitid = '' + +def handle_testcase(case, suite_name): + """ Handle one test case and save it to DB""" + # Build the full name (Project.Suite.Case) + name = case.getAttribute("classname") + "." + case.getAttribute("name") + try: + time = float(case.getAttribute("time")) + except: + time = 0.0 + try: + total_time = float(case.getAttribute("totalTime")) + except: + total_time = 0.0 + try: + cpu_fraction = float(case.getAttribute("CPUFraction")) + except: + cpu_fraction = 0.0 + try: + memory_change = int(case.getElementsByTagName("memory").item(0).firstChild.nodeValue) + except: + memory_change = 0 + + + tr = TestResult(date = datetime.datetime.now(), + name=name, + type="performance", + host=platform.uname()[1], + environment=envAsString(), + runner="runSystemTests.py", + revision=revision, + commitid=commitid, + runtime=time, + cpu_fraction=cpu_fraction, + memory_change=memory_change, + success=True, + status="", + log_contents="", + variables=variables) + #print tr.data + # Now report it to SQL + sql_reporter.dispatchResults(tr) + +def handle_suite(suite): + """ Handle all the test cases in a suite """ + suite_name = suite.getAttribute("name") + cases = suite.getElementsByTagName("testcase") + for case in cases: + handle_testcase(case, suite_name) + + +def convert_xml(filename): + """Convert a single XML file to SQL db""" + # Parse the xml + print "Reading", filename + doc = parse(filename) + suites = doc.getElementsByTagName("testsuite") + for suite in suites: + handle_suite(suite) + + +#==================================================================================== +if __name__ == "__main__": + # Parse the command line + parser = argparse.ArgumentParser(description='Add the contents of Xunit-style XML test result files to a SQL database.') + + parser.add_argument('--db', dest='db', + default="./MantidPerformanceTests.db", + help='Full path to the SQLite database holding the results (default "./MantidPerformanceTests.db"). The database will be created if it does not exist.') + + parser.add_argument('--variables', dest='variables', + default="", + help='Optional string of comma-separated "VAR1NAME=VALUE,VAR2NAME=VALUE2" giving some parameters used, e.g. while building.') + + parser.add_argument('--commit', dest='commitid', + default="", + help='Commit ID of the current build (a 40-character SHA string).') + + parser.add_argument('xmlpath', metavar='XMLPATH', type=str, nargs='+', + default="", + help='Required: Path to the Xunit XML files.') + + args = parser.parse_args() + + # Setup the SQL database but only if it does not exist + sqlresults.set_database_filename(args.db) + if not os.path.exists(args.db): + sqlresults.setup_database() + # Set up the reporter + sql_reporter = sqlresults.SQLResultReporter() + + variables = args.variables + # Add a new revision and get the "revision" number + revision = sqlresults.add_revision() + # Save the commitid + commitid = args.commitid + + # If a directory has been provided, look there for all of the XML files + if os.path.isdir(args.xmlpath[0]): + xmldir = args.xmlpath[0] + if not os.path.isabs(xmldir): + xmldir = os.path.abspath(xmldir) + xmlfiles = glob.glob(os.path.join(xmldir, '*.xml')) + else: + xmlfiles = args.xmlpath + + # Convert each file + for file in xmlfiles: + convert_xml(file) + + + diff --git a/Code/Mantid/Testing/SystemTests/scripts/runSystemTests.py b/Code/Mantid/Testing/SystemTests/scripts/runSystemTests.py new file mode 100755 index 000000000000..3db730daaf48 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/scripts/runSystemTests.py @@ -0,0 +1,138 @@ +#!/usr/bin/env python + +import os +# set up the command line options +VERSION = "1.1" +THIS_MODULE_DIR = os.path.dirname(os.path.realpath(__file__)) +DEFAULT_FRAMEWORK_LOC = os.path.realpath(os.path.join(THIS_MODULE_DIR, "..","lib","systemtests")) +DATA_DIRS_LIST_PATH = os.path.join(THIS_MODULE_DIR, "datasearch-directories.txt") +SAVE_DIR_LIST_PATH = os.path.join(THIS_MODULE_DIR, "defaultsave-directory.txt") + +info = [] +info.append("This program will configure mantid run all of the system tests located in") +info.append("the 'tests/analysis' directory.") +info.append("This program will create a temporary 'Mantid.user.properties' file which") +info.append("it will rename to 'Mantid.user.properties.systest' upon completion. The") +info.append("current version of the code does not print to stdout while the test is") +info.append("running, so the impatient user may ^C to kill the process. In this case") +info.append("all of the tests that haven't been run will be marked as skipped in the") +info.append("full logs.") + +import optparse +parser = optparse.OptionParser("Usage: %prog [options]", None, + optparse.Option, VERSION, 'error', ' '.join(info)) +parser.add_option("-m", "--mantidpath", dest="mantidpath", + help="Location of mantid build") +parser.add_option("", "--email", action="store_true", + help="send an email with test status.") +parser.add_option("", "--frameworkLoc", + help="location of the stress test framework (default=%s)" % DEFAULT_FRAMEWORK_LOC) +parser.add_option("", "--disablepropmake", action="store_false", dest="makeprop", + help="By default this will move your properties file out of the way and create a new one. This option turns off this behavior.") +parser.add_option("-R", "--tests-regex", dest="testsInclude", + help="String specifying which tests to run. Simply uses 'string in testname'.") +parser.add_option("-E", "--excluderegex", dest="testsExclude", + help="String specifying which tests to not run. Simply uses 'string in testname'.") +loglevelChoices=["error", "warning", "notice", "information", "debug"] +parser.add_option("-l", "--loglevel", dest="loglevel", + choices=loglevelChoices, + help="Set the log level for test running: [" + ', '.join(loglevelChoices) + "]") +parser.add_option("", "--showskipped", dest="showskipped", action="store_true", + help="List the skipped tests.") +parser.add_option("-d", "--datapaths", dest="datapaths", + help="A semicolon-separated list of directories to search for data") +parser.add_option("-s", "--savedir", dest="savedir", + help="A directory to use for the Mantid save path") +parser.add_option("", "--archivesearch", dest="archivesearch", action="store_true", + help="Turn on archive search for file finder.") +parser.set_defaults(frameworkLoc=DEFAULT_FRAMEWORK_LOC, mantidpath=None, makeprop=True, + loglevel="information") +(options, args) = parser.parse_args() + +# import the stress testing framework +import sys +import os +import platform +sys.path.append(options.frameworkLoc) +import stresstesting + +# Make sure the specified MantidFramework is picked up +# Use specified option if given +mantid_module_path = None +if options.mantidpath is not None: + mantid_module_path = options.mantidpath +elif os.path.exists("MantidFramework"): + pass # Current directory is in the already +elif 'MANTIDPATH' in os.environ: + mantid_module_path = os.environ['MANTIDPATH'] +else: + pass + +# Ensure that this is the one that is picked +sys.path.insert(0, mantid_module_path) + +# On Windows & OSX we need to ensure the mantid libraries in bin/Contents/MacOS can be found. +# Must be done before first import of mantid. This is the same as what a user would have to do to +# import mantid in a vanilla python session +# Unfortunately Python seems to know the path separator on each platform but +# not the dynamic library path variable name +if platform.system() == 'Windows': + path_var = "PATH" +# only necessary on 10.8 build +elif platform.system() == 'Darwin' and int(platform.release().split('.')[0]) < 13 : + path_var = "DYLD_LIBRARY_PATH" +else: + path_var = None +# Set the path +if path_var: + os.environ[path_var] = mantid_module_path + os.pathsep + os.environ.get(path_var, "") + +# Configure mantid +# Parse files containing the search and save directories, unless otherwise given +data_paths = options.datapaths +if data_paths is None or data_paths == "": + with open(DATA_DIRS_LIST_PATH, 'r') as f_handle: + data_paths = f_handle.read().strip() + +save_dir = options.savedir +if save_dir is None or save_dir == "": + with open(SAVE_DIR_LIST_PATH, 'r') as f_handle: + save_dir = f_handle.read().strip() +# Configure properties file +mtdconf = stresstesting.MantidFrameworkConfig(mantid_module_path, loglevel=options.loglevel, + data_dirs=data_paths, save_dir=save_dir, + archivesearch=options.archivesearch) +if options.makeprop: + mtdconf.config() + +# run the tests +reporter = stresstesting.XmlResultReporter(showSkipped=options.showskipped) +mgr = stresstesting.TestManager(mtdconf.testDir, output = [reporter], + testsInclude=options.testsInclude, testsExclude=options.testsExclude) +try: + mgr.executeTests() +except KeyboardInterrupt: + mgr.markSkipped("KeyboardInterrupt") + +# report the errors +success = reporter.reportStatus() +xml_report = open(os.path.join(mtdconf.saveDir, "TEST-systemtests.xml"),'w') +xml_report.write(reporter.getResults()) +xml_report.close() + +# put the configuration back to its original state +if options.makeprop: + mtdconf.restoreconfig() + +print +if mgr.skippedTests == mgr.totalTests: + print "All tests were skipped" + success = False # fail if everything was skipped +else: + percent = 1.-float(mgr.failedTests)/float(mgr.totalTests-mgr.skippedTests) + percent = int(100. * percent) + print "%d%s tests passed, %d tests failed out of %d (%d skipped)" % \ + (percent, '%', mgr.failedTests, (mgr.totalTests-mgr.skippedTests), mgr.skippedTests) +print 'All tests passed? ' + str(success) +if not success: + sys.exit(1) diff --git a/Code/Mantid/Testing/SystemTests/tests/analysis/HRPDPowderDiffraction.py b/Code/Mantid/Testing/SystemTests/tests/analysis/HRPDPowderDiffraction.py new file mode 100644 index 000000000000..7ed7c9ccaa7d --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/tests/analysis/HRPDPowderDiffraction.py @@ -0,0 +1,75 @@ +import stresstesting +from mantid.simpleapi import * + +''' Simply tests that our LoadRaw and LoadISISNexus algorithms produce the same workspace''' +class HRPDPowderDiffraction(stresstesting.MantidStressTest): + + def requiredFiles(self): + return ["HRP39191.RAW", "hrpd_new_072_01_corr.cal", "HRP39187.RAW", 'HRPDPowderDiffraction.nxs'] + + def runTest(self): + #Load the Vanadium + LoadRaw(Filename="HRP39191.RAW",OutputWorkspace="Vanadium") + #mask out the vanadium peaks + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="19970",XMax="20140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="39970",XMax="40140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="59970",XMax="60140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="79970",XMax="80140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="99970",XMax="100140") + #align vanadium detectors + AlignDetectors(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",CalibrationFile="hrpd_new_072_01_corr.cal") + #normalise by current + NormaliseByCurrent(InputWorkspace="Vanadium",OutputWorkspace="Vanadium") + #correct for solid angle + SolidAngle(InputWorkspace="Vanadium",OutputWorkspace="Corr") + Divide(LHSWorkspace="Vanadium",RHSWorkspace="Corr",OutputWorkspace="Vanadium") + #Multiply the solid angle by the integrated vanadium flux between 1.4 and 3 Angstrom + ConvertUnits(InputWorkspace="Vanadium",OutputWorkspace="flux",Target="Wavelength") + Integration(InputWorkspace="flux",OutputWorkspace="flux",RangeLower="1.4",RangeUpper="3") + Multiply(LHSWorkspace="Corr",RHSWorkspace="flux",OutputWorkspace="Corr") + #adjust the correction down by a factor of 1000 + CreateSingleValuedWorkspace(OutputWorkspace="Sc",DataValue="1000") + Divide(LHSWorkspace="Corr",RHSWorkspace="Sc",OutputWorkspace="Corr") + #Load the Vanadium - a second time + LoadRaw(Filename="HRP39191.RAW",OutputWorkspace="Vanadium") + #mask out the vanadium peaks + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="19970",XMax="20140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="39970",XMax="40140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="59970",XMax="60140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="79970",XMax="80140") + MaskBins(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",XMin="99970",XMax="100140") + #align vanadium detectors + AlignDetectors(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",CalibrationFile="hrpd_new_072_01_corr.cal") + #normalise by current + NormaliseByCurrent(InputWorkspace="Vanadium",OutputWorkspace="Vanadium") + #correct by accumulated correction - solid angle/(1000*flux(1.4 - 3 Angstrom)) + Divide(LHSWorkspace="Vanadium",RHSWorkspace="Corr",OutputWorkspace="Vanadium") + #Load the vanadium empty + LoadRaw(Filename="HRP39187.RAW",OutputWorkspace="VEmpty") + #mask out the vanadium peaks + MaskBins(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",XMin="19970",XMax="20140") + MaskBins(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",XMin="39970",XMax="40140") + MaskBins(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",XMin="59970",XMax="60140") + MaskBins(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",XMin="79970",XMax="80140") + MaskBins(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",XMin="99970",XMax="100140") + #align vanadium empty detectors + AlignDetectors(InputWorkspace="VEmpty",OutputWorkspace="VEmpty",CalibrationFile="hrpd_new_072_01_corr.cal") + #correct by accumulated correction - solid angle/(1000*flux(1.4 - 3 Angstrom)) + Divide(LHSWorkspace="VEmpty",RHSWorkspace="Corr",OutputWorkspace="VEmpty") + #normalise by current + NormaliseByCurrent(InputWorkspace="VEmpty",OutputWorkspace="VEmpty") + #Subtract Vanadium empty from the Vanadium + Minus(LHSWorkspace="Vanadium",RHSWorkspace="VEmpty",OutputWorkspace="Vanadium") + #Convert to wavelength + ConvertUnits(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",Target="Wavelength") + #Correct for cylinderAbsorption + CylinderAbsorption(InputWorkspace="Vanadium",OutputWorkspace="Transmission",CylinderSampleHeight="2",CylinderSampleRadius="0.4",AttenuationXSection="5.1",ScatteringXSection="5.08",SampleNumberDensity="0.072",NumberOfSlices="10",NumberOfAnnuli="10",NumberOfWavelengthPoints="100") + Divide(LHSWorkspace="Vanadium",RHSWorkspace="Transmission",OutputWorkspace="Vanadium") + #convert to dspacing and focuss + ConvertUnits(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",Target="dSpacing") + DiffractionFocussing(InputWorkspace="Vanadium",OutputWorkspace="Vanadium",GroupingFileName="hrpd_new_072_01_corr.cal") + + def validate(self): + # Fitting parameters not saved to ParameterMap + self.disableChecking.append("Instrument") + return 'Vanadium','HRPDPowderDiffraction.nxs' diff --git a/Code/Mantid/Testing/SystemTests/tests/analysis/reference/HRPDPowderDiffraction.nxs.md5 b/Code/Mantid/Testing/SystemTests/tests/analysis/reference/HRPDPowderDiffraction.nxs.md5 new file mode 100644 index 000000000000..0cc9b76c87b6 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/tests/analysis/reference/HRPDPowderDiffraction.nxs.md5 @@ -0,0 +1 @@ +078a0d8d4c9f0aa5b2ece6099e13b0b9 diff --git a/Code/Mantid/Testing/SystemTests/tests/analysis/reference/README.md b/Code/Mantid/Testing/SystemTests/tests/analysis/reference/README.md new file mode 100644 index 000000000000..820b616aa6b0 --- /dev/null +++ b/Code/Mantid/Testing/SystemTests/tests/analysis/reference/README.md @@ -0,0 +1 @@ +This directory stores the content links to the reference files for the system tests diff --git a/Code/Mantid/TestingTools/CMakeLists.txt b/Code/Mantid/Testing/Tools/CMakeLists.txt similarity index 100% rename from Code/Mantid/TestingTools/CMakeLists.txt rename to Code/Mantid/Testing/Tools/CMakeLists.txt diff --git a/Code/Mantid/TestingTools/cxxtest/COPYING b/Code/Mantid/Testing/Tools/cxxtest/COPYING similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/COPYING rename to Code/Mantid/Testing/Tools/cxxtest/COPYING diff --git a/Code/Mantid/TestingTools/cxxtest/README b/Code/Mantid/Testing/Tools/cxxtest/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/README rename to Code/Mantid/Testing/Tools/cxxtest/README diff --git a/Code/Mantid/TestingTools/cxxtest/TODO b/Code/Mantid/Testing/Tools/cxxtest/TODO similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/TODO rename to Code/Mantid/Testing/Tools/cxxtest/TODO diff --git a/Code/Mantid/TestingTools/cxxtest/Versions b/Code/Mantid/Testing/Tools/cxxtest/Versions similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/Versions rename to Code/Mantid/Testing/Tools/cxxtest/Versions diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/AUTHORS b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/AUTHORS similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/AUTHORS rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/AUTHORS diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/cxxtest.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/cxxtest.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/cxxtest.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/cxxtest.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/default_env/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/default_env/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/requirement.hpp b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/requirement.hpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/requirement.hpp rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/requirement.hpp diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/test_bar.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/test_bar.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/test_bar.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/test_bar.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/test_foo.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/test_foo.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/empty_source_list/test_foo.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/empty_source_list/test_foo.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/eprouvette.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/eprouvette.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/eprouvette.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/eprouvette.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/expanding_#/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/expanding_#/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/requirement.cpp b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/requirement.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/requirement.cpp rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/requirement.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/requirement.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/requirement.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/requirement.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/requirement.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/test_bar.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/test_bar.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/test_bar.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/test_bar.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/test_foo.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/test_foo.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing/src/test_foo.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing/src/test_foo.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.cc b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.cc similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.cc rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.cc diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.hh b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.hh similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.hh rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hello.hh diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hellotest.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hellotest.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/hellotest.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/hellotest.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/main.cpp b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/main.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/globbing_edmundo/main.cpp rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/globbing_edmundo/main.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/not-with-pedantic.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/not-with-pedantic.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/not-with-pedantic.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/not-with-pedantic.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/only_with_ansi.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/only_with_ansi.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/only_with_ansi.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CCFLAGS/src/only_with_ansi.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/src/not-with-pedantic.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/src/not-with-pedantic.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/src/not-with-pedantic.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/include_CXXFLAGS/src/not-with-pedantic.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.cpp b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.cpp rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/requirement.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_bar.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_bar.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_bar.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_bar.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_foo.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_foo.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_foo.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/multifile_tests/src/test_foo.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppath.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppath.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppath.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppath.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppathdir/include.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppathdir/include.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppathdir/include.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/need_cpppath/src/cpppathdir/include.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/nonstandard_cxxtest_dir/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/cxxtest/CrazyRunner.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/cxxtest/CrazyRunner.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/cxxtest/CrazyRunner.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/cxxtest/CrazyRunner.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/src/failtest.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/src/failtest.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/printer_propagation/src/failtest.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/printer_propagation/src/failtest.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/README b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/README similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/README rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/README diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.cpp b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.cpp rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/requirement.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_bar.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_bar.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_bar.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_bar.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_foo.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_foo.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_foo.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/recursive_sources/src/test_foo.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppath.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppath.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppath.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppath.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppathdir/include.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppathdir/include.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppathdir/include.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/string_cpppath/src/cpppathdir/include.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/TestDef.py b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/TestDef.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/TestDef.py rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/TestDef.py diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppath.t.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppath.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppath.t.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppath.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppathdir/include.h b/Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppathdir/include.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppathdir/include.h rename to Code/Mantid/Testing/Tools/cxxtest/build_tools/SCons/test/target_syntax/src/cpppathdir/include.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest.spec b/Code/Mantid/Testing/Tools/cxxtest/cxxtest.spec similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest.spec rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest.spec diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Descriptions.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Descriptions.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Descriptions.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Descriptions.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Descriptions.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Descriptions.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Descriptions.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Descriptions.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/DummyDescriptions.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/DummyDescriptions.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/DummyDescriptions.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/DummyDescriptions.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/DummyDescriptions.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/DummyDescriptions.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/DummyDescriptions.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/DummyDescriptions.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/ErrorFormatter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/ErrorFormatter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/ErrorFormatter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/ErrorFormatter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/ErrorPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/ErrorPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/ErrorPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/ErrorPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Flags.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Flags.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Flags.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Flags.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/GlobalFixture.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/GlobalFixture.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/GlobalFixture.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/GlobalFixture.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/GlobalFixture.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/GlobalFixture.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/GlobalFixture.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/GlobalFixture.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Gui.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Gui.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Gui.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Gui.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/LinkedList.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/LinkedList.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/LinkedList.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/LinkedList.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/LinkedList.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/LinkedList.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/LinkedList.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/LinkedList.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/MantidFormatter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/MantidFormatter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/MantidFormatter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/MantidFormatter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/MantidPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/MantidPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/MantidPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/MantidPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Mock.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Mock.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Mock.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Mock.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/ParenPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/ParenPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/ParenPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/ParenPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/QtGui.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/QtGui.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/QtGui.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/QtGui.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/RealDescriptions.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/RealDescriptions.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/RealDescriptions.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/RealDescriptions.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/RealDescriptions.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/RealDescriptions.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/RealDescriptions.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/RealDescriptions.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Root.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Root.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Root.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Root.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/SelfTest.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/SelfTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/SelfTest.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/SelfTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/StdHeaders.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdHeaders.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/StdHeaders.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdHeaders.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/StdTestSuite.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdTestSuite.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/StdTestSuite.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdTestSuite.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/StdValueTraits.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdValueTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/StdValueTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdValueTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/StdioFilePrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdioFilePrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/StdioFilePrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdioFilePrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/StdioPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdioPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/StdioPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/StdioPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TeeListener.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TeeListener.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TeeListener.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TeeListener.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestListener.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestListener.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestListener.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestListener.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestMain.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestMain.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestMain.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestMain.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestRunner.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestRunner.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestRunner.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestRunner.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestSuite.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestSuite.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestSuite.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestSuite.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestSuite.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestSuite.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestSuite.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestSuite.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestTracker.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestTracker.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestTracker.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestTracker.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/TestTracker.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestTracker.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/TestTracker.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/TestTracker.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/ValueTraits.cpp b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/ValueTraits.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/ValueTraits.cpp rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/ValueTraits.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/ValueTraits.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/ValueTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/ValueTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/ValueTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/Win32Gui.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/Win32Gui.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/Win32Gui.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/Win32Gui.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/WrappedTestSuite.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/WrappedTestSuite.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/WrappedTestSuite.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/WrappedTestSuite.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/X11Gui.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/X11Gui.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/X11Gui.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/X11Gui.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/XUnitPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/XUnitPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/XUnitPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/XUnitPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/XmlFormatter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/XmlFormatter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/XmlFormatter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/XmlFormatter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/XmlPrinter.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/XmlPrinter.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/XmlPrinter.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/XmlPrinter.h diff --git a/Code/Mantid/TestingTools/cxxtest/cxxtest/YesNoRunner.h b/Code/Mantid/Testing/Tools/cxxtest/cxxtest/YesNoRunner.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/cxxtest/YesNoRunner.h rename to Code/Mantid/Testing/Tools/cxxtest/cxxtest/YesNoRunner.h diff --git a/Code/Mantid/TestingTools/cxxtest/docs/.cvsignore b/Code/Mantid/Testing/Tools/cxxtest/docs/.cvsignore similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/.cvsignore rename to Code/Mantid/Testing/Tools/cxxtest/docs/.cvsignore diff --git a/Code/Mantid/TestingTools/cxxtest/docs/Makefile b/Code/Mantid/Testing/Tools/cxxtest/docs/Makefile similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/Makefile rename to Code/Mantid/Testing/Tools/cxxtest/docs/Makefile diff --git a/Code/Mantid/TestingTools/cxxtest/docs/convert.pl b/Code/Mantid/Testing/Tools/cxxtest/docs/convert.pl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/convert.pl rename to Code/Mantid/Testing/Tools/cxxtest/docs/convert.pl diff --git a/Code/Mantid/TestingTools/cxxtest/docs/guide.texi b/Code/Mantid/Testing/Tools/cxxtest/docs/guide.texi similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/guide.texi rename to Code/Mantid/Testing/Tools/cxxtest/docs/guide.texi diff --git a/Code/Mantid/TestingTools/cxxtest/docs/qt.png b/Code/Mantid/Testing/Tools/cxxtest/docs/qt.png similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/qt.png rename to Code/Mantid/Testing/Tools/cxxtest/docs/qt.png diff --git a/Code/Mantid/TestingTools/cxxtest/docs/qt2.png b/Code/Mantid/Testing/Tools/cxxtest/docs/qt2.png similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/qt2.png rename to Code/Mantid/Testing/Tools/cxxtest/docs/qt2.png diff --git a/Code/Mantid/TestingTools/cxxtest/docs/texinfo.tex b/Code/Mantid/Testing/Tools/cxxtest/docs/texinfo.tex similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/texinfo.tex rename to Code/Mantid/Testing/Tools/cxxtest/docs/texinfo.tex diff --git a/Code/Mantid/TestingTools/cxxtest/docs/win32.png b/Code/Mantid/Testing/Tools/cxxtest/docs/win32.png similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/win32.png rename to Code/Mantid/Testing/Tools/cxxtest/docs/win32.png diff --git a/Code/Mantid/TestingTools/cxxtest/docs/x11.png b/Code/Mantid/Testing/Tools/cxxtest/docs/x11.png similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/docs/x11.png rename to Code/Mantid/Testing/Tools/cxxtest/docs/x11.png diff --git a/Code/Mantid/TestingTools/cxxtest/get_revision_from_cvs.pl b/Code/Mantid/Testing/Tools/cxxtest/get_revision_from_cvs.pl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/get_revision_from_cvs.pl rename to Code/Mantid/Testing/Tools/cxxtest/get_revision_from_cvs.pl diff --git a/Code/Mantid/TestingTools/cxxtest/python/README.txt b/Code/Mantid/Testing/Tools/cxxtest/python/README.txt similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/README.txt rename to Code/Mantid/Testing/Tools/cxxtest/python/README.txt diff --git a/Code/Mantid/TestingTools/cxxtest/python/cxxtest/__init__.py b/Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/cxxtest/__init__.py rename to Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/__init__.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/cxxtest/__release__.py b/Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/__release__.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/cxxtest/__release__.py rename to Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/__release__.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtest_misc.py b/Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtest_misc.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtest_misc.py rename to Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtest_misc.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtest_parser.py b/Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtest_parser.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtest_parser.py rename to Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtest_parser.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtestgen.py b/Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtestgen.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/cxxtest/cxxtestgen.py rename to Code/Mantid/Testing/Tools/cxxtest/python/cxxtest/cxxtestgen.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/ez_setup.py b/Code/Mantid/Testing/Tools/cxxtest/python/ez_setup.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/ez_setup.py rename to Code/Mantid/Testing/Tools/cxxtest/python/ez_setup.py diff --git a/Code/Mantid/TestingTools/cxxtest/python/scripts/cxxtestgen b/Code/Mantid/Testing/Tools/cxxtest/python/scripts/cxxtestgen similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/scripts/cxxtestgen rename to Code/Mantid/Testing/Tools/cxxtest/python/scripts/cxxtestgen diff --git a/Code/Mantid/TestingTools/cxxtest/python/setup.py b/Code/Mantid/Testing/Tools/cxxtest/python/setup.py similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/python/setup.py rename to Code/Mantid/Testing/Tools/cxxtest/python/setup.py diff --git a/Code/Mantid/TestingTools/cxxtest/sample/.cvsignore b/Code/Mantid/Testing/Tools/cxxtest/sample/.cvsignore similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/.cvsignore rename to Code/Mantid/Testing/Tools/cxxtest/sample/.cvsignore diff --git a/Code/Mantid/TestingTools/cxxtest/sample/Construct b/Code/Mantid/Testing/Tools/cxxtest/sample/Construct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/Construct rename to Code/Mantid/Testing/Tools/cxxtest/sample/Construct diff --git a/Code/Mantid/TestingTools/cxxtest/sample/CreatedTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/CreatedTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/CreatedTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/CreatedTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/DeltaTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/DeltaTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/DeltaTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/DeltaTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/EnumTraits.h b/Code/Mantid/Testing/Tools/cxxtest/sample/EnumTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/EnumTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/EnumTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/ExceptionTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/ExceptionTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/ExceptionTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/ExceptionTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/FixtureTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/FixtureTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/FixtureTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/FixtureTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/Makefile.PL b/Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.PL similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/Makefile.PL rename to Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.PL diff --git a/Code/Mantid/TestingTools/cxxtest/sample/Makefile.bcc32 b/Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.bcc32 similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/Makefile.bcc32 rename to Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.bcc32 diff --git a/Code/Mantid/TestingTools/cxxtest/sample/Makefile.msvc b/Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.msvc similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/Makefile.msvc rename to Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.msvc diff --git a/Code/Mantid/TestingTools/cxxtest/sample/Makefile.unix b/Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.unix similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/Makefile.unix rename to Code/Mantid/Testing/Tools/cxxtest/sample/Makefile.unix diff --git a/Code/Mantid/TestingTools/cxxtest/sample/MessageTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/MessageTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/MessageTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/MessageTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/SCons/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/sample/SCons/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/SCons/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/sample/SCons/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/sample/SCons/include/stack.h b/Code/Mantid/Testing/Tools/cxxtest/sample/SCons/include/stack.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/SCons/include/stack.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/SCons/include/stack.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/SCons/src/stack.c b/Code/Mantid/Testing/Tools/cxxtest/sample/SCons/src/stack.c similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/SCons/src/stack.c rename to Code/Mantid/Testing/Tools/cxxtest/sample/SCons/src/stack.c diff --git a/Code/Mantid/TestingTools/cxxtest/sample/SCons/tests/stack_test.h b/Code/Mantid/Testing/Tools/cxxtest/sample/SCons/tests/stack_test.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/SCons/tests/stack_test.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/SCons/tests/stack_test.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/SimpleTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/SimpleTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/SimpleTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/SimpleTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/TraitsTest.h b/Code/Mantid/Testing/Tools/cxxtest/sample/TraitsTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/TraitsTest.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/TraitsTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/aborter.tpl b/Code/Mantid/Testing/Tools/cxxtest/sample/aborter.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/aborter.tpl rename to Code/Mantid/Testing/Tools/cxxtest/sample/aborter.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/sample/file_printer.tpl b/Code/Mantid/Testing/Tools/cxxtest/sample/file_printer.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/file_printer.tpl rename to Code/Mantid/Testing/Tools/cxxtest/sample/file_printer.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/sample/gui/GreenYellowRed.h b/Code/Mantid/Testing/Tools/cxxtest/sample/gui/GreenYellowRed.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/gui/GreenYellowRed.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/gui/GreenYellowRed.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/Dice.cpp b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/Dice.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/Dice.cpp rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/Dice.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/Dice.h b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/Dice.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/Dice.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/Dice.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/Makefile b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/Makefile similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/Makefile rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/Makefile diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/MockStdlib.h b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/MockStdlib.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/MockStdlib.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/MockStdlib.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/T/stdlib.h b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/T/stdlib.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/T/stdlib.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/T/stdlib.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/TestDice.h b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/TestDice.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/TestDice.h rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/TestDice.h diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/mock_stdlib.cpp b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/mock_stdlib.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/mock_stdlib.cpp rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/mock_stdlib.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/real_stdlib.cpp b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/real_stdlib.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/real_stdlib.cpp rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/real_stdlib.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/mock/roll.cpp b/Code/Mantid/Testing/Tools/cxxtest/sample/mock/roll.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/mock/roll.cpp rename to Code/Mantid/Testing/Tools/cxxtest/sample/mock/roll.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_1_Run.dsp b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_1_Run.dsp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_1_Run.dsp rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_1_Run.dsp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_2_Build.dsp b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_2_Build.dsp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_2_Build.dsp rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_2_Build.dsp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_3_Generate.dsp b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_3_Generate.dsp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_3_Generate.dsp rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_3_Generate.dsp diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_Workspace.dsw b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_Workspace.dsw similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/CxxTest_Workspace.dsw rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/CxxTest_Workspace.dsw diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/FixFiles.bat b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/FixFiles.bat similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/FixFiles.bat rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/FixFiles.bat diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/Makefile b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/Makefile similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/Makefile rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/Makefile diff --git a/Code/Mantid/TestingTools/cxxtest/sample/msvc/ReadMe.txt b/Code/Mantid/Testing/Tools/cxxtest/sample/msvc/ReadMe.txt similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/msvc/ReadMe.txt rename to Code/Mantid/Testing/Tools/cxxtest/sample/msvc/ReadMe.txt diff --git a/Code/Mantid/TestingTools/cxxtest/sample/only.tpl b/Code/Mantid/Testing/Tools/cxxtest/sample/only.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/only.tpl rename to Code/Mantid/Testing/Tools/cxxtest/sample/only.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/sample/parts/.cvsignore b/Code/Mantid/Testing/Tools/cxxtest/sample/parts/.cvsignore similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/parts/.cvsignore rename to Code/Mantid/Testing/Tools/cxxtest/sample/parts/.cvsignore diff --git a/Code/Mantid/TestingTools/cxxtest/sample/parts/Makefile.unix b/Code/Mantid/Testing/Tools/cxxtest/sample/parts/Makefile.unix similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/parts/Makefile.unix rename to Code/Mantid/Testing/Tools/cxxtest/sample/parts/Makefile.unix diff --git a/Code/Mantid/TestingTools/cxxtest/sample/winddk/Makefile b/Code/Mantid/Testing/Tools/cxxtest/sample/winddk/Makefile similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/winddk/Makefile rename to Code/Mantid/Testing/Tools/cxxtest/sample/winddk/Makefile diff --git a/Code/Mantid/TestingTools/cxxtest/sample/winddk/Makefile.inc b/Code/Mantid/Testing/Tools/cxxtest/sample/winddk/Makefile.inc similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/winddk/Makefile.inc rename to Code/Mantid/Testing/Tools/cxxtest/sample/winddk/Makefile.inc diff --git a/Code/Mantid/TestingTools/cxxtest/sample/winddk/RunTests.tpl b/Code/Mantid/Testing/Tools/cxxtest/sample/winddk/RunTests.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/winddk/RunTests.tpl rename to Code/Mantid/Testing/Tools/cxxtest/sample/winddk/RunTests.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/sample/winddk/SOURCES b/Code/Mantid/Testing/Tools/cxxtest/sample/winddk/SOURCES similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/winddk/SOURCES rename to Code/Mantid/Testing/Tools/cxxtest/sample/winddk/SOURCES diff --git a/Code/Mantid/TestingTools/cxxtest/sample/yes_no_runner.cpp b/Code/Mantid/Testing/Tools/cxxtest/sample/yes_no_runner.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/sample/yes_no_runner.cpp rename to Code/Mantid/Testing/Tools/cxxtest/sample/yes_no_runner.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/.cvsignore b/Code/Mantid/Testing/Tools/cxxtest/test/.cvsignore similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/.cvsignore rename to Code/Mantid/Testing/Tools/cxxtest/test/.cvsignore diff --git a/Code/Mantid/TestingTools/cxxtest/test/AborterNoThrow.h b/Code/Mantid/Testing/Tools/cxxtest/test/AborterNoThrow.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/AborterNoThrow.h rename to Code/Mantid/Testing/Tools/cxxtest/test/AborterNoThrow.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/BadTest.h b/Code/Mantid/Testing/Tools/cxxtest/test/BadTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/BadTest.h rename to Code/Mantid/Testing/Tools/cxxtest/test/BadTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Comments.h b/Code/Mantid/Testing/Tools/cxxtest/test/Comments.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Comments.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Comments.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DeepAbort.h b/Code/Mantid/Testing/Tools/cxxtest/test/DeepAbort.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DeepAbort.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DeepAbort.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DefaultAbort.h b/Code/Mantid/Testing/Tools/cxxtest/test/DefaultAbort.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DefaultAbort.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DefaultAbort.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DefaultTraits.h b/Code/Mantid/Testing/Tools/cxxtest/test/DefaultTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DefaultTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DefaultTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DoubleCall.h b/Code/Mantid/Testing/Tools/cxxtest/test/DoubleCall.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DoubleCall.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DoubleCall.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DynamicAbort.h b/Code/Mantid/Testing/Tools/cxxtest/test/DynamicAbort.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DynamicAbort.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DynamicAbort.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/DynamicMax.h b/Code/Mantid/Testing/Tools/cxxtest/test/DynamicMax.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/DynamicMax.h rename to Code/Mantid/Testing/Tools/cxxtest/test/DynamicMax.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/EmptySuite.h b/Code/Mantid/Testing/Tools/cxxtest/test/EmptySuite.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/EmptySuite.h rename to Code/Mantid/Testing/Tools/cxxtest/test/EmptySuite.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Exceptions.h b/Code/Mantid/Testing/Tools/cxxtest/test/Exceptions.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Exceptions.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Exceptions.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Factor.h b/Code/Mantid/Testing/Tools/cxxtest/test/Factor.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Factor.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Factor.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/ForceNoEh.h b/Code/Mantid/Testing/Tools/cxxtest/test/ForceNoEh.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/ForceNoEh.h rename to Code/Mantid/Testing/Tools/cxxtest/test/ForceNoEh.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GfSetUpFails.h b/Code/Mantid/Testing/Tools/cxxtest/test/GfSetUpFails.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GfSetUpFails.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GfSetUpFails.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GfSetUpThrows.h b/Code/Mantid/Testing/Tools/cxxtest/test/GfSetUpThrows.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GfSetUpThrows.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GfSetUpThrows.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GfTearDownFails.h b/Code/Mantid/Testing/Tools/cxxtest/test/GfTearDownFails.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GfTearDownFails.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GfTearDownFails.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GfTearDownThrows.h b/Code/Mantid/Testing/Tools/cxxtest/test/GfTearDownThrows.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GfTearDownThrows.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GfTearDownThrows.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GlobalFixtures.h b/Code/Mantid/Testing/Tools/cxxtest/test/GlobalFixtures.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GlobalFixtures.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GlobalFixtures.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GoodSuite.h b/Code/Mantid/Testing/Tools/cxxtest/test/GoodSuite.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GoodSuite.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GoodSuite.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/GuiWait.h b/Code/Mantid/Testing/Tools/cxxtest/test/GuiWait.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/GuiWait.h rename to Code/Mantid/Testing/Tools/cxxtest/test/GuiWait.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/HaveStd.h b/Code/Mantid/Testing/Tools/cxxtest/test/HaveStd.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/HaveStd.h rename to Code/Mantid/Testing/Tools/cxxtest/test/HaveStd.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/IncludeTest.h b/Code/Mantid/Testing/Tools/cxxtest/test/IncludeTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/IncludeTest.h rename to Code/Mantid/Testing/Tools/cxxtest/test/IncludeTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Int64.h b/Code/Mantid/Testing/Tools/cxxtest/test/Int64.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Int64.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Int64.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/LessThanEquals.h b/Code/Mantid/Testing/Tools/cxxtest/test/LessThanEquals.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/LessThanEquals.h rename to Code/Mantid/Testing/Tools/cxxtest/test/LessThanEquals.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/LongLong.h b/Code/Mantid/Testing/Tools/cxxtest/test/LongLong.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/LongLong.h rename to Code/Mantid/Testing/Tools/cxxtest/test/LongLong.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/LongTraits.h b/Code/Mantid/Testing/Tools/cxxtest/test/LongTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/LongTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/test/LongTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Makefile b/Code/Mantid/Testing/Tools/cxxtest/test/Makefile similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Makefile rename to Code/Mantid/Testing/Tools/cxxtest/test/Makefile diff --git a/Code/Mantid/TestingTools/cxxtest/test/MaxDump.h b/Code/Mantid/Testing/Tools/cxxtest/test/MaxDump.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/MaxDump.h rename to Code/Mantid/Testing/Tools/cxxtest/test/MaxDump.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/MockTest.h b/Code/Mantid/Testing/Tools/cxxtest/test/MockTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/MockTest.h rename to Code/Mantid/Testing/Tools/cxxtest/test/MockTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/NoEh.h b/Code/Mantid/Testing/Tools/cxxtest/test/NoEh.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/NoEh.h rename to Code/Mantid/Testing/Tools/cxxtest/test/NoEh.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Part1.h b/Code/Mantid/Testing/Tools/cxxtest/test/Part1.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Part1.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Part1.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Part2.h b/Code/Mantid/Testing/Tools/cxxtest/test/Part2.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Part2.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Part2.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Relation.h b/Code/Mantid/Testing/Tools/cxxtest/test/Relation.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Relation.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Relation.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/SameData.h b/Code/Mantid/Testing/Tools/cxxtest/test/SameData.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/SameData.h rename to Code/Mantid/Testing/Tools/cxxtest/test/SameData.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/SameZero.h b/Code/Mantid/Testing/Tools/cxxtest/test/SameZero.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/SameZero.h rename to Code/Mantid/Testing/Tools/cxxtest/test/SameZero.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/SetUpWorldFails.h b/Code/Mantid/Testing/Tools/cxxtest/test/SetUpWorldFails.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/SetUpWorldFails.h rename to Code/Mantid/Testing/Tools/cxxtest/test/SetUpWorldFails.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/SetUpWorldThrows.h b/Code/Mantid/Testing/Tools/cxxtest/test/SetUpWorldThrows.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/SetUpWorldThrows.h rename to Code/Mantid/Testing/Tools/cxxtest/test/SetUpWorldThrows.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Something.h b/Code/Mantid/Testing/Tools/cxxtest/test/Something.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Something.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Something.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/StlTraits.h b/Code/Mantid/Testing/Tools/cxxtest/test/StlTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/StlTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/test/StlTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/TearDownWorldFails.h b/Code/Mantid/Testing/Tools/cxxtest/test/TearDownWorldFails.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/TearDownWorldFails.h rename to Code/Mantid/Testing/Tools/cxxtest/test/TearDownWorldFails.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/TearDownWorldThrows.h b/Code/Mantid/Testing/Tools/cxxtest/test/TearDownWorldThrows.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/TearDownWorldThrows.h rename to Code/Mantid/Testing/Tools/cxxtest/test/TearDownWorldThrows.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/ThrowNoStd.h b/Code/Mantid/Testing/Tools/cxxtest/test/ThrowNoStd.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/ThrowNoStd.h rename to Code/Mantid/Testing/Tools/cxxtest/test/ThrowNoStd.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/ThrowNoStd.tpl b/Code/Mantid/Testing/Tools/cxxtest/test/ThrowNoStd.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/ThrowNoStd.tpl rename to Code/Mantid/Testing/Tools/cxxtest/test/ThrowNoStd.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/test/ThrowsAssert.h b/Code/Mantid/Testing/Tools/cxxtest/test/ThrowsAssert.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/ThrowsAssert.h rename to Code/Mantid/Testing/Tools/cxxtest/test/ThrowsAssert.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/TraitsTest.h b/Code/Mantid/Testing/Tools/cxxtest/test/TraitsTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/TraitsTest.h rename to Code/Mantid/Testing/Tools/cxxtest/test/TraitsTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/Tsm.h b/Code/Mantid/Testing/Tools/cxxtest/test/Tsm.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/Tsm.h rename to Code/Mantid/Testing/Tools/cxxtest/test/Tsm.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/UserTraits.h b/Code/Mantid/Testing/Tools/cxxtest/test/UserTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/UserTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/test/UserTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/UserTraits.tpl b/Code/Mantid/Testing/Tools/cxxtest/test/UserTraits.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/UserTraits.tpl rename to Code/Mantid/Testing/Tools/cxxtest/test/UserTraits.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/test/VoidTraits.h b/Code/Mantid/Testing/Tools/cxxtest/test/VoidTraits.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/VoidTraits.h rename to Code/Mantid/Testing/Tools/cxxtest/test/VoidTraits.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/WideCharTest.h b/Code/Mantid/Testing/Tools/cxxtest/test/WideCharTest.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/WideCharTest.h rename to Code/Mantid/Testing/Tools/cxxtest/test/WideCharTest.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/WorldFixtures.h b/Code/Mantid/Testing/Tools/cxxtest/test/WorldFixtures.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/WorldFixtures.h rename to Code/Mantid/Testing/Tools/cxxtest/test/WorldFixtures.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/abort.out b/Code/Mantid/Testing/Tools/cxxtest/test/abort.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/abort.out rename to Code/Mantid/Testing/Tools/cxxtest/test/abort.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/activate.tpl b/Code/Mantid/Testing/Tools/cxxtest/test/activate.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/activate.tpl rename to Code/Mantid/Testing/Tools/cxxtest/test/activate.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/test/anything.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/anything.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/anything.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/anything.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/comments.out b/Code/Mantid/Testing/Tools/cxxtest/test/comments.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/comments.out rename to Code/Mantid/Testing/Tools/cxxtest/test/comments.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/cxxtest/DummyGui.h b/Code/Mantid/Testing/Tools/cxxtest/test/cxxtest/DummyGui.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/cxxtest/DummyGui.h rename to Code/Mantid/Testing/Tools/cxxtest/test/cxxtest/DummyGui.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/default_abort.out b/Code/Mantid/Testing/Tools/cxxtest/test/default_abort.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/default_abort.out rename to Code/Mantid/Testing/Tools/cxxtest/test/default_abort.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/eh_normals.out b/Code/Mantid/Testing/Tools/cxxtest/test/eh_normals.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/eh_normals.out rename to Code/Mantid/Testing/Tools/cxxtest/test/eh_normals.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/error.out b/Code/Mantid/Testing/Tools/cxxtest/test/error.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/error.out rename to Code/Mantid/Testing/Tools/cxxtest/test/error.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/factor.out b/Code/Mantid/Testing/Tools/cxxtest/test/factor.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/factor.out rename to Code/Mantid/Testing/Tools/cxxtest/test/factor.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/.cvsignore b/Code/Mantid/Testing/Tools/cxxtest/test/fake/.cvsignore similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/.cvsignore rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/.cvsignore diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/X11/Xlib.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/X11/Xlib.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/X11/Xlib.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/X11/Xlib.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/X11/Xutil.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/X11/Xutil.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/X11/Xutil.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/X11/Xutil.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/commctrl.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/commctrl.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/commctrl.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/commctrl.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qapplication.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qapplication.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qapplication.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qapplication.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qglobal.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qglobal.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qglobal.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qglobal.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qlabel.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qlabel.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qlabel.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qlabel.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qlayout.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qlayout.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qlayout.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qlayout.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qmessagebox.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qmessagebox.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qmessagebox.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qmessagebox.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qpixmap.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qpixmap.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qpixmap.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qpixmap.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qprogressbar.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qprogressbar.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qprogressbar.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qprogressbar.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qstatusbar.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qstatusbar.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qstatusbar.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qstatusbar.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qstring.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qstring.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qstring.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qstring.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/qwidget.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/qwidget.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/qwidget.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/qwidget.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/fake/windows.h b/Code/Mantid/Testing/Tools/cxxtest/test/fake/windows.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/fake/windows.h rename to Code/Mantid/Testing/Tools/cxxtest/test/fake/windows.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/gfsuf.out b/Code/Mantid/Testing/Tools/cxxtest/test/gfsuf.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gfsuf.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gfsuf.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gfsut.out b/Code/Mantid/Testing/Tools/cxxtest/test/gfsut.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gfsut.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gfsut.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gftdf.out b/Code/Mantid/Testing/Tools/cxxtest/test/gftdf.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gftdf.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gftdf.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gftdt.out b/Code/Mantid/Testing/Tools/cxxtest/test/gftdt.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gftdt.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gftdt.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gfxs.out b/Code/Mantid/Testing/Tools/cxxtest/test/gfxs.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gfxs.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gfxs.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/good.out b/Code/Mantid/Testing/Tools/cxxtest/test/good.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/good.out rename to Code/Mantid/Testing/Tools/cxxtest/test/good.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gui.out b/Code/Mantid/Testing/Tools/cxxtest/test/gui.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gui.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gui.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/gui_paren.out b/Code/Mantid/Testing/Tools/cxxtest/test/gui_paren.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/gui_paren.out rename to Code/Mantid/Testing/Tools/cxxtest/test/gui_paren.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/include.out b/Code/Mantid/Testing/Tools/cxxtest/test/include.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/include.out rename to Code/Mantid/Testing/Tools/cxxtest/test/include.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/int64.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/int64.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/int64.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/int64.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/int64.out b/Code/Mantid/Testing/Tools/cxxtest/test/int64.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/int64.out rename to Code/Mantid/Testing/Tools/cxxtest/test/int64.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/longlong.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/longlong.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/longlong.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/longlong.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/longlong.out b/Code/Mantid/Testing/Tools/cxxtest/test/longlong.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/longlong.out rename to Code/Mantid/Testing/Tools/cxxtest/test/longlong.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/main.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/main.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/main.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/main.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/max.out b/Code/Mantid/Testing/Tools/cxxtest/test/max.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/max.out rename to Code/Mantid/Testing/Tools/cxxtest/test/max.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/normal.out b/Code/Mantid/Testing/Tools/cxxtest/test/normal.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/normal.out rename to Code/Mantid/Testing/Tools/cxxtest/test/normal.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/paren.out b/Code/Mantid/Testing/Tools/cxxtest/test/paren.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/paren.out rename to Code/Mantid/Testing/Tools/cxxtest/test/paren.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/parts.out b/Code/Mantid/Testing/Tools/cxxtest/test/parts.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/parts.out rename to Code/Mantid/Testing/Tools/cxxtest/test/parts.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/preamble.out b/Code/Mantid/Testing/Tools/cxxtest/test/preamble.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/preamble.out rename to Code/Mantid/Testing/Tools/cxxtest/test/preamble.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/preamble.tpl b/Code/Mantid/Testing/Tools/cxxtest/test/preamble.tpl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/preamble.tpl rename to Code/Mantid/Testing/Tools/cxxtest/test/preamble.tpl diff --git a/Code/Mantid/TestingTools/cxxtest/test/runner.out b/Code/Mantid/Testing/Tools/cxxtest/test/runner.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/runner.out rename to Code/Mantid/Testing/Tools/cxxtest/test/runner.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/std.out b/Code/Mantid/Testing/Tools/cxxtest/test/std.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/std.out rename to Code/Mantid/Testing/Tools/cxxtest/test/std.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/stl.out b/Code/Mantid/Testing/Tools/cxxtest/test/stl.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/stl.out rename to Code/Mantid/Testing/Tools/cxxtest/test/stl.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/stpltpl.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/stpltpl.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/stpltpl.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/stpltpl.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/suite.out b/Code/Mantid/Testing/Tools/cxxtest/test/suite.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/suite.out rename to Code/Mantid/Testing/Tools/cxxtest/test/suite.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/suite_test.out b/Code/Mantid/Testing/Tools/cxxtest/test/suite_test.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/suite_test.out rename to Code/Mantid/Testing/Tools/cxxtest/test/suite_test.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/suwf.out b/Code/Mantid/Testing/Tools/cxxtest/test/suwf.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/suwf.out rename to Code/Mantid/Testing/Tools/cxxtest/test/suwf.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/suwt.out b/Code/Mantid/Testing/Tools/cxxtest/test/suwt.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/suwt.out rename to Code/Mantid/Testing/Tools/cxxtest/test/suwt.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/tdwf.out b/Code/Mantid/Testing/Tools/cxxtest/test/tdwf.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/tdwf.out rename to Code/Mantid/Testing/Tools/cxxtest/test/tdwf.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/tdwt.out b/Code/Mantid/Testing/Tools/cxxtest/test/tdwt.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/tdwt.out rename to Code/Mantid/Testing/Tools/cxxtest/test/tdwt.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/test.pl b/Code/Mantid/Testing/Tools/cxxtest/test/test.pl similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/test.pl rename to Code/Mantid/Testing/Tools/cxxtest/test/test.pl diff --git a/Code/Mantid/TestingTools/cxxtest/test/throw.out b/Code/Mantid/Testing/Tools/cxxtest/test/throw.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/throw.out rename to Code/Mantid/Testing/Tools/cxxtest/test/throw.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/tpltpl.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/tpltpl.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/tpltpl.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/tpltpl.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/unit/LinkedList_test.t.h b/Code/Mantid/Testing/Tools/cxxtest/test/unit/LinkedList_test.t.h similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/unit/LinkedList_test.t.h rename to Code/Mantid/Testing/Tools/cxxtest/test/unit/LinkedList_test.t.h diff --git a/Code/Mantid/TestingTools/cxxtest/test/unit/SConstruct b/Code/Mantid/Testing/Tools/cxxtest/test/unit/SConstruct similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/unit/SConstruct rename to Code/Mantid/Testing/Tools/cxxtest/test/unit/SConstruct diff --git a/Code/Mantid/TestingTools/cxxtest/test/user.out b/Code/Mantid/Testing/Tools/cxxtest/test/user.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/user.out rename to Code/Mantid/Testing/Tools/cxxtest/test/user.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/wchar.cpp b/Code/Mantid/Testing/Tools/cxxtest/test/wchar.cpp similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/wchar.cpp rename to Code/Mantid/Testing/Tools/cxxtest/test/wchar.cpp diff --git a/Code/Mantid/TestingTools/cxxtest/test/wchar.out b/Code/Mantid/Testing/Tools/cxxtest/test/wchar.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/wchar.out rename to Code/Mantid/Testing/Tools/cxxtest/test/wchar.out diff --git a/Code/Mantid/TestingTools/cxxtest/test/wildcard.out b/Code/Mantid/Testing/Tools/cxxtest/test/wildcard.out similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/test/wildcard.out rename to Code/Mantid/Testing/Tools/cxxtest/test/wildcard.out diff --git a/Code/Mantid/TestingTools/cxxtest/www/cn-project-pages/snippets/HtmlSnippet1.html b/Code/Mantid/Testing/Tools/cxxtest/www/cn-project-pages/snippets/HtmlSnippet1.html similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/www/cn-project-pages/snippets/HtmlSnippet1.html rename to Code/Mantid/Testing/Tools/cxxtest/www/cn-project-pages/snippets/HtmlSnippet1.html diff --git a/Code/Mantid/TestingTools/cxxtest/www/cn-project-pages/snippets/page.xml b/Code/Mantid/Testing/Tools/cxxtest/www/cn-project-pages/snippets/page.xml similarity index 100% rename from Code/Mantid/TestingTools/cxxtest/www/cn-project-pages/snippets/page.xml rename to Code/Mantid/Testing/Tools/cxxtest/www/cn-project-pages/snippets/page.xml diff --git a/Code/Mantid/TestingTools/generatetestmain.py b/Code/Mantid/Testing/Tools/generatetestmain.py similarity index 100% rename from Code/Mantid/TestingTools/generatetestmain.py rename to Code/Mantid/Testing/Tools/generatetestmain.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/CHANGES b/Code/Mantid/Testing/Tools/gmock-1.6.0/CHANGES similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/CHANGES rename to Code/Mantid/Testing/Tools/gmock-1.6.0/CHANGES diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/CMakeLists.txt b/Code/Mantid/Testing/Tools/gmock-1.6.0/CMakeLists.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/CMakeLists.txt rename to Code/Mantid/Testing/Tools/gmock-1.6.0/CMakeLists.txt diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/CONTRIBUTORS b/Code/Mantid/Testing/Tools/gmock-1.6.0/CONTRIBUTORS similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/CONTRIBUTORS rename to Code/Mantid/Testing/Tools/gmock-1.6.0/CONTRIBUTORS diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/COPYING b/Code/Mantid/Testing/Tools/gmock-1.6.0/COPYING similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/COPYING rename to Code/Mantid/Testing/Tools/gmock-1.6.0/COPYING diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/Makefile.am b/Code/Mantid/Testing/Tools/gmock-1.6.0/Makefile.am similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/Makefile.am rename to Code/Mantid/Testing/Tools/gmock-1.6.0/Makefile.am diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/Makefile.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/Makefile.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/Makefile.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/Makefile.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/README b/Code/Mantid/Testing/Tools/gmock-1.6.0/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/README rename to Code/Mantid/Testing/Tools/gmock-1.6.0/README diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/aclocal.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/aclocal.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/aclocal.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/aclocal.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.guess b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.guess similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.guess rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.guess diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.h.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.h.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.h.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.h.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.sub b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.sub similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/config.sub rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/config.sub diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/depcomp b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/depcomp similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/depcomp rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/depcomp diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/install-sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/install-sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/install-sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/install-sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/ltmain.sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/ltmain.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/ltmain.sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/ltmain.sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/build-aux/missing b/Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/missing similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/build-aux/missing rename to Code/Mantid/Testing/Tools/gmock-1.6.0/build-aux/missing diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/configure b/Code/Mantid/Testing/Tools/gmock-1.6.0/configure similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/configure rename to Code/Mantid/Testing/Tools/gmock-1.6.0/configure diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/configure.ac b/Code/Mantid/Testing/Tools/gmock-1.6.0/configure.ac similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/configure.ac rename to Code/Mantid/Testing/Tools/gmock-1.6.0/configure.ac diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock-gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock-gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock-gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock-gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock/gmock.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock/gmock.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock/gmock.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock/gmock.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock_main.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gmock_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gmock_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/fused-src/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/fused-src/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/CHANGES b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CHANGES similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/CHANGES rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CHANGES diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/CMakeLists.txt b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CMakeLists.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/CMakeLists.txt rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CMakeLists.txt diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/CONTRIBUTORS b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CONTRIBUTORS similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/CONTRIBUTORS rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/CONTRIBUTORS diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/COPYING b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/COPYING similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/COPYING rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/COPYING diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/Makefile.am b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/Makefile.am similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/Makefile.am rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/Makefile.am diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/Makefile.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/Makefile.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/Makefile.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/Makefile.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/README b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/README rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/README diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/aclocal.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/aclocal.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/aclocal.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/aclocal.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.guess b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.guess similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.guess rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.guess diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.h.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.h.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.h.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.h.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.sub b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.sub similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/config.sub rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/config.sub diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/depcomp b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/depcomp similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/depcomp rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/depcomp diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/install-sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/install-sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/install-sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/install-sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/ltmain.sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/ltmain.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/ltmain.sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/ltmain.sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/missing b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/missing similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/build-aux/missing rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/build-aux/missing diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/cmake/internal_utils.cmake b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/cmake/internal_utils.cmake similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/cmake/internal_utils.cmake rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/cmake/internal_utils.cmake diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest.cbproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest.groupproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest.groupproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest.groupproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest.groupproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_all.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_all.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_link.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_link.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_link.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_link.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_main.cbproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_main.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_main.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_main.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_unittest.cbproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_unittest.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/codegear/gtest_unittest.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/codegear/gtest_unittest.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/configure b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/configure similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/configure rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/configure diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/configure.ac b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/configure.ac similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/configure.ac rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/configure.ac diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest_main.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/fused-src/gtest/gtest_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/fused-src/gtest/gtest_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-death-test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-death-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-death-test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-death-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-message.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-message.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-message.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-message.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-param-test.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-printers.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-printers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-printers.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-printers.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-spi.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-spi.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-spi.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-spi.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-test-part.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-test-part.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-test-part.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-test-part.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-typed-test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-typed-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest-typed-test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest-typed-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest_pred_impl.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest_pred_impl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest_pred_impl.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest_pred_impl.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest_prod.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest_prod.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/gtest_prod.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/gtest_prod.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-death-test-internal.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-death-test-internal.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-death-test-internal.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-death-test-internal.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-filepath.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-filepath.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-filepath.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-filepath.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-internal.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-internal.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-internal.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-internal.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-linked_ptr.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-linked_ptr.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-linked_ptr.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-linked_ptr.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-param-util.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-port.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-port.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-port.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-port.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-string.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-string.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-string.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-string.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-tuple.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/include/gtest/internal/gtest-type-util.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/acx_pthread.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/acx_pthread.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/acx_pthread.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/acx_pthread.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/gtest.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/gtest.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/gtest.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/gtest.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/libtool.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/libtool.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/libtool.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/libtool.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltoptions.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltoptions.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltoptions.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltoptions.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltsugar.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltsugar.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltsugar.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltsugar.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltversion.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltversion.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/ltversion.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/ltversion.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/lt~obsolete.m4 b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/lt~obsolete.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/m4/lt~obsolete.m4 rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/m4/lt~obsolete.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest-md.sln b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest-md.sln similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest-md.sln rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest-md.sln diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest-md.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest-md.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest-md.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest-md.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest.sln b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest.sln similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest.sln rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest.sln diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_main-md.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_main-md.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_main-md.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_main-md.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_main.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_main.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_main.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_main.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_prod_test-md.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_prod_test-md.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_prod_test-md.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_prod_test-md.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_prod_test.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_prod_test.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_prod_test.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_prod_test.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_unittest-md.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_unittest-md.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_unittest-md.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_unittest-md.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_unittest.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_unittest.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/msvc/gtest_unittest.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/msvc/gtest_unittest.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/prime_tables.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/prime_tables.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/prime_tables.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/prime_tables.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample10_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample10_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample10_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample10_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample1_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample1_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample2_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample2_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample3-inl.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample3-inl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample3-inl.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample3-inl.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample3_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample3_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample3_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample3_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample4_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample4_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample5_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample5_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample5_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample5_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample6_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample6_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample6_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample6_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample7_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample7_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample7_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample7_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample8_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample8_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample8_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample8_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample9_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample9_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/samples/sample9_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/samples/sample9_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/fuse_gtest_files.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/fuse_gtest_files.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/fuse_gtest_files.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/fuse_gtest_files.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/gen_gtest_pred_impl.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/gen_gtest_pred_impl.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/gen_gtest_pred_impl.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/gen_gtest_pred_impl.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/gtest-config.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/gtest-config.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/gtest-config.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/gtest-config.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/pump.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/pump.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/scripts/pump.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/scripts/pump.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-death-test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-death-test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-death-test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-death-test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-filepath.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-filepath.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-filepath.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-filepath.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-internal-inl.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-internal-inl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-internal-inl.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-internal-inl.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-port.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-port.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-port.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-port.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-printers.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-printers.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-printers.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-printers.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-test-part.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-test-part.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-test-part.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-test-part.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-typed-test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-typed-test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest-typed-test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest-typed-test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest_main.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/src/gtest_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/src/gtest_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-death-test_ex_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-death-test_ex_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-death-test_ex_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-death-test_ex_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-death-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-death-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-death-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-death-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-filepath_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-filepath_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-filepath_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-filepath_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-linked_ptr_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-linked_ptr_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-linked_ptr_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-linked_ptr_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-listener_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-listener_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-listener_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-listener_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-message_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-message_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-message_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-message_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-options_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-options_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-options_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-options_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test_test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-param-test_test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-param-test_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-port_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-port_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-port_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-port_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-printers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-printers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-printers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-printers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-test-part_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-test-part_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-test-part_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-test-part_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-tuple_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-tuple_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-tuple_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-tuple_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test_test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-typed-test_test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-typed-test_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-unittest-api_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-unittest-api_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest-unittest-api_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest-unittest-api_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_all_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_all_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_all_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_all_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_break_on_failure_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_catch_exceptions_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_color_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_color_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_color_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_color_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_color_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_color_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_color_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_color_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_env_var_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_env_var_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_env_var_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_env_var_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_env_var_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_env_var_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_env_var_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_env_var_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_environment_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_environment_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_environment_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_environment_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_filter_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_filter_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_filter_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_filter_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_filter_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_filter_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_filter_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_filter_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_help_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_help_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_help_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_help_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_help_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_help_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_help_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_help_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_list_tests_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_main_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_main_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_main_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_main_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_no_test_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_no_test_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_no_test_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_no_test_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test_golden_lin.txt b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test_golden_lin.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_output_test_golden_lin.txt rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_output_test_golden_lin.txt diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_pred_impl_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_pred_impl_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_pred_impl_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_pred_impl_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_prod_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_prod_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_prod_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_prod_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_repeat_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_repeat_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_repeat_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_repeat_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_shuffle_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_shuffle_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_shuffle_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_shuffle_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_shuffle_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_shuffle_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_shuffle_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_shuffle_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_sole_header_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_sole_header_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_sole_header_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_sole_header_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_stress_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_stress_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_stress_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_stress_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_test_utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_ex_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_ex_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_ex_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_ex_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_throw_on_failure_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_uninitialized_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_uninitialized_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_uninitialized_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_uninitialized_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_uninitialized_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_uninitialized_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_uninitialized_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_uninitialized_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfile1_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfile1_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfile1_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfile1_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfile2_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfile2_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfile2_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfile2_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfiles_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfiles_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_outfiles_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_outfiles_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_output_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/gtest_xml_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/gtest_xml_test_utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/production.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/production.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/production.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/production.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/production.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/production.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/test/production.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/test/production.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/DebugProject.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/DebugProject.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/DebugProject.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/DebugProject.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/FrameworkTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/FrameworkTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/FrameworkTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/FrameworkTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/General.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/General.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/General.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/General.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/ReleaseProject.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/ReleaseProject.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/ReleaseProject.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/ReleaseProject.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/TestTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/TestTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Config/TestTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Config/TestTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Resources/Info.plist b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Resources/Info.plist similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Resources/Info.plist rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Resources/Info.plist diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/Info.plist b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/Info.plist similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/Info.plist rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/Info.plist diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/runtests.sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/runtests.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/runtests.sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/runtests.sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Scripts/runtests.sh b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Scripts/runtests.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Scripts/runtests.sh rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Scripts/runtests.sh diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Scripts/versiongenerate.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Scripts/versiongenerate.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/Scripts/versiongenerate.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/Scripts/versiongenerate.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/gtest.xcodeproj/project.pbxproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/gtest.xcodeproj/project.pbxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/gtest/xcode/gtest.xcodeproj/project.pbxproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/gtest/xcode/gtest.xcodeproj/project.pbxproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-actions.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-cardinalities.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-cardinalities.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-cardinalities.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-cardinalities.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-actions.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-actions.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-actions.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-actions.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-actions.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-function-mockers.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-matchers.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-generated-nice-strict.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-matchers.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-matchers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-matchers.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-matchers.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-more-actions.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-more-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-more-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-more-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-spec-builders.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-spec-builders.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock-spec-builders.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock-spec-builders.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/gmock.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/gmock.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h.pump b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-generated-internal-utils.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-internal-utils.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-internal-utils.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-internal-utils.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-internal-utils.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-port.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-port.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/include/gmock/internal/gmock-port.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/include/gmock/internal/gmock-port.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock.sln b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock.sln similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock.sln rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock.sln diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_config.vsprops b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_config.vsprops similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_config.vsprops rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_config.vsprops diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_main.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_main.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_main.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_main.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_test.vcproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_test.vcproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2005/gmock_test.vcproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2005/gmock_test.vcproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock.sln b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock.sln similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock.sln rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock.sln diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock.vcxproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock.vcxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock.vcxproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock.vcxproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_config.props b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_config.props similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_config.props rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_config.props diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_main.vcxproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_main.vcxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_main.vcxproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_main.vcxproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_test.vcxproj b/Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_test.vcxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/msvc/2010/gmock_test.vcxproj rename to Code/Mantid/Testing/Tools/gmock-1.6.0/msvc/2010/gmock_test.vcxproj diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/fuse_gmock_files.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/fuse_gmock_files.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/fuse_gmock_files.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/fuse_gmock_files.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/COPYING b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/COPYING similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/COPYING rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/COPYING diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/README b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/README rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/README diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/README.cppclean b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/README.cppclean similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/README.cppclean rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/README.cppclean diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/__init__.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/__init__.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/__init__.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/ast.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/ast.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/ast.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/ast.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/gmock_class.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/gmock_class.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/gmock_class.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/gmock_class.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/keywords.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/keywords.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/keywords.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/keywords.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/tokenize.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/tokenize.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/tokenize.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/tokenize.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/utils.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/cpp/utils.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/cpp/utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/gmock_gen.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/gmock_gen.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/generator/gmock_gen.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/generator/gmock_gen.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/scripts/gmock-config.in b/Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/gmock-config.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/scripts/gmock-config.in rename to Code/Mantid/Testing/Tools/gmock-1.6.0/scripts/gmock-config.in diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-all.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-cardinalities.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-cardinalities.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-cardinalities.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-cardinalities.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-internal-utils.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-internal-utils.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-internal-utils.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-internal-utils.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-matchers.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-matchers.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-matchers.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-matchers.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-spec-builders.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-spec-builders.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock-spec-builders.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock-spec-builders.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/src/gmock_main.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/src/gmock_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/src/gmock_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-cardinalities_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-cardinalities_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-cardinalities_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-cardinalities_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-function-mockers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-function-mockers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-function-mockers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-function-mockers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-internal-utils_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-internal-utils_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-internal-utils_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-internal-utils_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-matchers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-matchers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-generated-matchers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-generated-matchers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-internal-utils_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-internal-utils_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-internal-utils_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-internal-utils_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-matchers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-matchers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-matchers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-matchers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-more-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-more-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-more-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-more-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-nice-strict_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-nice-strict_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-nice-strict_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-nice-strict_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-port_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-port_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-port_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-port_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-spec-builders_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-spec-builders_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock-spec-builders_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock-spec-builders_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_all_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_all_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_all_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_all_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_leak_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_leak_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_leak_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_leak_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_leak_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_leak_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_leak_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_leak_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link_test.h b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_link_test.h rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_link_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test_golden.txt b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test_golden.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_output_test_golden.txt rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_output_test_golden.txt diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_test.cc b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.6.0/test/gmock_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.6.0/test/gmock_test_utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/CHANGES b/Code/Mantid/Testing/Tools/gmock-1.7.0/CHANGES similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/CHANGES rename to Code/Mantid/Testing/Tools/gmock-1.7.0/CHANGES diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/CMakeLists.txt b/Code/Mantid/Testing/Tools/gmock-1.7.0/CMakeLists.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/CMakeLists.txt rename to Code/Mantid/Testing/Tools/gmock-1.7.0/CMakeLists.txt diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/CONTRIBUTORS b/Code/Mantid/Testing/Tools/gmock-1.7.0/CONTRIBUTORS similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/CONTRIBUTORS rename to Code/Mantid/Testing/Tools/gmock-1.7.0/CONTRIBUTORS diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/LICENSE b/Code/Mantid/Testing/Tools/gmock-1.7.0/LICENSE similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/LICENSE rename to Code/Mantid/Testing/Tools/gmock-1.7.0/LICENSE diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/Makefile.am b/Code/Mantid/Testing/Tools/gmock-1.7.0/Makefile.am similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/Makefile.am rename to Code/Mantid/Testing/Tools/gmock-1.7.0/Makefile.am diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/Makefile.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/Makefile.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/Makefile.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/Makefile.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/README b/Code/Mantid/Testing/Tools/gmock-1.7.0/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/README rename to Code/Mantid/Testing/Tools/gmock-1.7.0/README diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/aclocal.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/aclocal.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/aclocal.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/aclocal.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.guess b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.guess similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.guess rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.guess diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.h.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.h.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.h.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.h.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.sub b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.sub similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/config.sub rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/config.sub diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/depcomp b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/depcomp similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/depcomp rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/depcomp diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/install-sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/install-sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/install-sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/install-sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/ltmain.sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/ltmain.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/ltmain.sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/ltmain.sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/build-aux/missing b/Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/missing similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/build-aux/missing rename to Code/Mantid/Testing/Tools/gmock-1.7.0/build-aux/missing diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/configure b/Code/Mantid/Testing/Tools/gmock-1.7.0/configure similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/configure rename to Code/Mantid/Testing/Tools/gmock-1.7.0/configure diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/configure.ac b/Code/Mantid/Testing/Tools/gmock-1.7.0/configure.ac similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/configure.ac rename to Code/Mantid/Testing/Tools/gmock-1.7.0/configure.ac diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock-gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock-gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock-gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock-gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock/gmock.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock/gmock.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock/gmock.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock/gmock.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock_main.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gmock_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gmock_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/fused-src/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/fused-src/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/CHANGES b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CHANGES similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/CHANGES rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CHANGES diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/CMakeLists.txt b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CMakeLists.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/CMakeLists.txt rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CMakeLists.txt diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/CONTRIBUTORS b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CONTRIBUTORS similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/CONTRIBUTORS rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/CONTRIBUTORS diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/LICENSE b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/LICENSE similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/LICENSE rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/LICENSE diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/Makefile.am b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/Makefile.am similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/Makefile.am rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/Makefile.am diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/Makefile.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/Makefile.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/Makefile.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/Makefile.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/README b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/README rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/README diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/aclocal.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/aclocal.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/aclocal.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/aclocal.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.guess b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.guess similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.guess rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.guess diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.h.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.h.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.h.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.h.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.sub b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.sub similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/config.sub rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/config.sub diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/depcomp b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/depcomp similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/depcomp rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/depcomp diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/install-sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/install-sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/install-sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/install-sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/ltmain.sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/ltmain.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/ltmain.sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/ltmain.sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/missing b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/missing similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/build-aux/missing rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/build-aux/missing diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/cmake/internal_utils.cmake b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/cmake/internal_utils.cmake similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/cmake/internal_utils.cmake rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/cmake/internal_utils.cmake diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest.cbproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest.groupproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest.groupproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest.groupproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest.groupproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_all.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_all.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_link.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_link.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_link.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_link.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_main.cbproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_main.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_main.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_main.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_unittest.cbproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_unittest.cbproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/codegear/gtest_unittest.cbproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/codegear/gtest_unittest.cbproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/configure b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/configure similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/configure rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/configure diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/configure.ac b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/configure.ac similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/configure.ac rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/configure.ac diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest_main.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/fused-src/gtest/gtest_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/fused-src/gtest/gtest_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-death-test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-death-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-death-test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-death-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-message.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-message.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-message.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-message.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-param-test.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-printers.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-printers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-printers.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-printers.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-spi.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-spi.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-spi.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-spi.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-test-part.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-test-part.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-test-part.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-test-part.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-typed-test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-typed-test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest-typed-test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest-typed-test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest_pred_impl.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest_pred_impl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest_pred_impl.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest_pred_impl.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest_prod.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest_prod.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/gtest_prod.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/gtest_prod.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-death-test-internal.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-death-test-internal.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-death-test-internal.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-death-test-internal.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-filepath.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-filepath.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-filepath.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-filepath.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-internal.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-internal.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-internal.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-internal.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-linked_ptr.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-linked_ptr.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-linked_ptr.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-linked_ptr.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util-generated.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-param-util.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-port.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-port.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-port.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-port.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-string.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-string.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-string.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-string.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-tuple.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/include/gtest/internal/gtest-type-util.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/acx_pthread.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/acx_pthread.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/acx_pthread.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/acx_pthread.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/gtest.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/gtest.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/gtest.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/gtest.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/libtool.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/libtool.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/libtool.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/libtool.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltoptions.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltoptions.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltoptions.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltoptions.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltsugar.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltsugar.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltsugar.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltsugar.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltversion.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltversion.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/ltversion.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/ltversion.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/lt~obsolete.m4 b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/lt~obsolete.m4 similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/m4/lt~obsolete.m4 rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/m4/lt~obsolete.m4 diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/prime_tables.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/prime_tables.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/prime_tables.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/prime_tables.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample10_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample10_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample10_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample10_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample1_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample1_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample2_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample2_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample3-inl.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample3-inl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample3-inl.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample3-inl.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample3_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample3_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample3_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample3_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample4_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample4_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample5_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample5_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample5_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample5_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample6_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample6_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample6_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample6_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample7_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample7_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample7_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample7_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample8_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample8_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample8_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample8_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample9_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample9_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/samples/sample9_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/samples/sample9_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/fuse_gtest_files.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/fuse_gtest_files.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/fuse_gtest_files.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/fuse_gtest_files.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/gen_gtest_pred_impl.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/gen_gtest_pred_impl.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/gen_gtest_pred_impl.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/gen_gtest_pred_impl.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/gtest-config.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/gtest-config.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/gtest-config.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/gtest-config.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/pump.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/pump.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/scripts/pump.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/scripts/pump.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-all.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-death-test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-death-test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-death-test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-death-test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-filepath.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-filepath.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-filepath.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-filepath.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-internal-inl.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-internal-inl.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-internal-inl.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-internal-inl.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-port.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-port.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-port.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-port.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-printers.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-printers.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-printers.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-printers.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-test-part.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-test-part.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-test-part.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-test-part.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-typed-test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-typed-test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest-typed-test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest-typed-test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest_main.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/src/gtest_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/src/gtest_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-death-test_ex_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-death-test_ex_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-death-test_ex_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-death-test_ex_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-death-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-death-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-death-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-death-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-filepath_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-filepath_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-filepath_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-filepath_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-linked_ptr_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-linked_ptr_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-linked_ptr_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-linked_ptr_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-listener_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-listener_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-listener_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-listener_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-message_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-message_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-message_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-message_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-options_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-options_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-options_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-options_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test_test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-param-test_test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-param-test_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-port_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-port_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-port_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-port_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-printers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-printers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-printers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-printers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-test-part_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-test-part_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-test-part_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-test-part_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-tuple_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-tuple_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-tuple_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-tuple_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test_test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-typed-test_test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-typed-test_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-unittest-api_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-unittest-api_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest-unittest-api_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest-unittest-api_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_all_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_all_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_all_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_all_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_break_on_failure_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_catch_exceptions_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_color_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_color_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_color_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_color_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_color_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_color_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_color_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_color_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_env_var_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_env_var_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_env_var_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_env_var_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_env_var_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_env_var_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_env_var_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_env_var_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_environment_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_environment_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_environment_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_environment_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_filter_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_filter_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_filter_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_filter_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_filter_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_filter_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_filter_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_filter_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_help_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_help_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_help_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_help_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_help_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_help_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_help_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_help_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_list_tests_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_main_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_main_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_main_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_main_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_no_test_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_no_test_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_no_test_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_no_test_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test_golden_lin.txt b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test_golden_lin.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_output_test_golden_lin.txt rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_output_test_golden_lin.txt diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_pred_impl_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_pred_impl_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_pred_impl_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_pred_impl_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_premature_exit_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_premature_exit_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_premature_exit_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_premature_exit_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_prod_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_prod_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_prod_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_prod_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_repeat_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_repeat_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_repeat_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_repeat_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_shuffle_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_shuffle_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_shuffle_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_shuffle_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_shuffle_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_shuffle_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_shuffle_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_shuffle_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_sole_header_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_sole_header_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_sole_header_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_sole_header_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_stress_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_stress_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_stress_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_stress_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_test_utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_ex_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_ex_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_ex_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_ex_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_throw_on_failure_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_uninitialized_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_uninitialized_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_uninitialized_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_uninitialized_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_uninitialized_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_uninitialized_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_uninitialized_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_uninitialized_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_unittest.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_unittest.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_unittest.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_unittest.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfile1_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfile1_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfile1_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfile1_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfile2_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfile2_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfile2_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfile2_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfiles_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfiles_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_outfiles_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_outfiles_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_output_unittest_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/gtest_xml_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/gtest_xml_test_utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/production.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/production.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/production.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/production.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/production.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/production.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/test/production.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/test/production.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/DebugProject.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/DebugProject.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/DebugProject.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/DebugProject.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/FrameworkTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/FrameworkTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/FrameworkTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/FrameworkTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/General.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/General.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/General.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/General.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/ReleaseProject.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/ReleaseProject.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/ReleaseProject.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/ReleaseProject.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/StaticLibraryTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/TestTarget.xcconfig b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/TestTarget.xcconfig similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Config/TestTarget.xcconfig rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Config/TestTarget.xcconfig diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Resources/Info.plist b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Resources/Info.plist similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Resources/Info.plist rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Resources/Info.plist diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/Info.plist b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/Info.plist similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/Info.plist rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/Info.plist diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/runtests.sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/runtests.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/runtests.sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/runtests.sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Samples/FrameworkSample/widget_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Scripts/runtests.sh b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Scripts/runtests.sh similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Scripts/runtests.sh rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Scripts/runtests.sh diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Scripts/versiongenerate.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Scripts/versiongenerate.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/Scripts/versiongenerate.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/Scripts/versiongenerate.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/gtest.xcodeproj/project.pbxproj b/Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/gtest.xcodeproj/project.pbxproj similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/gtest/xcode/gtest.xcodeproj/project.pbxproj rename to Code/Mantid/Testing/Tools/gmock-1.7.0/gtest/xcode/gtest.xcodeproj/project.pbxproj diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-actions.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-cardinalities.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-cardinalities.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-cardinalities.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-cardinalities.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-actions.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-actions.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-actions.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-actions.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-actions.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-function-mockers.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-matchers.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-generated-nice-strict.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-matchers.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-matchers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-matchers.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-matchers.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-more-actions.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-more-actions.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-more-actions.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-more-actions.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-more-matchers.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-more-matchers.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-more-matchers.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-more-matchers.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-spec-builders.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-spec-builders.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock-spec-builders.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock-spec-builders.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/gmock.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/gmock.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h.pump b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h.pump similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h.pump rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-generated-internal-utils.h.pump diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-internal-utils.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-internal-utils.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-internal-utils.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-internal-utils.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-port.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-port.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/include/gmock/internal/gmock-port.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/include/gmock/internal/gmock-port.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/msvc/2005/gmock_config.vsprops b/Code/Mantid/Testing/Tools/gmock-1.7.0/msvc/2005/gmock_config.vsprops similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/msvc/2005/gmock_config.vsprops rename to Code/Mantid/Testing/Tools/gmock-1.7.0/msvc/2005/gmock_config.vsprops diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/msvc/2010/gmock_config.props b/Code/Mantid/Testing/Tools/gmock-1.7.0/msvc/2010/gmock_config.props similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/msvc/2010/gmock_config.props rename to Code/Mantid/Testing/Tools/gmock-1.7.0/msvc/2010/gmock_config.props diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/fuse_gmock_files.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/fuse_gmock_files.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/fuse_gmock_files.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/fuse_gmock_files.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/LICENSE b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/LICENSE similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/LICENSE rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/LICENSE diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/README b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/README similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/README rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/README diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/README.cppclean b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/README.cppclean similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/README.cppclean rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/README.cppclean diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/__init__.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/__init__.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/__init__.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/ast.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/ast.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/ast.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/ast.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/gmock_class.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/gmock_class.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/gmock_class.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/gmock_class.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/keywords.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/keywords.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/keywords.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/keywords.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/tokenize.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/tokenize.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/tokenize.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/tokenize.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/utils.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/cpp/utils.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/cpp/utils.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/gmock_gen.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/gmock_gen.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/generator/gmock_gen.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/generator/gmock_gen.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/scripts/gmock-config.in b/Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/gmock-config.in similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/scripts/gmock-config.in rename to Code/Mantid/Testing/Tools/gmock-1.7.0/scripts/gmock-config.in diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-all.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-all.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-all.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-all.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-cardinalities.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-cardinalities.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-cardinalities.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-cardinalities.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-internal-utils.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-internal-utils.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-internal-utils.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-internal-utils.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-matchers.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-matchers.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-matchers.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-matchers.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-spec-builders.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-spec-builders.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock-spec-builders.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock-spec-builders.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/src/gmock_main.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock_main.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/src/gmock_main.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/src/gmock_main.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-cardinalities_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-cardinalities_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-cardinalities_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-cardinalities_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-function-mockers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-function-mockers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-function-mockers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-function-mockers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-internal-utils_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-internal-utils_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-internal-utils_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-internal-utils_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-matchers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-matchers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-generated-matchers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-generated-matchers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-internal-utils_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-internal-utils_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-internal-utils_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-internal-utils_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-matchers_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-matchers_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-matchers_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-matchers_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-more-actions_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-more-actions_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-more-actions_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-more-actions_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-nice-strict_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-nice-strict_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-nice-strict_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-nice-strict_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-port_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-port_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-port_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-port_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-spec-builders_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-spec-builders_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock-spec-builders_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock-spec-builders_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_all_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_all_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_all_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_all_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_ex_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_ex_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_ex_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_ex_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_leak_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_leak_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_leak_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_leak_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_leak_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_leak_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_leak_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_leak_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link2_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link2_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link2_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link2_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link_test.h b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link_test.h similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_link_test.h rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_link_test.h diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test.py diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test_.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test_.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test_.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test_.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test_golden.txt b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test_golden.txt similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_output_test_golden.txt rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_output_test_golden.txt diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_stress_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_stress_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_stress_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_stress_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_test.cc b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_test.cc similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_test.cc rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_test.cc diff --git a/Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_test_utils.py b/Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_test_utils.py similarity index 100% rename from Code/Mantid/TestingTools/gmock-1.7.0/test/gmock_test_utils.py rename to Code/Mantid/Testing/Tools/gmock-1.7.0/test/gmock_test_utils.py diff --git a/Code/Mantid/TestingTools/pyunit_gen/pyunit_gen.py b/Code/Mantid/Testing/Tools/pyunit_gen/pyunit_gen.py similarity index 100% rename from Code/Mantid/TestingTools/pyunit_gen/pyunit_gen.py rename to Code/Mantid/Testing/Tools/pyunit_gen/pyunit_gen.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/LICENSE b/Code/Mantid/Testing/Tools/unittest-xml-reporting/LICENSE similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/LICENSE rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/LICENSE diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/MANIFEST.in b/Code/Mantid/Testing/Tools/unittest-xml-reporting/MANIFEST.in similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/MANIFEST.in rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/MANIFEST.in diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/README.rst b/Code/Mantid/Testing/Tools/unittest-xml-reporting/README.rst similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/README.rst rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/README.rst diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/fabfile.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/fabfile.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/fabfile.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/fabfile.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/setup.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/setup.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/setup.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/setup.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/__init__.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/__init__.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/__init__.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/extra/__init__.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/extra/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/extra/__init__.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/extra/__init__.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/extra/djangotestrunner.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/extra/djangotestrunner.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/extra/djangotestrunner.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/extra/djangotestrunner.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/__init__.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/__init__.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/__init__.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/__init__.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/errord_test_case.xml b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/errord_test_case.xml similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/errord_test_case.xml rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/errord_test_case.xml diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/failed_test_case.xml b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/failed_test_case.xml similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/failed_test_case.xml rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/failed_test_case.xml diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/mixed_test_case.xml b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/mixed_test_case.xml similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/mixed_test_case.xml rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/mixed_test_case.xml diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/successful_test_case.xml b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/successful_test_case.xml similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/successful_test_case.xml rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/fixtures/successful_test_case.xml diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/testsuite.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/testsuite.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/testsuite.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/testsuite.py diff --git a/Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/testsuite_cases.py b/Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/testsuite_cases.py similarity index 100% rename from Code/Mantid/TestingTools/unittest-xml-reporting/src/xmlrunner/tests/testsuite_cases.py rename to Code/Mantid/Testing/Tools/unittest-xml-reporting/src/xmlrunner/tests/testsuite_cases.py diff --git a/Code/Mantid/Vates/ParaviewPlugins/ParaViewFilters/MDEWRebinningCutterOperator/CMakeLists.txt b/Code/Mantid/Vates/ParaviewPlugins/ParaViewFilters/MDEWRebinningCutterOperator/CMakeLists.txt index de4001a08005..605bc5c0a1e6 100644 --- a/Code/Mantid/Vates/ParaviewPlugins/ParaViewFilters/MDEWRebinningCutterOperator/CMakeLists.txt +++ b/Code/Mantid/Vates/ParaviewPlugins/ParaViewFilters/MDEWRebinningCutterOperator/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required( VERSION 2.6) +cmake_minimum_required( VERSION 2.8.12 ) project( MantidParaViewMDEWRebinningCutter ) add_paraview_plugin( MantidParaViewMDEWRebinningCutterSMPlugin "1.0" diff --git a/Code/Mantid/Vates/VatesAPI/CMakeLists.txt b/Code/Mantid/Vates/VatesAPI/CMakeLists.txt index 72465397a248..8384d524d947 100644 --- a/Code/Mantid/Vates/VatesAPI/CMakeLists.txt +++ b/Code/Mantid/Vates/VatesAPI/CMakeLists.txt @@ -1,5 +1,5 @@ # This is mainly here so you don't get a complaint when running cmake -cmake_minimum_required( VERSION 2.6 ) +cmake_minimum_required( VERSION 2.8.12 ) project( VatesAPI ) diff --git a/Code/Mantid/Vates/VatesAPI/test/runTests.sh b/Code/Mantid/Vates/VatesAPI/test/runTests.sh deleted file mode 100755 index b223a9bad41b..000000000000 --- a/Code/Mantid/Vates/VatesAPI/test/runTests.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# Simple script to build and run the tests. -# Will run all tests in the directory if no arguments are supplied, -# or alternatively just the test files given as arguments. -# -# You will need to have the directories containing the Mantid -# .so libraries in your LD_LIBRARY_PATH environment variable -# -# Author: Owen Arnold 02/12/2010 -# - -# Clean up any old executable -rm -rf runner.* - -echo "Generating the source file from the test header files..." -# Chaining all tests together can have effects that you don't think of -# - it's always a good idea to run your new/changed test on its own -test_files="" -if [ $# -eq 0 ]; then - test_files=*.h -else - test_files=$* -fi - -cxxtestgen=../../../../Third_Party/src/cxxtest/cxxtestgen.py -python $cxxtestgen --runner=MantidPrinter -o runner.cpp $test_files - - -echo "Compiling the test executable..." - -#TODO set path properly -mantid_libpath=~/workspace/MantidDebug/bin -#TODO set path properly -vtk_libpath=/usr/local/2.1.1/linux-x86_64/lib -#TODO set path properly -gmock_libpath=../../../TestingTools/lib/ubuntu-10.10 - -g++ -O0 -g3 -DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG -o runner.exe runner.cpp -I../../../Framework/Kernel/inc -I../../../Framework/MDAlgorithms/inc -I../../../Framework/API/inc -I../inc/VisitPlugins -I/usr/local/2.1.1/linux-x86_64/include/vtk/include/vtk-5.0 -I../../../Framework/Geometry/inc -I ../inc \ - -I ../../../../Third_Party/src/cxxtest -I ../../../../Third_Party/include -I ../../../TestingTools/include -L$vtk_libpath -L$mantid_libpath -L$gmock_libpath -lvtkCommon -lvtkFiltering -lMantidKernel -lMantidGeometry -lMantidAPI -lboost_date_time-mt -lgmock -lMantidMDAlgorithms -lMantidDataObjects -lMantidVisitPresenters -lhdf5 -Wno-deprecated - -echo - -echo "Running the tests..." -ln ../../../Framework/Build/Tests/*.properties . -LD_LIBRARY_PATH=$vtk_libpath:$mantid_libpath:$LD_LIBRARY_PATH ./runner.exe -#valgrind --leak-check=full --show-reachable=yes --track-origins=yes ~/mantid/Code/Vates/VisitPresenters/test/runner.exe -echo - -# Remove the generated files to ensure that they're not inadvertently run -# when something in the chain has failed. -echo "Cleaning up..." -rm -f *.properties -rm -f *Test.log -rm -f *.so -echo "Done." diff --git a/Code/Mantid/Vates/VatesSimpleGui/StandAloneExec/CMakeLists.txt b/Code/Mantid/Vates/VatesSimpleGui/StandAloneExec/CMakeLists.txt index 974b1551cf30..0b35b412adfe 100644 --- a/Code/Mantid/Vates/VatesSimpleGui/StandAloneExec/CMakeLists.txt +++ b/Code/Mantid/Vates/VatesSimpleGui/StandAloneExec/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required( VERSION 2.8 ) +cmake_minimum_required( VERSION 2.8.12 ) project( VatesSimpleGui ) set( PROJECT_NAME VatesSimpleGui ) diff --git a/Code/Mantid/docs/source/algorithms/CalculateSampleTransmission-v1.rst b/Code/Mantid/docs/source/algorithms/CalculateSampleTransmission-v1.rst index 1c23cbd58680..770b301f127a 100644 --- a/Code/Mantid/docs/source/algorithms/CalculateSampleTransmission-v1.rst +++ b/Code/Mantid/docs/source/algorithms/CalculateSampleTransmission-v1.rst @@ -17,6 +17,8 @@ The sample chemical formula is input for the :ref:`SetSampleMaterial number density & thickness is input to then calculate the percentage scattering & transmission. +A flat plate sample which is perpendicular to the beam is assumed. + Usage ----- diff --git a/Code/Mantid/docs/source/algorithms/GenerateEventsFilter-v1.rst b/Code/Mantid/docs/source/algorithms/GenerateEventsFilter-v1.rst index 7eaaace49bfb..207d22da111a 100644 --- a/Code/Mantid/docs/source/algorithms/GenerateEventsFilter-v1.rst +++ b/Code/Mantid/docs/source/algorithms/GenerateEventsFilter-v1.rst @@ -70,6 +70,12 @@ this algorithm: workspace index associated. These workspace indices are incremented by 1 from 0 along with their orders in time. +- A series of filters for multiple continuous time intervals, which + have various lengths of period. + Each of them has an individual workspace index associated. + These workspace indices are incremented by 1 from 0 along with their + order in time. + - A filter containing one or multiple time intervals according to a specified log value. Any log value of the time that falls into the selected time intervals is equal or within the tolerance of a user @@ -81,9 +87,35 @@ this algorithm: equal or within the tolerance of the log value as v\_0 + n x delta\_v +/- tolerance\_v. +Generate event filters by time +############################## + +Event filters can be created by defining start time, stop time and time intervals. +The three input properties for them are *StartTime*, *StopTime* and *TimeInterval*, +respectively. + +*TimeInterval* accepts an array of doubles. +If the array size is zero, then there will be one and only splitter will be +created from *StartTime* and *StopTime*. +If the size of the array is one, then all event splitters will have the same duration +of time. +In general if the array is composed as :math:`t_1, t_2, \cdots, t_n`, +and :math:`T_0` is the run start time, +then the event splitters will have the time boudaries as + +.. math:: (T_0, T_0+t_1), (T_0+t_1, T_0+t_1+t_2), \cdots, (T_0+\sum_{i=1}^{n-1}t_i, T_0+\sum_{i=1}^nt_i), (T_0+\sum_{i=1}^nt_i, T_0+\sum_{i=1}^nt_i+t_1), \cdots + +until the stop time is reached. + +Unit of time +============ + +There are three types of units that are supported for time. +They are second, nanosecond and percentage of duration from *StartTime* to *StopTime*. + Generate event filters by sample log value -========================================== +########################################## The sample log will be divided to intervals as :math:`v_0, v_1, \cdots, v_{i-1}, v_i, v_{i+1}, \cdots`. All log entries, whose values falls into range :math:`[v_j, v_{j+1})`, will be assigned to @@ -91,7 +123,7 @@ a same workspace group. About how log value is recorded -############################### +=============================== SNS DAS records log values upon its changing. The frequency of log sampling is significantly faster than change of the log, i.e., sample @@ -101,7 +133,7 @@ log value changes as step functions. The option to do interpolation is not supported at this moment. Comparison to FilterByLogValue -############################## +============================== 1. If the first log value is within the specified range and the first log time is after run star time, FilterByLogValue assumes that the log diff --git a/Code/Mantid/docs/source/algorithms/MDNormDirectSC-v1.rst b/Code/Mantid/docs/source/algorithms/MDNormDirectSC-v1.rst index 3044493549f1..d59635e54692 100644 --- a/Code/Mantid/docs/source/algorithms/MDNormDirectSC-v1.rst +++ b/Code/Mantid/docs/source/algorithms/MDNormDirectSC-v1.rst @@ -63,8 +63,9 @@ Usage AlignedDim0="[H,0,0],-0.2,1.6,100", AlignedDim1="DeltaE,-1.5,3.,100", ) - normalized=histoData/histoNorm - print "The normalization workspace shape is "+str(histoNorm.getSignalArray().shape) + normalized=histoData/histoNorm + histoShape=histoNorm.getSignalArray().shape + print "The normalization workspace shape is (%d, %d)" % histoShape print "Out of those elements, "+str(nonzero(histoNorm.getSignalArray())[0].size)+" are nonzero" .. testoutput:: MDNormDirectSCExample diff --git a/Code/Mantid/docs/source/algorithms/PlotAsymmetryByLogValue-v1.rst b/Code/Mantid/docs/source/algorithms/PlotAsymmetryByLogValue-v1.rst index 0b65fd8ae3dd..f091f41e8c53 100644 --- a/Code/Mantid/docs/source/algorithms/PlotAsymmetryByLogValue-v1.rst +++ b/Code/Mantid/docs/source/algorithms/PlotAsymmetryByLogValue-v1.rst @@ -141,4 +141,22 @@ Output: Y values (asymmetry): [ 0.14542059 0.13674275 0.12017568] X values (sample magn. field): [ 1350. 1360. 1370.] +**Example - Calculating asymmetry as a function of the sample mean temperature:** + +.. testcode:: ExLogValueFunction + + ws = PlotAsymmetryByLogValue(FirstRun="MUSR00015189", + LastRun="MUSR00015191", + LogValue="sample_temp", + Function="Mean") + print "Y values (asymmetry):", ws.readY(0) + print "X values (sample magn. field):", ws.readX(0) + +Output: + +.. testoutput:: ExLogValueFunction + + Y values (asymmetry): [ 0.15004357 0.14289412 0.12837688] + X values (sample magn. field): [ 290. 290. 290.] + .. categories:: diff --git a/Code/Mantid/docs/source/interfaces/SampleTransmissionCalculator.rst b/Code/Mantid/docs/source/interfaces/SampleTransmissionCalculator.rst new file mode 100644 index 000000000000..8034599e9609 --- /dev/null +++ b/Code/Mantid/docs/source/interfaces/SampleTransmissionCalculator.rst @@ -0,0 +1,60 @@ +Sample Transmission Calculator +============================== + +.. contents:: Table of Contents + :local: + +Overview +-------- + +.. interface:: Sample Transmission Calculator + :align: right + :width: 350 + +The sample transmission calculator allows the calculation of the sample +transmission and scattering over a given wavelength range for a particular +sample material and geometry. + +This UI is a front end for the :ref:`CalculateSampleTransmission +` algorithm. + +The algorithm assumes a flat plate sample which is perpendicular to the beam. + +Input Wavelength +~~~~~~~~~~~~~~~~ + +.. interface:: Sample Transmission Calculator + :widget: gbRangeBinning + :align: right + :width: 350 + +The wavelength range to calculate transmission over can be given either by +providing a single binning range in the format of a start, width and end value or +by providing a bin parameter string as used in the :ref:`Rebin ` +algorithm. + +Sample Details +~~~~~~~~~~~~~~ + +.. interface:: Sample Transmission Calculator + :widget: gbSampleDetails + :align: right + :width: 350 + +The sample details required are the chemical formula which is to be given in the +format expected by the :ref:`SetSampleMaterial ` +algorithm, number density in :math:`\mathrm{\AA{}}^3` and thickness in :math:`cm`. + +Output +~~~~~~ + +.. interface:: Sample Transmission Calculator + :widget: gbOutput + :align: right + :width: 350 + +The output is given in a plot of the transmission percentage over wavelength and +a table of statistics for the transmission (maximum, minimum, mean, median and +standard deviation) as well as the scattering percentage for all wavelengths. + +.. categories:: Interfaces General