Example #1
0
    def test_change_prefix(self):
        old_state = release.SystemState('testing', 'wb6/stretch', '', True)
        new_state = release.SystemState('testing', 'wb6/stretch', 'new/prefix',
                                        True)

        assert new_state == release.get_target_state(old_state,
                                                     prefix='new/prefix')
Example #2
0
 def test_new_state_not_exist(self, mocker):
     state = release.SystemState('testing', 'wb6/stretch', '', True)
     new_state = release.SystemState('stable', 'wb6/stretch', '', True)
     self.patch(mocker, state, release_exists=False)
     assert release.RETCODE_NO_TARGET == release.route(
         args=self.make_args(target_release='stable'), argv=['test', '-t'])
     release.release_exists.assert_called_once_with(new_state)
     release.update_system.assert_not_called()
Example #3
0
    def test_change_release_keep_prefix(self):
        old_state = release.SystemState('testing', 'wb6/stretch', 'my/prefix',
                                        True)
        new_state = release.SystemState('stable', 'wb6/stretch', 'my/prefix',
                                        True)

        assert new_state == release.get_target_state(old_state,
                                                     target_release='stable')
Example #4
0
    def patch(self, mocker, confirm=True):
        super().patch(mocker, confirm=confirm)

        self.old_state = release.SystemState('testing', 'wb6/stretch', '',
                                             True)
        self.new_state = release.SystemState('stable', 'wb6/stretch', '', True)

        mocker.patch.object(release, 'generate_system_config')
        mocker.patch.object(release, 'generate_tmp_apt_preferences')
        mocker.patch.object(release, 'run_apt')
        mocker.patch('atexit.register')
        mocker.patch('atexit.unregister')
Example #5
0
 def test_old_state_inconsistent(self, mocker):
     state = release.SystemState('testing', 'wb6/stretch', '', False)
     new_state = release.SystemState('testing', 'wb6/stretch', '', True)
     self.patch(mocker, state)
     assert release.RETCODE_OK == release.route(
         args=self.make_args(target_release='testing'), argv=['test', '-t'])
     release.release_exists.assert_called_once_with(new_state)
     release.update_system.assert_called_once_with(new_state,
                                                   state,
                                                   second_stage=False,
                                                   assume_yes=False,
                                                   log_filename=None)
Example #6
0
    def patch(self, mocker, raise_exc=None, return_value=release.RETCODE_OK):
        self.old_state = release.SystemState('testing', 'wb6/stretch', '',
                                             True)
        self.new_state = release.SystemState('stable', 'wb6/stretch', '', True)

        mocker.patch.object(release,
                            'update_first_stage',
                            return_value=return_value,
                            side_effect=raise_exc)
        mocker.patch.object(release,
                            'update_second_stage',
                            return_value=return_value,
                            side_effect=raise_exc)
Example #7
0
 def test_reset_packages_route(self, mocker):
     state = release.SystemState('testing', 'wb6/stretch', '', True)
     self.patch(mocker, state)
     assert release.RETCODE_OK == release.route(
         args=self.make_args(reset_packages=True), argv=['test', '-p'])
     release.update_system.assert_called_once_with(state,
                                                   state,
                                                   second_stage=True,
                                                   assume_yes=False,
                                                   log_filename=None)
Example #8
0
    def patch(self, mocker, side_effect=None):
        self.state = release.SystemState('testing', 'wb6/stretch', 'my/prefix',
                                         True)
        self.url = "http://deb.wirenboard.com/my/prefix/wb6/stretch/dists/testing/Release"

        ret = SimpleNamespace(getcode=lambda: 200)
        mocker.patch.object(urllib.request,
                            'urlopen',
                            side_effect=side_effect,
                            return_value=ret)
Example #9
0
def test_generate_system_config(mocker):
    mocker.patch.object(release, 'generate_sources_list')
    mocker.patch.object(release, 'generate_release_apt_preferences')
    state = release.SystemState('testing', 'wb6/stretch', 'my/prefix', True)

    release.generate_system_config(state)

    release.generate_sources_list.assert_called_once_with(
        state, filename=release.WB_SOURCES_LIST_FILENAME)
    release.generate_release_apt_preferences.assert_called_once_with(
        state, filename=release.WB_RELEASE_APT_PREFERENCES_FILENAME)
Example #10
0
class TestSystemStateReader:
    @pytest.mark.parametrize(
        'wb_release,sources_list,result',
        [('wb-release.1.txt', 'sources.3.list',
          release.SystemState('testing', 'wb6/stretch', '', True)),
         ('wb-release.2.txt', 'sources.4.list',
          release.SystemState('stable', 'wb5/stretch', 'git/my/path', True)),
         ('wb-release.2.txt', 'sources.3.list',
          release.SystemState('stable', 'wb5/stretch', 'git/my/path', False))])
    def test_read(self, wb_release, sources_list, result):
        assert release.get_current_state(os.path.join(DATA_PATH, wb_release),
                                         os.path.join(DATA_PATH,
                                                      sources_list)) == result

    @pytest.mark.parametrize('filename',
                             ['wb-release.err.1.txt', 'wb-release.err.2.txt'])
    def test_error(self, filename):
        with pytest.raises(Exception):
            release.get_current_state(
                os.path.join(DATA_PATH, filename),
                os.path.join(DATA_PATH, 'sources.3.list'))
Example #11
0
    def patch(self,
              mocker,
              system_state=release.SystemState('testing', 'wb6/stretch', '',
                                               True),
              release_exists=True):
        # possible actions
        mocker.patch.object(release,
                            'update_system',
                            return_value=release.RETCODE_OK)
        mocker.patch.object(release,
                            'generate_system_config',
                            return_value=release.RETCODE_OK)
        mocker.patch.object(release, 'print_banner')
        mocker.patch.object(release, 'configure_logger')

        # additional info sources
        mocker.patch.object(release,
                            'get_current_state',
                            return_value=system_state)
        mocker.patch.object(release,
                            'release_exists',
                            return_value=release_exists)
Example #12
0
 def test_impossible_update(self):
     with pytest.raises(release.ImpossibleUpdateError):
         release.get_target_state(release.SystemState(
             'some', 'thing', 'here', True),
                                  reset_url=True,
                                  prefix='new/prefix')
Example #13
0
 def test_same_state(self, mocker):
     state = release.SystemState('testing', 'wb6/stretch', '', True)
     self.patch(mocker, state)
     assert release.RETCODE_OK == release.route(
         args=self.make_args(target_release='testing'), argv=['test', '-t'])
Example #14
0
 def test_regenerate_config(self, mocker):
     state = release.SystemState('testing', 'wb6/stretch', '', True)
     self.patch(mocker, state)
     assert release.RETCODE_OK == release.route(
         args=self.make_args(regenerate=True), argv=['test', '-r'])
     release.generate_system_config.assert_called_once_with(state)
Example #15
0
    def test_reset_prefix(self):
        old_state = release.SystemState('testing', 'wb6/stretch', 'old/prefix',
                                        True)
        new_state = release.SystemState('testing', 'wb6/stretch', '', True)

        assert new_state == release.get_target_state(old_state, reset_url=True)
Example #16
0
        exc = subprocess.CalledProcessError(42, cmd='apt-get')
        self.patch(mocker, side_effect=exc)
        with pytest.raises(subprocess.CalledProcessError) as exc_info:
            release.run_apt('update')
            assert exc_info.value == exc
        release.run_cmd.assert_called_once_with('apt-get',
                                                '-q',
                                                'update',
                                                *self.expected_args,
                                                env=self.expected_env,
                                                log_suffix='apt.update')


@pytest.mark.parametrize(
    'state,result',
    [(release.SystemState('testing', 'wb6/stretch', '', True),
      'deb http://deb.wirenboard.com/wb6/stretch testing main'),
     (release.SystemState('wb-2108', 'wb6/stretch', 'my/prefix', True),
      'deb http://deb.wirenboard.com/my/prefix/wb6/stretch wb-2108 main'),
     (release.SystemState('staging', 'all', '', True),
      'deb http://deb.wirenboard.com/all staging main')])
def test_sources_list_generator(state, result):
    with tempfile.NamedTemporaryFile() as f:
        release.generate_sources_list(state, filename=f.name)
        assert read_file_ignore_comments(f.name) == result


@pytest.mark.parametrize(
    'state,result',
    [(release.SystemState('testing', 'wb6/stretch', '', True),
      "Package: *\nPin: release o=wirenboard, a=testing\nPin-Priority: 990"),