From 1da080dc529b5618e305f061e1344a996096283a Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Sat, 23 Mar 2024 10:57:46 -0700 Subject: [PATCH] fix for unhandled lines in xrandr output --- jc/parsers/xrandr.py | 10 ++++ tests/fixtures/generic/xrandr.json | 1 + tests/fixtures/generic/xrandr_2.json | 1 + tests/fixtures/generic/xrandr_3.json | 1 + .../generic/xrandr_extra_hv_lines.json | 1 + .../generic/xrandr_extra_hv_lines.out | 47 +++++++++++++++ .../fixtures/generic/xrandr_properties_1.json | 1 + tests/fixtures/generic/xrandr_simple.json | 59 +------------------ tests/test_xrandr.py | 46 +++++++++++---- 9 files changed, 99 insertions(+), 68 deletions(-) create mode 100644 tests/fixtures/generic/xrandr.json create mode 100644 tests/fixtures/generic/xrandr_2.json create mode 100644 tests/fixtures/generic/xrandr_3.json create mode 100644 tests/fixtures/generic/xrandr_extra_hv_lines.json create mode 100644 tests/fixtures/generic/xrandr_extra_hv_lines.out create mode 100644 tests/fixtures/generic/xrandr_properties_1.json diff --git a/jc/parsers/xrandr.py b/jc/parsers/xrandr.py index 8b3c54eb..5cd21b42 100644 --- a/jc/parsers/xrandr.py +++ b/jc/parsers/xrandr.py @@ -540,9 +540,19 @@ def parse(data: str, raw: bool = False, quiet: bool = False) -> Response: lines = data.splitlines() screen, device = None, None + # temporary fix to ignore specific unhandled lines + ignore_pattern = re.compile(r'^\s+(h|v):\s+(height|width)\s+\d+\s+start\s+\d+\s+end') + result: Response = {"screens": []} if jc.utils.has_data(data): while index < len(lines): + + # temporary fix to ignore specific unhandled lines + ignore_re = ignore_pattern.match(lines[index]) + if ignore_re: + index += 1 + continue + line = _Line.categorize(lines[index]) if line.t == LineType.Screen: screen = _parse_screen(line) diff --git a/tests/fixtures/generic/xrandr.json b/tests/fixtures/generic/xrandr.json new file mode 100644 index 00000000..66fe0355 --- /dev/null +++ b/tests/fixtures/generic/xrandr.json @@ -0,0 +1 @@ +{"screens":[{"devices":[{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.03,"is_current":true,"is_preferred":true},{"frequency":59.93,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":1600,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1368,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":800,"is_high_resolution":false,"frequencies":[{"frequency":59.81,"is_current":false,"is_preferred":false},{"frequency":59.91,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.74,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":576,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.9,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":540,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.25,"is_current":false,"is_preferred":false}]},{"resolution_width":864,"resolution_height":486,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":405,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":58.99,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":360,"is_high_resolution":false,"frequencies":[{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":true,"device_name":"eDP1","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":0,"dimension_width":310,"dimension_height":170},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP2","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":true},{"frequency":50.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":true,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":50.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":75.02,"is_current":false,"is_preferred":false},{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":1440,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.9,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":50.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":75.03,"is_current":false,"is_preferred":false},{"frequency":70.07,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":832,"resolution_height":624,"is_high_resolution":false,"frequencies":[{"frequency":74.55,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":72.19,"is_current":false,"is_preferred":false},{"frequency":75.0,"is_current":false,"is_preferred":false},{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.25,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":576,"is_high_resolution":false,"frequencies":[{"frequency":50.0,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":75.0,"is_current":false,"is_preferred":false},{"frequency":72.81,"is_current":false,"is_preferred":false},{"frequency":66.67,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":400,"is_high_resolution":false,"frequencies":[{"frequency":70.08,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":false,"device_name":"HDMI1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"VIRTUAL1","rotation":"normal","reflection":"normal"}],"screen_number":0,"minimum_width":8,"minimum_height":8,"current_width":1920,"current_height":1080,"maximum_width":32767,"maximum_height":32767}]} diff --git a/tests/fixtures/generic/xrandr_2.json b/tests/fixtures/generic/xrandr_2.json new file mode 100644 index 00000000..b4c6ff6a --- /dev/null +++ b/tests/fixtures/generic/xrandr_2.json @@ -0,0 +1 @@ +{"screens":[{"devices":[{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.03,"is_current":true,"is_preferred":true},{"frequency":60.01,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.93,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":1600,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false},{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1440,"resolution_height":810,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false}]},{"resolution_width":1368,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":800,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.81,"is_current":false,"is_preferred":false},{"frequency":59.91,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.74,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.04,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":928,"resolution_height":696,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":896,"resolution_height":672,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":576,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.9,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":59.93,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":540,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.25,"is_current":false,"is_preferred":false}]},{"resolution_width":840,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":864,"resolution_height":486,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":512,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":405,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":58.99,"is_current":false,"is_preferred":false}]},{"resolution_width":684,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":400,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":360,"is_high_resolution":false,"frequencies":[{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.83,"is_current":false,"is_preferred":false},{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":288,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.92,"is_current":false,"is_preferred":false}]},{"resolution_width":480,"resolution_height":270,"is_high_resolution":false,"frequencies":[{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":400,"resolution_height":300,"is_high_resolution":false,"frequencies":[{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.34,"is_current":false,"is_preferred":false}]},{"resolution_width":432,"resolution_height":243,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":240,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":360,"resolution_height":202,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":59.13,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":180,"is_high_resolution":false,"frequencies":[{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":true,"device_name":"eDP-1","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":0,"dimension_width":309,"dimension_height":174},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP-1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"HDMI-1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP-2","rotation":"normal","reflection":"normal"}],"screen_number":0,"minimum_width":320,"minimum_height":200,"current_width":1920,"current_height":1080,"maximum_width":16384,"maximum_height":16384}]} diff --git a/tests/fixtures/generic/xrandr_3.json b/tests/fixtures/generic/xrandr_3.json new file mode 100644 index 00000000..bccda60a --- /dev/null +++ b/tests/fixtures/generic/xrandr_3.json @@ -0,0 +1 @@ +{"screens":[{"devices":[{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":true,"device_name":"test-3-1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":true,"is_preferred":true},{"frequency":59.94,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1600,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":75.02,"is_current":false,"is_preferred":false},{"frequency":60.02,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":false,"device_name":"test-3-2","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":0,"dimension_width":521,"dimension_height":293}],"screen_number":0,"minimum_width":320,"minimum_height":200,"current_width":1920,"current_height":1080,"maximum_width":16384,"maximum_height":16384}]} diff --git a/tests/fixtures/generic/xrandr_extra_hv_lines.json b/tests/fixtures/generic/xrandr_extra_hv_lines.json new file mode 100644 index 00000000..0d2c80d2 --- /dev/null +++ b/tests/fixtures/generic/xrandr_extra_hv_lines.json @@ -0,0 +1 @@ +{"screens":[{"devices":[{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":true,"is_preferred":true},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.93,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":1600,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false},{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":1440,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1440,"resolution_height":810,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false}]},{"resolution_width":1368,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":800,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.81,"is_current":false,"is_preferred":false},{"frequency":59.91,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.74,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.04,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":928,"resolution_height":696,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":896,"resolution_height":672,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":576,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.9,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":59.93,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":540,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.25,"is_current":false,"is_preferred":false}]},{"resolution_width":840,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":864,"resolution_height":486,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":512,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":405,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":58.99,"is_current":false,"is_preferred":false}]},{"resolution_width":684,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":400,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":360,"is_high_resolution":false,"frequencies":[{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.83,"is_current":false,"is_preferred":false},{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":288,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.92,"is_current":false,"is_preferred":false}]},{"resolution_width":480,"resolution_height":270,"is_high_resolution":false,"frequencies":[{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":400,"resolution_height":300,"is_high_resolution":false,"frequencies":[{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.34,"is_current":false,"is_preferred":false}]},{"resolution_width":432,"resolution_height":243,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":240,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":360,"resolution_height":202,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":59.13,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":180,"is_high_resolution":false,"frequencies":[{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":false,"device_name":"eDP-1","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":2160,"dimension_width":309,"dimension_height":173},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"HDMI-1","rotation":"normal","reflection":"normal"},{"props":{},"resolution_modes":[],"is_connected":false,"is_primary":true,"device_name":"DP-1","rotation":"normal","reflection":"normal","resolution_width":3840,"resolution_height":2160,"offset_width":0,"offset_height":0,"dimension_width":0,"dimension_height":0},{"props":{},"resolution_modes":[{"resolution_width":3840,"resolution_height":2160,"is_high_resolution":false,"frequencies":[{"frequency":533.25,"is_current":false,"is_preferred":false}]}],"is_connected":false,"is_primary":false,"device_name":"DP-2","rotation":"normal","reflection":"normal"}],"screen_number":0,"minimum_width":320,"minimum_height":200,"current_width":3840,"current_height":3240,"maximum_width":16384,"maximum_height":16384}]} diff --git a/tests/fixtures/generic/xrandr_extra_hv_lines.out b/tests/fixtures/generic/xrandr_extra_hv_lines.out new file mode 100644 index 00000000..0b920d47 --- /dev/null +++ b/tests/fixtures/generic/xrandr_extra_hv_lines.out @@ -0,0 +1,47 @@ +Screen 0: minimum 320 x 200, current 3840 x 3240, maximum 16384 x 16384 +eDP-1 connected 1920x1080+0+2160 (normal left inverted right x axis y axis) 309mm x 173mm + 1920x1080 60.00*+ 59.97 59.96 59.93 + 1680x1050 59.95 60.00 59.88 + 1400x1050 59.98 + 1600x900 59.99 59.94 59.95 59.82 + 1280x1024 60.00 60.02 + 1440x900 60.00 + 1400x900 59.96 59.88 + 1280x960 60.00 + 1440x810 60.00 59.97 + 1368x768 59.88 59.85 + 1280x800 59.99 60.00 59.97 59.81 59.91 + 1280x720 60.00 60.00 59.99 59.86 59.74 + 1024x768 60.00 60.04 60.00 + 960x720 60.00 + 928x696 60.05 + 896x672 60.01 + 1024x576 59.95 59.96 59.90 59.82 + 960x600 59.93 60.00 + 960x540 59.96 59.99 59.63 59.82 + 800x600 60.00 60.00 60.32 56.25 + 840x525 60.01 59.88 + 864x486 59.92 59.57 + 700x525 59.98 + 800x450 59.95 59.82 + 640x512 60.02 + 700x450 59.96 59.88 + 640x480 60.00 60.00 59.94 + 720x405 59.51 58.99 + 684x384 59.88 59.85 + 640x400 59.88 59.98 + 640x360 59.86 59.83 59.84 59.32 + 512x384 60.00 + 512x288 60.00 59.92 + 480x270 59.63 59.82 + 400x300 60.32 56.34 + 432x243 59.92 59.57 + 320x240 60.05 + 360x202 59.51 59.13 + 320x180 59.84 59.32 +HDMI-1 disconnected (normal left inverted right x axis y axis) +DP-1 disconnected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 0mm x 0mm +DP-2 disconnected (normal left inverted right x axis y axis) + 3840x2160 (0xa0) 533.250MHz +HSync -VSync + h: width 3840 start 3888 end 3952 total 4000 skew 0 clock 133.31KHz + v: height 2160 start 2163 end 2168 total 2222 clock 60.00Hz diff --git a/tests/fixtures/generic/xrandr_properties_1.json b/tests/fixtures/generic/xrandr_properties_1.json new file mode 100644 index 00000000..a09d5aa8 --- /dev/null +++ b/tests/fixtures/generic/xrandr_properties_1.json @@ -0,0 +1 @@ +{"screens":[{"devices":[{"props":{"EDID":["00ffffffffffff0006af3d5700000000","001c0104a51f1178022285a5544d9a27","0e505400000001010101010101010101","010101010101b43780a070383e401010","350035ae100000180000000f00000000","00000000000000000020000000fe0041","554f0a202020202020202020000000fe","004231343048414e30352e37200a0070"],"scaling mode":["Full aspect ","supported: Full, Center, Full aspect"],"Colorspace":["Default ","supported: Default, RGB_Wide_Gamut_Fixed_Point, RGB_Wide_Gamut_Floating_Point, opRGB, DCI-P3_RGB_D65, BT2020_RGB, BT601_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, BT2020_CYCC, BT2020_YCC"],"max bpc":["12 ","range: (6, 12)"],"Broadcast RGB":["Automatic ","supported: Automatic, Full, Limited 16:235"],"panel orientation":["Normal ","supported: Normal, Upside Down, Left Side Up, Right Side Up"],"link-status":["Good ","supported: Good, Bad"],"CTM":["0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 ","0 1"],"CONNECTOR_ID":["95 ","supported: 95"],"non-desktop":["0 ","range: (0, 1)"],"EdidModel":{"name":"Generic","product_id":"22333","serial_number":"0"}},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.03,"is_current":true,"is_preferred":true},{"frequency":60.01,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.93,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":1600,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false},{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":1024,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":1400,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1440,"resolution_height":810,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false}]},{"resolution_width":1368,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":800,"is_high_resolution":false,"frequencies":[{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.97,"is_current":false,"is_preferred":false},{"frequency":59.81,"is_current":false,"is_preferred":false},{"frequency":59.91,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.74,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.04,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":720,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":928,"resolution_height":696,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":896,"resolution_height":672,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false}]},{"resolution_width":1024,"resolution_height":576,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.9,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":59.93,"is_current":false,"is_preferred":false},{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":960,"resolution_height":540,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.99,"is_current":false,"is_preferred":false},{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":600,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.25,"is_current":false,"is_preferred":false}]},{"resolution_width":840,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":60.01,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":864,"resolution_height":486,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":525,"is_high_resolution":false,"frequencies":[{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":800,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.95,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":512,"is_high_resolution":false,"frequencies":[{"frequency":60.02,"is_current":false,"is_preferred":false}]},{"resolution_width":700,"resolution_height":450,"is_high_resolution":false,"frequencies":[{"frequency":59.96,"is_current":false,"is_preferred":false},{"frequency":59.88,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.94,"is_current":false,"is_preferred":false}]},{"resolution_width":720,"resolution_height":405,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":58.99,"is_current":false,"is_preferred":false}]},{"resolution_width":684,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.85,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":400,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false},{"frequency":59.98,"is_current":false,"is_preferred":false}]},{"resolution_width":640,"resolution_height":360,"is_high_resolution":false,"frequencies":[{"frequency":59.86,"is_current":false,"is_preferred":false},{"frequency":59.83,"is_current":false,"is_preferred":false},{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":384,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":512,"resolution_height":288,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false},{"frequency":59.92,"is_current":false,"is_preferred":false}]},{"resolution_width":480,"resolution_height":270,"is_high_resolution":false,"frequencies":[{"frequency":59.63,"is_current":false,"is_preferred":false},{"frequency":59.82,"is_current":false,"is_preferred":false}]},{"resolution_width":400,"resolution_height":300,"is_high_resolution":false,"frequencies":[{"frequency":60.32,"is_current":false,"is_preferred":false},{"frequency":56.34,"is_current":false,"is_preferred":false}]},{"resolution_width":432,"resolution_height":243,"is_high_resolution":false,"frequencies":[{"frequency":59.92,"is_current":false,"is_preferred":false},{"frequency":59.57,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":240,"is_high_resolution":false,"frequencies":[{"frequency":60.05,"is_current":false,"is_preferred":false}]},{"resolution_width":360,"resolution_height":202,"is_high_resolution":false,"frequencies":[{"frequency":59.51,"is_current":false,"is_preferred":false},{"frequency":59.13,"is_current":false,"is_preferred":false}]},{"resolution_width":320,"resolution_height":180,"is_high_resolution":false,"frequencies":[{"frequency":59.84,"is_current":false,"is_preferred":false},{"frequency":59.32,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":true,"device_name":"eDP-1","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":0,"dimension_width":309,"dimension_height":174},{"props":{"HDCP Content Type":["HDCP Type0 ","supported: HDCP Type0, HDCP Type1"],"Content Protection":["Undesired ","supported: Undesired, Desired, Enabled"],"Colorspace":["Default ","supported: Default, RGB_Wide_Gamut_Fixed_Point, RGB_Wide_Gamut_Floating_Point, opRGB, DCI-P3_RGB_D65, BT2020_RGB, BT601_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, BT2020_CYCC, BT2020_YCC"],"max bpc":["12 ","range: (6, 12)"],"Broadcast RGB":["Automatic ","supported: Automatic, Full, Limited 16:235"],"audio":["auto ","supported: force-dvi, off, auto, on"],"subconnector":["Unknown ","supported: Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native"],"link-status":["Good ","supported: Good, Bad"],"CTM":["0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 ","0 1"],"CONNECTOR_ID":["103 ","supported: 103"],"non-desktop":["0 ","range: (0, 1)"]},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP-1","rotation":"normal","reflection":"normal"},{"props":{"HDCP Content Type":["HDCP Type0 ","supported: HDCP Type0, HDCP Type1"],"Content Protection":["Undesired ","supported: Undesired, Desired, Enabled"],"max bpc":["12 ","range: (8, 12)"],"content type":["No Data ","supported: No Data, Graphics, Photo, Cinema, Game"],"Colorspace":["Default ","supported: Default, SMPTE_170M_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, opRGB, BT2020_CYCC, BT2020_RGB, BT2020_YCC, DCI-P3_RGB_D65, DCI-P3_RGB_Theater"],"aspect ratio":["Automatic ","supported: Automatic, 4:3, 16:9"],"Broadcast RGB":["Automatic ","supported: Automatic, Full, Limited 16:235"],"audio":["auto ","supported: force-dvi, off, auto, on"],"link-status":["Good ","supported: Good, Bad"],"CTM":["0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 ","0 1"],"CONNECTOR_ID":["113 ","supported: 113"],"non-desktop":["0 ","range: (0, 1)"]},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"HDMI-1","rotation":"normal","reflection":"normal"},{"props":{"HDCP Content Type":["HDCP Type0 ","supported: HDCP Type0, HDCP Type1"],"Content Protection":["Undesired ","supported: Undesired, Desired, Enabled"],"Colorspace":["Default ","supported: Default, RGB_Wide_Gamut_Fixed_Point, RGB_Wide_Gamut_Floating_Point, opRGB, DCI-P3_RGB_D65, BT2020_RGB, BT601_YCC, BT709_YCC, XVYCC_601, XVYCC_709, SYCC_601, opYCC_601, BT2020_CYCC, BT2020_YCC"],"max bpc":["12 ","range: (6, 12)"],"Broadcast RGB":["Automatic ","supported: Automatic, Full, Limited 16:235"],"audio":["auto ","supported: force-dvi, off, auto, on"],"subconnector":["Unknown ","supported: Unknown, VGA, DVI-D, HDMI, DP, Wireless, Native"],"link-status":["Good ","supported: Good, Bad"],"CTM":["0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 ","0 1"],"CONNECTOR_ID":["119 ","supported: 119"],"non-desktop":["0 ","range: (0, 1)","range: (0, 1)"]},"resolution_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP-2","rotation":"normal","reflection":"normal"}],"screen_number":0,"minimum_width":320,"minimum_height":200,"current_width":1920,"current_height":1080,"maximum_width":16384,"maximum_height":16384}]} diff --git a/tests/fixtures/generic/xrandr_simple.json b/tests/fixtures/generic/xrandr_simple.json index 0f1ebe49..0579caa9 100644 --- a/tests/fixtures/generic/xrandr_simple.json +++ b/tests/fixtures/generic/xrandr_simple.json @@ -1,58 +1 @@ -{ - "screens": [ - { - "screen_number": 0, - "minimum_width": 8, - "minimum_height": 8, - "current_width": 1920, - "current_height": 1080, - "maximum_width": 32767, - "maximum_height": 32767, - "associated_device": { - "associated_modes": [ - { - "resolution_width": 1920, - "resolution_height": 1080, - "is_high_resolution": false, - "frequencies": [ - { - "frequency": 60.03, - "is_current": true, - "is_preferred": true - }, - { - "frequency": 59.93, - "is_current": false, - "is_preferred": false - } - ] - }, - { - "resolution_width": 1680, - "resolution_height": 1050, - "is_high_resolution": false, - "frequencies": [ - { - "frequency": 59.88, - "is_current": false, - "is_preferred": false - } - ] - } - ], - "is_connected": true, - "is_primary": true, - "device_name": "eDP1", - "rotation": "normal", - "reflection": "normal", - "resolution_width": 1920, - "resolution_height": 1080, - "offset_width": 0, - "offset_height": 0, - "dimension_width": 310, - "dimension_height": 170 - } - } - ], - "unassociated_devices": [] -} \ No newline at end of file +{"screens":[{"devices":[{"props":{},"resolution_modes":[{"resolution_width":1920,"resolution_height":1080,"is_high_resolution":false,"frequencies":[{"frequency":60.03,"is_current":true,"is_preferred":true},{"frequency":59.93,"is_current":false,"is_preferred":false}]},{"resolution_width":1680,"resolution_height":1050,"is_high_resolution":false,"frequencies":[{"frequency":59.88,"is_current":false,"is_preferred":false}]}],"is_connected":true,"is_primary":true,"device_name":"eDP1","rotation":"normal","reflection":"normal","resolution_width":1920,"resolution_height":1080,"offset_width":0,"offset_height":0,"dimension_width":310,"dimension_height":170}],"screen_number":0,"minimum_width":8,"minimum_height":8,"current_width":1920,"current_height":1080,"maximum_width":32767,"maximum_height":32767}]} diff --git a/tests/test_xrandr.py b/tests/test_xrandr.py index 91b358ba..8080b9af 100644 --- a/tests/test_xrandr.py +++ b/tests/test_xrandr.py @@ -1,4 +1,5 @@ import pprint +import json import re import unittest from typing import Optional @@ -197,52 +198,67 @@ class XrandrTests(unittest.TestCase): def test_complete_1(self): self.maxDiff = None with open("tests/fixtures/generic/xrandr.out", "r") as f: - txt = f.read() - actual = parse(txt, quiet=True) + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr.json', 'r') as f: + reference = json.loads(f.read()) self.assertEqual(1, len(actual["screens"])) self.assertEqual( 18, len(actual["screens"][0]["devices"][0]["resolution_modes"]) ) + self.assertEqual(actual, reference) def test_complete_2(self): with open("tests/fixtures/generic/xrandr_2.out", "r") as f: - txt = f.read() - actual = parse(txt, quiet=True) + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr_2.json', 'r') as f: + reference = json.loads(f.read()) self.assertEqual(1, len(actual["screens"])) self.assertEqual( 38, len(actual["screens"][0]["devices"][0]["resolution_modes"]) ) + self.assertEqual(actual, reference) def test_complete_3(self): with open("tests/fixtures/generic/xrandr_3.out", "r") as f: - txt = f.read() - actual = parse(txt, quiet=True) + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr_3.json', 'r') as f: + reference = json.loads(f.read()) self.assertEqual(1, len(actual["screens"])) self.assertEqual( 2, len(actual["screens"][0]["devices"]), ) + self.assertEqual(actual, reference) def test_complete_4(self): with open("tests/fixtures/generic/xrandr_simple.out", "r") as f: - txt = f.read() - actual = parse(txt, quiet=True) + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr_simple.json', 'r') as f: + reference = json.loads(f.read()) self.assertEqual(1, len(actual["screens"])) self.assertEqual(2, len(actual["screens"][0]["devices"][0]["resolution_modes"])) + self.assertEqual(actual, reference) def test_complete_5(self): with open("tests/fixtures/generic/xrandr_properties_1.out", "r") as f: - txt = f.read() - actual = parse(txt, quiet=True) + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr_properties_1.json', 'r') as f: + reference = json.loads(f.read()) self.assertEqual(1, len(actual["screens"])) self.assertEqual( 38, len(actual["screens"][0]["devices"][0]["resolution_modes"]) ) + self.assertEqual(actual, reference) # def test_model(self): # asus_edid = [ @@ -346,6 +362,16 @@ default connected 1024x600+0+0 0mm x 0mm actual["screens"][0]["devices"][0]["props"]["EdidModel"], # type: ignore ) + def test_issue_549(self): + """https://github.com/kellyjonbrazil/jc/issues/549""" + with open("tests/fixtures/generic/xrandr_extra_hv_lines.out", "r") as f: + actual = parse(f.read(), quiet=True) + + with open('tests/fixtures/generic/xrandr_extra_hv_lines.json', 'r') as f: + reference = json.loads(f.read()) + + self.assertEqual(actual, reference) + if __name__ == "__main__": unittest.main()