mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +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 logging
|
||||
import subprocess
|
||||
import sys
|
||||
import threading
|
||||
from typing import Union
|
||||
|
||||
@ -50,6 +51,14 @@ class Packages(app.FollowerComponent):
|
||||
"""Return the list of packages managed by this component."""
|
||||
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):
|
||||
"""A package operation has failed."""
|
||||
|
||||
@ -3,13 +3,16 @@
|
||||
Test module for package module.
|
||||
"""
|
||||
|
||||
from unittest.mock import call, patch
|
||||
from unittest.mock import Mock, call, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from plinth.app import App
|
||||
from plinth.errors import ActionError
|
||||
from plinth.package import Packages, packages_installed, remove
|
||||
|
||||
setup_helper = Mock()
|
||||
|
||||
|
||||
def test_packages_init():
|
||||
"""Test initialization of packages component."""
|
||||
@ -26,6 +29,31 @@ def test_packages_init():
|
||||
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():
|
||||
"""Test packages_installed()."""
|
||||
# list as input
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user