# This file maps file formats to file extensions, and specifically, to a set of
# files used to seed fuzz testing.
#
# The map is often trivial. For example, the "gif" implementation is tested on
# files matching "*.gif". However, for some formats, the format name and the
# conventional file extension differ, such as "gzip" and "gz". There may also
# be multiple file extensions: both "jpeg" and "jpg" are widely used. First
# party test data will usually use "jpeg", but third party test data, such as a
# web crawl sample, may use "jpg".
#
# This file is not used by Wuffs per se, but it is used by the "projects/wuffs"
# directory in the https://github.com/google/oss-fuzz repository.
#
# Externally sourced seed files (whose paths start with "../") are fetched by
# https://github.com/google/oss-fuzz/blob/master/projects/wuffs/Dockerfile

bmp:    test/data/*.bmp   ../bmpsuite_corpus/*.bmp
gif:    test/data/*.gif   test/data/artificial/*.gif
gzip:   test/data/*.gz    test/data/artificial/*.gz
json:   test/data/*.json  ../rapidjson_corpus/*  ../simdjson_corpus/*  ../JSONTestSuite/test_*/*.json
png:    test/data/*.png   ../pngsuite_corpus/*.png
wbmp:   test/data/*.wbmp
zlib:   test/data/*.zlib
