Changeset 4

Show
Ignore:
Timestamp:
08/07/07 15:57:04 (1 year ago)
Author:
akhavr
Message:

ticket:1:

  • more load_page code
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bin/tests.py

    r3 r4  
    44 
    55from inject import * 
     6import StringIO 
    67import time 
    78import wanderer 
     9import urllib2 
    810 
    911def should_call(mock, call, message, numcalls=1): 
     
    101103 
    102104    @inject_dependency('urllib2', wanderer) 
    103     def test_connection_timeout(self): 
    104         'connection timeout' 
     105    @inject_dependency('stderr', wanderer.sys) 
     106    @inject_dependency('exit', wanderer.sys) 
     107    def test_glitch(self): 
     108        'connection glitch' 
     109        def raise_exception(url, orig_function = wanderer.urllib2.urlopen): 
     110            orig_function(url) 
     111            raise wanderer.urllib2.URLError('simulated glitch') 
     112        wanderer.urllib2.URLError = urllib2.URLError 
     113        wanderer.urllib2.urlopen = raise_exception 
    105114        url = 'http://some.server/page' 
    106115        wanderer.load_page(url) 
    107116        should_call_with_param(wanderer.urllib2, 'urlopen', 0, 
    108117                               lambda p: p == url, 'Wrong url opened: %s') 
     118        should_call_with_param( 
     119            wanderer.sys.stderr, 'write', 0, 
     120            lambda p: p.startswith('Failed to open "%s": simulated glitch' 
     121                                   % url), 
     122            'Wrong error message: %s' 
     123            ) 
     124        should_call_with_param(wanderer.sys.exit, '__call__', 0, 
     125                               lambda p: p == 3, 'Wrong exit code: %s') 
     126 
     127    @inject_dependency('urllib2', wanderer) 
     128    def test_ok(self): 
     129        'page downloads ok' 
     130        url = 'http://some.server/page' 
     131        page_content = 'page content' 
     132        wanderer.urllib2.mockAddReturnValues(urlopen = StringIO.StringIO( 
     133            page_content)) 
     134        page = wanderer.load_page(url) 
     135        should_call_with_param(wanderer.urllib2, 'urlopen', 0, 
     136                               lambda p: p == url, 'Wrong url opened: %s') 
     137        assert page == page_content, 'Wrong page content returned: %s' % page 
     138 
     139    @inject_dependency('urllib2', wanderer) 
     140    def test_twill_log(self): 
     141        'should log twill commands' 
    109142        assert 0, 'todo' 
    110143         
  • trunk/bin/wanderer.py

    r3 r4  
    4545def load_page(url): 
    4646    'loads specified page' 
    47     page = urllib2.urlopen(url) 
    48     return 
     47    try: 
     48        page = urllib2.urlopen(url) 
     49        return page.read() 
     50    except urllib2.URLError, err: 
     51        sys.stderr.write('Failed to open "%s": %s' % (url, err.reason)) 
     52        sys.exit(3) 
    4953 
    5054def main(): 
     
    5256    options = load_configs() 
    5357    init_seed(options) 
    54     load_page(options['starturl']) 
     58    content = load_page(options['starturl']) 
    5559 
    5660