On 1/29/20 12:42 PM, Eric Wolf wrote:
I have a test that tries to catch a die in an eval. This works fine for me locally, but the tester report indicates that it fails and bails at this point. To me this seems to indicate that the test harness is set up to barf on this type of error or that my test is written or configured incorrectly.

Should I just skip this test or is there some easy magic that can be done for it?

Thanks in advance,
    Eric Wolf aka canid

*Test Code *(you can tell its genuine due to the speeling erorrs)

1159    eval {
1160        my $store = Data::ObjectStore->open_store( $source_dir );
1161        fail( "was able to open a store with an old incompatable version" );
1162    };
1163    like( $@, qr/Unable to open|lock file did not exist|Permission denied/i, 'error message for opeining store with incompatable message' );


To me, seeing a Test::More test within an eval block is a code smell. There's always a chance that the test may crash in some way that sets $@ -- which would make the value of $@ ambiguous, at best.

I don't completely understand what you're attempting to do, but ... Is there anything that prevents you from this?

#####
my $store;
eval {
    $store = Data::ObjectStore->open_store( $source_dir );
};
like( $@,
    qr/Unable to open|lock file did not exist|Permission denied/i,
    'error message for opeining store with incompatable message'
);
ok(! $store, "Was not able to open a store with an old incompatible version");
#####

*Tester Output*
*
*

Output from './Build test':

  Permission denied at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-RecordStore-6.04-0/blib/lib/Data/RecordStore.pm
 line 194.
  at t/object_store.t line 20.
        main::__ANON__(" Permission denied at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-R"...) called at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-RecordStore-6.04-0/blib/lib/Data/RecordStore.pm 
line 194
        Data::RecordStore::open_store("Data::RecordStore", "DATA_PROVIDER", "/tmp/NWPz3HLh2e", 
"BASE_PATH", "/tmp/NWPz3HLh2e/RECORDSTORE") called at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-ObjectStore-2.12-0/blib/lib/Data/ObjectStore.pm line 53
        Data::ObjectStore::open_store("Data::ObjectStore", "/tmp/NWPz3HLh2e") 
called at t/object_store.t line 1160
        *eval {...} called at t/object_store.t line 1159*
        main::test_upgrade_db() called at t/object_store.t line 54
  Permission denied at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-RecordStore-6.04-0/blib/lib/Data/RecordStore.pm
 line 194.
  at t/object_store.t line 20.
        main::__ANON__(" Permission denied at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-R"...) called at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-RecordStore-6.04-0/blib/lib/Data/RecordStore.pm 
line 194
        Data::RecordStore::open_store("Data::RecordStore", "DATA_PROVIDER", "/tmp/NWPz3HLh2e", 
"BASE_PATH", "/tmp/NWPz3HLh2e/RECORDSTORE") called at 
/tmp/loop_over_bdir-29197-caKZ6Z/Data-ObjectStore-2.12-0/blib/lib/Data/ObjectStore.pm line 53
        Data::ObjectStore::open_store("Data::ObjectStore", "/tmp/NWPz3HLh2e") 
called at t/object_store.t line 1168
        main::test_upgrade_db() called at t/object_store.t line 54
# Tests were run but no plan was declared and done_testing() was not seen.
# Looks like your test exited with 13 just after 273.
t/object_store.t ..
Dubious, test returned 13 (wstat 3328, 0xd00)
All 273 subtests passed
t/cache.t ......... ok


Reply via email to