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'])
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
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
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'])
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'
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'
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'])
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', ])
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'])
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)
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
def cli(modules): """Promotes Python modules to packages""" for module in [Module(m) for m in modules]: module.promote()
def cli(modules): """Demotes Python packages to modules (if safe)""" for module in [Module(m) for m in modules]: module.demote()