mirror of https://github.com/xiph/flac
Add tests for metaflac --append
This commit is contained in:
parent
0b3d86ebc3
commit
436a3577dc
|
@ -267,39 +267,45 @@ FLAC__bool do_major_operation__append(FLAC__Metadata_Chain *chain, const Command
|
|||
if(fread(buffer+FLAC__STREAM_METADATA_HEADER_LENGTH, 1, buffer_size, stdin) < buffer_size) {
|
||||
flac_fprintf(stderr, "ERROR: couldn't read metadata block #%u from stdin\n",(num_objects));
|
||||
free(buffer);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
|
||||
if((object = FLAC__metadata_object_set_raw(buffer, buffer_size + FLAC__STREAM_METADATA_HEADER_LENGTH)) == NULL) {
|
||||
flac_fprintf(stderr, "ERROR: couldn't parse supplied metadata block #%u\n",(num_objects));
|
||||
free(buffer);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
free(buffer);
|
||||
|
||||
if(has_vorbiscomment && object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) {
|
||||
flac_fprintf(stderr, "ERROR: can't add another vorbis comment block to file, it already has one\n");
|
||||
FLAC__metadata_object_delete(object);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if(object->type == FLAC__METADATA_TYPE_STREAMINFO) {
|
||||
flac_fprintf(stderr, "ERROR: can't add streaminfo to file\n");
|
||||
FLAC__metadata_object_delete(object);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(object->type == FLAC__METADATA_TYPE_SEEKTABLE) {
|
||||
flac_fprintf(stderr, "ERROR: can't add seektable to file, please use --add-seekpoint instead\n");
|
||||
FLAC__metadata_object_delete(object);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!FLAC__metadata_iterator_insert_block_after(iterator, object)) {
|
||||
flac_fprintf(stderr, "ERROR: couldn't add supplied metadata block #%u to file\n",(num_objects));
|
||||
FLAC__metadata_object_delete(object);
|
||||
break;
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
return false;
|
||||
}
|
||||
/* Now check whether what type of block was added */
|
||||
{
|
||||
|
@ -312,8 +318,7 @@ FLAC__bool do_major_operation__append(FLAC__Metadata_Chain *chain, const Command
|
|||
if(num_objects == 0)
|
||||
flac_fprintf(stderr, "ERROR: unable to find a metadata block in the supplied input\n");
|
||||
|
||||
if(iterator != 0)
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
FLAC__metadata_iterator_delete(iterator);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -82,7 +82,9 @@ EXTRA_DIST = \
|
|||
case62-expect.meta \
|
||||
case63-expect.meta \
|
||||
case64-expect.meta \
|
||||
case65-expect.meta
|
||||
case65-expect.meta \
|
||||
case66-expect.meta \
|
||||
case67-expect.meta
|
||||
|
||||
clean-local:
|
||||
-rm -f out.*
|
||||
|
|
|
@ -0,0 +1,62 @@
|
|||
METADATA block #0
|
||||
type: 0 (STREAMINFO)
|
||||
is last: false
|
||||
length: 34
|
||||
minimum blocksize: 1152 samples
|
||||
maximum blocksize: 1152 samples
|
||||
minimum framesize: 11 bytes
|
||||
maximum framesize: 11 bytes
|
||||
sample_rate: 44100 Hz
|
||||
channels: 1
|
||||
bits-per-sample: 8
|
||||
total samples: 1
|
||||
MD5 signature: 8d39dd7eef115ea6975446ef4082951f
|
||||
METADATA block #1
|
||||
type: 3 (SEEKTABLE)
|
||||
is last: false
|
||||
length: 18
|
||||
seek points: 1
|
||||
point 0: sample_number=0, stream_offset=0, frame_samples=1
|
||||
METADATA block #2
|
||||
type: 4 (VORBIS_COMMENT)
|
||||
is last: false
|
||||
length: 46
|
||||
vendor string: reference libFLAC 1.0.5_beta2 20030114
|
||||
comments: 0
|
||||
METADATA block #3
|
||||
type: 126 (UNKNOWN)
|
||||
is last: false
|
||||
length: 4
|
||||
data contents:
|
||||
00000000: AA 55 A5 5A 00 00 00 00 00 00 00 00 00 00 00 00 .U.Z
|
||||
METADATA block #4
|
||||
type: 5 (CUESHEET)
|
||||
is last: false
|
||||
length: 480
|
||||
media catalog number:
|
||||
lead-in: 88200
|
||||
is CD: true
|
||||
number of tracks: 2
|
||||
track[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
ISRC:
|
||||
type: AUDIO
|
||||
pre-emphasis: false
|
||||
number of index points: 1
|
||||
index[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
track[1]
|
||||
offset: 1
|
||||
number: 170 (LEAD-OUT)
|
||||
METADATA block #5
|
||||
type: 2 (APPLICATION)
|
||||
is last: false
|
||||
length: 12
|
||||
application ID: 61626364
|
||||
data contents:
|
||||
calfflacMETADATA block #6
|
||||
type: 1 (PADDING)
|
||||
is last: true
|
||||
length: 12
|
|
@ -0,0 +1,95 @@
|
|||
METADATA block #0
|
||||
type: 0 (STREAMINFO)
|
||||
is last: false
|
||||
length: 34
|
||||
minimum blocksize: 1152 samples
|
||||
maximum blocksize: 1152 samples
|
||||
minimum framesize: 11 bytes
|
||||
maximum framesize: 11 bytes
|
||||
sample_rate: 44100 Hz
|
||||
channels: 1
|
||||
bits-per-sample: 8
|
||||
total samples: 1
|
||||
MD5 signature: 8d39dd7eef115ea6975446ef4082951f
|
||||
METADATA block #1
|
||||
type: 126 (UNKNOWN)
|
||||
is last: false
|
||||
length: 4
|
||||
data contents:
|
||||
00000000: AA 55 A5 5A 00 00 00 00 00 00 00 00 00 00 00 00 .U.Z
|
||||
METADATA block #2
|
||||
type: 5 (CUESHEET)
|
||||
is last: false
|
||||
length: 480
|
||||
media catalog number:
|
||||
lead-in: 88200
|
||||
is CD: true
|
||||
number of tracks: 2
|
||||
track[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
ISRC:
|
||||
type: AUDIO
|
||||
pre-emphasis: false
|
||||
number of index points: 1
|
||||
index[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
track[1]
|
||||
offset: 1
|
||||
number: 170 (LEAD-OUT)
|
||||
METADATA block #3
|
||||
type: 2 (APPLICATION)
|
||||
is last: false
|
||||
length: 12
|
||||
application ID: 61626364
|
||||
data contents:
|
||||
calfflacMETADATA block #4
|
||||
type: 3 (SEEKTABLE)
|
||||
is last: false
|
||||
length: 18
|
||||
seek points: 1
|
||||
point 0: sample_number=0, stream_offset=0, frame_samples=1
|
||||
METADATA block #5
|
||||
type: 4 (VORBIS_COMMENT)
|
||||
is last: false
|
||||
length: 46
|
||||
vendor string: reference libFLAC 1.0.5_beta2 20030114
|
||||
comments: 0
|
||||
METADATA block #6
|
||||
type: 126 (UNKNOWN)
|
||||
is last: false
|
||||
length: 4
|
||||
data contents:
|
||||
00000000: AA 55 A5 5A 00 00 00 00 00 00 00 00 00 00 00 00 .U.Z
|
||||
METADATA block #7
|
||||
type: 5 (CUESHEET)
|
||||
is last: false
|
||||
length: 480
|
||||
media catalog number:
|
||||
lead-in: 88200
|
||||
is CD: true
|
||||
number of tracks: 2
|
||||
track[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
ISRC:
|
||||
type: AUDIO
|
||||
pre-emphasis: false
|
||||
number of index points: 1
|
||||
index[0]
|
||||
offset: 0
|
||||
number: 1
|
||||
track[1]
|
||||
offset: 1
|
||||
number: 170 (LEAD-OUT)
|
||||
METADATA block #8
|
||||
type: 2 (APPLICATION)
|
||||
is last: false
|
||||
length: 12
|
||||
application ID: 61626364
|
||||
data contents:
|
||||
calfflacMETADATA block #9
|
||||
type: 1 (PADDING)
|
||||
is last: true
|
||||
length: 28
|
|
@ -69,6 +69,17 @@ run_metaflac_silent ()
|
|||
fi
|
||||
}
|
||||
|
||||
run_metaflac_to_metaflac_silent ()
|
||||
{
|
||||
if [ "$FLAC__TEST_WITH_VALGRIND" = yes ] ; then
|
||||
echo "valgrind --leak-check=yes --show-reachable=yes --num-callers=50 metaflac $*" >>test_metaflac.valgrind.log
|
||||
valgrind --leak-check=yes --show-reachable=yes --num-callers=50 --log-fd=4 metaflac${EXE} $* 2>/dev/null 4>>test_metaflac.valgrind.log
|
||||
else
|
||||
metaflac${EXE} $1 | metaflac${EXE} $2 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
check_flac ()
|
||||
{
|
||||
run_flac --silent --test $flacfile || die "ERROR in $flacfile" 1>&2
|
||||
|
@ -399,4 +410,56 @@ run_metaflac --remove --block-type=VORBIS_COMMENT --dont-use-padding $flacfile
|
|||
cmp $flacfile ${top_srcdir}/test/metaflac.flac.ok || die "ERROR, $flacfile and metaflac.flac.ok differ"
|
||||
echo OK
|
||||
|
||||
cp -p ${top_srcdir}/test/metaflac.flac.in $flacfile
|
||||
|
||||
flacfile2=metaflac2.flac
|
||||
cp $flacfile $flacfile2
|
||||
run_metaflac --remove-all --dont-use-padding $flacfile
|
||||
|
||||
echo $ECHO_N "Appending a streaminfo metadata block... " $ECHO_C
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary $flacfile2" "--append $flacfile" ; then
|
||||
die "ERROR: it should have failed but didn't"
|
||||
else
|
||||
echo "OK, it failed as it should"
|
||||
fi
|
||||
|
||||
echo $ECHO_N "Appending a seektable metadata block... " $ECHO_C
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary --except-block-type=STREAMINFO $flacfile2" "--append $flacfile" ; then
|
||||
die "ERROR: it should have failed but didn't"
|
||||
else
|
||||
echo "OK, it failed as it should"
|
||||
fi
|
||||
|
||||
run_metaflac --add-seekpoint=0 $flacfile
|
||||
|
||||
echo $ECHO_N "Appending a vorbis comment metadata block... " $ECHO_C
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary --block-type=VORBIS_COMMENT $flacfile2" "--append $flacfile" ; then
|
||||
echo "OK"
|
||||
else
|
||||
die "ERROR, couldn't add vorbis comment metadata block"
|
||||
fi
|
||||
|
||||
echo $ECHO_N "Appending another vorbis comment metadata block... " $ECHO_C
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary --block-type=VORBIS_COMMENT $flacfile2" "--append $flacfile" ; then
|
||||
die "ERROR: it should have failed but didn't"
|
||||
else
|
||||
echo "OK, it failed as it should"
|
||||
fi
|
||||
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary --except-block-type=STREAMINFO,SEEKTABLE,VORBIS_COMMENT $flacfile2" "--append $flacfile" ; then
|
||||
:
|
||||
else
|
||||
die "ERROR, couldn't add vorbis comment metadata block"
|
||||
fi
|
||||
|
||||
metaflac_test_binary case66 "--append" "--list"
|
||||
|
||||
if run_metaflac_to_metaflac_silent "--list --data-format=binary --except-block-type=STREAMINFO,SEEKTABLE,VORBIS_COMMENT $flacfile2" "--append --block-number=0 $flacfile" ; then
|
||||
:
|
||||
else
|
||||
die "ERROR, couldn't add vorbis comment metadata block"
|
||||
fi
|
||||
|
||||
metaflac_test_binary case67 "--append --block-number=0" "--list"
|
||||
|
||||
rm -f metaflac-test-files/out.meta metaflac-test-files/out1.meta
|
||||
|
|
Loading…
Reference in New Issue