⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppphtest.t

📁 source of perl for linux application,
💻 T
📖 第 1 页 / 共 2 页
字号:
newCONSTSUB();grok_hex();Perl_grok_bin(aTHX_ foo, bar);/* some comment */perl_eval_pv();grok_bin();Perl_grok_bin(bar, sv_no);---------------------------- mod1.c -------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#define NEED_grok_bin_GLOBAL#define NEED_newCONSTSUB#include "ppport.h"newCONSTSUB();grok_bin();{  Perl_croak ("foo");  Perl_sv_catpvf();  /* I know it's wrong ;-) */}---------------------------- mod2.c -------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#define NEED_eval_pv#include "ppport.h"newSViv();/*   eval_pv();*/---------------------------- mod3.c -------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"grok_oct();eval_pv();---------------------------- mod4.c -------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"START_MY_CXT;---------------------------- mod5.c -------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#include "ppport.h"call_pv();---------------------------- main.xsr -----------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#define NEED_eval_pv_GLOBAL#define NEED_grok_hex#define NEED_newCONSTSUB_GLOBAL#include "ppport.h"newCONSTSUB();grok_hex();grok_bin(foo, bar);/* some comment */eval_pv();grok_bin();grok_bin(bar, PL_sv_no);---------------------------- mod1.cr ------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#define NEED_grok_bin_GLOBAL#include "ppport.h"newCONSTSUB();grok_bin();{  Perl_croak (aTHX_ "foo");  Perl_sv_catpvf(aTHX);  /* I know it's wrong ;-) */}---------------------------- mod2.cr ------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"newSViv();/*   eval_pv();*/---------------------------- mod3.cr ------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#define NEED_grok_oct#include "ppport.h"grok_oct();eval_pv();---------------------------- mod4.cr ------------------------------------------#include "EXTERN.h"#include "perl.h"#include "XSUB.h"#include "ppport.h"START_MY_CXT;===============================================================================my $o = ppport(qw(--nochanges));ok($o =~ /Uses grok_hex/m);ok($o !~ /Looks good/m);$o = ppport(qw(--nochanges --compat-version=5.8.0));ok($o !~ /Uses grok_hex/m);ok($o =~ /Looks good/m);---------------------------- FooBar.xs ----------------------------------------grok_hex();===============================================================================my $o = ppport(qw(--nochanges));ok($o =~ /Uses SvPVutf8_force, which may not be portable/m);$o = ppport(qw(--nochanges --compat-version=5.5.3));ok($o =~ /Uses SvPVutf8_force, which may not be portable/m);$o = ppport(qw(--nochanges --compat-version=5.005_03));ok($o =~ /Uses SvPVutf8_force, which may not be portable/m);$o = ppport(qw(--nochanges --compat-version=5.6.0));ok($o !~ /Uses SvPVutf8_force/m);$o = ppport(qw(--nochanges --compat-version=5.006));ok($o !~ /Uses SvPVutf8_force/m);$o = ppport(qw(--nochanges --compat-version=5.999.999));ok($o !~ /Uses SvPVutf8_force/m);$o = ppport(qw(--nochanges --compat-version=6.0.0));ok($o =~ /Only Perl 5 is supported/m);$o = ppport(qw(--nochanges --compat-version=5.1000.999));ok($o =~ /Invalid version number: 5.1000.999/m);$o = ppport(qw(--nochanges --compat-version=5.999.1000));ok($o =~ /Invalid version number: 5.999.1000/m);---------------------------- FooBar.xs ----------------------------------------SvPVutf8_force();===============================================================================my $o = ppport(qw(--nochanges));ok($o !~ /potentially required change/);ok(matches($o, '^Looks good', 'm'), 2);---------------------------- FooBar.xs ----------------------------------------#define NEED_grok_numeric_radix#define NEED_grok_number#include "ppport.h"GROK_NUMERIC_RADIX();grok_number();---------------------------- foo.c --------------------------------------------#include "ppport.h"call_pv();===============================================================================# check --api-info optionmy $o = ppport(qw(--api-info=INT2PTR));my %found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg;ok(scalar keys %found, 1);ok(exists $found{INT2PTR});ok(matches($o, '^Supported at least starting from perl-5\.6\.0\.', 'm'), 1);ok(matches($o, '^Support by .*ppport.* provided back to perl-5\.003\.', 'm'), 1);$o = ppport(qw(--api-info=Zero));%found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg;ok(scalar keys %found, 1);ok(exists $found{Zero});ok(matches($o, '^No portability information available\.', 'm'), 1);$o = ppport(qw(--api-info=/Zero/));%found = map {($_ => 1)} $o =~ /^===\s+(\w+)\s+===/mg;ok(scalar keys %found, 2);ok(exists $found{Zero});ok(exists $found{ZeroD});===============================================================================# check --list-provided optionmy @o = ppport(qw(--list-provided));my %p;my $fail = 0;for (@o) {  my($name, $flags) = /^(\w+)(?:\s+\[(\w+(?:,\s+\w+)*)\])?$/ or $fail++;  exists $p{$name} and $fail++;  $p{$name} = defined $flags ? { map { ($_ => 1) } $flags =~ /(\w+)/g } : '';}ok(@o > 100);ok($fail, 0);ok(exists $p{call_sv});ok(not ref $p{call_sv});ok(exists $p{grok_bin});ok(ref $p{grok_bin}, 'HASH');ok(scalar keys %{$p{grok_bin}}, 2);ok($p{grok_bin}{explicit});ok($p{grok_bin}{depend});ok(exists $p{gv_stashpvn});ok(ref $p{gv_stashpvn}, 'HASH');ok(scalar keys %{$p{gv_stashpvn}}, 2);ok($p{gv_stashpvn}{depend});ok($p{gv_stashpvn}{hint});ok(exists $p{sv_catpvf_mg});ok(ref $p{sv_catpvf_mg}, 'HASH');ok(scalar keys %{$p{sv_catpvf_mg}}, 2);ok($p{sv_catpvf_mg}{explicit});ok($p{sv_catpvf_mg}{depend});ok(exists $p{PL_signals});ok(ref $p{PL_signals}, 'HASH');ok(scalar keys %{$p{PL_signals}}, 1);ok($p{PL_signals}{explicit});===============================================================================# check --list-unsupported optionmy @o = ppport(qw(--list-unsupported));my %p;my $fail = 0;for (@o) {  my($name, $ver) = /^(\w+)\s*\.+\s*([\d._]+)$/ or $fail++;  exists $p{$name} and $fail++;  $p{$name} = $ver;}ok(@o > 100);ok($fail, 0);ok(exists $p{utf8_distance});ok($p{utf8_distance}, '5.6.0');ok(exists $p{save_generic_svref});ok($p{save_generic_svref}, '5.005_03');===============================================================================# check --nofilter optionmy $o = ppport(qw(--nochanges));ok($o =~ /^Scanning.*foo\.cpp/mi);ok($o =~ /Analyzing.*foo\.cpp/mi);ok(matches($o, '^Scanning', 'm'), 1);ok(matches($o, 'Analyzing', 'm'), 1);$o = ppport(qw(--nochanges foo.cpp foo.o Makefile.PL));ok($o =~ /Skipping the following files \(use --nofilter to avoid this\):/m);ok(matches($o, '^\|\s+foo\.o', 'mi'), 1);ok(matches($o, '^\|\s+Makefile\.PL', 'mi'), 1);ok($o =~ /^Scanning.*foo\.cpp/mi);ok($o =~ /Analyzing.*foo\.cpp/mi);ok(matches($o, '^Scanning', 'm'), 1);ok(matches($o, 'Analyzing', 'm'), 1);$o = ppport(qw(--nochanges --nofilter foo.cpp foo.o Makefile.PL));ok($o =~ /^Scanning.*foo\.cpp/mi);ok($o =~ /Analyzing.*foo\.cpp/mi);ok($o =~ /^Scanning.*foo\.o/mi);ok($o =~ /Analyzing.*foo\.o/mi);ok($o =~ /^Scanning.*Makefile/mi);ok($o =~ /Analyzing.*Makefile/mi);ok(matches($o, '^Scanning', 'm'), 3);ok(matches($o, 'Analyzing', 'm'), 3);---------------------------- foo.cpp ------------------------------------------newSViv();---------------------------- foo.o --------------------------------------------newSViv();---------------------------- Makefile.PL --------------------------------------newSViv();===============================================================================# check if explicit variables are handled properymy $o = ppport(qw(--copy=a));ok($o =~ /^Needs to include.*ppport\.h/m);ok($o =~ /^Uses PL_signals/m);ok($o =~ /^File needs PL_signals, adding static request/m);ok(eq_files('MyExt.xsa', 'MyExt.ra'));unlink qw(MyExt.xsa);---------------------------- MyExt.xs -----------------------------------------PL_signals = 123;if (PL_signals == 42)  foo();---------------------------- MyExt.ra -----------------------------------------#define NEED_PL_signals#include "ppport.h"PL_signals = 123;if (PL_signals == 42)  foo();===============================================================================my $o = ppport(qw(--nochanges file.xs));ok($o =~ /^Uses PL_copline/m);ok($o =~ /WARNING: PL_copline/m);ok($o =~ /^Uses SvUOK/m);ok($o =~ /WARNING: Uses SvUOK, which may not be portable/m);ok($o =~ /^Analysis completed \(2 warnings\)/m);ok($o =~ /^Looks good/m);$o = ppport(qw(--nochanges --compat-version=5.8.0 file.xs));ok($o =~ /^Uses PL_copline/m);ok($o =~ /WARNING: PL_copline/m);ok($o !~ /WARNING: Uses SvUOK, which may not be portable/m);ok($o =~ /^Analysis completed \(1 warning\)/m);ok($o =~ /^Looks good/m);---------------------------- file.xs -----------------------------------------#include "ppport.h"SvUOKPL_copline===============================================================================my $o = ppport(qw(--copy=f));for (qw(file.xs)) {  ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi);  ok(-e "${_}f");  ok(eq_files("${_}f", "${_}r"));  unlink "${_}f";}---------------------------- file.xs -----------------------------------------a_string = "sv_undef"a_char = 'sv_yes'#define SOMETHING defgv/* C-comment: sv_tainted */## This is just a big XS comment using sv_no#/* The following, is NOT an XS comment! */#  define SOMETHING_ELSE defgv + \                         sv_undef---------------------------- file.xsr -----------------------------------------#include "ppport.h"a_string = "sv_undef"a_char = 'sv_yes'#define SOMETHING PL_defgv/* C-comment: sv_tainted */## This is just a big XS comment using sv_no#/* The following, is NOT an XS comment! */#  define SOMETHING_ELSE PL_defgv + \                         PL_sv_undef===============================================================================my $o = ppport(qw(--copy=f));for (qw(file.xs)) {  ok($o =~ /^Writing copy of.*\Q$_\E.*with changes/mi);  ok(-e "${_}f");  ok(eq_files("${_}f", "${_}r"));  unlink "${_}f";}---------------------------- file.xs -----------------------------------------#define NEED_sv_2pv_flags#define NEED_vnewSVpvf#define NEED_warner#include "ppport.h"Perl_croak_nocontext("foo");Perl_croak("bar");croak("foo");croak_nocontext("foo");Perl_warner_nocontext("foo");Perl_warner("foo");warner_nocontext("foo");warner("foo");---------------------------- file.xsr -----------------------------------------#define NEED_sv_2pv_flags#define NEED_vnewSVpvf#define NEED_warner#include "ppport.h"Perl_croak_nocontext("foo");Perl_croak(aTHX_ "bar");croak("foo");croak_nocontext("foo");Perl_warner_nocontext("foo");Perl_warner(aTHX_ "foo");warner_nocontext("foo");warner("foo");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -