diff --git a/device-types/Generic/shelf-2he.yaml b/device-types/Generic/shelf-2he.yaml index 14a8f120f..7ae3a823f 100644 --- a/device-types/Generic/shelf-2he.yaml +++ b/device-types/Generic/shelf-2he.yaml @@ -1,6 +1,6 @@ manufacturer: Generic -model: shelf-1he -slug: shelf-1he +model: shelf-2he +slug: shelf-2he u_height: 2 full_depth: false diff --git a/tests/test_dupes.py b/tests/test_dupes.py new file mode 100644 index 000000000..7edf018d9 --- /dev/null +++ b/tests/test_dupes.py @@ -0,0 +1,41 @@ +import glob +import json +import pytest +import yaml + +KNOWN_MODELS = {} + +def _get_definition_files(): + """ + Return a list of all definition files. + """ + return [f for f in glob.glob("device-types/*/*", recursive=True)] + +def test_environment(): + """ + Run basic sanity checks on the environment to ensure tests are running correctly. + """ + # Validate that definition files exist + assert _get_definition_files(), "No definition files found!" + +@pytest.mark.parametrize("file_path", _get_definition_files()) +def test_dupes(file_path): + # Check file extension + assert file_path.split('.')[-1] in ('yaml', 'yml'), f"Invalid file extension: {file_path}" + + # Read file + with open(file_path) as definition_file: + content = definition_file.read() + + # Check for trailing newline + assert content[-1] == '\n', "Missing trailing newline" + + # Load YAML data + definition = yaml.load(content, Loader=yaml.SafeLoader) + + slug = definition.get('slug') + + if KNOWN_MODELS.get(slug, None) is not None: + pytest.fail(f"{file_path} is a duplicate device_type for {slug}") + + KNOWN_MODELS[slug] = definition.get('model')