1. Restructured configuration: Moved config_other and console to top level 2. Added common _match_pattern function for regex pattern matching 3. Implemented Unifi Hostname bug fix in is_hostname_unknown 4. Created common get_device_hostname function to eliminate code duplication 5. Added comprehensive test scripts for all new functionality 6. Added detailed documentation for all changes
88 lines
2.8 KiB
Python
Executable File
88 lines
2.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify that appropriate messages are printed when no template match is found.
|
|
|
|
This script:
|
|
1. Gets a test device from current.json
|
|
2. Temporarily modifies the config_other section to ensure no match will be found
|
|
3. Calls the check_and_update_template method
|
|
4. Verifies that appropriate messages are printed
|
|
"""
|
|
|
|
import json
|
|
import logging
|
|
import sys
|
|
import os
|
|
|
|
# Configure logging
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='%(asctime)s - %(levelname)s - %(message)s',
|
|
datefmt='%Y-%m-%d %H:%M:%S'
|
|
)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
# Import TasmotaManager class
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
|
from TasmotaManager import TasmotaDiscovery
|
|
|
|
def get_test_device():
|
|
"""Get a test device from current.json"""
|
|
try:
|
|
with open('current.json', 'r') as f:
|
|
data = json.load(f)
|
|
devices = data.get('tasmota', {}).get('devices', [])
|
|
if devices:
|
|
return devices[0] # Use the first device
|
|
else:
|
|
logger.error("No devices found in current.json")
|
|
return None
|
|
except Exception as e:
|
|
logger.error(f"Error reading current.json: {e}")
|
|
return None
|
|
|
|
def main():
|
|
"""Main test function"""
|
|
# Get a test device
|
|
device = get_test_device()
|
|
if not device:
|
|
logger.error("No test device available. Run discovery first.")
|
|
return 1
|
|
|
|
device_name = device.get('name')
|
|
device_ip = device.get('ip')
|
|
|
|
logger.info(f"Testing with device: {device_name} (IP: {device_ip})")
|
|
|
|
# Create a TasmotaDiscovery instance
|
|
discovery = TasmotaDiscovery(debug=True)
|
|
|
|
# Load the configuration
|
|
discovery.load_config('network_configuration.json')
|
|
|
|
# Temporarily modify the config_other section to ensure no match will be found
|
|
# Save the original config_other
|
|
original_config_other = discovery.config.get('config_other', {})
|
|
|
|
# Set an empty config_other to ensure no match
|
|
discovery.config['config_other'] = {
|
|
"NonExistentDevice": '{"NAME":"Test Device","GPIO":[0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":18}'
|
|
}
|
|
|
|
logger.info("Modified config_other to ensure no match will be found")
|
|
|
|
# Call the check_and_update_template method
|
|
logger.info("Calling check_and_update_template method")
|
|
result = discovery.check_and_update_template(device_ip, device_name)
|
|
|
|
# Verify the result
|
|
logger.info(f"Result of check_and_update_template: {result}")
|
|
|
|
# Restore the original config_other
|
|
discovery.config['config_other'] = original_config_other
|
|
|
|
logger.info("Test completed. Check the output above to verify that appropriate messages were printed.")
|
|
return 0
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main()) |