[#35333] [Ruby 1.8 - Bug #221] (Open) Net::SMTPでSMTPのHELO/EHLOにデフォルトで不正なホスト名を使用 — Anonymous <redmine@...>
チケット #221 が報告されました。 (by Anonymous)
チケット #221 が更新されました。 (by Masahiro Tomita)
チケット #221 が更新されました。 (by Anonymous)
とみたです。
とみたです。
卜部です。
西山和広です。
[#35355] リリース前ToDoリスト — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
高尾宏治です。
高尾宏治です。
なかだです。
高尾宏治です。
なかだです。
前田です。
なかだです。
前田です。
なかだです。
高尾宏治です。
山口と申します。
高尾宏治です。
高尾宏治です。
高尾宏治です。
GyRCJDMkcyRLJEEkTyEjGyhCTS5TdXp1a2kbJEIkRyQ5ISMbKEINCg0KGyRCO24kNyRGJF8kXiQ3
高尾宏治です。
高尾宏治です。
高尾宏治です。
GyRCJDMkcyRLJEEkTxsoQiBNLlN1enVraSAbJEIkRyQ5ISMbKEINCg0KTWFjIE9TWCAxMC40GyRC
高尾宏治です。
[#35372] patch for ruby-core:17472 — wanabe <s.wanabe@...>
ワナベと申します。
なかだです。
ワナベです。
遠藤です。
=1B$B$`$i$?$G$9!#=1B(B
豊福です。
[#35375] Re: [ruby-cvs:25121] Ruby:r17902 (ruby_1_8_6): * re.c (rb_reg_search): need to free allocated buffer in re_register. [ruby-core:17518] — Urabe Shyouhei <shyouhei@...>
卜部です。ruby_1_8_xの枝を弄る人全員にお願いです。チェックインする前に必
[#35389] Re: [ruby-cvs:25164] Ruby:r17945 (trunk, ruby_1_8): * string.c (rb_str_succ): limit carrying in an alphanumeric region if — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#35396] cc always picks ruby/ruby.h on OS X — "Akinori MUSHA" <knu@...>
ruby 1.8 の tk ライブラリが OS X 上でビルドできない件です。
[#35404] ruby_1_8_6/ruby_1_8_7ブランチのメンテナンスポリシーについて — "Shugo Maeda" <shugo@...>
前田です。
卜部です。
前田です。
卜部です。
前田です。
Shugo Maeda さんは書きました:
どこにぶら下げるのがいいのかわからないので、単に意思表明ですが、
卜部です。
At Fri, 11 Jul 2008 01:00:29 +0900,
前田です。
In article <704d5db90807110028o238594f2wda0ec1bf12abc940@mail.gmail.com>,
そういえばこの部分に言及するのを忘れていた
前田です。
卜部です。
前田です。
In article <704d5db90807121803o5ea67361ucbf968f8a18a845d@mail.gmail.com>,
Tanaka Akira さんは書きました:
前田です。
卜部です。
前田です。
卜部です。
前田です。
卜部です。
前田です。
こんにちは、なかむら(う)です。
卜部です。
[#35420] Re: [ruby-cvs:25212] Ruby:r17993 (trunk): * test/ruby/envutil.rb (assert_normal_exit): finish writing script — Tanaka Akira <akr@...>
In article <200807100931.m6A9V4vi014459@ci.ruby-lang.org>,
ワナベです。
こんにちは、なかむら(う)です。
ワナベです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
In article <20080711050939.531D.C613B076@garbagecollect.jp>,
こんにちは、なかむら(う)です。
[#35446] [Bug:trunk] Thread#kill cannot break BLOCKING_REGION() on windows — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#35450] [BUG] cfp consistency error in Win32OLE — Masaki Suketa <masaki.suketa@...>
助田です。
ワナベと申します。
助田です。
[#35458] make profiler for gc — authorNari <authornari@...>
nariです。
In article <1153cee60807122239t19f6ae05vc0c1995c77349377@mail.gmail.com>,
nariです。
nariです。
三浦と申します。
[#35471] [Bug: 1.9] lazy timer thraed creation — SASADA Koichi <ko1@...>
ささだです.
[#35484] Re: [ruby-core:17739] [Ruby 1.9 - Bug #256] (Open) defined?(Gem::RubyGemsVersion) behaves strange — wanabe <s.wanabe@...>
ワナベと申します。
西山和広です。
斎藤と申します。
[#35542] [Bug:1.9] sleep and Thread#run — Tanaka Akira <akr@...>
1.9 では sleep で寝ているスレッドを Thread#run で起こせない
[#35545] Test::Unit -> miniunit — Kouhei Sutou <kou@...>
須藤です。
まつもと ゆきひろです
[#35555] [Ruby 1.9 - Bug #282] (Open) failure of test_asctime(TestTime) on mswin32 — Usaku NAKAMURA <redmine@...>
チケット #282 が報告されました。 (by Usaku NAKAMURA)
ワナベと申します。
[#35578] [Bug:1.9] context switch may occur during freeing io — "Yusuke ENDOH" <mame@...>
遠藤です。
[#35597] [request]C APIの拡張 — "Goro Fuji" <g.psy.va@...>
藤と申します。
なかだです。
ご意見ありがとうございます。
なかだです。
卜部さん
卜部です。
[#35620] non-locale filename encoding — Tanaka Akira <akr@...>
Dir の使いかたとして、ファイル名のエンコーディングが locale
成瀬です。
In article <48866F3F.80906@airemix.jp>,
成瀬です。
In article <488771FD.4020800@airemix.jp>,
Tanaka Akira wrote:
In article <4888B29D.7030009@airemix.jp>,
成瀬です。
In article <488AC157.7090203@airemix.jp>,
[#35646] [Bug:1.9] Rinda has a race condition — "Yusuke ENDOH" <mame@...>
遠藤です。
[#35648] [Bug:1.9] MingwでIO#dupがブロックする — wanabe <s.wanabe@...>
ワナベと申します。
[#35649] PENDINGS.rb (Was: Re: [Ruby 1.9 - Bug #354] (Assigned) Test failure test/ruby/test_transcode.rb) — "Yusuke ENDOH" <mame@...>
遠藤です。
In article <e0b1e5700807240845o4c09cfa5gae142c1dd0c74170@mail.gmail.com>,
2008/07/25 1:02 Tanaka Akira <akr@fsij.org>:
成瀬です。
遠藤です。
In article <e0b1e5700807290517mee11539lfbd82d4dfc98c53f@mail.gmail.com>,
遠藤です。
In article <e0b1e5700807300311v13752775mcf8bb5086753051d@mail.gmail.com>,
[#35669] [Ruby 1.9 - Bug #368] (Open) 境界における Math.atanh 等の動作 — Yui NARUSE <redmine@...>
チケット #368 が報告されました。 (by Yui NARUSE)
斎藤と申します。
[#35681] [Ruby 1.9 - Bug #369] (Open) Ruby 1.9.0-3で R — Akira Matsuda <redmine@...>
チケット #369 が報告されました。 (by Akira Matsuda)
[ruby-dev:35588] Re: [Ruby 1.8 - Bug #212] Issues with Readline in Mac OS X
高尾宏治です。
On 2008/07/17, at 9:16, Takao Kouji wrote:
> On 2008/07/17, at 5:38, Keita Yamaguchi wrote:
>> 2008/7/17 Takao Kouji <kouji@takao7.net>:
>>> どうも、ヒストリのインデックスの開始が、
>>> * GNU Readline は 1。(history_base と同じ)
>>> * libedit は 0。
>>> という違いがあるようです。
>>> このため、remove_historyなども同様に修正する必要がありました。
>>> これは以下のコードで確認しました。
>>
>> このコードを Ubuntu 8.04 の libedit で実行してみたのですが、
>> GNU ReadLine の結果と同一になりました。
> (snip)
>> libedit のバージョンによって挙動が変わることになるのではないかと思います。
>> ひょっとして Mac OSX のバージョンによっては古い libedit が入っていたりして、
>> 高尾さんのパッチによって影響を受けてしまう可能性はありませんでしょうか。
>
> 情報ありがとうございます。
> libedit についてもう少し調査が必要ですね。
>
> ヒストリに関する単体テストを書いてみて、
> いろいろな環境でテストしてみたいと思います。
ということで、Readline::HISTORYに対する単体テストを作成しました。
Readline::HISTORYの全てのメソッドのテストを記述しています。
本メールの下部に記述します。
このテストを GNU Readline と Mac OSX 10.5 の libedit で
実行した結果を以下に示します。
----- ここから -----
GNU Readline
~/work/ruby/ruby_1_9 $ ./ruby19trunk -Iext/readline/gnu-readline test/readline/test_readline_history.rb
Loaded suite test/readline/test_readline_history
Started
.................
Finished in 0.004555 seconds.
17 tests, 159 assertions, 0 failures, 0 errors
libedit
~/work/ruby/ruby_1_9 $ ./ruby19trunk -Iext/readline/editline test/readline/test_readline_history.rb
Loaded suite test/readline/test_readline_history
Started
..F..FEF..EEFFF..
Finished in 0.017272 seconds.
1) Failure:
test_each(Readline::TestHistory)
[test/readline/test_readline_history.rb:144:in `block in test_each'
test/readline/test_readline_history.rb:142:in `each'
test/readline/test_readline_history.rb:142:in `test_each']:
<"1:a"> expected but was
<"2:b">.
2) Failure:
test_get(Readline::TestHistory)
[test/readline/test_readline_history.rb:22:in `block in test_get'
test/readline/test_readline_history.rb:21:in `each'
test/readline/test_readline_history.rb:21:in `each_with_index'
test/readline/test_readline_history.rb:21:in `test_get']:
<"1:a"> expected but was
<"2:b">.
3) Error:
test_get__negative(Readline::TestHistory):
IndexError: invalid index
test/readline/test_readline_history.rb:29:in `[]'
test/readline/test_readline_history.rb:29:in `block in test_get__negative'
test/readline/test_readline_history.rb:28:in `each'
test/readline/test_readline_history.rb:28:in `test_get__negative'
4) Failure:
test_get__out_of_range(Readline::TestHistory)
[test/readline/test_readline_history.rb:37:in `block in test_get__out_of_range'
test/readline/test_readline_history.rb:36:in `each'
test/readline/test_readline_history.rb:36:in `test_get__out_of_range']:
i=<-6>.
<IndexError> exception expected but none was thrown.
5) Error:
test_push(Readline::TestHistory):
IndexError: invalid index
test/readline/test_readline_history.rb:85:in `[]'
test/readline/test_readline_history.rb:85:in `block in test_push'
test/readline/test_readline_history.rb:83:in `times'
test/readline/test_readline_history.rb:83:in `test_push'
6) Error:
test_push__operator(Readline::TestHistory):
IndexError: invalid index
test/readline/test_readline_history.rb:93:in `[]'
test/readline/test_readline_history.rb:93:in `block in test_push__operator'
test/readline/test_readline_history.rb:91:in `times'
test/readline/test_readline_history.rb:91:in `test_push__operator'
7) Failure:
test_push__plural(Readline::TestHistory)
[test/readline/test_readline_history.rb:101:in `block in test_push__plural'
test/readline/test_readline_history.rb:100:in `each'
test/readline/test_readline_history.rb:100:in `test_push__plural']:
<"0"> expected but was
<"1">.
8) Failure:
test_set(Readline::TestHistory)
[test/readline/test_readline_history.rb:56:in `block in test_set'
test/readline/test_readline_history.rb:53:in `times'
test/readline/test_readline_history.rb:53:in `test_set']:
<"set: 0"> expected but was
<"2:b">.
9) Failure:
test_set__out_of_range(Readline::TestHistory)
[test/readline/test_readline_history.rb:68:in `block in test_set__out_of_range'
test/readline/test_readline_history.rb:67:in `each'
test/readline/test_readline_history.rb:67:in `test_set__out_of_range']:
index=<-6>.
<IndexError> exception expected but none was thrown.
17 tests, 98 assertions, 6 failures, 3 errors
----- ここまで -----
これからテストが通るようにext/readline/readline.cを修正します。
以下、パッチ。
----- ここから -----
Index: test/readline/test_readline_history.rb
===================================================================
--- test/readline/test_readline_history.rb (revision 0)
+++ test/readline/test_readline_history.rb (revision 0)
@@ -0,0 +1,238 @@
+begin
+ require "readline"
+rescue LoadError
+else
+ require "test/unit"
+end
+
+class Readline::TestHistory < Test::Unit::TestCase
+ include Readline
+
+ def setup
+ clear_history
+ end
+
+ def test_to_s
+ assert_equal("HISTORY", HISTORY.to_s)
+ end
+
+ def test_get
+ lines = push_history(5)
+ lines.each_with_index do |s, i|
+ assert_equal(s, HISTORY[i])
+ end
+ end
+
+ def test_get__negative
+ lines = push_history(5)
+ (1..5).each do |i|
+ assert_equal(lines[-i], HISTORY[-i])
+ end
+ end
+
+ def test_get__out_of_range
+ lines = push_history(5)
+ invalid_indexes = [5, 6, 100, -6, -7, -100]
+ invalid_indexes.each do |i|
+ assert_raise(IndexError, "i=<#{i}>") do
+ HISTORY[i]
+ end
+ end
+
+ invalid_indexes = [100_000_000_000_000_000_000,
+ -100_000_000_000_000_000_000]
+ invalid_indexes.each do |i|
+ assert_raise(RangeError, "i=<#{i}>") do
+ HISTORY[i]
+ end
+ end
+ end
+
+ def test_set
+ lines = push_history(5)
+ 5.times do |i|
+ expected = "set: #{i}"
+ HISTORY[i] = expected
+ assert_equal(expected, HISTORY[i])
+ end
+ end
+
+ def test_set__out_of_range
+ assert_raise(IndexError, "index=<0>") do
+ HISTORY[0] = "set: 0"
+ end
+
+ lines = push_history(5)
+ invalid_indexes = [5, 6, 100, -6, -7, -100]
+ invalid_indexes.each do |i|
+ assert_raise(IndexError, "index=<#{i}>") do
+ HISTORY[i] = "set: #{i}"
+ end
+ end
+
+ invalid_indexes = [100_000_000_000_000_000_000,
+ -100_000_000_000_000_000_000]
+ invalid_indexes.each do |i|
+ assert_raise(RangeError, "index=<#{i}>") do
+ HISTORY[i] = "set: #{i}"
+ end
+ end
+ end
+
+ def test_push
+ 5.times do |i|
+ assert_equal(HISTORY, HISTORY.push(i.to_s))
+ assert_equal(i.to_s, HISTORY[i])
+ end
+ assert_equal(5, HISTORY.length)
+ end
+
+ def test_push__operator
+ 5.times do |i|
+ assert_equal(HISTORY, HISTORY << i.to_s)
+ assert_equal(i.to_s, HISTORY[i])
+ end
+ assert_equal(5, HISTORY.length)
+ end
+
+ def test_push__plural
+ assert_equal(HISTORY, HISTORY.push("0", "1", "2", "3", "4"))
+ (0..4).each do |i|
+ assert_equal(i.to_s, HISTORY[i])
+ end
+ assert_equal(5, HISTORY.length)
+
+ assert_equal(HISTORY, HISTORY.push("5", "6", "7", "8", "9"))
+ (5..9).each do |i|
+ assert_equal(i.to_s, HISTORY[i])
+ end
+ assert_equal(10, HISTORY.length)
+ end
+
+ def test_pop
+ assert_equal(nil, HISTORY.pop)
+
+ lines = push_history(5)
+ (1..5).each do |i|
+ assert_equal(lines[-i], HISTORY.pop)
+ assert_equal(lines.length - i, HISTORY.length)
+ end
+
+ assert_equal(nil, HISTORY.pop)
+ end
+
+ def test_shift
+ assert_equal(nil, HISTORY.shift)
+
+ lines = push_history(5)
+ (0..4).each do |i|
+ assert_equal(lines[i], HISTORY.shift)
+ assert_equal(lines.length - (i + 1), HISTORY.length)
+ end
+
+ assert_equal(nil, HISTORY.shift)
+ end
+
+ def test_each
+ HISTORY.each do |s|
+ assert(false) # not reachable
+ end
+ lines = push_history(5)
+ i = 0
+ HISTORY.each do |s|
+ assert_equal(HISTORY[i], s)
+ assert_equal(lines[i], s)
+ i += 1
+ end
+ end
+
+ def test_each__enumerator
+ e = HISTORY.each
+ assert_instance_of(Enumerable::Enumerator, e)
+ end
+
+ def test_length
+ assert_equal(0, HISTORY.length)
+ push_history(1)
+ assert_equal(1, HISTORY.length)
+ push_history(4)
+ assert_equal(5, HISTORY.length)
+ clear_history
+ assert_equal(0, HISTORY.length)
+ end
+
+ def test_empty_p
+ 2.times do
+ assert(HISTORY.empty?)
+ HISTORY.push("s")
+ assert_equal(false, HISTORY.empty?)
+ HISTORY.pop
+ assert(HISTORY.empty?)
+ end
+ end
+
+ def test_delete_at
+ lines = push_history(5)
+ (0..4).each do |i|
+ assert_equal(lines[i], HISTORY.delete_at(0))
+ end
+ assert(HISTORY.empty?)
+
+ lines = push_history(5)
+ (1..5).each do |i|
+ assert_equal(lines[lines.length - i], HISTORY.delete_at(-1))
+ end
+ assert(HISTORY.empty?)
+
+ lines = push_history(5)
+ assert_equal(lines[0], HISTORY.delete_at(0))
+ assert_equal(lines[4], HISTORY.delete_at(3))
+ assert_equal(lines[1], HISTORY.delete_at(0))
+ assert_equal(lines[3], HISTORY.delete_at(1))
+ assert_equal(lines[2], HISTORY.delete_at(0))
+ assert(HISTORY.empty?)
+ end
+
+ def test_delete_at__out_of_range
+ assert_raise(IndexError, "index=<0>") do
+ HISTORY.delete_at(0)
+ end
+
+ lines = push_history(5)
+ invalid_indexes = [5, 6, 100, -6, -7, -100]
+ invalid_indexes.each do |i|
+ assert_raise(IndexError, "index=<#{i}>") do
+ HISTORY.delete_at(i)
+ end
+ end
+
+ invalid_indexes = [100_000_000_000_000_000_000,
+ -100_000_000_000_000_000_000]
+ invalid_indexes.each do |i|
+ assert_raise(RangeError, "index=<#{i}>") do
+ HISTORY.delete_at(i)
+ end
+ end
+ end
+
+ private
+
+ def push_history(num)
+ lines = []
+ num.times do |i|
+ s = "a"
+ i.times do
+ s = s.succ
+ end
+ lines.push("#{i + 1}:#{s}")
+ end
+ HISTORY.push(*lines)
+ return lines
+ end
+
+ def clear_history
+ while HISTORY.pop
+ end
+ assert(HISTORY.empty?)
+ end
+end if defined?(::Readline) && defined?(::Readline::HISTORY)