diff --git a/tests/fixtures/generic/xrandr_fix_spaces.json b/tests/fixtures/generic/xrandr_fix_spaces.json new file mode 100644 index 00000000..98ee6634 --- /dev/null +++ b/tests/fixtures/generic/xrandr_fix_spaces.json @@ -0,0 +1 @@ +{"screens":[{"screen_number":0,"minimum_width":320,"minimum_height":200,"current_width":1846,"current_height":768,"maximum_width":8192,"maximum_height":8192,"associated_device":{"associated_modes":[{"resolution_width":1366,"resolution_height":768,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":true,"is_preferred":true}]},{"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":"LVDS-1","rotation":"normal","reflection":"normal","resolution_width":1366,"resolution_height":768,"offset_width":0,"offset_height":0,"dimension_width":344,"dimension_height":194}}],"unassociated_devices":[{"associated_modes":[{"resolution_width":1440,"resolution_height":900,"is_high_resolution":false,"frequencies":[{"frequency":59.89,"is_current":false,"is_preferred":true},{"frequency":74.98,"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":1280,"resolution_height":960,"is_high_resolution":false,"frequencies":[{"frequency":60.0,"is_current":false,"is_preferred":false}]},{"resolution_width":1280,"resolution_height":800,"is_high_resolution":false,"frequencies":[{"frequency":74.93,"is_current":false,"is_preferred":false},{"frequency":59.81,"is_current":false,"is_preferred":false}]},{"resolution_width":1152,"resolution_height":864,"is_high_resolution":false,"frequencies":[{"frequency":75.0,"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":640,"resolution_height":480,"is_high_resolution":false,"frequencies":[{"frequency":75.0,"is_current":true,"is_preferred":false},{"frequency":72.81,"is_current":false,"is_preferred":false},{"frequency":66.67,"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":"VGA-1","rotation":"left","reflection":"normal","resolution_width":480,"resolution_height":640,"offset_width":1366,"offset_height":0,"dimension_width":408,"dimension_height":255},{"associated_modes":[],"is_connected":false,"is_primary":false,"device_name":"HDMI-1","rotation":"normal","reflection":"normal"},{"associated_modes":[],"is_connected":false,"is_primary":false,"device_name":"DP-1","rotation":"normal","reflection":"normal"}]} diff --git a/tests/fixtures/generic/xrandr_fix_spaces.out b/tests/fixtures/generic/xrandr_fix_spaces.out new file mode 100644 index 00000000..452a6462 --- /dev/null +++ b/tests/fixtures/generic/xrandr_fix_spaces.out @@ -0,0 +1,44 @@ +Screen 0: minimum 320 x 200, current 1846 x 768, maximum 8192 x 8192 +LVDS-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm + 1366x768 60.00*+ + 1280x720 60.00 59.99 59.86 59.74 + 1024x768 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.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 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 +VGA-1 connected 480x640+1366+0 left (normal left inverted right x axis y axis) 408mm x 255mm + 1440x900 59.89 + 74.98 + 1280x1024 75.02 60.02 + 1280x960 60.00 + 1280x800 74.93 59.81 + 1152x864 75.00 + 1024x768 75.03 70.07 60.00 + 832x624 74.55 + 800x600 72.19 75.00 60.32 56.25 + 640x480 75.00* 72.81 66.67 59.94 + 720x400 70.08 +HDMI-1 disconnected (normal left inverted right x axis y axis) +DP-1 disconnected (normal left inverted right x axis y axis) diff --git a/tests/test_xrandr.py b/tests/test_xrandr.py index dea94f71..1d1e927c 100644 --- a/tests/test_xrandr.py +++ b/tests/test_xrandr.py @@ -196,14 +196,21 @@ class XrandrTests(unittest.TestCase): txt = f.read() actual = parse(txt, quiet=True) - with open("tests/fixtures/generic/xrandr_simple.json", "w") as f: - json.dump(actual, f, indent=True) - self.assertEqual(1, len(actual["screens"])) self.assertEqual(0, len(actual["unassociated_devices"])) self.assertEqual( 2, len(actual["screens"][0]["associated_device"]["associated_modes"]) ) + def test_infinite_loop_fix(self): + with open("tests/fixtures/generic/xrandr_fix_spaces.out", "r") as f: + txt = f.read() + actual = parse(txt, quiet=True) + + with open("tests/fixtures/generic/xrandr_fix_spaces.json", "r") as f: + json_dict = json.loads(f.read()) + + self.assertEqual(actual, json_dict) + if __name__ == '__main__': unittest.main()