# Copyright 2017 The PDFium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# List of tests to have image diff tests skipped, one per line.
# There are four space-separated columns per line
# Each column (except column 0) can contain a comma-separated list of values.
#
# Column 0: test file name
# Column 1: platform: *, win, mac, linux
# Column 2: v8 support: *, nov8, v8
# Column 3: xfa support: *, noxfa, xfa
# Column 4: rendering support: *, agg, skia, skiapaths
#
# All columns on a line on a line must match, but filenames may be repeated
# on subsequent lines to suppress more cases.  Within each column, any one of
# the comma-separated values must match in order for the colum to "match".
# The filenames and keywords are case-sensitive.
#
# Try to keep the file alphabetized within each category of test.

#
# Corpus tests
#
FRC_3.5_CF_Strf_stmf_DefaultCryptFilter.pdf * * * *
FRC_3.5_EncryptMetadata_T.pdf * * * *
FRC_3.5_Encrypt_is_damage.pdf * * * *
FRC_3.5_Filter_PubSec_SubFilter_s5.pdf * * * *
FRC_3.5_Filter_PubSec_Sub_SubFilter_s4.pdf * * * *
MouseEvents.pdf * * * *
Oneof.pdf * * * *
bug_651304.pdf * * * *
outline.pdf * * * *
