mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-08-29 15:06:26 +02:00
Optimized auto playbook creation
This commit is contained in:
57
tests/unit/cli/build/inventory/test_full.py
Normal file
57
tests/unit/cli/build/inventory/test_full.py
Normal file
@@ -0,0 +1,57 @@
|
||||
import unittest
|
||||
import sys
|
||||
import os
|
||||
import importlib.util
|
||||
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../../../../'))
|
||||
SCRIPT_PATH = os.path.join(PROJECT_ROOT, 'cli', 'build', 'inventory', 'full.py')
|
||||
spec = importlib.util.spec_from_file_location('full', SCRIPT_PATH)
|
||||
full = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(full)
|
||||
|
||||
class TestFullInventoryScript(unittest.TestCase):
|
||||
|
||||
def test_build_group_inventory(self):
|
||||
apps = ['app1', 'app2']
|
||||
host = 'myhost'
|
||||
inventory = full.build_group_inventory(apps, host)
|
||||
self.assertIn('all', inventory)
|
||||
self.assertIn('app1', inventory)
|
||||
self.assertIn('app2', inventory)
|
||||
self.assertEqual(inventory['app1'], {'hosts': [host]})
|
||||
self.assertEqual(inventory['all']['hosts'], [host])
|
||||
self.assertIn('app1', inventory['all']['children'])
|
||||
|
||||
def test_build_hostvar_inventory(self):
|
||||
apps = ['foo', 'bar']
|
||||
host = 'testhost'
|
||||
inventory = full.build_hostvar_inventory(apps, host)
|
||||
self.assertIn('all', inventory)
|
||||
self.assertIn('_meta', inventory)
|
||||
self.assertIn('hostvars', inventory['_meta'])
|
||||
self.assertEqual(inventory['_meta']['hostvars'][host]['invokable_applications'], apps)
|
||||
self.assertEqual(inventory['all']['hosts'], [host])
|
||||
|
||||
def test_ignore_filtering(self):
|
||||
# Simulate argument parsing logic for ignore flattening
|
||||
ignore_args = ['foo,bar', 'baz']
|
||||
ignore_ids = set()
|
||||
for entry in ignore_args:
|
||||
ignore_ids.update(i.strip() for i in entry.split(',') if i.strip())
|
||||
self.assertEqual(ignore_ids, {'foo', 'bar', 'baz'})
|
||||
|
||||
# Filtering list
|
||||
apps = ['foo', 'bar', 'baz', 'other']
|
||||
filtered = [app for app in apps if app not in ignore_ids]
|
||||
self.assertEqual(filtered, ['other'])
|
||||
|
||||
def test_ignore_filtering_empty(self):
|
||||
ignore_args = []
|
||||
ignore_ids = set()
|
||||
for entry in ignore_args:
|
||||
ignore_ids.update(i.strip() for i in entry.split(',') if i.strip())
|
||||
apps = ['a', 'b']
|
||||
filtered = [app for app in apps if app not in ignore_ids]
|
||||
self.assertEqual(filtered, ['a', 'b'])
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Reference in New Issue
Block a user