|
1 | 1 | # Copyright 2021 Canonical Ltd.
|
2 | 2 | # See LICENSE file for licensing details.
|
3 | 3 | import logging
|
| 4 | +import platform |
4 | 5 | import subprocess
|
5 | 6 | import unittest
|
6 | 7 | from unittest.mock import MagicMock, Mock, PropertyMock, mock_open, patch
|
@@ -1025,31 +1026,56 @@ def test_install_snap_packages(self, _snap_cache):
|
1025 | 1026 | _snap_cache.reset_mock()
|
1026 | 1027 | _snap_package.reset_mock()
|
1027 | 1028 | _snap_package.ensure.side_effect = None
|
1028 |
| - self.charm._install_snap_packages([("postgresql", {"revision": 42})]) |
| 1029 | + self.charm._install_snap_packages( |
| 1030 | + [("postgresql", {"revision": {platform.machine(): "42"}})] |
| 1031 | + ) |
1029 | 1032 | _snap_cache.assert_called_once_with()
|
1030 | 1033 | _snap_cache.return_value.__getitem__.assert_called_once_with("postgresql")
|
1031 |
| - _snap_package.ensure.assert_called_once_with(snap.SnapState.Latest, revision=42) |
| 1034 | + _snap_package.ensure.assert_called_once_with( |
| 1035 | + snap.SnapState.Latest, revision="42", channel="" |
| 1036 | + ) |
1032 | 1037 | _snap_package.hold.assert_called_once_with()
|
1033 | 1038 |
|
1034 | 1039 | # Test with refresh
|
1035 | 1040 | _snap_cache.reset_mock()
|
1036 | 1041 | _snap_package.reset_mock()
|
1037 | 1042 | _snap_package.present = True
|
1038 |
| - self.charm._install_snap_packages([("postgresql", {"revision": 42})], refresh=True) |
| 1043 | + self.charm._install_snap_packages( |
| 1044 | + [("postgresql", {"revision": {platform.machine(): "42"}, "channel": "latest/test"})], |
| 1045 | + refresh=True, |
| 1046 | + ) |
1039 | 1047 | _snap_cache.assert_called_once_with()
|
1040 | 1048 | _snap_cache.return_value.__getitem__.assert_called_once_with("postgresql")
|
1041 |
| - _snap_package.ensure.assert_called_once_with(snap.SnapState.Latest, revision=42) |
| 1049 | + _snap_package.ensure.assert_called_once_with( |
| 1050 | + snap.SnapState.Latest, revision="42", channel="latest/test" |
| 1051 | + ) |
1042 | 1052 | _snap_package.hold.assert_called_once_with()
|
1043 | 1053 |
|
1044 | 1054 | # Test without refresh
|
1045 | 1055 | _snap_cache.reset_mock()
|
1046 | 1056 | _snap_package.reset_mock()
|
1047 |
| - self.charm._install_snap_packages([("postgresql", {"revision": 42})]) |
| 1057 | + self.charm._install_snap_packages( |
| 1058 | + [("postgresql", {"revision": {platform.machine(): "42"}})] |
| 1059 | + ) |
1048 | 1060 | _snap_cache.assert_called_once_with()
|
1049 | 1061 | _snap_cache.return_value.__getitem__.assert_called_once_with("postgresql")
|
1050 | 1062 | _snap_package.ensure.assert_not_called()
|
1051 | 1063 | _snap_package.hold.assert_not_called()
|
1052 | 1064 |
|
| 1065 | + # test missing architecture |
| 1066 | + _snap_cache.reset_mock() |
| 1067 | + _snap_package.reset_mock() |
| 1068 | + _snap_package.present = True |
| 1069 | + with self.assertRaises(KeyError): |
| 1070 | + self.charm._install_snap_packages( |
| 1071 | + [("postgresql", {"revision": {"missingarch": "42"}})], |
| 1072 | + refresh=True, |
| 1073 | + ) |
| 1074 | + _snap_cache.assert_called_once_with() |
| 1075 | + _snap_cache.return_value.__getitem__.assert_called_once_with("postgresql") |
| 1076 | + assert not _snap_package.ensure.called |
| 1077 | + assert not _snap_package.hold.called |
| 1078 | + |
1053 | 1079 | @patch(
|
1054 | 1080 | "subprocess.check_call",
|
1055 | 1081 | side_effect=[None, subprocess.CalledProcessError(1, "fake command")],
|
|
0 commit comments