# file : tests/update.test # copyright : Copyright (c) 2014-2018 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file # Here we test both update and clean commands. # .include common.test cxx = cc "config.cxx=$config.cxx" new += 2>! init += $cxx -d prj 2>! deinit += -d prj : single-pkg-cfg : { $new -C @cfg prj $cxx &prj/*** &prj-cfg/***; $* -d prj 2>>/EOE; mkdir prj-cfg/prj/fsdir{prj/} c++ prj/prj/cxx{prj}@prj-cfg/prj/prj/ ld prj-cfg/prj/prj/exe{prj} EOE $clean -d prj 2>>/EOE; rm prj-cfg/prj/prj/exe{prj} rm prj-cfg/prj/prj/obje{prj} rm prj-cfg/prj/fsdir{prj/} EOE $deinit 2>>/"EOE" deinitializing in project $~/prj/ synchronizing: drop prj EOE } : multi-pkg-cfg : { $new -t empty prj &prj/***; $new --package pkg1 -d prj; $new --package pkg2 -d prj; $init -C @cfg1 &prj-cfg1/***; $init -C @cfg2 &prj-cfg2/***; # Update. # $* -d prj/pkg1 2>>/EOE; # Default (cfg1). mkdir prj-cfg1/pkg1/fsdir{pkg1/} c++ prj/pkg1/pkg1/cxx{pkg1}@prj-cfg1/pkg1/pkg1/ ld prj-cfg1/pkg1/pkg1/exe{pkg1} EOE $* @cfg2 -d prj/pkg1 2>>/EOE; # By name (cfg2). mkdir prj-cfg2/pkg1/fsdir{pkg1/} c++ prj/pkg1/pkg1/cxx{pkg1}@prj-cfg2/pkg1/pkg1/ ld prj-cfg2/pkg1/pkg1/exe{pkg1} EOE $* --all -d prj 2>>/EOE; # All configs (and packages). in configuration @cfg1: mkdir prj-cfg1/pkg2/fsdir{pkg2/} c++ prj/pkg2/pkg2/cxx{pkg2}@prj-cfg1/pkg2/pkg2/ ld prj-cfg1/pkg2/pkg2/exe{pkg2} info: prj-cfg1/dir{pkg1/} is up to date in configuration @cfg2: mkdir prj-cfg2/pkg2/fsdir{pkg2/} c++ prj/pkg2/pkg2/cxx{pkg2}@prj-cfg2/pkg2/pkg2/ ld prj-cfg2/pkg2/pkg2/exe{pkg2} info: prj-cfg2/dir{pkg1/} is up to date EOE # Clean. # $clean -d prj/pkg1 2>>/EOE; # Default (cfg1). rm prj-cfg1/pkg1/pkg1/exe{pkg1} rm prj-cfg1/pkg1/pkg1/obje{pkg1} rm prj-cfg1/pkg1/fsdir{pkg1/} EOE $clean @cfg2 -d prj/pkg1 2>>/EOE; # By name (cfg2). rm prj-cfg2/pkg1/pkg1/exe{pkg1} rm prj-cfg2/pkg1/pkg1/obje{pkg1} rm prj-cfg2/pkg1/fsdir{pkg1/} EOE $clean --all -d prj 2>>/EOE; # All configs (and packages). in configuration @cfg1: rm prj-cfg1/pkg2/pkg2/exe{pkg2} rm prj-cfg1/pkg2/pkg2/obje{pkg2} rm prj-cfg1/pkg2/fsdir{pkg2/} info: prj-cfg1/dir{pkg1/} is clean in configuration @cfg2: rm prj-cfg2/pkg2/pkg2/exe{pkg2} rm prj-cfg2/pkg2/pkg2/obje{pkg2} rm prj-cfg2/pkg2/fsdir{pkg2/} info: prj-cfg2/dir{pkg1/} is clean EOE $deinit 2>>/"EOE" deinitializing in project $~/prj/ deinitializing package pkg1 deinitializing package pkg2 synchronizing: drop pkg1 drop pkg2 EOE }