# Copyright 2016 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 be 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
#
# 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
#
050_extra_m.pdf mac,win * *
12.pdf mac * *
1_10_watermark.pdf * * *
1_1_textbox.pdf * * *
1_2_typewriter.pdf * * *
1_3_callout.pdf * * *
1_matrix.pdf mac * *
1m_diff_lsjdf.pdf mac * *
1m_same_xxxx.pdf mac * *
2_11_stamp3.pdf mac * *
2_6_textbox.pdf * * *
2_color_calrgb.pdf mac * *
2_color_indexed.pdf mac * *
3_4_textbox.pdf * * *
3_interpolate_image.pdf mac * *
3bigpreview.pdf mac,win * *
4_35.pdf mac * *
4_39.pdf mac * *
5.1.pdf mac * *
5.2.pdf * * *
5.5_simple_font.pdf mac,win * *
8.2_name_dest_f_dest.pdf mac * *
8.2_outline.pdf mac * *
8.3_presentation.pdf mac * *
FRC_10_8.2.2__T8.3_original_file.pdf * * *
FRC_11_8.2.2__T8.3_first_last_exchange.pdf * * *
FRC_12_8.2.2__T8.3_first_outline_obj_ID.pdf * * *
FRC_13_8.2.2__T8.3_Count_edit300.pdf * * *
FRC_14_8.2.2__T8.3_Count_edit0.pdf * * *
FRC_15_8.2.2__T8.3_Count_edit1.pdf * * *
FRC_16_8.2.2__T8.3_Count_edit_1.pdf * * *
FRC_1_8.2.2__T8.3_First_empty.pdf * * *
FRC_2_8.2.2__T8.3_Last_empty.pdf * * *
FRC_3.5_P__3616_Password_1.pdf * * *
FRC_3_8.2.2_Type_empty.pdf * * *
FRC_4_8.2.2__T8.3_Count_empty.pdf * * *
FRC_5_8.2.2__T8.3_First_remove.pdf * * *
FRC_6_8.2.2__T8.3_Last_remove.pdf * * *
FRC_7_8.2.2_Type_remove.pdf * * *
FRC_8.4.1_Annotations_M.pdf * * *
FRC_8.4.1_Annotations_NM.pdf * * *
FRC_8.5_Page_C_SubmitForm.pdf * * *
FRC_8.5_Page_PI_ResetForm_Phantom.pdf * * *
FRC_8.5_Widget_F.pdf * nov8 *
FRC_8_8.2.2__T8.3_Count_remove.pdf * * *
FRC_9_8.2.2__T8.3_remove_first_item.pdf * * *
action.pdf * * *
action_execute_a_menu_item.pdf mac * *
action_hide_show_form.pdf mac * *
action_on_focus.pdf mac * *
action_open_a_file.pdf mac * *
action_pdf_save_close.pdf mac * *
action_reset.pdf mac * *
action_run_javascript.pdf mac * *
action_submit_a_form.pdf mac * *
all_trigger_alert.pdf * * *
all_trigger_browsefordoc.pdf * * *
all_trigger_mailmsg.pdf * * *
all_trigger_newdoc.pdf * * *
all_trigger_print.pdf * * *
all_trigger_run_js_lunchurl.pdf mac * *
all_trigger_run_js_maildoc.pdf mac * *
annotation_highlight_author_content.pdf mac * *
annotation_highlight_long_content.pdf mac * *
annotation_highlight_no_author.pdf mac * *
app_launchurl.pdf mac * *
appstoredescription3.1_en_updated.pdf mac * *
bookmark.pdf * * *
bookmarkgetcolor.pdf mac * *
bug_0_length_line.pdf mac * *
bug_0_width_line.pdf mac * *
bug_440132.pdf mac * *
bug_86459.pdf * * *
bug_white_space.pdf mac * *
calcorderindex_test.pdf * * *
calculate_average.pdf mac * *
calculate_order.pdf * * *
calculate_sum_a_b_c.pdf mac * *
calculate_validate.pdf mac * *
calculate_validate.pdf * nov8 *
ch_1.pdf * * *
check_box.pdf * * *
color.pdf mac * *
colorspace.pdf mac * *
colorspace_test1.pdf mac * *
combo_box.pdf * * *
combo_box_format.pdf mac * *
date.pdf mac * *
edit_transform.pdf mac * *
en_contact.pdf mac * *
en_diy.pdf mac * *
en_foxit.pdf mac * *
en_fqa2.pdf mac * *
en_introduce.pdf mac * *
en_tem.pdf mac * *
en_uicase_.pdf mac * *
event.change.pdf mac * *
event.changeex.pdf mac * *
event.keydown.pdf mac * *
event.keydown_1_.pdf mac * *
event.type_name.pdf mac * *
event.value.pdf mac * *
event_change.pdf mac * *
example_001.pdf mac * *
example_002.pdf mac,win * *
example_003.pdf mac,win * *
example_004.pdf mac * *
example_005.pdf mac * *
example_006.pdf mac,win * *
example_007.pdf mac * *
example_008.pdf mac * *
example_009.pdf mac * *
example_010.pdf mac * *
example_011.pdf mac * *
example_012.pdf mac * *
example_013.pdf mac * *
example_014.pdf mac * *
example_015.pdf mac * *
example_016.pdf mac * *
example_017.pdf mac * *
example_018.pdf mac * *
example_019.pdf mac * *
example_020.pdf mac * *
example_021.pdf mac * *
example_022.pdf mac * *
example_023.pdf mac * *
example_024.pdf mac * *
example_025.pdf mac * *
example_026.pdf mac * *
example_027.pdf mac * *
example_028.pdf mac * *
example_029.pdf mac * *
example_030.pdf mac * *
example_031.pdf mac * *
example_032.pdf mac * *
example_033.pdf mac,win * *
example_034.pdf mac * *
example_035.pdf mac,win * *
example_036.pdf mac,win * *
example_037.pdf mac * *
example_038.pdf mac,win * *
example_039.pdf mac * *
example_040.pdf mac * *
example_041.pdf mac,win * *
example_042.pdf mac * *
example_043.pdf mac * *
example_044.pdf mac * *
example_045.pdf mac,win * *
example_046.pdf mac,win * *
example_047.pdf mac * *
example_048.pdf mac * *
example_049.pdf mac * *
example_050.pdf mac * *
example_051.pdf mac * *
example_052.pdf mac * *
example_053.pdf mac * *
example_054.pdf mac * *
example_055.pdf mac,win * *
example_056.pdf mac * *
example_057.pdf mac * *
example_058.pdf mac * *
example_059.pdf mac,win * *
example_060.pdf mac * *
example_061.pdf mac,win * *
example_062.pdf mac * *
example_063.pdf mac * *
example_064.pdf mac * *
example_065.pdf mac * *
fillform.pdf * * *
form_action_trigger.pdf * * *
form_button_sign_url.pdf * * *
form_combo_sign_url.pdf * * *
form_combobox0.pdf * * *
form_combobox_actioin_goto.pdf * * *
form_combobox_date.pdf mac * *
form_combobox_date.pdf * nov8 *
form_combobox_date1.pdf * * *
form_combobox_date2.pdf mac * *
form_combobox_date2.pdf * nov8 *
form_combobox_importform.pdf * * *
form_combobox_num.pdf mac * *
form_combobox_num.pdf * nov8 *
form_combobox_per.pdf mac * *
form_combobox_per.pdf * nov8 *
form_combobox_plus.pdf mac * *
form_combobox_plus.pdf * nov8 *
form_combobox_product.pdf mac * *
form_combobox_product.pdf * nov8 *
form_combobox_resetform.pdf * * *
form_combobox_time.pdf mac * *
form_combobox_time.pdf * nov8 *
form_list.pdf * * *
form_list1.pdf * * *
form_same.pdf mac * *
form_text_sign_url.pdf * * *
format_combo_box.pdf mac * *
format_combo_box.pdf * nov8 *
format_custom_format.pdf linux,mac * *
format_custom_format.pdf * nov8 *
format_custom_keystroke.pdf * * *
format_date.pdf * nov8 *
format_number.pdf mac * *
format_percentage.pdf mac * *
format_special.pdf * nov8 *
format_text_color.pdf mac * *
formfeild.pdf * * *
getarray.pdf mac * *
javascriptaction.pdf * * *
jetman_std.pdf mac * *
jetman_std_fixed.pdf mac * *
js_calculate.pdf * * *
list_box.pdf * * *
negative.pdf mac * *
new_certify1.pdf mac * *
new_signature1.pdf mac * *
new_signature2.pdf mac * *
new_stamp4.pdf mac * *
new_stamp5.pdf mac * *
new_textmarkup1.pdf mac * *
new_textmarkup1_hidden.pdf mac * *
new_textmarkup2.pdf mac * *
new_textmarkup2_hidden.pdf mac * *
new_textmarkup4.pdf mac * *
new_textmarkup4_hidden.pdf mac * *
new_textmarkup5.pdf mac * *
new_textmarkup5_hidden.pdf mac * *
new_textmarkup6.pdf mac * *
new_textmarkup7.pdf mac * *
new_textmarkup7_hidden.pdf mac * *
new_textmarkup8.pdf mac * *
new_textmarkup8_hidden.pdf mac * *
number.pdf * * *
octest.pdf mac * *
open_a_weblink.pdf mac * *
path_10_jd.pdf mac * *
path_5_pattern.pdf mac * *
path_6_graphics4.5.5.pdf mac * *
path_7.pdf mac * *
path_9.pdf mac * *
percentage.pdf mac * *
push_button.pdf * * *
quick_start_guide.pdf mac * *
radio_button.pdf * * *
run_custom_validate_script.pdf * * *
show_1.pdf mac * *
signature.pdf * * *
signature_4.pdf * * *
simplified_field_notation.pdf mac * *
special.pdf mac * *
submit_form.pdf mac * *
test_app_beep.pdf * * *
test_control.pdf * * *
test_m.pdf mac,win * *
text_field.pdf * * *
text_field_font_input_decimal_point.pdf mac * *
text_field_multiline_line_spacing.pdf mac * *
thread_action.pdf mac * *
time.pdf mac * *
transformation.pdf mac * *
transparent.pdf mac * *
whats_new_in_v3.0.pdf mac * *
widget_javascript.pdf mac * *
zh_file1.pdf mac * *
zh_function_list.pdf mac * *
zh_shared_document.pdf mac * *

# TODO(hnakashima): These might never have been run. Go over them and fix.

FRC_8.5_E&X.pdf * * *
FRC_8.5_O&PO_GoToE.pdf * * *
FRC_8.5_OpenAction&O_URI.pdf * * *
FRC_8.5_PC&C_GoToE_T_T.pdf * * *
FRC_8.5_PC_GoToE_T_R&P&A.pdf * * *
FRC_8.5_PO_GoToE_T_R&N.pdf * * *

# xfa_specific

Choose.pdf * * *
data_binding.pdf * * *
# TODO(npm): Add proper evt for MouseEvents.
MouseEvents_enter.pdf * * *
MouseEvents_exit.pdf * * *
Oneof3.pdf * * *
Sum.pdf * * *
TimeField.pdf win,linux * *
Test_CheckBox.pdf * * *
Test_DateField_locale_zh_HK.pdf mac,win * *

#
# JavaScript tests
#
bug_679642.in * * noxfa
bug_679643.in * * noxfa
bug_735912.in * * noxfa

# xfa_specific

# TODO(pdfium:1106): Remove after associated bug is fixed
resolve_nodes_1.pdf * * *

#
# Pixel tests
#
bug_492.in * nov8 *

# TODO(pdfium:632): Remove after associated bug is fixed
bug_632.in * * *

# xfa_specific

# TODO(pdfium:1107): Remove after associated bug is fixed
standard_symbols.pdf * * *
# TODO(pdfium:1168): Remove after associated bug is fixed
xfa_bmp_image.in * * *
# TODO(pdfium:1095): Remove after associated bug is fixed
xfa_example.in win * *
# TODO(pdfium:1167): Remove after associated bug is fixed
xfa_gif_image.in * * *
# TODO(pdfium:1095): Remove after associated bug is fixed
xfa_textfield.in win * *
