Ejemplo n.º 1
0
 def test_resolve_package_list_mixed_file_returns_Django(self):
     """file with "bad1, bad2 bad3 \n Django" returns ["Django"]"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "bad1, bad2 bad3 \n Django"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             Package.resolve_package_list(self.venv, kwargs), ['Django'])
Ejemplo n.º 2
0
 def test_resolve_package_list_2_packs_in_file_1_bad(self):
     """Check file with contents "Django, Nonsense" returns ['Django']"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "Django, Nonsense"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             Package.resolve_package_list(self.venv, kwargs), ['Django'])
Ejemplo n.º 3
0
 def test_resolve_package_list_empty_file_returns_empty_list(self):
     """Empty file returns []"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = ""  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 4
0
 def test_resolve_package_list_2_packs_in_file_1_bad(self):
     """Check file with contents "Django, Nonsense" returns ['Django']"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "Django, Nonsense"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                          ['Django'])
Ejemplo n.º 5
0
 def test_resolve_package_list_two_packages_in_file(self):
     """file with 'Django pycrypto' returns ['Django', 'pycrypto']"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "Django pycrypto"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(['Django', 'pycrypto']))
Ejemplo n.º 6
0
 def test_resolve_package_list_empty_file_returns_empty_list(self):
     """Empty file returns []"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = ""  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                          [])
Ejemplo n.º 7
0
 def test_resolve_package_list_mixed_file_returns_Django(self):
     """file with "bad1, bad2 bad3 \n Django" returns ["Django"]"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "bad1, bad2 bad3 \n Django"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                          ['Django'])
Ejemplo n.º 8
0
 def test_resolve_package_list_bad_data_ints(self):
     """ Given bad data INTS, copes gracefully.  """
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': [1]}
     data = "2"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                          [])
Ejemplo n.º 9
0
 def test_resolve_package_list_bad_data_obj(self):
     """ Given bad data INTS, copes gracefully.  """
     kwargs = {'package_file': 'FakePackageFile.txt',
               'packages': [type, object]}
     data = "2"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 10
0
 def test_resolve_package_list_same_package_from_file_and_cmd_line(self):
     """Duplicates are taken care of; Django from file and cmd returns just
     ['Django']"""
     kwargs = {'package_file': 'FakePackageFile.txt',
               'packages': ['Django']}
     data = "Django"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             Package.resolve_package_list(self.venv, kwargs), ['Django'])
Ejemplo n.º 11
0
 def test_resolve_package_list_packages_from_file_and_cmd_line(self):
     """Django from cmd, pycrypt from file returns ['Django', 'pycrypt'"""
     kwargs = {'package_file': 'FakePackageFile.txt',
               'packages': ['Django']}
     data = "pycrypto"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(['Django', 'pycrypto']))
Ejemplo n.º 12
0
 def test_resolve_package_list_all_nodes_from_package_file(self):
     """Check all nodes return as list when given as list from file"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     all_nodes = [x[0] for x in self.nodes]
     data = " ".join(all_nodes)
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data), create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(all_nodes))
Ejemplo n.º 13
0
 def test_resolve_package_list_two_packages_in_file(self):
     """file with 'Django pycrypto' returns ['Django', 'pycrypto']"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     data = "Django pycrypto"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(['Django', 'pycrypto']))
Ejemplo n.º 14
0
 def test_resolve_package_list_all_nodes_from_package_file(self):
     """Check all nodes return as list when given as list from file"""
     kwargs = {'package_file': 'FakePackageFile.txt', 'packages': []}
     all_nodes = [x[0] for x in self.nodes]
     data = " ".join(all_nodes)
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(all_nodes))
Ejemplo n.º 15
0
 def test_resolve_package_list_same_package_from_file_and_cmd_line(self):
     """Duplicates are taken care of; Django from file and cmd returns just
     ['Django']"""
     kwargs = {
         'package_file': 'FakePackageFile.txt',
         'packages': ['Django']
     }
     data = "Django"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                          ['Django'])
Ejemplo n.º 16
0
 def test_resolve_package_list_packages_from_file_and_cmd_line(self):
     """Django from cmd, pycrypt from file returns ['Django', 'pycrypt'"""
     kwargs = {
         'package_file': 'FakePackageFile.txt',
         'packages': ['Django']
     }
     data = "pycrypto"  # mocked file data
     with patch('{}.open'.format("magellan.package_utils"),
                mock_open(read_data=data),
                create=True):
         self.assertEqual(
             sorted(Package.resolve_package_list(self.venv, kwargs)),
             sorted(['Django', 'pycrypto']))
Ejemplo n.º 17
0
 def test_resolve_package_list_two_packages_one_bad(self):
     """Check ['Django', 'NONSENSE']  returns just Django"""
     kwargs = {'package_file': None, 'packages': ['Django', 'NONSENSE']}
     self.assertEqual(
         Package.resolve_package_list(self.venv, kwargs), ['Django'])
Ejemplo n.º 18
0
 def test_resolve_package_list_two_packages_all_bad(self):
     """Check ['bad1', 'bad2'] return []"""
     kwargs = {'package_file': None, 'packages': ['bad1', 'bad2']}
     self.assertEqual(
         Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 19
0
 def test_resolve_package_list_no_packages(self):
     """Return [] if given nothing"""
     kwargs = {'package_file': None, 'packages': []}
     self.assertEqual(
         Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 20
0
 def test_resolve_package_list_no_packages(self):
     """Return [] if given nothing"""
     kwargs = {'package_file': None, 'packages': []}
     self.assertEqual(Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 21
0
 def test_resolve_package_list_two_packages_all_bad(self):
     """Check ['bad1', 'bad2'] return []"""
     kwargs = {'package_file': None, 'packages': ['bad1', 'bad2']}
     self.assertEqual(Package.resolve_package_list(self.venv, kwargs), [])
Ejemplo n.º 22
0
 def test_resolve_package_list_two_packages_one_bad(self):
     """Check ['Django', 'NONSENSE']  returns just Django"""
     kwargs = {'package_file': None, 'packages': ['Django', 'NONSENSE']}
     self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                      ['Django'])
Ejemplo n.º 23
0
 def test_resolve_package_list_two_packages(self):
     """Check ['Django', 'whowhatwhere'] resolve from cmd line"""
     kwargs = {'package_file': None, 'packages': ['Django', 'whowhatwhere']}
     self.assertEqual(
         sorted(Package.resolve_package_list(self.venv, kwargs)),
         sorted(['Django', 'whowhatwhere']))
Ejemplo n.º 24
0
 def test_resolve_package_list_two_packages(self):
     """Check ['Django', 'whowhatwhere'] resolve from cmd line"""
     kwargs = {'package_file': None, 'packages': ['Django', 'whowhatwhere']}
     self.assertEqual(
         sorted(Package.resolve_package_list(self.venv, kwargs)),
         sorted(['Django', 'whowhatwhere']))
Ejemplo n.º 25
0
def _go(venv_name, **kwargs):
    """Main script of magellan program.

    If an environment is passed in but doesn't exist, then exit.
    If no environment is passed in, do analysis on current env.

    If packages are specified then do package specific analysis.
    Otherwise perform general analysis on environment.
    """

    print_col = kwargs.get('colour')  # print in colour

    # Environment Setup
    if not os.path.exists(MagellanConfig.cache_dir) and MagellanConfig.caching:
        MagellanConfig.setup_cache()

    if kwargs['list_all_versions']:
        for p in kwargs['list_all_versions']:
            print(p[0])
            all_package_versions = PyPIHelper.all_package_versions_on_pypi(
                p[0])
            pprint(natsorted(all_package_versions))
        sys.exit()

    venv = Environment(venv_name)
    venv.magellan_setup_go_env(kwargs)

    requirements_file = kwargs.get('requirements_file')

    package_list = Package.resolve_package_list(venv, kwargs)
    packages = {p.lower(): venv.all_packages[p.lower()] for p in package_list}

    if kwargs['outdated']:
        if package_list:
            Package.check_outdated_packages(packages, print_col)
        elif requirements_file:
            print("Analysing requirements file for outdated packages.")
            Requirements.check_outdated_requirements_file(
                requirements_file, pretty=print_col)
        else:  # if nothing passed in then check local env.
            Package.check_outdated_packages(venv.all_packages, print_col)

        sys.exit()

    if kwargs['get_dependencies']:  # -D
        DepTools.acquire_and_display_dependencies(
            kwargs['get_dependencies'], print_col)

    if kwargs['get_ancestors']:  # -A
        ancestor_dictionary = \
            DepTools.get_ancestors_of_packages(
                kwargs['get_ancestors'], venv, print_col)

    if kwargs['get_descendants']:  # -Z
        descendants_dictionary = \
            DepTools.get_descendants_of_packages(
                kwargs['get_descendants'], venv, print_col)

    if kwargs['package_conflicts']:  # -P
        addition_conflicts, upgrade_conflicts = \
            DepTools.process_package_conflicts(
                kwargs['package_conflicts'], venv, print_col)

    if kwargs['detect_env_conflicts']:  # -C
        cur_env_conflicts = DepTools.highlight_conflicts_in_current_env(
            venv.nodes, venv.package_requirements, print_col)

    if kwargs['compare_env_to_req_file']:  # -R
        if not requirements_file:
            print("Please specify a requirements file with -r <file>")
        else:
            same, verdiff, req_only, env_only = \
                Requirements.compare_req_file_to_env(requirements_file, venv)
            Requirements.print_req_env_comp_lists(
                same, verdiff, req_only, env_only, print_col)
Ejemplo n.º 26
0
 def test_resolve_package_list_single_package_Django(self):
     """Check package "Django" is valid from command line."""
     kwargs = {'package_file': None, 'packages': ['Django']}
     self.assertEqual(Package.resolve_package_list(self.venv, kwargs),
                      ['Django'])
Ejemplo n.º 27
0
def _go(venv_name, **kwargs):
    """Main script of magellan program.

    If an environment is passed in but doesn't exist, then exit.
    If no environment is passed in, do analysis on current env.

    If packages are specified then do package specific analysis.
    Otherwise perform general analysis on environment.
    """

    print_col = kwargs.get('colour')  # print in colour

    # Environment Setup
    if not os.path.exists(MagellanConfig.cache_dir) and MagellanConfig.caching:
        MagellanConfig.setup_cache()

    if kwargs['list_all_versions']:
        for p in kwargs['list_all_versions']:
            print(p[0])
            all_package_versions = PyPIHelper.all_package_versions_on_pypi(
                p[0])
            pprint(natsorted(all_package_versions))
        sys.exit()

    venv = Environment(venv_name)
    venv.magellan_setup_go_env(kwargs)

    requirements_file = kwargs.get('requirements_file')

    package_list = Package.resolve_package_list(venv, kwargs)
    packages = {p.lower(): venv.all_packages[p.lower()] for p in package_list}

    if kwargs['outdated']:
        if package_list:
            Package.check_outdated_packages(packages, print_col)
        elif requirements_file:
            print("Analysing requirements file for outdated packages.")
            Requirements.check_outdated_requirements_file(requirements_file,
                                                          pretty=print_col)
        else:  # if nothing passed in then check local env.
            Package.check_outdated_packages(venv.all_packages, print_col)

        sys.exit()

    if kwargs['get_dependencies']:  # -D
        DepTools.acquire_and_display_dependencies(kwargs['get_dependencies'],
                                                  print_col)

    if kwargs['get_ancestors']:  # -A
        ancestor_dictionary = \
            DepTools.get_ancestors_of_packages(
                kwargs['get_ancestors'], venv, print_col)

    if kwargs['get_descendants']:  # -Z
        descendants_dictionary = \
            DepTools.get_descendants_of_packages(
                kwargs['get_descendants'], venv, print_col)

    if kwargs['package_conflicts']:  # -P
        addition_conflicts, upgrade_conflicts = \
            DepTools.process_package_conflicts(
                kwargs['package_conflicts'], venv, print_col)

    if kwargs['detect_env_conflicts']:  # -C
        cur_env_conflicts = DepTools.highlight_conflicts_in_current_env(
            venv.nodes, venv.package_requirements, print_col)

    if kwargs['compare_env_to_req_file']:  # -R
        if not requirements_file:
            print("Please specify a requirements file with -r <file>")
        else:
            same, verdiff, req_only, env_only = \
                Requirements.compare_req_file_to_env(requirements_file, venv)
            Requirements.print_req_env_comp_lists(same, verdiff, req_only,
                                                  env_only, print_col)
Ejemplo n.º 28
0
 def test_resolve_package_list_single_package_Django(self):
     """Check package "Django" is valid from command line."""
     kwargs = {'package_file': None, 'packages': ['Django']}
     self.assertEqual(
         Package.resolve_package_list(self.venv, kwargs), ['Django'])