The solution we arrived at was to write a https://behat.org/ 
<https://behat.org/> backend to perform automated tests of our incremental 
builds.  The Behat backend copies the project's source tree to a temporary 
folder, then runs a scripted test suite on it, which looks like this:

   Feature: Incremental builds
   Check that modifying certain source files causes certain build steps to be 
performed (or not performed).

      Scenario: Editing a core type header
         Given a completed build
         When  I edit type/integer.h
         And   I build

         Then  it should update lib/MyFramework.framework/Headers/integer.h
         And   it should update lib/MyFramework.framework/MyFramework
         And   it should update 
bin/MyApp.app/Contents/Frameworks/MyFramework.framework/Headers/integer.h
         And   it should update 
bin/MyApp.app/Contents/Frameworks/MyFramework.framework/MyFramework
         And   it should update the compiler's cache

      Scenario: …

   Feature: Compiler developer mode
   Check that compiler developer mode properly reduces build dependencies,
   to reduce edit-compile-run cycle time when working on the compiler.

      Scenario: Enabling compiler developer mode
         Given a completed build
         When  I run CMake with arguments "-DCOMPILER_DEVELOPER=ON"
         And   I build
         Then  it shouldn't do anything

      Scenario: Editing a compiler source file when in compiler developer mode
         Given a completed build
         When  I edit compiler/compiler.cc <http://compiler.cc/>
         And   I build

         Then  it should update lib/libMyCompiler.a
         And   it should update bin/my-compiler

         But   it shouldn't update the compiler's cache
         And   it shouldn't update bin/something-compiled-using-my-compiler

      Scenario: …

-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake

Reply via email to