Updated project type library logic & fixed tests #144
This commit is contained in:
@@ -34,14 +34,14 @@ class InstallTestCase(CommandTestCase):
|
||||
def setUp(self):
|
||||
if not os.path.exists(PLAYGROUND_PATH):
|
||||
os.makedirs(PLAYGROUND_PATH)
|
||||
|
||||
|
||||
os.chdir(PLAYGROUND_PATH)
|
||||
# create projects
|
||||
CLICommands.new('console', self._source, '--ab', '--s')
|
||||
CLICommands.new('console', self._source, '--ab', '--s', '--venv')
|
||||
os.chdir(os.path.join(os.getcwd(), self._source))
|
||||
|
||||
def _get_installed_packages(self) -> dict:
|
||||
reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze'])
|
||||
reqs = subprocess.check_output([os.path.join(os.getcwd(), 'venv/bin/python'), '-m', 'pip', 'freeze'])
|
||||
return dict([tuple(r.decode().split('==')) for r in reqs.split()])
|
||||
|
||||
def test_install_package(self):
|
||||
@@ -50,16 +50,20 @@ class InstallTestCase(CommandTestCase):
|
||||
package = f'{package_name}=={version}'
|
||||
CLICommands.install(package)
|
||||
settings = self._get_project_settings()
|
||||
self.assertNotEqual(settings, {})
|
||||
self.assertIn('ProjectSettings', settings)
|
||||
self.assertIn('Dependencies', settings['ProjectSettings'])
|
||||
self.assertIn(
|
||||
package,
|
||||
settings['ProjectSettings']['Dependencies']
|
||||
)
|
||||
packages = self._get_installed_packages()
|
||||
self.assertIn(package_name, packages)
|
||||
self.assertEqual(version, packages[package_name])
|
||||
|
||||
with self.subTest(msg='Project deps'):
|
||||
self.assertNotEqual(settings, {})
|
||||
self.assertIn('ProjectSettings', settings)
|
||||
self.assertIn('Dependencies', settings['ProjectSettings'])
|
||||
self.assertIn(
|
||||
package,
|
||||
settings['ProjectSettings']['Dependencies']
|
||||
)
|
||||
|
||||
with self.subTest(msg='PIP'):
|
||||
packages = self._get_installed_packages()
|
||||
self.assertIn(package_name, packages)
|
||||
self.assertEqual(version, packages[package_name])
|
||||
|
||||
def test_dev_install_package(self):
|
||||
version = '1.7.3'
|
||||
@@ -67,21 +71,25 @@ class InstallTestCase(CommandTestCase):
|
||||
package = f'{package_name}=={version}'
|
||||
CLICommands.install(package, is_dev=True)
|
||||
settings = self._get_project_settings()
|
||||
self.assertNotEqual(settings, {})
|
||||
self.assertIn('ProjectSettings', settings)
|
||||
self.assertIn('Dependencies', settings['ProjectSettings'])
|
||||
self.assertIn('DevDependencies', settings['ProjectSettings'])
|
||||
self.assertNotIn(
|
||||
package,
|
||||
settings['ProjectSettings']['Dependencies']
|
||||
)
|
||||
self.assertIn(
|
||||
package,
|
||||
settings['ProjectSettings']['DevDependencies']
|
||||
)
|
||||
packages = self._get_installed_packages()
|
||||
self.assertIn(package_name, packages)
|
||||
self.assertEqual(version, packages[package_name])
|
||||
|
||||
with self.subTest(msg='Project deps'):
|
||||
self.assertNotEqual(settings, {})
|
||||
self.assertIn('ProjectSettings', settings)
|
||||
self.assertIn('Dependencies', settings['ProjectSettings'])
|
||||
self.assertIn('DevDependencies', settings['ProjectSettings'])
|
||||
self.assertNotIn(
|
||||
package,
|
||||
settings['ProjectSettings']['Dependencies']
|
||||
)
|
||||
self.assertIn(
|
||||
package,
|
||||
settings['ProjectSettings']['DevDependencies']
|
||||
)
|
||||
|
||||
with self.subTest(msg='PIP'):
|
||||
packages = self._get_installed_packages()
|
||||
self.assertIn(package_name, packages)
|
||||
self.assertEqual(version, packages[package_name])
|
||||
|
||||
def _test_install_all(self):
|
||||
version = '1.7.3'
|
||||
@@ -120,5 +128,3 @@ class InstallTestCase(CommandTestCase):
|
||||
packages = self._get_installed_packages()
|
||||
self.assertIn(package_name, packages)
|
||||
self.assertEqual(version, packages[package_name])
|
||||
|
||||
|
||||
|
@@ -14,14 +14,15 @@ class NewTestCase(CommandTestCase):
|
||||
CommandTestCase.__init__(self, method_name)
|
||||
|
||||
def _test_project(self, project_type: str, name: str, *args, test_venv=False, without_ws=False):
|
||||
CLICommands.new(project_type, name, *args)
|
||||
CLICommands.new(project_type, name, *args, output=False)
|
||||
workspace_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, name))
|
||||
self.assertTrue(os.path.exists(workspace_path))
|
||||
if test_venv:
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv')))
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin')))
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
||||
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
||||
with self.subTest(msg='Venv exists'):
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv')))
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin')))
|
||||
self.assertTrue(os.path.exists(os.path.join(workspace_path, 'venv/bin/python')))
|
||||
self.assertTrue(os.path.islink(os.path.join(workspace_path, 'venv/bin/python')))
|
||||
|
||||
base = 'src'
|
||||
if '--base' in args and '/' in name:
|
||||
@@ -32,34 +33,46 @@ class NewTestCase(CommandTestCase):
|
||||
if without_ws:
|
||||
project_path = os.path.abspath(os.path.join(PLAYGROUND_PATH, base, name, 'src/', String.convert_to_snake_case(name)))
|
||||
|
||||
self.assertTrue(os.path.exists(project_path))
|
||||
self.assertTrue(os.path.exists(os.path.join(project_path, f'{name}.json')))
|
||||
self.assertTrue(os.path.exists(os.path.join(project_path, f'main.py')))
|
||||
with self.subTest(msg='Project json exists'):
|
||||
self.assertTrue(os.path.exists(project_path))
|
||||
self.assertTrue(os.path.exists(os.path.join(project_path, f'{name}.json')))
|
||||
|
||||
if '--ab' in args:
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'application.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'application.py')))
|
||||
if project_type == 'library':
|
||||
with self.subTest(msg='Library class1 exists'):
|
||||
self.assertTrue(os.path.exists(os.path.join(project_path, f'class1.py')))
|
||||
return
|
||||
|
||||
with self.subTest(msg='Project main.py exists'):
|
||||
self.assertTrue(os.path.exists(os.path.join(project_path, f'main.py')))
|
||||
|
||||
with self.subTest(msg='Application base'):
|
||||
if '--ab' in args:
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'application.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'application.py')))
|
||||
|
||||
# s depends on ab
|
||||
if '--ab' in args and '--s' in args:
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'startup.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'startup.py')))
|
||||
with self.subTest(msg='Startup'):
|
||||
if '--ab' in args and '--s' in args:
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'startup.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'startup.py')))
|
||||
|
||||
if project_type == 'unittest':
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'test_case.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'test_case.py')))
|
||||
with self.subTest(msg='Unittest'):
|
||||
if project_type == 'unittest':
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'test_case.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'test_case.py')))
|
||||
|
||||
if project_type == 'discord-bot':
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'events/__init__.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'events/on_ready_event.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'commands/__init__.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'commands/ping_command.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'events/on_ready_event.py')))
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'commands/ping_command.py')))
|
||||
with self.subTest(msg='Discord'):
|
||||
if project_type == 'discord-bot':
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'events/__init__.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'events/on_ready_event.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'commands/__init__.py')))
|
||||
self.assertTrue(os.path.isfile(os.path.join(project_path, f'commands/ping_command.py')))
|
||||
else:
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'events/on_ready_event.py')))
|
||||
self.assertFalse(os.path.isfile(os.path.join(project_path, f'commands/ping_command.py')))
|
||||
|
||||
def _test_sub_project(self, project_type: str, name: str, workspace_name: str, *args, test_venv=False):
|
||||
os.chdir(os.path.abspath(os.path.join(os.getcwd(), workspace_name)))
|
||||
|
@@ -10,7 +10,6 @@ from unittests_shared.cli_commands import CLICommands
|
||||
|
||||
|
||||
class PublishTestCase(CommandTestCase):
|
||||
_skip_tear_down = True
|
||||
|
||||
def __init__(self, method_name: str):
|
||||
CommandTestCase.__init__(self, method_name)
|
||||
|
@@ -66,22 +66,30 @@ class VersionTestCase(CommandTestCase):
|
||||
self._get_version_output(version)
|
||||
reference_banner = colored(text2art(self._name), ForegroundColorEnum.yellow.value).split('\n')
|
||||
reference_banner = "\n".join(reference_banner[:len(reference_banner) - 1]) + '\n'
|
||||
self.assertEqual(reference_banner, self._block_banner)
|
||||
|
||||
with self.subTest(msg='Block banner'):
|
||||
self.assertEqual(reference_banner, self._block_banner)
|
||||
|
||||
reference_version = [
|
||||
colored(f'{colored("Common Python library CLI: ")}{colored(cpl_cli.__version__)}'),
|
||||
colored(f'{colored("Python: ")}{colored(f"{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}")}'),
|
||||
colored(f'OS: {colored(f"{platform.system()} {platform.processor()}")}') + '\n'
|
||||
]
|
||||
self.assertEqual('\n'.join(reference_version), self._block_version)
|
||||
with self.subTest(msg='Block version'):
|
||||
self.assertEqual('\n'.join(reference_version), self._block_version)
|
||||
reference_cpl_packages = [
|
||||
colored(colored(f'CPL packages:')),
|
||||
colored(f'{tabulate(cpl_packages, headers=["Name", "Version"])}') + '\n'
|
||||
]
|
||||
self.assertEqual('\n'.join(reference_cpl_packages), self._block_cpl_packages)
|
||||
with self.subTest(msg='Block cpl packages'):
|
||||
self.assertEqual('\n'.join(reference_cpl_packages), self._block_cpl_packages)
|
||||
reference_packages = [
|
||||
colored(colored(f'Python packages:')),
|
||||
colored(f'{tabulate(packages, headers=["Name", "Version"])}'),
|
||||
'\x1b[0m\x1b[0m\n\x1b[0m\x1b[0m\n' # fix colored codes
|
||||
'\x1b[0m\x1b[0m\n\x1b[0m\x1b[0m\n\x1b[0m\x1b[0m\n' # fix colored codes
|
||||
]
|
||||
self.assertEqual('\n'.join(reference_packages), self._block_packages)
|
||||
|
||||
self.maxDiff = None
|
||||
with self.subTest(msg='Block packages'):
|
||||
ref_packages = '\n'.join(reference_packages)
|
||||
self.assertEqual(ref_packages, self._block_packages)
|
||||
|
Reference in New Issue
Block a user