salt/tests/integration/modules/test_gem.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

158 lines
4.8 KiB
Python
Raw Normal View History

2020-04-02 20:10:20 -05:00
"""
2016-06-02 09:03:10 -06:00
Integration tests for Ruby Gem module
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
import pytest
2023-05-17 04:19:07 -07:00
from tornado.httpclient import HTTPClient
import salt.utils.platform
from tests.support.case import ModuleCase
2020-04-02 20:10:20 -05:00
2016-06-03 04:28:42 -06:00
def check_status():
2020-04-02 20:10:20 -05:00
"""
Check the status of the rubygems source
2020-04-02 20:10:20 -05:00
"""
try:
2017-04-18 12:26:06 +01:00
return HTTPClient().fetch("https://rubygems.org").code == 200
except Exception: # pylint: disable=broad-except
return False
2016-06-01 15:09:55 -06:00
@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):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
Validate gem module
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
def setUp(self):
if check_status() is False:
2017-04-18 12:26:06 +01:00
self.skipTest("External resource 'https://rubygems.org' is not available")
self.GEM_BIN = "gem.cmd" if salt.utils.platform.is_windows() else "gem"
2019-01-29 12:41:46 +00:00
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
2016-06-01 15:09:55 -06:00
def test_install_uninstall(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.install
gem.uninstall
2020-04-02 20:10:20 -05:00
"""
2019-01-29 12:41:46 +00:00
self.run_function("gem.install", [self.GEM])
gem_list = self.run_function("gem.list", [self.GEM])
self.assertIn(self.GEM, gem_list)
2016-06-01 15:09:55 -06:00
2019-01-29 12:41:46 +00:00
self.run_function("gem.uninstall", [self.GEM])
self.assertFalse(self.run_function("gem.list", [self.GEM]))
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
2016-06-01 15:09:55 -06:00
def test_install_version(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.install rake version=11.1.2
2020-04-02 20:10:20 -05:00
"""
2019-01-29 12:41:46 +00:00
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])
2016-06-01 15:09:55 -06:00
2019-01-29 12:41:46 +00:00
self.run_function("gem.uninstall", [self.GEM])
self.assertFalse(self.run_function("gem.list", [self.GEM]))
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
2016-06-01 15:09:55 -06:00
def test_list(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.list
2020-04-02 20:10:20 -05:00
"""
2019-01-29 12:41:46 +00:00
self.run_function("gem.install", [" ".join(self.GEM_LIST)])
2016-06-01 15:09:55 -06:00
all_ret = self.run_function("gem.list")
2019-01-29 12:41:46 +00:00
for gem in self.GEM_LIST:
self.assertIn(gem, all_ret)
2016-06-01 15:09:55 -06:00
2019-01-29 12:41:46 +00:00
single_ret = self.run_function("gem.list", [self.GEM])
self.assertIn(self.GEM, single_ret)
2016-06-01 15:09:55 -06:00
2019-01-29 12:41:46 +00:00
self.run_function("gem.uninstall", [" ".join(self.GEM_LIST)])
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
2016-06-01 15:09:55 -06:00
def test_list_upgrades(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.list_upgrades
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
# install outdated gem
2019-01-29 12:41:46 +00:00
self.run_function("gem.install", [self.OLD_GEM], version=self.OLD_VERSION)
2016-06-01 15:09:55 -06:00
ret = self.run_function("gem.list_upgrades")
2019-01-29 12:41:46 +00:00
self.assertIn(self.OLD_GEM, ret)
2016-06-01 15:09:55 -06:00
2019-01-29 12:41:46 +00:00
self.run_function("gem.uninstall", [self.OLD_GEM])
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
2016-06-01 15:09:55 -06:00
def test_sources_add_remove(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.sources_add
gem.sources_remove
2020-04-02 20:10:20 -05:00
"""
2019-02-19 14:04:45 -07:00
source = "http://production.cf.rubygems.org"
2016-06-01 15:09:55 -06:00
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)
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
2016-06-01 15:09:55 -06:00
def test_update(self):
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
gem.update
2020-04-02 20:10:20 -05:00
"""
2019-01-29 12:41:46 +00:00
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)
2019-01-29 12:41:46 +00:00
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)
2019-01-29 12:41:46 +00:00
self.run_function("gem.uninstall", [self.OLD_GEM])
self.assertFalse(self.run_function("gem.list", [self.OLD_GEM]))
2016-06-01 15:09:55 -06:00
@pytest.mark.slow_test
def test_update_system(self):
2020-04-02 20:10:20 -05:00
"""
gem.update_system
2020-04-02 20:10:20 -05:00
"""
2016-06-01 15:09:55 -06:00
ret = self.run_function("gem.update_system")
self.assertTrue(ret)