[前][次][番号順一覧][スレッド一覧]

ruby-changes:16852

From: akr <ko1@a...>
Date: Tue, 3 Aug 2010 23:35:43 +0900 (JST)
Subject: [ruby-changes:16852] Ruby:r28847 (trunk): add tests.

akr	2010-08-03 23:35:34 +0900 (Tue, 03 Aug 2010)

  New Revision: 28847

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28847

  Log:
    add tests.

  Modified files:
    trunk/test/pathname/test_pathname.rb

Index: test/pathname/test_pathname.rb
===================================================================
--- test/pathname/test_pathname.rb	(revision 28846)
+++ test/pathname/test_pathname.rb	(revision 28847)
@@ -173,6 +173,10 @@
     end
   end
 
+  def test_plus
+    assert_kind_of(Pathname, Pathname("a") + Pathname("b"))
+  end
+
   def plus(path1, path2) # -> path
     (Pathname.new(path1) + Pathname.new(path2)).to_s
   end
@@ -195,6 +199,34 @@
 
   defassert(:plus, 'a//b/d//e', 'a//b/c', '../d//e')
 
+  def test_parent
+    assert_equal(Pathname("."), Pathname("a").parent)
+  end
+
+  def parent(path) # -> path
+    Pathname.new(path).parent.to_s
+  end
+
+  defassert(:parent, '/', '/')
+  defassert(:parent, '/', '/a')
+  defassert(:parent, '/a', '/a/b')
+  defassert(:parent, '/a/b', '/a/b/c')
+  defassert(:parent, '.', 'a')
+  defassert(:parent, 'a', 'a/b')
+  defassert(:parent, 'a/b', 'a/b/c')
+  defassert(:parent, '..', '.')
+  defassert(:parent, '../..', '..')
+
+  def test_join
+    r = Pathname("a").join(Pathname("b"), Pathname("c"))
+    assert_equal(Pathname("a/b/c"), r)
+  end
+
+  def test_absolute
+    assert_equal(true, Pathname("/").absolute?)
+    assert_equal(false, Pathname("a").absolute?)
+  end
+
   def relative?(path)
     Pathname.new(path).relative?
   end
@@ -492,6 +524,11 @@
   defassert(:root?, false, "")
   defassert(:root?, false, "a")
 
+  def test_mountpoint?
+    r = Pathname("/").mountpoint?
+    assert_includes([true, false], r)
+  end
+
   def test_destructive_update
     path = Pathname.new("a")
     path.to_s.replace "b"
@@ -592,6 +629,571 @@
     assert_equal(Pathname.new("a"), Pathname("a"))
   end
 
+  def test_children
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      Dir.mkdir("d")
+      open("d/x", "w") {}
+      open("d/y", "w") {}
+      assert_equal([Pathname("a"), Pathname("b"), Pathname("d")], Pathname(".").children.sort)
+      assert_equal([Pathname("d/x"), Pathname("d/y")], Pathname("d").children.sort)
+      assert_equal([Pathname("x"), Pathname("y")], Pathname("d").children(false).sort)
+    }
+  end
+
+  def test_each_child
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      Dir.mkdir("d")
+      open("d/x", "w") {}
+      open("d/y", "w") {}
+      a = []; Pathname(".").each_child {|v| a << v }; a.sort!
+      assert_equal([Pathname("a"), Pathname("b"), Pathname("d")], a)
+      a = []; Pathname("d").each_child {|v| a << v }; a.sort!
+      assert_equal([Pathname("d/x"), Pathname("d/y")], a)
+      a = []; Pathname("d").each_child(false) {|v| a << v }; a.sort!
+      assert_equal([Pathname("x"), Pathname("y")], a)
+    }
+  end
+
+  def test_each_line
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.puts 1, 2 }
+      a = []
+      Pathname("a").each_line {|line| a << line }
+      assert_equal(["1\n", "2\n"], a)
+    }
+  end
+
+  def test_readlines
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.puts 1, 2 }
+      a = Pathname("a").readlines
+      assert_equal(["1\n", "2\n"], a)
+    }
+  end
+
+  def test_read
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.puts 1, 2 }
+      assert_equal("1\n2\n", Pathname("a").read)
+    }
+  end
+
+  def test_binread
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      assert_equal("abc", Pathname("a").read)
+    }
+  end
+
+  def test_sysopen
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      fd = Pathname("a").sysopen
+      io = IO.new(fd)
+      begin
+        assert_equal("abc", io.read)
+      ensure
+        io.close
+      end
+    }
+  end
+
+  def test_atime
+    assert_kind_of(Time, Pathname(__FILE__).atime)
+  end
+
+  def test_ctime
+    assert_kind_of(Time, Pathname(__FILE__).ctime)
+  end
+
+  def test_mtime
+    assert_kind_of(Time, Pathname(__FILE__).mtime)
+  end
+
+  def test_chmod
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      path = Pathname("a")
+      old = path.stat.mode
+      path.chmod(0444)
+      assert_equal(0444, path.stat.mode & 0777)
+      path.chmod(old)
+    }
+  end
+
+  def test_lchmod
+    return if !has_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      File.symlink("a", "l")
+      path = Pathname("l")
+      old = path.lstat.mode
+      begin
+        path.lchmod(0444)
+      rescue NotImplementedError
+        next
+      end
+      assert_equal(0444, path.lstat.mode & 0777)
+      path.chmod(old)
+    }
+  end
+
+  def test_chown
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      path = Pathname("a")
+      old_uid = path.stat.uid
+      old_gid = path.stat.gid
+      begin
+        path.chown(0, 0)
+      rescue Errno::EPERM
+        next
+      end
+      assert_equal(0, path.stat.uid)
+      assert_equal(0, path.stat.gid)
+      path.chown(old_uid, old_gid)
+    }
+  end
+
+  def test_lchown
+    return if !has_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      File.symlink("a", "l")
+      path = Pathname("l")
+      old_uid = path.stat.uid
+      old_gid = path.stat.gid
+      begin
+        path.lchown(0, 0)
+      rescue Errno::EPERM
+        next
+      end
+      assert_equal(0, path.stat.uid)
+      assert_equal(0, path.stat.gid)
+      path.lchown(old_uid, old_gid)
+    }
+  end
+
+  def test_fnmatch
+    path = Pathname("a")
+    assert_equal(true, path.fnmatch("*"))
+    assert_equal(false, path.fnmatch("*.*"))
+  end
+
+  def test_fnmatch?
+    path = Pathname("a")
+    assert_equal(true, path.fnmatch?("*"))
+    assert_equal(false, path.fnmatch?("*.*"))
+  end
+
+  def test_ftype
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal("file", Pathname("f").ftype)
+      Dir.mkdir("d")
+      assert_equal("directory", Pathname("d").ftype)
+    }
+  end
+
+  def test_link
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      Pathname("l").make_link(Pathname("a"))
+      assert_equal("abc", Pathname("l").read)
+    }
+  end
+
+  def test_open
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      Pathname("a").open {|f|
+        assert_equal("abc", f.read)
+      }
+    }
+  end
+
+  def test_readlink
+    return if !has_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      File.symlink("a", "l")
+      assert_equal(Pathname("a"), Pathname("l").readlink)
+    }
+  end
+
+  def test_rename
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      Pathname("a").rename(Pathname("b"))
+      assert_equal("abc", File.read("b"))
+    }
+  end
+
+  def test_stat
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      s = Pathname("a").stat
+      assert_equal(3, s.size)
+    }
+  end
+
+  def test_lstat
+    return if !has_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      File.symlink("a", "l")
+      s = Pathname("l").lstat
+      assert_equal(true, s.symlink?)
+      s = Pathname("l").stat
+      assert_equal(false, s.symlink?)
+      assert_equal(3, s.size)
+      s = Pathname("a").lstat
+      assert_equal(false, s.symlink?)
+      assert_equal(3, s.size)
+    }
+  end
+
+  def test_make_symlink
+    return if !has_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      Pathname("l").make_symlink(Pathname("a"))
+      s = Pathname("l").lstat
+      assert_equal(true, s.symlink?)
+    }
+  end
+
+  def test_truncate
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      Pathname("a").truncate(2)
+      assert_equal("ab", File.read("a"))
+    }
+  end
+
+  def test_utime
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {|f| f.write "abc" }
+      atime = Time.utc(2000)
+      mtime = Time.utc(1999)
+      Pathname("a").utime(atime, mtime)
+      s = File.stat("a")
+      assert_equal(atime, s.atime)
+      assert_equal(mtime, s.mtime)
+    }
+  end
+
+  def test_basename
+    assert_equal(Pathname("basename"), Pathname("dirname/basename").basename)
+  end
+
+  def test_dirname
+    assert_equal(Pathname("dirname"), Pathname("dirname/basename").dirname)
+  end
+
+  def test_extname
+    assert_equal(".ext", Pathname("basename.ext").extname)
+  end
+
+  def test_split
+    assert_equal([Pathname("dirname"), Pathname("basename")], Pathname("dirname/basename").split)
+  end
+
+  def test_blockdev?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").blockdev?)
+    }
+  end
+
+  def test_chardev?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").chardev?)
+    }
+  end
+
+  def test_executable?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").executable?)
+    }
+  end
+
+  def test_executable_real?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").executable_real?)
+    }
+  end
+
+  def test_exist?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").exist?)
+    }
+  end
+
+  def test_grpowned?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").grpowned?)
+    }
+  end
+
+  def test_directory?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").directory?)
+      Dir.mkdir("d")
+      assert_equal(true, Pathname("d").directory?)
+    }
+  end
+
+  def test_file?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").file?)
+      Dir.mkdir("d")
+      assert_equal(false, Pathname("d").file?)
+    }
+  end
+
+  def test_pipe?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").pipe?)
+    }
+  end
+
+  def test_socket?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").socket?)
+    }
+  end
+
+  def test_owned?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").owned?)
+    }
+  end
+
+  def test_readable?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").readable?)
+    }
+  end
+
+  def test_world_readable?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      File.chmod(0400, "f")
+      assert_equal(nil, Pathname("f").world_readable?)
+      File.chmod(0444, "f")
+      assert_equal(0444, Pathname("f").world_readable?)
+    }
+  end
+
+  def test_readable_real?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").readable_real?)
+    }
+  end
+
+  def test_setuid?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").setuid?)
+    }
+  end
+
+  def test_setgid?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").setgid?)
+    }
+  end
+
+  def test_size
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(3, Pathname("f").size)
+      open("z", "w") {|f| }
+      assert_equal(0, Pathname("z").size)
+      assert_raise(Errno::ENOENT) { Pathname("not-exist").size }
+    }
+  end
+
+  def test_size?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(3, Pathname("f").size?)
+      open("z", "w") {|f| }
+      assert_equal(nil, Pathname("z").size?)
+      assert_equal(nil, Pathname("not-exist").size?)
+    }
+  end
+
+  def test_sticky?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").sticky?)
+    }
+  end
+
+  def test_symlink?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").symlink?)
+    }
+  end
+
+  def test_writable?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").writable?)
+    }
+  end
+
+  def test_world_writable?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      File.chmod(0600, "f")
+      assert_equal(nil, Pathname("f").world_writable?)
+      File.chmod(0666, "f")
+      assert_equal(0666, Pathname("f").world_writable?)
+    }
+  end
+
+  def test_writable_real?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(true, Pathname("f").writable?)
+    }
+  end
+
+  def test_zero?
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      assert_equal(false, Pathname("f").zero?)
+      open("z", "w") {|f| }
+      assert_equal(true, Pathname("z").zero?)
+      assert_equal(false, Pathname("not-exist").zero?)
+    }
+  end
+
+  def test_s_glob
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      Dir.mkdir("d")
+      assert_equal([Pathname("d"), Pathname("f")], Pathname.glob("*").sort)
+    }
+  end
+
+  def test_s_getwd
+    wd = Pathname.getwd
+    assert_kind_of(Pathname, wd)
+  end
+
+  def test_entries
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      assert_equal([Pathname("."), Pathname(".."), Pathname("a"), Pathname("b")], Pathname(".").entries.sort)
+    }
+  end
+
+  def test_each_entry
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      a = []
+      Pathname(".").each_entry {|v| a << v }
+      assert_equal([Pathname("."), Pathname(".."), Pathname("a"), Pathname("b")], a.sort)
+    }
+  end
+
+  def test_mkdir
+    with_tmpchdir('rubytest-pathname') {|dir|
+      Pathname("d").mkdir
+      assert(File.directory?("d"))
+    }
+  end
+
+  def test_rmdir
+    with_tmpchdir('rubytest-pathname') {|dir|
+      Pathname("d").mkdir
+      assert(File.directory?("d"))
+      Pathname("d").rmdir
+      assert(!File.exists?("d"))
+    }
+  end
+
+  def test_opendir
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      a = []
+      Pathname(".").opendir {|d|
+        d.each {|e| a << e }
+      }
+      assert_equal([".", "..", "a", "b"], a.sort)
+    }
+  end
+
+  def test_find
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("a", "w") {}
+      open("b", "w") {}
+      Dir.mkdir("d")
+      open("d/x", "w") {}
+      open("d/y", "w") {}
+      a = []; Pathname(".").find {|v| a << v }; a.sort!
+      assert_equal([Pathname("."), Pathname("a"), Pathname("b"), Pathname("d"), Pathname("d/x"), Pathname("d/y")], a)
+      a = []; Pathname("d").find {|v| a << v }; a.sort!
+      assert_equal([Pathname("d"), Pathname("d/x"), Pathname("d/y")], a)
+    }
+  end
+
+  def test_mkpath
+    with_tmpchdir('rubytest-pathname') {|dir|
+      Pathname("a/b/c/d").mkpath
+      assert(File.directory?("a/b/c/d"))
+    }
+  end
+
+  def test_rmtree
+    with_tmpchdir('rubytest-pathname') {|dir|
+      Pathname("a/b/c/d").mkpath
+      assert(File.exist?("a/b/c/d"))
+      Pathname("a").rmtree
+      assert(!File.exist?("a"))
+    }
+  end
+
+  def test_unlink
+    with_tmpchdir('rubytest-pathname') {|dir|
+      open("f", "w") {|f| f.write "abc" }
+      Pathname("f").unlink
+      assert(!File.exist?("f"))
+      Dir.mkdir("d")
+      Pathname("d").unlink
+      assert(!File.exist?("d"))
+    }
+  end
+
+  def test_matchop
+    assert_raise(NoMethodError) { Pathname("a") =~ /a/ }
+  end
+
   def test_file_basename
     assert_equal("bar", File.basename(Pathname.new("foo/bar")))
   end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]