Best practice configuring SASUnit - HMS-Analytical-Software/SASUnit GitHub Wiki
I use SASUnit alot in my daily life and in different customer projects. So for me there special needs like:
- execute Tests quickly while developing
- create SASUnit documentation only, for communication to the customer
So I tend to use more command shells and a more flexible run_all.sas. It takes more parameters from the shell as those in the download package.
These ideas should be shared hoping to help someone.
Switch to full screen view to get rid of horizotal scrollbars.
SET SASUNIT_ROOT=C:\Projekte\SASUnit_1.5.3
SET SASUNIT_OVERWRITE=0
SET SASUNIT_LANGUAGE=en
SET SASUNIT_HOST_OS=windows
SET SASUNIT_SAS_VERSION=9.3
SET SASUNIT_COVERAGEASSESSMENT=0
SET SASUNIT_PGMDOC=0
SET SASUNIT_PGMDOC_SASUNIT=0
SET SASUNIT_CROSSREFERENCE=0
SET SASUNIT_CROSSREFERENCE_SASUNIT=0
.......
echo "Starting SASUnit in Overwrite Mode ..."
"C:\Program Files\SASHome\x86\SASFoundation\9.3\sas.exe"
-CONFIG "sasunit.%SASUNIT_SAS_VERSION%.%SASUNIT_HOST_OS%.%SASUNIT_LANGUAGE%.cfg"
-no$syntaxcheck -noovp -nosplash
%LET ROOT_C =<Project specific root path>;
%LET SASUnit =<Project specific outputpath for SASUnit content>;
%LET SASUnit_P=%sysget(SASUNIT_ROOT);
OPTIONS MPRINT MAUTOSOURCE SASAUTOS=(SASAUTOS "&SASUnit_P.\saspgm\sasunit")
validvarname=any;
%LET SASUNIT_VERBOSE=1;
%initSASUnit(
i_root = &ROOT_C.
,io_target = &SASUnit.\%lowcase(%sysget(SASUNIT_LANGUAGE))
,i_overwrite = %sysget(SASUNIT_OVERWRITE)
,i_project = <Project Title>
,i_sasunit = &SASUnit_P.\saspgm\sasunit
,i_sasautos = 01_Macros
,i_testdata = 01_Macros\99_UnitTests\Unit-Testdata\Testdaten
,i_refdata = 01_Macros\99_UnitTests\Unit-Testdata\Referenzdaten
,i_sascfg = &ROOT_C.\sasunit.%sysget(SASUNIT_SAS_VERSION).
%lowcase(%sysget(SASUNIT_HOST_OS)).
%lowcase(%sysget (SASUNIT_LANGUAGE)).cfg
,i_autoexec = &ROOT_C.\90_SASUnit_cfg\KL\autoexec_
%lowcase(%sysget(SASUNIT_LANGUAGE)).sas
,i_testcoverage = %sysget(SASUNIT_COVERAGEASSESSMENT)
,i_verbose = &SASUNIT_VERBOSE.
,i_crossref = %sysget(SASUNIT_CROSSREFERENCE)
,i_crossrefsasunit = %sysget(SASUNIT_CROSSREFERENCE_SASUNIT)
);
%runSASUnit(i_source = 01_Macros\99_UnitTests\%str(*)_test.sas);
%reportSASUnit(i_language =%upcase(%sysget(SASUNIT_LANGUAGE))
,o_pgmdoc =%sysget(SASUNIT_PGMDOC)
,o_pgmdoc_sasunit=%sysget(SASUNIT_PGMDOC_SASUNIT)
);
This shell triggers the new feature program documentation for macros tested and SASUnit macros. Crossreference is created for all tested macros and coverage assesment is turned on.
SET SASUNIT_ROOT=C:\Projekte\SASUnit_1.5.3
SET SASUNIT_OVERWRITE=0
SET SASUNIT_LANGUAGE=en
SET SASUNIT_HOST_OS=windows
SET SASUNIT_SAS_VERSION=9.3
SET SASUNIT_COVERAGEASSESSMENT=1
SET SASUNIT_PGMDOC=1
SET SASUNIT_PGMDOC_SASUNIT=1
SET SASUNIT_CROSSREFERENCE=1
SET SASUNIT_CROSSREFERENCE_SASUNIT=0
For this feature I'm using a separate SASUnit config file without a call to %run_sasunit.
SET SASUNIT_ROOT=C:\Projekte\SASUnit_1.5.3
SET SASUNIT_OVERWRITE=0
SET SASUNIT_LANGUAGE=en
SET SASUNIT_HOST_OS=windows
SET SASUNIT_SAS_VERSION=9.3
SET SASUNIT_COVERAGEASSESSMENT=0
SET SASUNIT_PGMDOC=1
SET SASUNIT_PGMDOC_SASUNIT=1
SET SASUNIT_CROSSREFERENCE=0
SET SASUNIT_CROSSREFERENCE_SASUNIT=0
....
echo "Starting SASUnit in Overwrite Mode ..."
"C:\Program Files\SASHome\x86\SASFoundation\9.3\sas.exe"
-CONFIG "sasunit.9.3.windows.en._report.only.cfg" -no$syntaxcheck
-noovp -nosplash
You need a different config file. The name of run_all.sas is now run_report_en.sas. This name is held in the config file.
%LET ROOT_C =<Project specific root path>;
%LET SASUnit =<Project specific outputpath for SASUnit content>;
%LET SASUnit_P=%sysget(SASUNIT_ROOT);
OPTIONS MPRINT MAUTOSOURCE SASAUTOS=(SASAUTOS "&SASUnit_P.\saspgm\sasunit")
validvarname=any;
%LET SASUNIT_VERBOSE=1;
%initSASUnit(
i_root = &ROOT_C.
,io_target = &SASUnit.\%lowcase(%sysget(SASUNIT_LANGUAGE))
,i_overwrite = %sysget(SASUNIT_OVERWRITE)
,i_project = <Project Title>
,i_sasunit = &SASUnit_P.\saspgm\sasunit
,i_sasautos = 01_Macros
,i_testdata = 01_Macros\99_UnitTests\Unit-Testdata\Testdaten
,i_refdata = 01_Macros\99_UnitTests\Unit-Testdata\Referenzdaten
,i_sascfg = &ROOT_C.\sasunit.%sysget(SASUNIT_SAS_VERSION).
%lowcase(%sysget(SASUNIT_HOST_OS)).
%lowcase(%sysget(SASUNIT_LANGUAGE)).cfg
,i_autoexec = &ROOT_C.\90_SASUnit_cfg\KL\autoexec_
%lowcase(%sysget(SASUNIT_LANGUAGE)).sas
,i_testcoverage = %sysget(SASUNIT_COVERAGEASSESSMENT)
,i_verbose = &SASUNIT_VERBOSE.
,i_crossref = %sysget(SASUNIT_CROSSREFERENCE)
,i_crossrefsasunit = %sysget(SASUNIT_CROSSREFERENCE_SASUNIT)
);
%reportSASUnit(i_language =%upcase(%sysget(SASUNIT_LANGUAGE))
,o_pgmdoc =%sysget(SASUNIT_PGMDOC)
,o_pgmdoc_sasunit=%sysget(SASUNIT_PGMDOC_SASUNIT)
,o_force =1
);