diff -ur DBIx-Class-0.08009/t/89dbicadmin.t DBIx-Class-0.08009-patched/t/89dbicadmin.t --- DBIx-Class-0.08009/t/89dbicadmin.t 2008-01-20 22:29:19.000000000 +0900 +++ DBIx-Class-0.08009-patched/t/89dbicadmin.t 2008-01-26 14:43:24.281625000 +0900 @@ -27,23 +27,32 @@ my $employees = $schema->resultset('Employee'); my @cmd = ($^X, qw|script/dbicadmin --quiet --schema=DBICTest::Schema --class=Employee --tlibs|, q|--connect=["dbi:SQLite:dbname=t/var/DBIxClass.db","","",{"AutoCommit":1}]|, qw|--force --tlibs|); -system(@cmd, qw|--op=insert --set={"name":"Matt"}|); +system(_fix(@cmd, qw|--op=insert --set={"name":"Matt"}|)); ok( ($employees->count()==1), 'insert count' ); my $employee = $employees->find(1); ok( ($employee->name() eq 'Matt'), 'insert valid' ); -system(@cmd, qw|--op=update --set={"name":"Trout"}|); +system(_fix(@cmd, qw|--op=update --set={"name":"Trout"}|)); $employee = $employees->find(1); ok( ($employee->name() eq 'Trout'), 'update' ); -system(@cmd, qw|--op=insert --set={"name":"Aran"}|); +system(_fix(@cmd, qw|--op=insert --set={"name":"Aran"}|)); -open(my $fh, "-|", @cmd, qw|--op=select --attrs={"order_by":"name"}|) or die $!; +open(my $fh, "-|", _fix(@cmd, qw|--op=select --attrs={"order_by":"name"}|)) or die $!; my $data = do { local $/; <$fh> }; close($fh); ok( ($data=~/Aran.*Trout/s), 'select with attrs' ); -system(@cmd, qw|--op=delete --where={"name":"Trout"}|); +system(_fix(@cmd, qw|--op=delete --where={"name":"Trout"}|)); ok( ($employees->count()==1), 'delete' ); +sub _fix { + # escaping is required not for JSON::Any but for windows shell + # which misunderstands double quotes as shown in the comment + # above, and join is required as perls on windows don't like + # list form of pipe (test #4). + return ( $^O eq 'MSWin32' ) + ? join ' ', map { s/"/\\"/g; $_ } @{[@_]} + : @_; +}