Exemple #1
0
def run_command(command, env_fname, packages, run=1):
    # Run the command
    if run > 3:
        return

    log('Executing:\n' + command + "\n")
    install_task = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE)
    # Extract the error (if any)
    _, error_string = install_task.communicate()
    error_string = error_string.decode('utf8', errors='ignore')
    if error_string:
        print(error_string, file=stderr)
        # Check for errors
        error, pkgs = check_error(error_string, packages=packages)
        pip_failed = check_pip_failed(error_string)

        if error:
            log('Installation failed!', error=True)
            log('Ignoring ' + error + ' dependencies and trying again...\n')
            sleep(1)
            sanitize_envfile(env_fname=env_fname, pkgs=pkgs)
            return run_command(command=command, env_fname=env_fname, packages=packages, run=run+1)

        elif pip_failed:
            # TODO: Extract env details and run pip sub-command.
            # pip_packages = extract_pip_packages(env_fname=env_fname)
            return False
    else:
        # Print beta warning and github link
        log(ISSUES_MSG)
        return True
Exemple #2
0
    def test_check_error_no_packages(self):
        error_str = '''ResolvePackageNotFound: 
                        - mixpanel=1.11.0'''
        packages = []
        error, pkgs = check_error(error_str=error_str, packages=packages)

        self.assertEqual(error, 'unresolved')
        self.assertListEqual(pkgs, [])
Exemple #3
0
    def test_check_error(self):

        packages = extract_env_packages(env_fname='environment-test.yml')

        error_str = '''ResolvePackageNotFound: 
                        - mixpanel=1.11.0'''
        error_str2 = '''UnsatisfiableError: 
                                - sigmasix=1.91.0'''
        error_str3 = '''AnyOtherException: 
                                - sigmasix=1.91.0'''
        error, pkgs = check_error(error_str=error_str, packages=packages)
        error2, pkgs2 = check_error(error_str=error_str2, packages=packages)
        error3, pkgs3 = check_error(error_str=error_str3, packages=packages)

        self.assertEqual(error, 'unresolved')
        self.assertListEqual(pkgs, ['mixpanel=1.11.0'])
        self.assertEqual(error2, 'unsatisfiable')
        self.assertListEqual(pkgs2, ['sigmasix=1.91.0'])
        self.assertIsNone(error3)
        self.assertListEqual(pkgs3, [])
def test_check_error_no_packages():
    error_str = '''ResolvePackageNotFound:
                    - mixpanel=1.11.0'''
    packages = []
    assert check_error(error_str=error_str, packages=[]) == ('unresolved', [])
def test_check_error(error_str, expected_result):
    with fake_envfile():
        packages = extract_env_packages(env_fname='environment.yml')
        assert check_error(error_str=error_str,
                           packages=packages) == expected_result