示例#1
0
    def test_list_pkgs_no_context(self):
        """
        Tests removed implementation
        """

        expected_pkgs = {
            "zsh": "5.7.1",
            "homebrew/cask/macvim": "8.1.151",
            "homebrew/cask-fonts/font-firacode-nerd-font": "2.0.0",
        }

        with patch(
            "salt.modules.mac_brew_pkg._call_brew", self.custom_call_brew
        ), patch.dict(
            mac_brew.__salt__,
            {
                "pkg_resource.add_pkg": self.custom_add_pkg,
                "pkg_resource.sort_pkglist": MagicMock(),
            },
        ), patch.object(
            mac_brew, "_list_pkgs_from_context"
        ) as list_pkgs_context_mock:
            pkgs = mac_brew.list_pkgs(versions_as_list=True, use_context=False)
            list_pkgs_context_mock.assert_not_called()
            list_pkgs_context_mock.reset_mock()

            pkgs = mac_brew.list_pkgs(versions_as_list=True, use_context=False)
            list_pkgs_context_mock.assert_not_called()
            list_pkgs_context_mock.reset_mock()
示例#2
0
 def test_list_pkgs_versions_true(self):
     """
     Tests if pkg.list_pkgs is already in context and is a list
     """
     mock_context = {"foo": ["bar"]}
     with patch.dict(mac_brew.__context__, {"pkg.list_pkgs": mock_context}):
         self.assertEqual(mac_brew.list_pkgs(versions_as_list=True), mock_context)
示例#3
0
 def test_list_pkgs_versions_true(self):
     '''
     Tests if pkg.list_pkgs is already in context and is a list
     '''
     mock_context = {'foo': ['bar']}
     with patch.dict(mac_brew.__context__, {'pkg.list_pkgs': mock_context}):
         self.assertEqual(mac_brew.list_pkgs(versions_as_list=True),
                          mock_context)
示例#4
0
def test_list_pkgs_homebrew_cask_pakages():
    """
    Tests if pkg.list_pkgs list properly homebrew cask packages
    """
    expected_pkgs = {
        "homebrew/cask/day-o": "3.0.1",
        "homebrew/cask/iterm2": "3.4.3",
        "jq": "1.6",
        "xz": "5.2.5",
    }

    with patch("salt.modules.mac_brew_pkg._call_brew", custom_call_brew), patch.dict(
        mac_brew.__salt__,
        {
            "pkg_resource.add_pkg": custom_add_pkg,
            "pkg_resource.sort_pkglist": MagicMock(),
        },
    ):
        assert mac_brew.list_pkgs(versions_as_list=True) == expected_pkgs
示例#5
0
 def test_list_pkgs_removed(self):
     """
     Tests removed implementation
     """
     self.assertEqual(mac_brew.list_pkgs(removed=True), {})
示例#6
0
def test_list_pkgs_removed():
    """
    Tests removed implementation
    """
    assert mac_brew.list_pkgs(removed=True) == {}
示例#7
0
    def test_list_pkgs_homebrew_cask_pakages(self):
        '''
        Tests if pkg.list_pkgs list properly homebrew cask packages
        '''
        def custom_call_brew(cmd, failhard=True):
            result = dict()
            if cmd == 'info --json=v1 --installed':
                result = {
                    'stdout':
                    '[{"name":"zsh","full_name":"zsh","oldname":null,'
                    '"aliases":[],"homepage":"https://www.zsh.org/",'
                    '"versions":{"stable":"5.7.1","devel":null,"head":"HEAD","bottle":true},'
                    '"installed":[{"version":"5.7.1","used_options":[],'
                    '"built_as_bottle":true,"poured_from_bottle":true,'
                    '"runtime_dependencies":[{"full_name":"ncurses","version":"6.1"},'
                    '{"full_name":"pcre","version":"8.42"}],'
                    '"installed_as_dependency":false,"installed_on_request":true}]}]',
                    'stderr':
                    '',
                    'retcode':
                    0
                }
            elif cmd == 'cask list --versions':
                result = {
                    'stdout': 'macvim 8.1.151\nfont-firacode-nerd-font 2.0.0',
                    'stderr': '',
                    'retcode': 0
                }
            elif cmd == 'cask info macvim':
                result = {
                    'stdout':
                    'macvim: 8.1.1517,156 (auto_updates)\n'
                    'https://github.com/macvim-dev/macvim\n'
                    '/usr/local/Caskroom/macvim/8.1.151 (64B)\n'
                    'From: https://github.com/Homebrew/homebrew-cask/blob/master/Casks/macvim.rb\n'
                    '==> Name\n'
                    'MacVim',
                    'stderr':
                    '',
                    'retcode':
                    0
                }
            elif cmd == 'cask info font-firacode-nerd-font':
                result = {
                    'stdout':
                    'font-firacode-nerd-font: 2.0.0\n'
                    'https://github.com/ryanoasis/nerd-fonts\n'
                    '/usr/local/Caskroom/font-firacode-nerd-font/2.0.0 (35 files, 64.8MB)\n'
                    'From: https://github.com/Homebrew/homebrew-cask-fonts/blob/master/Casks/font-firacode-nerd-font.rb\n'
                    '==> Name\n'
                    'FuraCode Nerd Font (FiraCode)',
                    'stderr':
                    '',
                    'retcode':
                    ''
                }

            return result

        def custom_add_pkg(ret, name, newest_version):
            ret[name] = newest_version
            return ret

        expected_pkgs = {
            'zsh': '5.7.1',
            'homebrew/cask/macvim': '8.1.151',
            'homebrew/cask-fonts/font-firacode-nerd-font': '2.0.0'
        }

        with patch('salt.modules.mac_brew_pkg._call_brew', custom_call_brew),\
            patch.dict(mac_brew.__salt__, {'pkg_resource.add_pkg': custom_add_pkg,
                                           'pkg_resource.sort_pkglist': MagicMock()}):
            self.assertEqual(mac_brew.list_pkgs(versions_as_list=True),
                             expected_pkgs)
示例#8
0
    def test_list_pkgs_homebrew_cask_pakages(self):
        """
        Tests if pkg.list_pkgs list properly homebrew cask packages
        """
        def custom_call_brew(*cmd, failhard=True):
            result = dict()
            if cmd == ("info", "--json=v2", "--installed"):
                result = {
                    "stdout":
                    textwrap.dedent("""\
                        {
                          "casks": [
                            {
                              "appcast": null,
                              "artifacts": [
                                [
                                  "Day-3.0/Day-O.app"
                                ],
                                {
                                  "signal": {},
                                  "trash": "~/Library/Preferences/com.shauninman.Day-O.plist"
                                }
                              ],
                              "auto_updates": null,
                              "caveats": null,
                              "conflicts_with": null,
                              "container": null,
                              "depends_on": {},
                              "desc": null,
                              "homepage": "https://shauninman.com/archive/2020/04/08/day_o_mac_menu_bar_clock_for_catalina",
                              "installed": "3.0.1",
                              "name": [
                                "Day-O"
                              ],
                              "outdated": false,
                              "sha256": "4963f503c1e47bfa0f8bdbbbe5694d6a7242d298fb44ff68af80d42f1eaebaf9",
                              "token": "day-o",
                              "url": "https://shauninman.com/assets/downloads/Day-3.0.zip",
                              "version": "3.0.1"
                            },
                            {
                              "appcast": null,
                              "artifacts": [
                                [
                                  "iTerm.app"
                                ],
                                {
                                  "signal": {},
                                  "trash": [
                                    "~/Library/Application Support/iTerm",
                                    "~/Library/Application Support/iTerm2",
                                    "~/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/com.googlecode.iterm2.sfl*",
                                    "~/Library/Caches/com.googlecode.iterm2",
                                    "~/Library/Preferences/com.googlecode.iterm2.plist",
                                    "~/Library/Saved Application State/com.googlecode.iterm2.savedState"
                                  ]
                                }
                              ],
                              "auto_updates": true,
                              "caveats": null,
                              "conflicts_with": {
                                "cask": [
                                  "iterm2-beta"
                                ]
                              },
                              "container": null,
                              "depends_on": {
                                "macos": {
                                  ">=": [
                                    "10.12"
                                  ]
                                }
                              },
                              "desc": "Terminal emulator as alternative to Apple's Terminal app",
                              "homepage": "https://www.iterm2.com/",
                              "installed": "3.4.3",
                              "name": [
                                "iTerm2"
                              ],
                              "outdated": false,
                              "sha256": "9ed73844838bddf797eadf37e5f7da3771308c3f74d38cd422c18eebaaa8f6b9",
                              "token": "iterm2",
                              "url": "https://iterm2.com/downloads/stable/iTerm2-3_4_3.zip",
                              "version": "3.4.3"
                            }
                          ],
                          "formulae": [
                            {
                              "aliases": [],
                              "bottle": {
                                "stable": {
                                  "cellar": ":any",
                                  "files": {
                                    "arm64_big_sur": {
                                      "sha256": "674b3ae41c399f1e8e44c271b0e6909babff9fcd2e04a2127d25e2407ea4dd33",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.arm64_big_sur.bottle.1.tar.gz"
                                    },
                                    "big_sur": {
                                      "sha256": "bf0f8577632af7b878b6425476f5b1ab9c3bf66d65affb0c455048a173a0b6bf",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.big_sur.bottle.1.tar.gz"
                                    },
                                    "catalina": {
                                      "sha256": "820a3c85fcbb63088b160c7edf125d7e55fc2c5c1d51569304499c9cc4b89ce8",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.catalina.bottle.1.tar.gz"
                                    },
                                    "high_sierra": {
                                      "sha256": "dffcffa4ea13e8f0f2b45c5121e529077e135ae9a47254c32182231662ee9b72",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.high_sierra.bottle.1.tar.gz"
                                    },
                                    "mojave": {
                                      "sha256": "71f0e76c5b22e5088426c971d5e795fe67abee7af6c2c4ae0cf4c0eb98ed21ff",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.mojave.bottle.1.tar.gz"
                                    },
                                    "sierra": {
                                      "sha256": "bb4d19dc026c2d72c53eed78eaa0ab982e9fcad2cd2acc6d13e7a12ff658e877",
                                      "url": "https://homebrew.bintray.com/bottles/jq-1.6.sierra.bottle.1.tar.gz"
                                    }
                                  },
                                  "prefix": "/usr/local",
                                  "rebuild": 1,
                                  "root_url": "https://homebrew.bintray.com/bottles"
                                }
                              },
                              "bottle_disabled": false,
                              "build_dependencies": [],
                              "caveats": null,
                              "conflicts_with": [],
                              "dependencies": [
                                "oniguruma"
                              ],
                              "deprecated": false,
                              "deprecation_date": null,
                              "deprecation_reason": null,
                              "desc": "Lightweight and flexible command-line JSON processor",
                              "disable_date": null,
                              "disable_reason": null,
                              "disabled": false,
                              "full_name": "jq",
                              "homepage": "https://stedolan.github.io/jq/",
                              "installed": [
                                {
                                  "built_as_bottle": true,
                                  "installed_as_dependency": false,
                                  "installed_on_request": true,
                                  "poured_from_bottle": true,
                                  "runtime_dependencies": [
                                    {
                                      "full_name": "oniguruma",
                                      "version": "6.9.6"
                                    }
                                  ],
                                  "used_options": [],
                                  "version": "1.6"
                                }
                              ],
                              "keg_only": false,
                              "license": "MIT",
                              "linked_keg": "1.6",
                              "name": "jq",
                              "oldname": null,
                              "optional_dependencies": [],
                              "options": [],
                              "outdated": false,
                              "pinned": false,
                              "recommended_dependencies": [],
                              "requirements": [],
                              "revision": 0,
                              "urls": {
                                "stable": {
                                  "revision": null,
                                  "tag": null,
                                  "url": "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-1.6.tar.gz"
                                }
                              },
                              "uses_from_macos": [],
                              "version_scheme": 0,
                              "versioned_formulae": [],
                              "versions": {
                                "bottle": true,
                                "head": "HEAD",
                                "stable": "1.6"
                              }
                            },
                            {
                              "aliases": [],
                              "bottle": {
                                "stable": {
                                  "cellar": ":any",
                                  "files": {
                                    "arm64_big_sur": {
                                      "sha256": "c84206005787304416ed81094bd3a0cdd2ae8eb62649db5a3a44fa14b276d09f",
                                      "url": "https://homebrew.bintray.com/bottles/xz-5.2.5.arm64_big_sur.bottle.tar.gz"
                                    },
                                    "big_sur": {
                                      "sha256": "4fbd4a9e3eb49c27e83bd125b0e76d386c0e12ae1139d4dc9e31841fb8880a35",
                                      "url": "https://homebrew.bintray.com/bottles/xz-5.2.5.big_sur.bottle.tar.gz"
                                    },
                                    "catalina": {
                                      "sha256": "2dcc8e0121c934d1e34ffdb37fcd70f0f7b5c2f4755f2f7cbcf360e9e54cb43b",
                                      "url": "https://homebrew.bintray.com/bottles/xz-5.2.5.catalina.bottle.tar.gz"
                                    },
                                    "high_sierra": {
                                      "sha256": "1491b2b20c40c3cb0b990f520768d7e876e4ab4a7dc1da9994d0150da34ba5c6",
                                      "url": "https://homebrew.bintray.com/bottles/xz-5.2.5.high_sierra.bottle.tar.gz"
                                    },
                                    "mojave": {
                                      "sha256": "44483961b5d2b535b0ece1936c9d40b4bc7d9c7281646cca0fb476291ab9d4dc",
                                      "url": "https://homebrew.bintray.com/bottles/xz-5.2.5.mojave.bottle.tar.gz"
                                    }
                                  },
                                  "prefix": "/usr/local",
                                  "rebuild": 0,
                                  "root_url": "https://homebrew.bintray.com/bottles"
                                }
                              },
                              "bottle_disabled": false,
                              "build_dependencies": [],
                              "caveats": null,
                              "conflicts_with": [],
                              "dependencies": [],
                              "deprecated": false,
                              "deprecation_date": null,
                              "deprecation_reason": null,
                              "desc": "General-purpose data compression with high compression ratio",
                              "disable_date": null,
                              "disable_reason": null,
                              "disabled": false,
                              "full_name": "xz",
                              "homepage": "https://tukaani.org/xz/",
                              "installed": [
                                {
                                  "built_as_bottle": true,
                                  "installed_as_dependency": true,
                                  "installed_on_request": false,
                                  "poured_from_bottle": true,
                                  "runtime_dependencies": [],
                                  "used_options": [],
                                  "version": "5.2.5"
                                }
                              ],
                              "keg_only": false,
                              "license": "GPL-2.0",
                              "linked_keg": "5.2.5",
                              "name": "xz",
                              "oldname": null,
                              "optional_dependencies": [],
                              "options": [],
                              "outdated": false,
                              "pinned": false,
                              "recommended_dependencies": [],
                              "requirements": [],
                              "revision": 0,
                              "urls": {
                                "stable": {
                                  "revision": null,
                                  "tag": null,
                                  "url": "https://downloads.sourceforge.net/project/lzmautils/xz-5.2.5.tar.gz"
                                }
                              },
                              "uses_from_macos": [],
                              "version_scheme": 0,
                              "versioned_formulae": [],
                              "versions": {
                                "bottle": true,
                                "head": null,
                                "stable": "5.2.5"
                              }
                            }
                          ]
                        }
                        """),
                    "stderr":
                    "",
                    "retcode":
                    0,
                }
            elif cmd == ("list", "--cask", "--versions"):
                result = {
                    "stdout": "day-o 3.0.1\niterm2 3.4.3",
                    "stderr": "",
                    "retcode": 0,
                }
            elif cmd == ("info", "--cask", "iterm2"):
                result = {
                    "stdout":
                    textwrap.dedent("""\
                        iterm2: 3.4.3 (auto_updates)
                        https://www.iterm2.com/
                        /usr/local/Caskroom/iterm2/3.4.3 (119B)
                        From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/iterm2.rb
                        ==> Name
                        iTerm2
                        ==> Description
                        Terminal emulator as alternative to Apple's Terminal app
                        ==> Artifacts
                        iTerm.app (App)
                        ==> Analytics
                        install: 18,869 (30 days), 61,676 (90 days), 233,825 (365 days)
                        """),
                    "stderr":
                    "",
                    "retcode":
                    0,
                }
            elif cmd == ("info", "--cask", "day-o"):
                result = {
                    "stdout":
                    textwrap.dedent("""\
                        day-o: 3.0.1
                        https://shauninman.com/archive/2020/04/08/day_o_mac_menu_bar_clock_for_catalina
                        /usr/local/Caskroom/day-o/3.0.1 (7.3KB)
                        From: https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/day-o.rb
                        ==> Name
                        Day-O
                        ==> Description
                        None
                        ==> Artifacts
                        Day-3.0/Day-O.app (App)
                        ==> Analytics
                        install: 30 (30 days), 96 (90 days), 525 (365 days)
                        """),
                    "stderr":
                    "",
                    "retcode":
                    "",
                }

            return result

        def custom_add_pkg(ret, name, newest_version):
            ret[name] = newest_version
            return ret

        expected_pkgs = {
            "homebrew/cask/day-o": "3.0.1",
            "homebrew/cask/iterm2": "3.4.3",
            "jq": "1.6",
            "xz": "5.2.5",
        }

        with patch("salt.modules.mac_brew_pkg._call_brew",
                   custom_call_brew), patch.dict(
                       mac_brew.__salt__,
                       {
                           "pkg_resource.add_pkg": custom_add_pkg,
                           "pkg_resource.sort_pkglist": MagicMock(),
                       },
                   ):
            self.assertEqual(mac_brew.list_pkgs(versions_as_list=True),
                             expected_pkgs)