# 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_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:304): Remove after associated bug is fixed
bug_304.pdf * * *

# TODO(pdfium:1331): Remove after associated bug is fixed
bug_1331.in * * *

# TODO(pdfium:1461): Remove after associated bug is fixed
bug_1402.in win * *

# TODO(pdfium:1457): Remove after associated bug is fixed
bug_1457.in * * *

# TODO(chromium:451366): Remove after associated bug is fixed
bug_451366.in * * *

# TODO(chromium:1012369): Remove after associated bug is fixed
bug_1012369.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 * *
