[#37021] [RAA] RAA/2.3 — "U.Nakamura" <usa@...>

みなさんこんにちは。

20 messages 2003/01/30

[ruby-list:36985] Re: 2つの絶対パスから相対パスを求めるライブラリ

From: nobu.nakada@...
Date: 2003-01-22 09:44:11 UTC
List: ruby-list #36985
なかだです。

At Wed, 22 Jan 2003 18:30:23 +0900,
U.Nakamura <usa@osb.att.ne.jp> wrote:
> 二つ目以降のテストはおかしくないですか?

単にassertが同じになってるだけかと思いきや、test.txtとtext.txt
というのにはハマりました。

def to_rel(base, target)
  sep = /#{File::SEPARATOR}+/o
  base = base.split(sep)
  base.pop
  target = target.split(sep)
  while base.first == target.first
    base.shift
    target.shift
  end
  File.join([".."]*base.size+target)
end

if __FILE__ == $0
  require 'test/unit'

  class TC_Relative < Test::Unit::TestCase
    def setup
      @current = '/dir_1/dir_2/dir_3/test.txt'
    end
    alias set_up setup

    def test_to_relative_child
      child = '/dir_1/dir_2/dir_3/dir_4/dir_5/text.txt'
      assert_equal('dir_4/dir_5/text.txt', to_rel(@current, child) )
    end

    def test_to_relative_parent
      parent = '/dir_1/text.txt'
      assert_equal('../../text.txt', to_rel(@current, parent) )
    end

    def test_to_relative_in_parent1
      in_parent1 = '/dir_1/dir_6/dir_7/text.txt'
      assert_equal('../../dir_6/dir_7/text.txt', to_rel(@current, in_parent1) )
    end

    def test_to_relative_in_parent2
      in_parent2 = '/dir_2/dir_8/dir_9/text.txt'
      assert_equal('../../../dir_2/dir_8/dir_9/text.txt', to_rel(@current, in_parent2) )
    end
  end
end

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread