mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-03 18:14:11 +00:00 
			
		
		
		
	Refactor the __fetch_manifest() code so that the a successful response is immediately handled and we don't end up with an undefined 'response' on an exception. Also update the tests to return two mocked reponses to match the size of the url_list.
This commit is contained in:
		
							parent
							
								
									7e38fec3cb
								
							
						
					
					
						commit
						ca1fc41f9e
					
				
							
								
								
									
										20
									
								
								boottest.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								boottest.py
									
									
									
									
									
								
							@ -92,21 +92,21 @@ class TouchManifest(object):
 | 
			
		||||
            try:
 | 
			
		||||
                response = urllib.urlopen(url)
 | 
			
		||||
                if response.code == 200:
 | 
			
		||||
                    # Only [re]create the manifest file if one was successfully
 | 
			
		||||
                    # downloaded. This allows for an existing image to be used
 | 
			
		||||
                    # if the download fails.
 | 
			
		||||
                    path_dir = os.path.dirname(self.path)
 | 
			
		||||
                    if not os.path.exists(path_dir):
 | 
			
		||||
                        os.makedirs(path_dir)
 | 
			
		||||
                    with open(self.path, 'w') as fp:
 | 
			
		||||
                        fp.write(response.read())
 | 
			
		||||
                    success = True
 | 
			
		||||
                    break
 | 
			
		||||
 | 
			
		||||
            except IOError as e:
 | 
			
		||||
                print("W: [%s] - error connecting to %s: %s" % (
 | 
			
		||||
                        time.asctime(), self.path, e))
 | 
			
		||||
 | 
			
		||||
        # Only [re]create the manifest file if one was successfully downloaded
 | 
			
		||||
        # this allows for an existing image to be used if the download fails.
 | 
			
		||||
        if response.code == 200:
 | 
			
		||||
            path_dir = os.path.dirname(self.path)
 | 
			
		||||
            if not os.path.exists(path_dir):
 | 
			
		||||
                os.makedirs(path_dir)
 | 
			
		||||
            with open(self.path, 'w') as fp:
 | 
			
		||||
                fp.write(response.read())
 | 
			
		||||
            success = True
 | 
			
		||||
 | 
			
		||||
        return success
 | 
			
		||||
 | 
			
		||||
    def _load(self):
 | 
			
		||||
 | 
			
		||||
@ -49,7 +49,10 @@ class TestTouchManifest(unittest.TestCase):
 | 
			
		||||
        self.addCleanup(shutil.rmtree, self.path)
 | 
			
		||||
        _p = mock.patch('urllib.urlopen')
 | 
			
		||||
        self.mocked_urlopen = _p.start()
 | 
			
		||||
        self.mocked_urlopen.side_effect = [FakeResponse(code=404),]
 | 
			
		||||
        self.mocked_urlopen.side_effect = [
 | 
			
		||||
            FakeResponse(code=404),
 | 
			
		||||
            FakeResponse(code=404),
 | 
			
		||||
        ]
 | 
			
		||||
        self.addCleanup(_p.stop)
 | 
			
		||||
        self.fetch_retries_orig = boottest.FETCH_RETRIES
 | 
			
		||||
        def restore_fetch_retries():
 | 
			
		||||
@ -90,7 +93,10 @@ class TestTouchManifest(unittest.TestCase):
 | 
			
		||||
        self.assertIn('foo', manifest)
 | 
			
		||||
 | 
			
		||||
    def test_fetch_exception(self):
 | 
			
		||||
        self.mocked_urlopen.side_effect = [IOError("connection refused")]
 | 
			
		||||
        self.mocked_urlopen.side_effect = [
 | 
			
		||||
            IOError("connection refused"),
 | 
			
		||||
            IOError("connection refused"),
 | 
			
		||||
        ]
 | 
			
		||||
        manifest = boottest.TouchManifest('not-real', 'not-real')
 | 
			
		||||
        self.assertEqual(0, len(manifest._manifest))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user