Code-TidyAll-0.32~dfsg/0000755000000000000000000000000012624105235013410 5ustar rootrootCode-TidyAll-0.32~dfsg/t/0000755000000000000000000000000012623441275013661 5ustar rootrootCode-TidyAll-0.32~dfsg/t/00-report-prereqs.t0000644000000000000000000001273112623441275017261 0ustar rootroot#!perl use strict; use warnings; # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.021 use Test::More tests => 1; use ExtUtils::MakeMaker; use File::Spec; # from $version::LAX my $lax_version_re = qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )? | (?:\.[0-9]+) (?:_[0-9]+)? ) | (?: v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )? | (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)? ) )/x; # hide optional CPAN::Meta modules from prereq scanner # and check if they are available my $cpan_meta = "CPAN::Meta"; my $cpan_meta_pre = "CPAN::Meta::Prereqs"; my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic # Verify requirements? my $DO_VERIFY_PREREQS = 1; sub _max { my $max = shift; $max = ( $_ > $max ) ? $_ : $max for @_; return $max; } sub _merge_prereqs { my ($collector, $prereqs) = @_; # CPAN::Meta::Prereqs object if (ref $collector eq $cpan_meta_pre) { return $collector->with_merged_prereqs( CPAN::Meta::Prereqs->new( $prereqs ) ); } # Raw hashrefs for my $phase ( keys %$prereqs ) { for my $type ( keys %{ $prereqs->{$phase} } ) { for my $module ( keys %{ $prereqs->{$phase}{$type} } ) { $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module}; } } } return $collector; } my @include = qw( ); my @exclude = qw( ); # Add static prereqs to the included modules list my $static_prereqs = do 't/00-report-prereqs.dd'; # Merge all prereqs (either with ::Prereqs or a hashref) my $full_prereqs = _merge_prereqs( ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ), $static_prereqs ); # Add dynamic prereqs to the included modules list (if we can) my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; if ( $source && $HAS_CPAN_META ) { if ( my $meta = eval { CPAN::Meta->load_file($source) } ) { $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); } } else { $source = 'static metadata'; } my @full_reports; my @dep_errors; my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs; # Add static includes into a fake section for my $mod (@include) { $req_hash->{other}{modules}{$mod} = 0; } for my $phase ( qw(configure build test runtime develop other) ) { next unless $req_hash->{$phase}; next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING}); for my $type ( qw(requires recommends suggests conflicts modules) ) { next unless $req_hash->{$phase}{$type}; my $title = ucfirst($phase).' '.ucfirst($type); my @reports = [qw/Module Want Have/]; for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) { next if $mod eq 'perl'; next if grep { $_ eq $mod } @exclude; my $file = $mod; $file =~ s{::}{/}g; $file .= ".pm"; my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC; my $want = $req_hash->{$phase}{$type}{$mod}; $want = "undef" unless defined $want; $want = "any" if !$want && $want == 0; my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required"; if ($prefix) { my $have = MM->parse_version( File::Spec->catfile($prefix, $file) ); $have = "undef" unless defined $have; push @reports, [$mod, $want, $have]; if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) { if ( $have !~ /\A$lax_version_re\z/ ) { push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)"; } elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) { push @dep_errors, "$mod version '$have' is not in required range '$want'"; } } } else { push @reports, [$mod, $want, "missing"]; if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) { push @dep_errors, "$mod is not installed ($req_string)"; } } } if ( @reports ) { push @full_reports, "=== $title ===\n\n"; my $ml = _max( map { length $_->[0] } @reports ); my $wl = _max( map { length $_->[1] } @reports ); my $hl = _max( map { length $_->[2] } @reports ); if ($type eq 'modules') { splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; } else { splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; } push @full_reports, "\n"; } } } if ( @full_reports ) { diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports; } if ( @dep_errors ) { diag join("\n", "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n", "The following REQUIRED prerequisites were not satisfied:\n", @dep_errors, "\n" ); } pass; # vim: ts=4 sts=4 sw=4 et: Code-TidyAll-0.32~dfsg/t/author-Git.t0000644000000000000000000000037412623441275016075 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Git; Test::Code::TidyAll::Git->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-PodSpell.t0000644000000000000000000000042612623441275020326 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PodSpell; Test::Code::TidyAll::Plugin::PodSpell->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-CSSUnminifier.t0000644000000000000000000000044012623441275021256 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::CSSUnminifier; Test::Code::TidyAll::Plugin::CSSUnminifier->runtests; Code-TidyAll-0.32~dfsg/t/author-pod-syntax.t0000644000000000000000000000050312623441275017452 0ustar rootroot#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); Code-TidyAll-0.32~dfsg/t/author-no-tabs.t0000644000000000000000000000730112623441275016712 0ustar rootroot BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15 use Test::More 0.88; use Test::NoTabs; my @files = ( 'bin/tidyall', 'lib/Code/TidyAll.pm', 'lib/Code/TidyAll/Cache.pm', 'lib/Code/TidyAll/CacheModel.pm', 'lib/Code/TidyAll/CacheModel/Shared.pm', 'lib/Code/TidyAll/Config/INI/Reader.pm', 'lib/Code/TidyAll/Git/Precommit.pm', 'lib/Code/TidyAll/Git/Prereceive.pm', 'lib/Code/TidyAll/Git/Util.pm', 'lib/Code/TidyAll/Plugin.pm', 'lib/Code/TidyAll/Plugin/CSSUnminifier.pm', 'lib/Code/TidyAll/Plugin/DiffOnTidyError.pm', 'lib/Code/TidyAll/Plugin/JSBeautify.pm', 'lib/Code/TidyAll/Plugin/JSHint.pm', 'lib/Code/TidyAll/Plugin/JSLint.pm', 'lib/Code/TidyAll/Plugin/JSON.pm', 'lib/Code/TidyAll/Plugin/MasonTidy.pm', 'lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm', 'lib/Code/TidyAll/Plugin/PerlCritic.pm', 'lib/Code/TidyAll/Plugin/PerlTidy.pm', 'lib/Code/TidyAll/Plugin/PerlTidySweet.pm', 'lib/Code/TidyAll/Plugin/PodChecker.pm', 'lib/Code/TidyAll/Plugin/PodSpell.pm', 'lib/Code/TidyAll/Plugin/PodTidy.pm', 'lib/Code/TidyAll/Plugin/SortLines.pm', 'lib/Code/TidyAll/Result.pm', 'lib/Code/TidyAll/Role/Tempdir.pm', 'lib/Code/TidyAll/SVN/Precommit.pm', 'lib/Code/TidyAll/SVN/Util.pm', 'lib/Code/TidyAll/Util.pm', 'lib/Code/TidyAll/Util/Zglob.pm', 'lib/Test/Code/TidyAll.pm', 't/00-report-prereqs.dd', 't/00-report-prereqs.t', 't/Basic.t', 't/Conf.t', 't/Zglob.t', 't/author-Git.t', 't/author-Plugin-CSSUnminifier.t', 't/author-Plugin-JSBeautify.t', 't/author-Plugin-JSHint.t', 't/author-Plugin-JSLint.t', 't/author-Plugin-MasonTidy.t', 't/author-Plugin-PHPCodeSniffer.t', 't/author-Plugin-PerlCritic.t', 't/author-Plugin-PerlTidy.t', 't/author-Plugin-PerlTidySweet.t', 't/author-Plugin-PodChecker.t', 't/author-Plugin-PodSpell.t', 't/author-Plugin-PodTidy.t', 't/author-Plugin-SortLines.t', 't/author-Util.t', 't/author-mojibake.t', 't/author-no-tabs.t', 't/author-pod-spell.t', 't/author-pod-syntax.t', 't/author-self-tidyall.t', 't/author-test-version.t', 't/author-tidy-and-critic.t', 't/lib/Code/TidyAll/Test/Class.pm', 't/lib/Code/TidyAll/Test/Plugin/AToZ.pm', 't/lib/Code/TidyAll/Test/Plugin/AlwaysPhonetic.pm', 't/lib/Code/TidyAll/Test/Plugin/CheckUpper.pm', 't/lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm', 't/lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm', 't/lib/Code/TidyAll/Test/Plugin/UpperText.pm', 't/lib/Test/Code/TidyAll/Basic.pm', 't/lib/Test/Code/TidyAll/Conf.pm', 't/lib/Test/Code/TidyAll/Git.pm', 't/lib/Test/Code/TidyAll/Plugin.pm', 't/lib/Test/Code/TidyAll/Plugin/CSSUnminifier.pm', 't/lib/Test/Code/TidyAll/Plugin/JSBeautify.pm', 't/lib/Test/Code/TidyAll/Plugin/JSHint.pm', 't/lib/Test/Code/TidyAll/Plugin/JSLint.pm', 't/lib/Test/Code/TidyAll/Plugin/MasonTidy.pm', 't/lib/Test/Code/TidyAll/Plugin/PHPCodeSniffer.pm', 't/lib/Test/Code/TidyAll/Plugin/PerlCritic.pm', 't/lib/Test/Code/TidyAll/Plugin/PerlTidy.pm', 't/lib/Test/Code/TidyAll/Plugin/PerlTidySweet.pm', 't/lib/Test/Code/TidyAll/Plugin/PodChecker.pm', 't/lib/Test/Code/TidyAll/Plugin/PodSpell.pm', 't/lib/Test/Code/TidyAll/Plugin/PodTidy.pm', 't/lib/Test/Code/TidyAll/Plugin/SortLines.pm', 't/lib/Test/Code/TidyAll/SVN.pm', 't/lib/Test/Code/TidyAll/Util.pm', 't/lib/Test/Code/TidyAll/Zglob.pm', 't/release-cpan-changes.t' ); notabs_ok($_) foreach @files; done_testing; Code-TidyAll-0.32~dfsg/t/Zglob.t0000644000000000000000000000014712623441275015125 0ustar rootroot#!/usr/bin/perl use lib 't/lib'; use Test::Code::TidyAll::Zglob; Test::Code::TidyAll::Zglob->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-JSLint.t0000644000000000000000000000042212623441275017743 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::JSLint; Test::Code::TidyAll::Plugin::JSLint->runtests; Code-TidyAll-0.32~dfsg/t/author-pod-spell.t0000644000000000000000000000254612623441275017254 0ustar rootroot BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::PodSpelling 2.007000 use Test::Spelling 0.12; use Pod::Wordlist; add_stopwords(); all_pod_files_spelling_ok( qw( bin lib ) ); __DATA__ DROLSKY DROLSKY's PayPal Rolsky Rolsky's API CPAN JSON JavaScript Misc PHP PREREQS Raggett STDERR STDIN STDOUT Simakov TIDYALL Thalhammer Vim argv ascii atomicity cmd conf config cssunminifier ctrl dir filename iff ispell js jsbeautify jshint jslint lib listref masontidy noll npm ok ops params pathname perlcritic perlcriticrc perltidy phpcs plugins podspell podtidy pre prereqs repo repos ro runtime rw shebang sourceforge svn tidiers tidyall tidyall'd timestamped ttl txn validator validators Jonathan Swartz swartz Dave autarch Andy Jack andyjack George Hartzell georgewh Gregory Oschwald goschwald Joe Crotty joe Mark Fowler mark Grimes mgrimes Olaf Alders olaf Pedro Melo melo Sergey Romanov sromanov timgimyee tim Code TidyAll Cache CacheModel Shared Config INI Reader Git Precommit Prereceive Util Plugin CSSUnminifier DiffOnTidyError JSBeautify JSHint JSLint MasonTidy PHPCodeSniffer PerlCritic PerlTidy PerlTidySweet PodChecker PodSpell PodTidy SortLines Result Role Tempdir SVN Zglob Test Code-TidyAll-0.32~dfsg/t/author-tidy-and-critic.t0000644000000000000000000000370012623441275020332 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Code::TidyAll::Util qw(tempdir_simple); use Code::TidyAll; use File::Basename; use File::Path; use File::Slurp::Tiny qw(read_file write_file); use Test::More; use Capture::Tiny qw(capture_merged); my $root_dir = tempdir_simple('Code-TidyAll-XXXX'); sub make { my ( $file, $content ) = @_; $file = "$root_dir/$file"; mkpath( dirname($file), 0, 0775 ); write_file( $file, $content ); } make( "lib/Foo.pm", 'package Foo; use strict; 1; ' ); make( "bin/bar.pl", "#!/usr/bin/perl\n \$d = 5;" ); make( "lib/Foo.pod", "=over\n\n=item a\n\n" . scalar( "Blah " x 25 ) . "\n\n=back\n" ); make( "data/baz.txt", " 34" ); make( ".perlcriticrc", "include = RequireUseStrict" ); my $ct = Code::TidyAll->new( root_dir => $root_dir, plugins => { PerlTidy => { select => '**/*.{pl,pm}' }, PerlCritic => { select => '**/*.{pl,pm}', argv => "--profile $root_dir/.perlcriticrc" }, PodTidy => { select => '**/*.pod' }, } ); my $output; $output = capture_merged { $ct->process_all() }; like( $output, qr/Code before strictures are enabled./ ); is( read_file("$root_dir/lib/Foo.pm"), "package Foo;\nuse strict;\n1;\n" ); is( read_file("$root_dir/lib/Foo.pod"), "=over\n\n=item a\n\n" . join( " ", ("Blah") x 16 ) . "\n" . join( " ", ("Blah") x 9 ) . "\n\n=back\n" ); is( read_file("$root_dir/data/baz.txt"), " 34" ); $output = capture_merged { $ct->process_all() }; like( $output, qr/Code before strictures are enabled./ ); unlike( $output, qr/Foo\.pm/ ); make( "bin/bar.pl", "#!/usr/bin/perl\nuse strict;\n \$d = 5;" ); $output = capture_merged { $ct->process_all() }; like( $output, qr/.*bar\.pl/ ); is( read_file("$root_dir/bin/bar.pl"), "#!/usr/bin/perl\nuse strict;\n\$d = 5;\n" ); done_testing(); Code-TidyAll-0.32~dfsg/t/lib/0000755000000000000000000000000012623441275014427 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Test/0000755000000000000000000000000012623441275015346 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Test/Code/0000755000000000000000000000000012623441275016220 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/0000755000000000000000000000000012623441275017562 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Git.pm0000644000000000000000000001273312623441275020651 0ustar rootrootpackage Test::Code::TidyAll::Git; use Capture::Tiny qw(capture_stdout capture_stderr capture); use Code::TidyAll::Git::Util qw(git_uncommitted_files); use Code::TidyAll::Util qw(dirname mkpath pushd realpath tempdir_simple); use Code::TidyAll; use File::Slurp::Tiny qw(read_file write_file); use IPC::System::Simple qw(capturex run); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; my ( $precommit_hook_template, $prereceive_hook_template, $tidyall_ini_template ); sub test_git : Tests { my ($self) = @_; $self->require_executable('git'); my $temp_dir = tempdir_simple; my $work_dir = "$temp_dir/work"; my $hooks_dir = "$work_dir/.git/hooks"; my $output; my $committed = sub { like( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" ); }; my $uncommitted = sub { unlike( capturex( 'git', 'status' ), qr/nothing to commit/, "committed" ); }; my $pushed = sub { unlike( capturex( 'git', 'status' ), qr/Your branch is ahead/, "pushed" ); }; my $unpushed = sub { like( capturex( 'git', 'status' ), qr/Your branch is ahead/, "unpushed" ); }; my $lib_dirs = join q{ }, map { realpath($_) } qw( lib t/lib ); # Create the repo # run( "git", "init", $work_dir ); ok( -d $_, "$_ exists" ) for ( $work_dir, $hooks_dir ); my $pushd = pushd($work_dir); # Add tidyall.ini and .gitignore # write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) ); write_file( "$work_dir/.gitignore", ".tidyall.d" ); run( "git", "add", "tidyall.ini", ".gitignore" ); run( "git", "commit", "-m", "added", "tidyall.ini", ".gitignore" ); # Add foo.txt, which needs tidying # write_file( "$work_dir/foo.txt", "abc\n" ); cmp_deeply( [ git_uncommitted_files($work_dir) ], [], "no uncommitted files" ); # git add foo.txt and make sure it is now in uncommitted list # run( "git", "add", "foo.txt" ); cmp_deeply( [ git_uncommitted_files($work_dir) ], ["$work_dir/foo.txt"], "one uncommitted file" ); # Add pre-commit hook # my $precommit_hook_file = "$hooks_dir/pre-commit"; my $precommit_hook = sprintf( $precommit_hook_template, $lib_dirs ); write_file( $precommit_hook_file, $precommit_hook ); chmod( 0775, $precommit_hook_file ); # Try to commit, make sure we get error # $output = capture_stderr { system( "git", "commit", "-m", "changed", "-a" ) }; like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" ); like( $output, qr/needs tidying/, "needs tidying" ); $uncommitted->(); # Fix file and commit successfully # write_file( "$work_dir/foo.txt", "ABC\n" ); $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) }; like( $output, qr/\[checked\] foo\.txt/, "checked foo.txt" ); $committed->(); # Create a bare shared repo, then a clone of that # my $shared_dir = "$temp_dir/shared"; my $clone_dir = "$temp_dir/clone"; run( "git", "clone", "-q", "--bare", $work_dir, $shared_dir ); run( "git", "clone", "-q", $shared_dir, $clone_dir ); chdir($clone_dir); $committed->(); # Add prereceive hook to shared repo # my $prereceive_hook_file = "$shared_dir/hooks/pre-receive"; my $prereceive_hook = sprintf( $prereceive_hook_template, $lib_dirs ); write_file( $prereceive_hook_file, $prereceive_hook ); chmod( 0775, $prereceive_hook_file ); # Unfix file and commit # write_file( "$clone_dir/foo.txt", "def\n" ); run( "git", "commit", "-m", "changed", "-a" ); $committed->(); # Try to push, make sure we get error back # $unpushed->(); $output = capture_stderr { system( "git", "push" ) }; like( $output, qr/master -> master/, "master -> master" ); like( $output, qr/1 file did not pass tidyall check/, "1 file did not pass tidyall check" ); like( $output, qr/needs tidying/, "needs tidying" ); $unpushed->(); # Fix file and push successfully # write_file( "$clone_dir/foo.txt", "DEF\n" ); $output = capture_stderr { run( "git", "commit", "-m", "changed", "-a" ) }; $committed->(); $output = capture_stderr { system( "git", "push" ) }; like( $output, qr/master -> master/, "master -> master" ); $pushed->(); # Unfix file and commit # write_file( "$clone_dir/foo.txt", "def\n" ); run( "git", "commit", "-m", "changed", "-a" ); $committed->(); # Try #1: make sure we get error back # $unpushed->(); $output = capture_stderr { system( "git", "push" ) }; like( $output, qr/needs tidying/, "needs tidying" ); $unpushed->(); # Try #2: make sure we get error and repeat notification back # $unpushed->(); $output = capture_stderr { system( "git", "push" ) }; like( $output, qr/needs tidying/, "needs tidying" ); like( $output, qr/Identical push seen 2 times/, "Identical push seen 2 times" ); $unpushed->(); } $precommit_hook_template = '#!' . $^X . "\n" . <<'EOF'; use lib qw(%s); use Code::TidyAll::Git::Precommit; use strict; use warnings; Code::TidyAll::Git::Precommit->check( tidyall_options => { verbose => 1 } ); EOF $prereceive_hook_template = '#!' . $^X . "\n" . <<'EOF'; use lib qw(%s); use Code::TidyAll::Git::Prereceive; use strict; use warnings; Code::TidyAll::Git::Prereceive->check(); EOF $tidyall_ini_template = <<'EOF'; [+Code::TidyAll::Test::Plugin::UpperText] select = **/*.txt EOF 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Basic.pm0000644000000000000000000004442312623441275021150 0ustar rootrootpackage Test::Code::TidyAll::Basic; use Cwd qw(realpath); use Code::TidyAll::Util qw(dirname mkpath pushd tempdir_simple); use Code::TidyAll; use Capture::Tiny qw(capture capture_stdout capture_merged); use File::Find qw(find); use File::Slurp::Tiny qw(read_file write_file); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; use Code::TidyAll::CacheModel::Shared; sub test_plugin {"+Code::TidyAll::Test::Plugin::$_[0]"} my %UpperText = ( test_plugin('UpperText') => { select => '**/*.txt' } ); my %ReverseFoo = ( test_plugin('ReverseFoo') => { select => '**/foo*' } ); my %RepeatFoo = ( test_plugin('RepeatFoo') => { select => '**/foo*' } ); my %CheckUpper = ( test_plugin('CheckUpper') => { select => '**/*.txt' } ); my %AToZ = ( test_plugin('AToZ') => { select => '**/*.txt' } ); my $cli_conf; sub create_dir { my ( $self, $files ) = @_; my $root_dir = tempdir_simple(); while ( my ( $path, $content ) = each(%$files) ) { my $full_path = "$root_dir/$path"; mkpath( dirname($full_path), 0, 0775 ); write_file( $full_path, $content ); } return realpath($root_dir); } sub tidy { my ( $self, %params ) = @_; my $desc = $params{desc}; if ( !defined($desc) ) { ($desc) = ( ( caller(1) )[3] =~ /([^:]+$)/ ); } my $root_dir = $self->create_dir( $params{source} ); my $options = $params{options} || {}; my $ct = Code::TidyAll->new( plugins => $params{plugins}, root_dir => $root_dir, %$options ); my @results; my $output = capture_stdout { @results = $ct->process_all() }; my $error_count = grep { $_->error } @results; if ( $params{errors} ) { like( $output, $params{errors}, "$desc - errors" ); ok( $error_count > 0, "$desc - error_count > 0" ); } else { is( $error_count, 0, "$desc - error_count == 0" ); } while ( my ( $path, $content ) = each( %{ $params{dest} } ) ) { is( read_file("$root_dir/$path"), $content, "$desc - $path content" ); } if ( my $like_output = $params{like_output} ) { like( $output, $like_output, "$desc - output" ); } } sub test_basic : Tests { my $self = shift; $self->tidy( plugins => {}, source => { "foo.txt" => "abc" }, dest => { "foo.txt" => "abc" }, desc => 'one file no plugins', ); $self->tidy( plugins => {%UpperText}, source => { "foo.txt" => "abc" }, dest => { "foo.txt" => "ABC" }, desc => 'one file UpperText', ); $self->tidy( plugins => { test_plugin('UpperText') => { select => '**/*.txt', only_modes => 'upper' }, test_plugin('ReverseFoo') => { select => '**/foo*', only_modes => 'reversals' } }, source => { "foo.txt" => "abc" }, dest => { "foo.txt" => "cba" }, desc => 'one file reversals mode', options => { mode => 'reversals' }, ); $self->tidy( plugins => { %UpperText, %ReverseFoo }, source => { "foo.txt" => "abc", "bar.txt" => "def", "foo.tx" => "ghi", "bar.tx" => "jkl" }, dest => { "foo.txt" => "CBA", "bar.txt" => "DEF", "foo.tx" => "ihg", "bar.tx" => "jkl" }, desc => 'four files UpperText ReverseFoo', ); $self->tidy( plugins => {%UpperText}, source => { "foo.txt" => "abc1" }, dest => { "foo.txt" => "abc1" }, desc => 'one file UpperText errors', errors => qr/non-alpha content/ ); } sub test_multiple_plugin_instances : Tests { my $self = shift; $self->tidy( plugins => { test_plugin('RepeatFoo for txt') => { select => '**/*.txt', times => 2 }, test_plugin('RepeatFoo for foo') => { select => '**/foo.*', times => 3 }, %UpperText }, source => { "foo.txt" => "abc", "foo.dat" => "def", "bar.txt" => "ghi" }, dest => { "foo.txt" => scalar( "ABC" x 6 ), "foo.dat" => scalar( "def" x 3 ), "bar.txt" => scalar( "GHI" x 2 ) } ); } sub test_plugin_order_and_atomicity : Tests { my $self = shift; my @plugins = map { ( %ReverseFoo, test_plugin("UpperText $_") => { select => '**/*.txt' }, test_plugin("CheckUpper $_") => { select => '**/*.txt' }, # note without the weight here this would run first, and the # letters in the photetic words themselves would be reversed test_plugin("AlwaysPhonetic") => { select => '**/*.txt', weight => 51 } ) } ( 1 .. 3 ); my $output = capture_stdout { $self->tidy( plugins => {@plugins}, options => { verbose => 1 }, source => { "foo.txt" => "abc" }, dest => { "foo.txt" => "CHARLIE-BRAVO-ALFA" }, like_output => qr/.*ReverseFoo, .*UpperText 1, .*UpperText 2, .*UpperText 3, .*CheckUpper 1, .*CheckUpper 2, .*CheckUpper 3/ ); }; $self->tidy( plugins => { %AToZ, %ReverseFoo, %CheckUpper }, options => { verbose => 1 }, source => { "foo.txt" => "abc" }, dest => { "foo.txt" => "abc" }, errors => qr/lowercase found/, like_output => qr/foo.txt (.*ReverseFoo, .*CheckUpper)/ ); } sub test_quiet_and_verbose : Tests { my $self = shift; foreach my $state ( 'normal', 'quiet', 'verbose' ) { foreach my $error ( 0, 1 ) { my $root_dir = $self->create_dir( { "foo.txt" => ( $error ? "123" : "abc" ) } ); my $output = capture_stdout { my $ct = Code::TidyAll->new( plugins => {%UpperText}, root_dir => $root_dir, ( $state eq 'normal' ? () : ( $state => 1 ) ) ); $ct->process_paths("$root_dir/foo.txt"); }; if ($error) { like( $output, qr/non-alpha content found/, "non-alpha content found ($state)" ); } else { is( $output, "[tidied] foo.txt\n" ) if $state eq 'normal'; is( $output, "" ) if $state eq 'quiet'; like( $output, qr/purging old backups/, "purging old backups ($state)" ) if $state eq 'verbose'; like( $output, qr/\[tidied\] foo\.txt \(\+Code::TidyAll::Test::Plugin::UpperText\)/s, "foo.txt ($state)" ) if $state eq 'verbose'; } } } } sub test_iterations : Tests { my $self = shift; my $root_dir = $self->create_dir( { "foo.txt" => "abc" } ); my $ct = Code::TidyAll->new( plugins => { test_plugin('RepeatFoo') => { select => '**/foo*', times => 3 } }, root_dir => $root_dir, iterations => 2 ); my $file = "$root_dir/foo.txt"; $ct->process_paths($file); is( read_file($file), scalar( "abc" x 9 ), "3^2 = 9" ); } sub test_caching_and_backups : Tests { my $self = shift; my @chi_or_no_chi = (''); if ( eval "use CHI; 1" ) { push @chi_or_no_chi, "chi"; } foreach my $chi (@chi_or_no_chi) { foreach my $cache_model_class ( qw( Code::TidyAll::CacheModel Code::TidyAll::CacheModel::Shared ) ) { foreach my $no_cache ( 0 .. 1 ) { foreach my $no_backups ( 0 .. 1 ) { my $desc = "(no_cache=$no_cache, no_backups=$no_backups, model=$cache_model_class, cache_class=$chi)"; my $root_dir = $self->create_dir( { "foo.txt" => "abc" } ); my $ct = Code::TidyAll->new( plugins => {%UpperText}, root_dir => $root_dir, cache_model_class => $cache_model_class, ( $no_cache ? ( no_cache => 1 ) : () ), ( $no_backups ? ( no_backups => 1 ) : () ), ( $chi ? ( cache => _chi() ) : () ), ); my $output; my $file = "$root_dir/foo.txt"; my $go = sub { $output = capture_stdout { $ct->process_paths($file) }; }; $go->(); is( read_file($file), "ABC", "first file change $desc" ); is( $output, "[tidied] foo.txt\n", "first output $desc" ); $go->(); if ($no_cache) { is( $output, "[checked] foo.txt\n", "second output $desc" ); } else { is( $output, '', "second output $desc" ); } write_file( $file, "ABCD" ); $go->(); is( $output, "[checked] foo.txt\n", "third output $desc" ); write_file( $file, "def" ); $go->(); is( read_file($file), "DEF", "fourth file change $desc" ); is( $output, "[tidied] foo.txt\n", "fourth output $desc" ); my $backup_dir = $ct->data_dir . "/backups"; mkpath( $backup_dir, 0, 0775 ); my @files; find( { follow => 0, wanted => sub { push @files, $_ if -f }, no_chdir => 1 }, $backup_dir ); if ($no_backups) { ok( @files == 0, "no backup files $desc" ); } else { ok( scalar(@files) == 1 || scalar(@files) == 2, "1 or 2 backup files $desc" ); foreach my $file (@files) { like( $file, qr|\.tidyall\.d/backups/foo\.txt-\d+-\d+\.bak|, "backup filename $desc" ); } } } } } } } sub _chi { my $datastore = {}; return CHI->new( driver => 'Memory', datastore => $datastore ); } sub test_selects_and_ignores : Tests { my $self = shift; my @files = ( "a/foo.pl", "b/foo.pl", "a/foo.pm", "a/bar.pm", "b/bar.pm" ); my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } ); my $ct = Code::TidyAll->new( root_dir => $root_dir, plugins => { test_plugin('UpperText') => { select => '**/*.pl **/*.pm b/bar.pm c/bar.pl', ignore => 'a/foo.pl **/bar.pm c/baz.pl' } } ); cmp_set( [ $ct->find_matched_files() ], [ "$root_dir/a/foo.pm", "$root_dir/b/foo.pl" ] ); cmp_deeply( [ map { $_->name } $ct->plugins_for_path("a/foo.pm") ], [ test_plugin('UpperText') ] ); } sub test_shebang : Tests { my $self = shift; my %files = ( "a/foo.pl" => "#!/usr/bin/perl", "a/foo" => "#!/usr/bin/perl", "a/bar" => "#!/usr/bin/ruby", "a/baz" => "just another perl hacker", "b/foo" => "#!/usr/bin/perl6", "b/bar" => "#!/usr/bin/perl5", "b/baz" => "#!perl -w", "b/bar.pm" => "package b::bar;", ); my $root_dir = $self->create_dir( \%files ); my $ct = Code::TidyAll->new( root_dir => $root_dir, plugins => { test_plugin('UpperText') => { select => '**/*', ignore => '**/*.*', shebang => 'perl perl5', } } ); cmp_set( [ $ct->find_matched_files() ], [ map "$root_dir/$_", qw< a/foo b/bar b/baz > ], ); } sub test_dirs : Tests { my $self = shift; my @files = ( "a/foo.txt", "a/bar.txt", "a/bar.pl", "b/foo.txt" ); my $root_dir = $self->create_dir( { map { $_ => 'hi' } @files } ); foreach my $recursive ( 0 .. 1 ) { my @results; my $output = capture_merged { my $ct = Code::TidyAll->new( plugins => { %UpperText, %ReverseFoo }, root_dir => $root_dir, ( $recursive ? ( recursive => 1 ) : () ) ); @results = $ct->process_paths("$root_dir/a"); }; if ($recursive) { is( @results, 3, "3 results" ); is( scalar( grep { $_->state eq 'tidied' } @results ), 2, "2 tidied" ); like( $output, qr/\[tidied\] a\/foo.txt/ ); like( $output, qr/\[tidied\] a\/bar.txt/ ); is( read_file("$root_dir/a/foo.txt"), "IH" ); is( read_file("$root_dir/a/bar.txt"), "HI" ); is( read_file("$root_dir/a/bar.pl"), "hi" ); is( read_file("$root_dir/b/foo.txt"), "hi" ); } else { is( @results, 1, "1 result" ); is( $results[0]->state, "error", "error" ); like( $output, qr/is a directory/ ); } } } sub test_errors : Tests { my $self = shift; my $root_dir = $self->create_dir( { "foo/bar.txt" => "abc" } ); throws_ok { Code::TidyAll->new( root_dir => $root_dir ) } qr/Missing required/; throws_ok { Code::TidyAll->new( plugins => {} ) } qr/Missing required/; throws_ok { Code::TidyAll->new( root_dir => $root_dir, plugins => {}, bad_param => 1, worse_param => 2 ); } qr/unknown constructor params 'bad_param', 'worse_param'/; throws_ok { Code::TidyAll->new( root_dir => $root_dir, plugins => { 'DoesNotExist' => { select => '**/*' } } )->plugin_objects; } qr/could not load plugin class/; throws_ok { Code::TidyAll->new( root_dir => $root_dir, plugins => { test_plugin('UpperText') => { select => '**/*', bad_option => 1, worse_option => 2 } } )->plugin_objects; } qr/unknown options/; my $ct = Code::TidyAll->new( plugins => {%UpperText}, root_dir => $root_dir ); my $output = capture_stdout { $ct->process_paths("$root_dir/baz/blargh.txt") }; like( $output, qr/baz\/blargh.txt: not a file or directory/, "file not found" ); $output = capture_stdout { $ct->process_paths("$root_dir/foo/bar.txt") }; is( $output, "[tidied] foo/bar.txt\n", "filename output" ); is( read_file("$root_dir/foo/bar.txt"), "ABC", "tidied" ); my $other_dir = realpath( tempdir_simple() ); write_file( "$other_dir/foo.txt", "ABC" ); throws_ok { $ct->process_paths("$other_dir/foo.txt") } qr/not underneath root dir/; } sub test_cli : Tests { my $self = shift; my $output; my @cmd = ( $^X, qw( -Ilib -It/lib bin/tidyall ) ); my $run = sub { system( @cmd, @_ ) }; $output = capture_stdout { $run->("--version"); }; like( $output, qr/tidyall .* on perl/, '--version output' ); $output = capture_stdout { $run->("--help"); }; like( $output, qr/Usage.*Options:/s, '--help output' ); foreach my $conf_name ( "tidyall.ini", ".tidyallrc" ) { subtest( "conf at $conf_name", sub { my $root_dir = $self->create_dir(); my $conf_file = "$root_dir/$conf_name"; write_file( $conf_file, $cli_conf ); write_file( "$root_dir/foo.txt", "hello" ); my $output = capture_stdout { $run->( "$root_dir/foo.txt", "-v" ); }; my ($params_msg) = ( $output =~ /constructing Code::TidyAll with these params:(.*)/ ); ok( defined($params_msg), "params msg" ); like( $params_msg, qr/backup_ttl => '15m'/, 'backup_ttl' ); like( $params_msg, qr/verbose => '?1'?/, 'verbose' ); like( $params_msg, qr/\Qroot_dir => '$root_dir'\E/, 'root_dir' ); like( $output, qr/\[tidied\] foo.txt \(.*RepeatFoo, .*UpperText\)/, 'foo.txt' ); is( read_file("$root_dir/foo.txt"), "HELLOHELLOHELLO", "tidied" ); mkpath( "$root_dir/subdir", 0, 0775 ); write_file( "$root_dir/subdir/foo.txt", "bye" ); write_file( "$root_dir/subdir/foo2.txt", "bye" ); my $cwd = realpath(); capture_stdout { my $dir = pushd "$root_dir/subdir"; system( $^X, "-I$cwd/lib", "-I$cwd/t/lib", "$cwd/bin/tidyall", 'foo.txt' ); }; is( read_file("$root_dir/subdir/foo.txt"), "BYEBYEBYE", "foo.txt tidied" ); is( read_file("$root_dir/subdir/foo2.txt"), "bye", "foo2.txt not tidied" ); # -p / --pipe success # my ( $stdout, $stderr ) = capture { open( my $fh, "|-", @cmd, "-p", "$root_dir/does_not_exist/foo.txt" ); print $fh "echo"; }; is( $stdout, "ECHOECHOECHO", "pipe: stdin tidied" ); unlike( $stderr, qr/\S/, "pipe: no stderr" ); # -p / --pipe error # ( $stdout, $stderr ) = capture { open( my $fh, "|-", @cmd, "--pipe", "$root_dir/foo.txt" ); print $fh "abc1"; }; is( $stdout, "abc1", "pipe: stdin mirrored to stdout" ); like( $stderr, qr/non-alpha content found/ ); } ); } } $cli_conf = ' backup_ttl = 15m verbose = 1 [+Code::TidyAll::Test::Plugin::UpperText] select = **/*.txt [+Code::TidyAll::Test::Plugin::RepeatFoo] select = **/foo* times = 3 '; 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/SVN.pm0000644000000000000000000001034712623441275020573 0ustar rootrootpackage Test::Code::TidyAll::SVN; use Capture::Tiny qw(capture_stdout capture_stderr capture); use Code::TidyAll::SVN::Precommit; use Code::TidyAll::SVN::Util qw(svn_uncommitted_files); use Code::TidyAll::Util qw(dirname mkpath realpath tempdir_simple); use Code::TidyAll; use File::Slurp::Tiny qw(read_file write_file); use IPC::System::Simple qw(run); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; my ( $precommit_hook_template, $tidyall_ini_template ); sub test_svn : Tests { my ($self) = @_; $self->require_executable('svn'); my $temp_dir = tempdir_simple; my $repo_dir = "$temp_dir/repo"; my $src_dir = "$temp_dir/src"; my $work_dir = "$temp_dir/work"; my $hook_log = "$temp_dir/hook.log"; my ( $stdout, $stderr ); my $log_contains = sub { my $regex = shift; like( read_file($hook_log), $regex ); }; my $clear_log = sub { run("cat /dev/null > $hook_log"); }; my $committed = sub { $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) }; unlike( $stdout, qr/\S/, "committed" ); }; my $uncommitted = sub { $stdout = capture_stdout { system( sprintf( 'svn status %s', $work_dir ) ) }; like( $stdout, qr/^M/, "uncommitted" ); }; run("svnadmin create $repo_dir"); my $hooks_dir = "$repo_dir/hooks"; ok( -d $hooks_dir, "$hooks_dir exists" ); mkpath( $src_dir, 0, 0775 ); write_file( "$src_dir/foo.txt", "abc" ); run( sprintf( 'svn -q import %s file://%s/myapp/trunk -m "import"', $src_dir, $repo_dir ) ); run( sprintf( 'svn -q checkout file://%s/myapp/trunk %s', $repo_dir, $work_dir ) ); is( read_file("$work_dir/foo.txt"), "abc", "checkout and import ok" ); cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" ); my $precommit_hook_file = "$hooks_dir/pre-commit"; my $precommit_hook = sprintf( $precommit_hook_template, realpath("lib"), $hook_log ); write_file( $precommit_hook_file, $precommit_hook ); chmod( 0775, $precommit_hook_file ); write_file( "$work_dir/foo.txt", "abc " ); mkpath( "$work_dir/bar", 0, 0775 ); run( sprintf( 'svn add %s/bar', $work_dir ) ); cmp_deeply( [ svn_uncommitted_files($work_dir) ], [ re("foo.txt") ], "one uncommitted file" ); $stderr = capture_stderr { run( sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar', $work_dir, $work_dir ) ); }; unlike( $stderr, qr/\S/ ); $log_contains->(qr|could not find.*upwards from 'myapp/trunk/foo.txt'|); $clear_log->(); $committed->(); cmp_deeply( [ svn_uncommitted_files($work_dir) ], [], "no uncommitted files" ); write_file( "$work_dir/tidyall.ini", sprintf($tidyall_ini_template) ); run( sprintf( 'svn -q add %s/tidyall.ini', $work_dir ) ); cmp_deeply( [ svn_uncommitted_files($work_dir) ], [ re("tidyall.ini") ], "one uncommitted file" ); run( sprintf( 'svn -q commit -m "added" %s/tidyall.ini', $work_dir ) ); write_file( "$work_dir/foo.txt", "abc" ); $stderr = capture_stderr { system( sprintf( 'svn -q commit -m "changed" %s/foo.txt', $work_dir ) ) }; like( $stderr, qr/1 file did not pass tidyall check/ ); like( $stderr, qr/needs tidying/ ); $uncommitted->(); write_file( "$work_dir/foo.txt", "ABC" ); write_file( "$work_dir/bar.dat", "123" ); run( sprintf( 'svn -q add %s/bar.dat', $work_dir ) ); $stderr = capture_stderr { system( sprintf( 'svn -q commit -m "changed" %s/foo.txt %s/bar.dat', $work_dir, $work_dir ) ); }; unlike( $stderr, qr/\S/ ); $committed->(); write_file( "$work_dir/foo.txt", "def" ); $stderr = capture_stderr { system( sprintf( 'svn -q commit -m "NO TIDYALL - emergency fix!" %s/foo.txt', $work_dir ) ); }; unlike( $stderr, qr/\S/ ); $committed->(); } $precommit_hook_template = '#!' . $^X . "\n" . <<'EOF'; use lib qw(%s); use Code::TidyAll::SVN::Precommit; use Log::Any::Adapter (File => "%s"); use strict; use warnings; Code::TidyAll::SVN::Precommit->check( extra_conf_files => ["perlcriticrc"], tidyall_options => { verbose => 1 } ); EOF $tidyall_ini_template = <<'EOF'; [+Code::TidyAll::Test::Plugin::UpperText] select = **/*.txt EOF Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Util.pm0000644000000000000000000000073412623441275021041 0ustar rootrootpackage Test::Code::TidyAll::Util; use Code::TidyAll::Util qw(dirname tempdir_simple); use IPC::System::Simple qw(capturex); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; sub test_tempdir_simple : Tests { my $dir = capturex( "$^X", "-I", "lib", "-MCode::TidyAll::Util", "-e", "print Code::TidyAll::Util::tempdir_simple " ); ok( -d dirname($dir), "parent exists" ); ok( !-d $dir, "dir does not exist" ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin.pm0000644000000000000000000000511212623441275021355 0ustar rootrootpackage Test::Code::TidyAll::Plugin; use Capture::Tiny qw(capture); use Code::TidyAll::Util qw(pushd tempdir_simple); use Code::TidyAll; use File::Slurp::Tiny qw(read_file); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; use Test::Differences qw( eq_or_diff ); use autodie; __PACKAGE__->SKIP_CLASS("Virtual base class"); my $Test = Test::Builder->new; sub startup : Tests(startup => no_plan) { my $self = shift; $self->{root_dir} = tempdir_simple(); } sub plugin_class { my ($self) = @_; return ( split( '::', ref($self) ) )[-1]; } sub test_filename {'foo.txt'} sub tidyall { my ( $self, %p ) = @_; my $extra = $self->_extra_path(); local $ENV{PATH} = $ENV{PATH}; $ENV{PATH} .= q{:} . $extra if $extra; my $plugin_class = $self->plugin_class; my %plugin_conf = ( $plugin_class => { select => '*', %{ $p{conf} || {} } } ); my $ct = Code::TidyAll->new( quiet => 1, root_dir => $self->{root_dir}, plugins => \%plugin_conf, ); my ( $source, $result, $output, $error ); if ( $p{source} ) { $source = $p{source}; $source =~ s/\\n/\n/g; ( $output, $error ) = capture { $result = $ct->process_source( $source, $self->test_filename ) }; } elsif ( $p{source_file} ) { ( $output, $error ) = capture { $result = $ct->process_file( $p{source_file} ) }; } else { die 'The tidyall() method requires a source or source_file parameter'; } my $desc = $p{desc} || $p{source} || $p{source_file}; $Test->diag($output) if $output && $ENV{TEST_VERBOSE}; $Test->diag($error) if $error && $ENV{TEST_VERBOSE}; if ( my $expect_tidy = $p{expect_tidy} ) { $expect_tidy =~ s/\\n/\n/g; is( $result->state, 'tidied', "state=tidied [$desc]" ); eq_or_diff( $result->new_contents, $expect_tidy, "new contents [$desc]" ); is( $result->error, undef, "no error [$desc]" ); } elsif ( my $expect_ok = $p{expect_ok} ) { is( $result->state, 'checked', "state=checked [$desc]" ); is( $result->error, undef, "no error [$desc]" ); if ( $result->new_contents ) { $source ||= read_file( $p{source_file} ); is( $result->new_contents, $source, "same contents [$desc]" ); } } elsif ( my $expect_error = $p{expect_error} ) { is( $result->state, 'error', "state=error [$desc]" ); like( $result->error || '', $expect_error, "error message [$desc]" ); } } sub _extra_path { return; } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Conf.pm0000644000000000000000000000271212623441275021007 0ustar rootrootpackage Test::Code::TidyAll::Conf; use Code::TidyAll; use Code::TidyAll::Util qw(dirname tempdir_simple); use File::Slurp::Tiny qw(read_file write_file); use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; my $conf1; sub test_conf_file : Tests { my $self = shift; my $root_dir = tempdir_simple(); my $conf_file = "$root_dir/tidyall.ini"; write_file( $conf_file, $conf1 ); my $ct = Code::TidyAll->new_from_conf_file($conf_file); my %expected = ( backup_ttl => '5m', backup_ttl_secs => '300', no_backups => undef, no_cache => 1, root_dir => dirname($conf_file), data_dir => "$root_dir/.tidyall.d", plugins => { '+Code::TidyAll::Test::Plugin::UpperText' => { select => '**/*.txt' }, '+Code::TidyAll::Test::Plugin::RepeatFoo' => { select => '**/foo* **/bar*', times => 3 } } ); while ( my ( $method, $value ) = each(%expected) ) { cmp_deeply( $ct->$method, $value, "$method" ); } my $conf2 = $conf1; $conf2 =~ s/times/timez/; write_file( $conf_file, $conf2 ); throws_ok { my $ct = Code::TidyAll->new_from_conf_file($conf_file)->plugin_objects } qr/unknown option 'timez'/; } $conf1 = ' backup_ttl = 5m no_cache = 1 [+Code::TidyAll::Test::Plugin::UpperText] select = **/*.txt [+Code::TidyAll::Test::Plugin::RepeatFoo] select = **/foo* select = **/bar* times = 3 '; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Zglob.pm0000644000000000000000000000202012623441275021167 0ustar rootrootpackage Test::Code::TidyAll::Zglob; use File::Zglob; use Test::Class::Most parent => 'Code::TidyAll::Test::Class'; use Code::TidyAll::Util::Zglob qw(zglob_to_regex); sub test_match : Tests { my ( $zglob, $regex ); $zglob = "**/*.txt"; $regex = zglob_to_regex($zglob); foreach my $path (qw(foo.txt foo/baz.txt foo/bar/baz.txt)) { like( $path, $regex, "$path matches $zglob" ); } foreach my $path (qw(foo/bar/baz.tx)) { unlike( $path, $regex, "$path does not match $zglob" ); } $zglob = "**/*"; $regex = zglob_to_regex($zglob); foreach my $path (qw(foo foo.txt foo/bar foo/baz.txt)) { like( $path, $regex, "$path matches $zglob" ); } $zglob = "foo/**/*.txt"; $regex = zglob_to_regex($zglob); foreach my $path (qw(foo/baz.txt foo/bar/baz.txt foo/bar/baz/blargh.txt)) { like( $path, $regex, "$path matches $zglob" ); } foreach my $path (qw(foo.txt foo/bar/baz.tx)) { unlike( $path, $regex, "$path does not match $zglob" ); } } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/0000755000000000000000000000000012623441275021020 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/MasonTidy.pm0000644000000000000000000000163712623441275023274 0ustar rootrootpackage Test::Code::TidyAll::Plugin::MasonTidy; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; my $source; $source = '%if($foo) {\n%bar(1,2);\n%}'; $self->tidyall( source => $source, conf => { argv => '-m 1' }, expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }' ); $self->tidyall( source => $source, conf => { argv => '-m 1 --perltidy-argv="-pt=2 -i=3"' }, expect_tidy => '% if ($foo) {\n% bar(1, 2);\n% }' ); $self->tidyall( source => $source, conf => { argv => '-m 2 --perltidy-line-argv=" "' }, expect_tidy => '% if ($foo) {\n% bar( 1, 2 );\n% }' ); $self->tidyall( source => $source, conf => { argv => '-m 1 --badoption' }, expect_error => qr/Usage/ ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PodChecker.pm0000644000000000000000000000263112623441275023367 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PodChecker; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; $self->tidyall( source => '=head1 DESCRIPTION\n\nHello', expect_ok => 1, desc => 'ok', ); $self->tidyall( source => '=head1 METHODS\n\n=over\n\n=item * foo\n\n', expect_error => qr/without closing =back/, desc => 'error', ); $self->tidyall( source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n', expect_ok => 1, desc => 'ok - empty section, no warnings', ); $self->tidyall( source => '=head1 DESCRIPTION\n\n=head1 METHODS\n\n', conf => { warnings => 1 }, expect_error => qr/empty section in previous paragraph/, desc => 'error - empty section, warnings=1', ); $self->tidyall( source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah', conf => { warnings => 1 }, expect_ok => 1, desc => 'ok - duplicate section, warnings=1', ); $self->tidyall( source => '=head1 DESCRIPTION\n\nblah blah\n\n=head1 DESCRIPTION\n\nblah blah', conf => { warnings => 2 }, expect_error => qr/multiple occurrence/, desc => 'error - duplicate section, warnings=2', ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/JSLint.pm0000644000000000000000000000175112623441275022525 0ustar rootrootpackage Test::Code::TidyAll::Plugin::JSLint; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_filename {'foo.js'} sub _extra_path { 'node_modules/.bin'; } sub test_main : Tests { my $self = shift; $self->require_executable('node'); $self->tidyall( source => 'var my_object = {};', expect_ok => 1, desc => 'ok', ); $self->tidyall( source => 'while (true) {\nvar i = 5;\n}', expect_error => qr/Expected 'var' at column 5/, desc => 'error - bad indentation' ); $self->tidyall( source => 'var i; while (true) {\ni = 5;\n}', conf => { argv => '--white' }, expect_ok => 1, desc => 'ok - bad indentation, --white' ); $self->tidyall( source => 'var my_object = {};', conf => { argv => '--badoption' }, expect_error => qr/Usage/, desc => 'error - bad option' ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/SortLines.pm0000644000000000000000000000046612623441275023306 0ustar rootrootpackage Test::Code::TidyAll::Plugin::SortLines; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; $self->tidyall( source => "c\nb\na\n", expect_tidy => "a\nb\nc\n" ); $self->tidyall( source => "\n\na\n\n\n", expect_tidy => "a\n" ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PHPCodeSniffer.pm0000644000000000000000000000140712623441275024117 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PHPCodeSniffer; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_filename {'foo.php'} sub _extra_path { 'php5/usr/bin'; } sub test_main : Tests { my $self = shift; $self->require_executable('php'); my $source = ''; $self->tidyall( source => $source, conf => { argv => "--severity=6" }, expect_ok => 1, ); $self->tidyall( source => $source, conf => { argv => "--severity=3" }, expect_error => qr/Missing .* doc/, ); $self->tidyall( source => $source, conf => { argv => "--blahblah" }, expect_error => qr/not known/, ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/CSSUnminifier.pm0000644000000000000000000000122412623441275024033 0ustar rootrootpackage Test::Code::TidyAll::Plugin::CSSUnminifier; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub _extra_path { 'node_modules/.bin'; } sub test_main : Tests { my $self = shift; $self->require_executable('node'); my $source = 'body {\nfont-family:helvetica;\nfont-size:15pt;\n}'; $self->tidyall( source => $source, expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n' ); $self->tidyall( source => $source, conf => { argv => '-w=2' }, expect_tidy => 'body {\n font-family: helvetica;\n font-size: 15pt;\n}\n' ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PerlTidySweet.pm0000644000000000000000000000221612623441275024123 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PerlTidySweet; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; my $source = 'if ( $foo) {\nmy $bar = $baz;\n}\n'; $self->tidyall( conf => { argv => '-npro' }, source => $source, expect_tidy => 'if ($foo) {\n my $bar = $baz;\n}\n' ); $self->tidyall( conf => { argv => '-npro -bl' }, source => $source, expect_tidy => 'if ($foo)\n{\n my $bar = $baz;\n}\n' ); $self->tidyall( conf => { argv => '-npro' }, source => 'if ($foo) {\n my $bar = $baz;\n}\n', expect_ok => 1 ); $self->tidyall( source => 'method foo ($x,$y){\nmy $x=$self->x;}\n', expect_tidy => 'method foo ($x,$y) {\n my $x = $self->x;\n}\n', ); $self->tidyall( source => 'if ($foo) {\n my $bar = $baz;\n', expect_error => qr/Final nesting depth/ ); $self->tidyall( conf => { argv => '--badoption' }, source => $source, expect_error => qr/Unknown option: badoption/ ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PodTidy.pm0000644000000000000000000000437612623441275022744 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PodTidy; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; my $source = '=head1 DESCRIPTION There are a lot of great code tidiers and validators out there. C makes them available from a single unified interface. You can run C on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed. '; $self->tidyall( source => $source, expect_tidy => '=head1 DESCRIPTION There are a lot of great code tidiers and validators out there. C makes them available from a single unified interface. You can run C on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed. ', desc => 'tidy - defaults', ); $self->tidyall( source => '=head1 DESCRIPTION There are a lot of great code tidiers and validators out there. C makes them available from a single unified interface. You can run C on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed. ', expect_ok => 1, desc => 'ok - defaults', ); $self->tidyall( source => $source, conf => { columns => 30 }, expect_tidy => '=head1 DESCRIPTION There are a lot of great code tidiers and validators out there. C makes them available from a single unified interface. You can run C on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed. ', desc => 'tidy - columns = 30', ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PodSpell.pm0000644000000000000000000000247612623441275023111 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PodSpell; use File::Slurp::Tiny qw(write_file); use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_filename {'Foo.pod'} sub test_main : Tests { my $self = shift; my $dict_file = $self->{root_dir} . "/.ispell_english"; $self->tidyall( source => '=head SUMMARY\n\nthe quick brown fox jumped over the lazy dogs', expect_ok => 1, desc => 'ok', ); $self->tidyall( source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs', expect_error => qr/unrecognized words:\nbrowwn\nlazeey/, desc => 'spelling mistakes', ); write_file( $dict_file, "browwn\n" ); $self->tidyall( source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs', conf => { ispell_argv => "-p $dict_file" }, expect_error => qr/unrecognized words:\nlazeey/, desc => 'spelling mistakes, one in dictionary', ); write_file( $dict_file, "browwn\nlazeey\n" ); $self->tidyall( source => '=head SUMMARY\n\nthe quick browwn fox jumped over the lazeey dogs', conf => { ispell_argv => "-p $dict_file" }, expect_ok => 1, desc => 'spelling mistakes, all in dictionary', ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PerlTidy.pm0000644000000000000000000000201112623441275023104 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PerlTidy; use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; my $source = 'if ( $foo) {\nmy $bar = $baz;\n}\n'; $self->tidyall( conf => { argv => '-npro' }, source => $source, expect_tidy => 'if ($foo) {\n my $bar = $baz;\n}\n' ); $self->tidyall( conf => { argv => '-npro -bl' }, source => $source, expect_tidy => 'if ($foo)\n{\n my $bar = $baz;\n}\n' ); $self->tidyall( conf => { argv => '-npro' }, source => 'if ($foo) {\n my $bar = $baz;\n}\n', expect_ok => 1 ); $self->tidyall( conf => { argv => '-npro' }, source => 'if ($foo) {\n my $bar = $baz;\n', expect_error => qr/Final nesting depth/ ); $self->tidyall( conf => { argv => '-npro --badoption' }, source => $source, expect_error => qr/Unknown option: badoption/ ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/JSHint.pm0000644000000000000000000000402512623441275022516 0ustar rootrootpackage Test::Code::TidyAll::Plugin::JSHint; use File::Slurp::Tiny qw(write_file); use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_filename {'foo.js'} sub _extra_path { 'node_modules/.bin'; } sub test_main : Tests { my $self = shift; $self->require_executable('node'); $self->tidyall( source => 'var my_object = {};', expect_ok => 1, desc => 'ok - camelcase', ); $self->tidyall( source => 'while (day)\n shuffle();', expect_ok => 1, desc => 'ok no brace', ); $self->tidyall( source => 'var my_object = new Object();', expect_error => qr/object literal notation/, desc => 'error - object literal', ); $self->tidyall( source => 'var my_object = {};', conf => { options => 'camelcase' }, expect_error => qr/not in camel case/, desc => 'error - camel case - options=camelcase', ); $self->tidyall( source => 'var my_object = {};', conf => { options => 'camelcase curly' }, expect_error => qr/not in camel case/, desc => 'error - camel case - options=camelcase,curly', ); $self->tidyall( source => 'while (day)\n shuffle();', conf => { options => 'camelcase curly' }, expect_error => qr/Expected \'\{/, desc => 'error - curly - options=camelcase,curly', ); my $rc_file = $self->{root_dir} . "/jshint.json"; write_file( $rc_file, '{"camelcase": true}' ); $self->tidyall( source => 'var my_object = {};', conf => { argv => "--config $rc_file" }, expect_error => qr/not in camel case/, desc => 'error - camelcase - conf file', ); $self->tidyall( source => 'var my_object = {};', conf => { argv => "--badoption" }, expect_error => qr/Unknown option/, desc => 'error - bad option' ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/JSBeautify.pm0000644000000000000000000000334412623441275023367 0ustar rootrootpackage Test::Code::TidyAll::Plugin::JSBeautify; use Encode qw(encode); use File::Slurp::Tiny qw(write_file); use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; use Test::Warnings qw(warnings); sub _extra_path { 'node_modules/.bin'; } sub test_main : Tests { my $self = shift; $self->require_executable('node'); my $source = 'sp.toggleResult=function(id){foo(id)}'; $self->tidyall( source => $source, expect_tidy => 'sp.toggleResult = function(id) {\n foo(id)\n}', ); $self->tidyall( source => $source, conf => { argv => '--indent-size 3 --brace-style expand' }, expect_tidy => 'sp.toggleResult = function(id)\n{\n foo(id)\n}', ); } sub test_utf8 : Tests { my $self = shift; my $contents = encode( 'UTF-8', qq{var unicode = "Unicode - \x{263a}";} ); my $expect = encode( 'UTF-8', qq{var unicode = "Unicode - \x{263a}";} ); local $SIG{__WARN__} = sub { Carp::cluck(@_) }; is_deeply( [ warnings { $self->tidyall( source => $contents, expect_tidy => $expect, desc => 'tidy UTF-8 from string', ); } ], [], 'no warnings tidying UTF-8 source' ); my $file = $self->{root_dir} . '/test.js'; write_file( $file, $contents ); is_deeply( [ warnings { $self->tidyall( source_file => $file, expect_tidy => $expect, desc => 'tidy UTF-8 from file', ); } ], [], 'no warnings tidying UTF-8 source' ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Test/Code/TidyAll/Plugin/PerlCritic.pm0000644000000000000000000000253312623441275023421 0ustar rootrootpackage Test::Code::TidyAll::Plugin::PerlCritic; use File::Slurp::Tiny qw(write_file); use Test::Class::Most parent => 'Test::Code::TidyAll::Plugin'; sub test_main : Tests { my $self = shift; my $rc_file = $self->{root_dir} . "/perlcriticrc"; write_file( $rc_file, "only = 1\nseverity = 1\n[TestingAndDebugging::RequireUseStrict]\n" ); $self->tidyall( source => 'my $foo = 5\n', conf => { argv => "--profile $rc_file" }, expect_error => qr/Code before strictures/, ); $self->tidyall( source => 'use strict;\nuse warnings;\nmy $foo = 5\n', conf => { argv => "--profile $rc_file" }, expect_ok => 1, ); write_file( $rc_file, "only = 1\nseverity = 1\n[CodeLayout::ProhibitHardTabs]\n" ); $self->tidyall( source => 'my $foo = 5\n', conf => { argv => "--profile $rc_file" }, expect_ok => 1, ); $self->tidyall( source => 'my $foo = 5\n', conf => { argv => "--profile $rc_file --badoption" }, expect_error => qr/Unknown option: badoption/ ); write_file( $rc_file, "badconfig = 1\n" ); $self->tidyall( source => 'my $foo = 5\n', conf => { argv => "--profile $rc_file" }, expect_error => qr/"badconfig" is not a supported option/ ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/0000755000000000000000000000000012623441275015301 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/0000755000000000000000000000000012623441275016643 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/0000755000000000000000000000000012623441275017562 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/0000755000000000000000000000000012623441275021020 5ustar rootrootCode-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm0000644000000000000000000000040612623441275023435 0ustar rootrootpackage Code::TidyAll::Test::Plugin::ReverseFoo; use File::Slurp::Tiny qw(read_file write_file); use Moo; extends 'Code::TidyAll::Plugin'; sub transform_file { my ( $self, $file ) = @_; write_file( $file, scalar( reverse( read_file($file) ) ) ); } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/UpperText.pm0000644000000000000000000000042712623441275023321 0ustar rootrootpackage Code::TidyAll::Test::Plugin::UpperText; use Moo; extends 'Code::TidyAll::Plugin'; sub transform_source { my ( $self, $source ) = @_; if ( $source =~ /^[A-Z]*$/i ) { return uc($source); } else { die "non-alpha content found"; } } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/CheckUpper.pm0000644000000000000000000000031212623441275023403 0ustar rootrootpackage Code::TidyAll::Test::Plugin::CheckUpper; use Moo; extends 'Code::TidyAll::Plugin'; sub validate_source { my ( $self, $source ) = @_; die "lowercase found" if $source =~ /[a-z]/; } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/AlwaysPhonetic.pm0000644000000000000000000000131212623441275024305 0ustar rootrootpackage Code::TidyAll::Test::Plugin::AlwaysPhonetic; use Moo; extends 'Code::TidyAll::Plugin'; my %phonetic = ( A => 'ALFA', B => 'BRAVO', C => 'CHARLIE', D => 'DELTA', E => 'ECHO', F => 'FOXTROT', G => 'GOLF', H => 'HOTEL', I => 'INDIA', J => 'JULIETT', K => 'KILO', L => 'LIMA', M => 'MIKE', N => 'NOVEMBER', O => 'OSCAR', P => 'PAPA', Q => 'QUEBEC', R => 'ROMEO', S => 'SIERRA', T => 'TANGO', U => 'UNIFORM', V => 'VICTOR', W => 'WHISKEY', X => 'X-RAY', Y => 'YANKEE', Z => 'ZULU', ); sub transform_source { my ( $self, $source ) = @_; return join '-', map { $phonetic{$_} } split //, $source; } Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm0000644000000000000000000000050012623441275023235 0ustar rootrootpackage Code::TidyAll::Test::Plugin::RepeatFoo; use File::Slurp::Tiny qw(read_file write_file); use Moo; extends 'Code::TidyAll::Plugin'; has 'times' => ( is => 'ro' ); sub transform_source { my ( $self, $source ) = @_; my $times = $self->times || die "no times specified"; return $source x $times; } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Plugin/AToZ.pm0000644000000000000000000000045512623441275022177 0ustar rootrootpackage Code::TidyAll::Test::Plugin::AToZ; use Moo; extends 'Code::TidyAll::Plugin'; sub preprocess_source { my ( $self, $source ) = @_; $source =~ tr/Aa/Zz/; return $source; } sub postprocess_source { my ( $self, $source ) = @_; $source =~ tr/Zz/Aa/; return $source; } 1; Code-TidyAll-0.32~dfsg/t/lib/Code/TidyAll/Test/Class.pm0000644000000000000000000000053512623441275021170 0ustar rootrootpackage Code::TidyAll::Test::Class; use File::Which qw( which ); use Test::Class::Most; use strict; use warnings; __PACKAGE__->SKIP_CLASS("abstract base class"); sub require_executable { my $self = shift; my $exe = shift; which($exe) or $self->FAIL_ALL("These tests require that $exe be in your \$PATH"); return; } 1; Code-TidyAll-0.32~dfsg/t/author-Util.t0000644000000000000000000000037612623441275016271 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Util; Test::Code::TidyAll::Util->runtests; Code-TidyAll-0.32~dfsg/t/author-self-tidyall.t0000644000000000000000000000052712623441275017743 0ustar rootroot BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::Code::TidyAll; use Test::More; plan skip_all => 'This plugin requires Perl 5.10+' unless $] >= 5.010; tidyall_ok( verbose => 1 ); done_testing(); Code-TidyAll-0.32~dfsg/t/Basic.t0000644000000000000000000000014712623441275015071 0ustar rootroot#!/usr/bin/perl use lib 't/lib'; use Test::Code::TidyAll::Basic; Test::Code::TidyAll::Basic->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-PerlTidy.t0000644000000000000000000000042612623441275020340 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PerlTidy; Test::Code::TidyAll::Plugin::PerlTidy->runtests; Code-TidyAll-0.32~dfsg/t/author-mojibake.t0000644000000000000000000000040212623441275017123 0ustar rootroot#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings qw(all); use Test::More; use Test::Mojibake; all_files_encoding_ok(); Code-TidyAll-0.32~dfsg/t/author-Plugin-MasonTidy.t0000644000000000000000000000043012623441275020506 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::MasonTidy; Test::Code::TidyAll::Plugin::MasonTidy->runtests; Code-TidyAll-0.32~dfsg/t/00-report-prereqs.dd0000644000000000000000000001116312623441275017403 0ustar rootrootdo { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '0' } }, 'develop' => { 'requires' => { 'CHI' => '0', 'Code::TidyAll' => '0', 'Code::TidyAll::Plugin::Perl::AlignMooseAttributes' => '0', 'JSON::MaybeXS' => '0', 'Mason::Tidy' => '0', 'Mason::Tidy::App' => '0', 'Perl::Critic' => '1.123', 'Perl::Critic::Policy::Moose::RequireMakeImmutable' => '0', 'Perl::Tidy' => '20150815', 'Perl::Tidy::Sweetened' => '1.00', 'Pod::Checker' => '0', 'Pod::Spell' => '0', 'Pod::Tidy' => '0', 'SVN::Look' => '0', 'Test::CPAN::Changes' => '0.19', 'Test::Mojibake' => '0', 'Test::More' => '0.88', 'Test::NoTabs' => '0', 'Test::Pod' => '1.41', 'Test::Spelling' => '0.12', 'Test::Version' => '1' } }, 'runtime' => { 'requires' => { 'Capture::Tiny' => '0', 'Config::INI::Reader' => '0', 'Cwd' => '0', 'Data::Dumper' => '0', 'Date::Format' => '0', 'Digest::SHA' => '0', 'Exporter' => '0', 'File::Basename' => '0', 'File::Find' => '0', 'File::Path' => '0', 'File::Slurp::Tiny' => '0', 'File::Spec::Functions' => '0', 'File::Temp' => '0', 'File::Which' => '0', 'File::Zglob' => '0', 'Getopt::Long' => '0', 'Guard' => '0', 'IPC::Run3' => '0', 'IPC::System::Simple' => '0', 'List::MoreUtils' => '0', 'Log::Any' => '0', 'Moo' => '0', 'Moo::Role' => '0', 'Scalar::Util' => '0', 'Test::Builder' => '0', 'Text::Diff' => '0', 'Text::Diff::Table' => '0', 'Text::ParseWords' => '0', 'Time::Duration::Parse' => '0', 'Try::Tiny' => '0', 'base' => '0', 'constant' => '0', 'strict' => '0', 'vars' => '0', 'warnings' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'Encode' => '0', 'ExtUtils::MakeMaker' => '0', 'File::Spec' => '0', 'Test::Class::Most' => '0', 'Test::Differences' => '0', 'Test::More' => '0.96', 'Test::Warnings' => '0', 'autodie' => '0', 'lib' => '0' } } }; $x; }Code-TidyAll-0.32~dfsg/t/author-Plugin-PHPCodeSniffer.t0000644000000000000000000000044212623441275021341 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PHPCodeSniffer; Test::Code::TidyAll::Plugin::PHPCodeSniffer->runtests; Code-TidyAll-0.32~dfsg/t/release-cpan-changes.t0000644000000000000000000000052112623441275020011 0ustar rootroot#!perl BEGIN { unless ($ENV{RELEASE_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for release candidate testing'); } } use strict; use warnings; use Test::More 0.96 tests => 2; use_ok('Test::CPAN::Changes'); subtest 'changes_ok' => sub { changes_file_ok('Changes'); }; done_testing(); Code-TidyAll-0.32~dfsg/t/author-Plugin-PerlCritic.t0000644000000000000000000000043212623441275020641 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PerlCritic; Test::Code::TidyAll::Plugin::PerlCritic->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-PodChecker.t0000644000000000000000000000043212623441275020610 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PodChecker; Test::Code::TidyAll::Plugin::PodChecker->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-JSBeautify.t0000644000000000000000000000045312623441275020611 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use lib 't/lib'; use Test::Code::TidyAll::Plugin::JSBeautify; Test::Code::TidyAll::Plugin::JSBeautify->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-PodTidy.t0000644000000000000000000000042412623441275020156 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::PodTidy; Test::Code::TidyAll::Plugin::PodTidy->runtests; Code-TidyAll-0.32~dfsg/t/author-test-version.t0000644000000000000000000000107112623441275020007 0ustar rootroot BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use strict; use warnings; use Test::More; # generated by Dist::Zilla::Plugin::Test::Version 1.05 use Test::Version; my @imports = qw( version_all_ok ); my $params = { is_strict => 1, has_version => 1, multiple => 0, }; push @imports, $params if version->parse( $Test::Version::VERSION ) >= version->parse('1.002'); Test::Version->import(@imports); version_all_ok; done_testing; Code-TidyAll-0.32~dfsg/t/Conf.t0000644000000000000000000000014512623441275014733 0ustar rootroot#!/usr/bin/perl use lib 't/lib'; use Test::Code::TidyAll::Conf; Test::Code::TidyAll::Conf->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-SortLines.t0000644000000000000000000000043012623441275020521 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::SortLines; Test::Code::TidyAll::Plugin::SortLines->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-PerlTidySweet.t0000644000000000000000000000057612623441275021356 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use Test::More; plan skip_all => 'This plugin requires Perl 5.10+' unless $] >= 5.010; use lib 't/lib'; use Test::Code::TidyAll::Plugin::PerlTidySweet; Test::Code::TidyAll::Plugin::PerlTidySweet->runtests; Code-TidyAll-0.32~dfsg/t/author-Plugin-JSHint.t0000644000000000000000000000042212623441275017737 0ustar rootroot#!/usr/bin/perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { require Test::More; Test::More::plan(skip_all => 'these tests are for testing by the author'); } } use lib 't/lib'; use Test::Code::TidyAll::Plugin::JSHint; Test::Code::TidyAll::Plugin::JSHint->runtests; Code-TidyAll-0.32~dfsg/META.yml0000644000000000000000000005024012623441275014670 0ustar rootroot--- abstract: 'Engine for tidyall, your all-in-one code tidier and validator' author: - 'Jonathan Swartz ' - 'Dave Rolsky ' build_requires: Encode: '0' ExtUtils::MakeMaker: '0' File::Spec: '0' Test::Class::Most: '0' Test::Differences: '0' Test::More: '0.96' Test::Warnings: '0' autodie: '0' lib: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 5.041, CPAN::Meta::Converter version 2.150005' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Code-TidyAll no_index: file: - lib/Code/TidyAll/Util.pm provides: Code::TidyAll: file: lib/Code/TidyAll.pm version: '0.32' Code::TidyAll::Cache: file: lib/Code/TidyAll/Cache.pm version: '0.32' Code::TidyAll::CacheModel: file: lib/Code/TidyAll/CacheModel.pm version: '0.32' Code::TidyAll::CacheModel::Shared: file: lib/Code/TidyAll/CacheModel/Shared.pm version: '0.32' Code::TidyAll::Config::INI::Reader: file: lib/Code/TidyAll/Config/INI/Reader.pm version: '0.32' Code::TidyAll::Git::Precommit: file: lib/Code/TidyAll/Git/Precommit.pm version: '0.32' Code::TidyAll::Git::Prereceive: file: lib/Code/TidyAll/Git/Prereceive.pm version: '0.32' Code::TidyAll::Git::Util: file: lib/Code/TidyAll/Git/Util.pm version: '0.32' Code::TidyAll::Plugin: file: lib/Code/TidyAll/Plugin.pm version: '0.32' Code::TidyAll::Plugin::CSSUnminifier: file: lib/Code/TidyAll/Plugin/CSSUnminifier.pm version: '0.32' Code::TidyAll::Plugin::DiffOnTidyError: file: lib/Code/TidyAll/Plugin/DiffOnTidyError.pm version: '0.32' Code::TidyAll::Plugin::JSBeautify: file: lib/Code/TidyAll/Plugin/JSBeautify.pm version: '0.32' Code::TidyAll::Plugin::JSHint: file: lib/Code/TidyAll/Plugin/JSHint.pm version: '0.32' Code::TidyAll::Plugin::JSLint: file: lib/Code/TidyAll/Plugin/JSLint.pm version: '0.32' Code::TidyAll::Plugin::JSON: file: lib/Code/TidyAll/Plugin/JSON.pm version: '0.32' Code::TidyAll::Plugin::MasonTidy: file: lib/Code/TidyAll/Plugin/MasonTidy.pm version: '0.32' Code::TidyAll::Plugin::PHPCodeSniffer: file: lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm version: '0.32' Code::TidyAll::Plugin::PerlCritic: file: lib/Code/TidyAll/Plugin/PerlCritic.pm version: '0.32' Code::TidyAll::Plugin::PerlTidy: file: lib/Code/TidyAll/Plugin/PerlTidy.pm version: '0.32' Code::TidyAll::Plugin::PerlTidySweet: file: lib/Code/TidyAll/Plugin/PerlTidySweet.pm version: '0.32' Code::TidyAll::Plugin::PodChecker: file: lib/Code/TidyAll/Plugin/PodChecker.pm version: '0.32' Code::TidyAll::Plugin::PodSpell: file: lib/Code/TidyAll/Plugin/PodSpell.pm version: '0.32' Code::TidyAll::Plugin::PodTidy: file: lib/Code/TidyAll/Plugin/PodTidy.pm version: '0.32' Code::TidyAll::Plugin::SortLines: file: lib/Code/TidyAll/Plugin/SortLines.pm version: '0.32' Code::TidyAll::Result: file: lib/Code/TidyAll/Result.pm version: '0.32' Code::TidyAll::Role::Tempdir: file: lib/Code/TidyAll/Role/Tempdir.pm version: '0.32' Code::TidyAll::SVN::Precommit: file: lib/Code/TidyAll/SVN/Precommit.pm version: '0.32' Code::TidyAll::SVN::Util: file: lib/Code/TidyAll/SVN/Util.pm version: '0.32' Code::TidyAll::Util::Zglob: file: lib/Code/TidyAll/Util/Zglob.pm version: '0.32' Test::Code::TidyAll: file: lib/Test/Code/TidyAll.pm version: '0.32' requires: Capture::Tiny: '0' Config::INI::Reader: '0' Cwd: '0' Data::Dumper: '0' Date::Format: '0' Digest::SHA: '0' Exporter: '0' File::Basename: '0' File::Find: '0' File::Path: '0' File::Slurp::Tiny: '0' File::Spec::Functions: '0' File::Temp: '0' File::Which: '0' File::Zglob: '0' Getopt::Long: '0' Guard: '0' IPC::Run3: '0' IPC::System::Simple: '0' List::MoreUtils: '0' Log::Any: '0' Moo: '0' Moo::Role: '0' Scalar::Util: '0' Test::Builder: '0' Text::Diff: '0' Text::Diff::Table: '0' Text::ParseWords: '0' Time::Duration::Parse: '0' Try::Tiny: '0' base: '0' constant: '0' strict: '0' vars: '0' warnings: '0' resources: bugtracker: http://rt.cpan.org/Public/Dist/Display.html?Name=Code-TidyAll homepage: http://metacpan.org/release/Code-TidyAll repository: git://github.com/houseabsolute/perl-code-tidyall.git version: '0.32' x_Dist_Zilla: perl: version: '5.022000' plugins: - class: Dist::Zilla::Plugin::Authority name: '@DROLSKY/Authority' version: '1.009' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@DROLSKY/AutoPrereqs' version: '5.041' - class: Dist::Zilla::Plugin::CopyFilesFromBuild name: '@DROLSKY/CopyFilesFromBuild' version: '0.151680' - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: - Build.PL - LICENSE - Makefile.PL - README.md - cpanfile exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@DROLSKY/Git::GatherDir' version: '2.036' - class: Dist::Zilla::Plugin::GitHub::Meta name: '@DROLSKY/GitHub::Meta' version: '0.41' - class: Dist::Zilla::Plugin::GitHub::Update config: Dist::Zilla::Plugin::GitHub::Update: metacpan: 1 name: '@DROLSKY/GitHub::Update' version: '0.41' - class: Dist::Zilla::Plugin::MetaResources name: '@DROLSKY/MetaResources' version: '5.041' - class: Dist::Zilla::Plugin::MetaProvides::Package config: Dist::Zilla::Plugin::MetaProvides::Package: finder_objects: - class: Dist::Zilla::Plugin::FinderCode name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM' version: '5.041' Dist::Zilla::Role::MetaProvider::Provider: inherit_missing: '1' inherit_version: '1' meta_noindex: '1' name: '@DROLSKY/MetaProvides::Package' version: '2.003001' - class: Dist::Zilla::Plugin::NextRelease name: '@DROLSKY/NextRelease' version: '5.041' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@DROLSKY/Test::More with subtest()' version: '5.041' - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: requires name: '@DROLSKY/Modules for use with tidyall' version: '5.041' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 1 modules: [] phase: release skip: - Dist::Zilla::Plugin::DROLSKY::Contributors - Dist::Zilla::Plugin::DROLSKY::License - Dist::Zilla::Plugin::DROLSKY::TidyAll - Dist::Zilla::Plugin::DROLSKY::VersionProvider name: '@DROLSKY/PromptIfStale' version: '0.047' - class: Dist::Zilla::Plugin::ReadmeAnyFromPod config: Dist::Zilla::Role::FileWatcher: version: '0.006' name: '@DROLSKY/README.md in build' version: '0.150250' - class: Dist::Zilla::Plugin::ReadmeAnyFromPod config: Dist::Zilla::Role::FileWatcher: version: '0.006' name: '@DROLSKY/README.md in root' version: '0.150250' - class: Dist::Zilla::Plugin::Test::PodSpelling config: Dist::Zilla::Plugin::Test::PodSpelling: directories: [] spell_cmd: '' stopwords: - API - CPAN - DROLSKY - "DROLSKY's" - JSON - JavaScript - Misc - PHP - PREREQS - PayPal - Raggett - Rolsky - "Rolsky's" - STDERR - STDIN - STDOUT - Simakov - TIDYALL - Thalhammer - Vim - argv - ascii - atomicity - cmd - conf - config - cssunminifier - ctrl - dir - filename - iff - ispell - js - jsbeautify - jshint - jslint - lib - listref - masontidy - noll - npm - ok - ops - params - pathname - perlcritic - perlcriticrc - perltidy - phpcs - plugins - podspell - podtidy - pre - prereqs - repo - repos - ro - runtime - rw - shebang - sourceforge - svn - tidiers - tidyall - "tidyall'd" - timestamped - ttl - txn - validator - validators wordlist: Pod::Wordlist name: '@DROLSKY/Test::PodSpelling' version: '2.007000' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@DROLSKY/Test::ReportPrereqs' version: '0.021' - class: Dist::Zilla::Plugin::Test::Version name: '@DROLSKY/Test::Version' version: '1.05' - class: Dist::Zilla::Plugin::ManifestSkip name: '@DROLSKY/ManifestSkip' version: '5.041' - class: Dist::Zilla::Plugin::MetaYAML name: '@DROLSKY/MetaYAML' version: '5.041' - class: Dist::Zilla::Plugin::License name: '@DROLSKY/License' version: '5.041' - class: Dist::Zilla::Plugin::ExtraTests name: '@DROLSKY/ExtraTests' version: '5.041' - class: Dist::Zilla::Plugin::ExecDir name: '@DROLSKY/ExecDir' version: '5.041' - class: Dist::Zilla::Plugin::ShareDir name: '@DROLSKY/ShareDir' version: '5.041' - class: Dist::Zilla::Plugin::Manifest name: '@DROLSKY/Manifest' version: '5.041' - class: Dist::Zilla::Plugin::CheckVersionIncrement name: '@DROLSKY/CheckVersionIncrement' version: '0.121750' - class: Dist::Zilla::Plugin::TestRelease name: '@DROLSKY/TestRelease' version: '5.041' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@DROLSKY/ConfirmRelease' version: '5.041' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@DROLSKY/UploadToCPAN' version: '5.041' - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@DROLSKY/CheckPrereqsIndexed' version: '0.017' - class: Dist::Zilla::Plugin::CPANFile name: '@DROLSKY/CPANFile' version: '5.041' - class: Dist::Zilla::Plugin::DROLSKY::Contributors name: '@DROLSKY/DROLSKY::Contributors' version: '0.38' - class: Dist::Zilla::Plugin::DROLSKY::License name: '@DROLSKY/DROLSKY::License' version: '0.38' - class: Dist::Zilla::Plugin::DROLSKY::VersionProvider name: '@DROLSKY/DROLSKY::VersionProvider' version: '0.38' - class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch config: Dist::Zilla::Role::Git::Repo: repo_root: . name: '@DROLSKY/Git::CheckFor::CorrectBranch' version: '0.013' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: include_authors: 0 include_releaser: 1 order_by: name paths: - . name: '@DROLSKY/Git::Contributors' version: '0.015' - class: Dist::Zilla::Plugin::InstallGuide name: '@DROLSKY/InstallGuide' version: '1.200006' - class: Dist::Zilla::Plugin::Meta::Contributors name: '@DROLSKY/Meta::Contributors' version: '0.002' - class: Dist::Zilla::Plugin::MetaConfig name: '@DROLSKY/MetaConfig' version: '5.041' - class: Dist::Zilla::Plugin::MetaJSON name: '@DROLSKY/MetaJSON' version: '5.041' - class: Dist::Zilla::Plugin::SurgicalPodWeaver config: Dist::Zilla::Plugin::PodWeaver: finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.012' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.012' - class: Pod::Weaver::Section::Name name: Name version: '4.012' - class: Pod::Weaver::Section::Version name: Version version: '4.012' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.012' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.012' - class: Pod::Weaver::Section::Leftovers name: Leftovers version: '4.012' - class: inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll name: =inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll version: ~ - class: Pod::Weaver::Section::Region name: postlude version: '4.012' - class: Pod::Weaver::Section::Authors name: Authors version: '4.012' - class: Pod::Weaver::Section::Contributors name: Contributors version: '0.009' - class: Pod::Weaver::Section::Legal name: Legal version: '4.012' name: '@DROLSKY/SurgicalPodWeaver' version: '0.0023' - class: Dist::Zilla::Plugin::MojibakeTests name: '@DROLSKY/MojibakeTests' version: '0.8' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@DROLSKY/PodSyntaxTests' version: '5.041' - class: Dist::Zilla::Plugin::Test::CPAN::Changes name: '@DROLSKY/Test::CPAN::Changes' version: '0.009' - class: Dist::Zilla::Plugin::Test::NoTabs config: Dist::Zilla::Plugin::Test::NoTabs: filename: xt/author/no-tabs.t finder: - ':InstallModules' - ':ExecFiles' - ':TestFiles' name: '@DROLSKY/Test::NoTabs' version: '0.15' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Build.PL - CONTRIBUTING.md - Changes - LICENSE - Makefile.PL - README.md - cpanfile allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: repo_root: . name: '@DROLSKY/Git::Check' version: '2.036' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: v%v%n%n%c Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Build.PL - CONTRIBUTING.md - Changes - LICENSE - Makefile.PL - README.md - cpanfile allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@DROLSKY/commit generated files' version: '2.036' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: v0.32 tag_format: v%v tag_message: v%v Dist::Zilla::Role::Git::Repo: repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@DROLSKY/Git::Tag' version: '2.036' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - origin remotes_must_exist: 1 Dist::Zilla::Role::Git::Repo: repo_root: . name: '@DROLSKY/Git::Push' version: '2.036' - class: Dist::Zilla::Plugin::BumpVersionAfterRelease config: Dist::Zilla::Plugin::BumpVersionAfterRelease: finders: - ':ExecFiles' - ':InstallModules' global: 0 munge_makefile_pl: 1 name: '@DROLSKY/BumpVersionAfterRelease' version: '0.012' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: 'Bump version after release' Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: - (?^:.+) changelog: Changes Dist::Zilla::Role::Git::Repo: repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@DROLSKY/commit version bump' version: '2.036' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - origin remotes_must_exist: 1 Dist::Zilla::Role::Git::Repo: repo_root: . name: '@DROLSKY/push version bump' version: '2.036' - class: inc::MyMakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 1 name: =inc::MyMakeMaker version: ~ - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: develop type: requires name: DevelopRequires version: '5.041' - class: Dist::Zilla::Plugin::MetaNoIndex name: MetaNoIndex version: '5.041' - class: Dist::Zilla::Plugin::TidyAll name: TidyAll version: '0.04' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '5.041' - class: Dist::Zilla::Plugin::FinderCode name: '@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM' version: '5.041' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '5.041' x_authority: cpan:DROLSKY x_contributors: - 'Andy Jack ' - 'George Hartzell ' - 'Gregory Oschwald ' - 'Joe Crotty ' - 'Mark Fowler ' - 'Mark Grimes ' - 'Olaf Alders ' - 'Pedro Melo ' - 'Sergey Romanov ' - 'timgimyee ' Code-TidyAll-0.32~dfsg/META.json0000644000000000000000000007672612623441275015061 0ustar rootroot{ "abstract" : "Engine for tidyall, your all-in-one code tidier and validator", "author" : [ "Jonathan Swartz ", "Dave Rolsky " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 5.041, CPAN::Meta::Converter version 2.150005", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Code-TidyAll", "no_index" : { "file" : [ "lib/Code/TidyAll/Util.pm" ] }, "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "develop" : { "requires" : { "CHI" : "0", "Code::TidyAll" : "0", "Code::TidyAll::Plugin::Perl::AlignMooseAttributes" : "0", "JSON::MaybeXS" : "0", "Mason::Tidy" : "0", "Mason::Tidy::App" : "0", "Perl::Critic" : "1.123", "Perl::Critic::Policy::Moose::RequireMakeImmutable" : "0", "Perl::Tidy" : "20150815", "Perl::Tidy::Sweetened" : "1.00", "Pod::Checker" : "0", "Pod::Spell" : "0", "Pod::Tidy" : "0", "SVN::Look" : "0", "Test::CPAN::Changes" : "0.19", "Test::Mojibake" : "0", "Test::More" : "0.88", "Test::NoTabs" : "0", "Test::Pod" : "1.41", "Test::Spelling" : "0.12", "Test::Version" : "1" } }, "runtime" : { "requires" : { "Capture::Tiny" : "0", "Config::INI::Reader" : "0", "Cwd" : "0", "Data::Dumper" : "0", "Date::Format" : "0", "Digest::SHA" : "0", "Exporter" : "0", "File::Basename" : "0", "File::Find" : "0", "File::Path" : "0", "File::Slurp::Tiny" : "0", "File::Spec::Functions" : "0", "File::Temp" : "0", "File::Which" : "0", "File::Zglob" : "0", "Getopt::Long" : "0", "Guard" : "0", "IPC::Run3" : "0", "IPC::System::Simple" : "0", "List::MoreUtils" : "0", "Log::Any" : "0", "Moo" : "0", "Moo::Role" : "0", "Scalar::Util" : "0", "Test::Builder" : "0", "Text::Diff" : "0", "Text::Diff::Table" : "0", "Text::ParseWords" : "0", "Time::Duration::Parse" : "0", "Try::Tiny" : "0", "base" : "0", "constant" : "0", "strict" : "0", "vars" : "0", "warnings" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "Encode" : "0", "ExtUtils::MakeMaker" : "0", "File::Spec" : "0", "Test::Class::Most" : "0", "Test::Differences" : "0", "Test::More" : "0.96", "Test::Warnings" : "0", "autodie" : "0", "lib" : "0" } } }, "provides" : { "Code::TidyAll" : { "file" : "lib/Code/TidyAll.pm", "version" : "0.32" }, "Code::TidyAll::Cache" : { "file" : "lib/Code/TidyAll/Cache.pm", "version" : "0.32" }, "Code::TidyAll::CacheModel" : { "file" : "lib/Code/TidyAll/CacheModel.pm", "version" : "0.32" }, "Code::TidyAll::CacheModel::Shared" : { "file" : "lib/Code/TidyAll/CacheModel/Shared.pm", "version" : "0.32" }, "Code::TidyAll::Config::INI::Reader" : { "file" : "lib/Code/TidyAll/Config/INI/Reader.pm", "version" : "0.32" }, "Code::TidyAll::Git::Precommit" : { "file" : "lib/Code/TidyAll/Git/Precommit.pm", "version" : "0.32" }, "Code::TidyAll::Git::Prereceive" : { "file" : "lib/Code/TidyAll/Git/Prereceive.pm", "version" : "0.32" }, "Code::TidyAll::Git::Util" : { "file" : "lib/Code/TidyAll/Git/Util.pm", "version" : "0.32" }, "Code::TidyAll::Plugin" : { "file" : "lib/Code/TidyAll/Plugin.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::CSSUnminifier" : { "file" : "lib/Code/TidyAll/Plugin/CSSUnminifier.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::DiffOnTidyError" : { "file" : "lib/Code/TidyAll/Plugin/DiffOnTidyError.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::JSBeautify" : { "file" : "lib/Code/TidyAll/Plugin/JSBeautify.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::JSHint" : { "file" : "lib/Code/TidyAll/Plugin/JSHint.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::JSLint" : { "file" : "lib/Code/TidyAll/Plugin/JSLint.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::JSON" : { "file" : "lib/Code/TidyAll/Plugin/JSON.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::MasonTidy" : { "file" : "lib/Code/TidyAll/Plugin/MasonTidy.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PHPCodeSniffer" : { "file" : "lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PerlCritic" : { "file" : "lib/Code/TidyAll/Plugin/PerlCritic.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PerlTidy" : { "file" : "lib/Code/TidyAll/Plugin/PerlTidy.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PerlTidySweet" : { "file" : "lib/Code/TidyAll/Plugin/PerlTidySweet.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PodChecker" : { "file" : "lib/Code/TidyAll/Plugin/PodChecker.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PodSpell" : { "file" : "lib/Code/TidyAll/Plugin/PodSpell.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::PodTidy" : { "file" : "lib/Code/TidyAll/Plugin/PodTidy.pm", "version" : "0.32" }, "Code::TidyAll::Plugin::SortLines" : { "file" : "lib/Code/TidyAll/Plugin/SortLines.pm", "version" : "0.32" }, "Code::TidyAll::Result" : { "file" : "lib/Code/TidyAll/Result.pm", "version" : "0.32" }, "Code::TidyAll::Role::Tempdir" : { "file" : "lib/Code/TidyAll/Role/Tempdir.pm", "version" : "0.32" }, "Code::TidyAll::SVN::Precommit" : { "file" : "lib/Code/TidyAll/SVN/Precommit.pm", "version" : "0.32" }, "Code::TidyAll::SVN::Util" : { "file" : "lib/Code/TidyAll/SVN/Util.pm", "version" : "0.32" }, "Code::TidyAll::Util::Zglob" : { "file" : "lib/Code/TidyAll/Util/Zglob.pm", "version" : "0.32" }, "Test::Code::TidyAll" : { "file" : "lib/Test/Code/TidyAll.pm", "version" : "0.32" } }, "release_status" : "stable", "resources" : { "bugtracker" : { "mailto" : "bug-code-tidyall@rt.cpan.org", "web" : "http://rt.cpan.org/Public/Dist/Display.html?Name=Code-TidyAll" }, "homepage" : "http://metacpan.org/release/Code-TidyAll", "repository" : { "type" : "git", "url" : "git://github.com/houseabsolute/perl-code-tidyall.git", "web" : "https://github.com/houseabsolute/perl-code-tidyall" } }, "version" : "0.32", "x_Dist_Zilla" : { "perl" : { "version" : "5.022000" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Authority", "name" : "@DROLSKY/Authority", "version" : "1.009" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@DROLSKY/AutoPrereqs", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::CopyFilesFromBuild", "name" : "@DROLSKY/CopyFilesFromBuild", "version" : "0.151680" }, { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [ "Build.PL", "LICENSE", "Makefile.PL", "README.md", "cpanfile" ], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@DROLSKY/Git::GatherDir", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::GitHub::Meta", "name" : "@DROLSKY/GitHub::Meta", "version" : "0.41" }, { "class" : "Dist::Zilla::Plugin::GitHub::Update", "config" : { "Dist::Zilla::Plugin::GitHub::Update" : { "metacpan" : 1 } }, "name" : "@DROLSKY/GitHub::Update", "version" : "0.41" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "@DROLSKY/MetaResources", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::MetaProvides::Package", "config" : { "Dist::Zilla::Plugin::MetaProvides::Package" : { "finder_objects" : [ { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM", "version" : "5.041" } ] }, "Dist::Zilla::Role::MetaProvider::Provider" : { "inherit_missing" : "1", "inherit_version" : "1", "meta_noindex" : "1" } }, "name" : "@DROLSKY/MetaProvides::Package", "version" : "2.003001" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@DROLSKY/NextRelease", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@DROLSKY/Test::More with subtest()", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "requires" } }, "name" : "@DROLSKY/Modules for use with tidyall", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 1, "modules" : [], "phase" : "release", "skip" : [ "Dist::Zilla::Plugin::DROLSKY::Contributors", "Dist::Zilla::Plugin::DROLSKY::License", "Dist::Zilla::Plugin::DROLSKY::TidyAll", "Dist::Zilla::Plugin::DROLSKY::VersionProvider" ] } }, "name" : "@DROLSKY/PromptIfStale", "version" : "0.047" }, { "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", "config" : { "Dist::Zilla::Role::FileWatcher" : { "version" : "0.006" } }, "name" : "@DROLSKY/README.md in build", "version" : "0.150250" }, { "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod", "config" : { "Dist::Zilla::Role::FileWatcher" : { "version" : "0.006" } }, "name" : "@DROLSKY/README.md in root", "version" : "0.150250" }, { "class" : "Dist::Zilla::Plugin::Test::PodSpelling", "config" : { "Dist::Zilla::Plugin::Test::PodSpelling" : { "directories" : [], "spell_cmd" : "", "stopwords" : [ "API", "CPAN", "DROLSKY", "DROLSKY's", "JSON", "JavaScript", "Misc", "PHP", "PREREQS", "PayPal", "Raggett", "Rolsky", "Rolsky's", "STDERR", "STDIN", "STDOUT", "Simakov", "TIDYALL", "Thalhammer", "Vim", "argv", "ascii", "atomicity", "cmd", "conf", "config", "cssunminifier", "ctrl", "dir", "filename", "iff", "ispell", "js", "jsbeautify", "jshint", "jslint", "lib", "listref", "masontidy", "noll", "npm", "ok", "ops", "params", "pathname", "perlcritic", "perlcriticrc", "perltidy", "phpcs", "plugins", "podspell", "podtidy", "pre", "prereqs", "repo", "repos", "ro", "runtime", "rw", "shebang", "sourceforge", "svn", "tidiers", "tidyall", "tidyall'd", "timestamped", "ttl", "txn", "validator", "validators" ], "wordlist" : "Pod::Wordlist" } }, "name" : "@DROLSKY/Test::PodSpelling", "version" : "2.007000" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@DROLSKY/Test::ReportPrereqs", "version" : "0.021" }, { "class" : "Dist::Zilla::Plugin::Test::Version", "name" : "@DROLSKY/Test::Version", "version" : "1.05" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@DROLSKY/ManifestSkip", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@DROLSKY/MetaYAML", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@DROLSKY/License", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::ExtraTests", "name" : "@DROLSKY/ExtraTests", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@DROLSKY/ExecDir", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@DROLSKY/ShareDir", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@DROLSKY/Manifest", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::CheckVersionIncrement", "name" : "@DROLSKY/CheckVersionIncrement", "version" : "0.121750" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@DROLSKY/TestRelease", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@DROLSKY/ConfirmRelease", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@DROLSKY/UploadToCPAN", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@DROLSKY/CheckPrereqsIndexed", "version" : "0.017" }, { "class" : "Dist::Zilla::Plugin::CPANFile", "name" : "@DROLSKY/CPANFile", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::DROLSKY::Contributors", "name" : "@DROLSKY/DROLSKY::Contributors", "version" : "0.38" }, { "class" : "Dist::Zilla::Plugin::DROLSKY::License", "name" : "@DROLSKY/DROLSKY::License", "version" : "0.38" }, { "class" : "Dist::Zilla::Plugin::DROLSKY::VersionProvider", "name" : "@DROLSKY/DROLSKY::VersionProvider", "version" : "0.38" }, { "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch", "config" : { "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." } }, "name" : "@DROLSKY/Git::CheckFor::CorrectBranch", "version" : "0.013" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", "paths" : [ "." ] } }, "name" : "@DROLSKY/Git::Contributors", "version" : "0.015" }, { "class" : "Dist::Zilla::Plugin::InstallGuide", "name" : "@DROLSKY/InstallGuide", "version" : "1.200006" }, { "class" : "Dist::Zilla::Plugin::Meta::Contributors", "name" : "@DROLSKY/Meta::Contributors", "version" : "0.002" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@DROLSKY/MetaConfig", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@DROLSKY/MetaJSON", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.012" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Name", "name" : "Name", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Version", "name" : "Version", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "Leftovers", "version" : "4.012" }, { "class" : "inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll", "name" : "=inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll", "version" : null }, { "class" : "Pod::Weaver::Section::Region", "name" : "postlude", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "Authors", "version" : "4.012" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "Legal", "version" : "4.012" } ] } }, "name" : "@DROLSKY/SurgicalPodWeaver", "version" : "0.0023" }, { "class" : "Dist::Zilla::Plugin::MojibakeTests", "name" : "@DROLSKY/MojibakeTests", "version" : "0.8" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@DROLSKY/PodSyntaxTests", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes", "name" : "@DROLSKY/Test::CPAN::Changes", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::Test::NoTabs", "config" : { "Dist::Zilla::Plugin::Test::NoTabs" : { "filename" : "xt/author/no-tabs.t", "finder" : [ ":InstallModules", ":ExecFiles", ":TestFiles" ] } }, "name" : "@DROLSKY/Test::NoTabs", "version" : "0.15" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Build.PL", "CONTRIBUTING.md", "Changes", "LICENSE", "Makefile.PL", "README.md", "cpanfile" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." } }, "name" : "@DROLSKY/Git::Check", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "v%v%n%n%c" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Build.PL", "CONTRIBUTING.md", "Changes", "LICENSE", "Makefile.PL", "README.md", "cpanfile" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@DROLSKY/commit generated files", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "v0.32", "tag_format" : "v%v", "tag_message" : "v%v" }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@DROLSKY/Git::Tag", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "origin" ], "remotes_must_exist" : 1 }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." } }, "name" : "@DROLSKY/Git::Push", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::BumpVersionAfterRelease", "config" : { "Dist::Zilla::Plugin::BumpVersionAfterRelease" : { "finders" : [ ":ExecFiles", ":InstallModules" ], "global" : 0, "munge_makefile_pl" : 1 } }, "name" : "@DROLSKY/BumpVersionAfterRelease", "version" : "0.012" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "Bump version after release" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [ "(?^:.+)" ], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@DROLSKY/commit version bump", "version" : "2.036" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "origin" ], "remotes_must_exist" : 1 }, "Dist::Zilla::Role::Git::Repo" : { "repo_root" : "." } }, "name" : "@DROLSKY/push version bump", "version" : "2.036" }, { "class" : "inc::MyMakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 1 } }, "name" : "=inc::MyMakeMaker", "version" : null }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "develop", "type" : "requires" } }, "name" : "DevelopRequires", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::MetaNoIndex", "name" : "MetaNoIndex", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::TidyAll", "name" : "TidyAll", "version" : "0.04" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "5.041" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : "@DROLSKY/MetaProvides::Package/AUTOVIV/:InstallModulesPM", "version" : "5.041" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : "0" }, "version" : "5.041" } }, "x_authority" : "cpan:DROLSKY", "x_contributors" : [ "Andy Jack ", "George Hartzell ", "Gregory Oschwald ", "Joe Crotty ", "Mark Fowler ", "Mark Grimes ", "Olaf Alders ", "Pedro Melo ", "Sergey Romanov ", "timgimyee " ] } Code-TidyAll-0.32~dfsg/README.md0000644000000000000000000001150312623441275014675 0ustar rootrootNAME Code::TidyAll - Engine for tidyall, your all-in-one code tidier and validator VERSION version 0.32 SYNOPSIS use Code::TidyAll; my $ct = Code::TidyAll->new_from_conf_file( '/path/to/conf/file', ... ); # or my $ct = Code::TidyAll->new( root_dir => '/path/to/root', plugins => { perltidy => { select => 'lib/**/*.(pl|pm)', argv => '-noll -it=2', }, ... } ); # then... $ct->process_paths($file1, $file2); DESCRIPTION This is the engine used by tidyall - read that first to get an overview. You can call this API from your own program instead of executing tidyall. CONSTRUCTION Constructor methods new (%params) The regular constructor. Must pass at least plugins and root_dir. new_with_conf_file ($conf_file, %params) Takes a conf file path, followed optionally by a set of key/value parameters. Reads parameters out of the conf file and combines them with the passed parameters (the latter take precedence), and calls the regular constructor. If the conf file or params defines tidyall_class, then that class is constructed instead of Code::TidyAll. Constructor parameters plugins Specify a hash of plugins, each of which is itself a hash of options. This is equivalent to what would be parsed out of the sections in the configuration file. cache_model_class The cache model class. Defaults to Code::TidyAll::CacheModel cache The cache instance (e.g. an instance of Code::TidyAll::Cache or a CHI instance.) An instance of Code::TidyAll::Cache is automatically instantiated by default. backup_ttl check_only no_cleanup A boolean indicating if we should skip cleaning temporary files or not. Defaults to false. data_dir iterations mode no_backups no_cache output_suffix quiet root_dir verbose These options are the same as the equivalent tidyall command-line options, replacing dashes with underscore (e.g. the backup-ttl option becomes backup_ttl here). msg_outputter This is a subroutine reference that is called whenever a message needs to be printed in some way. The sub receives a sprintf() format string followed by one or more parameters. The default sub used simply calls printf "$format\n", @_ but Test::Code::TidyAll overrides this to use the Test::Builder->diag method. METHODS process_paths (path, ...) Call "process_file" on each file; descend recursively into each directory if the recursive flag is on. Return a list of Code::TidyAll::Result objects, one for each file. process_file (file) Process the file, meaning * Check the cache and return immediately if file has not changed * Apply appropriate matching plugins * Print success or failure result to STDOUT, depending on quiet/verbose settings * Write the cache if enabled * Return a Code::TidyAll::Result object process_source (source, path) Like "process_file", but process the source string instead of a file, and do not read from or write to the cache. You must still pass the relative path from the root as the second argument, so that we know which plugins to apply. Return a Code::TidyAll::Result object. plugins_for_path (path) Given a relative path from the root, return a list of Code::TidyAll::Plugin objects that apply to it, or an empty list if no plugins apply. find_conf_file (conf_names, start_dir) Class method. Start in the start_dir and work upwards, looking for one of the conf_names. Return the pathname if found or throw an error if not found. find_matched_files Returns a list of sorted files that match at least one plugin in configuration. AUTHORS * Jonathan Swartz * Dave Rolsky CONTRIBUTORS * Andy Jack * George Hartzell * Gregory Oschwald * Joe Crotty * Mark Fowler * Mark Grimes * Olaf Alders * Pedro Melo * Sergey Romanov * timgimyee COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Code-TidyAll-0.32~dfsg/bin/0000755000000000000000000000000012623441275014166 5ustar rootrootCode-TidyAll-0.32~dfsg/bin/tidyall0000755000000000000000000005555612623441275015576 0ustar rootroot#!/usr/bin/perl use Config; use Cwd qw(cwd realpath); use Getopt::Long; use Capture::Tiny qw(capture_merged); use Code::TidyAll; use Code::TidyAll::Util qw(can_load dirname rel2abs); use strict; use warnings; our $VERSION = '0.32'; my $usage = ' Usage: tidyall [options] [file] ... See https://metacpan.org/module/tidyall for full documentation. Options: -a, --all Process all files in project -g, --git Process all added/modified files according to git -h, --help Print help message -l, --list List each file along with the plugins it matches -m, --mode Mode (e.g. "editor", "commit") - affects which plugins run -p , --pipe Read from STDIN, output to STDOUT/STDERR -r, --recursive Descend recursively into directories listed on command line -s, --svn Process all added/modified files according to svn -q, --quiet Suppress output except for errors -v, --verbose Show extra output -I I Add one or more paths to @INC --backup-ttl Amount of time before backup files can be purged --check-only Just check each file, don\'t modify --conf-file Relative or absolute path to conf file --conf-name Conf file name to search for --data-dir Contains metadata, defaults to root/.tidyall.d --iterations Number of times to repeat each transform - default is 1 --no-backups Don\'t backup files before processing --no-cache Don\'t cache last processed times --no-cleanup Don\'t cleanup the temporary files --output-suffix Suffix to add to tidied file --refresh-cache Erase any existing cache info before processing each file --root-dir Specify root directory explicitly --tidyall-class Subclass to use instead of Code::TidyAll --version Show version '; sub version { my $version = $Code::TidyAll::VERSION || 'unknown'; print "tidyall $version on perl $] built for $Config{archname}\n"; exit; } sub usage { print $usage; exit; } my ( %params, $all_files, $conf_file, $conf_name, $git_files, $help, $inc_dirs, $pipe, $svn_files, $version ); my @conf_names = Code::TidyAll->default_conf_names; GetOptions( 'backup-ttl=i' => \$params{backup_ttl}, 'check-only' => \$params{check_only}, 'conf-file=s' => \$conf_file, 'conf-name=s' => \$conf_name, 'data-dir=s' => \$params{data_dir}, 'no-backups' => \$params{no_backups}, 'no-cache' => \$params{no_cache}, 'no-cleanup' => \$params{no_cleanup}, 'output-suffix=s' => \$params{output_suffix}, 'refresh-cache' => \$params{refresh_cache}, 'root-dir=s' => \$params{root_dir}, 'tidyall-class=s' => \$params{tidyall_class}, 'version' => \$version, 'a|all' => \$all_files, 'g|git' => \$git_files, 'h|help' => \$help, 'l|list' => \$params{list_only}, 'm|mode=s' => \$params{mode}, 'p|pipe=s' => \$pipe, 'r|recursive' => \$params{recursive}, 's|svn' => \$svn_files, 'q|quiet' => \$params{quiet}, 'v|verbose' => \$params{verbose}, 'I=s' => \$inc_dirs, ) or usage(); version() if $version; usage() if $help; @conf_names = ($conf_name) if defined($conf_name); unshift( @INC, split( /\s*,\s*/, $inc_dirs ) ) if defined($inc_dirs); %params = map { ( $_, $params{$_} ) } grep { defined( $params{$_} ) } keys(%params); ($conf_file) = ( grep {-f} map {"$params{root_dir}/$_"} @conf_names ) if $params{root_dir} && !$conf_file; my $tidyall_class = $params{tidyall_class} || 'Code::TidyAll'; my ( $ct, @paths ); if ($pipe) { my $status = handle_pipe($pipe); exit($status); } elsif ( ( $all_files || $svn_files || $git_files ) ) { die "cannot use filename(s) with -a/--all, -s/--svn, or -g/--git" if @ARGV; $conf_file ||= $tidyall_class->find_conf_file( \@conf_names, cwd() ); $ct = $tidyall_class->new_from_conf_file( $conf_file, %params ); if ($all_files) { @paths = $ct->find_matched_files; } elsif ($svn_files) { require Code::TidyAll::SVN::Util; @paths = Code::TidyAll::SVN::Util::svn_uncommitted_files( $ct->root_dir ); } elsif ($git_files) { require Code::TidyAll::Git::Util; @paths = Code::TidyAll::Git::Util::git_uncommitted_files( $ct->root_dir ); } } elsif ( @paths = @ARGV ) { $conf_file ||= $tidyall_class->find_conf_file( \@conf_names, dirname( $paths[0] ) ); $ct = $tidyall_class->new_from_conf_file( $conf_file, %params ); } else { print "must pass -a/--all, -s/--svn, -g/--git, -p/--pipe, or filename(s)\n"; usage(); } my @results = $ct->process_paths(@paths); my $status = ( grep { $_->error } @results ) ? 1 : 0; exit($status); sub handle_pipe { my ($pipe_filename) = @_; $params{$_} = 1 for ( 'no_backups', 'no_cache', 'quiet' ); $params{$_} = 0 for ('verbose'); $conf_file ||= $tidyall_class->find_conf_file( \@conf_names, dirname($pipe_filename) ); my $ct = $tidyall_class->new_from_conf_file( $conf_file, %params ); my $root_dir = $ct->root_dir; my $source = do { local $/; }; # Merge stdout and stderr and output all to stderr, so that stdout is # dedicated to the tidied content # my $result; my $output = capture_merged { $result = $ct->process_source( $source, $ct->_small_path( rel2abs($pipe_filename) ) ); }; print STDERR $output; if ( my $error = $result->error ) { print $source; # Error already printed above return 1; } elsif ( $result->state eq 'no_match' ) { print $source; print STDERR "No plugins apply for '$pipe' in config"; return 1; } elsif ( $result->state eq 'checked' ) { print $source; return 0; } else { print $result->new_contents; return 0; } } 1; __END__ =head1 NAME tidyall - Your all-in-one code tidier and validator =head1 SYNOPSIS # Create a tidyall.ini or .tidyallrc at the top of your project # [PerlTidy] select = **/*.{pl,pm,t} argv = -noll -it=2 [PerlCritic] select = lib/**/*.pm ignore = lib/UtterHack.pm argv = -severity 3 # Process all files in the current project, # look upwards from cwd for conf file # % tidyall -a # Process one or more specific files, # look upwards from the first file for conf file # % tidyall file [file...] # Process a directory recursively # % tidyall -r dir =head1 DESCRIPTION There are a lot of great code tidiers and validators out there. C makes them available from a single unified interface. You can run C on a single file or on an entire project hierarchy, and configure which tidiers/validators are applied to which files. C will back up files beforehand, and for efficiency will only consider files that have changed since they were last processed. =head2 What's a tidier? What's a validator? A I transforms a file so as to improve its appearance without changing its semantics. Examples include L, L and L. A I analyzes a file for some definition of correctness. Examples include L, L and L. Many tidiers are also validators, e.g. C will throw an error on badly formed Perl. To use a tidier or validator with C it must have a corresponding plugin class, usually under the prefix C. This distribution comes with plugins for: =over =item * Perl: L, L, L =item * Pod: L, L, L =item * Mason: L =item * JavaScript: L, L, L =item * JSON: L =item * CSS: L =item * PHP: L =item * Misc: L =back See L for information about creating your own plugin. =head1 USING TIDYALL C works on a project basis, where a project is just a directory hierarchy of files. svn or git working directories are typical examples of projects. The top of the project is called the I. In the root directory you'll need a config file named C or C<.tidyallrc>; it defines how various tidiers and validators will be applied to the files in your project. C will find your root directory and config file automatically depending on how you call it: =over =item C<< tidyall file [file...] >> C will search upwards from the first file for the conf file. =item C<< tidyall -p/--pipe file >> C will search upwards from the specified file for the conf file. =item C<< tidyall -a/--all >> or C<< tidyall -s/--svn >> or C<< tidyall -g/--git >> C will search upwards from the current working directory for the conf file. =item C<< tidyall -a --root-dir dir >> C will expect to find the conf file in the specified root directory. =back You can also pass --conf-name to change the name that is searched for, or --conf-file to specify an explicit path. =head1 CONFIGURATION The config file (C or C<.tidyallrc>) is in L format. Here's a sample: [PerlTidy] select = **/*.{pl,pm,t} argv = -noll -it=2 [PerlCritic] select = lib/**/*.pm ignore = lib/UtterHack.pm lib/OneTime/*.pm argv = -severity 3 [PodTidy] select = lib/**/*.{pm,pod} In order, the three sections declare: =over =item * Apply C with settings "-noll -it=2" to all *.pl, *.pm, and *.t files. =item * Apply C with severity 3 to all Perl modules somewhere underneath "lib/", except for "lib/UtterHack.pm". =item * Apply C with default settings to all *.pm and *.pod files underneath "lib/". =back =head2 Standard configuration elements =over =item [class] or [class description] The header of each section refers to a tidyall I. The name is automatically prefixed with C unless it begins with a '+', e.g. ; Uses plugin Code::TidyAll::Plugin::PerlTidy ; [PerlTidy] ; Uses plugin My::TidyAll::Plugin ; [+My::TidyAll::Plugin] You can also include an optional description after the class. The description will be ignored and only the first word will be used for the plugin. This allows you to a list a plugin more than once, with different configuration each time. For example, two different C configurations: ; Be brutal on libraries ; [PerlCritic strict] select = lib/**/*.pm argv = --brutal ; but gentle on scripts ; [PerlCritic lenient] select = bin/**/*.pl argv = --gentle Warning: If you simply list the same plugin twice with no description (or the same description), one of them will be silently ignored. =item select One or more L patterns, separated by whitespace or on multiple lines, indicating which files to select. At least one is required. e.g. ; All .t and .pl somewhere under bin and t; ; plus all .pm files directly under lib/Foo and lib/Bar ; select = {bin,t}/**/*.p[lm] select = lib/{Foo,Bar}/*.pm ; All .txt files anywhere in the project ; select = **/*.txt The pattern is relative to the root directory and should have no leading slash. All standard glob characters (C<*>, C, C<[]>, C<{}>) will work; in addition, C<**> can be used to represent zero or more directories. See L documentation for more details. =item ignore One or more L patterns, separated by whitespace or on multiple lines, indicating which files to ignore. This is optional and overrides C. e.g. ; All files with no extension anywhere under bin that include a "perl" or ; "perl5" shebang line. select = bin/**/* ignore = bin/**/*.* shebang = perl perl5 =item only_modes A list of modes, separated by whitespace. e.g. only_modes = test cli The plugin will I run if one of these modes is passed to C via C<-m> or C<--mode>. =item except_modes A list of modes, separated by whitespace. e.g. except_modes = commit editor The plugin will I run if one of these modes is passed to C via C<-m> or C<--mode>. =item argv Many plugins (such as L, L and L) take this option, which specifies arguments to pass to the underlying command-line utility. =item weight This is an integer that is used to sort plugins. By default, tidier plugins run first, then validator plugins, with each group sorted alphabetically. =back =head1 PLUGIN ORDER AND ATOMICITY If multiple plugins match a file, tidiers are applied before validators so that validators are checking the final result. Within those two groups, the plugins are applied in alphabetical order by plugin name/description. You can also explicitly set the weight of each plugin. By default, tidiers have a weight of 50 and validators have a weight of 60. You can set the weight to any integer to influence when the plugin runs. The application of multiple plugins is all-or-nothing. If an error occurs during the application of any plugin, the file is not modified at all. =head1 COMMAND-LINE OPTIONS =over =item -a, --all Process all files. Does a recursive search for all files in the project hierarchy, starting at the root, and processes any file that matches at least one plugin in the configuration. =item -g, --git Process all added or modified files in the current git working directory. =item -h, --help Print help message =item -l, --list List each file along with the list of plugins it matches (files without any matches are skipped). Does not actually process any files and does not care whether files are cached. Generally used with -a, -g, or -s. e.g. % tidyall -a -l lib/CHI.pm (PerlCritic, PerlTidy, PodTidy) lib/CHI/Benchmarks.pod (PodTidy) lib/CHI/CacheObject.pm (PerlCritic, PerlTidy, PodTidy) =item -m, --mode Optional mode that can affect which plugins run. Defaults to C. See L. =item -p path, --pipe path Read content from STDIN and write the resulting content to STDOUT. If successful, tidyall exits with status 0. If an error occurs, tidyall outputs the error message to STDERR, I to STDOUT with no changes, and exits with status 1. The mirroring means that you can safely pipe to your destination regardless of whether an error occurs. When specifying this option you must specify exactly one filename, relative or absolute, which will be used to determine which plugins to apply and also where the root directory and configuration file are. The file will not actually be read and does need even need to exist. This option implies --no-backups and --no-cache (since there's no actual file) and --quiet (since we don't want to mix extraneous output with the tidied result). # Read from STDIN and write to STDOUT, with appropriate plugins # for some/path.pl (which need not exist) # % tidyall --pipe some/path.pl =item -r, --recursive Recursively enter any directories listed on the command-line and process all the files within. By default, directories encountered on the command-line will generate a warning. =item -s, --svn Process all added or modified files in the current svn working directory. =item -q, --quiet Suppress output except for errors. =item -v, --verbose Show extra output. =item -I I Add one or more library paths to @INC, like Perl's -I. Useful if --tidyall-class or plugins are in an alternate lib directory. =item --backup-ttl I Amount of time before backup files can be purged. Can be a number of seconds or any string recognized by L, e.g. "4h" or "1day". Defaults to "1h". =item --check-only Instead of actually tidying files, check if each file is tidied (i.e. if its tidied version is equal to its current version) and consider it an error if not. This is used by L and the L and L pre-commit hooks, for example, to enforce that you've tidied your files. =item --conf-file I Specify relative or absolute path to conf file, instead of searching for it in the usual way. =item --conf-name I Specify a conf file name to search for instead of the defaults (C / C<.tidyallrc>). =item --data-dir I Contains data like backups and cache. Defaults to root_dir/.tidyall.d =item --iterations I Run each tidier transform I times. Default is 1. In some cases (hopefully rare) the output from a tidier can be different if it is applied multiple times. You may want to perform multiple iterations to make sure the content "settles" into its final tidied form -- especially if the tidiness is being enforced with a version-control hook or a test. Of course, performance will suffer a little. You should rarely need to set this higher than 2. This only affects tidiers, not validators; e.g. L and L would still only be run once. =item --no-backups Don't backup files before processing. =item --no-cache Don't cache last processed times; process all files every time. See also C<--refresh-cache>. =item --output-suffix I Suffix to add to a filename before outputting the modified version, e.g. C<.tdy>. Default is none, which means overwrite the file. =item --refresh-cache Erase any existing cache info before processing each file, then write new cache info. See also C<--no-cache>. =item --root-dir Specify root directory explicitly. Usually this is inferred from the specified files or the current working directory. =item --tidyall-class I Subclass to use instead of C. =back =head2 Specifying options in configuration Almost any command-line option can be specified at the top of the config file, above the plugin sections. Replace dashes with underscores. e.g. backup_ttl = 4h iterations = 2 tidyall_class = My::Code::TidyAll [PerlTidy] select = **/*.{pl,pm,t} argv = -noll -it=2 ... If an option is passed in both places, the command-line takes precedence. =head1 EXIT STATUS C will exit with status 1 if any errors occurred while processing files, and 0 otherwise. =head1 MODES You can use tidyall in a number of different contexts, and you may not want to run all plugins in all of them. You can pass a mode to tidyall via C<-m> or C<--mode>, and then specify that certain plugins should only be run in certain modes (via L) or should be run in all but certain modes (via L). Examples of modes: =over =item * C - when invoking tidyall explicitly from the command-line with no mode specified =item * C - when invoking from an editor =item * C - when using a commit hook like L or L =item * C - when using L =back Now since L is a bit time-consuming, you might only want to run it during tests and explicit command-line invocation: [PerlCritic] select = lib/**/*.pm only_modes = test cli ... Or you could specify that it be run in all modes I the editor: [PerlCritic] select = lib/**/*.pm except_modes = editor ... If you specify neither C nor C for a plugin, then it will always run. =head1 LAST-PROCESSED CACHE C keeps track of each file's signature after it was last processed. On subsequent runs, it will only process a file if its signature has changed. The cache is kept in files under the data dir. You can force a refresh of the cache with C<--refresh-cache>, or turn off the behavior entirely with C<--no-cache>. =head1 BACKUPS C will backup each file before modifying it. The timestamped backups are kept in a separate directory hierarchy under the data dir. Old backup files will be purged automatically as part of occasional C runs. The duration specified in C<--backup-ttl> indicates both the minimum amount of time backups should be kept, and the frequency that purges should be run. It may be specified as "30m" or "4 hours" or any string acceptable to L. It defaults to "1h" (1 hour). You can turn off backups with C<--no-backups>. =head1 "MISSING" PREREQS The C distribution intentionally does not depend on the prereqs needed for each plugin. This means that if you want to use the L, you must install the L module manually. =head1 RELATED TOOLS =over =item * L and L in this distribution contains Emacs and Vim commands for running C on the current buffer. You can assign this to the keystroke of your choice (e.g. ctrl-t or ,t). =item * L implements a subversion pre-commit hook that checks if all files are tidied and valid according to C, and rejects the commit if not. =item * L and L implement git pre-commit and pre-receive hooks, respectively, that check if all files are tidied and valid according to C. =item * L is a testing library to check that all the files in your project are in a tidied and valid state. =back =head1 KNOWN BUGS =over =item * Does not yet work on Windows =back =head1 AUTHOR Jonathan Swartz =head1 ACKNOWLEDGMENTS Thanks to Jeff Thalhammer for helping me refine this API. Thanks to Jeff for perlcritic, Steve Hancock for perltidy, and all the other authors of great open source tidiers and validators. =cut Code-TidyAll-0.32~dfsg/cpanfile0000644000000000000000000000453012623441275015124 0ustar rootrootrequires "Capture::Tiny" => "0"; requires "Config::INI::Reader" => "0"; requires "Cwd" => "0"; requires "Data::Dumper" => "0"; requires "Date::Format" => "0"; requires "Digest::SHA" => "0"; requires "Exporter" => "0"; requires "File::Basename" => "0"; requires "File::Find" => "0"; requires "File::Path" => "0"; requires "File::Slurp::Tiny" => "0"; requires "File::Spec::Functions" => "0"; requires "File::Temp" => "0"; requires "File::Which" => "0"; requires "File::Zglob" => "0"; requires "Getopt::Long" => "0"; requires "Guard" => "0"; requires "IPC::Run3" => "0"; requires "IPC::System::Simple" => "0"; requires "List::MoreUtils" => "0"; requires "Log::Any" => "0"; requires "Moo" => "0"; requires "Moo::Role" => "0"; requires "Scalar::Util" => "0"; requires "Test::Builder" => "0"; requires "Text::Diff" => "0"; requires "Text::Diff::Table" => "0"; requires "Text::ParseWords" => "0"; requires "Time::Duration::Parse" => "0"; requires "Try::Tiny" => "0"; requires "base" => "0"; requires "constant" => "0"; requires "strict" => "0"; requires "vars" => "0"; requires "warnings" => "0"; on 'test' => sub { requires "Encode" => "0"; requires "ExtUtils::MakeMaker" => "0"; requires "File::Spec" => "0"; requires "Test::Class::Most" => "0"; requires "Test::Differences" => "0"; requires "Test::More" => "0.96"; requires "Test::Warnings" => "0"; requires "autodie" => "0"; requires "lib" => "0"; }; on 'test' => sub { recommends "CPAN::Meta" => "2.120900"; }; on 'configure' => sub { requires "ExtUtils::MakeMaker" => "0"; }; on 'develop' => sub { requires "CHI" => "0"; requires "Code::TidyAll" => "0"; requires "Code::TidyAll::Plugin::Perl::AlignMooseAttributes" => "0"; requires "JSON::MaybeXS" => "0"; requires "Mason::Tidy" => "0"; requires "Mason::Tidy::App" => "0"; requires "Perl::Critic" => "1.123"; requires "Perl::Critic::Policy::Moose::RequireMakeImmutable" => "0"; requires "Perl::Tidy" => "20150815"; requires "Perl::Tidy::Sweetened" => "1.00"; requires "Pod::Checker" => "0"; requires "Pod::Spell" => "0"; requires "Pod::Tidy" => "0"; requires "SVN::Look" => "0"; requires "Test::CPAN::Changes" => "0.19"; requires "Test::Mojibake" => "0"; requires "Test::More" => "0.88"; requires "Test::NoTabs" => "0"; requires "Test::Pod" => "1.41"; requires "Test::Spelling" => "0.12"; requires "Test::Version" => "1"; }; Code-TidyAll-0.32~dfsg/lib/0000755000000000000000000000000012623441275014164 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Test/0000755000000000000000000000000012623441275015103 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Test/Code/0000755000000000000000000000000012623441275015755 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Test/Code/TidyAll.pm0000644000000000000000000000620012623441275017653 0ustar rootrootpackage Test::Code::TidyAll; use Code::TidyAll; use Test::Builder; use Text::Diff; use Text::Diff::Table; use strict; use warnings; use base qw(Exporter); our $VERSION = '0.32'; my $test = Test::Builder->new; our @EXPORT_OK = qw(tidyall_ok); our @EXPORT = @EXPORT_OK; sub tidyall_ok { my %options = @_; my $conf_file = delete( $options{conf_file} ); if ( !$conf_file ) { my @conf_names = Code::TidyAll->default_conf_names; $conf_file = Code::TidyAll->find_conf_file( \@conf_names, "." ); } $options{quiet} = 1 unless $options{verbose}; $test->diag("Using $conf_file for config") if $options{verbose}; my $ct = Code::TidyAll->new_from_conf_file( $conf_file, check_only => 1, mode => 'test', msg_outputter => \&_msg_outputter, %options, ); my @files = $ct->find_matched_files; $test->plan( tests => scalar(@files) ); foreach my $file (@files) { my $desc = $ct->_small_path($file); my $result = $ct->process_file($file); if ( $result->ok ) { $test->ok( 1, $desc ); } else { $test->ok( 0, $desc ); $test->diag( $result->error ); if ( $options{verbose} ) { my $orig = $result->orig_contents; my $new = $result->new_contents; if ( defined $orig && defined $new ) { $test->diag( diff( \$orig, \$new, { STYLE => 'Table' } ) ); } } } } } sub _msg_outputter { my $format = shift; $test->diag( sprintf $format, @_ ); } 1; # ABSTRACT: Check that all your files are tidy and valid according to tidyall __END__ =pod =head1 NAME Test::Code::TidyAll - Check that all your files are tidy and valid according to tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In a file like 't/tidyall.t': #!/usr/bin/perl use Test::Code::TidyAll; tidyall_ok(); =head1 DESCRIPTION Uses L to check that all the files in your project are in a tidied and valid state, i.e. that no plugins throw errors or would change the contents of the file. Does not actually modify any files. By default, looks for config file C or C<.tidyallrc> in the current directory and parent directories, which is generally the right place if you are running L. Passes mode = "test" by default; see L. C is exported by default. Any options will be passed along to the L constructor. For example, if you don't want to use the tidyall cache and instead check all files every time: tidyall_ok(no_cache => 1); or if you need to specify the config file: tidyall_ok(conf_file => '/path/to/conf/file'); =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/0000755000000000000000000000000012623441275015036 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll.pm0000644000000000000000000005061212623441275016742 0ustar rootrootpackage Code::TidyAll; use Cwd qw(realpath); use Code::TidyAll::Config::INI::Reader; use Code::TidyAll::Cache; use Code::TidyAll::CacheModel; use Code::TidyAll::Util qw(abs2rel basename can_load dirname dump_one_line mkpath read_dir rel2abs tempdir_simple uniq); use Code::TidyAll::Result; use Date::Format; use Digest::SHA qw(sha1_hex); use File::Find qw(find); use File::Slurp::Tiny qw(read_file write_file); use File::Zglob; use List::MoreUtils qw(uniq); use Moo; use Time::Duration::Parse qw(parse_duration); use Try::Tiny; use strict; use warnings; our $VERSION = '0.32'; sub default_conf_names { ( 'tidyall.ini', '.tidyallrc' ) } # External has 'backup_ttl' => ( is => 'ro', default => '1 hour' ); has 'cache' => ( is => 'lazy' ); has 'cache_model_class' => ( is => 'ro', default => 'Code::TidyAll::CacheModel' ); has 'check_only' => ( is => 'ro' ); has 'data_dir' => ( is => 'lazy' ); has 'iterations' => ( is => 'ro', default => 1 ); has 'list_only' => ( is => 'ro' ); has 'mode' => ( is => 'ro', default => 'cli' ); has 'msg_outputter' => ( is => 'ro', builder => '_build_msg_outputter' ); has 'no_backups' => ( is => 'ro' ); has 'no_cache' => ( is => 'ro' ); has 'output_suffix' => ( is => 'ro', default => q{} ); has 'plugins' => ( is => 'ro', required => 1 ); has 'quiet' => ( is => 'ro' ); has 'recursive' => ( is => 'ro' ); has 'refresh_cache' => ( is => 'ro' ); has 'root_dir' => ( is => 'ro', required => 1 ); has 'verbose' => ( is => 'ro' ); # Internal has 'backup_dir' => ( is => 'lazy', init_arg => undef, trigger => 1 ); has 'backup_ttl_secs' => ( is => 'lazy', init_arg => undef ); has 'base_sig' => ( is => 'lazy', init_arg => undef ); has 'plugin_objects' => ( is => 'lazy', init_arg => undef ); has 'plugins_for_mode' => ( is => 'lazy', init_arg => undef ); with 'Code::TidyAll::Role::Tempdir'; sub _build_backup_dir { my $self = shift; return $self->data_dir . "/backups"; } sub _build_backup_ttl_secs { my $self = shift; return parse_duration( $self->backup_ttl ); } sub _build_base_sig { my $self = shift; my $active_plugins = join( "|", map { $_->name } @{ $self->plugin_objects } ); return $self->_sig( [ $Code::TidyAll::VERSION || 0, $active_plugins ] ); } sub _build_cache { my $self = shift; return Code::TidyAll::Cache->new( cache_dir => $self->data_dir . "/cache" ); } sub _build_data_dir { my $self = shift; return $self->root_dir . "/.tidyall.d"; } sub _build_plugins_for_mode { my $self = shift; my $plugins = $self->plugins; if ( my $mode = $self->mode ) { $plugins = { map { ( $_, $plugins->{$_} ) } grep { $self->_plugin_conf_matches_mode( $plugins->{$_}, $mode ) } keys(%$plugins) }; } return $plugins; } sub _build_plugin_objects { my $self = shift; my @plugin_objects = map { $self->_load_plugin( $_, $self->plugins->{$_} ) } keys( %{ $self->plugins_for_mode } ); # Sort tidiers by weight (by default validators have a weight of 60 and non- # validators a weight of 50 meaning non-validators normally go first), then # alphabetical # TODO: These should probably sort in a consistent way independent of locale return [ sort { ( $a->weight <=> $b->weight ) || ( $a->name cmp $b->name ) } @plugin_objects ]; } sub BUILD { my ( $self, $params ) = @_; # Strict constructor # if ( my @bad_params = grep { !$self->can($_) } keys(%$params) ) { die sprintf( "unknown constructor param%s %s for %s", @bad_params > 1 ? "s" : "", join( ", ", sort map {"'$_'"} @bad_params ), ref($self) ); } $self->{root_dir} = realpath( $self->{root_dir} ); $self->{plugins_for_path} = {}; unless ( $self->no_backups ) { mkpath( $self->backup_dir, 0, 0775 ); $self->_purge_backups_periodically(); } } sub new_from_conf_file { my ( $class, $conf_file, %params ) = @_; die "no such file '$conf_file'" unless -f $conf_file; my $conf_params = $class->_read_conf_file($conf_file); my $main_params = delete( $conf_params->{'_'} ) || {}; %params = ( plugins => $conf_params, root_dir => realpath( dirname($conf_file) ), %$main_params, %params ); # Initialize with alternate class if given # if ( my $tidyall_class = delete( $params{tidyall_class} ) ) { die "cannot load '$tidyall_class'" unless can_load($tidyall_class); $class = $tidyall_class; } if ( $params{verbose} ) { my $msg_outputter = $params{msg_outputter} || $class->_build_msg_outputter(); $msg_outputter->( "constructing %s with these params: %s", $class, dump_one_line( \%params ) ); } return $class->new(%params); } sub _load_plugin { my ( $self, $plugin_name, $plugin_conf ) = @_; # Extract first name in case there is a description # my ($plugin_fname) = ( $plugin_name =~ /^(\S+)/ ); my $plugin_class = ( $plugin_fname =~ /^\+/ ? substr( $plugin_fname, 1 ) : "Code::TidyAll::Plugin::$plugin_fname" ); try { can_load($plugin_class) || die "not found"; } catch { die "could not load plugin class '$plugin_class': $_"; }; return $plugin_class->new( class => $plugin_class, name => $plugin_name, tidyall => $self, %$plugin_conf ); } sub _plugin_conf_matches_mode { my ( $self, $conf, $mode ) = @_; if ( my $only_modes = $conf->{only_modes} ) { return 0 if ( " " . $only_modes . " " ) !~ / $mode /; } if ( my $except_modes = $conf->{except_modes} ) { return 0 if ( " " . $except_modes . " " ) =~ / $mode /; } return 1; } sub process_all { my $self = shift; return $self->process_paths( $self->find_matched_files ); } sub process_paths { my ( $self, @paths ) = @_; return map { $self->process_path( realpath($_) || rel2abs($_) ) } @paths; } sub process_path { my ( $self, $path ) = @_; if ( -d $path ) { if ( $self->recursive ) { return $self->process_paths( map {"$path/$_"} read_dir($path) ); } else { return ( $self->_error_result( "$path: is a directory (try -r/--recursive)", $path ) ); } } elsif ( -f $path ) { return ( $self->process_file($path) ); } else { return ( $self->_error_result( "$path: not a file or directory", $path ) ); } } sub process_file { my ( $self, $full_path ) = @_; die "$full_path is not a file" unless -f $full_path; my $path = $self->_small_path($full_path); if ( $self->list_only ) { if ( my @plugins = $self->plugins_for_path($path) ) { printf( "%s (%s)\n", $path, join( ", ", map { $_->name } @plugins ) ); } return Code::TidyAll::Result->new( path => $path, state => 'checked' ); } my $cache_model = $self->_cache_model_for( $path, $full_path ); if ( $self->refresh_cache ) { $cache_model->remove; } elsif ( $cache_model->is_cached ) { $self->msg( "[cached] %s", $path ) if $self->verbose; return Code::TidyAll::Result->new( path => $path, state => 'cached' ); } my $contents = $cache_model->file_contents || read_file($full_path); my $result = $self->process_source( $contents, $path ); if ( $result->state eq 'tidied' ) { # backup original contents $self->_backup_file( $path, $contents ); # write new contents out to disk $contents = $result->new_contents; write_file( join( '', $full_path, $self->output_suffix ), $contents ); # change the in memory contents of the cache (but don't update yet) $cache_model->file_contents($contents) unless $self->output_suffix; } $cache_model->update if $result->ok; return $result; } sub _cache_model_for { my ( $self, $path, $full_path ) = @_; return $self->cache_model_class->new( path => $path, full_path => $full_path, cache_engine => $self->no_cache ? undef : $self->cache, base_sig => $self->base_sig, ); } sub process_source { my ( $self, $contents, $path ) = @_; die "contents and path required" unless defined($contents) && defined($path); my @plugins = $self->plugins_for_path($path); if ( !@plugins ) { $self->msg( "[no plugins apply%s] %s", $self->mode ? " for mode '" . $self->mode . "'" : "", $path ) if $self->verbose; return Code::TidyAll::Result->new( path => $path, state => 'no_match' ); } my $basename = basename($path); my $error; my $new_contents = my $orig_contents = $contents; my $plugin; if ( $self->verbose ) { $self->msg("[applying the following plugins: @plugins]"); } try { foreach my $method (qw(preprocess_source process_source_or_file postprocess_source)) { foreach $plugin (@plugins) { $new_contents = $plugin->$method( $new_contents, $basename ); } } } catch { chomp; $error = $_; $error = sprintf( "*** '%s': %s", $plugin->name, $_ ) if $plugin; }; my $was_tidied = !$error && ( $new_contents ne $orig_contents ); if ( $was_tidied && $self->check_only ) { $error = "*** needs tidying"; my $diff = q{}; foreach $plugin (@plugins) { $diff = $plugin->diff( $diff, $orig_contents, $new_contents, $path ); } $error .= "\n\n" . $diff if length $diff; undef $was_tidied; } if ( !$self->quiet || $error ) { my $status = $was_tidied ? "[tidied] " : "[checked] "; my $plugin_names = $self->verbose ? sprintf( " (%s)", join( ", ", map { $_->name } @plugins ) ) : ""; $self->msg( "%s%s%s", $status, $path, $plugin_names ); } if ($error) { return $self->_error_result( $error, $path, $orig_contents, $new_contents ); } elsif ($was_tidied) { return Code::TidyAll::Result->new( path => $path, state => 'tidied', orig_contents => $orig_contents, new_contents => $new_contents ); } else { return Code::TidyAll::Result->new( path => $path, state => 'checked' ); } } sub _read_conf_file { my ( $class, $conf_file ) = @_; my $conf_string = read_file($conf_file); my $root_dir = dirname($conf_file); $conf_string =~ s/\$ROOT/$root_dir/g; my $conf_hash = Code::TidyAll::Config::INI::Reader->read_string($conf_string); die "'$conf_file' did not evaluate to a hash" unless ( ref($conf_hash) eq 'HASH' ); return $conf_hash; } sub _backup_file { my ( $self, $path, $contents ) = @_; unless ( $self->no_backups ) { my $backup_file = join( "/", $self->backup_dir, $self->_backup_filename($path) ); mkpath( dirname($backup_file), 0, 0775 ); write_file( $backup_file, $contents ); } } sub _backup_filename { my ( $self, $path ) = @_; return join( "", $path, "-", time2str( "%Y%m%d-%H%M%S", time ), ".bak" ); } sub _purge_backups_periodically { my ($self) = @_; my $cache = $self->cache; my $last_purge_backups = $cache->get("last_purge_backups") || 0; if ( time > $last_purge_backups + $self->backup_ttl_secs ) { $self->_purge_backups(); $cache->set( "last_purge_backups", time() ); } } sub _purge_backups { my ($self) = @_; $self->msg("purging old backups") if $self->verbose; find( { follow => 0, wanted => sub { unlink $_ if -f && /\.bak$/ && time > ( stat($_) )[9] + $self->backup_ttl_secs; }, no_chdir => 1 }, $self->backup_dir ); } sub find_conf_file { my ( $class, $conf_names, $start_dir ) = @_; my $path1 = rel2abs($start_dir); my $path2 = realpath($start_dir); my $conf_file = $class->_find_conf_file_upward( $conf_names, $path1 ) || $class->_find_conf_file_upward( $conf_names, $path2 ); unless ( defined $conf_file ) { die sprintf( "could not find %s upwards from %s", join( " or ", @$conf_names ), ( $path1 eq $path2 ) ? "'$path1'" : "'$path1' or '$path2'" ); } return $conf_file; } sub _find_conf_file_upward { my ( $class, $conf_names, $search_dir ) = @_; $search_dir =~ s{/+$}{}; my $cnt = 0; while (1) { foreach my $conf_name (@$conf_names) { my $try_path = "$search_dir/$conf_name"; return $try_path if ( -f $try_path ); } if ( $search_dir eq '/' ) { return undef; } else { $search_dir = dirname($search_dir); } die "inf loop!" if ++$cnt > 100; } } sub find_matched_files { my ($self) = @_; my @matched_files; my $plugins_for_path = $self->{plugins_for_path}; my $root_length = length( $self->root_dir ); foreach my $plugin ( @{ $self->plugin_objects } ) { my @selected = grep { -f && !-l } $self->_zglob( $plugin->selects ); if ( @{ $plugin->ignores } ) { my %is_ignored = map { ( $_, 1 ) } $self->_zglob( $plugin->ignores ); @selected = grep { !$is_ignored{$_} } @selected; } if ( my $shebang = $plugin->shebang ) { my $re = join '|', map {quotemeta} split ' ', $shebang; $re = qr/^#!.*\b(?:$re)\b/; @selected = grep { my $fh; open $fh, '<', $_ and <$fh> =~ /$re/; } @selected; } push( @matched_files, @selected ); foreach my $file (@selected) { my $path = substr( $file, $root_length + 1 ); $plugins_for_path->{$path} ||= []; push( @{ $plugins_for_path->{$path} }, $plugin ); } } return sort( uniq(@matched_files) ); } sub plugins_for_path { my ( $self, $path ) = @_; $self->{plugins_for_path}->{$path} ||= [ grep { $_->matches_path($path) } @{ $self->plugin_objects } ]; return @{ $self->{plugins_for_path}->{$path} }; } sub _zglob { my ( $self, $globs ) = @_; local $File::Zglob::NOCASE = 0; my @files; foreach my $glob (@$globs) { try { push( @files, File::Zglob::zglob( join( "/", $self->root_dir, $glob ) ) ); } catch { die "error parsing '$glob': $_"; } } return uniq(@files); } sub _small_path { my ( $self, $path ) = @_; die sprintf( "'%s' is not underneath root dir '%s'!", $path, $self->root_dir ) unless index( $path, $self->root_dir ) == 0; return substr( $path, length( $self->root_dir ) + 1 ); } sub _sig { my ( $self, $data ) = @_; return sha1_hex( join( ",", @$data ) ); } sub msg { my ( $self, $format, @params ) = @_; $self->msg_outputter()->( $format, @params ); } sub _build_msg_outputter { return sub { my $format = shift; printf "$format\n", @_; }; } sub _error_result { my ( $self, $msg, $path, $orig_contents, $new_contents ) = @_; $self->msg( "%s", $msg ); return Code::TidyAll::Result->new( path => $path, state => 'error', error => $msg, orig_contents => $orig_contents, new_contents => $new_contents, ); } 1; # ABSTRACT: Engine for tidyall, your all-in-one code tidier and validator __END__ =pod =head1 NAME Code::TidyAll - Engine for tidyall, your all-in-one code tidier and validator =head1 VERSION version 0.32 =head1 SYNOPSIS use Code::TidyAll; my $ct = Code::TidyAll->new_from_conf_file( '/path/to/conf/file', ... ); # or my $ct = Code::TidyAll->new( root_dir => '/path/to/root', plugins => { perltidy => { select => 'lib/**/*.(pl|pm)', argv => '-noll -it=2', }, ... } ); # then... $ct->process_paths($file1, $file2); =head1 DESCRIPTION This is the engine used by L - read that first to get an overview. You can call this API from your own program instead of executing C. =encoding UTF-8 =head1 CONSTRUCTION =head2 Constructor methods =over =item new (%params) The regular constructor. Must pass at least I and I. =item new_with_conf_file ($conf_file, %params) Takes a conf file path, followed optionally by a set of key/value parameters. Reads parameters out of the conf file and combines them with the passed parameters (the latter take precedence), and calls the regular constructor. If the conf file or params defines I, then that class is constructed instead of C. =back =head2 Constructor parameters =over =item plugins Specify a hash of plugins, each of which is itself a hash of options. This is equivalent to what would be parsed out of the sections in the configuration file. =item cache_model_class The cache model class. Defaults to C =item cache The cache instance (e.g. an instance of C or a C instance.) An instance of C is automatically instantiated by default. =item backup_ttl =item check_only =item no_cleanup A boolean indicating if we should skip cleaning temporary files or not. Defaults to false. =item data_dir =item iterations =item mode =item no_backups =item no_cache =item output_suffix =item quiet =item root_dir =item verbose These options are the same as the equivalent C command-line options, replacing dashes with underscore (e.g. the C option becomes C here). =item msg_outputter This is a subroutine reference that is called whenever a message needs to be printed in some way. The sub receives a C format string followed by one or more parameters. The default sub used simply calls C but L overrides this to use the C<< Test::Builder->diag >> method. =back =head1 METHODS =over =item process_paths (path, ...) Call L on each file; descend recursively into each directory if the C flag is on. Return a list of L objects, one for each file. =item process_file (file) Process the I, meaning =over =item * Check the cache and return immediately if file has not changed =item * Apply appropriate matching plugins =item * Print success or failure result to STDOUT, depending on quiet/verbose settings =item * Write the cache if enabled =item * Return a L object =back =item process_source (I, I) Like L, but process the I string instead of a file, and do not read from or write to the cache. You must still pass the relative I from the root as the second argument, so that we know which plugins to apply. Return a L object. =item plugins_for_path (I) Given a relative I from the root, return a list of L objects that apply to it, or an empty list if no plugins apply. =item find_conf_file (I, I) Class method. Start in the I and work upwards, looking for one of the I. Return the pathname if found or throw an error if not found. =item find_matched_files Returns a list of sorted files that match at least one plugin in configuration. =back =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 CONTRIBUTORS =for stopwords Andy Jack George Hartzell Gregory Oschwald Joe Crotty Mark Fowler Grimes Olaf Alders Pedro Melo Sergey Romanov timgimyee =over 4 =item * Andy Jack =item * George Hartzell =item * Gregory Oschwald =item * Joe Crotty =item * Mark Fowler =item * Mark Grimes =item * Olaf Alders =item * Pedro Melo =item * Sergey Romanov =item * timgimyee =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/0000755000000000000000000000000012623441275016400 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/CacheModel.pm0000644000000000000000000000774412623441275020736 0ustar rootrootpackage Code::TidyAll::CacheModel; use Digest::SHA qw(sha1_hex); use File::Slurp::Tiny qw(read_file); use Moo; our $VERSION = '0.32'; # todo, type checking? has 'base_sig' => ( is => 'ro', default => "" ); has 'cache_engine' => ( is => 'ro' ); has 'cache_key' => ( is => 'lazy', clearer => 1 ); has 'cache_value' => ( is => 'lazy', clearer => 1 ); has 'file_contents' => ( is => 'rw', lazy => 1, builder => 1, trigger => 1, clearer => 1 ); has 'full_path' => ( is => 'ro', required => 1 ); has 'is_cached' => ( is => 'rw', lazy => 1, builder => 1, clearer => 1 ); has 'path' => ( is => 'ro', required => 1 ); sub _build_file_contents { my ($self) = @_; return read_file( $self->full_path ); } sub _trigger_file_contents { my $self = shift; $self->clear_cache_key; $self->clear_is_cached; $self->clear_cache_value; return; } sub _build_cache_key { my ($self) = @_; return 'sig/' . $self->path; } sub _build_cache_value { my ($self) = @_; # this stat isn't ideal, but it'll do my $last_mod = ( stat( $self->full_path ) )[9]; return $self->_sig( [ $self->base_sig, $last_mod, $self->file_contents ] ); } sub _build_is_cached { my ($self) = @_; my $cache_engine = $self->cache_engine or return; my $cached_value = $cache_engine->get( $self->cache_key ); return defined $cached_value && $cached_value eq $self->cache_value; } sub update { my ($self) = @_; my $cache_engine = $self->cache_engine or return; $cache_engine->set( $self->cache_key, $self->cache_value ); $self->is_cached(1); return; } sub remove { my ($self) = @_; my $cache_engine = $self->cache_engine or return; $cache_engine->remove( $self->cache_key ); return; } sub _sig { my ( $self, $data ) = @_; return sha1_hex( join( ",", @$data ) ); } 1; # ABSTRACT: Caching model for Code::TidyAll __END__ =pod =head1 NAME Code::TidyAll::CacheModel - Caching model for Code::TidyAll =head1 VERSION version 0.32 =head1 SYNOPSIS my $cache_model = Cody::TidyAll::CacheModel->new( cache_engine => Code::TidyAll::Cache->new(...), path => "/path/to/file/to/cache", ); # check cache print "Yes!" if $cache_model->is_cached; # update cache $cache_model->clear_file_contents; $cache_model->update; # update the cache when you know the file contents $cache_model->file_contents($new_content); $cache_model->update; # force removal from cache $cache_model->remove; =head1 DESCRIPTION A cache model for Code::TidyAll. Different subclasses can employ different caching techniques. The basic model implemented here is simple; It stores in the cache a hash key of the file contents keyed by a hash key of the file's path. =head2 Attributes =over =item full_path (required, ro) The full path to the file on disk =item path (required, ro) The local path to the file (i.e. what the cache system will consider the canonical name of the file) =item cache_engine (optional, default undef, ro) A C compatible instance, or, if no caching is required undef. =item base_sig (optional, default empty string, ro) A base signature. =item file_contents (optional, default loads file contents from disk, rw) =item is_cached (optional, default computed, rw) A flag indicating if this is cached. By default checks that the cache key and cache value match the cache. =back =head2 Methods =over =item cache_key The computed cache key for the file =item cache_value The computed cache value for the file =item update Updates the cache =item remove Attempts to remove the value from the cache =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Util/0000755000000000000000000000000012623441275017315 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Util/Zglob.pm0000644000000000000000000000541612623441275020736 0ustar rootroot# This is a copy of Text::Glob, modified to support "**/" # package Code::TidyAll::Util::Zglob; use strict; use Exporter; use vars qw/@ISA @EXPORT_OK $strict_leading_dot $strict_wildcard_slash/; @ISA = 'Exporter'; @EXPORT_OK = qw( zglobs_to_regex zglob_to_regex ); our $VERSION = '0.32'; $strict_leading_dot = 1; $strict_wildcard_slash = 1; use constant debug => 0; sub zglobs_to_regex { my @globs = @_; return @globs ? join( '|', map { "(?:" . zglob_to_regex($_) . ")" } @globs ) : qr/(?!)/; } sub zglob_to_regex { my $glob = shift; my $regex = zglob_to_regex_string($glob); return qr/^$regex$/; } sub zglob_to_regex_string { my $glob = shift; my ( $regex, $in_curlies, $escaping ); local $_; my $first_byte = 1; $glob =~ s/\*\*\//\cZ/g; # convert **/ to single character for ( $glob =~ m/(.)/gs ) { if ($first_byte) { if ($strict_leading_dot) { $regex .= '(?=[^\.])' unless $_ eq '.'; } $first_byte = 0; } if ( $_ eq '/' ) { $first_byte = 1; } if ( $_ eq '.' || $_ eq '(' || $_ eq ')' || $_ eq '|' || $_ eq '+' || $_ eq '^' || $_ eq '$' || $_ eq '@' || $_ eq '%' ) { $regex .= "\\$_"; } elsif ( $_ eq "\cZ" ) { # handle **/ - if escaping, only escape first * $regex .= $escaping ? ( "\\*" . ( $strict_wildcard_slash ? "[^/]*" : ".*" ) . "/" ) : ".*"; } elsif ( $_ eq '*' ) { $regex .= $escaping ? "\\*" : $strict_wildcard_slash ? "[^/]*" : ".*"; } elsif ( $_ eq '?' ) { $regex .= $escaping ? "\\?" : $strict_wildcard_slash ? "[^/]" : "."; } elsif ( $_ eq '{' ) { $regex .= $escaping ? "\\{" : "("; ++$in_curlies unless $escaping; } elsif ( $_ eq '}' && $in_curlies ) { $regex .= $escaping ? "}" : ")"; --$in_curlies unless $escaping; } elsif ( $_ eq ',' && $in_curlies ) { $regex .= $escaping ? "," : "|"; } elsif ( $_ eq "\\" ) { if ($escaping) { $regex .= "\\\\"; $escaping = 0; } else { $escaping = 1; } next; } else { $regex .= $_; $escaping = 0; } $escaping = 0; } print "# $glob $regex\n" if debug; return $regex; } 1; __END__ Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Config/0000755000000000000000000000000012623441275017605 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Config/INI/0000755000000000000000000000000012623441275020224 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Config/INI/Reader.pm0000644000000000000000000000101712623441275021763 0ustar rootrootpackage Code::TidyAll::Config::INI::Reader; use strict; use warnings; use base qw(Config::INI::Reader); our $VERSION = '0.32'; sub set_value { my ( $self, $name, $value ) = @_; if ( exists( $self->{data}{ $self->current_section }{$name} ) ) { die "cannot list multiple config values for '$name'" unless $name =~ /select|ignore/; $self->{data}{ $self->current_section }{$name} .= " " . $value; } else { $self->{data}{ $self->current_section }{$name} = $value; } } 1; Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Role/0000755000000000000000000000000012623441275017301 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Role/Tempdir.pm0000644000000000000000000000270412623441275021246 0ustar rootrootpackage Code::TidyAll::Role::Tempdir; use Moo::Role; use Cwd qw(realpath); use File::Temp qw(tempdir); our $VERSION = '0.32'; has '_tempdir' => ( is => 'ro', lazy => 1, builder => 1 ); has 'no_cleanup' => ( is => 'ro', default => 0 ); sub _build__tempdir { my ($self) = @_; return realpath( tempdir( 'Code-TidyAll-XXXX', TMPDIR => 1, CLEANUP => !$self->no_cleanup, ) ); } 1; # ABSTRACT: Provides a _tempdir attribute for Code::TidyAll classes __END__ =pod =head1 NAME Code::TidyAll::Role::Tempdir - Provides a _tempdir attribute for Code::TidyAll classes =head1 VERSION version 0.32 =head1 SYNOPSIS package Whatever; use Moo; with 'Code::TidyAll::Role::Tempdir'; =head1 DESCRIPTION A role to add tempdir attributes to classes. =encoding UTF-8 =head1 ATTRIBUTES =over =item _tempdir The temp directory. Lazily constructed if not passed =item no_cleanup A boolean indicating if the temp directory created by the C<_tempdir> builder should not automatically clean up after itself =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Git/0000755000000000000000000000000012623441275017123 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Git/Util.pm0000644000000000000000000000103612623441275020376 0ustar rootrootpackage Code::TidyAll::Git::Util; use Cwd qw(realpath); use Code::TidyAll::Util qw(pushd uniq); use IPC::System::Simple qw(capturex); use strict; use warnings; use base qw(Exporter); our $VERSION = '0.32'; our @EXPORT_OK = qw(git_uncommitted_files); sub git_uncommitted_files { my ($dir) = @_; $dir = realpath($dir); my $pushd = pushd($dir); my $output = capturex( "git", "status" ); my @files = ( $output =~ /(?:new file|modified):\s+(.*)/g ); @files = uniq( map {"$dir/$_"} @files ); return @files; } 1; Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Git/Prereceive.pm0000644000000000000000000002273512623441275021563 0ustar rootrootpackage Code::TidyAll::Git::Prereceive; use Code::TidyAll; use Code::TidyAll::Util qw(dirname realpath tempdir_simple); use Capture::Tiny qw(capture); use Digest::SHA qw(sha1_hex); use File::Slurp::Tiny qw(read_file write_file); use IPC::System::Simple qw(capturex run); use Moo; use Try::Tiny; our $VERSION = '0.32'; # Public has 'allow_repeated_push' => ( is => 'ro', default => 3 ); has 'conf_name' => ( is => 'ro' ); has 'extra_conf_files' => ( is => 'ro', default => sub { [] } ); has 'git_path' => ( is => 'ro', default => 'git' ); has 'reject_on_error' => ( is => 'ro' ); has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' ); has 'tidyall_options' => ( is => 'ro', default => sub { {} } ); sub check { my ( $class, %params ) = @_; my $fail_msg; try { my $self = $class->new(%params); my $root_dir = realpath(); local $ENV{GIT_DIR} = $root_dir; my $input = do { local $/; }; $fail_msg = $self->check_input($input); } catch { my $error = $_; if ( $params{reject_on_error} ) { die $error; } else { print STDERR "*** Error running pre-receive hook (allowing push to proceed):\n$error"; } }; die "$fail_msg\n" if $fail_msg; } sub check_input { my ( $self, $input ) = @_; my @lines = split( "\n", $input ); my ( @results, $tidyall ); foreach my $line (@lines) { chomp($line); my ( $base, $commit, $ref ) = split( /\s+/, $line ); # Create tidyall using configuration found in first commit # $tidyall ||= $self->create_tidyall($commit); my @files = $self->get_changed_files( $base, $commit ); foreach my $file (@files) { my $contents = $self->get_file_contents( $file, $commit ); if ( $contents =~ /\S/ && $contents =~ /\n/ ) { push( @results, $tidyall->process_source( $contents, $file ) ); } } } my $fail_msg; if ( my @error_results = grep { $_->error } @results ) { unless ( $self->check_repeated_push($input) ) { my $error_count = scalar(@error_results); $fail_msg = sprintf( "%d file%s did not pass tidyall check", $error_count, $error_count > 1 ? "s" : "" ); } } return $fail_msg; } sub create_tidyall { my ( $self, $commit ) = @_; my $temp_dir = tempdir_simple(); my @conf_names = $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names; my ($conf_file) = grep { $self->get_file_contents( $_, $commit ) } @conf_names or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) ); foreach my $rel_file ( $conf_file, @{ $self->extra_conf_files } ) { my $contents = $self->get_file_contents( $rel_file, $commit ) or die sprintf( "could not find file '%s' in repo root", $rel_file ); write_file( "$temp_dir/$rel_file", $contents ); } my $tidyall = $self->tidyall_class->new_from_conf_file( "$temp_dir/" . $conf_file, mode => 'commit', quiet => 1, %{ $self->tidyall_options }, no_cache => 1, no_backups => 1, check_only => 1, ); return $tidyall; } sub get_changed_files { my ( $self, $base, $commit ) = @_; my $output = capturex( $self->git_path, "diff", "--numstat", "--name-only", "$base..$commit" ); my @files = grep {/\S/} split( "\n", $output ); return @files; } sub get_file_contents { my ( $self, $file, $commit ) = @_; my ( $contents, $error ) = capture { system( $self->git_path, "show", "$commit:$file" ) }; return $contents; } sub check_repeated_push { my ( $self, $input ) = @_; if ( defined( my $allow = $self->allow_repeated_push ) ) { my $cwd = dirname( realpath($0) ); my $last_push_file = "$cwd/.prereceive_lastpush"; if ( -w $cwd || -w $last_push_file ) { my $push_sig = sha1_hex($input); if ( -f $last_push_file ) { my ( $last_push_sig, $count ) = split( /\s+/, read_file($last_push_file) ); if ( $last_push_sig eq $push_sig ) { ++$count; print STDERR "*** Identical push seen $count times\n"; if ( $count >= $allow ) { print STDERR "*** Allowing push to proceed despite errors\n"; unlink($last_push_file); return 1; } write_file( $last_push_file, join( " ", $push_sig, $count ) ); return 0; } } write_file( $last_push_file, join( " ", $push_sig, 1 ) ); } } return 0; } 1; # ABSTRACT: Git pre-receive hook that requires files to be tidyall'd __END__ =pod =head1 NAME Code::TidyAll::Git::Prereceive - Git pre-receive hook that requires files to be tidyall'd =head1 VERSION version 0.32 =head1 SYNOPSIS In .git/hooks/pre-receive: #!/usr/bin/perl use Code::TidyAll::Git::Prereceive; use strict; use warnings; Code::TidyAll::Git::Prereceive->check(); # or my $input = do { local $/; }; # Do other things with $input here my $hook = Code::TidyAll::Git::Prereceive->new(); if (my $error = $hook->check_input($input)) { die $error; } =head1 DESCRIPTION This module implements a L that checks if all pushed files are tidied and valid according to L, and rejects the push if not. This is typically used to validate pushes from multiple developers to a shared repo, possibly on a remote server. See also L, which operates locally. =head1 METHODS =over =item check (key/value params...) An all-in-one class method. Reads commit info from standard input, then checks that all files being added or modified in this push are tidied and valid according to L. If not, then the entire push is rejected and the reason(s) are output to the client. e.g. % git push Counting objects: 9, done. ... remote: [checked] lib/CHI/Util.pm remote: Code before strictures are enabled on line 13 [TestingAndDebugging::RequireUseStrict] remote: remote: 1 file did not pass tidyall check To ... ! [remote rejected] master -> master (pre-receive hook declined) The configuration file (C or C<.tidyallrc>) must be checked into git in the repo root directory, i.e. next to the .git directory. In an emergency the hook can be bypassed by pushing the exact same set of commits 3 consecutive times (configurable via L): % git push ... remote: 1 file did not pass tidyall check % git push ... *** Identical push seen 2 times remote: 1 file did not pass tidyall check % git push ... *** Identical push seen 3 times *** Allowing push to proceed despite errors Or you can disable the hook in the repo being pushed to, e.g. by renaming .git/hooks/pre-receive. If an unexpected runtime error occurs, it is reported but by default the commit will be allowed through (see L). Passes mode = "commit" by default; see L. Key/value parameters: =over =item allow_repeated_push Number of times a push must be repeated exactly after which it will be let through regardless of errors. Defaults to 3. Set to 0 or undef to disable this feature. =item conf_name Conf file name to search for instead of the defaults. =item extra_conf_files A listref of extra configuration files referred to from the main configuration file, e.g. extra_conf_files => ['perlcriticrc', 'perltidyrc'] These files will be pulled out of the repo alongside the main configuration file. If you don't list them here then you'll get errors like 'cannot find perlcriticrc' when the hook runs. =item git_path Path to git to use in commands, e.g. '/usr/bin/git' or '/usr/local/bin/git'. By default, just uses 'git', which will search the user's PATH. =item reject_on_error Whether C should reject the commit when an unexpected runtime error occurs. By default, the error will be reported but the commit will be allowed. =item tidyall_class Subclass to use instead of L =item tidyall_options Hashref of options to pass to the L constructor. You can use this to override the default options mode => 'commit', quiet => 1, or pass additional options. =back =item new (key/value params...) Constructor. Takes the same parameters documented in check(), above, and returns a new object which you can then call L on. =item check_input (input) Run a check on I, the text block of lines that came from standard input. You can call this manually before or after you do other processing on the input. Returns an error string if there was a problem, undef if no problems. =back =head1 KNOWN BUGS This hook will ignore any files with only a single line of content (no newlines), as an imperfect way of filtering out symlinks. =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Git/Precommit.pm0000644000000000000000000001474712623441275021435 0ustar rootrootpackage Code::TidyAll::Git::Precommit; use Capture::Tiny qw(capture_stdout capture_stderr); use Code::TidyAll; use Code::TidyAll::Util qw(dirname mkpath realpath tempdir_simple); use Cwd qw(cwd); use File::Slurp::Tiny qw(write_file); use Guard; use Log::Any qw($log); use IPC::System::Simple qw(capturex run); use Moo; use Try::Tiny; our $VERSION = '0.32'; # Public has 'conf_name' => ( is => 'ro' ); has 'git_path' => ( is => 'ro', default => 'git' ); has 'no_stash' => ( is => 'ro' ); has 'reject_on_error' => ( is => 'ro' ); has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' ); has 'tidyall_options' => ( is => 'ro', default => sub { {} } ); sub check { my ( $class, %params ) = @_; my $fail_msg; try { my $self = $class->new(%params); my $tidyall_class = $self->tidyall_class; # Find conf file at git root my $root_dir = capturex( $self->git_path, "rev-parse", "--show-toplevel" ); chomp($root_dir); my @conf_names = $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names; my ($conf_file) = grep {-f} map { join( "/", $root_dir, $_ ) } @conf_names or die sprintf( "could not find conf file %s", join( " or ", @conf_names ) ); # Store the stash, and restore it upon exiting this scope unless ( $self->no_stash ) { run( $self->git_path, "stash", "-q", "--keep-index" ); scope_guard { run( $self->git_path, "stash", "pop", "-q" ) }; } # Gather file paths to be committed my $output = capturex( $self->git_path, "status", "--porcelain" ); my @files = grep {-f} ( $output =~ /^[MA]\s+(.*)/gm ); my $tidyall = $tidyall_class->new_from_conf_file( $conf_file, no_cache => 1, check_only => 1, mode => 'commit', %{ $self->tidyall_options }, ); my @results = $tidyall->process_paths( map {"$root_dir/$_"} @files ); if ( my @error_results = grep { $_->error } @results ) { my $error_count = scalar(@error_results); $fail_msg = sprintf( "%d file%s did not pass tidyall check\n", $error_count, $error_count > 1 ? "s" : "" ); } } catch { my $error = $_; die "Error during pre-commit hook (use --no-verify to skip hook):\n$error"; }; die "$fail_msg\n" if $fail_msg; } 1; # ABSTRACT: Git pre-commit hook that requires files to be tidyall'd __END__ =pod =head1 NAME Code::TidyAll::Git::Precommit - Git pre-commit hook that requires files to be tidyall'd =head1 VERSION version 0.32 =head1 SYNOPSIS In .git/hooks/pre-commit: #!/usr/bin/env perl use strict; use warnings; use Code::TidyAll::Git::Precommit; Code::TidyAll::Git::Precommit->check(); =head1 DESCRIPTION This module implements a L that checks if all files are tidied and valid according to L, and rejects the commit if not. Files/commits are never modified by this hook. See also L, which validates pushes to a shared repo. =head1 METHODS =over =item check (key/value params...) Class method. Check that all files being added or modified in this commit are tidied and valid according to L. If not, then the entire commit is rejected and the reason(s) are output to the client. e.g. % git commit -m "fixups" CHI.pm CHI/Driver.pm 2 files did not pass tidyall check lib/CHI.pm: *** 'PerlTidy': needs tidying lib/CHI/Driver.pm: *** 'PerlCritic': Code before strictures are enabled at /tmp/Code-TidyAll-0e6K/Driver.pm line 2 [TestingAndDebugging::RequireUseStrict] In an emergency the hook can be bypassed by passing --no-verify to commit: % git commit --no-verify ... or you can just move C<.git/hooks/pre-commit> out of the way temporarily. The configuration file (C or C<.tidyallrc>) must be checked into git in the repo root directory i.e. next to the .git directory. The hook will stash any changes not in the index beforehand, and restore them afterwards, via git stash -q --keep-index .... git stash pop -q This means that if the configuration file has uncommitted changes that are not in the index, they will not affect the tidyall run. Passes mode = "commit" by default; see L. Key/value parameters: =over =item conf_name Conf file name to search for instead of the defaults. =item git_path Path to git to use in commands, e.g. '/usr/bin/git' or '/usr/local/bin/git'. By default, just uses 'git', which will search the user's PATH. =item no_stash Don't attempt to stash changes not in the index. This means the hook will process even files that are not going to be committed. =item tidyall_class Subclass to use instead of L =item tidyall_options Hashref of options to pass to the L constructor =back =back =head1 USING AND (NOT) ENFORCING THIS HOOK This hook must be placed manually in each copy of the repo - there is no way to automatically distribute or enforce it. However, you can make things easier on yourself or your developers as follows: =over =item * Create a directory called C at the top of your repo (note no dot prefix). mkdir -p git/hooks =item * Commit your pre-commit script in C containing: #!/usr/bin/env perl use strict; use warnings; use Code::TidyAll::Git::Precommit; Code::TidyAll::Git::Precommit->check(); =item * Add a setup script in C containing #!/bin/bash chmod +x git/hooks/pre-commit cd .git/hooks ln -s ../../git/hooks/pre-commit =item * Run C (or tell your developers to run it) once for each new clone of the repo =back More information on pre-commit hooks and the impossibility of enforcing them L. See also L, which enforces tidyall on pushes to a remote shared repository. =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Util.pm0000644000000000000000000000316412623441275017657 0ustar rootrootpackage Code::TidyAll::Util; use Cwd qw(realpath); use Data::Dumper; use File::Basename; use File::Path; use File::Spec::Functions qw(abs2rel rel2abs); use File::Temp qw(tempdir); use Guard; use List::MoreUtils qw(uniq); use Try::Tiny; use strict; use warnings; use base qw(Exporter); our $VERSION = '0.32'; our @EXPORT_OK = qw(abs2rel basename can_load dirname dump_one_line mkpath pushd read_dir realpath rel2abs tempdir_simple trim uniq); sub can_load { # Load $class_name if possible. Return 1 if successful, 0 if it could not be # found, and rethrow load error (other than not found). # my ($class_name) = @_; my $result; try { eval "require $class_name"; ## no critic die $@ if $@; $result = 1; } catch { if ( /Can\'t locate .* in \@INC/ && !/Compilation failed/ ) { $result = 0; } else { die $_; } }; return $result; } sub tempdir_simple { my $template = shift || 'Code-TidyAll-XXXX'; return realpath( tempdir( $template, TMPDIR => 1, CLEANUP => 1 ) ); } sub dump_one_line { my ($value) = @_; return Data::Dumper->new( [$value] )->Indent(0)->Sortkeys(1)->Quotekeys(0)->Terse(1)->Dump(); } sub pushd { my ($dir) = @_; my $cwd = realpath(); chdir($dir); return guard { chdir($cwd) }; } sub trim { my ($str) = @_; for ($str) { s/^\s+//; s/\s+$// } return $str; } sub read_dir { my ($dir) = @_; opendir( my $dirh, $dir ) or die "could not open $dir: $!"; my @dir_entries = grep { $_ ne "." && $_ ne ".." } readdir($dirh); return @dir_entries; } 1; Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin.pm0000644000000000000000000002074312623441275020202 0ustar rootrootpackage Code::TidyAll::Plugin; use Code::TidyAll::Util qw(basename); use Code::TidyAll::Util::Zglob qw(zglobs_to_regex); use File::Slurp::Tiny qw(read_file write_file); use Scalar::Util qw(weaken); use Moo; our $VERSION = '0.32'; # External has 'argv' => ( is => 'ro', default => q{} ); has 'class' => ( is => 'ro' ); has 'cmd' => ( is => 'lazy' ); has 'ignore' => ( is => 'ro' ); has 'is_tidier' => ( is => 'lazy' ); has 'is_validator' => ( is => 'lazy' ); has 'name' => ( is => 'ro', required => 1 ); has 'select' => ( is => 'ro' ); has 'shebang' => ( is => 'ro' ); has 'tidyall' => ( is => 'ro', required => 1, weak_ref => 1 ); has 'weight' => ( is => 'lazy' ); # Internal has 'ignore_regex' => ( is => 'lazy' ); has 'ignores' => ( is => 'lazy' ); has 'select_regex' => ( is => 'lazy' ); has 'selects' => ( is => 'lazy' ); sub _build_cmd { die "no default cmd specified"; } sub _build_selects { my ($self) = @_; die sprintf( "select is required for '%s'", $self->name ) unless defined( $self->select ); return $self->_parse_zglob_list( $self->select ); } sub _build_select_regex { my ($self) = @_; return zglobs_to_regex( @{ $self->selects } ); } sub _build_ignores { my ($self) = @_; return $self->_parse_zglob_list( $self->ignore ); } sub _build_ignore_regex { my ($self) = @_; return zglobs_to_regex( @{ $self->ignores } ); } sub _build_is_tidier { my ($self) = @_; return ( $self->can('transform_source') || $self->can('transform_file') ) ? 1 : 0; } sub _build_is_validator { my ($self) = @_; return ( $self->can('validate_source') || $self->can('validate_file') ) ? 1 : 0; } # default weight sub _build_weight { my ($self) = @_; return 60 if $self->is_validator; return 50; } sub BUILD { my ( $self, $params ) = @_; # Strict constructor # $self->validate_params($params); } sub validate_params { my ( $self, $params ) = @_; delete( $params->{only_modes} ); delete( $params->{except_modes} ); if ( my @bad_params = grep { !$self->can($_) } keys(%$params) ) { die sprintf( "unknown option%s %s for plugin '%s'", @bad_params > 1 ? "s" : "", join( ", ", sort map {"'$_'"} @bad_params ), $self->name ); } } sub _parse_zglob_list { my ( $self, $zglob_list ) = @_; $zglob_list = '' if !defined($zglob_list); my @zglobs = split( /\s+/, $zglob_list ); if ( my ($bad_zglob) = ( grep {m{^/}} @zglobs ) ) { die "zglob '$bad_zglob' should not begin with slash"; } return \@zglobs; } # No-ops by default; may be overridden in subclass sub preprocess_source { return $_[1]; } sub postprocess_source { return $_[1]; } sub diff { return $_[1]; } sub process_source_or_file { my ( $self, $source, $basename ) = @_; if ( $self->can('transform_source') ) { foreach my $iter ( 1 .. $self->tidyall->iterations ) { $source = $self->transform_source($source); } } if ( $self->can('transform_file') ) { my $tempfile = $self->_write_temp_file( $basename, $source ); foreach my $iter ( 1 .. $self->tidyall->iterations ) { $self->transform_file($tempfile); } $source = read_file($tempfile); } if ( $self->can('validate_source') ) { $self->validate_source($source); } if ( $self->can('validate_file') ) { my $tempfile = $self->_write_temp_file( $basename, $source ); $self->validate_file($tempfile); } return $source; } sub _write_temp_file { my ( $self, $basename, $source ) = @_; my $tempfile = join( "/", $self->tidyall->_tempdir(), $basename ); write_file( $tempfile, $source ); return $tempfile; } sub matches_path { my ( $self, $path ) = @_; return $path =~ $self->select_regex && $path !~ $self->ignore_regex; } 1; # ABSTRACT: Create plugins for tidying or validating code __END__ =pod =head1 NAME Code::TidyAll::Plugin - Create plugins for tidying or validating code =head1 VERSION version 0.32 =head1 SYNOPSIS package Code::TidyAll::Plugin::SomeTidier; use Moo; extends 'Code::TidyAll::Plugin'; sub transform_source { my ( $self, $source ) = @_; ... return $source; } package Code::TidyAll::Plugin::SomeValidator; use Moo; extends 'Code::TidyAll::Plugin'; sub validate_file { my ( $self, $file ) = @_; die "not valid" if ...; } =head1 DESCRIPTION To use a tidier or validator with C it must have a corresponding plugin class that inherits from this class. This document describes how to implement a new plugin. The easiest way to start is to look at existing plugins, such as L and L. =head1 NAMING If you are going to publicly release your plugin, call it 'Code::TidyAll::Plugin::I' so that users can find it easily and refer to it by its short name in configuration. If it's an internal plugin, you can call it whatever you like and refer to it with a plus sign prefix in the config file, e.g. [+My::Tidier::Class] select = **/*.{pl,pm,t} =head1 CONSTRUCTOR AND ATTRIBUTES Your plugin constructor will be called with the configuration key/value pairs as parameters. e.g. given [PerlCritic] select = lib/**/*.pm ignore = lib/UtterHack.pm argv = -severity 3 then L would be constructed with parameters select => 'lib/**/*.pm', ignore = 'lib/UtterHack.pm', argv = '-severity 3' The following attributes are part of this base class. Your subclass can declare others, of course. =over =item argv A standard attribute for passing command line arguments. =item cmd A standard attribute for specifying the name of the command to run, e.g. "/usr/local/bin/perlcritic". =item is_validator An attribute that indicates if this is a validator or not; By default this returns true if either C or C methods have been implemented. =item name Name of the plugin to be used in error messages etc. =item tidyall A weak reference back to the L object. =item select, ignore Select and ignore patterns - you can ignore these. =item weight A number indicating the relative weight of the plugin, used to calculate the order the plugins will execute in. The lower the number the sooner the plugin will be executed. By default the weight will be C<50> for non validators (anything where C returns false) and C<60> for validators (anything where C returns true.) The order of plugin execution is determined first by the value of the C attribute, and then (if multiple plugins have the same weight>) by sorting by the name of module. =back =head1 METHODS Your plugin may define one or more of these methods. They are all no-ops by default. =over =item preprocess_source ($source) Receives source code as a string; returns the processed string, or dies with error. This runs on all plugins I any of the other methods. =item transform_source ($source) Receives source code as a string; returns the transformed string, or dies with error. This is repeated multiple times if --iterations was passed or specified in the configuration file. =item transform_file ($file) Receives filename; transforms the file in place, or dies with error. Note that the file will be a temporary copy of the user's file with the same basename; your changes will only propagate back if there was no error reported from any plugin. This is repeated multiple times if --iterations was passed or specified in the configuration file. =item validate_source ($source) Receives source code as a string; dies with error if invalid. Return value will be ignored. =item validate_file ($file) Receives filename; validates file and dies with error if invalid. Should not modify file! Return value will be ignored. =item postprocess_source ($source) Receives source code as a string; returns the processed string, or dies with error. This runs on all plugins I any of the other methods. =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/CacheModel/0000755000000000000000000000000012623441275020364 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/CacheModel/Shared.pm0000644000000000000000000000305712623441275022135 0ustar rootrootpackage Code::TidyAll::CacheModel::Shared; use Moo; extends 'Code::TidyAll::CacheModel'; our $VERSION = '0.32'; sub _build_cache_key { my $self = shift; return $self->_sig( [ $self->SUPER::_build_cache_key, $self->file_contents ] ); } sub _build_cache_value { return 1; } sub remove { return; } 1; # ABSTRACT: Shared cache model for Code::TidyAll __END__ =pod =head1 NAME Code::TidyAll::CacheModel::Shared - Shared cache model for Code::TidyAll =head1 VERSION version 0.32 =head1 SYNOPSIS my $cta = Code::TidyAll->new( cache_model_class => 'Code::TidyAll::CacheModel::Shared', ... ); =head1 DESCRIPTION An alternative caching model for Code::TidyAll designed to work in shared build systems / systems with lots of branches. This cache model uses both the file name and file contents to build the cache key and a meaningless cache value. It does not care about the modification time of the file. This allows you to share a cache when you might have several versions of a file that you switch backwards and forwards between (e.g. when you're working on several branches) and keep the cache values =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/0000755000000000000000000000000012623441275017636 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/DiffOnTidyError.pm0000644000000000000000000000351612623441275023212 0ustar rootrootpackage Code::TidyAll::Plugin::DiffOnTidyError; use strict; use warnings; use File::Basename qw( basename ); use File::Which qw( which ); use IPC::Run3 qw( run3 ); use Moo; our $VERSION = '0.32'; extends 'Code::TidyAll::Plugin'; with 'Code::TidyAll::Role::Tempdir'; sub diff { my $self = shift; my $diff = shift; my $orig = shift; my $new = shift; my $path = shift; my $cmd = which('diff'); die 'Could not find a diff command in your $PATH' unless $cmd; my $orig_file = $self->_write_temp_file( basename($path) . '.orig', $orig ); my $new_file = $self->_write_temp_file( basename($path) . '.new', $new ); my $output; run3( [ $cmd, '-u', $orig_file, $new_file ], \undef, \$output, \$output, ); return $output; } 1; # ABSTRACT: Include a diff in error message when code needs tidying __END__ =pod =head1 NAME Code::TidyAll::Plugin::DiffOnTidyError - Include a diff in error message when code needs tidying =head1 VERSION version 0.32 =head1 SYNOPSIS # In configuration: [DiffOnTidyError] select = **/* =head1 DESCRIPTION When running L in C mode, for example via L, this plugin adds a diff to the output when a file needs to be tidied. This plugin uses the F command, and will simply die if it cannot find one in your C<$PATH>. This is helpful if you're trying to figure out what a test is failing on. =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/MasonTidy.pm0000644000000000000000000000260012623441275022101 0ustar rootrootpackage Code::TidyAll::Plugin::MasonTidy; use Mason::Tidy; use Mason::Tidy::App; use Moo; use Text::ParseWords qw(shellwords); extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'masontidy'} sub transform_source { my ( $self, $source ) = @_; local @ARGV = shellwords( $self->argv ); local $ENV{MASONTIDY_OPT}; my $dest = Mason::Tidy::App->run($source); return $dest; } 1; # ABSTRACT: Use masontidy with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::MasonTidy - Use masontidy with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [MasonTidy] select = comps/**/*.{mc,mi} argv = --indent-perl-block 0 --perltidy-argv "-noll -l=78" =head1 DESCRIPTION Runs L, a tidier for L and L components. =head1 INSTALLATION Install L from CPAN. cpanm masontidy =head1 CONFIGURATION =over =item argv Arguments to pass to masontidy =item cmd Full path to masontidy =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PodChecker.pm0000644000000000000000000000324412623441275022206 0ustar rootrootpackage Code::TidyAll::Plugin::PodChecker; use Pod::Checker; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; has 'warnings' => ( is => 'ro' ); sub validate_file { my ( $self, $file ) = @_; my $result; my %options = ( defined( $self->warnings ) ? ( '-warnings' => $self->warnings ) : () ); my $checker = Pod::Checker->new(%options); my $output; open my $fh, '>', \$output; $checker->parse_from_file( $file, $fh ); die $output if $checker->num_errors > 0 || ( $self->warnings && $checker->num_warnings > 0 ); } 1; # ABSTRACT: Use podchecker with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PodChecker - Use podchecker with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: ; Check for errors, but ignore warnings ; [PodChecker] select = lib/**/*.{pm,pod} ; Die on level 1 warnings (can also be set to 2) ; [PodChecker] select = lib/**/*.{pm,pod} warnings = 1 =head1 DESCRIPTION Runs L, a POD validator, and dies if any problems were found. =head1 INSTALLATION Install podchecker from CPAN. cpanm podchecker =head1 CONFIGURATION =over =item warnings Level of warnings to consider as errors - 1 or 2. By default, warnings will be ignored. =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/JSLint.pm0000644000000000000000000000252412623441275021342 0ustar rootrootpackage Code::TidyAll::Plugin::JSLint; use IPC::Run3 qw(run3); use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'jslint'} sub validate_file { my ( $self, $file ) = @_; my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file ); my $output; run3( $cmd, \undef, \$output, \$output ); die "$output\n" if $output !~ /is OK\./; } 1; # ABSTRACT: Use jslint with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::JSLint - Use jslint with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [JSLint] select = static/**/*.js argv = --white --vars --regex =head1 DESCRIPTION Runs L, a JavaScript validator, and dies if any problems were found. =head1 INSTALLATION Install L, then run npm install jslint =head1 CONFIGURATION =over =item argv Arguments to pass to jslint =item cmd Full path to jslint =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/SortLines.pm0000644000000000000000000000205512623441275022120 0ustar rootrootpackage Code::TidyAll::Plugin::SortLines; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub transform_source { my ( $self, $source ) = @_; return join( "\n", sort( grep {/\S/} split( /\n/, $source ) ) ) . "\n"; } 1; # ABSTRACT: Sort the lines in a file __END__ =pod =head1 NAME Code::TidyAll::Plugin::SortLines - Sort the lines in a file =head1 VERSION version 0.32 =head1 SYNOPSIS # In configuration: [SortLines] select = .ispell* **/.gitignore =head1 DESCRIPTION Sorts the lines of a file; whitespace lines are discarded. Useful for files containing one entry per line, such as C<.svnignore>, C<.gitignore>, and C<.ispell*>. =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm0000644000000000000000000000302512623441275022733 0ustar rootrootpackage Code::TidyAll::Plugin::PHPCodeSniffer; use IPC::Run3; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'phpcs'} sub validate_file { my ( $self, $file ) = @_; my @cmd = ( $self->cmd, $self->argv, $file ); my $output; run3( \@cmd, \undef, \$output, \$output ); if ( $? > 0 ) { $output ||= "problem running " . $self->cmd; die "$output\n"; } } 1; # ABSTRACT: Use phpcs with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PHPCodeSniffer - Use phpcs with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [PHPCodeSniffer] select = htdocs/**/*.{php,js,css} cmd = /usr/local/pear/bin/phpcs argv = --severity 4 =head1 DESCRIPTION Runs L which analyzes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards. =head1 INSTALLATION Install L, then install C from PEAR: pear install PHP_CodeSniffer =head1 CONFIGURATION =over =item argv Arguments to pass to C =item cmd Full path to C =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/JSON.pm0000644000000000000000000000267712623441275020761 0ustar rootrootpackage Code::TidyAll::Plugin::JSON; use strict; use warnings; use JSON::MaybeXS (); use Moo; our $VERSION = '0.32'; extends 'Code::TidyAll::Plugin'; has 'ascii' => ( is => 'ro', default => 0 ); sub transform_source { my $self = shift; my $source = shift; my $json = JSON::MaybeXS->new( canonical => 1, pretty => 1, relaxed => 1, utf8 => 1, ); $json = $json->ascii if $self->ascii; return $json->encode( $json->decode($source) ); } 1; # ABSTRACT: Use the JSON::MaybeXS module to tidy JSON documents with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::JSON - Use the JSON::MaybeXS module to tidy JSON documents with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [JSON] select = **/*.json ascii = 1 =head1 DESCRIPTION Uses L to format JSON files. Files are put into a canonical format with the keys of objects sorted. =head1 CONFIGURATION =over =item ascii Escape non-ASCII characters. The output file will be valid ASCII. =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/CSSUnminifier.pm0000644000000000000000000000141712623441275022655 0ustar rootrootpackage Code::TidyAll::Plugin::CSSUnminifier; use IPC::System::Simple qw(run); use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'cssunminifier'} sub transform_file { my ( $self, $file ) = @_; run( $self->cmd, $self->argv, $file, $file ); } 1; # ABSTACT: Use cssunminifier with tidyall __END__ =pod =head1 SYNOPSIS In configuration: [CSSUnminifier] select = static/**/*.css argv = -w=2 =head1 DESCRIPTION Runs L, a simple CSS tidier. =head1 INSTALLATION Install L, then run npm install cssunminifier -g =head1 CONFIGURATION =over =item argv Arguments to pass to C =item cmd Full path to C =back Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PerlTidySweet.pm0000644000000000000000000000450312623441275022742 0ustar rootrootpackage Code::TidyAll::Plugin::PerlTidySweet; use Capture::Tiny qw(capture_merged); use Perl::Tidy::Sweetened 1.00; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub transform_source { my ( $self, $source ) = @_; # perltidy reports errors in two different ways. # Argument/profile errors are output and an error_flag is returned. # Syntax errors are sent to errorfile or stderr, depending on the # the setting of -se/-nse (aka --standard-error-output). These flags # might be hidden in other bundles, e.g. -pbp. Be defensive and # check both. my ( $output, $error_flag, $errorfile, $stderr, $destination ); $output = capture_merged { $error_flag = Perl::Tidy::Sweetened::perltidy( argv => $self->argv, source => \$source, destination => \$destination, stderr => \$stderr, errorfile => \$errorfile ); }; die $stderr if $stderr; die $errorfile if $errorfile; die $output if $error_flag; print STDERR $output if defined($output); return $destination; } 1; # ABSTRACT: Use perltidy-sweet with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PerlTidySweet - Use perltidy-sweet with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS # In configuration: ; Configure in-line ; [PerlTidySweet] select = lib/**/*.pm argv = --noll ; or refer to a .perltidyrc in the same directory ; [PerlTidySweet] select = lib/**/*.pm argv = --profile=$ROOT/.perltidyrc =head1 DESCRIPTION Runs L, a Perl tidier based on Perl::Tidy that also supports new syntactic sugar as provided by L, L and the p5-mop. =head1 INSTALLATION Install perltidy-sweet from CPAN. cpanm Perl::Tidy::Sweet =head1 CONFIGURATION =over =item argv Arguments to pass to perltidy-sweet =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PodTidy.pm0000644000000000000000000000270312623441275021552 0ustar rootrootpackage Code::TidyAll::Plugin::PodTidy; use Capture::Tiny qw(capture_merged); use Pod::Tidy; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; has 'columns' => ( is => 'ro' ); sub transform_file { my ( $self, $file ) = @_; my $output = capture_merged { Pod::Tidy::tidy_files( files => [$file], inplace => 1, nobackup => 1, verbose => 1, ( $self->columns ? ( columns => $self->columns ) : () ), ); }; die $output if $output =~ /\S/ && $output !~ /does not contain Pod/; } 1; # ABSTRACT: Use podtidy with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PodTidy - Use podtidy with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [PodTidy] select = lib/**/*.{pm,pod} columns = 90 =head1 DESCRIPTION Runs L, which will tidy the POD in your Perl or POD-only file. =head1 INSTALLATION Install podtidy from CPAN. cpanm podtidy =head1 CONFIGURATION =over =item columns Number of columns per line =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PodSpell.pm0000644000000000000000000000603712623441275021724 0ustar rootrootpackage Code::TidyAll::Plugin::PodSpell; use Code::TidyAll::Util qw(basename uniq); use Capture::Tiny qw(); use IPC::System::Simple qw(); use IPC::Run3; use Pod::Spell; use Moo; use Text::ParseWords qw(shellwords); extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; has 'ispell_argv' => ( is => 'ro', default => q{} ); has 'ispell_cmd' => ( is => 'ro', default => 'ispell' ); has 'suggest' => ( is => 'ro' ); sub validate_file { my ( $self, $file ) = @_; my ( $text, $error ) = Capture::Tiny::capture { Pod::Spell->new->parse_from_file($file) }; die $error if $error; my ($output); my @cmd = ( $self->ispell_cmd, shellwords( $self->ispell_argv ), "-a" ); eval { run3( \@cmd, \$text, \$output, \$error ) }; $error = $@ if $@; die "error running '" . join( " ", @cmd ) . "': " . $error if $error; my ( @errors, %seen ); foreach my $line ( split( "\n", $output ) ) { if ( my ( $original, $remaining ) = ( $line =~ /^[\&\?\#] (\S+)\s+(.*)/ ) ) { if ( !$seen{$original}++ ) { my ($suggestions) = ( $remaining =~ /: (.*)/ ); if ( $suggestions && $self->suggest ) { push( @errors, sprintf( "%s (suggestions: %s)", $original, $suggestions ) ); } else { push( @errors, $original ); } } } } die sprintf( "unrecognized words:\n%s\n", join( "\n", sort @errors ) ) if @errors; } 1; # ABSTRACT: Use Pod::Spell + ispell with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PodSpell - Use Pod::Spell + ispell with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [PodSpell] select = lib/**/*.{pm,pod} ispell_argv = -p $ROOT/.ispell_english suggest = 1 =head1 DESCRIPTION Uses L in combination with L to spell-check POD. Any seemingly misspelled words will be output one per line. You can specify additional valid words by: =over =item * Adding them to your personal ispell dictionary, e.g. ~/.ispell_english =item * Adding them to an ispell dictionary in the project root, then including this in the configuration: ispell_argv = -p $ROOT/.ispell_english =back The dictionary file should contain one word per line. =head1 INSTALLATION Install ispell from your package manager or from the link above. =head1 CONFIGURATION =over =item ispell_argv Arguments to pass to ispell. "-a" will always be passed, in order to parse the results. =item ispell_cmd Full path to ispell =item suggest If true, show suggestions next to misspelled words. Default is false. =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PerlTidy.pm0000644000000000000000000000413012623441275021726 0ustar rootrootpackage Code::TidyAll::Plugin::PerlTidy; use Capture::Tiny qw(capture_merged); use Perl::Tidy; use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub transform_source { my ( $self, $source ) = @_; # perltidy reports errors in two different ways. # Argument/profile errors are output and an error_flag is returned. # Syntax errors are sent to errorfile or stderr, depending on the # the setting of -se/-nse (aka --standard-error-output). These flags # might be hidden in other bundles, e.g. -pbp. Be defensive and # check both. my ( $output, $error_flag, $errorfile, $stderr, $destination ); $output = capture_merged { $error_flag = Perl::Tidy::perltidy( argv => $self->argv, source => \$source, destination => \$destination, stderr => \$stderr, errorfile => \$errorfile ); }; die $stderr if $stderr; die $errorfile if $errorfile; die $output if $error_flag; print STDERR $output if defined($output); return $destination; } 1; # ABSTRACT: Use perltidy with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PerlTidy - Use perltidy with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS # In configuration: ; Configure in-line ; [PerlTidy] select = lib/**/*.pm argv = --noll ; or refer to a .perltidyrc in the same directory ; [PerlTidy] select = lib/**/*.pm argv = --profile=$ROOT/.perltidyrc =head1 DESCRIPTION Runs L, a Perl tidier. =head1 INSTALLATION Install perltidy from CPAN. cpanm perltidy =head1 CONFIGURATION =over =item argv Arguments to pass to perltidy =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/JSHint.pm0000644000000000000000000000530012623441275021331 0ustar rootrootpackage Code::TidyAll::Plugin::JSHint; use Code::TidyAll::Util qw(tempdir_simple); use File::Slurp::Tiny qw(write_file); use IPC::Run3 qw(run3); use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub validate_params { my ( $self, $params ) = @_; delete( $params->{options} ); return $self->SUPER::validate_params($params); } sub _build_cmd {'jshint'} sub BUILDARGS { my ( $class, %params ) = @_; if ( my $options_string = $params{options} ) { my @options = split( /\s+/, $options_string ); my $conf_dir = tempdir_simple(); my $conf_file = "$conf_dir/jshint.json"; write_file( $conf_file, '{ ' . join( ",\n", map {"\"$_\": true"} @options ) . ' }' ); $params{argv} ||= ""; $params{argv} .= " --config $conf_file"; } return \%params; } sub validate_file { my ( $self, $file ) = @_; my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file ); my $output; run3( $cmd, \undef, \$output, \$output ); if ( $output =~ /\S/ ) { $output =~ s/^$file:\s*//gm; die "$output\n"; } } 1; # ABSTRACT: Use jshint with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::JSHint - Use jshint with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: ; With default settings ; [JSHint] select = static/**/*.js ; Specify options inline ; [JSHint] select = static/**/*.js options = bitwise camelcase latedef ; or refer to a jshint.json config file in the same directory ; [JSHint] select = static/**/*.js argv = --config $ROOT/jshint.json where jshint.json looks like { "bitwise": true, "camelcase": true, "latedef": true } =head1 DESCRIPTION Runs L, a JavaScript validator, and dies if any problems were found. =head1 INSTALLATION See installation options at L. One easy method is to install L, then run npm install jshint -g =head1 CONFIGURATION =over =item argv Arguments to pass to jshint =item cmd Full path to jshint =item options A whitespace separated string of options, as documented L. These will be written to a temporary config file and passed as --config to argv. =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/JSBeautify.pm0000644000000000000000000000324512623441275022205 0ustar rootrootpackage Code::TidyAll::Plugin::JSBeautify; use File::Slurp::Tiny qw(write_file); use IPC::Run3 qw(run3); use Moo; use Try::Tiny; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'js-beautify'} sub transform_file { my ( $self, $file ) = @_; try { my $cmd = join( " ", $self->cmd, $self->argv, $file ); my $output; run3( $cmd, \undef, \$output, \$output ); write_file( $file, $output ); } catch { die sprintf( "%s exited with error - possibly bad arg list '%s'\n $_", $self->cmd, $self->argv ); }; } 1; # ABSTRACT: Use js-beautify with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::JSBeautify - Use js-beautify with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: [JSBeautify] select = static/**/*.js argv = --indent-size 2 --brace-style expand =head1 DESCRIPTION Runs L, a JavaScript tidier. =head1 INSTALLATION Install L, then run npm install js-beautify -g Do not confuse this with the C package (without the dash). =head1 CONFIGURATION =over =item argv Arguments to pass to js-beautify =item cmd Full path to js-beautify =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Plugin/PerlCritic.pm0000644000000000000000000000274112623441275022240 0ustar rootrootpackage Code::TidyAll::Plugin::PerlCritic; use IPC::Run3 qw(run3); use Moo; extends 'Code::TidyAll::Plugin'; our $VERSION = '0.32'; sub _build_cmd {'perlcritic'} sub validate_file { my ( $self, $file ) = @_; my $cmd = sprintf( "%s %s %s", $self->cmd, $self->argv, $file ); my $output; run3( $cmd, \undef, \$output, \$output ); die "$output\n" if $output !~ /^.* source OK\n/s; } 1; # ABSTRACT: Use perlcritic with tidyall __END__ =pod =head1 NAME Code::TidyAll::Plugin::PerlCritic - Use perlcritic with tidyall =head1 VERSION version 0.32 =head1 SYNOPSIS In configuration: ; Configure in-line ; [PerlCritic] select = lib/**/*.pm argv = --severity 5 --exclude=nowarnings ; or refer to a .perlcriticrc in the same directory ; [PerlCritic] select = lib/**/*.pm argv = --profile $ROOT/.perlcriticrc =head1 DESCRIPTION Runs L, a Perl validator, and dies if any problems were found. =head1 INSTALLATION Install perlcritic from CPAN. cpanm perlcritic =head1 CONFIGURATION =over =item argv Arguments to pass to perlcritic =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Result.pm0000644000000000000000000000406012623441275020214 0ustar rootrootpackage Code::TidyAll::Result; use Moo; our $VERSION = '0.32'; has 'error' => ( is => 'ro' ); has 'new_contents' => ( is => 'ro' ); has 'orig_contents' => ( is => 'ro' ); has 'path' => ( is => 'ro' ); has 'state' => ( is => 'ro' ); sub ok { return $_[0]->state ne 'error' } 1; # ABSTRACT: Result returned from processing a file/source __END__ =pod =head1 NAME Code::TidyAll::Result - Result returned from processing a file/source =head1 VERSION version 0.32 =head1 SYNOPSIS my $ct = Code::TidyAll->new(...); my $result = $ct->process_file($file); if ($result->error) { ... } =head1 DESCRIPTION Represents the result of L and L. A list of these is returned from L. =head1 METHODS =over =item path The path that was processed, relative to the root (e.g. "lib/Foo.pm") =item state A string, one of =over =item C - No plugins matched this file =item C - Cache hit (file had not changed since last processed) =item C - An error occurred while applying one of the plugins =item C - File was successfully checked and did not change =item C - File was successfully checked and changed =back =item orig_contents Contains the original contents if state is 'tidied' and with some errors (like when a file needs tidying in check-only mode) =item new_contents Contains the new contents if state is 'tidied' =item error Contains the error message if state is 'error' =item ok Returns true iff state is not 'error' =back =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/SVN/0000755000000000000000000000000012623441275017046 5ustar rootrootCode-TidyAll-0.32~dfsg/lib/Code/TidyAll/SVN/Util.pm0000644000000000000000000000074512623441275020327 0ustar rootrootpackage Code::TidyAll::SVN::Util; use Cwd qw(realpath); use IPC::System::Simple qw(capturex); use strict; use warnings; use base qw(Exporter); our $VERSION = '0.32'; our @EXPORT_OK = qw(svn_uncommitted_files); sub svn_uncommitted_files { my ($dir) = @_; $dir = realpath($dir); my $output = capturex( "svn", "status", $dir ); my @lines = grep {/^[AM]/} split( "\n", $output ); my (@files) = grep {-f} ( $output =~ m{^[AM]\s+(.*)$}gm ); return @files; } 1; Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/SVN/Precommit.pm0000644000000000000000000002321512623441275021346 0ustar rootrootpackage Code::TidyAll::SVN::Precommit; use Capture::Tiny qw(capture_stdout capture_stderr); use Code::TidyAll; use Code::TidyAll::Util qw(basename dirname mkpath realpath tempdir_simple write_file); use Log::Any qw($log); use Moo; use SVN::Look; use Try::Tiny; our $VERSION = '0.32'; # Public has 'conf_name' => ( is => 'ro' ); has 'emergency_comment_prefix' => ( is => 'ro', default => 'NO TIDYALL' ); has 'extra_conf_files' => ( is => 'ro', default => sub { [] } ); has 'reject_on_error' => ( is => 'ro' ); has 'repos' => ( is => 'ro', default => sub { $ARGV[0] } ); has 'tidyall_class' => ( is => 'ro', default => 'Code::TidyAll' ); has 'tidyall_options' => ( is => 'ro', default => sub { {} } ); has 'txn' => ( is => 'ro', default => sub { $ARGV[1] } ); # Private has 'cat_file_cache' => ( init_arg => undef, is => 'ro', default => sub { {} } ); has 'revlook' => ( init_arg => undef, is => 'lazy' ); sub _build_revlook { my $self = shift; return SVN::Look->new( $self->repos, '-t' => $self->txn ); } sub check { my ( $class, %params ) = @_; my $fail_msg; try { my $self = $class->new(%params); my $revlook = $self->revlook; # Skip if emergency comment prefix is present # if ( my $prefix = $self->emergency_comment_prefix ) { if ( index( $revlook->log_msg, $prefix ) == 0 ) { return; } } my @files = ( $self->revlook->added(), $self->revlook->updated() ); $log->info("----------------------------"); $log->infof( "%s [%s] repos = %s; txn = %s", scalar(localtime), $$, scalar( getpwuid($<) ), $self->repos, $self->txn ); $log->infof( "looking at files: %s", join( ", ", @files ) ); my %conf_files; foreach my $file (@files) { if ( my $conf_file = $self->find_conf_for_file($file) ) { my $root = dirname($conf_file); my $rel_file = substr( $file, length($root) + 1 ); $conf_files{$conf_file}->{$rel_file}++; } else { my $msg = sprintf( "** could not find conf file upwards from '%s'", $file ); $log->error($msg); die $msg if $self->reject_on_error; } } my @results; while ( my ( $conf_file, $file_map ) = each(%conf_files) ) { my $root = dirname($conf_file); my $conf_name = basename($conf_file); $log->error("$root, $conf_file"); my $tempdir = tempdir_simple(); my @files = keys(%$file_map); foreach my $rel_file ( $conf_name, @{ $self->extra_conf_files }, @files ) { # TODO: what if cat fails my $contents = $self->cat_file("$root/$rel_file"); my $full_path = "$tempdir/$rel_file"; mkpath( dirname($full_path), 0, 0775 ); write_file( $full_path, $contents ); } my $tidyall = $self->tidyall_class->new_from_conf_file( join( "/", $tempdir, $conf_name ), no_cache => 1, check_only => 1, mode => 'commit', %{ $self->tidyall_options }, ); my $stdout = capture_stdout { push( @results, $tidyall->process_paths( map {"$tempdir/$_"} @files ) ); }; if ($stdout) { chomp($stdout); $log->info($stdout); } } if ( my @error_results = grep { $_->error } @results ) { my $error_count = scalar(@error_results); $fail_msg = join( "\n", sprintf( "%d file%s did not pass tidyall check", $error_count, $error_count > 1 ? "s" : "" ), map { join( ": ", $_->path, $_->error ) } @error_results ); } } catch { my $error = $_; $log->error($error); die $error if $params{reject_on_error}; }; die $fail_msg if $fail_msg; } sub find_conf_for_file { my ( $self, $file ) = @_; my @conf_names = $self->conf_name ? ( $self->conf_name ) : Code::TidyAll->default_conf_names; my $search_dir = dirname($file); $search_dir =~ s{/+$}{}; my $cnt = 0; while (1) { foreach my $conf_name (@conf_names) { my $conf_file = "$search_dir/$conf_name"; return $conf_file if ( $self->cat_file($conf_file) ); } if ( $search_dir eq '/' || $search_dir eq '' || $search_dir eq '.' ) { return undef; } else { $search_dir = dirname($search_dir); } die "inf loop!" if ++$cnt > 100; } } sub cat_file { my ( $self, $file ) = @_; my $contents; if ( exists( $self->cat_file_cache->{$file} ) ) { $contents = $self->cat_file_cache->{$file}; } else { try { capture_stderr { $contents = $self->revlook->cat($file) }; } catch { $contents = ''; }; $self->cat_file_cache->{$file} = $contents; } return $contents; } 1; # ABSTRACT: Subversion pre-commit hook that requires files to be tidyall'd __END__ =pod =head1 NAME Code::TidyAll::SVN::Precommit - Subversion pre-commit hook that requires files to be tidyall'd =head1 VERSION version 0.32 =head1 SYNOPSIS In hooks/pre-commit in your svn repo: #!/usr/bin/perl use Code::TidyAll::SVN::Precommit; use Log::Any::Adapter (File => "/path/to/hooks/logs/tidyall.log"); use strict; use warnings; Code::TidyAll::SVN::Precommit->check(); =head1 DESCRIPTION This module implements a L that checks if all files are tidied and valid according to L, and rejects the commit if not. =head1 METHODS =over =item check (key/value params...) Class method. Check that all files being added or modified in this commit are tidied and valid according to L. If not, then the entire commit is rejected and the reason(s) are output to the client. e.g. % svn commit -m "fixups" CHI.pm CHI/Driver.pm Sending CHI/Driver.pm Sending CHI.pm Transmitting file data ..svn: Commit failed (details follow): svn: Commit blocked by pre-commit hook (exit code 255) with output: 2 files did not pass tidyall check lib/CHI.pm: *** 'PerlTidy': needs tidying lib/CHI/Driver.pm: *** 'PerlCritic': Code before strictures are enabled at /tmp/Code-TidyAll-0e6K/Driver.pm line 2 [TestingAndDebugging::RequireUseStrict] In an emergency the hook can be bypassed by prefixing the comment with "NO TIDYALL", e.g. % svn commit -m "NO TIDYALL - this is an emergency!" CHI.pm CHI/Driver.pm Sending CHI/Driver.pm Sending CHI.pm Transmitting file data . Committed revision 7562. The configuration file (C or C<.tidyallrc>) must be checked into svn. For each file, the hook will look upwards from the file's repo location and use the first configuration file it finds. By default, if the configuration file cannot be found, or if a runtime error occurs, a warning is logged (see L below) but the commit is allowed to proceed. This is so that unexpected problems do not prevent valid commits. Passes mode = "commit" by default; see L. Key/value parameters: =over =item conf_name Conf file name to search for instead of the defaults. =item emergency_comment_prefix Commit prefix that will cause this hook to be bypassed. Defaults to "NO TIDYALL". e.g. svn commit -m "NO TIDYALL - must get fix to production!" Set to a false value (e.g. blank or undefined) to disable bypassing. =item extra_conf_files A listref of other configuration files referred to from the main configuration file, e.g. extra_conf_files => ['perlcriticrc', 'perltidyrc'] If you don't list them here then you'll get errors like 'cannot find perlcriticrc' when the hook runs. =item reject_on_error If the configuration file cannot be found for some/all the files, or if a runtime error occurs, reject the commit. =item repos Repository path being committed; defaults to C<< $ARGV[0] >> =item tidyall_class Subclass to use instead of L =item tidyall_options Hashref of options to pass to the L constructor =item txn Commit transaction; defaults to C<< $ARGV[1] >> =back =back =head1 LOGGING This module uses L to log its activity, including all files that were checked, an inability to find the configuration file, and any runtime errors that occur. You can create a simple date-stamped log file with use Log::Any::Adapter (File => "/path/to/hooks/logs/tidyall.log"); or do something fancier with one of the other L. Having a log file is especially useful with pre-commit hooks since there is no way for the hook to send back output on a successful commit. =head1 ACKNOWLEDGMENTS Thanks to Alexander Simakov, author of L, for some of the ideas here such as emergency_comment_prefix. =head1 SEE ALSO L =head1 AUTHORS =over 4 =item * Jonathan Swartz =item * Dave Rolsky =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut Code-TidyAll-0.32~dfsg/lib/Code/TidyAll/Cache.pm0000644000000000000000000000155412623441275017746 0ustar rootrootpackage Code::TidyAll::Cache; use Digest::SHA qw(sha1_hex); use Code::TidyAll::Util qw(dirname mkpath); use File::Slurp::Tiny qw(read_file write_file); use Moo; our $VERSION = '0.32'; has 'cache_dir' => ( is => 'ro', required => 1 ); sub path_to_key { my ( $self, $key ) = @_; my $sig = sha1_hex($key); return join( "/", $self->cache_dir, substr( $sig, 0, 1 ), "$sig.dat" ); } sub get { my ( $self, $key ) = @_; my $file = $self->path_to_key($key); if ( defined $file && -f $file ) { return read_file($file); } else { return undef; } } sub set { my ( $self, $key, $value ) = @_; my $file = $self->path_to_key($key); mkpath( dirname($file), 0, 0775 ); write_file( $file, $value ); } sub remove { my ( $self, $key, $value ) = @_; my $file = $self->path_to_key($key); unlink($file); } 1; Code-TidyAll-0.32~dfsg/etc/0000755000000000000000000000000012623441275014171 5ustar rootrootCode-TidyAll-0.32~dfsg/etc/editors/0000755000000000000000000000000012623441275015642 5ustar rootrootCode-TidyAll-0.32~dfsg/etc/editors/tidyall.vim0000644000000000000000000000116512623441275020024 0ustar rootroot" Run tidyall on the current buffer. If an error occurs, show it and leave it " in tidyall.ERR, and undo any changes. command! TidyAll :call TidyAll() function! TidyAll() let cur_pos = getpos( '.' ) let cmdline = ':1,$!tidyall --mode editor --pipe %:p 2> tidyall.ERR' execute( cmdline ) if v:shell_error echo "\nContents of tidyall.ERR:\n\n" . system( 'cat tidyall.ERR' ) silent undo else call system( 'rm tidyall.ERR' ) endif call setpos( '.', cur_pos ) endfunction " Uncomment to set leader to , " let mapleader = ',' " Bind to ,t (or leader+t) map t :TidyAll Code-TidyAll-0.32~dfsg/etc/editors/tidyall.el0000644000000000000000000001106712623441275017633 0ustar rootroot;;; tidyall.el -- Apply tidyall (https://metacpan.org/module/tidyall) to the current buffer ;; Copyright (C) 2012 Jonathan Swartz ;; Author: Jonathan Swartz ;; Keywords: extensions ;; Status: Tested with Emacs 24.1.1 ;; This file is *NOT* part of GNU Emacs. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; This package implements a single function, tidyall-buffer, which ;; runs tidyall (https://metacpan.org/module/tidyall) on the current buffer. ;; If successful, the contents of the buffer are replaced with the tidied contents, and ;; the buffer is saved if tidyall-autosave is true. The modifications should be ;; undoable. ;; If tidyall generates any errors, the buffer is not changed, and a separate window ;; called *tidyall-output* is opened displaying the error. ;; To operate on just a region of the buffer, use narrow-to-region. ;; To assign this command to ctrl-t globally: ;; ;; (global-set-key "\C-t" 'tidyall-buffer) ;; ;; Or to assign it locally in, e.g., perl-mode: ;; ;; (setq perl-mode-hook ;; '(lambda () ;; (local-set-key "\C-t" 'tidyall-buffer) ;; )) ;; ;; (This replaces the default binding to transpose-chars, which I never use but ymmv.) ;; The variable `tidyall-cmd` contains the path to the tidyall command. ;; (setq tidyall-cmd "tidyall") ;; The variable `tidyall-autosave` indicates whether to save the buffer after a successful ;; tidy - defaults to t ;; (setq tidyall-autosave t) (defun tidyall-buffer () "Run tidyall on the current buffer." (interactive) (let ((file (buffer-file-name))) (cond ((null file) (message "buffer has no filename")) (t (let* ((command (concat tidyall-cmd " -m editor --pipe " file)) (output-buffer (get-buffer-create "*tidyall-output*")) (error-buffer (get-buffer-create "*tidyall-error*")) (error-file (make-temp-file "tidyall_error")) (start (point-min)) (end (point-max)) (orig-window-start (window-start (selected-window))) (orig-point (point))) (with-current-buffer output-buffer (erase-buffer)) (with-current-buffer error-buffer (erase-buffer)) (let* ((result (call-process-region start end shell-file-name nil (list output-buffer error-file) nil shell-command-switch command)) (output (with-current-buffer output-buffer (buffer-string)))) (kill-buffer output-buffer) (cond ((zerop result) ;; Success. Replace content if it changed ;; (cond ((not (equal output (buffer-string))) (delete-region start end) (insert output) ;; Restore original window start and point as much as ;; possible. Go to beginning of line since we'll probably be ;; at a random point around our original line after the tidy. ;; (set-window-start (selected-window) orig-window-start) (goto-char orig-point) (beginning-of-line) (message (concat "tidied " file))) (t (message (concat "checked " file)))) (when tidyall-autosave (save-buffer)) (delete-windows-on error-buffer) (kill-buffer error-buffer)) (t ;; Error. Display in other window ;; (with-current-buffer error-buffer (insert-file-contents error-file)) (when (< (length (window-list)) 2) (split-window-vertically)) (set-window-buffer (next-window) error-buffer)))) (delete-file error-file)))))) (provide 'tidyall) Code-TidyAll-0.32~dfsg/perltidyrc0000644000000000000000000000041612623441275015523 0ustar rootroot-l=100 -i=4 -ci=4 -se -b -bar -boc -vt=0 -vtc=0 -cti=0 -pt=1 -bt=1 -sbt=1 -bbt=1 -nolq -npro -nsfs --opening-hash-brace-right --no-outdent-long-comments -wbb="% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x=" --iterations=2 Code-TidyAll-0.32~dfsg/LICENSE0000644000000000000000000004371312623441275014433 0ustar rootrootThis software is copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2011 - 2015 by Jonathan Swartz. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Code-TidyAll-0.32~dfsg/tidyall.ini0000644000000000000000000000155512623441275015567 0ustar rootroot[PerlTidy] argv = --pro=$ROOT/perltidyrc except_modes = dzil select = {bin,lib,t}/**/{tidyall,*.{pl,pm,t}} ignore = t/00-report-prereqs.t ignore = t/author-* ignore = t/release-* [PerlTidySweet] argv = --pro=$ROOT/perltidyrc except_modes = dzil select = {bin,lib,t}/**/{tidyall,*.{pl,pm,t}} ignore = t/00-report-prereqs.t ignore = t/author-* ignore = t/release-* [PodTidy] select = {bin,lib}/**/{tidyall,*.{pl,pm,pod}} ignore = t/00-report-prereqs.t ignore = t/author-* ignore = t/release-* [PerlCritic] select = lib/**/*.pm argv = --profile $ROOT/perlcriticrc except_modes = editor dzil ignore = t/00-report-prereqs.t ignore = t/author-* ignore = t/release-* [SortLines] select = .gitignore .ispell* **/.gitignore [Perl::AlignMooseAttributes] select = {bin,lib,t}/**/*.{pl,pm,t} except_modes = dzil ignore = t/00-report-prereqs.t ignore = t/author-* ignore = t/release-* Code-TidyAll-0.32~dfsg/inc/0000755000000000000000000000000012623441275014167 5ustar rootrootCode-TidyAll-0.32~dfsg/inc/Pod/0000755000000000000000000000000012623441275014711 5ustar rootrootCode-TidyAll-0.32~dfsg/inc/Pod/Weaver/0000755000000000000000000000000012623441275016142 5ustar rootrootCode-TidyAll-0.32~dfsg/inc/Pod/Weaver/Section/0000755000000000000000000000000012623441275017546 5ustar rootrootCode-TidyAll-0.32~dfsg/inc/Pod/Weaver/Section/SeeAlsoCodeTidyAll.pm0000644000000000000000000000175612623441275023526 0ustar rootrootpackage inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll; use namespace::autoclean; use Moose; with 'Pod::Weaver::Role::Section'; use Pod::Elemental::Selectors; # Add "SEE ALSO: Code::TidyAll" sub weave_section { my ( $self, $document, $input ) = @_; return if $input->{filename} =~ m{\QCode/TidyAll.pm}; my $idc = $input->{pod_document}->children; for ( my $i = 0; $i < scalar @{$idc}; $i++ ) { next unless my $para = $idc->[$i]; return if $para->can('command') && $para->command eq 'head1' && $para->content eq 'SEE ALSO'; } push @{ $document->children }, Pod::Elemental::Element::Nested->new( { command => 'head1', content => 'SEE ALSO', children => [ Pod::Elemental::Element::Pod5::Ordinary->new( { content => "L" } ), ], } ); } __PACKAGE__->meta->make_immutable; 1; Code-TidyAll-0.32~dfsg/inc/Util.pm0000644000000000000000000000160612623441275015445 0ustar rootrootpackage inc::Util; use strict; use warnings; use Exporter qw(import); use File::Path qw(mkpath); our @EXPORT_OK = qw(make_node_symlinks); sub make_node_symlinks { return unless eval { no warnings 'uninitialized'; symlink( qw{}, q{} ); 1; }; my %links = ( 'css-beautify' => '../js-beautify/js/bin/css-beautify.js', 'cssunminifier' => '../cssunminifier/bin/cssunminifier', 'html-beautify' => '../js-beautify/js/bin/html-beautify.js', 'js-beautify' => '../js-beautify/js/bin/js-beautify.js', 'jshint' => '../jshint/bin/jshint', 'jslint' => '../jslint/bin/jslint.js', ); my $bin = 'node_modules/.bin'; mkpath( $bin, 0, 0755 ); chdir $bin or die "Cannot chdir to $bin: $!"; for my $from ( keys %links ) { symlink $links{$from}, $from unless -l $from || -f _; } } 1; Code-TidyAll-0.32~dfsg/inc/MyMakeMaker.pm0000644000000000000000000000051512623441275016671 0ustar rootrootpackage inc::MyMakeMaker; use Moose; use namespace::autoclean; extends 'Dist::Zilla::Plugin::MakeMaker::Awesome'; override _build_MakeFile_PL_template => sub { return super() . do { local $/ = undef; }; }; __PACKAGE__->meta->make_immutable; 1; __DATA__ use inc::Util qw(make_node_symlinks); make_node_symlinks(); Code-TidyAll-0.32~dfsg/INSTALL0000644000000000000000000000167112623441275014454 0ustar rootrootThis is the Perl distribution Code-TidyAll. Installing Code-TidyAll is straightforward. ## Installation with cpanm If you have cpanm, you only need one line: % cpanm Code::TidyAll If you are installing into a system-wide directory, you may need to pass the "-S" flag to cpanm, which uses sudo to install the module: % cpanm -S Code::TidyAll ## Installing with the CPAN shell Alternatively, if your CPAN shell is set up, you should just be able to do: % cpan Code::TidyAll ## Manual installation As a last resort, you can manually install it. Download the tarball, untar it, then build it: % perl Makefile.PL % make && make test Then install it: % make install If you are installing into a system-wide directory, you may need to run: % sudo make install ## Documentation Code-TidyAll documentation is available as POD. You can run perldoc from a shell to read the documentation: % perldoc Code::TidyAll Code-TidyAll-0.32~dfsg/dist.ini0000644000000000000000000000270512623441275015066 0ustar rootrootname = Code-TidyAll author = Jonathan Swartz author = Dave Rolsky license = Perl_5 copyright_year = 2011 copyright_holder = Jonathan Swartz [@DROLSKY] dist = Code-TidyAll prereqs_skip = JSON::MaybeXS prereqs_skip = Mason::Tidy prereqs_skip = Mason::Tidy::App prereqs_skip = Perl::Tidy prereqs_skip = Perl::Tidy::Sweetened prereqs_skip = Pod::Checker prereqs_skip = Pod::Spell prereqs_skip = Pod::Tidy prereqs_skip = SVN::Look stopwords_file = .ispell_english -remove = DROLSKY::TidyAll ; This ends up matching legitimate markdown -remove = Git::CheckFor::MergeConflicts -remove = MakeMaker ; Many plugins won't compile without optional prereqs -remove = Test::Compile ; The Pod::Tidy tidying leaves spaces at the ends of lines -remove = Test::EOL -remove = Test::Pod::Coverage::Configurable ; Can't resolve L for some reason -remove = Test::Pod::LinkCheck -remove = Test::Pod::No404s -remove = Test::Portability -remove = Test::Synopsis -remove = Test::TidyAll ;authordep Dist::Zilla::Plugin::MakeMaker::Awesome [=inc::MyMakeMaker] ;authordep Pod::Tidy [Prereqs / DevelopRequires] CHI = 0 Code::TidyAll::Plugin::Perl::AlignMooseAttributes = 0 JSON::MaybeXS = 0 Mason::Tidy = 0 Mason::Tidy::App = 0 Perl::Critic::Policy::Moose::RequireMakeImmutable = 0 Perl::Tidy = 20150815 Perl::Tidy::Sweetened = 1.00 Pod::Checker = 0 Pod::Spell = 0 Pod::Tidy = 0 SVN::Look = 0 [MetaNoIndex] file = lib/Code/TidyAll/Util.pm [TidyAll] Code-TidyAll-0.32~dfsg/weaver.ini0000644000000000000000000000027412623441275015413 0ustar rootroot[@CorePrep] [Name] [Version] [Generic / SYNOPSIS] [Generic / DESCRIPTION] [Leftovers] [=inc::Pod::Weaver::Section::SeeAlsoCodeTidyAll] [Region / postlude] [Authors] [Contributors] [Legal] Code-TidyAll-0.32~dfsg/MANIFEST0000644000000000000000000040233212623441275014553 0ustar rootroot# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.041. Changes INSTALL LICENSE MANIFEST META.json META.yml Makefile.PL README.md bin/tidyall cpanfile dist.ini etc/editors/tidyall.el etc/editors/tidyall.vim inc/MyMakeMaker.pm inc/Pod/Weaver/Section/SeeAlsoCodeTidyAll.pm inc/Util.pm lib/Code/TidyAll.pm lib/Code/TidyAll/Cache.pm lib/Code/TidyAll/CacheModel.pm lib/Code/TidyAll/CacheModel/Shared.pm lib/Code/TidyAll/Config/INI/Reader.pm lib/Code/TidyAll/Git/Precommit.pm lib/Code/TidyAll/Git/Prereceive.pm lib/Code/TidyAll/Git/Util.pm lib/Code/TidyAll/Plugin.pm lib/Code/TidyAll/Plugin/CSSUnminifier.pm lib/Code/TidyAll/Plugin/DiffOnTidyError.pm lib/Code/TidyAll/Plugin/JSBeautify.pm lib/Code/TidyAll/Plugin/JSHint.pm lib/Code/TidyAll/Plugin/JSLint.pm lib/Code/TidyAll/Plugin/JSON.pm lib/Code/TidyAll/Plugin/MasonTidy.pm lib/Code/TidyAll/Plugin/PHPCodeSniffer.pm lib/Code/TidyAll/Plugin/PerlCritic.pm lib/Code/TidyAll/Plugin/PerlTidy.pm lib/Code/TidyAll/Plugin/PerlTidySweet.pm lib/Code/TidyAll/Plugin/PodChecker.pm lib/Code/TidyAll/Plugin/PodSpell.pm lib/Code/TidyAll/Plugin/PodTidy.pm lib/Code/TidyAll/Plugin/SortLines.pm lib/Code/TidyAll/Result.pm lib/Code/TidyAll/Role/Tempdir.pm lib/Code/TidyAll/SVN/Precommit.pm lib/Code/TidyAll/SVN/Util.pm lib/Code/TidyAll/Util.pm lib/Code/TidyAll/Util/Zglob.pm lib/Test/Code/TidyAll.pm node_modules/cssunminifier/README.md node_modules/cssunminifier/bin/cssunminifier node_modules/cssunminifier/lib/cssunminifier.js node_modules/cssunminifier/package.json node_modules/cssunminifier/test/run.sh node_modules/cssunminifier/test/sample.css node_modules/js-beautify/CHANGELOG.md node_modules/js-beautify/CONTRIBUTING.md node_modules/js-beautify/LICENSE node_modules/js-beautify/README.md node_modules/js-beautify/bower.json node_modules/js-beautify/generate-changelog.sh node_modules/js-beautify/js/bin/css-beautify.js node_modules/js-beautify/js/bin/html-beautify.js node_modules/js-beautify/js/bin/js-beautify.js node_modules/js-beautify/js/config/defaults.json node_modules/js-beautify/js/index.js node_modules/js-beautify/js/lib/beautify-css.js node_modules/js-beautify/js/lib/beautify-html.js node_modules/js-beautify/js/lib/beautify.js node_modules/js-beautify/js/lib/cli.js node_modules/js-beautify/js/lib/unpackers/javascriptobfuscator_unpacker.js node_modules/js-beautify/js/lib/unpackers/myobfuscate_unpacker.js node_modules/js-beautify/js/lib/unpackers/p_a_c_k_e_r_unpacker.js node_modules/js-beautify/js/lib/unpackers/urlencode_unpacker.js node_modules/js-beautify/js/test/amd-beautify-tests.js node_modules/js-beautify/js/test/beautify-tests.js node_modules/js-beautify/js/test/node-beautify-perf-tests.js node_modules/js-beautify/js/test/node-beautify-tests.js node_modules/js-beautify/js/test/requirejs-html-beautify.html node_modules/js-beautify/js/test/resources/example1.js node_modules/js-beautify/js/test/resources/indent11chars/subDir1/subDir2/empty.txt node_modules/js-beautify/js/test/run-tests node_modules/js-beautify/js/test/sanitytest.js node_modules/js-beautify/js/test/shell-smoke-test.sh node_modules/js-beautify/node_modules/config-chain/LICENCE node_modules/js-beautify/node_modules/config-chain/index.js node_modules/js-beautify/node_modules/config-chain/node_modules/ini/LICENSE node_modules/js-beautify/node_modules/config-chain/node_modules/ini/README.md node_modules/js-beautify/node_modules/config-chain/node_modules/ini/ini.js node_modules/js-beautify/node_modules/config-chain/node_modules/ini/package.json node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/bar.js node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/fixtures/foo.ini node_modules/js-beautify/node_modules/config-chain/node_modules/ini/test/foo.js node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/LICENSE node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/README.md node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/package.json node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/proto-list.js node_modules/js-beautify/node_modules/config-chain/node_modules/proto-list/test/basic.js node_modules/js-beautify/node_modules/config-chain/package.json node_modules/js-beautify/node_modules/config-chain/readme.markdown node_modules/js-beautify/node_modules/config-chain/test/broken.js node_modules/js-beautify/node_modules/config-chain/test/broken.json node_modules/js-beautify/node_modules/config-chain/test/chain-class.js node_modules/js-beautify/node_modules/config-chain/test/env.js node_modules/js-beautify/node_modules/config-chain/test/find-file.js node_modules/js-beautify/node_modules/config-chain/test/get.js node_modules/js-beautify/node_modules/config-chain/test/ignore-unfound-file.js node_modules/js-beautify/node_modules/config-chain/test/ini.js node_modules/js-beautify/node_modules/config-chain/test/save.js node_modules/js-beautify/node_modules/mkdirp/LICENSE node_modules/js-beautify/node_modules/mkdirp/bin/cmd.js node_modules/js-beautify/node_modules/mkdirp/bin/usage.txt node_modules/js-beautify/node_modules/mkdirp/examples/pow.js node_modules/js-beautify/node_modules/mkdirp/index.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/LICENSE node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/example/parse.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/index.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/package.json node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/readme.markdown node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/dash.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/default_bool.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/dotted.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/long.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/parse.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/parse_modified.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/short.js node_modules/js-beautify/node_modules/mkdirp/node_modules/minimist/test/whitespace.js node_modules/js-beautify/node_modules/mkdirp/package.json node_modules/js-beautify/node_modules/mkdirp/readme.markdown node_modules/js-beautify/node_modules/mkdirp/test/chmod.js node_modules/js-beautify/node_modules/mkdirp/test/clobber.js node_modules/js-beautify/node_modules/mkdirp/test/mkdirp.js node_modules/js-beautify/node_modules/mkdirp/test/opts_fs.js node_modules/js-beautify/node_modules/mkdirp/test/opts_fs_sync.js node_modules/js-beautify/node_modules/mkdirp/test/perm.js node_modules/js-beautify/node_modules/mkdirp/test/perm_sync.js node_modules/js-beautify/node_modules/mkdirp/test/race.js node_modules/js-beautify/node_modules/mkdirp/test/rel.js node_modules/js-beautify/node_modules/mkdirp/test/return.js node_modules/js-beautify/node_modules/mkdirp/test/return_sync.js node_modules/js-beautify/node_modules/mkdirp/test/root.js node_modules/js-beautify/node_modules/mkdirp/test/sync.js node_modules/js-beautify/node_modules/mkdirp/test/umask.js node_modules/js-beautify/node_modules/mkdirp/test/umask_sync.js node_modules/js-beautify/node_modules/nopt/LICENSE node_modules/js-beautify/node_modules/nopt/README.md node_modules/js-beautify/node_modules/nopt/bin/nopt.js node_modules/js-beautify/node_modules/nopt/examples/my-program.js node_modules/js-beautify/node_modules/nopt/lib/nopt.js node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/LICENSE node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/README.md node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/abbrev.js node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/package.json node_modules/js-beautify/node_modules/nopt/node_modules/abbrev/test.js node_modules/js-beautify/node_modules/nopt/package.json node_modules/js-beautify/node_modules/nopt/test/basic.js node_modules/js-beautify/package.json node_modules/js-beautify/test/underscore-min.js node_modules/js-beautify/test/underscore.js node_modules/jshint/README.md node_modules/jshint/bin/apply node_modules/jshint/bin/build node_modules/jshint/bin/changelog node_modules/jshint/bin/jshint node_modules/jshint/bin/land node_modules/jshint/data/ascii-identifier-data.js node_modules/jshint/data/non-ascii-identifier-part-only.js node_modules/jshint/data/non-ascii-identifier-start.js node_modules/jshint/dist/jshint-rhino.js node_modules/jshint/dist/jshint.js node_modules/jshint/node_modules/cli/README.md node_modules/jshint/node_modules/cli/cli.js node_modules/jshint/node_modules/cli/examples/cat.js node_modules/jshint/node_modules/cli/examples/command.js node_modules/jshint/node_modules/cli/examples/echo.js node_modules/jshint/node_modules/cli/examples/glob.js node_modules/jshint/node_modules/cli/examples/long_desc.js node_modules/jshint/node_modules/cli/examples/progress.js node_modules/jshint/node_modules/cli/examples/sort.js node_modules/jshint/node_modules/cli/examples/spinner.js node_modules/jshint/node_modules/cli/examples/static.coffee node_modules/jshint/node_modules/cli/examples/static.js node_modules/jshint/node_modules/cli/index.js node_modules/jshint/node_modules/cli/node_modules/glob/LICENSE node_modules/jshint/node_modules/cli/node_modules/glob/README.md node_modules/jshint/node_modules/cli/node_modules/glob/examples/g.js node_modules/jshint/node_modules/cli/node_modules/glob/examples/usr-local.js node_modules/jshint/node_modules/cli/node_modules/glob/glob.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/LICENSE node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/README.md node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/inherits_browser.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/package.json node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/inherits/test.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/LICENSE node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/README.md node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/minimatch.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/package.json node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/basic.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/brace-expand.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/caching.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/defaults.js node_modules/jshint/node_modules/cli/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js node_modules/jshint/node_modules/cli/node_modules/glob/package.json node_modules/jshint/node_modules/cli/node_modules/glob/test/00-setup.js node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-comparison.js node_modules/jshint/node_modules/cli/node_modules/glob/test/bash-results.json node_modules/jshint/node_modules/cli/node_modules/glob/test/cwd-test.js node_modules/jshint/node_modules/cli/node_modules/glob/test/globstar-match.js node_modules/jshint/node_modules/cli/node_modules/glob/test/mark.js node_modules/jshint/node_modules/cli/node_modules/glob/test/new-glob-optional-options.js node_modules/jshint/node_modules/cli/node_modules/glob/test/nocase-nomagic.js node_modules/jshint/node_modules/cli/node_modules/glob/test/pause-resume.js node_modules/jshint/node_modules/cli/node_modules/glob/test/readme-issue.js node_modules/jshint/node_modules/cli/node_modules/glob/test/root-nomount.js node_modules/jshint/node_modules/cli/node_modules/glob/test/root.js node_modules/jshint/node_modules/cli/node_modules/glob/test/stat.js node_modules/jshint/node_modules/cli/node_modules/glob/test/zz-cleanup.js node_modules/jshint/node_modules/cli/package.json node_modules/jshint/node_modules/console-browserify/LICENCE node_modules/jshint/node_modules/console-browserify/README.md node_modules/jshint/node_modules/console-browserify/index.js node_modules/jshint/node_modules/console-browserify/node_modules/date-now/LICENCE node_modules/jshint/node_modules/console-browserify/node_modules/date-now/README.md node_modules/jshint/node_modules/console-browserify/node_modules/date-now/index.js node_modules/jshint/node_modules/console-browserify/node_modules/date-now/package.json node_modules/jshint/node_modules/console-browserify/node_modules/date-now/seed.js node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/index.js node_modules/jshint/node_modules/console-browserify/node_modules/date-now/test/static/index.html node_modules/jshint/node_modules/console-browserify/package.json node_modules/jshint/node_modules/console-browserify/test/index.js node_modules/jshint/node_modules/console-browserify/test/static/index.html node_modules/jshint/node_modules/console-browserify/test/static/test-adapter.js node_modules/jshint/node_modules/exit/Gruntfile.js node_modules/jshint/node_modules/exit/LICENSE-MIT node_modules/jshint/node_modules/exit/README.md node_modules/jshint/node_modules/exit/lib/exit.js node_modules/jshint/node_modules/exit/package.json node_modules/jshint/node_modules/exit/test/exit_test.js node_modules/jshint/node_modules/exit/test/fixtures/10-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/10-stdout-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/10-stdout.txt node_modules/jshint/node_modules/exit/test/fixtures/100-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/100-stdout-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/100-stdout.txt node_modules/jshint/node_modules/exit/test/fixtures/1000-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt node_modules/jshint/node_modules/exit/test/fixtures/1000-stdout.txt node_modules/jshint/node_modules/exit/test/fixtures/create-files.sh node_modules/jshint/node_modules/exit/test/fixtures/log-broken.js node_modules/jshint/node_modules/exit/test/fixtures/log.js node_modules/jshint/node_modules/htmlparser2/LICENSE node_modules/jshint/node_modules/htmlparser2/README.md node_modules/jshint/node_modules/htmlparser2/lib/CollectingHandler.js node_modules/jshint/node_modules/htmlparser2/lib/FeedHandler.js node_modules/jshint/node_modules/htmlparser2/lib/Parser.js node_modules/jshint/node_modules/htmlparser2/lib/ProxyHandler.js node_modules/jshint/node_modules/htmlparser2/lib/Stream.js node_modules/jshint/node_modules/htmlparser2/lib/Tokenizer.js node_modules/jshint/node_modules/htmlparser2/lib/WritableStream.js node_modules/jshint/node_modules/htmlparser2/lib/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/domelementtype/readme.md node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/lib/element.js node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/lib/node.js node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/readme.md node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/01-basic.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/02-single_tag_1.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/03-single_tag_2.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/04-unescaped_in_script.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/05-tags_in_comment.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/06-comment_in_script.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/07-unescaped_in_style.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/08-extra_spaces_in_tag.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/09-unquoted_attrib.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/10-singular_attribute.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/11-text_outside_tags.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/12-text_only.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/13-comment_in_text.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/14-comment_in_text_in_script.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/15-non-verbose.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/16-normalize_whitespace.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/17-xml_namespace.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/18-enforce_empty_tags.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/19-ignore_empty_tags.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/20-template_script_tags.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/21-conditional_comments.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/22-lowercase_tags.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/23-dom-lvl1.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/cases/24-with-start-indices.json node_modules/jshint/node_modules/htmlparser2/node_modules/domhandler/test/tests.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/querying.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/readme.md node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/fixture.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/helpers.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/tests/legacy.js node_modules/jshint/node_modules/htmlparser2/node_modules/domutils/test/utils.js node_modules/jshint/node_modules/htmlparser2/node_modules/entities/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/entities/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode.js node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js node_modules/jshint/node_modules/htmlparser2/node_modules/entities/lib/encode.js node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/decode.json node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/entities.json node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/legacy.json node_modules/jshint/node_modules/htmlparser2/node_modules/entities/maps/xml.json node_modules/jshint/node_modules/htmlparser2/node_modules/entities/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/entities/readme.md node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/mocha.opts node_modules/jshint/node_modules/htmlparser2/node_modules/entities/test/test.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/README.md node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/duplex.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/float.patch node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_duplex.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_passthrough.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_readable.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_transform.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/lib/_stream_writable.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/README.md node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/float.patch node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/lib/util.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/core-util-is/util.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/README.md node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/inherits_browser.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits/test.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/README.md node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/build/build.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/component.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/isarray/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/LICENSE node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/README.md node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/index.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/node_modules/string_decoder/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/package.json node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/passthrough.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/readable.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/transform.js node_modules/jshint/node_modules/htmlparser2/node_modules/readable-stream/writable.js node_modules/jshint/node_modules/htmlparser2/package.json node_modules/jshint/node_modules/htmlparser2/test/01-events.js node_modules/jshint/node_modules/htmlparser2/test/02-stream.js node_modules/jshint/node_modules/htmlparser2/test/03-feed.js node_modules/jshint/node_modules/htmlparser2/test/Documents/Atom_Example.xml node_modules/jshint/node_modules/htmlparser2/test/Documents/Attributes.html node_modules/jshint/node_modules/htmlparser2/test/Documents/Basic.html node_modules/jshint/node_modules/htmlparser2/test/Documents/RDF_Example.xml node_modules/jshint/node_modules/htmlparser2/test/Documents/RSS_Example.xml node_modules/jshint/node_modules/htmlparser2/test/Events/01-simple.json node_modules/jshint/node_modules/htmlparser2/test/Events/02-template.json node_modules/jshint/node_modules/htmlparser2/test/Events/03-lowercase_tags.json node_modules/jshint/node_modules/htmlparser2/test/Events/04-cdata.json node_modules/jshint/node_modules/htmlparser2/test/Events/05-cdata-special.json node_modules/jshint/node_modules/htmlparser2/test/Events/06-leading-lt.json node_modules/jshint/node_modules/htmlparser2/test/Events/07-self-closing.json node_modules/jshint/node_modules/htmlparser2/test/Events/08-implicit-close-tags.json node_modules/jshint/node_modules/htmlparser2/test/Events/09-attributes.json node_modules/jshint/node_modules/htmlparser2/test/Events/10-crazy-attrib.json node_modules/jshint/node_modules/htmlparser2/test/Events/11-script_in_script.json node_modules/jshint/node_modules/htmlparser2/test/Events/12-long-comment-end.json node_modules/jshint/node_modules/htmlparser2/test/Events/13-long-cdata-end.json node_modules/jshint/node_modules/htmlparser2/test/Events/14-implicit-open-tags.json node_modules/jshint/node_modules/htmlparser2/test/Events/15-lt-whitespace.json node_modules/jshint/node_modules/htmlparser2/test/Events/16-double_attribs.json node_modules/jshint/node_modules/htmlparser2/test/Events/17-numeric_entities.json node_modules/jshint/node_modules/htmlparser2/test/Events/18-legacy_entities.json node_modules/jshint/node_modules/htmlparser2/test/Events/19-named_entities.json node_modules/jshint/node_modules/htmlparser2/test/Events/20-xml_entities.json node_modules/jshint/node_modules/htmlparser2/test/Events/21-entity_in_attribute.json node_modules/jshint/node_modules/htmlparser2/test/Events/22-double_brackets.json node_modules/jshint/node_modules/htmlparser2/test/Events/23-legacy_entity_fail.json node_modules/jshint/node_modules/htmlparser2/test/Events/24-special_special.json node_modules/jshint/node_modules/htmlparser2/test/Events/25-empty_tag_name.json node_modules/jshint/node_modules/htmlparser2/test/Events/26-not-quite-closed.json node_modules/jshint/node_modules/htmlparser2/test/Events/27-entities_in_attributes.json node_modules/jshint/node_modules/htmlparser2/test/Events/28-cdata_in_html.json node_modules/jshint/node_modules/htmlparser2/test/Events/29-comment_edge-cases.json node_modules/jshint/node_modules/htmlparser2/test/Events/30-cdata_edge-cases.json node_modules/jshint/node_modules/htmlparser2/test/Events/31-comment_false-ending.json node_modules/jshint/node_modules/htmlparser2/test/Feeds/01-rss.js node_modules/jshint/node_modules/htmlparser2/test/Feeds/02-atom.js node_modules/jshint/node_modules/htmlparser2/test/Feeds/03-rdf.js node_modules/jshint/node_modules/htmlparser2/test/Stream/01-basic.json node_modules/jshint/node_modules/htmlparser2/test/Stream/02-RSS.json node_modules/jshint/node_modules/htmlparser2/test/Stream/03-Atom.json node_modules/jshint/node_modules/htmlparser2/test/Stream/04-RDF.json node_modules/jshint/node_modules/htmlparser2/test/Stream/05-Attributes.json node_modules/jshint/node_modules/htmlparser2/test/api.js node_modules/jshint/node_modules/htmlparser2/test/test-helper.js node_modules/jshint/node_modules/minimatch/LICENSE node_modules/jshint/node_modules/minimatch/README.md node_modules/jshint/node_modules/minimatch/minimatch.js node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/LICENSE node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/README.md node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/package.json node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/basic.js node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/foreach.js node_modules/jshint/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js node_modules/jshint/node_modules/minimatch/node_modules/sigmund/LICENSE node_modules/jshint/node_modules/minimatch/node_modules/sigmund/README.md node_modules/jshint/node_modules/minimatch/node_modules/sigmund/bench.js node_modules/jshint/node_modules/minimatch/node_modules/sigmund/package.json node_modules/jshint/node_modules/minimatch/node_modules/sigmund/sigmund.js node_modules/jshint/node_modules/minimatch/node_modules/sigmund/test/basic.js node_modules/jshint/node_modules/minimatch/package.json node_modules/jshint/node_modules/minimatch/test/basic.js node_modules/jshint/node_modules/minimatch/test/brace-expand.js node_modules/jshint/node_modules/minimatch/test/caching.js node_modules/jshint/node_modules/minimatch/test/defaults.js node_modules/jshint/node_modules/minimatch/test/extglob-ending-with-state-char.js node_modules/jshint/node_modules/shelljs/LICENSE node_modules/jshint/node_modules/shelljs/README.md node_modules/jshint/node_modules/shelljs/bin/shjs node_modules/jshint/node_modules/shelljs/global.js node_modules/jshint/node_modules/shelljs/make.js node_modules/jshint/node_modules/shelljs/package.json node_modules/jshint/node_modules/shelljs/scripts/generate-docs.js node_modules/jshint/node_modules/shelljs/scripts/run-tests.js node_modules/jshint/node_modules/shelljs/shell.js node_modules/jshint/node_modules/shelljs/src/cat.js node_modules/jshint/node_modules/shelljs/src/cd.js node_modules/jshint/node_modules/shelljs/src/chmod.js node_modules/jshint/node_modules/shelljs/src/common.js node_modules/jshint/node_modules/shelljs/src/cp.js node_modules/jshint/node_modules/shelljs/src/dirs.js node_modules/jshint/node_modules/shelljs/src/echo.js node_modules/jshint/node_modules/shelljs/src/error.js node_modules/jshint/node_modules/shelljs/src/exec.js node_modules/jshint/node_modules/shelljs/src/find.js node_modules/jshint/node_modules/shelljs/src/grep.js node_modules/jshint/node_modules/shelljs/src/ln.js node_modules/jshint/node_modules/shelljs/src/ls.js node_modules/jshint/node_modules/shelljs/src/mkdir.js node_modules/jshint/node_modules/shelljs/src/mv.js node_modules/jshint/node_modules/shelljs/src/popd.js node_modules/jshint/node_modules/shelljs/src/pushd.js node_modules/jshint/node_modules/shelljs/src/pwd.js node_modules/jshint/node_modules/shelljs/src/rm.js node_modules/jshint/node_modules/shelljs/src/sed.js node_modules/jshint/node_modules/shelljs/src/tempdir.js node_modules/jshint/node_modules/shelljs/src/test.js node_modules/jshint/node_modules/shelljs/src/to.js node_modules/jshint/node_modules/shelljs/src/toEnd.js node_modules/jshint/node_modules/shelljs/src/which.js node_modules/jshint/node_modules/strip-json-comments/cli.js node_modules/jshint/node_modules/strip-json-comments/package.json node_modules/jshint/node_modules/strip-json-comments/readme.md node_modules/jshint/node_modules/strip-json-comments/strip-json-comments.js node_modules/jshint/node_modules/underscore/LICENSE node_modules/jshint/node_modules/underscore/README.md node_modules/jshint/node_modules/underscore/package.json node_modules/jshint/node_modules/underscore/underscore-min.js node_modules/jshint/node_modules/underscore/underscore.js node_modules/jshint/package.json node_modules/jshint/src/cli.js node_modules/jshint/src/jshint.js node_modules/jshint/src/lex.js node_modules/jshint/src/messages.js node_modules/jshint/src/name-stack.js node_modules/jshint/src/options.js node_modules/jshint/src/platforms/rhino.js node_modules/jshint/src/reg.js node_modules/jshint/src/reporters/checkstyle.js node_modules/jshint/src/reporters/default.js node_modules/jshint/src/reporters/jslint_xml.js node_modules/jshint/src/reporters/non_error.js node_modules/jshint/src/reporters/unix.js node_modules/jshint/src/state.js node_modules/jshint/src/style.js node_modules/jshint/src/vars.js node_modules/jslint/README.md node_modules/jslint/bin/jslint.js node_modules/jslint/doc/jslint.html node_modules/jslint/doc/jslint.md node_modules/jslint/lib/color.js node_modules/jslint/lib/fileopener.js node_modules/jslint/lib/jslint-2012-02-03.js node_modules/jslint/lib/jslint-2013-02-03.js node_modules/jslint/lib/jslint-2013-08-13.js node_modules/jslint/lib/jslint-2013-08-26.js node_modules/jslint/lib/jslint-2013-09-22.js node_modules/jslint/lib/jslint-2013-11-23.js node_modules/jslint/lib/jslint-2014-01-26.js node_modules/jslint/lib/jslint-2014-02-06.js node_modules/jslint/lib/jslint-2014-04-21.js node_modules/jslint/lib/jslint-2014-07-08.js node_modules/jslint/lib/jslint-latest.js node_modules/jslint/lib/jslint.js node_modules/jslint/lib/jsonreportstream.js node_modules/jslint/lib/linter.js node_modules/jslint/lib/lintstream.js node_modules/jslint/lib/main.js node_modules/jslint/lib/nodelint.js node_modules/jslint/lib/options.js node_modules/jslint/lib/reporter.js node_modules/jslint/lib/reportstream.js node_modules/jslint/lib/stream.js node_modules/jslint/man/jslint.1 node_modules/jslint/node_modules/exit/Gruntfile.js node_modules/jslint/node_modules/exit/LICENSE-MIT node_modules/jslint/node_modules/exit/README.md node_modules/jslint/node_modules/exit/lib/exit.js node_modules/jslint/node_modules/exit/package.json node_modules/jslint/node_modules/exit/test/exit_test.js node_modules/jslint/node_modules/exit/test/fixtures/10-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/10-stdout-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/10-stdout.txt node_modules/jslint/node_modules/exit/test/fixtures/100-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/100-stdout-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/100-stdout.txt node_modules/jslint/node_modules/exit/test/fixtures/1000-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/1000-stdout-stderr.txt node_modules/jslint/node_modules/exit/test/fixtures/1000-stdout.txt node_modules/jslint/node_modules/exit/test/fixtures/create-files.sh node_modules/jslint/node_modules/exit/test/fixtures/log-broken.js node_modules/jslint/node_modules/exit/test/fixtures/log.js node_modules/jslint/node_modules/glob/LICENSE node_modules/jslint/node_modules/glob/README.md node_modules/jslint/node_modules/glob/examples/g.js node_modules/jslint/node_modules/glob/examples/usr-local.js node_modules/jslint/node_modules/glob/glob.js node_modules/jslint/node_modules/glob/node_modules/inherits/LICENSE node_modules/jslint/node_modules/glob/node_modules/inherits/README.md node_modules/jslint/node_modules/glob/node_modules/inherits/inherits.js node_modules/jslint/node_modules/glob/node_modules/inherits/inherits_browser.js node_modules/jslint/node_modules/glob/node_modules/inherits/package.json node_modules/jslint/node_modules/glob/node_modules/inherits/test.js node_modules/jslint/node_modules/glob/node_modules/minimatch/LICENSE node_modules/jslint/node_modules/glob/node_modules/minimatch/README.md node_modules/jslint/node_modules/glob/node_modules/minimatch/minimatch.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/CONTRIBUTORS node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/LICENSE node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/README.md node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/lib/lru-cache.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/package.json node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/basic.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/foreach.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/lru-cache/test/memory-leak.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/LICENSE node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/README.md node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/bench.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/package.json node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/sigmund.js node_modules/jslint/node_modules/glob/node_modules/minimatch/node_modules/sigmund/test/basic.js node_modules/jslint/node_modules/glob/node_modules/minimatch/package.json node_modules/jslint/node_modules/glob/node_modules/minimatch/test/basic.js node_modules/jslint/node_modules/glob/node_modules/minimatch/test/brace-expand.js node_modules/jslint/node_modules/glob/node_modules/minimatch/test/caching.js node_modules/jslint/node_modules/glob/node_modules/minimatch/test/defaults.js node_modules/jslint/node_modules/glob/node_modules/minimatch/test/extglob-ending-with-state-char.js node_modules/jslint/node_modules/glob/package.json node_modules/jslint/node_modules/glob/test/00-setup.js node_modules/jslint/node_modules/glob/test/bash-comparison.js node_modules/jslint/node_modules/glob/test/bash-results.json node_modules/jslint/node_modules/glob/test/cwd-test.js node_modules/jslint/node_modules/glob/test/globstar-match.js node_modules/jslint/node_modules/glob/test/mark.js node_modules/jslint/node_modules/glob/test/new-glob-optional-options.js node_modules/jslint/node_modules/glob/test/nocase-nomagic.js node_modules/jslint/node_modules/glob/test/pause-resume.js node_modules/jslint/node_modules/glob/test/readme-issue.js node_modules/jslint/node_modules/glob/test/root-nomount.js node_modules/jslint/node_modules/glob/test/root.js node_modules/jslint/node_modules/glob/test/stat.js node_modules/jslint/node_modules/glob/test/zz-cleanup.js node_modules/jslint/node_modules/nopt/LICENSE node_modules/jslint/node_modules/nopt/README.md node_modules/jslint/node_modules/nopt/bin/nopt.js node_modules/jslint/node_modules/nopt/examples/my-program.js node_modules/jslint/node_modules/nopt/lib/nopt.js node_modules/jslint/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md node_modules/jslint/node_modules/nopt/node_modules/abbrev/LICENSE node_modules/jslint/node_modules/nopt/node_modules/abbrev/README.md node_modules/jslint/node_modules/nopt/node_modules/abbrev/abbrev.js node_modules/jslint/node_modules/nopt/node_modules/abbrev/package.json node_modules/jslint/node_modules/nopt/node_modules/abbrev/test.js node_modules/jslint/node_modules/nopt/package.json node_modules/jslint/node_modules/readable-stream/LICENSE node_modules/jslint/node_modules/readable-stream/README.md node_modules/jslint/node_modules/readable-stream/duplex.js node_modules/jslint/node_modules/readable-stream/lib/_stream_duplex.js node_modules/jslint/node_modules/readable-stream/lib/_stream_passthrough.js node_modules/jslint/node_modules/readable-stream/lib/_stream_readable.js node_modules/jslint/node_modules/readable-stream/lib/_stream_transform.js node_modules/jslint/node_modules/readable-stream/lib/_stream_writable.js node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/README.md node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/float.patch node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/lib/util.js node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/package.json node_modules/jslint/node_modules/readable-stream/node_modules/core-util-is/util.js node_modules/jslint/node_modules/readable-stream/node_modules/inherits/LICENSE node_modules/jslint/node_modules/readable-stream/node_modules/inherits/README.md node_modules/jslint/node_modules/readable-stream/node_modules/inherits/inherits.js node_modules/jslint/node_modules/readable-stream/node_modules/inherits/inherits_browser.js node_modules/jslint/node_modules/readable-stream/node_modules/inherits/package.json node_modules/jslint/node_modules/readable-stream/node_modules/inherits/test.js node_modules/jslint/node_modules/readable-stream/node_modules/isarray/README.md node_modules/jslint/node_modules/readable-stream/node_modules/isarray/build/build.js node_modules/jslint/node_modules/readable-stream/node_modules/isarray/component.json node_modules/jslint/node_modules/readable-stream/node_modules/isarray/index.js node_modules/jslint/node_modules/readable-stream/node_modules/isarray/package.json node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/LICENSE node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/README.md node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/index.js node_modules/jslint/node_modules/readable-stream/node_modules/string_decoder/package.json node_modules/jslint/node_modules/readable-stream/package.json node_modules/jslint/node_modules/readable-stream/passthrough.js node_modules/jslint/node_modules/readable-stream/readable.js node_modules/jslint/node_modules/readable-stream/transform.js node_modules/jslint/node_modules/readable-stream/writable.js node_modules/jslint/package.json perlcriticrc perltidyrc php5/usr/bin/phpcs php5/usr/bin/scripts/phpcs-svn-pre-commit php5/usr/share/php/PHP/CodeSniffer.php php5/usr/share/php/PHP/CodeSniffer/CLI.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/AbstractDocElement.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/AbstractParser.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/ClassCommentParser.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/CommentElement.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/DocElement.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/FunctionCommentParser.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/MemberCommentParser.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/PairElement.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/ParameterElement.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/ParserException.php php5/usr/share/php/PHP/CodeSniffer/CommentParser/SingleElement.php php5/usr/share/php/PHP/CodeSniffer/DocGenerators/Generator.php php5/usr/share/php/PHP/CodeSniffer/DocGenerators/HTML.php php5/usr/share/php/PHP/CodeSniffer/DocGenerators/Text.php php5/usr/share/php/PHP/CodeSniffer/Exception.php php5/usr/share/php/PHP/CodeSniffer/File.php php5/usr/share/php/PHP/CodeSniffer/Report.php php5/usr/share/php/PHP/CodeSniffer/Reporting.php php5/usr/share/php/PHP/CodeSniffer/Reports/Checkstyle.php php5/usr/share/php/PHP/CodeSniffer/Reports/Csv.php php5/usr/share/php/PHP/CodeSniffer/Reports/Emacs.php php5/usr/share/php/PHP/CodeSniffer/Reports/Full.php php5/usr/share/php/PHP/CodeSniffer/Reports/Gitblame.php php5/usr/share/php/PHP/CodeSniffer/Reports/Hgblame.php php5/usr/share/php/PHP/CodeSniffer/Reports/Json.php php5/usr/share/php/PHP/CodeSniffer/Reports/Junit.php php5/usr/share/php/PHP/CodeSniffer/Reports/Notifysend.php php5/usr/share/php/PHP/CodeSniffer/Reports/Source.php php5/usr/share/php/PHP/CodeSniffer/Reports/Summary.php php5/usr/share/php/PHP/CodeSniffer/Reports/Svnblame.php php5/usr/share/php/PHP/CodeSniffer/Reports/VersionControl.php php5/usr/share/php/PHP/CodeSniffer/Reports/Xml.php php5/usr/share/php/PHP/CodeSniffer/Sniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractPatternSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractScopeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/AbstractVariableSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Classes/DuplicateClassNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/EmptyStatementStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/ForLoopShouldBeWhileLoopStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/ForLoopWithTestFunctionCallStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/JumbledIncrementerStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnconditionalIfStatementStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnnecessaryFinalModifierStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UnusedFunctionParameterStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/CodeAnalysis/UselessOverridingMethodStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Commenting/FixmeStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Commenting/TodoStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/ControlStructures/InlineControlStructureStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/CSSLintStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/ClosureLinterStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Debug/JSHintStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/ByteOrderMarkStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/EndFileNewlineStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/EndFileNoNewlineStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/InlineHTMLStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LineEndingsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LineLengthStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/LowercasedFilenameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/OneClassPerFileStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Files/OneInterfacePerFileStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/DisallowMultipleStatementsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/MultipleStatementAlignmentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/NoSpaceAfterCastStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Formatting/SpaceAfterCastStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/CallTimePassByReferenceStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/FunctionCallArgumentSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/OpeningFunctionBraceBsdAllmanStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Functions/OpeningFunctionBraceKernighanRitchieStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Metrics/CyclomaticComplexityStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Metrics/NestingLevelStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/CamelCapsFunctionNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/ConstructorNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/NamingConventions/UpperCaseConstantNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/CharacterBeforePHPOpeningTagStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/ClosingPHPTagStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/DeprecatedFunctionsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/DisallowShortOpenTagStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/ForbiddenFunctionsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/LowerCaseConstantStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/LowerCaseKeywordStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/NoSilencedErrorsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/SAPIUsageStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/PHP/UpperCaseConstantStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/Strings/UnnecessaryStringConcatStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/VersionControl/SubversionPropertiesStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/DisallowSpaceIndentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/DisallowTabIndentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Docs/WhiteSpace/ScopeIndentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Classes/DuplicateClassNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/EmptyStatementSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/ForLoopShouldBeWhileLoopSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/ForLoopWithTestFunctionCallSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/JumbledIncrementerSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnconditionalIfStatementSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnnecessaryFinalModifierSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UnusedFunctionParameterSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/CodeAnalysis/UselessOverridingMethodSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Commenting/FixmeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Commenting/TodoSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/ControlStructures/InlineControlStructureSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/CSSLintSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/ClosureLinterSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Debug/JSHintSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/ByteOrderMarkSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/EndFileNewlineSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/EndFileNoNewlineSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/InlineHTMLSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineEndingsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineLengthSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LowercasedFilenameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/OneClassPerFileSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/OneInterfacePerFileSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/DisallowMultipleStatementsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/MultipleStatementAlignmentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/NoSpaceAfterCastSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Formatting/SpaceAfterCastSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/CallTimePassByReferenceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/FunctionCallArgumentSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceBsdAllmanSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Functions/OpeningFunctionBraceKernighanRitchieSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Metrics/CyclomaticComplexitySniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Metrics/NestingLevelSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/CamelCapsFunctionNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/ConstructorNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/NamingConventions/UpperCaseConstantNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/CharacterBeforePHPOpeningTagSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/ClosingPHPTagSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/DeprecatedFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/DisallowShortOpenTagSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/ForbiddenFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/LowerCaseConstantSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/LowerCaseKeywordSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/NoSilencedErrorsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/SAPIUsageSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/SyntaxSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/PHP/UpperCaseConstantSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/Strings/UnnecessaryStringConcatSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/VersionControl/SubversionPropertiesSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/DisallowSpaceIndentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/DisallowTabIndentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/Sniffs/WhiteSpace/ScopeIndentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Generic/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/IncorrectPatternException.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/CSS/BrowserSpecificStylesSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/ChannelExceptionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/DisallowSelfActionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/IncludeOwnSystemSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/IncludeSystemSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Channels/UnusedSystemSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Commenting/FunctionCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Debug/DebugCodeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Debug/FirebugConsoleSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/AssignThisSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/CreateWidgetTypeCallbackSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Objects/DisallowNewWidgetSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/AjaxNullComparisonSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/EvalObjectFactorySniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/GetRequestDataSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/PHP/ReturnFunctionValueSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/Sniffs/Strings/JoinStringsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/MySource/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Classes/ClassDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/ClassCommentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/FileCommentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/FunctionCommentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Commenting/InlineCommentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/ControlStructures/ControlSignatureStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/ControlStructures/MultiLineConditionStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Files/IncludingFileStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Files/LineLengthStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Formatting/MultiLineAssignmentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/FunctionCallSignatureStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/FunctionDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/Functions/ValidDefaultValueStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidClassNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidFunctionNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/NamingConventions/ValidVariableNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ObjectOperatorIndentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ScopeClosingBraceStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Docs/WhiteSpace/ScopeIndentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Classes/ClassDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/ClassCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/FileCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/FunctionCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Commenting/InlineCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/ControlSignatureSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/ControlStructures/MultiLineConditionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Files/IncludingFileSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Formatting/MultiLineAssignmentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/FunctionCallSignatureSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/FunctionDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/Functions/ValidDefaultValueSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidClassNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidFunctionNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/NamingConventions/ValidVariableNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ObjectOperatorIndentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/Sniffs/WhiteSpace/ScopeIndentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PEAR/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PHPCS/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Docs/Classes/ClassDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Docs/Files/SideEffectsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Classes/ClassDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Files/SideEffectsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/Sniffs/Methods/CamelCapsMethodNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR1/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Classes/ClassDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Classes/PropertyDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/ControlStructureSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/ElseIfDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/ControlStructures/SwitchDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Files/EndFileNewlineStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Methods/MethodDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Namespaces/NamespaceDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Docs/Namespaces/UseDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Classes/ClassDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Classes/PropertyDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ControlStructureSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/ElseIfDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/ControlStructures/SwitchDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Files/EndFileNewlineSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Methods/FunctionCallSignatureSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Methods/MethodDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Namespaces/NamespaceDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/Sniffs/Namespaces/UseDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/PSR2/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Arrays/ArrayBracketSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Arrays/ArrayDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Classes/LowercaseClassKeywordsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Classes/SelfMemberReferenceStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Commenting/DocCommentAlignmentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Commenting/FunctionCommentThrowTagStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/ForEachLoopDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/ForLoopDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/ControlStructures/LowercaseDeclarationStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Functions/FunctionDuplicateArgumentStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Functions/LowercaseFunctionKeywordsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Scope/StaticThisUsageStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/Strings/EchoedStringsStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/CastSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/FunctionOpeningBraceStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/LanguageConstructSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/ObjectOperatorSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/ScopeKeywordSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Docs/WhiteSpace/SemicolonSpacingStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Arrays/ArrayBracketSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Arrays/ArrayDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionClosingBraceSpaceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionNameSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ClassDefinitionOpeningBraceSpaceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ColonSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ColourDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DisallowMultipleStyleDefinitionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DuplicateClassDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/DuplicateStyleDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/EmptyClassDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/EmptyStyleDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ForbiddenStylesSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/IndentationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/LowercaseStyleDefinitionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/MissingColonSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/NamedColoursSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/OpacitySniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/SemicolonSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CSS/ShorthandSizeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ClassDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ClassFileNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/DuplicatePropertySniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/LowercaseClassKeywordsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/SelfMemberReferenceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Classes/ValidClassNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/CodeAnalysis/EmptyStatementSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/BlockCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/ClassCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/ClosingDeclarationCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/DocCommentAlignmentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/EmptyCatchCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FileCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FunctionCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/FunctionCommentThrowTagSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/InlineCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/LongConditionClosingCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/PostStatementCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Commenting/VariableCommentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ControlSignatureSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ElseIfDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ForEachLoopDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/ForLoopDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/InlineIfDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/LowercaseDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/ControlStructures/SwitchDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Debug/JSLintSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Debug/JavaScriptLintSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Files/FileExtensionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Formatting/OperatorBracketSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDeclarationArgumentSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/FunctionDuplicateArgumentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/GlobalFunctionSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/LowercaseFunctionKeywordsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Functions/MultiLineFunctionDeclarationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ConstantCaseSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidFunctionNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/NamingConventions/ValidVariableNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/DisallowObjectStringIndexSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/ObjectInstantiationSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Objects/ObjectMemberCommaSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/ComparisonOperatorUsageSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/IncrementDecrementUsageSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Operators/ValidLogicalOperatorsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/CommentedOutCodeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowBooleanStatementSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowComparisonAssignmentSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowInlineIfSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowMultipleAssignmentsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowObEndFlushSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DisallowSizeFunctionsInLoopsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/DiscouragedFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/EmbeddedPhpSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/EvalSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/ForbiddenFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/GlobalKeywordSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/HeredocSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/InnerFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/LowercasePHPFunctionsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/PHP/NonExecutableCodeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/MemberVarScopeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/MethodScopeSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Scope/StaticThisUsageSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/ConcatenationSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/DoubleQuoteUsageSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/Strings/EchoedStringsSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/CastSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ControlStructureSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/LanguageConstructSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/LogicalOperatorSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/MemberVarSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ObjectOperatorSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/OperatorSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/PropertyLabelSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ScopeClosingBraceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/ScopeKeywordSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SemicolonSpacingSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/SuperfluousWhitespaceSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Squiz/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/Debug/CodeAnalyzerStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/Files/ClosingTagStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Docs/NamingConventions/ValidVariableNameStandard.xml php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/Debug/CodeAnalyzerSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/Files/ClosingTagSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php php5/usr/share/php/PHP/CodeSniffer/Standards/Zend/ruleset.xml php5/usr/share/php/PHP/CodeSniffer/Tokenizers/CSS.php php5/usr/share/php/PHP/CodeSniffer/Tokenizers/JS.php php5/usr/share/php/PHP/CodeSniffer/Tokenizers/PHP.php php5/usr/share/php/PHP/CodeSniffer/Tokens.php php5/usr/share/php/test/PHP_CodeSniffer/AllTests.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/AllTests.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/ErrorSuppressionTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/File/GetMethodParametersTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Core/IsCamelCapsTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/AbstractSniffUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/AllSniffs.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.5.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.6.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Classes/DuplicateClassNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/EmptyStatementUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/EmptyStatementUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopShouldBeWhileLoopUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopShouldBeWhileLoopUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopWithTestFunctionCallUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/ForLoopWithTestFunctionCallUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/JumbledIncrementerUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnconditionalIfStatementUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnnecessaryFinalModifierUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnusedFunctionParameterUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UnusedFunctionParameterUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/CodeAnalysis/UselessOverridingMethodUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/FixmeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Commenting/TodoUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/ControlStructures/InlineControlStructureUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/ByteOrderMarkUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/ByteOrderMarkUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.1.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.2.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.3.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNewlineUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.1.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.2.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.3.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/EndFileNoNewlineUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/InlineHTMLUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineEndingsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineLengthUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LineLengthUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/LowercasedFilenameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneClassPerFileUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneClassPerFileUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneInterfacePerFileUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Files/OneInterfacePerFileUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/DisallowMultipleStatementsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/DisallowMultipleStatementsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/MultipleStatementAlignmentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/NoSpaceAfterCastUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/NoSpaceAfterCastUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Formatting/SpaceAfterCastUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/CallTimePassByReferenceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/FunctionCallArgumentSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceBsdAllmanUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceBsdAllmanUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Functions/OpeningFunctionBraceKernighanRitchieUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/CyclomaticComplexityUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Metrics/NestingLevelUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/CamelCapsFunctionNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/ConstructorNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/NamingConventions/UpperCaseConstantNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/CharacterBeforePHPOpeningTagUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/CharacterBeforePHPOpeningTagUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ClosingPHPTagUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ClosingPHPTagUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/DisallowShortOpenTagUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ForbiddenFunctionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/ForbiddenFunctionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseConstantUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/LowerCaseKeywordUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/NoSilencedErrorsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/NoSilencedErrorsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SAPIUsageUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SAPIUsageUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SyntaxUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/SyntaxUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/UpperCaseConstantUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/PHP/UpperCaseConstantUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/Strings/UnnecessaryStringConcatUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowSpaceIndentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/DisallowTabIndentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Generic/Tests/WhiteSpace/ScopeIndentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/CSS/BrowserSpecificStylesUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/CSS/BrowserSpecificStylesUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/DisallowSelfActionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/DisallowSelfActionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/IncludeSystemUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/IncludeSystemUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/UnusedSystemUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Channels/UnusedSystemUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Commenting/FunctionCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Commenting/FunctionCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/DebugCodeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/DebugCodeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/FirebugConsoleUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Debug/FirebugConsoleUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/AssignThisUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/AssignThisUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/CreateWidgetTypeCallbackUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/CreateWidgetTypeCallbackUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/DisallowNewWidgetUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Objects/DisallowNewWidgetUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/AjaxNullComparisonUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/AjaxNullComparisonUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/EvalObjectFactoryUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/EvalObjectFactoryUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/GetRequestDataUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/GetRequestDataUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/ReturnFunctionValueUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/PHP/ReturnFunctionValueUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Strings/JoinStringsUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/MySource/Tests/Strings/JoinStringsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Classes/ClassDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/ClassCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FileCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FunctionCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/FunctionCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/InlineCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Commenting/InlineCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/ControlSignatureUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/ControlSignatureUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/MultiLineConditionUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/ControlStructures/MultiLineConditionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Files/IncludingFileUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Files/IncludingFileUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Formatting/MultiLineAssignmentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Formatting/MultiLineAssignmentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionCallSignatureUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionCallSignatureUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/FunctionDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/Functions/ValidDefaultValueUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidClassNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidFunctionNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidVariableNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/NamingConventions/ValidVariableNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ObjectOperatorIndentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ObjectOperatorIndentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeClosingBraceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeIndentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PEAR/Tests/WhiteSpace/ScopeIndentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Classes/ClassDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Files/SideEffectsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Methods/CamelCapsMethodNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR1/Tests/Methods/CamelCapsMethodNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/ClassDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/PropertyDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Classes/PropertyDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ControlStructureSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ControlStructureSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ElseIfDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/ElseIfDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/SwitchDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/ControlStructures/SwitchDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.5.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Files/EndFileNewlineUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/FunctionCallSignatureUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/FunctionCallSignatureUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Methods/MethodDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/NamespaceDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/PSR2/Tests/Namespaces/UseDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayBracketSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayBracketSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Arrays/ArrayDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionClosingBraceSpaceUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionClosingBraceSpaceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionNameSpacingUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionNameSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionOpeningBraceSpaceUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ClassDefinitionOpeningBraceSpaceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColonSpacingUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColonSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColourDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ColourDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DisallowMultipleStyleDefinitionsUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DisallowMultipleStyleDefinitionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateClassDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateClassDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateStyleDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/DuplicateStyleDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyClassDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyClassDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyStyleDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/EmptyStyleDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ForbiddenStylesUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ForbiddenStylesUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/IndentationUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/IndentationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/LowercaseStyleDefinitionUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/LowercaseStyleDefinitionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/MissingColonUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/MissingColonUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/NamedColoursUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/NamedColoursUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/OpacityUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/OpacityUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/SemicolonSpacingUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/SemicolonSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CSS/ShorthandSizeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ClassFileNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/DuplicatePropertyUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/DuplicatePropertyUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/LowercaseClassKeywordsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/SelfMemberReferenceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Classes/ValidClassNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CodeAnalysis/EmptyStatementUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/CodeAnalysis/EmptyStatementUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/BlockCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClassCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClassCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/ClosingDeclarationCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/DocCommentAlignmentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/DocCommentAlignmentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/EmptyCatchCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/EmptyCatchCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FileCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentThrowTagUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentThrowTagUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/FunctionCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/InlineCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/LongConditionClosingCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/PostStatementCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/VariableCommentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Commenting/VariableCommentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ControlSignatureUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ElseIfDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ElseIfDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForEachLoopDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForEachLoopDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/ForLoopDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/InlineIfDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/InlineIfDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/LowercaseDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/LowercaseDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/ControlStructures/SwitchDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JSLintUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JSLintUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JavaScriptLintUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Debug/JavaScriptLintUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.1.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.2.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.3.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.4.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Files/FileExtensionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Formatting/OperatorBracketUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationArgumentSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationArgumentSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDuplicateArgumentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/FunctionDuplicateArgumentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/GlobalFunctionUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/GlobalFunctionUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/LowercaseFunctionKeywordsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/LowercaseFunctionKeywordsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Functions/MultiLineFunctionDeclarationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ConstantCaseUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidFunctionNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidFunctionNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/NamingConventions/ValidVariableNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/DisallowObjectStringIndexUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/DisallowObjectStringIndexUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectInstantiationUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectMemberCommaUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Objects/ObjectMemberCommaUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ComparisonOperatorUsageUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/IncrementDecrementUsageUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/IncrementDecrementUsageUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ValidLogicalOperatorsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Operators/ValidLogicalOperatorsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/CommentedOutCodeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowBooleanStatementUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowBooleanStatementUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowComparisonAssignmentUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowComparisonAssignmentUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowInlineIfUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowMultipleAssignmentsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowObEndFlushUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowObEndFlushUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DisallowSizeFunctionsInLoopsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DiscouragedFunctionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/DiscouragedFunctionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EmbeddedPhpUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EvalUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/EvalUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/ForbiddenFunctionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/ForbiddenFunctionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/GlobalKeywordUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/GlobalKeywordUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/HeredocUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/HeredocUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/InnerFunctionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/InnerFunctionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/LowercasePHPFunctionsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/LowercasePHPFunctionsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/PHP/NonExecutableCodeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MemberVarScopeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/MethodScopeUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Scope/StaticThisUsageUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/ConcatenationSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/ConcatenationSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/DoubleQuoteUsageUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/DoubleQuoteUsageUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/EchoedStringsUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/Strings/EchoedStringsUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/CastSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/CastSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ControlStructureSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionClosingBraceSpaceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionOpeningBraceSpaceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/FunctionSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LanguageConstructSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/LogicalOperatorSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/MemberVarSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ObjectOperatorSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ObjectOperatorSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/OperatorSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/PropertyLabelSpacingUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/PropertyLabelSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeClosingBraceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeClosingBraceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/ScopeKeywordSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SemicolonSpacingUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.1.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.1.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.2.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.2.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.3.css php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.3.js php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Squiz/Tests/WhiteSpace/SuperfluousWhitespaceUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Debug/CodeAnalyzerUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Debug/CodeAnalyzerUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Files/ClosingTagUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/Files/ClosingTagUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.inc php5/usr/share/php/test/PHP_CodeSniffer/CodeSniffer/Standards/Zend/Tests/NamingConventions/ValidVariableNameUnitTest.php php5/usr/share/php/test/PHP_CodeSniffer/TestSuite.php t/00-report-prereqs.dd t/00-report-prereqs.t t/Basic.t t/Conf.t t/Zglob.t t/author-Git.t t/author-Plugin-CSSUnminifier.t t/author-Plugin-JSBeautify.t t/author-Plugin-JSHint.t t/author-Plugin-JSLint.t t/author-Plugin-MasonTidy.t t/author-Plugin-PHPCodeSniffer.t t/author-Plugin-PerlCritic.t t/author-Plugin-PerlTidy.t t/author-Plugin-PerlTidySweet.t t/author-Plugin-PodChecker.t t/author-Plugin-PodSpell.t t/author-Plugin-PodTidy.t t/author-Plugin-SortLines.t t/author-Util.t t/author-mojibake.t t/author-no-tabs.t t/author-pod-spell.t t/author-pod-syntax.t t/author-self-tidyall.t t/author-test-version.t t/author-tidy-and-critic.t t/lib/Code/TidyAll/Test/Class.pm t/lib/Code/TidyAll/Test/Plugin/AToZ.pm t/lib/Code/TidyAll/Test/Plugin/AlwaysPhonetic.pm t/lib/Code/TidyAll/Test/Plugin/CheckUpper.pm t/lib/Code/TidyAll/Test/Plugin/RepeatFoo.pm t/lib/Code/TidyAll/Test/Plugin/ReverseFoo.pm t/lib/Code/TidyAll/Test/Plugin/UpperText.pm t/lib/Test/Code/TidyAll/Basic.pm t/lib/Test/Code/TidyAll/Conf.pm t/lib/Test/Code/TidyAll/Git.pm t/lib/Test/Code/TidyAll/Plugin.pm t/lib/Test/Code/TidyAll/Plugin/CSSUnminifier.pm t/lib/Test/Code/TidyAll/Plugin/JSBeautify.pm t/lib/Test/Code/TidyAll/Plugin/JSHint.pm t/lib/Test/Code/TidyAll/Plugin/JSLint.pm t/lib/Test/Code/TidyAll/Plugin/MasonTidy.pm t/lib/Test/Code/TidyAll/Plugin/PHPCodeSniffer.pm t/lib/Test/Code/TidyAll/Plugin/PerlCritic.pm t/lib/Test/Code/TidyAll/Plugin/PerlTidy.pm t/lib/Test/Code/TidyAll/Plugin/PerlTidySweet.pm t/lib/Test/Code/TidyAll/Plugin/PodChecker.pm t/lib/Test/Code/TidyAll/Plugin/PodSpell.pm t/lib/Test/Code/TidyAll/Plugin/PodTidy.pm t/lib/Test/Code/TidyAll/Plugin/SortLines.pm t/lib/Test/Code/TidyAll/SVN.pm t/lib/Test/Code/TidyAll/Util.pm t/lib/Test/Code/TidyAll/Zglob.pm t/release-cpan-changes.t tidyall.ini weaver.ini Code-TidyAll-0.32~dfsg/Makefile.PL0000644000000000000000000000624312623441275015375 0ustar rootroot# This Makefile.PL for Code-TidyAll was generated by # inc::MyMakeMaker # and Dist::Zilla::Plugin::MakeMaker::Awesome 0.34. # Don't edit it but the dist.ini and plugins used to construct it. use strict; use warnings; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "Engine for tidyall, your all-in-one code tidier and validator", "AUTHOR" => "Jonathan Swartz , Dave Rolsky ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "Code-TidyAll", "EXE_FILES" => [ "bin/tidyall" ], "LICENSE" => "perl", "NAME" => "Code::TidyAll", "PREREQ_PM" => { "Capture::Tiny" => 0, "Config::INI::Reader" => 0, "Cwd" => 0, "Data::Dumper" => 0, "Date::Format" => 0, "Digest::SHA" => 0, "Exporter" => 0, "File::Basename" => 0, "File::Find" => 0, "File::Path" => 0, "File::Slurp::Tiny" => 0, "File::Spec::Functions" => 0, "File::Temp" => 0, "File::Which" => 0, "File::Zglob" => 0, "Getopt::Long" => 0, "Guard" => 0, "IPC::Run3" => 0, "IPC::System::Simple" => 0, "List::MoreUtils" => 0, "Log::Any" => 0, "Moo" => 0, "Moo::Role" => 0, "Scalar::Util" => 0, "Test::Builder" => 0, "Text::Diff" => 0, "Text::Diff::Table" => 0, "Text::ParseWords" => 0, "Time::Duration::Parse" => 0, "Try::Tiny" => 0, "base" => 0, "constant" => 0, "strict" => 0, "vars" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "Encode" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "Test::Class::Most" => 0, "Test::Differences" => 0, "Test::More" => "0.96", "Test::Warnings" => 0, "autodie" => 0, "lib" => 0 }, "VERSION" => "0.32", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Capture::Tiny" => 0, "Config::INI::Reader" => 0, "Cwd" => 0, "Data::Dumper" => 0, "Date::Format" => 0, "Digest::SHA" => 0, "Encode" => 0, "Exporter" => 0, "ExtUtils::MakeMaker" => 0, "File::Basename" => 0, "File::Find" => 0, "File::Path" => 0, "File::Slurp::Tiny" => 0, "File::Spec" => 0, "File::Spec::Functions" => 0, "File::Temp" => 0, "File::Which" => 0, "File::Zglob" => 0, "Getopt::Long" => 0, "Guard" => 0, "IPC::Run3" => 0, "IPC::System::Simple" => 0, "List::MoreUtils" => 0, "Log::Any" => 0, "Moo" => 0, "Moo::Role" => 0, "Scalar::Util" => 0, "Test::Builder" => 0, "Test::Class::Most" => 0, "Test::Differences" => 0, "Test::More" => "0.96", "Test::Warnings" => 0, "Text::Diff" => 0, "Text::Diff::Table" => 0, "Text::ParseWords" => 0, "Time::Duration::Parse" => 0, "Try::Tiny" => 0, "autodie" => 0, "base" => 0, "constant" => 0, "lib" => 0, "strict" => 0, "vars" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); use inc::Util qw(make_node_symlinks); make_node_symlinks(); Code-TidyAll-0.32~dfsg/perlcriticrc0000644000000000000000000000032712623441275016030 0ustar rootrootonly = 1 severity = 1 verbose = %m at %f line %l [%p]\n [Moose::RequireMakeImmutable] [TestingAndDebugging::RequireUseStrict] equivalent_modules = Moo Test::Class::Most [Variables::ProhibitConditionalDeclarations] Code-TidyAll-0.32~dfsg/Changes0000644000000000000000000002267512623441275014725 0ustar rootroot0.32 2015-11-19 - When in verbose mode we now show what plugins are being applied to each file. This is helpful if you want to know why a file isn't being ignored, for example. - Added a new plugin configuration option for the rc file, "weight". You can use this to exercise greater control over the order that plugins run in. 0.31 2015-11-17 - Added a new plugin, DiffOnTidyError. This plugin will call "diff -u" to compare the original file content to the tidy version. 0.30 2015-09-14 - Added a --no-cleanup option for the tidyall script that causes it to leave any tempdirs it creates behind. Implemented by Mark Fowler. GitHub #41. 0.29 2015-08-15 - Replaced use of Digest::SHA1 with Digest::SHA. The latter module has been part of the Perl core since 5.10. Implemented by Sergey Romanov. GitHub #39. 0.28 2015-08-06 - The JSON plugin now uses JSON::MaybeXS instead of JSON.pm. Patch by Greg Oschwald. GitHub #37. - Added a new plugin, PerlTidySweet, which uses perltidy-sweet instead of perltidy. Implemented by Mark Grimes. GitHub #26. 0.27 2015-07-04 [BUG FIXES] - Fixed broken POD. Most modules were missing their NAME sections because of a mistake in the distro's weaver.ini file. Reported by Красимир Беров. 0.26 2015-06-29 [BUG FIXES] - The tidyall script did not handle the -I option correctly. It was treated as a boolean rather than a string, meaning it basically ignored whatever you passed. Fixed by Andy Jack. GH #35. - The PodChecker plugin no longer generates warnings about an undef variable if the file did not have any Pod. - Added an option for the tidyall config file, shebang. This is an additional filter that selects files based on the shebang line (#!/bin/foo). Implemented by timgimyee. GH #25. 0.25 2015-03-31 [ENHANCEMENTS] - You can now pass "verbose => 1" to tidyall_ok(). Previously this would have been overridden because we unconditionally set "quiet => 1", but now we only do this when verbose is not specified. - Added a new "msg_outputter" attribute to Code::TidyAll. By default, this is a sub that simply calls "printf", but you can pass something else to change how messages are printed. Test::Code::TidyAll uses this to send messages through diag(). - If you set "verbose => 1" when calling Test::Code::TidyAll, it will now use Text::Diff::Table to show details of how a file needs to be tidied in order to pass the tidyall checks. - Made the PerlCritic plugin pass even if a critic module issues some warnings. As long as perlcritic says "source OK", we want to treat that as a pass, despite any warnings it may issue. Fixed by Mark Fowler. - Made the caching model pluggable, and added a new Code::TidyAll::CacheModel::Shared class as an alternative to the default model. This lets you share the cache directory between multiple branches in a single checkout while still detecting file changes properly. Implemented by Mark Fowler. 0.24 2014-11-06 [WARNING FOR A FUTURE RELEASE] - At some point in the future, it will probably be necessary for Code::TidyAll to become aware of encodings on a per-file basis. As it stands right now, any tidying plugin which reformats text could, in theory, end up splitting up a UTF-8 character's bytes across at a line break. [BUG FIXES] - Replaced the use of Capture::Tiny with IPC::Run3 for some plugins. The former seems to sometimes return character data where we want bytes, even if the STDOUT and STDERR handles are binmode()'d to the ":bytes" encoding. This prevents warnings about writing wide characters from the JSBeautify plugin. 0.23 2014-11-06 - Fix test failures seen on CPANTesters. 0.22 2014-11-05 [BUG FIXES] * Removed the compile test added in the last release. Many plugin modules won't compile unless optional prereqs are manually installed first (such as Perl::Critic, Perl::Tidy, etc.). 0.21 2014-11-05 [ENHANCEMENTS] * Test::Code::TidyAll now sets "quiet => 1" when creating the Code::TidyAll object to suppress noise from any plugins. * Test::Code::TidyAll now calls Test::More::diag() after test failures instead of before. [BUG FIXES] * Lots of little doc tweaks and fixes. 0.20 2014-05-18 [BUG FIXES] * Fix option handling implentation and documentation for Test::Code::TidyAll::tidyall_ok - https://github.com/jonswar/perl-code-tidyall/issues/18 (Olad Alders) 0.19 2014-03-06 [ENHANCEMENTS] * Added a JSON plugin (Gregory Oschwald) 0.18 2013-09-21 [BUG FIXES] * Fix Test::Code::TidyAll::tidyall_ok - https://github.com/jonswar/perl-code-tidyall/issues/12 (Adam Taylor) * Fix JSBeautify plugin as js-beautify no longer respects --replace 0.17 2013-03-11 [BACKWARDS INCOMPATIBILITIES] * Rename API method process_files to more accurate process_paths [BUG FIXES] * Fix recursive processing of directories (Mark Risman) * Improve git precommit setup script - https://github.com/jonswar/perl-code-tidyall/pull/10 (Olaf Anders) 0.16 2012-10-22 [ENHANCEMENTS] * Added phpcs plugin (Joseph Crotty) * Added cssunminifier plugin * Added SortLines plugin, for one-entry-per-line files like .gitignore 0.15 2012-10-11 [BUG FIXES] * Fix test_dirs test to not rely on file ordering 0.14 2012-10-10 [ENHANCEMENTS] * Allow a plugin to be listed multiple times in config with different configuration * Specify order that plugins run (tidiers before validators, then alpha) and document that they are applied atomically * Added etc/editors/tidyall.vim for Vim (Justin Devuyst) * Added -r/--recursive flag to process directories recursively * In -p/--pipe mode, mirror input to output in case of error (Justin Devuyst) * Fix -l/--list handling of local files * Added --version option * Make git prereceive hook more modular, so it can be combined with other checks 0.13 2012-09-30 [BUG FIXES] * Adjust MasonTidy plugin for new API * Remove Util.t containing only author-only tests 0.12 2012-09-27 [ENHANCEMENTS] * Added podspell plugin (POD spell checker) * Added --iterations flag to run tidier transforms multiple times * Allow .tidyallrc as alternative to tidyall.ini * Allow git prereceive hook to be bypassed by pushing an identical set of commits several consecutive times (allow_repeated_push) * Added handcrafted usage w/summary of options, instead of Pod::Usage 0.11 2012-09-21 [ENHANCEMENTS] * Allow multiple select and ignore patterns, separated by whitespace or on separate lines * Added -l/--list flag to show which plugins match which files * Added conf_name parameter to specify name other than tidyall.ini * Redirect stdout to stderr with -p/--pipe, so that stdout is dedicated to the tidied content * In tidyall.el, hide error buffer on successful tidy [BUG FIXES] * Handle argv/config errors correctly in various plugins * Eliminate double-printed error with -p/--pipe * Allow relative paths to -p/--pipe 0.10 2012-09-12 [ENHANCEMENTS] * Added masontidy plugin (Mason component tidier) * Added jslint plugin (javascript validator) 0.09 2012-09-11 [BUG FIXES] * Remove use of ex-dependency Hash::MoreUtils from bin/tidyall (Jason Wieland) * Added IPC::System::Simple and Pod::Usage to deps (Jason Wieland) 0.08 2012-09-10 [ENHANCEMENTS] * Added js-beautify plugin (javascript tidier) * Added jshint plugin (javascript validator) * Added podchecker plugin * Added -p/--pipe flag to read from STDIN and write to STDOUT * Allow tidyall.el to work in narrowed regions * Make plugins into Moo classes, pass configuration as attributes [BUG FIXES] * Remove unused SVN::Look - perl-code-tidyall/pull/1 (Pedro Melo) * Filter just files from git status in Code::TidyAll::Git::Precommit (Pedro Melo) 0.07 2012-09-05 [ENHANCEMENTS] * Added git pre-receive hook (Code::TidyAll::Git::Prereceive) [BUG FIXES] * Show file paths with errors in quiet mode 0.06 2012-09-03 [ENHANCEMENTS] * Added -g/--git flag and git pre-commit hook (Code::TidyAll::Git::Precommit) [BUG FIXES] * Omit directories from svn_uncommitted_files (--svn) 0.05 2012-08-21 [ENHANCEMENTS] * Added etc/editors/tidyall.el for Emacs * Only print 'no plugins apply' warning in verbose mode 0.04 2012-08-14 [ENHANCEMENTS] * Added -s/--svn flag * Added emergency_comment_prefix ("NO TIDYALL") to svn precommit hook [BUG FIXES] * Added back missing plugins * Fix --check-only flag 0.03 2012-07-24 [eNHANCEMENTS] * Added svn precommit hook (Code::TidyAll::SVN::Precommit) * Added preprocess_source and postprocess_source to plugins * Added only_modes and except_modes configuration for plugins * Added Code::TidyAll::process_source(), for processing a string instead of a file * When only specified files are being processed, don't scan the whole hierarchy * Added -I flag to tidyall [INTERNALS] * Switch to Moo * Added separate new_from_conf_file constructor, for cleaner separation of cases 0.02 2012-07-03 [ENHANCEMENTS] * Added Test::Code::TidyAll, to test that a project is tidied * Added prefilter and postfilter params, to be applied to code before and after processing * Added --check-only option to check but not tidy * Added --mode option and modes config entry, to activate only a subset of plugins in config * Added --output-suffix to write file to a different destination * Added --quiet option to suppress most output * Added --tidyall-class option to specify a different Code::TidyAll subclass * Document how to create new plugins in Code::Tidy::Plugin 0.01 2012-06-17 * Initial release