Esempio n. 1
0
    def test_prepare_rpm(self):
        """
        Test the prepare rpm function
        especially in effect to generating correct package list wrt excluded_pkgs_rpm
        we assume the order of the lists doesn't matter (and sort to compare)
        """
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': [],
            'version': '1.0',
        }
        setup = vsc_setup()

        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), './testdata')
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)

        self.assertEqual(sorted(setup.SHARED_TARGET['packages']), ['vsc', 'vsc.test'])
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': ['vsc', 'vsc.test'],
            'version': '1.0',
        }
        setup = vsc_setup()
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)

        self.assertEqual(sorted(setup.SHARED_TARGET['packages']), ['vsc', 'vsc.test'])
Esempio n. 2
0
    def test_prepare_rpm(self):
        """
        Test the prepare rpm function
        especially in effect to generating correct package list wrt excluded_pkgs_rpm
        we assume the order of the lists doesn't matter (and sort to compare)
        """
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': [],
            'version': '1.0',
        }
        setup = vsc_setup()

        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)),
                              './testdata')
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)

        self.assertEqual(sorted(setup.SHARED_TARGET['packages']),
                         ['vsc', 'vsc.test'])
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': ['vsc', 'vsc.test'],
            'version': '1.0',
        }
        setup = vsc_setup()
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)

        self.assertEqual(sorted(setup.SHARED_TARGET['packages']),
                         ['vsc', 'vsc.test'])
Esempio n. 3
0
    def test_parse_target_dependencies(self):
        """Test injecting dependency_links in parse_target"""
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': [],
            'version': '1.0',
            'install_requires': [
                'vsc-config >= 2.0.0',
                'vsc-accountpage-clients',
                'vsc-base > 1.0.0'
            ],
        }
        setup = vsc_setup()
        # this is needed to pass the tests on Travis: travis will clone vsc-install through
        # https and it will be marked as non private repo, causing the dependency_links to be injected
        # with git+https, which is not correct in this test case.
        setup.private_repo = True
        new_target = setup.parse_target(package)

        dep_links_urls = [
            'git+ssh://[email protected]/hpcugent/vsc-accountpage-clients.git#egg=vsc-accountpage-clients',
            'git+ssh://[email protected]/hpcugent/vsc-accountpage-clients.git#egg=vsc-accountpage-clients',
            'git+ssh://[email protected]/hpcugent/vsc-config.git#egg=vsc-config-2.0.0',
            'git+ssh://[email protected]/hpcugent/vsc-config.git#egg=vsc-config-2.0.0',
            'git+ssh://[email protected]/hpcugent/vsc-base.git#egg=vsc-base-1.0.0',
            'git+ssh://[email protected]/hpcugent/vsc-base.git#egg=vsc-base-1.0.0',
        ]

        for url in dep_links_urls:
            self.assertIn(url, new_target['dependency_links'])

        package['install_requires'].append('vsc-utils<=1.0.0')
        self.assertRaises(ValueError, setup.parse_target, package)
Esempio n. 4
0
 def setUp(self):
     """Restore some possibly mocked functions"""
     vsc.install.headers._this_year = orig_this_year
     vsc.install.headers._write = orig_write
     vsc.install.shared_setup.get_license = orig_get_license
     self.setup = vsc_setup()
     super(TestHeaders, self).setUp()
Esempio n. 5
0
 def setUp(self):
     """Restore some possibly mocked functions"""
     vsc.install.headers._this_year = orig_this_year
     vsc.install.headers._write = orig_write
     vsc.install.shared_setup.get_license = orig_get_license
     self.setup = vsc_setup()
     super(TestHeaders, self).setUp()
Esempio n. 6
0
 def test_parse_target(self):
     """Test for parse target"""
     package = {
         'name': 'vsc-test',
         'excluded_pkgs_rpm': [],
     }
     setup = vsc_setup()
     klass = _fvs('vsc_bdist_rpm egg_info')
     # test to see if we don't fail on unknown/new cmdclasses
     orig_target = klass.SHARED_TARGET
     klass.SHARED_TARGET['cmdclass']['easy_install'] = object
     new_target = setup.parse_target(package)
     self.assertEquals(new_target['name'], 'vsc-test')
     klass.SHARED_TARGET = orig_target
Esempio n. 7
0
    def test_prepare_rpm(self):
        """
        Test the prepare rpm function
        especially in effect to generating correct package list wrt excluded_pkgs_rpm
        """
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': [],
        }
        setup = vsc_setup()

        libdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), './testdata')
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)
        self.assertEqual(setup.SHARED_TARGET['packages'], ['vsc', 'vsc.test'])
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': ['vsc', 'vsc.test'],
        }
        setup = vsc_setup()
        setup.REPO_LIB_DIR = libdir
        setup.prepare_rpm(package)
        self.assertEqual(setup.SHARED_TARGET['packages'], ['vsc', 'vsc.test'])
Esempio n. 8
0
    def test_parse_target(self):
        """Test for parse target"""
        package = {
            'name': 'vsc-test',
            'excluded_pkgs_rpm': [],
            'version': '1.0',
        }
        setup = vsc_setup()
        klass = _fvs('vsc_bdist_rpm egg_info')
        # test to see if we don't fail on unknown/new cmdclasses
        orig_target = klass.SHARED_TARGET
        klass.SHARED_TARGET['cmdclass']['easy_install'] = object
        new_target = setup.parse_target(package)

        self.assertEqual(new_target['name'], 'vsc-test')
        self.assertEqual(new_target['version'], '1.0')
        self.assertEqual(new_target['long_description_content_type'], 'text/markdown')
        self.assertTrue(new_target['long_description'].startswith("Description\n==========="))

        klass.SHARED_TARGET = orig_target
Esempio n. 9
0
 def setUp(self):
     """Create a vsc_setup instance for each test"""
     super(LicenseTest, self).setUp()
     self.setup = vsc_setup()
Esempio n. 10
0
 def setUp(self):
     """Cleanup after running a test."""
     self.orig_sys_argv = sys.argv
     self.setup = vsc_setup()
     super(CommonTest, self).setUp()
Esempio n. 11
0
 def setUp(self):
     """create a self.setup.instance for every test"""
     super(TestSetup, self).setUp()
     self.setup = vsc_setup()
Esempio n. 12
0
import glob
import os
import sys
import re

import submitfilter

#from vsc.install.shared_setup import REPO_BASE_DIR
from vsc.install.shared_setup import vsc_setup
from vsc.install.testing import TestCase
from vsc.jobs.pbs.submitfilter import SubmitFilter, get_warnings, reset_warnings, MEM_REGEXP
from vsc.jobs.pbs.clusterdata import DEFAULT_SERVER_CLUSTER
from vsc.utils.run import run_simple

REPO_BASE_DIR = vsc_setup().REPO_BASE_DIR

SCRIPTS = ["""#!/bin/sh
#
#
#PBS -N testrun
#PBS -o output_testrun.txt -l nodes=5:ppn=all,pmem=half
#PBS -e error_testrun.txt
#PBS -l walltime=11:25:00
#PBS -l pvmem=500mb
#PBS -m bea
#PBS -q short
#
cd $VSC_HOME
##logs to stderr by default, redirect this to stdout
./pfgw64s 42424242_1t.txt 2>> $VSC_SCRATCH/testrun.42424242.out
Esempio n. 13
0
import glob
import os
import sys
import re

import submitfilter

# from vsc.install.shared_setup import REPO_BASE_DIR
from vsc.install.shared_setup import vsc_setup
from vsc.install.testing import TestCase
from vsc.jobs.pbs.submitfilter import SubmitFilter, get_warnings, reset_warnings, MEM_REGEXP
from vsc.jobs.pbs.clusterdata import DEFAULT_SERVER_CLUSTER
from vsc.utils.run import run_simple

REPO_BASE_DIR = vsc_setup().REPO_BASE_DIR

SCRIPTS = [
    """#!/bin/sh
#
#
#PBS -N testrun
#PBS -o output_testrun.txt -l nodes=5:ppn=all,pmem=half
#PBS -e error_testrun.txt
#PBS -l walltime=11:25:00
#PBS -l pvmem=500mb
#PBS -m bea
#PBS -q short
#
cd $VSC_HOME
##logs to stderr by default, redirect this to stdout
Esempio n. 14
0
 def setUp(self):
     """Prepare for running test."""
     super(GeneralOptionTest, self).setUp()
     fancylogger.resetroot()
     self.setup = vsc_setup()
     self.orig_environ = copy.deepcopy(os.environ)
Esempio n. 15
0
 def setUp(self):
     """create a self.setup.instance for every test"""
     super(ProspectorTest, self).setUp()
     self.setup = vsc_setup()
Esempio n. 16
0
 def setUp(self):
     super(GeneralOptionTest, self).setUp()
     self.setup = vsc_setup()
Esempio n. 17
0
 def test_target(vfr, expected):
     setup = vsc_setup()
     new_target = setup.parse_target(pkg(vfr))
     self.assertEqual(new_target['install_requires'], expected)
Esempio n. 18
0
 def setUp(self):
     """Prepare for running test."""
     super(GeneralOptionTest, self).setUp()
     fancylogger.resetroot()
     self.setup = vsc_setup()
     self.orig_environ = copy.deepcopy(os.environ)
Esempio n. 19
0
def check_header(filename, script=False, write=False):
    """
    Given filename, extract the header, verify it

    if script: treat first line as shebang
    if write: adapt file to new header

    If the header contains line '### External compatible license',
    one assumes the license is correct and should not be controlled by check_header

    Return if header is different from expected or not
    """

    header, shebang = get_header(filename, script=script)
    header_end_pos = len(header)
    changed = False
    if shebang is not None:
        # original position
        header_end_pos += 1 + len(shebang)  # 1 is from splitted newline

        if 'python' in shebang and shebang != SHEBANG_ENV_PYTHON:
            log.info('python in shebang, forcing env python (header modified)')
            changed = True
            shebang = SHEBANG_ENV_PYTHON

    if re.search(r'^### External compatible license\s*$', header, re.M):
        log.info(
            'Header is an external compatible license. Leaving the header as-is.'
        )
        return changed

    # genheader
    # version is irrelevant
    setup = vsc_setup()
    name_url = setup.get_name_url(version='ALL_VERSIONS')
    license_name, _ = setup.get_license()

    # begin and endyear from copyright rule
    beginyear, endyear = begin_end_from_header(header)

    data = {
        'beginyear': beginyear,
        'endyear': endyear,
        'name': name_url['name'],
        'url': name_url['url'],
    }

    gen_header = gen_license_header(license_name, **data)

    # force encoding?
    reg_enc = ENCODING_REGEXP.search(header)
    if reg_enc:
        enc_line = reg_enc.group(
            1) + "\n"  # matches full line, but not newline
        gen_header = enc_line + gen_header

    if header != gen_header:
        log.info("Diff header vs gen_header\n" +
                 "".join(nicediff(header, gen_header)))
        changed = True

    if write and changed:
        log.info(
            'write enabled and different header. Going to modify file %s' %
            filename)
        wholetext = open(filename).read()
        newtext = ''
        if shebang is not None:
            newtext += shebang + "\n"
        newtext += gen_header
        newtext += wholetext[header_end_pos:]
        _write(filename, newtext)

    # return different or not
    return changed
Esempio n. 20
0
def check_header(filename, script=False, write=False):
    """
    Given filename, extract the header, verify it

    if script: treat first line as shebang
    if write: adapt file to new header

    If the header contains line '### External compatible license',
    one assumes the license is correct and should not be controlled by check_header

    Return if header is different from expected or not
    """

    header, orig_shebang = get_header(filename, script=script)
    header_end_pos = len(header)

    changed = False

    shebang = None
    if script:
        # scripts must have an appropriate shebang
        shebang = orig_shebang
        file_ext = os.path.splitext(filename)[1]
        log.info("Shebang found in %s (ext: %s): %s", filename, file_ext, shebang)

        if file_ext == '.py':
            if shebang != SHEBANG_ENV_PYTHON:
                log.info("Wrong shebang for Python script %s: found '%s', should be '%s'",
                        filename, shebang, SHEBANG_ENV_PYTHON)
                shebang = SHEBANG_ENV_PYTHON

        elif file_ext in ['.sh', '']:
            if shebang != SHEBANG_BIN_BASH:
                log.info("Wrong shebang for shell script %s: found '%s', should be '%s'",
                         filename, shebang, SHEBANG_BIN_BASH)
                shebang = SHEBANG_BIN_BASH

        else:
            log.warn("Don't know expected shebang based on extension '%s' for script '%s', assuming it's OK...",
                     file_ext, filename)

        changed = shebang != orig_shebang

    if orig_shebang is not None:
        # original position
        header_end_pos += 1 + len(orig_shebang)  # 1 is from splitted newline

        if 'python' in shebang and shebang != SHEBANG_ENV_PYTHON:
            log.info('python in shebang, forcing env python (header modified)')
            changed = True
            shebang = SHEBANG_ENV_PYTHON

    if re.search(r'^### External compatible license\s*$', header, re.M):
        log.info('Header is an external compatible license. Leaving the header as-is.')
        return changed

    # genheader
    # version is irrelevant
    setup = vsc_setup()
    name_url = setup.get_name_url(version='ALL_VERSIONS')
    license_name, _ = setup.get_license()

    # begin and endyear from copyright rule
    beginyear, endyear = begin_end_from_header(header)

    data = {
        'beginyear': beginyear,
        'endyear': endyear,
        'name': name_url['name'],
        'url': name_url['url'],
    }

    # reconstruct original header, incl. shebang (if any)
    if orig_shebang:
        orig_header = orig_shebang + '\n' + header
    else:
        orig_header = header

    # generate header like it should be
    gen_header = gen_license_header(license_name, **data)

    # force encoding?
    reg_enc = ENCODING_REGEXP.search(header)
    if reg_enc:
        enc_line = reg_enc.group(1) + "\n"  # matches full line, but not newline
        gen_header = enc_line + gen_header

    # compose header like it should be, incl. shebang
    if shebang:
        new_header = shebang + '\n' + gen_header
    else:
        new_header = gen_header

    if orig_header != new_header:
        log.info("Diff orig_header vs new_header for %s\n" % filename + ''.join(nicediff(orig_header, new_header)))
        changed = True

    if write and changed:
        log.info('write enabled and different header. Going to modify file %s' % filename)
        with open(filename) as fh:
            wholetext = fh.read()
        _write(filename, new_header + wholetext[header_end_pos:])

    # return different or not
    return changed
Esempio n. 21
0
 def setUp(self):
     """create a self.setup.instance for every test"""
     super(TestSetup, self).setUp()
     self.setup = vsc_setup()
Esempio n. 22
0
 def setUp(self):
     """Create a vsc_setup instance for each test"""
     super(LicenseTest, self).setUp()
     self.setup = vsc_setup()
Esempio n. 23
0
def check_header(filename, script=False, write=False):
    """
    Given filename, extract the header, verify it

    if script: treat first line as shebang
    if write: adapt file to new header

    If the header contains line '### External compatible license',
    one assumes the license is correct and should not be controlled by check_header

    Return if header is different from expected or not
    """

    header, shebang = get_header(filename, script=script)
    header_end_pos = len(header)
    changed = False
    if shebang is not None:
        # original position
        header_end_pos += 1 + len(shebang)  # 1 is from splitted newline

        if 'python' in shebang and shebang != SHEBANG_ENV_PYTHON:
            log.info('python in shebang, forcing env python (header modified)')
            changed = True
            shebang = SHEBANG_ENV_PYTHON

    if re.search(r'^### External compatible license\s*$', header, re.M):
        log.info('Header is an external compatible license. Leaving the header as-is.')
        return changed

    # genheader
    # version is irrelevant
    setup = vsc_setup()
    name_url = setup.get_name_url(version='ALL_VERSIONS')
    license_name, _ = setup.get_license()

    # begin and endyear from copyright rule
    beginyear, endyear = begin_end_from_header(header)

    data = {
        'beginyear': beginyear,
        'endyear': endyear,
        'name': name_url['name'],
        'url': name_url['url'],
    }

    gen_header = gen_license_header(license_name, **data)

    # force encoding?
    reg_enc = ENCODING_REGEXP.search(header)
    if reg_enc:
        enc_line = reg_enc.group(1) + "\n"  # matches full line, but not newline
        gen_header = enc_line + gen_header

    if header != gen_header:
        log.info("Diff header vs gen_header\n" + "".join(nicediff(header, gen_header)))
        changed = True

    if write and changed:
        log.info('write enabled and different header. Going to modify file %s' % filename)
        wholetext = open(filename).read()
        newtext = ''
        if shebang is not None:
            newtext += shebang + "\n"
        newtext += gen_header
        newtext += wholetext[header_end_pos:]
        _write(filename, newtext)

    # return different or not
    return changed
Esempio n. 24
0
def check_header(filename, script=False, write=False):
    """
    Given filename, extract the header, verify it

    if script: treat first line as shebang
    if write: adapt file to new header

    If the header contains line '### External compatible license',
    one assumes the license is correct and should not be controlled by check_header

    Return if header is different from expected or not
    """

    header, orig_shebang = get_header(filename, script=script)
    header_end_pos = len(header)

    changed = False

    shebang = None
    if script:
        # scripts must have an appropriate shebang
        shebang = orig_shebang
        file_ext = os.path.splitext(filename)[1]
        log.info("Shebang found in %s (ext: %s): %s", filename, file_ext,
                 shebang)

        if file_ext == '.py':
            if shebang != SHEBANG_ENV_PYTHON:
                log.info(
                    "Wrong shebang for Python script %s: found '%s', should be '%s'",
                    filename, shebang, SHEBANG_ENV_PYTHON)
                shebang = SHEBANG_ENV_PYTHON

        elif file_ext in ['.sh', '']:
            if shebang != SHEBANG_BIN_BASH:
                log.info(
                    "Wrong shebang for shell script %s: found '%s', should be '%s'",
                    filename, shebang, SHEBANG_BIN_BASH)
                shebang = SHEBANG_BIN_BASH

        else:
            log.warn(
                "Don't know expected shebang based on extension '%s' for script '%s', assuming it's OK...",
                file_ext, filename)

        changed = shebang != orig_shebang

    if orig_shebang is not None:
        # original position
        header_end_pos += 1 + len(orig_shebang)  # 1 is from splitted newline

        if 'python' in shebang and shebang != SHEBANG_ENV_PYTHON:
            log.info('python in shebang, forcing env python (header modified)')
            changed = True
            shebang = SHEBANG_ENV_PYTHON

    if re.search(r'^### External compatible license\s*$', header, re.M):
        log.info(
            'Header is an external compatible license. Leaving the header as-is.'
        )
        return changed

    # genheader
    # version is irrelevant
    setup = vsc_setup()
    name_url = setup.get_name_url(version='ALL_VERSIONS')
    license_name, _ = setup.get_license()

    # begin and endyear from copyright rule
    beginyear, endyear = begin_end_from_header(header)

    data = {
        'beginyear': beginyear,
        'endyear': endyear,
        'name': name_url['name'],
        'url': name_url['url'],
    }

    # reconstruct original header, incl. shebang (if any)
    if orig_shebang:
        orig_header = orig_shebang + '\n' + header
    else:
        orig_header = header

    # generate header like it should be
    gen_header = gen_license_header(license_name, **data)

    # force encoding?
    reg_enc = ENCODING_REGEXP.search(header)
    if reg_enc:
        enc_line = reg_enc.group(
            1) + "\n"  # matches full line, but not newline
        gen_header = enc_line + gen_header

    # compose header like it should be, incl. shebang
    if shebang:
        new_header = shebang + '\n' + gen_header
    else:
        new_header = gen_header

    if orig_header != new_header:
        log.info("Diff orig_header vs new_header for %s\n" % filename +
                 ''.join(nicediff(orig_header, new_header)))
        changed = True

    if write and changed:
        log.info(
            'write enabled and different header. Going to modify file %s' %
            filename)
        with open(filename) as fh:
            wholetext = fh.read()
        _write(filename, new_header + wholetext[header_end_pos:])

    # return different or not
    return changed
Esempio n. 25
0
 def setUp(self):
     """Cleanup after running a test."""
     self.orig_sys_argv = sys.argv
     self.setup = vsc_setup()
     super(CommonTest, self).setUp()
Esempio n. 26
0
 def setUp(self):
     """create a self.setup.instance for every test"""
     super(ProspectorTest, self).setUp()
     self.setup = vsc_setup()