From be91b443a83866119137820e45c857bc1289671a Mon Sep 17 00:00:00 2001 From: Yuxuan Shui Date: Fri, 23 Oct 2020 16:54:46 +0100 Subject: [PATCH] tests: add testcase for 22162cb7e273 Signed-off-by: Yuxuan Shui --- tests/configs/clear_shadow_unredirected.conf | 5 ++ tests/run_tests.sh | 1 + tests/testcases/clear_shadow_unredirected.py | 52 ++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 tests/configs/clear_shadow_unredirected.conf create mode 100755 tests/testcases/clear_shadow_unredirected.py diff --git a/tests/configs/clear_shadow_unredirected.conf b/tests/configs/clear_shadow_unredirected.conf new file mode 100644 index 00000000..f70b461d --- /dev/null +++ b/tests/configs/clear_shadow_unredirected.conf @@ -0,0 +1,5 @@ +shadow = true; +shadow-exclude = [ +"name = 'NoShadow'" +] +unredir-if-possible = true; diff --git a/tests/run_tests.sh b/tests/run_tests.sh index e7e5bbf2..26bdb124 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -16,3 +16,4 @@ eval `dbus-launch --sh-syntax` ./run_one_test.sh $exe configs/issue314.conf testcases/issue314_3.py ./run_one_test.sh $exe /dev/null testcases/issue299.py ./run_one_test.sh $exe configs/issue465.conf testcases/issue465.py +./run_one_test.sh $exe configs/clear_shadow_unredirected.conf testcases/clear_shadow_unredirected.py diff --git a/tests/testcases/clear_shadow_unredirected.py b/tests/testcases/clear_shadow_unredirected.py new file mode 100755 index 00000000..7ccc31fd --- /dev/null +++ b/tests/testcases/clear_shadow_unredirected.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +import xcffib.xproto as xproto +import xcffib +import time +from common import set_window_name + +conn = xcffib.connect() +setup = conn.get_setup() +root = setup.roots[0].root +visual = setup.roots[0].root_visual +depth = setup.roots[0].root_depth + +name = "_NET_WM_STATE" +name_atom = conn.core.InternAtom(False, len(name), name).reply().atom +atom = "ATOM" +atom_atom = conn.core.InternAtom(False, len(atom), atom).reply().atom +fs = "_NET_WM_STATE_FULLSCREEN" +fs_atom = conn.core.InternAtom(False, len(fs), fs).reply().atom + +# making sure disable shadow while screen is unredirected doesn't cause assertion failure +wid = conn.generate_id() +print("Window id is ", hex(wid)) + +# Create a window +conn.core.CreateWindowChecked(depth, wid, root, 0, 0, 100, 100, 0, xproto.WindowClass.InputOutput, visual, 0, []).check() + +# Set Window name so it doesn't get a shadow +set_window_name(conn, wid, "YesShadow") + +# Map the window +print("mapping") +conn.core.MapWindowChecked(wid).check() + +time.sleep(0.5) + +# Set fullscreen property, causing screen to be unredirected +conn.core.ChangePropertyChecked(xproto.PropMode.Replace, wid, name_atom, atom_atom, 32, 1, [fs_atom]).check() + +time.sleep(0.5) + +# Set the Window name so it loses its shadow +print("set new name") +set_window_name(conn, wid, "NoShadow") + +# Unmap the window +conn.core.UnmapWindowChecked(wid).check() + +time.sleep(0.5) + +# Destroy the window +conn.core.DestroyWindowChecked(wid).check()