diff --git a/base/mp_zip.sas b/base/mp_zip.sas index b08642b..aef29ae 100644 --- a/base/mp_zip.sas +++ b/base/mp_zip.sas @@ -16,11 +16,18 @@ @li mp_dirlist.sas @param in= unquoted filepath, dataset of files or directory to zip - @param type= FILE, DATASET, DIRECTORY. (FILE / DATASET not ready yet) - @param outname= output file to create, without .zip extension - @param outpath= location for output zip file + @param type= (FILE) Valid values: + @li FILE - /full/path/and/filename.extension to a particular file + @li DATASET - a dataset containing a list of files to zip (see `incol`) + @li DIRECTORY - a directory to zip + @param outname= (FILE) Output file to create, _without_ .zip extension + @param outpath= (%sysfunc(pathname(WORK))) Parent folder for output zip file @param incol= if DATASET input, say which column contains the filepath +

Related Macros

+ @li mp_unzip.sas + @li mp_zip.test.sas + @version 9.2 @author Allan Bowe @source https://github.com/sasjs/core @@ -51,9 +58,9 @@ ods package open nopf; set &ds; length __command $4000; if file_or_folder='file'; - command=cats('ods package add file="',filepath + __command=cats('ods package add file="',filepath ,'" mimetype="application/x-compress";'); - call execute(command); + call execute(__command); run; /* tidy up */ %if &debug=NO %then %do; @@ -64,11 +71,10 @@ ods package open nopf; data _null_; set ∈ length __command $4000; - command=cats('ods package add file="',&incol + __command=cats('ods package add file="',&incol ,'" mimetype="application/x-compress";'); - call execute(command); + call execute(__command); run; - ods package add file="&in" mimetype="application/x-compress"; %end; diff --git a/tests/crossplatform/mp_zip.test.sas b/tests/crossplatform/mp_zip.test.sas new file mode 100644 index 0000000..c0d0217 --- /dev/null +++ b/tests/crossplatform/mp_zip.test.sas @@ -0,0 +1,115 @@ +/** + @file + @brief Testing mp_zip macro + +

SAS Macros

+ @li mf_mkdir.sas + @li mp_assert.sas + @li mp_zip.sas + @li mp_unzip.sas + +**/ + +%let work=%sysfunc(pathname(work)); +%let root=&work/zipme; + +/* TEST 1 - zip a file */ +%mf_mkdir(&root) + +data _null_; + file "&root/test.txt"; + put "houston, this is a test"; +run; + +%mp_zip(in=&root/test.txt + ,type=FILE + ,outpath=&work + ,outname=myFile +) + +%mp_unzip(ziploc="&work/myFile.zip",outdir=&work) + +data _null_; + infile "&work/test.txt"; + input; + call symputx('content1',_infile_); + putlog _infile_; +run; + +%mp_assert( + iftrue=( + %str(&content1)=%str(houston, this is a test) + ), + desc=Checking if file zip / unzip works, + outds=work.test_results +) + +/* TEST 2 - zip a dataset of files */ +data _null_; + file "&root/test2.txt"; + put "houston, this is test2"; +run; +libname tmp "&root"; +data tmp.test; + filepath="&root/test2.txt"; +run; + +%mp_zip(in=tmp.test + ,incol=filepath + ,type=DATASET + ,outpath=&work + ,outname=myFile2 +) + +%mp_unzip(ziploc="&work/myFile2.zip",outdir=&work) + +data _null_; + infile "&work/test2.txt"; + input; + call symputx('content2',_infile_); + putlog _infile_; +run; + +%mp_assert( + iftrue=( + %str(&content2)=%str(houston, this is test2) + ), + desc=Checking if file zip / unzip from a dataset works, + outds=work.test_results +) + +/* TEST 3 - zip a dataset of files */ +%mf_mkdir(&work/out3) + +%mp_zip(in=&root + ,type=DIRECTORY + ,outpath=&work + ,outname=myFile3 +) + +%mp_unzip(ziploc="&work/myFile3.zip",outdir=&work/out3) + +data _null_; + infile "&work/out3/test.txt"; + input; + call symputx('content3a',_infile_); + putlog _infile_; +run; +data _null_; + infile "&work/out3/test2.txt"; + input; + call symputx('content3b',_infile_); + putlog _infile_; +run; + +%mp_assert( + iftrue=( + %str(&content3a)=%str(houston, this is a test) + and + %str(&content3b)=%str(houston, this is test2) + ), + desc=Checking if file zip / unzip from a directory works, + outds=work.test_results +) + +