示例#1
0
    def test_module_demote(self):
        """Packages can be demoted."""
        Module('foo').create(promote=True)
        self.assertFileTree(['foo/__init__.py'])

        Module('foo').demote()
        self.assertFileTree(['foo.py'])
示例#2
0
def create_mod(package, *modules, **kwargs):
  mod_path = [package]
  if len(modules):
    mod_path.extend(modules)
  mod = Module('.'.join(mod_path))
  mod.create(**kwargs)
  return mod
示例#3
0
    def test_module_promote_removes_compiled_files(self):
        """Modules can be promoted."""
        Module('foo').create()
        create_dummy_file('foo.py', 'print "Hello"')
        create_dummy_file('foo.pyc', 'SENTINEL')
        self.assertFileTree(['foo.py', 'foo.pyc'])

        Module('foo').promote()
        self.assertFileTree(['foo/__init__.py'])  # pyc file removed
示例#4
0
    def test_module_promote(self):
        """Modules can be promoted."""
        Module('foo').create()
        self.assertFileTree(['foo.py'])

        Module('foo').promote()
        self.assertFileTree(['foo/__init__.py'])

        Module('bar').create()
        self.assertFileTree(['foo/__init__.py', 'bar.py'])
示例#5
0
    def test_module_initialization(self):
        """Modules can be initialized with strings."""
        m = Module('foo')
        assert str(m) == 'foo'

        m = Module('foo.bar')
        assert str(m) == 'foo.bar'

        m = Module('foo.bar.qux')
        assert str(m) == 'foo.bar.qux'
示例#6
0
    def test_module_get_parent(self):
        """Parent modules can be accessed from any module."""
        m = Module('foo')
        assert m.parent_module is None

        m = Module('foo.bar')
        assert str(m.parent_module) == 'foo'

        m = Module('foo.bar.qux')
        assert str(m.parent_module) == 'foo.bar'
        assert str(m.module_name) == 'qux'
示例#7
0
    def test_module_create(self):
        """Parent modules can be accessed from any module."""
        Module('foo').create()
        self.assertFileTree(['foo.py'])

        Module('bar').create()
        self.assertFileTree(['foo.py', 'bar.py'])

        Module('qux').create(promote=True)
        self.assertFileTree(['foo.py', 'bar.py', 'qux/__init__.py'])

        Module('foo.bar').create()
        self.assertFileTree(['foo/__init__.py', 'foo/bar.py', 'bar.py', 'qux/__init__.py'])
示例#8
0
    def test_nested_module_demote(self):
        """Nested packages can be demoted."""
        Module('foo.bar.qux').create(promote=True)
        self.assertFileTree([
            'foo/__init__.py',
            'foo/bar/__init__.py',
            'foo/bar/qux/__init__.py',
        ])

        Module('foo.bar.qux').demote()
        self.assertFileTree([
            'foo/__init__.py',
            'foo/bar/__init__.py',
            'foo/bar/qux.py',
        ])
示例#9
0
    def test_create_dash_p(self):
        """Create with promote option "just promoted" when module already exists."""

        # Setup, let's create a simple module
        Module('foo.bar.qux').create()
        self.assertFileTree([
            'foo/__init__.py',
            'foo/bar/__init__.py',
            'foo/bar/qux.py'])

        # If we now "mkmodule -p foo.bar.qux", qux should simply be promoted
        Module('foo.bar.qux').create(promote=True)
        self.assertFileTree([
            'foo/__init__.py',
            'foo/bar/__init__.py',
            'foo/bar/qux/__init__.py'])
示例#10
0
def cli(modules, promote):
    """Creates directory structures for Python packages"""
    for module in [Module(m) for m in sorted(modules)]:
        if module.exists():
            warning('{} already exists, skipping.'.format(module))
            continue

        info('Creating {}'.format(module.module_file))
        module.create(promote)
示例#11
0
    def test_module_promotion_preserves_contents(self):
        """Promotion preserves file content."""
        create_dummy_file('foo.py', 'print "Hello, world"')
        sha1 = file_sha('foo.py')
        self.assertFileTree(['foo.py'])

        Module('foo').promote()
        self.assertFileTree(['foo/__init__.py'])
        sha2 = file_sha('foo/__init__.py')

        assert sha1 == sha2
示例#12
0
文件: promote.py 项目: nvie/python-fu
def cli(modules):
    """Promotes Python modules to packages"""
    for module in [Module(m) for m in modules]:
        module.promote()
示例#13
0
文件: demote.py 项目: nvie/python-fu
def cli(modules):
    """Demotes Python packages to modules (if safe)"""
    for module in [Module(m) for m in modules]:
        module.demote()