# file : tests/new.test # copyright : Copyright (c) 2014-2018 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include common.test cxx = "config.cxx=$config.cxx" status += -d prj : exe { $* -t exe -l c++ prj 2>>/"EOE" &prj/***; created new executable project prj in $~/prj/ EOE $build prj/ $cxx 2>>/EOE c++ prj/prj/cxx{prj} ld prj/prj/exe{prj} EOE } : lib { $* -t lib -l c++ libprj 2>>/"EOE" &libprj/***; created new library project libprj in $~/libprj/ EOE $build libprj/ $cxx 2>>/~%EOE% %.{4} %ld libprj/.+%{3} EOE } : pkg : { : add : : Test creating a library as a separate package in the project. : { $* -t empty prj 2>>/"EOE" &prj/***; created new empty project prj in $~/prj/ EOE $* --package -t lib libprj -d prj 2>>/"EOE"; created new library package libprj in $~/prj/libprj/ EOE $build prj/libprj/ $cxx 2>>/~%EOE% %.{4} %ld prj/libprj/.+%{3} EOE } : name : : Test that the package name is validated. : { : project : $* x 2>'error: invalid package name: length is less than two characters' != 0 : separate : : Here we also test that the project name is not validated as a package. : { $* -t empty x 2>>/"EOE" &x/***; created new empty project x in $~/x/ EOE $* --package y -d x 2>'error: invalid package name: length is less than two characters' != 0 } } } : cfg { : dir-and-name : { $* -C prj-config @cfg prj cc $cxx 2>>/~"%EOE%" &prj/*** &prj-config/***; created new executable project prj in $~/prj/ created configuration @cfg $~/prj-config/ 1 default,forwarded,auto-synchronized synchronizing: % new prj.+19700101000000% EOE $status >'prj configured 0.1.0-a.0.19700101000000'; $build prj/ 2>>/EOE mkdir prj-config/prj/fsdir{prj/} c++ prj/prj/cxx{prj}@prj-config/prj/prj/ ld prj-config/prj/prj/exe{prj} ln prj-config/prj/prj/exe{prj} -> prj/prj/ EOE } : name : : Test deducing the configuration directory path from the project source : directory path and the configuration name. Here we also use the : dash-prefixed name (as in Windows PowerShell where the leading '@' : character is special). : { $* -C -@cfg prj cc $cxx 2>>/~"%EOE%" &prj/*** &prj-cfg/***; created new executable project prj in $~/prj/ created configuration @cfg $~/prj-cfg/ 1 default,forwarded,auto-synchronized synchronizing: % new prj.+19700101000000% EOE $status >'prj configured 0.1.0-a.0.19700101000000'; $build 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} ln prj-cfg/prj/prj/exe{prj} -> prj/prj/ EOE } }