1
0
mirror of https://github.com/sasjs/core.git synced 2026-01-07 09:30:06 +00:00

fix: updating test cases

This commit is contained in:
munja
2022-01-25 12:45:32 +01:00
parent 11d073c10a
commit 794ceec33c
4 changed files with 74 additions and 24 deletions

36
all.sas
View File

@@ -3032,8 +3032,15 @@ run;
makes it easy to detect whether any macro variables were modified or makes it easy to detect whether any macro variables were modified or
changed. changed.
If you would like this feature, feel free to contribute / raise an issue / The following variables are NOT tested (as they are known, global variables
engage the SASjs team directly. used in SASjs):
@li &sasjs_prefix._FUNCTIONS
Global variables are initialised in mp_init.sas - which will also trigger
"strict mode" in your SAS session. Whilst this is a default in SASjs
produced apps, if you prefer not to use this mode, simply instantiate the
following variable to prevent the macro from running: `SASJS_PREFIX`
Example usage: Example usage:
@@ -3054,6 +3061,8 @@ run;
@param [in] scope= (GLOBAL) The scope of the variables to be checked. This @param [in] scope= (GLOBAL) The scope of the variables to be checked. This
corresponds to the values in the SCOPE column in `sashelp.vmacro`. corresponds to the values in the SCOPE column in `sashelp.vmacro`.
@param [in] desc= (Testing scope leakage) The user provided test description @param [in] desc= (Testing scope leakage) The user provided test description
@param [in] ignorelist= Provide a list of macro variable names to ignore from
the comparison
@param [in,out] scopeds= (work.mp_assertscope) The dataset to contain the @param [in,out] scopeds= (work.mp_assertscope) The dataset to contain the
scope snapshot scope snapshot
@param [out] outds= (work.test_results) The output dataset to contain the @param [out] outds= (work.test_results) The output dataset to contain the
@@ -3062,6 +3071,10 @@ run;
|---|---|---| |---|---|---|
|User Provided description|PASS|No out of scope variables created or modified| |User Provided description|PASS|No out of scope variables created or modified|
<h4> SAS Macros </h4>
@li mf_getquotedstr.sas
@li mp_init.sas
<h4> Related Macros </h4> <h4> Related Macros </h4>
@li mp_assert.sas @li mp_assert.sas
@li mp_assertcols.sas @li mp_assertcols.sas
@@ -3078,9 +3091,18 @@ run;
desc=Testing Scope Leakage, desc=Testing Scope Leakage,
scope=GLOBAL, scope=GLOBAL,
scopeds=work.mp_assertscope, scopeds=work.mp_assertscope,
ignorelist=,
outds=work.test_results outds=work.test_results
)/*/STORE SOURCE*/; )/*/STORE SOURCE*/;
%local ds test_result test_comments del add mod; %local ds test_result test_comments del add mod ilist;
%let ilist=%upcase(&sasjs_prefix._FUNCTIONS &ignorelist);
/**
* this sets up the global vars, it will also enter STRICT mode. If this
* behaviour is not desired, simply initiate the following global macro
* variable to prevent the macro from running: SASJS_PREFIX
*/
%mp_init()
/* get current variables */ /* get current variables */
%if &action=SNAPSHOT %then %do; %if &action=SNAPSHOT %then %do;
@@ -3088,7 +3110,7 @@ run;
create table &scopeds as create table &scopeds as
select name,offset,value select name,offset,value
from dictionary.macros from dictionary.macros
where scope="&scope" where scope="&scope" and name not in (%mf_getquotedstr(&ilist))
order by name,offset; order by name,offset;
%end; %end;
%else %if &action=COMPARE %then %do; %else %if &action=COMPARE %then %do;
@@ -3097,7 +3119,7 @@ run;
create table _data_ as create table _data_ as
select name,offset,value select name,offset,value
from dictionary.macros from dictionary.macros
where scope="&scope" where scope="&scope" and name not in (%mf_getquotedstr(&ilist))
order by name,offset; order by name,offset;
%let ds=&syslast; %let ds=&syslast;
@@ -10129,7 +10151,7 @@ create table &delrec as
from &outdel a from &outdel a
left join &base b left join &base b
on &keyjoin on &keyjoin
where a.%scan(&key,1) is null where b.%scan(&key,1) is null
order by &commakey; order by &commakey;
data &delerr; data &delerr;
@@ -10237,7 +10259,7 @@ select distinct tgtvar_nm into: missvars separated by ' '
from &outmod a from &outmod a
left join &base b left join &base b
on &keyjoin on &keyjoin
where a.%scan(&key,1) is null where b.%scan(&key,1) is null
order by &commakey; order by &commakey;
data &moderr; data &moderr;
if 0 then set &errds; if 0 then set &errds;

View File

@@ -11,8 +11,15 @@
makes it easy to detect whether any macro variables were modified or makes it easy to detect whether any macro variables were modified or
changed. changed.
If you would like this feature, feel free to contribute / raise an issue / The following variables are NOT tested (as they are known, global variables
engage the SASjs team directly. used in SASjs):
@li &sasjs_prefix._FUNCTIONS
Global variables are initialised in mp_init.sas - which will also trigger
"strict mode" in your SAS session. Whilst this is a default in SASjs
produced apps, if you prefer not to use this mode, simply instantiate the
following variable to prevent the macro from running: `SASJS_PREFIX`
Example usage: Example usage:
@@ -33,6 +40,8 @@
@param [in] scope= (GLOBAL) The scope of the variables to be checked. This @param [in] scope= (GLOBAL) The scope of the variables to be checked. This
corresponds to the values in the SCOPE column in `sashelp.vmacro`. corresponds to the values in the SCOPE column in `sashelp.vmacro`.
@param [in] desc= (Testing scope leakage) The user provided test description @param [in] desc= (Testing scope leakage) The user provided test description
@param [in] ignorelist= Provide a list of macro variable names to ignore from
the comparison
@param [in,out] scopeds= (work.mp_assertscope) The dataset to contain the @param [in,out] scopeds= (work.mp_assertscope) The dataset to contain the
scope snapshot scope snapshot
@param [out] outds= (work.test_results) The output dataset to contain the @param [out] outds= (work.test_results) The output dataset to contain the
@@ -41,6 +50,10 @@
|---|---|---| |---|---|---|
|User Provided description|PASS|No out of scope variables created or modified| |User Provided description|PASS|No out of scope variables created or modified|
<h4> SAS Macros </h4>
@li mf_getquotedstr.sas
@li mp_init.sas
<h4> Related Macros </h4> <h4> Related Macros </h4>
@li mp_assert.sas @li mp_assert.sas
@li mp_assertcols.sas @li mp_assertcols.sas
@@ -57,9 +70,18 @@
desc=Testing Scope Leakage, desc=Testing Scope Leakage,
scope=GLOBAL, scope=GLOBAL,
scopeds=work.mp_assertscope, scopeds=work.mp_assertscope,
ignorelist=,
outds=work.test_results outds=work.test_results
)/*/STORE SOURCE*/; )/*/STORE SOURCE*/;
%local ds test_result test_comments del add mod; %local ds test_result test_comments del add mod ilist;
%let ilist=%upcase(&sasjs_prefix._FUNCTIONS &ignorelist);
/**
* this sets up the global vars, it will also enter STRICT mode. If this
* behaviour is not desired, simply initiate the following global macro
* variable to prevent the macro from running: SASJS_PREFIX
*/
%mp_init()
/* get current variables */ /* get current variables */
%if &action=SNAPSHOT %then %do; %if &action=SNAPSHOT %then %do;
@@ -67,7 +89,7 @@
create table &scopeds as create table &scopeds as
select name,offset,value select name,offset,value
from dictionary.macros from dictionary.macros
where scope="&scope" where scope="&scope" and name not in (%mf_getquotedstr(&ilist))
order by name,offset; order by name,offset;
%end; %end;
%else %if &action=COMPARE %then %do; %else %if &action=COMPARE %then %do;
@@ -76,7 +98,7 @@
create table _data_ as create table _data_ as
select name,offset,value select name,offset,value
from dictionary.macros from dictionary.macros
where scope="&scope" where scope="&scope" and name not in (%mf_getquotedstr(&ilist))
order by name,offset; order by name,offset;
%let ds=&syslast; %let ds=&syslast;

View File

@@ -418,7 +418,7 @@ create table &delrec as
from &outdel a from &outdel a
left join &base b left join &base b
on &keyjoin on &keyjoin
where a.%scan(&key,1) is null where b.%scan(&key,1) is null
order by &commakey; order by &commakey;
data &delerr; data &delerr;
@@ -526,7 +526,7 @@ select distinct tgtvar_nm into: missvars separated by ' '
from &outmod a from &outmod a
left join &base b left join &base b
on &keyjoin on &keyjoin
where a.%scan(&key,1) is null where b.%scan(&key,1) is null
order by &commakey; order by &commakey;
data &moderr; data &moderr;
if 0 then set &errds; if 0 then set &errds;

View File

@@ -45,13 +45,17 @@ run;
%mp_assertscope(SNAPSHOT) %mp_assertscope(SNAPSHOT)
/** /**
* Deletions test - where record does not exist * Deletions test - where record does exist
*/ */
data work.orig1;
set sashelp.electric;
if _n_ le 10;
run;
data work.final1; data work.final1;
set work.final; set work.final;
where move_type='D'; where move_type='D';
run; run;
%mp_stackdiffs(work.orig %mp_stackdiffs(work.orig1
,work.final1 ,work.final1
,CUSTOMER YEAR ,CUSTOMER YEAR
,mdebug=1 ,mdebug=1
@@ -69,11 +73,11 @@ run;
test=EQUALS 10 test=EQUALS 10
) )
/** /**
* Deletions test - where record DOES exist * Deletions test - where record does NOT exist
*/ */
data work.orig2; data work.orig2;
set sashelp.electric; set work.orig;
if _n_ le 10; stop; /* empty table */
run; run;
data work.final2; data work.final2;
set work.final; set work.final;
@@ -89,11 +93,11 @@ run;
,outdel=work.del2 ,outdel=work.del2
) )
%mp_assertdsobs(work.errds2, %mp_assertdsobs(work.errds2,
desc=Delete1 - has errs, desc=Delete2 - has errs,
test=EQUALS 10 test=EQUALS 10
) )
%mp_assertdsobs(work.del1, %mp_assertdsobs(work.del1,
desc=Delete1 - records not populated, desc=Delete2 - records not populated,
test=EQUALS 0 test=EQUALS 0
) )
@@ -130,7 +134,9 @@ run;
* Additions test - where record does exist * Additions test - where record does exist
*/ */
data work.orig4; data work.orig4;
set work.orig; set sashelp.electric;
if _n_ ge 30;
year=_n_;
if _n_>35 then stop; if _n_>35 then stop;
run; run;
data work.final4; data work.final4;
@@ -251,7 +257,7 @@ run;
* And a test if the actual values were applied * And a test if the actual values were applied
*/ */
data work.orig8; data work.orig8;
set work.orig; set sashelp.electric;
if _n_ le 16; if _n_ le 16;
run; run;
%mp_stackdiffs(work.orig8 %mp_stackdiffs(work.orig8
@@ -292,4 +298,4 @@ run;
) )
%mp_assertscope(COMPARE,Desc=MacVar Scope Check) %mp_assertscope(COMPARE,ignorelist=SASJS_FUNCTIONS)