--- /dev/null
+# Created with: ./make_t.pl
+
+# Contents:
+#1 here_long.here_long
+#2 bbhb.bbhb2
+#3 bbhb.bbhb3
+#4 bbhb.def
+#5 bbhb.bbhb4
+#6 bbhb.bbhb5
+#7 braces.braces7
+#8 xci.def
+#9 xci.xci1
+#10 xci.xci2
+#11 mangle4.def
+#12 mangle4.mangle
+#13 extrude5.def
+#14 extrude5.extrude
+#15 kba1.def
+#16 kba1.kba1
+#17 git45.def
+#18 git45.git45
+#19 boa.boa
+
+# To locate test #13 you can search for its name or the string '#13'
+
+use strict;
+use Test::More;
+use Carp;
+use Perl::Tidy;
+my $rparams;
+my $rsources;
+my $rtests;
+
+BEGIN {
+
+ ###########################################
+ # BEGIN SECTION 1: Parameter combinations #
+ ###########################################
+ $rparams = {
+ 'bbhb2' => "-bbhb=2 -bbp=2",
+ 'bbhb3' => "-bbhb=3 -bbp=3",
+ 'bbhb4' => "-bbhb=3 -bbp=3 -bbhbi=2 -bbpi=2",
+ 'bbhb5' => "-bbhb=3 -bbp=3 -bbhbi=1 -bbpi=1",
+ 'boa' => <<'----------',
+# -boa is default so we test nboa
+-nboa
+----------
+ 'braces7' => <<'----------',
+-bli -blil='*'
+----------
+ 'def' => "",
+ 'extrude' => "--extrude",
+ 'git45' => "-vtc=1 -wn",
+ 'here_long' => "-l=33",
+ 'kba1' => <<'----------',
+-kbb='=> ,' -kba='=>'
+----------
+ 'mangle' => "--mangle",
+ 'xci1' => "-xci",
+ 'xci2' => "-pbp -nst -nse -xci",
+ };
+
+ ############################
+ # BEGIN SECTION 2: Sources #
+ ############################
+ $rsources = {
+
+ 'bbhb' => <<'----------',
+my %temp =
+(
+supsup => 123,
+nested => {
+asdf => 456,
+yarg => 'yarp',
+}, );
+----------
+
+ 'boa' => <<'----------',
+my @field
+ : field
+ : Default(1)
+ : Get('Name' => 'foo')
+ : Set('Name');
+----------
+
+ 'braces' => <<'----------',
+sub message {
+ if ( !defined( $_[0] ) ) {
+ print("Hello, World\n");
+ }
+ else {
+ print( $_[0], "\n" );
+ }
+}
+
+$myfun = sub {
+ print("Hello, World\n");
+};
+
+eval {
+ my $app = App::perlbrew->new( "install-patchperl", "-q" );
+ $app->run();
+} or do {
+ $error = $@;
+ $produced_error = 1;
+};
+
+Mojo::IOLoop->next_tick(
+ sub {
+ $ua->get(
+ '/' => sub {
+ push @kept_alive, pop->kept_alive;
+ Mojo::IOLoop->next_tick( sub { Mojo::IOLoop->stop } );
+ }
+ );
+ }
+);
+
+$r = do {
+ sswitch( $words[ rand @words ] ) {
+ case $words[0]:
+ case $words[1]:
+ case $words[2]:
+ case $words[3]: { 'ok' }
+ default: { 'wtf' }
+ }
+};
+
+try {
+ die;
+}
+catch {
+ die;
+};
+----------
+
+ 'extrude5' => <<'----------',
+use perl6-alpha;
+$var{-y} = 1;
+----------
+
+ 'git45' => <<'----------',
+# git#45 -vtc=n and -wn were not working together
+if (
+ $self->_add_fqdn_host(
+ name => $name,
+ realm => $realm
+ )
+ )
+{
+ ...;
+}
+
+# do not stack )->pack(
+my $hlist = $control::control->Scrolled(
+ 'HList',
+ drawbranch => 1,
+ width => 20,
+ -scrollbars => 'w'
+)->pack(
+ -side => 'bottom',
+ -expand => 1
+);
+
+----------
+
+ 'here_long' => <<'----------',
+# must not break after here target regardless of maximum-line-length
+$sth= $dbh->prepare (<<"END_OF_SELECT") or die "Couldn't prepare SQL" ;
+ SELECT COUNT(duration),SUM(duration)
+ FROM logins WHERE username='$user'
+END_OF_SELECT
+
+----------
+
+ 'kba1' => <<'----------',
+$this_env = join("", $before, $closures
+ , $contents
+ , ($defenv ? '': &balance_tags())
+ , $reopens ); $_ = $after;
+
+method 'foo1'
+ => [ Int, Int ]
+ => sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+ };
+
+method 'foo2'=>
+ [ Int, Int ]=>
+ sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+ };
+
+----------
+
+ 'mangle4' => <<'----------',
+# a useful parsing test from 'signatures.t'
+use feature "signatures";
+no warnings "experimental::signatures";
+sub t086
+ ( #foo)))
+ $ #foo)))
+ a #foo)))
+ , #foo)))
+ , #foo)))
+ $ #foo)))
+ b #foo)))
+ = #foo)))
+ 333 #foo)))
+ , #foo)))
+ , #foo)))
+ ) #foo)))
+ { $a.$b }
+----------
+
+ 'xci' => <<'----------',
+$self->{_text} = (
+ !$section ? ''
+ : $type eq 'item' ? "the $section entry"
+ : "the section on $section"
+ )
+ . (
+ $page
+ ? ( $section ? ' in ' : '' ) . "the $page$page_ext manpage"
+ : ' elsewhere in this document'
+ );
+
+my $otherHashRef =
+ $condition
+ ? {
+ 'a' => 'a value',
+ 'b' => 'b value',
+ 'c' => {
+ 'd' => 'd value',
+ 'e' => 'e value'
+ }
+ }
+ : undef;
+
+my @globlist = ( grep { defined } @opt{qw( l q S t )} )
+ ? do {
+ local *DIR;
+ opendir DIR, './' or die "can't opendir './': $!";
+ my @a = grep { not /^\.+$/ } readdir DIR;
+ closedir DIR;
+ @a;
+ }
+ : ();
+----------
+ };
+
+ ####################################
+ # BEGIN SECTION 3: Expected output #
+ ####################################
+ $rtests = {
+
+ 'here_long.here_long' => {
+ source => "here_long",
+ params => "here_long",
+ expect => <<'#1...........',
+# must not break after here target regardless of maximum-line-length
+$sth = $dbh->prepare(
+ <<"END_OF_SELECT") or die "Couldn't prepare SQL";
+ SELECT COUNT(duration),SUM(duration)
+ FROM logins WHERE username='$user'
+END_OF_SELECT
+
+#1...........
+ },
+
+ 'bbhb.bbhb2' => {
+ source => "bbhb",
+ params => "bbhb2",
+ expect => <<'#2...........',
+my %temp =
+ (
+ supsup => 123,
+ nested =>
+ {
+ asdf => 456,
+ yarg => 'yarp',
+ },
+ );
+#2...........
+ },
+
+ 'bbhb.bbhb3' => {
+ source => "bbhb",
+ params => "bbhb3",
+ expect => <<'#3...........',
+my %temp =
+ (
+ supsup => 123,
+ nested =>
+ {
+ asdf => 456,
+ yarg => 'yarp',
+ },
+ );
+#3...........
+ },
+
+ 'bbhb.def' => {
+ source => "bbhb",
+ params => "def",
+ expect => <<'#4...........',
+my %temp = (
+ supsup => 123,
+ nested => {
+ asdf => 456,
+ yarg => 'yarp',
+ },
+);
+#4...........
+ },
+
+ 'bbhb.bbhb4' => {
+ source => "bbhb",
+ params => "bbhb4",
+ expect => <<'#5...........',
+my %temp =
+ (
+ supsup => 123,
+ nested =>
+ {
+ asdf => 456,
+ yarg => 'yarp',
+ },
+ );
+#5...........
+ },
+
+ 'bbhb.bbhb5' => {
+ source => "bbhb",
+ params => "bbhb5",
+ expect => <<'#6...........',
+my %temp =
+(
+ supsup => 123,
+ nested =>
+ {
+ asdf => 456,
+ yarg => 'yarp',
+ },
+);
+#6...........
+ },
+
+ 'braces.braces7' => {
+ source => "braces",
+ params => "braces7",
+ expect => <<'#7...........',
+sub message
+ {
+ if ( !defined( $_[0] ) )
+ {
+ print("Hello, World\n");
+ }
+ else
+ {
+ print( $_[0], "\n" );
+ }
+ }
+
+$myfun = sub
+ {
+ print("Hello, World\n");
+ };
+
+eval
+ {
+ my $app = App::perlbrew->new( "install-patchperl", "-q" );
+ $app->run();
+ } or do
+ {
+ $error = $@;
+ $produced_error = 1;
+ };
+
+Mojo::IOLoop->next_tick(
+ sub
+ {
+ $ua->get(
+ '/' => sub
+ {
+ push @kept_alive, pop->kept_alive;
+ Mojo::IOLoop->next_tick( sub { Mojo::IOLoop->stop } );
+ }
+ );
+ }
+);
+
+$r = do
+ {
+ sswitch( $words[ rand @words ] )
+ {
+ case $words[0]:
+ case $words[1]:
+ case $words[2]:
+ case $words[3]: { 'ok' }
+ default: { 'wtf' }
+ }
+ };
+
+try
+ {
+ die;
+ }
+catch
+ {
+ die;
+ };
+#7...........
+ },
+
+ 'xci.def' => {
+ source => "xci",
+ params => "def",
+ expect => <<'#8...........',
+$self->{_text} = (
+ !$section ? ''
+ : $type eq 'item' ? "the $section entry"
+ : "the section on $section"
+ )
+ . (
+ $page
+ ? ( $section ? ' in ' : '' ) . "the $page$page_ext manpage"
+ : ' elsewhere in this document'
+ );
+
+my $otherHashRef =
+ $condition
+ ? {
+ 'a' => 'a value',
+ 'b' => 'b value',
+ 'c' => {
+ 'd' => 'd value',
+ 'e' => 'e value'
+ }
+ }
+ : undef;
+
+my @globlist = ( grep { defined } @opt{qw( l q S t )} )
+ ? do {
+ local *DIR;
+ opendir DIR, './' or die "can't opendir './': $!";
+ my @a = grep { not /^\.+$/ } readdir DIR;
+ closedir DIR;
+ @a;
+ }
+ : ();
+#8...........
+ },
+
+ 'xci.xci1' => {
+ source => "xci",
+ params => "xci1",
+ expect => <<'#9...........',
+$self->{_text} = (
+ !$section ? ''
+ : $type eq 'item' ? "the $section entry"
+ : "the section on $section"
+ )
+ . (
+ $page
+ ? ( $section ? ' in ' : '' ) . "the $page$page_ext manpage"
+ : ' elsewhere in this document'
+ );
+
+my $otherHashRef =
+ $condition
+ ? {
+ 'a' => 'a value',
+ 'b' => 'b value',
+ 'c' => {
+ 'd' => 'd value',
+ 'e' => 'e value'
+ }
+ }
+ : undef;
+
+my @globlist = ( grep { defined } @opt{qw( l q S t )} )
+ ? do {
+ local *DIR;
+ opendir DIR, './' or die "can't opendir './': $!";
+ my @a = grep { not /^\.+$/ } readdir DIR;
+ closedir DIR;
+ @a;
+ }
+ : ();
+#9...........
+ },
+
+ 'xci.xci2' => {
+ source => "xci",
+ params => "xci2",
+ expect => <<'#10...........',
+$self->{_text} = (
+ !$section ? ''
+ : $type eq 'item' ? "the $section entry"
+ : "the section on $section"
+ )
+ . ( $page
+ ? ( $section ? ' in ' : '' ) . "the $page$page_ext manpage"
+ : ' elsewhere in this document'
+ );
+
+my $otherHashRef
+ = $condition
+ ? { 'a' => 'a value',
+ 'b' => 'b value',
+ 'c' => {
+ 'd' => 'd value',
+ 'e' => 'e value'
+ }
+ }
+ : undef;
+
+my @globlist = ( grep {defined} @opt{qw( l q S t )} )
+ ? do {
+ local *DIR;
+ opendir DIR, './' or die "can't opendir './': $!";
+ my @a = grep { not /^\.+$/ } readdir DIR;
+ closedir DIR;
+ @a;
+ }
+ : ();
+#10...........
+ },
+
+ 'mangle4.def' => {
+ source => "mangle4",
+ params => "def",
+ expect => <<'#11...........',
+# a useful parsing test from 'signatures.t'
+use feature "signatures";
+no warnings "experimental::signatures";
+
+sub t086 ( #foo)))
+ $ #foo)))
+ a #foo)))
+ , #foo)))
+ , #foo)))
+ $ #foo)))
+ b #foo)))
+ = #foo)))
+ 333 #foo)))
+ , #foo)))
+ , #foo)))
+ ) #foo)))
+{ $a . $b }
+#11...........
+ },
+
+ 'mangle4.mangle' => {
+ source => "mangle4",
+ params => "mangle",
+ expect => <<'#12...........',
+# a useful parsing test from 'signatures.t'
+use feature "signatures";
+no warnings "experimental::signatures";
+sub t086(#foo)))
+$ #foo)))
+ a#foo)))
+,#foo)))
+,#foo)))
+$ #foo)))
+ b#foo)))
+ =#foo)))
+ 333#foo)))
+,#foo)))
+,#foo)))
+ )#foo)))
+{$a.$b}
+#12...........
+ },
+
+ 'extrude5.def' => {
+ source => "extrude5",
+ params => "def",
+ expect => <<'#13...........',
+use perl6-alpha;
+$var{-y} = 1;
+#13...........
+ },
+
+ 'extrude5.extrude' => {
+ source => "extrude5",
+ params => "extrude",
+ expect => <<'#14...........',
+use
+perl6-alpha
+;
+$var{-y}
+=
+1
+;
+#14...........
+ },
+
+ 'kba1.def' => {
+ source => "kba1",
+ params => "def",
+ expect => <<'#15...........',
+$this_env = join( "",
+ $before, $closures, $contents, ( $defenv ? '' : &balance_tags() ),
+ $reopens );
+$_ = $after;
+
+method 'foo1' => [ Int, Int ] => sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+};
+
+method 'foo2' => [ Int, Int ] => sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+};
+
+#15...........
+ },
+
+ 'kba1.kba1' => {
+ source => "kba1",
+ params => "kba1",
+ expect => <<'#16...........',
+$this_env = join(
+ "", $before, $closures
+ , $contents
+ , ( $defenv ? '' : &balance_tags() )
+ , $reopens
+);
+$_ = $after;
+
+method 'foo1'
+ => [ Int, Int ]
+ => sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+ };
+
+method 'foo2' =>
+ [ Int, Int ] =>
+ sub {
+ my ( $self, $x, $y ) = ( shift, @_ );
+ ...;
+ };
+
+#16...........
+ },
+
+ 'git45.def' => {
+ source => "git45",
+ params => "def",
+ expect => <<'#17...........',
+# git#45 -vtc=n and -wn were not working together
+if (
+ $self->_add_fqdn_host(
+ name => $name,
+ realm => $realm
+ )
+ )
+{
+ ...;
+}
+
+# do not stack )->pack(
+my $hlist = $control::control->Scrolled(
+ 'HList',
+ drawbranch => 1,
+ width => 20,
+ -scrollbars => 'w'
+)->pack(
+ -side => 'bottom',
+ -expand => 1
+);
+
+#17...........
+ },
+
+ 'git45.git45' => {
+ source => "git45",
+ params => "git45",
+ expect => <<'#18...........',
+# git#45 -vtc=n and -wn were not working together
+if ( $self->_add_fqdn_host(
+ name => $name,
+ realm => $realm ) )
+{
+ ...;
+}
+
+# do not stack )->pack(
+my $hlist = $control::control->Scrolled(
+ 'HList',
+ drawbranch => 1,
+ width => 20,
+ -scrollbars => 'w'
+)->pack(
+ -side => 'bottom',
+ -expand => 1 );
+
+#18...........
+ },
+
+ 'boa.boa' => {
+ source => "boa",
+ params => "boa",
+ expect => <<'#19...........',
+my @field : field : Default(1) : Get('Name' => 'foo') : Set('Name');
+#19...........
+ },
+ };
+
+ my $ntests = 0 + keys %{$rtests};
+ plan tests => $ntests;
+}
+
+###############
+# EXECUTE TESTS
+###############
+
+foreach my $key ( sort keys %{$rtests} ) {
+ my $output;
+ my $sname = $rtests->{$key}->{source};
+ my $expect = $rtests->{$key}->{expect};
+ my $pname = $rtests->{$key}->{params};
+ my $source = $rsources->{$sname};
+ my $params = defined($pname) ? $rparams->{$pname} : "";
+ my $stderr_string;
+ my $errorfile_string;
+ my $err = Perl::Tidy::perltidy(
+ source => \$source,
+ destination => \$output,
+ perltidyrc => \$params,
+ argv => '', # for safety; hide any ARGV from perltidy
+ stderr => \$stderr_string,
+ errorfile => \$errorfile_string, # not used when -se flag is set
+ );
+ if ( $err || $stderr_string || $errorfile_string ) {
+ print STDERR "Error output received for test '$key'\n";
+ if ($err) {
+ print STDERR "An error flag '$err' was returned\n";
+ ok( !$err );
+ }
+ if ($stderr_string) {
+ print STDERR "---------------------\n";
+ print STDERR "<<STDERR>>\n$stderr_string\n";
+ print STDERR "---------------------\n";
+ ok( !$stderr_string );
+ }
+ if ($errorfile_string) {
+ print STDERR "---------------------\n";
+ print STDERR "<<.ERR file>>\n$errorfile_string\n";
+ print STDERR "---------------------\n";
+ ok( !$errorfile_string );
+ }
+ }
+ else {
+ if ( !is( $output, $expect, $key ) ) {
+ my $leno = length($output);
+ my $lene = length($expect);
+ if ( $leno == $lene ) {
+ print STDERR
+"#> Test '$key' gave unexpected output. Strings differ but both have length $leno\n";
+ }
+ else {
+ print STDERR
+"#> Test '$key' gave unexpected output. String lengths differ: output=$leno, expected=$lene\n";
+ }
+ }
+ }
+}