1#!./perl -w 2use strict; 3 4use Test::More; 5use Config; 6use File::Temp 'tempdir'; 7use File::Spec; 8 9BEGIN { 10 plan(skip_all => "GDBM_File was not built") 11 unless $Config{extensions} =~ /\bGDBM_File\b/; 12 13 # https://rt.perl.org/Public/Bug/Display.html?id=117967 14 plan(skip_all => "GDBM_File is flaky in $^O") 15 if $^O =~ /darwin/; 16 17 plan(tests => 9); 18 use_ok('GDBM_File'); 19} 20 21my $wd = tempdir(CLEANUP => 1); 22my $dbname = File::Spec->catfile($wd, 'Op_dbmx'); 23my %h; 24my $db = tie(%h, 'GDBM_File', $dbname, GDBM_WRCREAT, 0640); 25isa_ok($db, 'GDBM_File'); 26SKIP: { 27 my $name = eval { $db->dbname } or do { 28 skip "gdbm_setopt GET calls not implemented", 7 29 if $@ =~ /GDBM_File::dbname not implemented/; 30 }; 31 is($db->dbname, $dbname, 'get dbname'); 32 is(eval { $db->dbname("a"); }, undef, 'dbname - bad usage'); 33 is($db->flags, GDBM_WRCREAT, 'get flags'); 34 is($db->sync_mode, 0, 'get sync_mode'); 35 is($db->sync_mode(1), 1, 'set sync_mode'); 36 is($db->sync_mode, 1, 'get sync_mode'); 37 SKIP: { 38 my ($maj, $min) = GDBM_File->GDBM_version; 39 skip "gdbm too old", 1 if $maj != 1 || $maj == 1 && $min < 9; 40 isnt($db->mmapsize, 0, "get mmapsize"); 41 } 42} 43