tl; dr
Cpanel::JSON::XSをロードするとJSON::PP::Booleanに「""」のoverloadが追加される。
通常の文字列化では、素のJSON::PP::Booleanと同様に0または1になるということで影響はないが「overload::Method($obj, q{""})」のようなチェックを行っていた場合に動作が変わることがある。
サンプルコード
https://github.com/usualoma/trick-json-pp-booleanにサンプルコードがあります。
問題と原因
以下のようなテストがあった時に、
通常は成功するのですが、モジュールの依存関係でどこかでCpanel::JSON::XSがロードされていると失敗するという状況が発生しました。
原因はTest::More::is_deeplyが内部で「overload::Method($obj, q{""})」を使って文字列化可能か判断している部分があり、そこで挙動が変わっているというものでした。
以下のように書けば(expectedであるJSON::PP::true側も同じ挙動で変換されるため)どちらでも大丈夫です。