Skip to content

Commit 258f153

Browse files
committed
Merge remote-tracking branch 'origin/pr/654'
* origin/pr/654: tests: log .xsession-errors from testvm2 only on failure tests: add test for custom-persist feature
2 parents b2041b8 + d75733d commit 258f153

File tree

2 files changed

+84
-5
lines changed

2 files changed

+84
-5
lines changed

qubes/tests/integ/misc.py

+79
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,85 @@ def test_010_os_metadata(self):
5454
self.assertEqual(tpl.features.get("os-distribution"), "kali")
5555
self.assertEqual(tpl.features.get("os-distribution-like"), "debian")
5656

57+
def test_020_custom_persist(self):
58+
self.testvm = self.app.add_new_vm(
59+
"AppVM",
60+
label="red",
61+
name=self.make_vm_name("vm"),
62+
)
63+
self.loop.run_until_complete(self.testvm.create_on_disk())
64+
self.testvm.features["service.custom-persist"] = "1"
65+
self.testvm.features["custom-persist.downloads"] = (
66+
"dir:user:user:0755:/home/user/Downloads"
67+
)
68+
self.testvm.features["custom-persist.local_lib"] = "/usr/local/lib"
69+
self.testvm.features["custom-persist.new_dir"] = (
70+
"dir:user:user:0755:/home/user/new_dir"
71+
)
72+
self.testvm.features["custom-persist.new_file"] = (
73+
"file:user:user:0644:/home/user/new_file"
74+
)
75+
self.app.save()
76+
77+
# start first time,
78+
self.loop.run_until_complete(self.testvm.start())
79+
# do some changes
80+
try:
81+
self.loop.run_until_complete(
82+
self.testvm.run_for_stdio(
83+
"ls -ld /home/user/Downloads &&"
84+
"test $(stat -c %U /home/user/Downloads) = user &&"
85+
"test $(stat -c %G /home/user/Downloads) = user &&"
86+
"test $(stat -c %a /home/user/Downloads) = 755 &&"
87+
"echo test1 > /home/user/Downloads/download.txt &&"
88+
"ls -ld /home/user/new_dir &&"
89+
"test $(stat -c %U /home/user/new_dir) = user &&"
90+
"test $(stat -c %G /home/user/new_dir) = user &&"
91+
"test $(stat -c %a /home/user/new_dir) = 755 &&"
92+
"echo test2 > /home/user/new_dir/file_in_new_dir.txt &&"
93+
"mkdir -p /home/user/Documents &&"
94+
"chown user /home/user/Documents &&"
95+
"echo test3 > /home/user/Documents/doc.txt &&"
96+
"echo TEST4=test4 >> /home/user/.bashrc &&"
97+
"test $(stat -c %U /home/user/new_file) = user &&"
98+
"test $(stat -c %G /home/user/new_file) = user &&"
99+
"test $(stat -c %a /home/user/new_file) = 644 &&"
100+
"echo test5 > /home/user/new_file &&"
101+
"mkdir -p /usr/local/bin &&"
102+
"ln -s /bin/true /usr/local/bin/true-copy &&"
103+
"mkdir -p /usr/local/lib/subdir &&"
104+
"echo touch /etc/test5.flag >> /rw/config/rc.local",
105+
user="root",
106+
)
107+
)
108+
except subprocess.CalledProcessError as e:
109+
self.fail(
110+
f"Calling '{e.cmd}' failed with {e.returncode}: "
111+
f"{e.stdout}{e.stderr}"
112+
)
113+
self.loop.run_until_complete(self.testvm.shutdown(wait=True))
114+
# and then start again to compare what survived
115+
self.loop.run_until_complete(self.testvm.start())
116+
try:
117+
self.loop.run_until_complete(
118+
self.testvm.run_for_stdio(
119+
"grep test1 /home/user/Downloads/download.txt &&"
120+
"grep test2 /home/user/new_dir/file_in_new_dir.txt &&"
121+
"! ls -dl /home/user/Documents/doc.txt &&"
122+
"! grep TEST4=test4 /home/user/.bashrc &&"
123+
"grep test5 /home/user/new_file &&"
124+
"! ls -l /usr/local/bin/true-copy &&"
125+
"ls -dl /usr/local/lib/subdir &&"
126+
"! ls -dl /etc/test5.flag",
127+
user="root",
128+
)
129+
)
130+
except subprocess.CalledProcessError as e:
131+
self.fail(
132+
f"Too much / too little files persisted: {e.stdout}"
133+
f"{e.stderr}"
134+
)
135+
57136
@unittest.skipUnless(
58137
spawn.find_executable("xdotool"), "xdotool not installed"
59138
)

qubes/tests/integ/qrexec.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ def tearDown(self):
6363
self.testvm1.run("cat /home/user/.xsession-errors")
6464
)
6565
self.loop.run_until_complete(p.communicate())
66-
if self.testvm2.is_running():
67-
p = self.loop.run_until_complete(
68-
self.testvm2.run("cat /home/user/.xsession-errors")
69-
)
70-
self.loop.run_until_complete(p.communicate())
66+
if self.testvm2.is_running():
67+
p = self.loop.run_until_complete(
68+
self.testvm2.run("cat /home/user/.xsession-errors")
69+
)
70+
self.loop.run_until_complete(p.communicate())
7171
# socket-based qrexec tests:
7272
if os.path.exists("/etc/qubes-rpc/test.Socket"):
7373
os.unlink("/etc/qubes-rpc/test.Socket")

0 commit comments

Comments
 (0)