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

hikidoc:152

From: Kazuhiro Shibutani <arikui.ruby@g...>
Date: Wed, 10 Feb 2010 02:50:48 +0900
Subject: [hikidoc:152] Windowsでtrunkのtest_hikidoc.rbに失敗する

こんばんわ。ありくいです。

自分の環境(WinXP)

 * ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]
 * ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32]
 * ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]

では、テストに失敗します。

ruby ../test/test_hikidoc.rb
.............F.......................

  1) Failure:
test_link(HikiDocTestCase)
../test/test_hikidoc.rb:482:in `assert_convert'
../test/test_hikidoc.rb:237:in `test_link':
<"<p><img src=\"img.png\" alt=\"img.png\" /></p>\n"> expected but was
<"<p><a href=\"img.png\">http:img.png</a></p>\n">.

Finished in 4.3125 seconds.

37 tests, 148 assertions, 1 failures, 0 errors, 0 pendings, 0
omissions, 0 notifications
97.2973% passed


原因としては、File.extname が #define USE_NTFS されている環境ではドラ
イブレターを考慮するためだと思われます(":"が悪い)。
前述の環境では、以下のテストの1と3が失敗します。

require 'test/unit'

class TestFile < Test::Unit::TestCase
  def test_extname1
    assert_equal ".jpg", File.extname("http://image.jpg")
  end

  def test_extname2
    assert_equal ".gif", File.extname("http:/image.gif")
  end

  def test_extname3
    assert_equal ".png", File.extname("http:image.png")
  end
end


以下がパッチです。
Windows 以外に影響を及ぼす変更では多分ないと思うのですが…

svn diff
Index: hikidoc.rb
===================================================================
--- hikidoc.rb	(revision 126)
+++ hikidoc.rb	(working copy)
@@ -373,7 +373,9 @@
   #

   BRACKET_LINK_RE = /\[\[.+?\]\]/
-  URI_RE = /(?:https?|ftp|file|mailto):[A-Za-z0-9;\/?:@&=+$,\-_.!~*\'()#%]+/
+  PROTOCOLS = ["http", "https", "ftp", "file", "mailto"]
+  URI_RE = /#{Regexp.union *PROTOCOLS}:[A-Za-z0-9;\/?:@&=+$,\-_.!~*\'()#%]+/
+  # URI_RE = /(?:https?|ftp|file|mailto):[A-Za-z0-9;\/?:@&=+$,\-_.!~*\'()#%]+/
   WIKI_NAME_RE = /\b(?:[A-Z]+[a-z\d]+){2,}\b/

   def inline_syntax_re
@@ -477,9 +479,11 @@
   end

   IMAGE_EXTS = %w(.jpg .jpeg .gif .png)
-
+  PROTOCOL_RE = /\A#{Regexp.union *PROTOCOLS}:/
+
   def image?(uri)
-    IMAGE_EXTS.include?(File.extname(uri).downcase)
+    # IMAGE_EXTS.include?(File.extname(uri).downcase)
+    IMAGE_EXTS.include? File.extname(uri.sub(PROTOCOL_RE, '')).downcase
   end

   STRONG = "'''"

--
ML: hikidoc@m...
使い方: http://QuickML.com/

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

->     152 2010-02-09 18:50 [arikui.ruby@g...    ] Windowsでtrunkのtest_hikidoc.rbに失敗する
       153 2010-02-11 03:26 ┗[kimuraw@i...        ]                                       
       154 2010-02-11 12:29  ┗[arikui.ruby@g...    ]