Changeset 6594

Show
Ignore:
Timestamp:
02/12/08 15:14:41 (10 months ago)
Author:
cho45
Message:

lang/ruby/chokan/branches/citrus/plugins:

テスト時の @socket には Queue をつかうように。

  • スレッドを扱うテストをスマートかつ確実に書けるように

Location:
lang/ruby/chokan/branches/citrus
Files:
10 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/chokan/branches/citrus/plugins/always_no_op.rb

    r6426 r6594  
    2626 
    2727                it "should reply correctly" do 
    28                         @socket.string = "" 
     28                        @socket.clear 
    2929                        @plugin.on_mode(@prefix, "#test", [ ["o", @core.prefix.nick] ], []) 
    30                         @socket.string.should == "MODE #test -o chokan\r\nPRIVMSG foo :Don't mode +o me.\r\n" 
     30                        @socket.pop.to_s.should == "MODE #test -o chokan\r\n" 
     31                        @socket.pop.to_s.should == "PRIVMSG foo :Don't mode +o me.\r\n" 
    3132                end 
    3233        end 
  • lang/ruby/chokan/branches/citrus/plugins/eval.rb

    r6586 r6594  
    6363 
    6464                it "should reply correctly" do 
    65                         @socket.string = "" 
     65                        @socket.clear 
    6666                        @plugin.on_privmsg(@prefix, "#test", "?rb 1") 
    67                         @socket.string.should == "NOTICE #test 1\r\n" 
     67                        @socket.pop.to_s.should == "NOTICE #test 1\r\n" 
    6868 
    69                         @socket.string = "" 
     69                        @socket.clear 
    7070                        @plugin.on_privmsg(@prefix, "#test", "?rb raise 'foobar'") 
    71                         @socket.string.should == "NOTICE #test :RuntimeError => \"(eval):1:in `safe_eval': foobar\"\r\n" 
     71                        @socket.pop.to_s.should == "NOTICE #test :RuntimeError => \"(eval):1:in `safe_eval': foobar\"\r\n" 
    7272                end 
    7373        end 
  • lang/ruby/chokan/branches/citrus/plugins/hatena.rb

    r6519 r6594  
    7979 
    8080                it "should reply correctly" do 
    81                         @socket.string = "" 
     81                        @socket.clear 
    8282                        @plugin.on_privmsg(@prefix, "#test", "id:jkondo") 
    83                         @socket.string.should == "NOTICE #test http://d.hatena.ne.jp/jkondo/\r\n" 
     83                        @socket.pop.to_s.should == "NOTICE #test http://d.hatena.ne.jp/jkondo/\r\n" 
    8484 
    85                         @socket.string = "" 
     85                        @socket.clear 
    8686                        @plugin.on_privmsg(@prefix, "#test", "d:id:jkondo++") 
    87                         @socket.string.should == "NOTICE #test http://d.hatena.ne.jp/jkondo/\r\n" 
     87                        @socket.pop.to_s.should == "NOTICE #test http://d.hatena.ne.jp/jkondo/\r\n" 
    8888 
    89                         @socket.string = "" 
     89                        @socket.clear 
    9090                        @plugin.on_privmsg(@prefix, "#test", "g:subtech:id:jkondo") 
    91                         @socket.string.should == "NOTICE #test http://subtech.g.hatena.ne.jp/jkondo/\r\n" 
     91                        @socket.pop.to_s.should == "NOTICE #test http://subtech.g.hatena.ne.jp/jkondo/\r\n" 
    9292 
    93                         @socket.string = "" 
     93                        @socket.clear 
    9494                        @plugin.on_privmsg(@prefix, "#test", "hogehogeid:jitensyaaaaa") 
    95                         @socket.string.should == "" 
     95                        @socket.should be_empty 
    9696 
    9797                        class Hatena 
     
    101101                        end 
    102102 
    103                         @socket.string = "" 
     103                        @socket.clear 
    104104                        @plugin.on_privmsg(@prefix, "#test", "id:jkondo") 
    105                         @socket.string.should == "NOTICE #test :Hatena status API failed => #<RuntimeError: foobar>\r\n" 
     105                        @socket.pop.to_s.should == "NOTICE #test :Hatena status API failed => #<RuntimeError: foobar>\r\n" 
    106106                end 
    107107        end 
  • lang/ruby/chokan/branches/citrus/plugins/http.rb

    r6477 r6594  
    126126 
    127127                it "should reply correctly" do 
    128                         Thread.abort_on_exception = true 
    129                         Thread.critical = true 
    130                         @socket.string = "" 
     128                        @socket.clear 
    131129                        @plugin.on_privmsg(@prefix, "#test", "http://foo/") 
    132                         Thread.pass 
    133                         @socket.string.should == "NOTICE #test :foo foo\r\n" 
     130                        @socket.pop.to_s.should == "NOTICE #test :foo foo\r\n" 
    134131 
    135132 
    136                         @socket.string = "" 
     133                        @socket.clear 
    137134                        @plugin.on_privmsg(@prefix, "#test", "http://bar/") 
    138                         Thread.pass 
    139                         @socket.string.should == "NOTICE #test :bar bar\r\n" 
    140                         Thread.critical = false 
     135                        @socket.pop.to_s.should == "NOTICE #test :bar bar\r\n" 
    141136 
    142                         @socket.string = "" 
     137                        @socket.clear 
    143138                        @plugin.on_privmsg(@prefix, "#test", "http://example.com/") 
    144                         true while @socket.string.empty? 
    145                         @socket.string.should == "NOTICE #test :Example Web Page [text/html; charset=UTF-8]\r\n" 
     139                        @socket.pop.to_s.should == "NOTICE #test :Example Web Page [text/html; charset=UTF-8]\r\n" 
    146140 
    147                         @socket.string = "" 
     141                        @socket.clear 
    148142                        @plugin.on_privmsg(@prefix, "#test", "http://www.google.co.jp/intl/ja/about.html") 
    149                         true while @socket.string.empty? 
    150                         @socket.string.should == "NOTICE #test :Google について [text/html]\r\n" 
     143                        @socket.pop.to_s.should == "NOTICE #test :Google について [text/html]\r\n" 
    151144 
    152                         @socket.string = "" 
     145                        @socket.clear 
    153146                        @plugin.on_privmsg(@prefix, "#test", "http://localhost/") 
    154                         true while @socket.string.empty? 
    155                         @socket.string.should == "NOTICE #test :#<Net::HTTP::Paranoid::NotAllowedHostError: localhost is not allowed host>\r\n" 
     147                        @socket.pop.to_s.should == "NOTICE #test :#<Net::HTTP::Paranoid::NotAllowedHostError: localhost is not allowed host>\r\n" 
    156148                end 
    157149        end 
  • lang/ruby/chokan/branches/citrus/plugins/js_eval.rb

    r6404 r6594  
    7979 
    8080                it "should reply correctly" do 
    81                         @socket.string = "" 
     81                        @socket.clear 
    8282                        @plugin.on_privmsg(@prefix, "#test", "?js 1") 
    83                         @socket.string.should == "NOTICE #test 1\r\n" 
     83                        @socket.pop.to_s.should == "NOTICE #test 1\r\n" 
    8484 
    85                         @socket.string = "" 
     85                        @socket.clear 
    8686                        @plugin.on_privmsg(@prefix, "#test", "?js for(;;);") 
    87                         @socket.string.should == "NOTICE #test :JS eval timeout\r\n" 
     87                        @socket.pop.to_s.should == "NOTICE #test :JS eval timeout\r\n" 
    8888 
    8989                        class JsEval 
     
    9797                        end 
    9898 
    99                         @socket.string = "" 
     99                        @socket.clear 
    100100                        @plugin.on_privmsg(@prefix, "#test", "?js 1") 
    101                         @socket.string.should == "NOTICE #test 1\r\n" 
     101                        @socket.pop.to_s.should == "NOTICE #test 1\r\n" 
    102102 
    103                         @socket.string = "" 
     103                        @socket.clear 
    104104                        @plugin.on_privmsg(@prefix, "#test", "?js throw 'foobar'") 
    105                         @socket.string.should == "NOTICE #test :#<SpiderMonkey::Error: invalid: uncaught exception: foobar>\r\n" 
     105                        @socket.pop.to_s.should == "NOTICE #test :#<SpiderMonkey::Error: invalid: uncaught exception: foobar>\r\n" 
    106106                end 
    107107        end 
  • lang/ruby/chokan/branches/citrus/plugins/plusplus.rb

    r6454 r6594  
    7373 
    7474                it "should reply correctly" do 
    75                         @socket.string = "" 
     75                        @socket.clear 
    7676                        @plugin.on_privmsg(@prefix, "#test", "foo++") 
    77                         @socket.string.should == "NOTICE #test :foo: 1 (1++ 0--)\r\n" 
     77                        @socket.pop.to_s.should == "NOTICE #test :foo: 1 (1++ 0--)\r\n" 
    7878 
    79                         @socket.string = "" 
     79                        @socket.clear 
    8080                        @plugin.on_privmsg(@prefix, "#test", "foo++") 
    81                         @socket.string.should == "NOTICE #test :foo: 2 (2++ 0--)\r\n" 
     81                        @socket.pop.to_s.should == "NOTICE #test :foo: 2 (2++ 0--)\r\n" 
    8282 
    83                         @socket.string = "" 
     83                        @socket.clear 
    8484                        @plugin.on_privmsg(@prefix, "#test", "foo--") 
    85                         @socket.string.should == "NOTICE #test :foo: 1 (2++ 1--)\r\n" 
     85                        @socket.pop.to_s.should == "NOTICE #test :foo: 1 (2++ 1--)\r\n" 
    8686 
    87                         @socket.string = "" 
     87                        @socket.clear 
    8888                        @plugin.on_privmsg(@prefix, "#test", "karma for foo") 
    89                         @socket.string.should == "NOTICE #test :foo: 1 (2++ 1--)\r\n" 
     89                        @socket.pop.to_s.should == "NOTICE #test :foo: 1 (2++ 1--)\r\n" 
    9090 
    91                         @socket.string = "" 
     91                        @socket.clear 
    9292                        @plugin.on_privmsg(@prefix, "#test", "(C++)++") 
    93                         @socket.string.should == "NOTICE #test :C++: 1 (1++ 0--)\r\n" 
     93                        @socket.pop.to_s.should == "NOTICE #test :C++: 1 (1++ 0--)\r\n" 
    9494 
    95                         @socket.string = "" 
     95                        @socket.clear 
    9696                        @plugin.on_privmsg(@prefix, "#test", "karma for C++") 
    97                         @socket.string.should == "NOTICE #test :C++: 1 (1++ 0--)\r\n" 
     97                        @socket.pop.to_s.should == "NOTICE #test :C++: 1 (1++ 0--)\r\n" 
    9898 
    99                         @socket.string = "" 
     99                        @socket.clear 
    100100                        @plugin.on_privmsg(@prefix, "#test", "karma for unk") 
    101                         @socket.string.should == "NOTICE #test :don't know unk\r\n" 
     101                        @socket.pop.to_s.should == "NOTICE #test :don't know unk\r\n" 
    102102 
    103                         @socket.string = "" 
     103                        @socket.clear 
    104104                        @plugin.on_privmsg(@prefix, "#test", "文乃さん++") 
    105                         @socket.string.should == "NOTICE #test :文乃さん: 1 (1++ 0--)\r\n" 
     105                        @socket.pop.to_s.should == "NOTICE #test :文乃さん: 1 (1++ 0--)\r\n" 
    106106 
    107107                end 
  • lang/ruby/chokan/branches/citrus/plugins/simple_reply.rb

    r6479 r6594  
    3232 
    3333                it "should reply correctly" do 
    34                         @socket.string = "" 
     34                        @socket.clear 
    3535                        @plugin.on_privmsg(@prefix, "#test", "foo") 
    36                         @socket.string.should == "NOTICE #test :Nice boat.\r\n" 
     36                        @socket.pop.to_s.should == "NOTICE #test :Nice boat.\r\n" 
    3737 
    38                         @socket.string = "" 
     38                        @socket.clear 
    3939                        @plugin.on_privmsg(@prefix, "#test", "bar") 
    40                         @socket.string.should == "NOTICE #test :Nice boat.\r\n" 
     40                        @socket.pop.to_s.should == "NOTICE #test :Nice boat.\r\n" 
    4141 
    42                         @socket.string = "" 
     42                        @socket.clear 
    4343                        @plugin.on_privmsg(@prefix, "#test", "baz") 
    44                         @socket.string.should == "" 
     44                        @socket.should be_empty 
    4545 
    46                         @socket.string = "" 
     46                        @socket.clear 
    4747                        @plugin.on_privmsg(@prefix, "#test2", "foo") 
    48                         @socket.string.should == "" 
     48                        @socket.should be_empty 
    4949                end 
    5050        end 
  • lang/ruby/chokan/branches/citrus/plugins/system.rb

    r6586 r6594  
    106106 
    107107                it "should response to operator" do 
    108                         @socket.string = "" 
     108                        @socket.clear 
    109109                        @plugin.on_privmsg(@prefix, "#test", "operator?") 
    110                         @socket.string.should == "" 
     110                        @socket.should be_empty 
    111111 
    112                         @socket.string = "" 
     112                        @socket.clear 
    113113                        @plugin.on_privmsg(@prefixop, "#test", "operator?") 
    114                         @socket.string.should == "NOTICE #test :You are an operator for me.\r\n" 
     114                        @socket.pop.to_s.should == "NOTICE #test :You are an operator for me.\r\n" 
    115115 
    116116                        @plugin = System.new(@core, { "System" => { 
     
    118118                        } }) 
    119119 
    120                         @socket.string = "" 
     120                        @socket.clear 
    121121                        @plugin.on_privmsg(@prefixop, "#test", "operator?") 
    122                         @socket.string.should == "NOTICE #test :You are an operator for me.\r\n" 
     122                        @socket.pop.to_s.should == "NOTICE #test :You are an operator for me.\r\n" 
    123123 
    124124                        @plugin = System.new(@core, { "System" => { 
     
    126126                        } }) 
    127127 
    128                         @socket.string = "" 
     128                        @socket.clear 
    129129                        @plugin.on_privmsg(@prefixop, "#test", "operator?") 
    130                         @socket.string.should == "NOTICE #test :You are an operator for me.\r\n" 
     130                        @socket.pop.to_s.should == "NOTICE #test :You are an operator for me.\r\n" 
    131131                end 
    132132 
    133133                it "can reload_plugins" do 
    134                         @socket.string = "" 
     134                        @socket.clear 
    135135                        @plugin.on_privmsg(@prefixop, "#test", "reload") 
    136                         @socket.string.should match(/^NOTICE #test /) 
     136                        @socket.pop.to_s.should match(/^NOTICE #test /) 
    137137 
    138                         @socket.string = "" 
     138                        @socket.clear 
    139139                        @plugin.on_privmsg(@prefixop, "#test", "reload Foo") 
    140                         @socket.string.should match(/^NOTICE #test /) 
     140                        @socket.pop.to_s.should match(/^NOTICE #test /) 
    141141 
    142                         @socket.string = "" 
     142                        @socket.clear 
    143143                        @plugin.on_privmsg(@prefixop, "#test", "reload Unknown") 
    144                         @socket.string.should match(/^NOTICE #test /) 
     144                        @socket.pop.to_s.should match(/^NOTICE #test /) 
    145145 
    146146                        def @core.reload_config 
     
    148148                        end 
    149149 
    150                         @socket.string = "" 
     150                        @socket.clear 
    151151                        @plugin.on_privmsg(@prefixop, "#test", "reload") 
    152                         @socket.string.should match(/^NOTICE #test /) 
     152                        @socket.pop.to_s.should match(/^NOTICE #test /) 
    153153                end 
    154154 
    155155                it "can operate join/part" do 
    156                         @socket.string = "" 
     156                        @socket.clear 
    157157                        @plugin.on_privmsg(@prefixop, "#test", "chokan: part") 
    158                         @socket.string.should match(/^PART #test /) 
     158                        @socket.pop.to_s.should match(/^PART #test /) 
    159159 
    160                         @socket.string = "" 
     160                        @socket.clear 
    161161                        @plugin.on_privmsg(@prefixop, "#test", "chokan: join to #foobar") 
    162                         @socket.string.should match(/^JOIN #foobar /) 
     162                        @socket.pop.to_s.should match(/^JOIN #foobar /) 
    163163 
    164                         @socket.string = "" 
     164                        @socket.clear 
    165165                        @plugin.on_privmsg(@prefixop, "#test", "chokan: join to #foobar password") 
    166                         @socket.string.should match(/^JOIN #foobar password/) 
     166                        @socket.pop.to_s.should match(/^JOIN #foobar password/) 
    167167                end 
    168168 
    169169                it "can Gem.clear_paths" do 
    170                         @socket.string = "" 
     170                        @socket.clear 
    171171                        @plugin.on_privmsg(@prefixop, "#test", "Gem.clear_paths") 
    172                         @socket.string.should match(/^NOTICE #test :Gem.clear_paths/) 
     172                        @socket.pop.to_s.should match(/^NOTICE #test :Gem.clear_paths/) 
    173173                end 
    174174        end 
  • lang/ruby/chokan/branches/citrus/spec/plugin_spec.rb

    r6401 r6594  
    1414        it "has utility post methods" do 
    1515                @plugin = Plugin.new(@core, {}) 
     16                @socket.clear 
     17 
    1618                @plugin.privmsg("#test", "message") 
    1719                @plugin.privmsg("#test", "message with space") 
    1820 
    19                 @socket.rewind 
    20                 @socket.gets.should == "PRIVMSG #test message\r\n" 
    21                 @socket.gets.should == "PRIVMSG #test :message with space\r\n" 
     21                @socket.pop.to_s.should == "PRIVMSG #test message\r\n" 
     22                @socket.pop.to_s.should == "PRIVMSG #test :message with space\r\n" 
    2223        end 
    2324 
  • lang/ruby/chokan/branches/citrus/spec/spec_helper.rb

    r6585 r6594  
    11#!/usr/bin/env ruby 
     2 
     3Thread.abort_on_exception = true 
    24 
    35require "rubygems" 
     
    2224end 
    2325 
    24 require "stringio" 
     26require "thread" 
    2527 
    2628class DummyCore < Citrus::Core 
     
    5557                super(config) 
    5658 
    57                 @socket  = StringIO.new("") 
     59                @socket  = Queue.new 
    5860        end 
    5961