示例#1
0
class TestPackageResource(Common, unittest.TestCase):
    def setUp(self):
        super(TestPackageResource, self).setUp()
        sys.path.append(self.base)
        self.res = PackageResource(self.mod)

    def tearDown(self):
        del self.res
        del sys.modules[self.mod]
        sys.path.remove(self.base)
        super(TestPackageResource, self).tearDown()

    def test_filename(self):
        with self.res.filename('a.json') as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(
                        json.loads(f.read())['path'],
                        'a.json')
        self.assertTrue(os.path.exists(filename))
        with self.res.get(['subdir', 'b.json']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(
                        json.loads(f.read())['path'],
                        'subdir/b.json')
        self.assertTrue(os.path.exists(filename))
示例#2
0
class TestEggResource(Common, unittest.TestCase):
    def setUp(self):
        super(TestEggResource, self).setUp()
        cwd = os.getcwd()
        os.chdir(self.base)
        with captured_output('stdout'):
            with captured_output('stderr'):
                setuptools.setup(
                    name=self.mod,
                    packages=[self.mod],
                    script_args=['bdist_egg', '--quiet'],
                    package_data={self.mod:[
                        'a.json',
                        os.path.join('subdir', 'b.json')]})
        os.chdir(cwd)
        self.eggs = os.listdir(os.path.join(self.base, 'dist'))
        for egg in self.eggs:
            sys.path.append(os.path.join(self.base, 'dist', egg))
        self.res = PackageResource(self.mod)

    def tearDown(self):
        del self.res
        del sys.modules[self.mod]
        for egg in self.eggs:
            sys.path.remove(os.path.join(self.base, 'dist', egg))
        super(TestEggResource, self).tearDown()

    def test_filename(self):
        with self.res.filename('a.json') as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(
                        json.loads(f.read())['path'],
                        'a.json')
        self.assertFalse(os.path.exists(filename))
        with self.res.get(['subdir', 'b.json']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(
                        json.loads(f.read())['path'],
                        'subdir/b.json')
        self.assertFalse(os.path.exists(filename))
        # The resource should be accessible again, even though the file was
        # deleted when exiting the context manager:
        with self.res.get(['subdir', 'b.json']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(
                        json.loads(f.read())['path'],
                        'subdir/b.json')
        self.assertFalse(os.path.exists(filename))
示例#3
0
 def setUp(self):
     super(TestEggResource, self).setUp()
     cwd = os.getcwd()
     os.chdir(self.base)
     with captured_output('stdout'):
         with captured_output('stderr'):
             setuptools.setup(
                 name=self.mod,
                 packages=[self.mod],
                 script_args=['bdist_egg', '--quiet'],
                 package_data={
                     self.mod: ['a.yml',
                                os.path.join('subdir', 'b.yml')]
                 })
     os.chdir(cwd)
     self.eggs = os.listdir(os.path.join(self.base, 'dist'))
     for egg in self.eggs:
         sys.path.append(os.path.join(self.base, 'dist', egg))
     self.res = PackageResource(self.mod)
示例#4
0
class TestPackageResource(Common, unittest.TestCase):
    def setUp(self):
        super(TestPackageResource, self).setUp()
        sys.path.append(self.base)
        self.res = PackageResource(self.mod)

    def tearDown(self):
        del self.res
        del sys.modules[self.mod]
        sys.path.remove(self.base)
        super(TestPackageResource, self).tearDown()

    def test_filename(self):
        with self.res.filename('a.yml') as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'a.yml')
        self.assertTrue(os.path.exists(filename))
        with self.res.get(['subdir', 'b.yml']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'subdir/b.yml')
        self.assertTrue(os.path.exists(filename))
示例#5
0
 def setUp(self):
     super(TestEggResource, self).setUp()
     cwd = os.getcwd()
     os.chdir(self.base)
     with captured_output('stdout'):
         with captured_output('stderr'):
             setuptools.setup(
                 name=self.mod,
                 packages=[self.mod],
                 script_args=['bdist_egg', '--quiet'],
                 package_data={self.mod:[
                     'a.json',
                     os.path.join('subdir', 'b.json')]})
     os.chdir(cwd)
     self.eggs = os.listdir(os.path.join(self.base, 'dist'))
     for egg in self.eggs:
         sys.path.append(os.path.join(self.base, 'dist', egg))
     self.res = PackageResource(self.mod)
示例#6
0
 def setUp(self):
     super(TestPackageResource, self).setUp()
     sys.path.append(self.base)
     self.res = PackageResource(self.mod)
示例#7
0
.. moduleauthor:: Yngve Inntjore Levinsen <Yngve.Inntjore.Levinsen[at]cern.ch>
'''
from __future__ import absolute_import

import logging

from .model import Model
from .model_locator import ChainModelLocator

# Create a default ModelLocator:
# NOTE: we could (and probably should) stop using this global object and
# use only CpymadService objects instead!
from .model_locator import MergedModelLocator
from cern.resource.package import PackageResource

_locator = MergedModelLocator(PackageResource(__package__, '_models'))

default_model_locator = ChainModelLocator()
default_model_locator.add_locator(_locator)


class CpymadService(object):
    ''' The CPymad implementation of the
        abstract class PyMadService. '''
    def __init__(self,
                 model_locator=default_model_locator,
                 logger=None,
                 **kwargs):
        self._log = logger or logging.getLogger(__name__)
        self._am = None
        self._models = []
示例#8
0
class TestEggResource(Common, unittest.TestCase):
    def setUp(self):
        super(TestEggResource, self).setUp()
        cwd = os.getcwd()
        os.chdir(self.base)
        with captured_output('stdout'):
            with captured_output('stderr'):
                setuptools.setup(
                    name=self.mod,
                    packages=[self.mod],
                    script_args=['bdist_egg', '--quiet'],
                    package_data={
                        self.mod: ['a.yml',
                                   os.path.join('subdir', 'b.yml')]
                    })
        os.chdir(cwd)
        self.eggs = os.listdir(os.path.join(self.base, 'dist'))
        for egg in self.eggs:
            sys.path.append(os.path.join(self.base, 'dist', egg))
        self.res = PackageResource(self.mod)

    def tearDown(self):
        del self.res
        del sys.modules[self.mod]
        for egg in self.eggs:
            sys.path.remove(os.path.join(self.base, 'dist', egg))
        super(TestEggResource, self).tearDown()

    def test_is_valid(self):
        """
        Check that the test uses a .egg resource.

        Only then the test results confirm that the package is working.

        """
        self.assertTrue(self.res._is_extracted)

    def test_filename(self):
        with self.res.filename('a.yml') as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'a.yml')
        self.assertFalse(os.path.exists(filename))
        with self.res.get(['subdir', 'b.yml']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'subdir/b.yml')
        self.assertFalse(os.path.exists(filename))
        # The resource should be accessible again, even though the file was
        # deleted when exiting the context manager:
        with self.res.get(['subdir', 'b.yml']).filename() as filename:
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'subdir/b.yml')
        self.assertFalse(os.path.exists(filename))

    def test_use_filename_twice(self):
        with self.res.filename('a.yml') as filename:
            self.assertTrue(os.path.exists(filename))
        self.assertFalse(os.path.exists(filename))
        with self.res.filename('a.yml') as filename:
            self.assertTrue(os.path.exists(filename))
            with open(filename, encoding='utf-8') as f:
                self.assertEqual(load(f.read())['path'], 'a.yml')
示例#9
0
 def setUp(self):
     super(TestPackageResource, self).setUp()
     sys.path.append(self.base)
     self.res = PackageResource(self.mod)