[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 をリリースしました。

14 messages 2007/03/12

[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

13 messages 2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[#30587] Re: help: lib/shell for ruby 1.9 — keiju@... (石塚圭樹) 2007/03/15

けいじゅ@いしつかです.

[#30588] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[ruby-dev:30615] Etc モジュールのテスト

From: 植田 裕之 <ueda@...>
Date: 2007-03-17 08:44:55 UTC
List: ruby-dev #30615
植田と申します。


 [ruby-dev:30586] で Etc モジュールの件をご対応頂きましたが、Etc モジュー
ル用のテストが無いように思いました。もし未だ無くて、添付のものでよければ
たたき台にでもご利用ください。

 なお、以下の環境の事しか考慮していません。他の環境(Windows など)ではテ
ストケースが不適切かと思いますが、ご容赦ください。

$ ruby -e 'p RUBY_VERSION; p RUBY_PLATFORM'
"1.8.6"
"i686-linux"

-- 
植田裕之 <ueda@netforest.ad.jp>

Attachments (1)

test_etc.rb (2.85 KB, text/x-ruby)
require 'test/unit'
require 'etc'

class TestEtc < Test::Unit::TestCase

  def setup
    @passwds = get_entries('/etc/passwd')
    @groups  = get_entries('/etc/group')
    @count   = 0
  end

  def teardown
    @passwds = nil
    @groups  = nil
  end

  def test_getlogin
    assert_equal(ENV['USER'], Etc.getlogin)
  end

  def test_getpwnam
    @passwds.each do |passwd|
      name, passwd, uid, gid, gecos, dir, shell = passwd.split(/:/)
      gecos = '' unless gecos
      dir = '' unless dir
      shell = '' unless shell
      passwd_obj = Etc.getpwnam(name)

      assert_equal(Struct::Passwd, passwd_obj.class)
      assert_equal(name, passwd_obj.name)
      assert_equal(passwd, passwd_obj.passwd)
      assert_equal(uid.to_i, passwd_obj.uid)
      assert_equal(gid.to_i, passwd_obj.gid)
      assert_equal(gecos, passwd_obj.gecos)
      assert_equal(dir, passwd_obj.dir)
      assert_equal(shell, passwd_obj.shell)
    end
  end

  def test_getpwuid
    @passwds.each do |passwd|
      name, passwd, uid, gid, gecos, dir, shell = passwd.split(/:/)
      gecos = '' unless gecos
      dir = '' unless dir
      shell = '' unless shell
      passwd_obj = Etc.getpwuid(uid.to_i)

      assert_equal(Struct::Passwd, passwd_obj.class)
      assert_equal(name, passwd_obj.name)
      assert_equal(passwd, passwd_obj.passwd)
      assert_equal(uid.to_i, passwd_obj.uid)
      assert_equal(gid.to_i, passwd_obj.gid)
      assert_equal(gecos, passwd_obj.gecos)
      assert_equal(dir, passwd_obj.dir)
      assert_equal(shell, passwd_obj.shell)
    end
  end

  def test_getgrgid
    @groups.each do |group|
      name, passwd, gid, mem = group.split(/:/)
      mem = '' unless mem
      group_obj = Etc.getgrgid(gid.to_i)

      assert_equal(Struct::Group, group_obj.class)
      assert_equal(name, group_obj.name)
      assert_equal(passwd, group_obj.passwd)
      assert_equal(gid.to_i, group_obj.gid)
      assert_equal(mem.split(/,/), group_obj.mem)
    end
  end

  def test_getgrnam
    @groups.each do |group|
      name, passwd, gid, mem = group.split(/:/)
      mem = '' unless mem
      group_obj = Etc.getgrnam(name)

      assert_equal(Struct::Group, group_obj.class)
      assert_equal(name, group_obj.name)
      assert_equal(passwd, group_obj.passwd)
      assert_equal(gid.to_i, group_obj.gid)
      assert_equal(mem.split(/,/), group_obj.mem)
    end
  end

  def test_group
    Etc.group do |group|
      assert_equal(Struct::Group, group.class)
      @count = @count + 1
    end
    assert_equal(@count, @groups.size)
  end

  def test_passwd
    Etc.passwd do |passwd|
      assert_equal(Struct::Passwd, passwd.class)
      @count = @count + 1
    end
    assert_equal(@count, @passwds.size)
  end

  private
  def get_entries(file)
    begin
      File.open(file, 'r').readlines.collect{|line| line.chomp}.delete_if {|line| line =~ /^#/ || line.empty? }
    rescue
      []
    end
  end
end

In This Thread

Prev Next