diff options
author | Matthew Horsfall (alh) <wolfsage@gmail.com> | 2014-06-13 09:10:19 -0400 |
---|---|---|
committer | Matthew Horsfall (alh) <wolfsage@gmail.com> | 2014-06-13 09:20:14 -0400 |
commit | 2722144b2e9ae7a8723b4a4e842e517533d2f1bd (patch) | |
tree | 5679f0c93dc3c3cd4e6adf106477348171554ffd | |
parent | 412f55bbce575aecc79b1ca79fd2856893dd8738 (diff) | |
download | perl-2722144b2e9ae7a8723b4a4e842e517533d2f1bd.tar.gz |
[perl #121126] - Allow deparse tests to skip/ignore expected failures.
This will allow us to set up a deparse smoker to keep track of B::Deparse's
accuracy.
With this, the test run:
TEST_ARGS=-deparse make test
will "pass" currently.
If deparsing capabilities get worse, new failures will show up and should
be fixed or added to Porting/deparse-skips.txt.
If things get fixed, the test will fail noting that something has passed
when it shouldn't have, and the test in question should be removed from
Porting/deparse-skips.txt.
Use the KEEP_DEPARSE_FILES=1 environment setting to have the deparse
test files left around after a test run for examination/re-running.
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | Porting/README.pod | 4 | ||||
-rw-r--r-- | Porting/deparse-skips.txt | 555 | ||||
-rwxr-xr-x | t/TEST | 79 | ||||
-rw-r--r-- | t/cmd/mod.t | 3 |
5 files changed, 631 insertions, 11 deletions
@@ -4581,6 +4581,7 @@ Porting/corecpan.pl Reports outdated dual-lived modules Porting/corelist-diff Tool to produce corelist diffs Porting/corelist-perldelta.pl Generates data perldelta from Module::CoreList Porting/corelist.pl Generates data for Module::CoreList +Porting/deparse-skips.txt List of test files to ignore/skip for deparse tests. Porting/epigraphs.pod the release epigraphs used over the years Porting/exec-bit.txt List of files that get +x in release tarball Porting/exercise_makedef.pl Brute force testing for makedef.pl diff --git a/Porting/README.pod b/Porting/README.pod index 2bd612d688..52a32bc311 100644 --- a/Porting/README.pod +++ b/Porting/README.pod @@ -124,6 +124,10 @@ F<perldelta*> files. Generates info for Module::CoreList from this perl tree. +=head2 F<deparse-skips.txt> + +List of test files to ignore/skip for deparse tests. + =head2 F<epigraphs.pod> List of Perl release epigraphs. diff --git a/Porting/deparse-skips.txt b/Porting/deparse-skips.txt new file mode 100644 index 0000000000..a493caaa34 --- /dev/null +++ b/Porting/deparse-skips.txt @@ -0,0 +1,555 @@ +# List of test files to ignore/skip for deparse tests. +# +# This is used by t/TEST. +# +# Those under DEPARSE_FAILURES are ones that we need to fix or +# we expect to fail. These tests will still be run and checked to +# see if they fail as expected. +# +# Those under DEPARSE_SKIPS we don't want to even attempt running +# because they might do bad things to our system (memory exhaustion, +# etc), so they will be completely skipped from the test run. +# +# Paths are relative from t/ +# +# Paths that end with '/' are directories to skip entirely +# +# Format: +# __DEPARSE_FAILURES__ +# ../path/to/test1 +# ../path/to/test2 +# ../dir/to/skip/ +# +# __DEPARSE_SKIPS__ +# ../path/to/test3 +# ../path/to/test4 +# +# # This is a comment +# ../path/to/test5 # More comments at end of line +# +# # Blank lines okay + +__DEPARSE_FAILURES__ + +../cpan/CPAN-Meta-YAML/t/10_read.t +../cpan/Module-Metadata/t/metadata.t +../cpan/Scalar-List-Utils/t/proto.t +../cpan/Term-ANSIColor/t/taint/basic.t +../cpan/autodie/t/internal.t +../ext/POSIX/t/time.t +../cpan/AutoLoader/t/01AutoLoader.t +../cpan/CGI/t/utf8.t +../cpan/CPAN-Meta/t/converter.t +../cpan/Digest-MD5/t/utf8.t +../cpan/Encode/t/Encode.t +../cpan/Encode/t/Unicode.t +../cpan/Encode/t/at-cn.t +../cpan/Encode/t/at-tw.t +../cpan/Encode/t/enc_data.t +../cpan/Encode/t/enc_eucjp.t +../cpan/Encode/t/enc_module.t +../cpan/Encode/t/enc_utf8.t +../cpan/Encode/t/encoding.t +../cpan/Encode/t/fallback.t +../cpan/Encode/t/from_to.t +../cpan/Encode/t/guess.t +../cpan/Encode/t/jis7-fallback.t +../cpan/Encode/t/jperl.t +../cpan/Encode/t/mime-header.t +../cpan/ExtUtils-MakeMaker/t/arch_check.t +../cpan/ExtUtils-MakeMaker/t/min_perl_version.t +../cpan/ExtUtils-MakeMaker/t/xs.t +../cpan/File-Path/t/taint.t +../cpan/File-Temp/t/object.t +../cpan/HTTP-Tiny/t/001_api.t +../cpan/IO-Compress/t/050interop-gzip.t +../cpan/IO-Compress/t/cz-08encoding.t +../cpan/JSON-PP/t/001_utf8.t +../cpan/JSON-PP/t/109_encode.t +../cpan/MIME-Base64/t/unicode.t +../cpan/Math-Complex/t/Trig.t +../cpan/Module-Build/t/manifypods_with_utf8.t +../cpan/Module-Metadata/t/encoding.t +../cpan/Pod-Perldoc/t/man/_get_columns.t +../cpan/Pod-Simple/t/stree.t +../cpan/Scalar-List-Utils/t/dualvar.t +../cpan/Scalar-List-Utils/t/first.t +../cpan/Scalar-List-Utils/t/reduce.t +../cpan/Scalar-List-Utils/t/weak.t +../cpan/Socket/t/sockaddr.t +../cpan/Term-ANSIColor/t/taint.t +../cpan/Test-Harness/t/parser-config.t +../cpan/Test-Harness/t/parser-subclass.t +../cpan/Test-Harness/t/proverun.t +../cpan/Test-Simple/t/Builder/carp.t +../cpan/Test-Simple/t/fail-more.t +../cpan/Test-Simple/t/is_deeply_fail.t +../cpan/Test-Simple/t/new_ok.t +../cpan/Test-Simple/t/plan.t +../cpan/Test-Simple/t/plan_bad.t +../cpan/Test-Simple/t/skip.t +../cpan/Test-Simple/t/subtest/line_numbers.t +../cpan/Test-Simple/t/subtest/predicate.t +../cpan/Test-Simple/t/todo.t +../cpan/Text-Tabs/t/Tabs-ElCid.t +../cpan/Text-Tabs/t/Wrap-JLB.t +../cpan/Unicode-Collate/t/altern.t +../cpan/Unicode-Collate/t/backwds.t +../cpan/Unicode-Collate/t/cjk_b5.t +../cpan/Unicode-Collate/t/cjk_gb.t +../cpan/Unicode-Collate/t/cjk_ja.t +../cpan/Unicode-Collate/t/cjk_ko.t +../cpan/Unicode-Collate/t/cjk_py.t +../cpan/Unicode-Collate/t/cjk_st.t +../cpan/Unicode-Collate/t/cjk_zy.t +../cpan/Unicode-Collate/t/cjkrange.t +../cpan/Unicode-Collate/t/compatui.t +../cpan/Unicode-Collate/t/contract.t +../cpan/Unicode-Collate/t/default.t +../cpan/Unicode-Collate/t/hangul.t +../cpan/Unicode-Collate/t/ident.t +../cpan/Unicode-Collate/t/iglevel2.t +../cpan/Unicode-Collate/t/ignor.t +../cpan/Unicode-Collate/t/illegal.t +../cpan/Unicode-Collate/t/index.t +../cpan/Unicode-Collate/t/loc_af.t +../cpan/Unicode-Collate/t/loc_ar.t +../cpan/Unicode-Collate/t/loc_as.t +../cpan/Unicode-Collate/t/loc_az.t +../cpan/Unicode-Collate/t/loc_be.t +../cpan/Unicode-Collate/t/loc_bg.t +../cpan/Unicode-Collate/t/loc_bn.t +../cpan/Unicode-Collate/t/loc_bs.t +../cpan/Unicode-Collate/t/loc_bscy.t +../cpan/Unicode-Collate/t/loc_ca.t +../cpan/Unicode-Collate/t/loc_cjk.t +../cpan/Unicode-Collate/t/loc_cjkc.t +../cpan/Unicode-Collate/t/loc_cs.t +../cpan/Unicode-Collate/t/loc_cyrl.t +../cpan/Unicode-Collate/t/loc_da.t +../cpan/Unicode-Collate/t/loc_de.t +../cpan/Unicode-Collate/t/loc_deph.t +../cpan/Unicode-Collate/t/loc_ee.t +../cpan/Unicode-Collate/t/loc_eo.t +../cpan/Unicode-Collate/t/loc_es.t +../cpan/Unicode-Collate/t/loc_estr.t +../cpan/Unicode-Collate/t/loc_et.t +../cpan/Unicode-Collate/t/loc_fa.t +../cpan/Unicode-Collate/t/loc_fi.t +../cpan/Unicode-Collate/t/loc_fil.t +../cpan/Unicode-Collate/t/loc_fiph.t +../cpan/Unicode-Collate/t/loc_fo.t +../cpan/Unicode-Collate/t/loc_fr.t +../cpan/Unicode-Collate/t/loc_gu.t +../cpan/Unicode-Collate/t/loc_ha.t +../cpan/Unicode-Collate/t/loc_haw.t +../cpan/Unicode-Collate/t/loc_hi.t +../cpan/Unicode-Collate/t/loc_hr.t +../cpan/Unicode-Collate/t/loc_hu.t +../cpan/Unicode-Collate/t/loc_hy.t +../cpan/Unicode-Collate/t/loc_ig.t +../cpan/Unicode-Collate/t/loc_is.t +../cpan/Unicode-Collate/t/loc_ja.t +../cpan/Unicode-Collate/t/loc_jait.t +../cpan/Unicode-Collate/t/loc_japr.t +../cpan/Unicode-Collate/t/loc_kk.t +../cpan/Unicode-Collate/t/loc_kl.t +../cpan/Unicode-Collate/t/loc_kn.t +../cpan/Unicode-Collate/t/loc_ko.t +../cpan/Unicode-Collate/t/loc_kok.t +../cpan/Unicode-Collate/t/loc_ln.t +../cpan/Unicode-Collate/t/loc_lt.t +../cpan/Unicode-Collate/t/loc_lv.t +../cpan/Unicode-Collate/t/loc_mk.t +../cpan/Unicode-Collate/t/loc_ml.t +../cpan/Unicode-Collate/t/loc_mr.t +../cpan/Unicode-Collate/t/loc_mt.t +../cpan/Unicode-Collate/t/loc_nb.t +../cpan/Unicode-Collate/t/loc_nn.t +../cpan/Unicode-Collate/t/loc_nso.t +../cpan/Unicode-Collate/t/loc_or.t +../cpan/Unicode-Collate/t/loc_pa.t +../cpan/Unicode-Collate/t/loc_pl.t +../cpan/Unicode-Collate/t/loc_ro.t +../cpan/Unicode-Collate/t/loc_ru.t +../cpan/Unicode-Collate/t/loc_sa.t +../cpan/Unicode-Collate/t/loc_se.t +../cpan/Unicode-Collate/t/loc_si.t +../cpan/Unicode-Collate/t/loc_sidt.t +../cpan/Unicode-Collate/t/loc_sk.t +../cpan/Unicode-Collate/t/loc_sl.t +../cpan/Unicode-Collate/t/loc_sq.t +../cpan/Unicode-Collate/t/loc_sr.t +../cpan/Unicode-Collate/t/loc_srla.t +../cpan/Unicode-Collate/t/loc_sv.t +../cpan/Unicode-Collate/t/loc_svrf.t +../cpan/Unicode-Collate/t/loc_ta.t +../cpan/Unicode-Collate/t/loc_te.t +../cpan/Unicode-Collate/t/loc_test.t +../cpan/Unicode-Collate/t/loc_th.t +../cpan/Unicode-Collate/t/loc_tn.t +../cpan/Unicode-Collate/t/loc_to.t +../cpan/Unicode-Collate/t/loc_tr.t +../cpan/Unicode-Collate/t/loc_uk.t +../cpan/Unicode-Collate/t/loc_ur.t +../cpan/Unicode-Collate/t/loc_vi.t +../cpan/Unicode-Collate/t/loc_wae.t +../cpan/Unicode-Collate/t/loc_wo.t +../cpan/Unicode-Collate/t/loc_yo.t +../cpan/Unicode-Collate/t/loc_zh.t +../cpan/Unicode-Collate/t/loc_zhb5.t +../cpan/Unicode-Collate/t/loc_zhgb.t +../cpan/Unicode-Collate/t/loc_zhpy.t +../cpan/Unicode-Collate/t/loc_zhst.t +../cpan/Unicode-Collate/t/loc_zhzy.t +../cpan/Unicode-Collate/t/nonchar.t +../cpan/Unicode-Collate/t/normal.t +../cpan/Unicode-Collate/t/notable.t +../cpan/Unicode-Collate/t/overcjk0.t +../cpan/Unicode-Collate/t/overcjk1.t +../cpan/Unicode-Collate/t/override.t +../cpan/Unicode-Collate/t/rearrang.t +../cpan/Unicode-Collate/t/rewrite.t +../cpan/Unicode-Collate/t/test.t +../cpan/Unicode-Collate/t/trailwt.t +../cpan/Unicode-Collate/t/variable.t +../cpan/Unicode-Collate/t/view.t +../cpan/Unicode-Normalize/t/fcdc.t +../cpan/Unicode-Normalize/t/form.t +../cpan/Unicode-Normalize/t/func.t +../cpan/Unicode-Normalize/t/norm.t +../cpan/Unicode-Normalize/t/partial1.t +../cpan/Unicode-Normalize/t/partial2.t +../cpan/Unicode-Normalize/t/proto.t +../cpan/Unicode-Normalize/t/split.t +../cpan/Unicode-Normalize/t/test.t +../cpan/autodie/t/00-load.t +../cpan/autodie/t/autodie.t +../cpan/autodie/t/blog_hints.t +../cpan/autodie/t/caller.t +../cpan/autodie/t/chmod.t +../cpan/autodie/t/chown.t +../cpan/autodie/t/context.t +../cpan/autodie/t/context_lexical.t +../cpan/autodie/t/crickey.t +../cpan/autodie/t/dbmopen.t +../cpan/autodie/t/eval_error.t +../cpan/autodie/t/exception_class.t +../cpan/autodie/t/exceptions.t +../cpan/autodie/t/exec.t +../cpan/autodie/t/filehandles.t +../cpan/autodie/t/format-clobber.t +../cpan/autodie/t/hints.t +../cpan/autodie/t/hints_insist.t +../cpan/autodie/t/hints_pod_examples.t +../cpan/autodie/t/hints_provider_does.t +../cpan/autodie/t/hints_provider_easy_does_it.t +../cpan/autodie/t/hints_provider_isa.t +../cpan/autodie/t/kill.t +../cpan/autodie/t/lethal.t +../cpan/autodie/t/open.t +../cpan/autodie/t/recv.t +../cpan/autodie/t/repeat.t +../cpan/autodie/t/scope_leak.t +../cpan/autodie/t/sysopen.t +../cpan/autodie/t/user-context.t +../cpan/autodie/t/usersub.t +../cpan/autodie/t/utf8_open.t +../cpan/autodie/t/utime.t +../cpan/autodie/t/version_tag.t +../cpan/encoding-warnings/t/4-lexical.t +../cpan/podlators/t/basic.t +../cpan/version/t/09_list_util.t +../dist/Attribute-Handlers/t/constants.t +../dist/Attribute-Handlers/t/data_convert.t +../dist/Attribute-Handlers/t/linerep.t +../dist/Attribute-Handlers/t/multi.t +../dist/Carp/t/Carp.t +../dist/Carp/t/arg_regexp.t +../dist/Carp/t/arg_string.t +../dist/Data-Dumper/t/dumper.t +../dist/Data-Dumper/t/perl-74170.t +../dist/Data-Dumper/t/quotekeys.t +../dist/Exporter/t/Exporter.t +../dist/ExtUtils-Install/t/Installapi2.t +../dist/ExtUtils-Install/t/Packlist.t +../dist/ExtUtils-Install/t/can_write_dir.t +../dist/ExtUtils-Manifest/t/Manifest.t +../dist/Filter-Simple/t/data.t +../dist/I18N-LangTags/t/50_super.t +../dist/IO/t/io_file_export.t +../dist/IO/t/io_multihomed.t +../dist/IO/t/io_sel.t +../dist/IO/t/io_sock.t +../dist/IO/t/io_udp.t +../dist/IO/t/io_utf8.t +../dist/Locale-Maketext/t/01_about_verbose.t +../dist/Locale-Maketext/t/10_make.t +../dist/Locale-Maketext/t/20_get.t +../dist/Locale-Maketext/t/30_eval_dollar_at.t +../dist/Locale-Maketext/t/40_super.t +../dist/Locale-Maketext/t/50_super.t +../dist/Locale-Maketext/t/60_super.t +../dist/Locale-Maketext/t/70_fail_auto.t +../dist/Locale-Maketext/t/90_utf8.t +../dist/Locale-Maketext/t/91_backslash.t +../dist/Math-BigInt/t/const_mbf.t +../dist/Math-BigInt/t/constant.t +../dist/PathTools/t/cwd.t +../dist/Storable/t/blessed.t +../dist/Storable/t/croak.t +../dist/Storable/t/downgrade.t +../dist/Storable/t/malice.t +../dist/Storable/t/utf8.t +../dist/Term-ReadLine/t/ReadLine.t +../dist/Thread-Queue/t/08_nothreads.t +../dist/Tie-File/t/29_downcopy.t +../dist/Tie-File/t/42_offset.t +../dist/bignum/t/big_e_pi.t +../dist/bignum/t/bigexp.t +../dist/bignum/t/bigint.t +../dist/bignum/t/bignum.t +../dist/bignum/t/bigrat.t +../dist/bignum/t/bii_e_pi.t +../dist/bignum/t/bir_e_pi.t +../dist/bignum/t/in_effect.t +../dist/bignum/t/option_a.t +../dist/bignum/t/option_l.t +../dist/bignum/t/option_p.t +../dist/bignum/t/overrides.t +../dist/bignum/t/ratopt_a.t +../dist/bignum/t/scope_f.t +../dist/bignum/t/scope_i.t +../dist/bignum/t/scope_r.t +../dist/constant/t/constant.t +../dist/threads/t/err.t +../dist/threads/t/exit.t +../dist/threads/t/kill2.t +../dist/threads/t/libc.t +../dist/threads/t/thread.t +../ext/B/t/b.t +../ext/B/t/optree_constants.t +../ext/B/t/optree_samples.t +../ext/B/t/pragma.t +../ext/B/t/xref.t +../ext/Devel-Peek/t/Peek.t +../ext/File-Glob/t/basic.t +../ext/File-Glob/t/taint.t +../ext/Hash-Util-FieldHash/t/02_function.t +../ext/Hash-Util-FieldHash/t/11_hashassign.t +../ext/Hash-Util/t/Util.t +../ext/IPC-Open3/t/IPC-Open2.t +../ext/IPC-Open3/t/IPC-Open3.t +../ext/Opcode/t/Opcode.t +../ext/POSIX/t/termios.t +../ext/PerlIO-encoding/t/encoding.t +../ext/PerlIO-encoding/t/fallback.t +../ext/PerlIO-scalar/t/scalar.t +../ext/PerlIO-via/t/via.t +../ext/XS-APItest/t/autoload.t +../ext/XS-APItest/t/blockhooks-csc.t +../ext/XS-APItest/t/blockhooks.t +../ext/XS-APItest/t/call_checker.t +../ext/XS-APItest/t/caller.t +../ext/XS-APItest/t/cleanup.t +../ext/XS-APItest/t/cophh.t +../ext/XS-APItest/t/fetch_pad_names.t +../ext/XS-APItest/t/lexsub.t +../ext/XS-APItest/t/multicall.t +../ext/XS-APItest/t/overload.t +../ext/XS-APItest/t/svpeek.t +../ext/XS-APItest/t/svpv.t +../ext/XS-APItest/t/underscore_length.t +../ext/XS-APItest/t/xsub_h.t +../ext/arybase/t/aeach.t +../ext/arybase/t/aelem.t +../ext/arybase/t/aslice.t +../ext/arybase/t/av2arylen.t +../ext/arybase/t/lslice.t +../ext/arybase/t/scope.t +../ext/arybase/t/splice.t +../ext/re/t/reflags.t +../lib/B/Deparse.t +../lib/DB.t +../lib/DBM_Filter/t/01error.t +../lib/DBM_Filter/t/02core.t +../lib/DBM_Filter/t/compress.t +../lib/DBM_Filter/t/encode.t +../lib/DBM_Filter/t/int32.t +../lib/DBM_Filter/t/null.t +../lib/DBM_Filter/t/utf8.t +../lib/English.t +../lib/File/Basename.t +../lib/Getopt/Std.t +../lib/Unicode/UCD.t +../lib/bytes.t +../lib/charnames.t +../lib/feature/unicode_strings.t +../lib/less.t +../lib/overload.t +../lib/overloading.t +../lib/utf8.t +base/lex.t +comp/final_line_num.t +comp/fold.t +comp/form_scope.t +comp/hints.t +comp/opsubs.t +comp/parser.t +comp/proto.t +comp/require.t +io/inplace.t +io/utf8.t +lib/deprecate.t +lib/mypragma.t +mro/basic.t +mro/basic_utf8.t +mro/dbic_c3.t +mro/dbic_c3_utf8.t +mro/dbic_dfs.t +mro/dbic_dfs_utf8.t +mro/inconsistent_c3.t +mro/inconsistent_c3_utf8.t +mro/isarev.t +mro/isarev_utf8.t +mro/method_caching.t +mro/method_caching_utf8.t +mro/next_edgecases.t +mro/next_edgecases_utf8.t +mro/next_goto.t +mro/next_goto_utf8.t +mro/package_aliases_utf8.t +mro/pkg_gen.t +mro/pkg_gen_utf8.t +mro/recursion_c3.t +mro/recursion_c3_utf8.t +mro/recursion_dfs.t +mro/recursion_dfs_utf8.t +op/array.t +op/array_base.t +op/attrhand.t +op/attrs.t +op/bop.t +op/caller.t +op/chdir.t +op/chop.t +op/chr.t +op/closure.t +op/concat2.t +op/coreamp.t +op/crypt.t +op/die.t +op/do.t +op/each.t +op/eval.t +op/evalbytes.t +op/exec.t +op/filetest.t +op/goto.t +op/hash-rt85026.t +op/hashassign.t +op/index.t +op/join.t +op/kvaslice.t +op/kvhslice.t +op/lc.t +op/leaky-magic.t +op/length.t +op/lexsub.t +op/local.t +op/magic.t +op/method.t +op/my.t +op/mydef.t +op/not.t +op/ord.t +op/overload_integer.t +op/override.t +op/pack.t +op/pos.t +op/postfixderef.t +op/push.t +op/qr.t +op/quotemeta.t +op/range.t +op/readline.t +op/recurse.t +op/ref.t +op/signatures.t +op/sort.t +op/split.t +op/sprintf2.t +op/srand.t +op/state.t +op/sub.t +op/sub_lval.t +op/substr.t +op/switch.t +op/symbolcache.t +op/taint.t +op/tiehandle.t +op/tr.t +op/utf8cache.t +op/utf8magic.t +op/utfhash.t +op/vec.t +op/ver.t +op/warn.t +op/write.t +opbasic/cmp.t +opbasic/concat.t +porting/diag.t +porting/globvar.t +porting/podcheck.t +re/fold_grind.t +re/overload.t +re/pat.t +re/pat_advanced.t +re/pat_re_eval.t +re/pat_rt_report.t +re/reg_eval_scope.t +re/reg_fold.t +re/reg_mesg.t +re/reg_pmod.t +re/reg_posixcc.t +re/regex_sets.t +re/regexp_unicode_prop.t +re/rxcode.t +re/subst.t +run/switchC.t +run/switchI.t +run/switchd-78586.t +run/switches.t +uni/attrs.t +uni/bless.t +uni/chomp.t +uni/chr.t +uni/class.t +uni/eval.t +uni/greek.t +uni/gv.t +uni/labels.t +uni/latin2.t +uni/lex_utf8.t +uni/method.t +uni/overload.t +uni/package.t +uni/parser.t +uni/readline.t +uni/select.t +uni/sprintf.t +uni/stash.t +uni/tie.t +uni/tr_7jis.t +uni/tr_eucjp.t +uni/tr_sjis.t +uni/tr_utf8.t +uni/universal.t +uni/write.t + +__DEPARSE_SKIPS__ + +op/smartkve.t # Gobbles up all memory... +comp/redef.t # Redefinition happens at compile time +lib/Switch/t/ # B::Deparse doesn't support source filtering +../lib/locale.t # Memory... @@ -14,6 +14,11 @@ # In which case, we need to stop t/TEST actually running tests, as all # t/harness needs are its subroutines. +# If we're doing deparse tests, ignore failures for these +my $deparse_failures; + +# And skip even running these +my $deparse_skips; # directories with special sets of test switches my %dir_to_switch = @@ -133,6 +138,7 @@ our $show_elapsed_time = $ENV{HARNESS_TIMER} || 0; if ($1 =~ /^deparse(,.+)?$/) { $::deparse = 1; $::deparse_opts = $1; + _process_deparse_config(); } } @ARGV = @argv; @@ -545,15 +551,8 @@ EOT if ($test =~ /^$/) { next; } - if ($type eq 'deparse') { - if ($test eq "comp/redef.t") { - # Redefinition happens at compile time - next; - } - elsif ($test =~ m{lib/Switch/t/}) { - # B::Deparse doesn't support source filtering - next; - } + if ($type eq 'deparse' && $test =~ $deparse_skips) { + next; } my $te = $::path_to_name{$test} . '.' x ($dotdotdot - length($::path_to_name{$test})) .' '; @@ -666,7 +665,7 @@ EOT _check_valgrind(\$toolnm, \$grind_ct, \$test); - if ($type eq 'deparse') { + if ($type eq 'deparse' && !$ENV{KEEP_DEPARSE_FILES}) { unlink "./$test.dp"; } if (not defined $failure and $next != $max) { @@ -679,6 +678,19 @@ EOT $failure = "FAILED--non-zero wait status: $?"; } + # Deparse? Should it have passed or failed? + if ($type eq 'deparse' && $test =~ $deparse_failures) { + if (!$failure) { + # Wait, it didn't fail? Great news! Tell someone! + $failure = "FAILED--all tests passed but test should have failed"; + } else { + # Bah, still failing. Mask it. + print "${te}skipped\n"; + $tested_files = $tested_files - 1; + next; + } + } + if (defined $failure) { print "${te}$failure\n"; $::bad_files = $::bad_files + 1; @@ -901,4 +913,51 @@ sub _cleanup_valgrind { } } +# Generate regexps of known bad filenames / skips from Porting/deparse-skips.txt +my $in; + +sub _process_deparse_config { + my @deparse_failures; + my @deparse_skips; + + my $f = '../Porting/deparse-skips.txt'; + + my $skips; + if (!open($skips, '<', $f)) { + warn "Failed to find $f: $!\n"; + return; + } + + while(<$skips>) { + if (/__DEPARSE_FAILURES__/) { + $in = \@deparse_failures; next; + } elsif (/__DEPARSE_SKIPS__/) { + $in = \@deparse_skips; next; + } elsif (!$in) { + next; + } + + s/#.*$//; # Kill comments + s/\s+$//; # And trailing whitespace + + next unless $_; + + push @$in, $_; + } + + for my $f (@deparse_failures, @deparse_skips) { + if ($f =~ m|/$|) { # Dir? Skip everything below it + $f = qr/\Q$f\E.*/; + } else { + $f = qr/\Q$f\E/; + } + } + + $deparse_failures = join('|', @deparse_failures); + $deparse_failures = qr/^(?:$deparse_failures)$/; + + $deparse_skips = join('|', @deparse_skips); + $deparse_skips = qr/^(?:$deparse_skips)$/; +} + # ex: set ts=8 sts=4 sw=4 noet: diff --git a/t/cmd/mod.t b/t/cmd/mod.t index 07617f55b0..d3048e7920 100644 --- a/t/cmd/mod.t +++ b/t/cmd/mod.t @@ -32,10 +32,11 @@ if (join(' ',@y) eq '0 2 4 6 8 10 12 14 16 18 20') { print "not ok 7 @y\n"; } +# Well this is fragile... open(foo,'./TEST') || open(foo,'TEST') || open(foo,'t/TEST'); $x = 0; $x++ while <foo>; -print $x > 50 && $x < 1000 ? "ok 8\n" : "not ok 8\n"; +print $x > 50 && $x < 2000 ? "ok 8\n" : "not ok 8\n"; $x = -0.5; print "not " if scalar($x) < 0 and $x >= 0; |