diff --git a/sasjs/sasjsconfig.json b/sasjs/sasjsconfig.json
index 45681df..780bd1f 100644
--- a/sasjs/sasjsconfig.json
+++ b/sasjs/sasjsconfig.json
@@ -110,4 +110,4 @@
"contextName": "SAS Job Execution compute context"
}
]
-}
+}
\ No newline at end of file
diff --git a/tests/viyaonly/mv_deleteviyafolder.test.sas b/tests/viyaonly/mv_deleteviyafolder.test.sas
new file mode 100644
index 0000000..594c037
--- /dev/null
+++ b/tests/viyaonly/mv_deleteviyafolder.test.sas
@@ -0,0 +1,52 @@
+/**
+ @file
+ @brief Testing mv_deleteviyafolder macro function
+
+
SAS Macros
+ @li mf_uid.sas
+ @li mfv_existfolder.sas
+ @li mp_assert.sas
+ @li mp_assertscope.sas
+ @li mv_createfolder.sas
+ @li mv_deleteviyafolder.sas
+
+**/
+
+options mprint sgen;
+
+%let folder=%mf_uid();
+%let tgtfolder=&mcTestAppLoc/temp/&folder;
+
+/* create a folder */
+%mv_createfolder(path=&tgtfolder)
+
+
+%mp_assert(
+ iftrue=(%mfv_existfolder(&tgtfolder)=1),
+ desc=Check if created folder exists
+)
+
+%mp_assertscope(SNAPSHOT)
+%mv_deleteviyafolder(path=&tgtfolder)
+/* ignore proc json vars */
+%mp_assertscope(COMPARE
+ ,ignorelist=MCLIB0_JADP1LEN MCLIB0_JADP2LEN MCLIB0_JADVLEN MCLIB2_JADP1LEN
+ MCLIB2_JADVLEN
+)
+
+%mp_assert(
+ iftrue=(%mfv_existfolder(&tgtfolder)=0),
+ desc=Check if deleted folder is gone
+)
+
+/* delete folder with content */
+%mv_createfolder(path=&tgtfolder/content/and/stuff)
+%mp_assert(
+ iftrue=(%mfv_existfolder(&tgtfolder/content/and/stuff)=1),
+ desc=Check if folder with content exists
+)
+%mv_deleteviyafolder(path=&tgtfolder)
+%mp_assert(
+ iftrue=(%mfv_existfolder(&tgtfolder)=0),
+ desc=Check if deleted folder with subfolders is gone
+)
diff --git a/tests/viyaonly/mv_getjoblog.test.sas b/tests/viyaonly/mv_getjoblog.test.sas
index c68248f..7e3e31b 100644
--- a/tests/viyaonly/mv_getjoblog.test.sas
+++ b/tests/viyaonly/mv_getjoblog.test.sas
@@ -4,6 +4,7 @@
SAS Macros
@li mp_assert.sas
+ @li mp_assertscope.sas
@li mv_createjob.sas
@li mv_jobexecute.sas
@li mv_jobwaitfor.sas
diff --git a/viya/mv_deleteviyafolder.sas b/viya/mv_deleteviyafolder.sas
index d69c85b..f83e5cb 100644
--- a/viya/mv_deleteviyafolder.sas
+++ b/viya/mv_deleteviyafolder.sas
@@ -8,10 +8,16 @@
%mv_deleteviyafolder(path=/Public/test)
- @param path= The full path of the folder to be deleted
- @param access_token_var= The global macro variable to contain the access token
- @param grant_type= valid values are "password" or "authorization_code" (unquoted).
- The default is authorization_code.
+ @param [in] path= The full path of the folder to be deleted
+ @param [in] access_token_var= (ACCESS_TOKEN) The global macro variable to
+ contain the access token
+ @param [in] grant_type= (sas_services) Valid values are:
+ @li password
+ @li authorization_code
+ @li detect - will check if access_token exists, if not will use sas_services
+ if a SASStudioV session else authorization_code. Default option.
+ @li sas_services - will use oauth_bearer=sas_services.
+ @param [in] mdebug= (0) Set to 1 to enable DEBUG messages
@version VIYA V.03.04
@@ -29,6 +35,7 @@
%macro mv_deleteviyafolder(path=
,access_token_var=ACCESS_TOKEN
,grant_type=sas_services
+ ,mdebug=0
);
%local oauth_bearer;
%if &grant_type=detect %then %do;
@@ -105,14 +112,17 @@ run;
%let libref1a=%mf_getuniquelibref();
libname &libref1a JSON fileref=&fname1a;
-data _null_;
- set &libref1a..items_links;
- if href=:'/folders/folders' then return;
- if rel='deleteResource' then
- call execute('proc http method="DELETE" url='!!quote("&base_uri"!!trim(href))
- !!'; headers "Authorization"="Bearer &&&access_token_var" '
- !!' "Accept"="*/*";run; /**/');
-run;
+%if %mf_existds(&libref1a..items_links) %then %do;
+ data _null_;
+ set &libref1a..items_links;
+ if href=:'/folders/folders' then return;
+ if rel='deleteResource' then
+ call execute('proc http method="DELETE" url='
+ !!quote("&base_uri"!!trim(href))
+ !!'; headers "Authorization"="Bearer &&&access_token_var" '
+ !!' "Accept"="*/*";run; /**/');
+ run;
+%end;
%put &sysmacroname: perform the delete operation ;
%local fname2;
@@ -133,9 +143,11 @@ run;
%end;
%else %put &sysmacroname: &path successfully deleted;
-/* clear refs */
-filename &fname1 clear;
-filename &fname2 clear;
-libname &libref1 clear;
+%if &mdebug=0 %then %do;
+ /* clear refs */
+ filename &fname1 clear;
+ filename &fname2 clear;
+ libname &libref1 clear;
+%end;
-%mend mv_deleteviyafolder;
\ No newline at end of file
+%mend mv_deleteviyafolder;
diff --git a/viya/mv_getjobcode.sas b/viya/mv_getjobcode.sas
index 0e3703c..40b1509 100644
--- a/viya/mv_getjobcode.sas
+++ b/viya/mv_getjobcode.sas
@@ -172,6 +172,12 @@ data _null_;
else if sourcechar='n' then put '0A'x;
else if sourcechar='r' then put '0D'x;
else if sourcechar='t' then put '09'x;
+ else if sourcechar='u' then do;
+ length uni $4;
+ input uni $ 4. @@;
+ sourcechar=unicode('\u'!!uni);
+ put sourcechar char1.;
+ end;
else do;
call symputx('errmsg',"Uncaught escape char: "!!sourcechar,'l');
call symputx('syscc',99);