Ejemplo n.º 1
0
def checkVersions():
    """
    Method to check if versions of modules are new enough. Will call sys.exit
    if they are not in the range specified.
    @ In, None
    @ Out, None
  """
    # import library handler (although it is bad practice to import inside a function)
    frameworkDir = findFramework()
    scriptDir = os.path.join(frameworkDir, '..', 'scripts')
    if scriptDir not in sys.path:
        remove = True
        sys.path.append(scriptDir)
    else:
        remove = False
    try:
        import library_handler as LH
    except ModuleNotFoundError:
        print(
            "ERROR: Unable to check library versions because library_handler not found"
        )
        return
    if remove:
        sys.path.pop(sys.path.index(scriptDir))
    # if libraries are not to be checked, we're done here
    if not LH.checkVersions():
        return
    # otherwise, we check for incorrect libraries
    missing, notQA = LH.checkLibraries()
    if missing:
        print(
            'ERROR: Some required Python libraries are missing but required to run RAVEN as configured:'
        )
        for lib, version in missing:
            # report the missing library
            msg = f'  -> MISSING: {lib}'
            # add the required version if applicable
            if version is not None:
                msg += f' version {version}'
            print(msg)
    if notQA:
        print(
            'ERROR: Some required Python libraries have incorrect versions for running RAVEN as configured:'
        )
        for lib, found, need in notQA:
            print(
                f'  -> WRONG VERSION: lib "{lib}" need "{need}" but found "{found}"'
            )
    if missing or notQA:
        print(
            'Try installing libraries using instructions on RAVEN repository wiki at '
            +
            'https://github.com/idaholab/raven/wiki/Installing_RAVEN_Libraries.'
        )
        sys.exit(-4)
    else:
        print('RAVEN Python dependencies located and checked.')
Ejemplo n.º 2
0
def checkVersions():
    """
    Method to check if versions of modules are new enough. Will call sys.exit
    if they are not in the range specified.
    @ In, None
    @ Out, None
  """
    # if libraries are not to be checked, we're done here
    if not LH.checkVersions():
        return
    # otherwise, we check for incorrect libraries
    missing, notQA = LH.checkLibraries()
    if missing:
        print(
            'ERROR: Some required Python libraries are missing but required to run RAVEN as configured:'
        )
        for lib, version in missing:
            # report the missing library
            msg = '  -> MISSING: {}'.format(lib)
            # add the required version if applicable
            if version is not None:
                msg += ' version {}'.format(version)
            print(msg)
    if notQA:
        print(
            'ERROR: Some required Python libraries have incorrect versions for running RAVEN as configured:'
        )
        for lib, found, need in notQA:
            print(
                '  -> WRONG VERSION: lib "{}" need "{}" but found "{}"'.format(
                    lib, found, need))
    if missing or notQA:
        print(
            'Try installing libraries using instructions on RAVEN repository wiki at '
            +
            'https://github.com/idaholab/raven/wiki/Installing_RAVEN_Libraries.'
        )
        sys.exit(-4)
    else:
        print('RAVEN Python dependencies located and checked.')
Ejemplo n.º 3
0
# Be aware that if this file changes its location, this variable should also be
#  changed.
myDir = os.path.dirname(os.path.realpath(__file__))
RAVENDIR = os.path.abspath(os.path.join(myDir, '..', '..', '..', 'framework'))

#Need to add the directory for AMSC for doing module checks.
os.environ["PYTHONPATH"] = os.path.join(RAVENDIR, 'contrib') +\
  os.pathsep + os.environ.get("PYTHONPATH", "")

scriptDir = os.path.abspath(os.path.join(RAVENDIR, '..', 'scripts'))
sys.path.append(scriptDir)
import library_handler
sys.path.pop()

_missingModules, _notQAModules = library_handler.checkLibraries()
_checkVersions = library_handler.checkVersions()

class RavenFramework(Tester):
  """
  RavenFramework is the class to use for testing standard raven inputs.
  """

  @staticmethod
  def get_valid_params():
    """
      Returns the parameters that can be used for this class.
      @ In, None
      @ Out, params, _ValidParameters, return the parameters.
    """
    params = Tester.get_valid_params()
    params.add_required_param('input', "The input file to use for this test.")
Ejemplo n.º 4
0
    def check_runnable(self):
        """
      Checks if this test can be run.
      @ In, None
      @ Out, check_runnable, boolean, If True can run this test.
    """
        i = 0
        if len(self.minimum_libraries) % 2:
            self.set_skip(
                'skipped (libraries are not matched to versions numbers: ' +
                str(self.minimum_libraries) + ')')
            return False
        while i < len(self.minimum_libraries):
            libraryName = self.minimum_libraries[i]
            libraryVersion = self.minimum_libraries[i + 1]
            found, _, actualVersion = library_handler.checkSingleLibrary(
                libraryName, 'check')
            if not found:
                self.set_skip('skipped (Unable to import library: "' +
                              libraryName + '")')
                return False
            if distutils.version.LooseVersion(actualVersion) < \
               distutils.version.LooseVersion(libraryVersion):
                self.set_skip('skipped (Outdated library: "' + libraryName +
                              '")')
                return False
            i += 2

        if len(self.required_executable) > 0:
            try:
                argsList = [self.required_executable]
                argsList.extend(self.required_executable_check_flags)
                retValue = subprocess.call(argsList, stdout=subprocess.PIPE)
                if retValue != 0:
                    self.set_skip('skipped (Failing executable: "' +
                                  self.required_executable + '")')
                    return False
            except Exception:
                self.set_skip('skipped (Error when trying executable: "' +
                              self.required_executable + '")')
                return False

        if self.specs['requires_swig2'] and not RavenPython.hasSwig2:
            self.set_skip('skipped (No swig 2.0 found)')
            return False
        missing, notQa = library_handler.checkLibraries()
        if len(missing) > 0:
            self.set_fail('skipped (Missing python modules: ' +
                          " ".join(missing) + " PYTHONPATH=" +
                          os.environ.get("PYTHONPATH", "") + ')')
            return False
        if len(notQa) > 0 and library_handler.checkVersions():
            self.set_fail('skipped (Incorrectly versioned python modules: ' +
                          " ".join(['{}-{}'.format(*m)
                                    for m in notQa]) + " PYTHONPATH=" +
                          os.environ.get("PYTHONPATH", "") + ')')
            return False
        for lib in self.required_libraries:
            found, _, _ = library_handler.checkSingleLibrary(lib)
            if not found:
                self.set_skip('skipped (Unable to import library: "' + lib +
                              '")')
                return False
        if self.specs['python3_only'] and not library_handler.inPython3():
            self.set_skip('Python 3 only')
            return False

        return True