From eeb5c7e18e91e43502cf30d6f395364543fbf109 Mon Sep 17 00:00:00 2001 From: akr Date: Sun, 16 May 2004 12:03:23 +0000 Subject: * ext/dbm/dbm.c (fdbm_initialize): accept optional 3rd argument to specify an open flag. (Init_dbm): define open flags: DBM::READER, DBM::WRITER, DBM::WRCREAT and DBM::NEWDB. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/dbm/test_dbm.rb | 27 +++++++++++++++++++++++++-- test/gdbm/test_gdbm.rb | 14 +++++++++++++- 2 files changed, 38 insertions(+), 3 deletions(-) (limited to 'test') diff --git a/test/dbm/test_dbm.rb b/test/dbm/test_dbm.rb index f9198903a3..2de73d1d5e 100644 --- a/test/dbm/test_dbm.rb +++ b/test/dbm/test_dbm.rb @@ -11,7 +11,7 @@ if defined? DBM require 'fileutils' class TestDBM < Test::Unit::TestCase - TMPROOT = "#{Dir.tmpdir}/ruby-gdbm.#{$$}" + TMPROOT = "#{Dir.tmpdir}/ruby-dbm.#{$$}" def setup Dir.mkdir TMPROOT @@ -21,8 +21,31 @@ if defined? DBM FileUtils.rm_rf TMPROOT if File.directory?(TMPROOT) end + def test_reader_open + DBM.open("#{TMPROOT}/a") {} + v = DBM.open("#{TMPROOT}/a", nil, DBM::READER) {|d| + # Errno::EPERM is raised on Solaris which use ndbm. + # DBMError is raised on Debian which use gdbm. + assert_raises(Errno::EPERM, DBMError) { d["k"] = "v" } + true + } + assert(v) + end + + def test_newdb_open + DBM.open("#{TMPROOT}/a") {|dbm| + dbm["k"] = "v" + } + v = DBM.open("#{TMPROOT}/a", nil, DBM::NEWDB) {|d| + assert_equal(0, d.length) + assert_nil(d["k"]) + true + } + assert(v) + end + def test_freeze - DBM.open("#{TMPROOT}/a.dbm") {|d| + DBM.open("#{TMPROOT}/a") {|d| d.freeze assert_raises(TypeError) { d["k"] = "v" } } diff --git a/test/gdbm/test_gdbm.rb b/test/gdbm/test_gdbm.rb index ca0110cd91..c90f4a6074 100644 --- a/test/gdbm/test_gdbm.rb +++ b/test/gdbm/test_gdbm.rb @@ -21,7 +21,7 @@ if defined? GDBM FileUtils.rm_rf TMPROOT if File.directory?(TMPROOT) end - def test_open + def test_reader_open GDBM.open("#{TMPROOT}/a.dbm") {} v = GDBM.open("#{TMPROOT}/a.dbm", nil, GDBM::READER) {|d| assert_raises(GDBMError) { d["k"] = "v" } @@ -30,6 +30,18 @@ if defined? GDBM assert(v) end + def test_newdb_open + GDBM.open("#{TMPROOT}/a.dbm") {|dbm| + dbm["k"] = "v" + } + v = GDBM.open("#{TMPROOT}/a.dbm", nil, GDBM::NEWDB) {|d| + assert_equal(0, d.length) + assert_nil(d["k"]) + true + } + assert(v) + end + def test_freeze GDBM.open("#{TMPROOT}/a.dbm") {|d| d.freeze -- cgit v1.2.3