diff --git a/ee/cli/plugins/stack.py b/ee/cli/plugins/stack.py index e0b82e14..b4954546 100644 --- a/ee/cli/plugins/stack.py +++ b/ee/cli/plugins/stack.py @@ -354,7 +354,6 @@ class EEStackController(CementBaseController): self.pre_pref(apt_packages) if len(apt_packages): - pkg.update() pkg.install(apt_packages) if len(packages): EEDownload.download(packages) diff --git a/ee/core/aptget.py b/ee/core/aptget.py index 5c10b1e9..efa35f41 100644 --- a/ee/core/aptget.py +++ b/ee/core/aptget.py @@ -14,13 +14,14 @@ class EEAptGet: def update(self): """Similar to apt-get update""" self.cache.update(self.fprogress) - pass + self.cache.open() def upgrade(self, packages): """Similar to apt-get update""" my_selected_packages = [] # Cache Initialization - self.cache = apt.Cache() + if not self.cache: + self.cache = apt.Cache() # Cache Read self.cache.open() for package in packages: @@ -64,11 +65,16 @@ class EEAptGet: """Installation of packages""" my_selected_packages = [] # Cache Initialization - self.cache = apt.Cache() + if not self.cache: + self.cache = apt.Cache() # Cache Read self.cache.open() + for package in packages: - pkg = self.cache[package] + try: + pkg = self.cache[package] + except KeyError as e: + continue # Check Package Installed if pkg.is_installed or pkg.marked_install: # Check Package is Upgradeble @@ -80,7 +86,7 @@ class EEAptGet: if not pkg.marked_install: print("\'{package_name}-{package_ver}\'" "already the newest version" - .format(package_name=pkg.name, + .format(package_name=pkg.shortname, package_ver=pkg.installed)) else: with self.cache.actiongroup(): @@ -132,6 +138,11 @@ class EEAptGet: def remove(self, packages, auto=True, purge=False): my_selected_packages = [] + # Cache Initialization + if not self.cache: + self.cache = apt.Cache() + # Cache Read + self.cache.open() for package in packages: print("processing", package) package = self.cache[package] diff --git a/tests/cli/test_stack.py b/tests/cli/test_stack.py new file mode 100644 index 00000000..a108e594 --- /dev/null +++ b/tests/cli/test_stack.py @@ -0,0 +1,76 @@ +from ee.utils import test +from ee.cli.main import get_test_app + + +class CliTestCaseStack(test.EETestCase): + + def test_ee_cli(self): + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_web(self): + self.app = get_test_app(argv=['stack', 'install', '--web']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_admin(self): + self.app = get_test_app(argv=['stack', 'install', '--admin']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_mail(self): + self.app = get_test_app(argv=['stack', 'install', '--mail']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_nginx(self): + self.app = get_test_app(argv=['stack', 'install', '--nginx']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_php(self): + self.app = get_test_app(argv=['stack', 'install', '--php']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_mysql(self): + self.app = get_test_app(argv=['stack', 'install', '--mysql']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_postfix(self): + self.app = get_test_app(argv=['stack', 'install', '--postfix']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_wpcli(self): + self.app = get_test_app(argv=['stack', 'install', '--wpcli']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_phpmyadmin(self): + self.app = get_test_app(argv=['stack', 'install', '--phpmyadmin']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_adminer(self): + self.app = get_test_app(argv=['stack', 'install', '--adminer']) + self.app.setup() + self.app.run() + self.app.close() + + def test_ee_cli_stack_install_utils(self): + self.app = get_test_app(argv=['stack', 'install', '--utils']) + self.app.setup() + self.app.run() + self.app.close()