mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-08-26 12:46:08 +00:00
package: Implement installing packages in the component
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
parent
2157cb33b7
commit
d1b040cdb6
@ -6,6 +6,7 @@ Framework for installing and updating distribution packages
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
import threading
|
import threading
|
||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
@ -50,6 +51,14 @@ class Packages(app.FollowerComponent):
|
|||||||
"""Return the list of packages managed by this component."""
|
"""Return the list of packages managed by this component."""
|
||||||
return self._packages
|
return self._packages
|
||||||
|
|
||||||
|
def setup(self, old_version):
|
||||||
|
"""Install the packages."""
|
||||||
|
# TODO: Drop the need for setup helper.
|
||||||
|
module_name = self.app.__module__
|
||||||
|
module = sys.modules[module_name]
|
||||||
|
helper = module.setup_helper
|
||||||
|
helper.install(self.packages, skip_recommends=self.skip_recommends)
|
||||||
|
|
||||||
|
|
||||||
class PackageException(Exception):
|
class PackageException(Exception):
|
||||||
"""A package operation has failed."""
|
"""A package operation has failed."""
|
||||||
|
|||||||
@ -3,13 +3,16 @@
|
|||||||
Test module for package module.
|
Test module for package module.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from unittest.mock import call, patch
|
from unittest.mock import Mock, call, patch
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from plinth.app import App
|
||||||
from plinth.errors import ActionError
|
from plinth.errors import ActionError
|
||||||
from plinth.package import Packages, packages_installed, remove
|
from plinth.package import Packages, packages_installed, remove
|
||||||
|
|
||||||
|
setup_helper = Mock()
|
||||||
|
|
||||||
|
|
||||||
def test_packages_init():
|
def test_packages_init():
|
||||||
"""Test initialization of packages component."""
|
"""Test initialization of packages component."""
|
||||||
@ -26,6 +29,31 @@ def test_packages_init():
|
|||||||
assert component.skip_recommends
|
assert component.skip_recommends
|
||||||
|
|
||||||
|
|
||||||
|
def test_packages_setup():
|
||||||
|
"""Test setting up packages component."""
|
||||||
|
|
||||||
|
class TestApp(App):
|
||||||
|
"""Test app"""
|
||||||
|
app_id = 'test-app'
|
||||||
|
|
||||||
|
component = Packages('test-component', ['foo1', 'bar1'])
|
||||||
|
app = TestApp()
|
||||||
|
app.add(component)
|
||||||
|
setup_helper.reset_mock()
|
||||||
|
app.setup(old_version=3)
|
||||||
|
setup_helper.install.assert_has_calls(
|
||||||
|
[call(['foo1', 'bar1'], skip_recommends=False)])
|
||||||
|
|
||||||
|
component = Packages('test-component', ['foo2', 'bar2'],
|
||||||
|
skip_recommends=True)
|
||||||
|
app = TestApp()
|
||||||
|
app.add(component)
|
||||||
|
setup_helper.reset_mock()
|
||||||
|
app.setup(old_version=3)
|
||||||
|
setup_helper.install.assert_has_calls(
|
||||||
|
[call(['foo2', 'bar2'], skip_recommends=True)])
|
||||||
|
|
||||||
|
|
||||||
def test_packages_installed():
|
def test_packages_installed():
|
||||||
"""Test packages_installed()."""
|
"""Test packages_installed()."""
|
||||||
# list as input
|
# list as input
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user