mirror of
https://github.com/saltstack/salt.git
synced 2025-04-10 23:01:39 +00:00
157 lines
4.8 KiB
Python
157 lines
4.8 KiB
Python
"""
|
|
Integration tests for Ruby Gem module
|
|
"""
|
|
|
|
import pytest
|
|
from tornado.httpclient import HTTPClient
|
|
|
|
import salt.utils.platform
|
|
from tests.support.case import ModuleCase
|
|
|
|
|
|
def check_status():
|
|
"""
|
|
Check the status of the rubygems source
|
|
"""
|
|
try:
|
|
return HTTPClient().fetch("https://rubygems.org").code == 200
|
|
except Exception: # pylint: disable=broad-except
|
|
return False
|
|
|
|
|
|
@pytest.mark.timeout_unless_on_windows(120)
|
|
@pytest.mark.skip_if_binaries_missing("gem")
|
|
@pytest.mark.windows_whitelisted
|
|
@pytest.mark.destructive_test
|
|
class GemModuleTest(ModuleCase):
|
|
"""
|
|
Validate gem module
|
|
"""
|
|
|
|
def setUp(self):
|
|
if check_status() is False:
|
|
self.skipTest("External resource 'https://rubygems.org' is not available")
|
|
|
|
self.GEM_BIN = "gem.cmd" if salt.utils.platform.is_windows() else "gem"
|
|
self.GEM = "tidy"
|
|
self.GEM_VER = "1.1.2"
|
|
self.OLD_GEM = "brass"
|
|
self.OLD_VERSION = "1.0.0"
|
|
self.NEW_VERSION = "1.2.1"
|
|
self.GEM_LIST = [self.GEM, self.OLD_GEM]
|
|
for name in (
|
|
"GEM",
|
|
"GEM_VER",
|
|
"OLD_GEM",
|
|
"OLD_VERSION",
|
|
"NEW_VERSION",
|
|
"GEM_LIST",
|
|
):
|
|
self.addCleanup(delattr, self, name)
|
|
|
|
def uninstall_gem():
|
|
# Remove gem if it is already installed
|
|
if self.run_function("gem.list", [self.GEM]):
|
|
self.run_function("gem.uninstall", [self.GEM])
|
|
|
|
self.addCleanup(uninstall_gem)
|
|
|
|
def run_function(self, function, *args, **kwargs):
|
|
"""Override run_function to use the gem binary"""
|
|
kwargs["gem_bin"] = self.GEM_BIN
|
|
return super().run_function(function, *args, **kwargs)
|
|
|
|
@pytest.mark.slow_test
|
|
def test_install_uninstall(self):
|
|
"""
|
|
gem.install
|
|
gem.uninstall
|
|
"""
|
|
self.run_function("gem.install", [self.GEM])
|
|
gem_list = self.run_function("gem.list", [self.GEM])
|
|
self.assertIn(self.GEM, gem_list)
|
|
|
|
self.run_function("gem.uninstall", [self.GEM])
|
|
self.assertFalse(self.run_function("gem.list", [self.GEM]))
|
|
|
|
@pytest.mark.slow_test
|
|
def test_install_version(self):
|
|
"""
|
|
gem.install rake version=11.1.2
|
|
"""
|
|
self.run_function("gem.install", [self.GEM], version=self.GEM_VER)
|
|
gem_list = self.run_function("gem.list", [self.GEM])
|
|
self.assertIn(self.GEM, gem_list)
|
|
self.assertIn(self.GEM_VER, gem_list[self.GEM])
|
|
|
|
self.run_function("gem.uninstall", [self.GEM])
|
|
self.assertFalse(self.run_function("gem.list", [self.GEM]))
|
|
|
|
@pytest.mark.slow_test
|
|
def test_list(self):
|
|
"""
|
|
gem.list
|
|
"""
|
|
self.run_function("gem.install", [" ".join(self.GEM_LIST)])
|
|
|
|
all_ret = self.run_function("gem.list")
|
|
for gem in self.GEM_LIST:
|
|
self.assertIn(gem, all_ret)
|
|
|
|
single_ret = self.run_function("gem.list", [self.GEM])
|
|
self.assertIn(self.GEM, single_ret)
|
|
|
|
self.run_function("gem.uninstall", [" ".join(self.GEM_LIST)])
|
|
|
|
@pytest.mark.slow_test
|
|
def test_list_upgrades(self):
|
|
"""
|
|
gem.list_upgrades
|
|
"""
|
|
# install outdated gem
|
|
self.run_function("gem.install", [self.OLD_GEM], version=self.OLD_VERSION)
|
|
|
|
ret = self.run_function("gem.list_upgrades")
|
|
self.assertIn(self.OLD_GEM, ret)
|
|
|
|
self.run_function("gem.uninstall", [self.OLD_GEM])
|
|
|
|
@pytest.mark.slow_test
|
|
def test_sources_add_remove(self):
|
|
"""
|
|
gem.sources_add
|
|
gem.sources_remove
|
|
"""
|
|
source = "http://production.cf.rubygems.org"
|
|
|
|
self.run_function("gem.sources_add", [source])
|
|
sources_list = self.run_function("gem.sources_list")
|
|
self.assertIn(source, sources_list)
|
|
|
|
self.run_function("gem.sources_remove", [source])
|
|
sources_list = self.run_function("gem.sources_list")
|
|
self.assertNotIn(source, sources_list)
|
|
|
|
@pytest.mark.slow_test
|
|
def test_update(self):
|
|
"""
|
|
gem.update
|
|
"""
|
|
self.run_function("gem.install", [self.OLD_GEM], version=self.OLD_VERSION)
|
|
gem_list = self.run_function("gem.list", [self.OLD_GEM])
|
|
self.assertEqual({self.OLD_GEM: [self.OLD_VERSION]}, gem_list)
|
|
|
|
self.run_function("gem.update", [self.OLD_GEM])
|
|
gem_list = self.run_function("gem.list", [self.OLD_GEM])
|
|
self.assertEqual({self.OLD_GEM: [self.NEW_VERSION, self.OLD_VERSION]}, gem_list)
|
|
|
|
self.run_function("gem.uninstall", [self.OLD_GEM])
|
|
self.assertFalse(self.run_function("gem.list", [self.OLD_GEM]))
|
|
|
|
@pytest.mark.slow_test
|
|
def test_update_system(self):
|
|
"""
|
|
gem.update_system
|
|
"""
|
|
ret = self.run_function("gem.update_system")
|
|
self.assertTrue(ret)
|