Login
RT #77977: Perl::Tidy 20120619 breaks CodeLayout::RequireTidyCode
authorTom Wyant <harryfmudd@comcast.net>
Sat, 23 Jun 2012 17:33:39 +0000 (17:33 +0000)
committerTom Wyant <harryfmudd@comcast.net>
Sat, 23 Jun 2012 17:33:39 +0000 (17:33 +0000)
commit0eb6da0b33ecfeef80d4080491cc858abfc0a304
treeaa841670a75f21931f9832a14f1e04c11384c1db
parenta2b04c9dc3cda55bf9c837ca1010caf6e2527f15
RT #77977: Perl::Tidy 20120619 breaks CodeLayout::RequireTidyCode

Perl::Tidy version 20120619 breaks CodeLayout::RequireTidyCode. There
appear actually to be three breakages:

1) The stderr argument to perltidy() no longer takes a scalar reference.
This is a documented change. Fortunately Perl::Critic already has
IO::String as a dependency, so the solution is to instantiate an
IO::String object from the $stderr variable, and pass that.

2) Perl::Tidy now chomps the perltidyrc string.  This fails if it is
passed a reference to a Readonly::Scalar, and throws an exception. The
solution is to assign $EMPTY to a scalar variable, and pass that.

3) If you pass a scalar reference as the source argument to perltidy(),
it is modified after the call -- the trailing newline is removed. The
only solution I can come up with is more ad-hocery.
Changes
lib/Perl/Critic/Policy/CodeLayout/RequireTidyCode.pm