mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +03:00 
			
		
		
		
	scanner: add refresh_config config item for buildserver
Includes some cosmetic changes from black.
This commit is contained in:
		
							parent
							
								
									907dfd1c3c
								
							
						
					
					
						commit
						031a130395
					
				
					 3 changed files with 41 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -373,3 +373,9 @@
 | 
			
		|||
#   - suss
 | 
			
		||||
#   - exodus
 | 
			
		||||
#   - https://example.com/signatures.json
 | 
			
		||||
 | 
			
		||||
# The scanner can use signature sources from the internet. These are
 | 
			
		||||
# cached locally.  To force them to be refreshed from the network on
 | 
			
		||||
# every run, set this to true:
 | 
			
		||||
#
 | 
			
		||||
# refresh_scanner: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -325,15 +325,15 @@ class SUSSDataController(SignatureDataController):
 | 
			
		|||
        self.set_data(json.loads(SUSS_DEFAULT))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ScannerTool():
 | 
			
		||||
class ScannerTool:
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
 | 
			
		||||
        # we could add support for loading additional signature source
 | 
			
		||||
        # definitions from config.yml here
 | 
			
		||||
 | 
			
		||||
        self.scanner_data_lookup()
 | 
			
		||||
 | 
			
		||||
        if options and options.refresh_scanner:
 | 
			
		||||
        config = common.get_config()
 | 
			
		||||
        if (options and options.refresh_scanner) or config.get('refresh_scanner'):
 | 
			
		||||
            self.refresh()
 | 
			
		||||
 | 
			
		||||
        self.load()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -704,6 +704,20 @@ class Test_SignatureDataController(unittest.TestCase):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
class Test_ScannerTool(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        fdroidserver.common.options = None
 | 
			
		||||
        fdroidserver.common.config = None
 | 
			
		||||
        self.basedir = os.path.join(localmodule, 'tests')
 | 
			
		||||
        os.chdir(self.basedir)
 | 
			
		||||
        self._td = mkdtemp()
 | 
			
		||||
        self.testdir = self._td.name
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        fdroidserver.common.options = None
 | 
			
		||||
        fdroidserver.common.config = None
 | 
			
		||||
        os.chdir(self.basedir)
 | 
			
		||||
        self._td.cleanup()
 | 
			
		||||
 | 
			
		||||
    def test_load(self):
 | 
			
		||||
        st = mock.Mock()
 | 
			
		||||
        st.sdcs = [mock.Mock(), mock.Mock()]
 | 
			
		||||
| 
						 | 
				
			
			@ -711,7 +725,8 @@ class Test_ScannerTool(unittest.TestCase):
 | 
			
		|||
        st.sdcs[0].load.assert_called_once_with()
 | 
			
		||||
        st.sdcs[1].load.assert_called_once_with()
 | 
			
		||||
 | 
			
		||||
    def test_refresh_default(self):
 | 
			
		||||
    def test_refresh_no_options_or_config(self):
 | 
			
		||||
        """This simulates what happens when running something like scan_source()"""
 | 
			
		||||
        with mock.patch('fdroidserver.scanner.ScannerTool.refresh') as refresh:
 | 
			
		||||
            fdroidserver.scanner.ScannerTool()
 | 
			
		||||
            refresh.assert_not_called()
 | 
			
		||||
| 
						 | 
				
			
			@ -730,6 +745,22 @@ class Test_ScannerTool(unittest.TestCase):
 | 
			
		|||
            fdroidserver.scanner.ScannerTool()
 | 
			
		||||
            refresh.assert_not_called()
 | 
			
		||||
 | 
			
		||||
    def test_refresh_from_config(self):
 | 
			
		||||
        os.chdir(self.testdir)
 | 
			
		||||
        pathlib.Path('config.yml').write_text('refresh_scanner: true')
 | 
			
		||||
        with mock.patch('fdroidserver.scanner.ScannerTool.refresh') as refresh:
 | 
			
		||||
            fdroidserver.scanner.ScannerTool()
 | 
			
		||||
            refresh.assert_called_once()
 | 
			
		||||
 | 
			
		||||
    def test_refresh_options_overrides_config(self):
 | 
			
		||||
        fdroidserver.scanner.options = mock.Mock()
 | 
			
		||||
        fdroidserver.scanner.options.refresh_scanner = True
 | 
			
		||||
        os.chdir(self.testdir)
 | 
			
		||||
        pathlib.Path('config.yml').write_text('refresh_scanner: false')
 | 
			
		||||
        with mock.patch('fdroidserver.scanner.ScannerTool.refresh') as refresh:
 | 
			
		||||
            fdroidserver.scanner.ScannerTool()
 | 
			
		||||
            refresh.assert_called_once()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Test_main(unittest.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue