added tests for -d -m -c

seems to work properly
This commit is contained in:
Yann Collet 2019-04-12 15:55:38 -07:00
parent e865a3e7ec
commit 9c49e3ca07
3 changed files with 35 additions and 13 deletions

3
.gitignore vendored
View File

@ -33,3 +33,6 @@ bin/
# Windows / Msys # Windows / Msys
nul nul
ld.exe* ld.exe*
# test files
*.lz4

View File

@ -766,6 +766,12 @@ int LZ4IO_compressMultipleFilenames(LZ4IO_prefs_t* const prefs,
/* loop on each file */ /* loop on each file */
for (i=0; i<ifntSize; i++) { for (i=0; i<ifntSize; i++) {
size_t const ifnSize = strlen(inFileNamesTable[i]); size_t const ifnSize = strlen(inFileNamesTable[i]);
if (!strcmp(suffix, stdoutmark)) {
missed_files += LZ4IO_compressFilename_extRess(prefs, ress,
inFileNamesTable[i], stdoutmark,
compressionLevel);
continue;
}
if (ofnSize <= ifnSize+suffixSize+1) { if (ofnSize <= ifnSize+suffixSize+1) {
free(dstFileName); free(dstFileName);
ofnSize = ifnSize + 20; ofnSize = ifnSize + 20;
@ -778,8 +784,7 @@ int LZ4IO_compressMultipleFilenames(LZ4IO_prefs_t* const prefs,
strcat(dstFileName, suffix); strcat(dstFileName, suffix);
missed_files += LZ4IO_compressFilename_extRess(prefs, ress, missed_files += LZ4IO_compressFilename_extRess(prefs, ress,
inFileNamesTable[i], inFileNamesTable[i], dstFileName,
!strcmp(suffix,stdoutmark) ? stdoutmark : dstFileName,
compressionLevel); compressionLevel);
} }

View File

@ -222,7 +222,7 @@ test-lz4-frame-concatenation: lz4 datagen
@$(LZ4) -zq tmp-lfc-nonempty > tmp-lfc-nonempty.lz4 @$(LZ4) -zq tmp-lfc-nonempty > tmp-lfc-nonempty.lz4
cat tmp-lfc-nonempty.lz4 tmp-lfc-empty.lz4 tmp-lfc-nonempty.lz4 > tmp-lfc-concat.lz4 cat tmp-lfc-nonempty.lz4 tmp-lfc-empty.lz4 tmp-lfc-nonempty.lz4 > tmp-lfc-concat.lz4
$(LZ4) -d tmp-lfc-concat.lz4 > tmp-lfc-result $(LZ4) -d tmp-lfc-concat.lz4 > tmp-lfc-result
sdiff tmp-lfc-src tmp-lfc-result cmp tmp-lfc-src tmp-lfc-result
@$(RM) tmp-lfc-* @$(RM) tmp-lfc-*
@echo frame concatenation test completed @echo frame concatenation test completed
@ -230,22 +230,36 @@ test-lz4-multiple: lz4 datagen
@echo "\n ---- test multiple files ----" @echo "\n ---- test multiple files ----"
@./datagen -s1 > tmp-tlm1 2> $(VOID) @./datagen -s1 > tmp-tlm1 2> $(VOID)
@./datagen -s2 -g100K > tmp-tlm2 2> $(VOID) @./datagen -s2 -g100K > tmp-tlm2 2> $(VOID)
@./datagen -s3 -g1M > tmp-tlm3 2> $(VOID) @./datagen -s3 -g200K > tmp-tlm3 2> $(VOID)
# compress multiple files : one .lz4 per source file
$(LZ4) -f -m tmp-tlm* $(LZ4) -f -m tmp-tlm*
test -f tmp-tlm1.lz4 test -f tmp-tlm1.lz4
test -f tmp-tlm2.lz4 test -f tmp-tlm2.lz4
test -f tmp-tlm3.lz4 test -f tmp-tlm3.lz4
@$(RM) tmp-tlm1 tmp-tlm2 tmp-tlm3 # decompress multiple files : one output file per .lz4
$(LZ4) -df -m tmp-tlm*.lz4 mv tmp-tlm1 tmp-tlm1-orig
test -f tmp-tlm1 mv tmp-tlm2 tmp-tlm2-orig
test -f tmp-tlm2 mv tmp-tlm3 tmp-tlm3-orig
test -f tmp-tlm3 $(LZ4) -d -f -m tmp-tlm*.lz4
cmp tmp-tlm1 tmp-tlm1-orig # must be identical
cmp tmp-tlm2 tmp-tlm2-orig
cmp tmp-tlm3 tmp-tlm3-orig
# compress multiple files into stdout
cat tmp-tlm1.lz4 tmp-tlm2.lz4 tmp-tlm3.lz4 > tmp-tlm-concat1 cat tmp-tlm1.lz4 tmp-tlm2.lz4 tmp-tlm3.lz4 > tmp-tlm-concat1
$(RM) *.lz4 $(RM) *.lz4
$(LZ4) -f -m tmp-tlm* -c > tmp-tlm-concat2 $(LZ4) -m tmp-tlm1 tmp-tlm2 tmp-tlm3 -c > tmp-tlm-concat2
test ! -f tmp-tlm1.lz4 # must not create .lz4 artefact test ! -f tmp-tlm1.lz4 # must not create .lz4 artefact
sdiff tmp-tlm-concat1 tmp-tlm-concat2 # must be equivalent cmp tmp-tlm-concat1 tmp-tlm-concat2 # must be equivalent
! $(LZ4) -f -m tmp-tlm1 notHere tmp-tlm2 # must fail : notHere not present # decompress multiple files into stdout
$(RM) tmp-tlm-concat1 tmp-tlm-concat2
$(LZ4) -f -m tmp-tlm1 tmp-tlm2 tmp-tlm3 # generate .lz4 to decompress
cat tmp-tlm1 tmp-tlm2 tmp-tlm3 > tmp-tlm-concat1 # create concatenated reference
$(RM) tmp-tlm1 tmp-tlm2 tmp-tlm3
$(LZ4) -d -m tmp-tlm1.lz4 tmp-tlm2.lz4 tmp-tlm3.lz4 -c > tmp-tlm-concat2
test ! -f tmp-tlm1 # must not create file artefact
cmp tmp-tlm-concat1 tmp-tlm-concat2 # must be equivalent
# compress multiple files, one of which is absent (must fail)
! $(LZ4) -f -m tmp-tlm-concat1 notHere tmp-tlm-concat2 # must fail : notHere not present
@$(RM) tmp-tlm* @$(RM) tmp-tlm*
test-lz4-basic: lz4 datagen unlz4 lz4cat test-lz4-basic: lz4 datagen unlz4 lz4cat