tests/tools: improve qvm-run tests
Fix most FD/process leaks, make qvm-run --passio tests working (as much as possible).
This commit is contained in:
parent
1d877742ae
commit
e6202d496d
@ -107,7 +107,6 @@ class TC_00_qvm_run(qubesadmin.tests.QubesTestCase):
|
||||
])
|
||||
self.assertAllCalled()
|
||||
|
||||
@unittest.expectedFailure
|
||||
def test_002_passio(self):
|
||||
self.app.expected_calls[
|
||||
('dom0', 'admin.vm.List', None, None)] = \
|
||||
@ -121,19 +120,52 @@ class TC_00_qvm_run(qubesadmin.tests.QubesTestCase):
|
||||
echo = subprocess.Popen(['echo', 'some-data'], stdout=subprocess.PIPE)
|
||||
with unittest.mock.patch('sys.stdin', echo.stdout):
|
||||
ret = qubesadmin.tools.qvm_run.main(
|
||||
['--no-gui', '--pass-io', 'test-vm', 'command'],
|
||||
['--no-gui', '--pass-io', '--filter-escape-chars',
|
||||
'test-vm', 'command'],
|
||||
app=self.app)
|
||||
|
||||
echo.stdout.close()
|
||||
echo.wait()
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(self.app.service_calls, [
|
||||
('test-vm', 'qubes.VMShell', {
|
||||
'filter_esc': self.default_filter_esc(),
|
||||
'filter_esc': True,
|
||||
'localcmd': None,
|
||||
'stdout': None,
|
||||
'stderr': None,
|
||||
'user': None,
|
||||
}),
|
||||
('test-vm', 'qubes.VMShell', b'command; exit\nsome-data\n')
|
||||
# TODO: find a way to compare b'some-data\n' sent from another
|
||||
# proces
|
||||
('test-vm', 'qubes.VMShell', b'command; exit\n')
|
||||
])
|
||||
self.assertAllCalled()
|
||||
|
||||
def test_002_passio_service(self):
|
||||
self.app.expected_calls[
|
||||
('dom0', 'admin.vm.List', None, None)] = \
|
||||
b'0\x00test-vm class=AppVM state=Running\n'
|
||||
# self.app.expected_calls[
|
||||
# ('test-vm', 'admin.vm.List', None, None)] = \
|
||||
# b'0\x00test-vm class=AppVM state=Running\n'
|
||||
echo = subprocess.Popen(['echo', 'some-data'], stdout=subprocess.PIPE)
|
||||
with unittest.mock.patch('sys.stdin', echo.stdout):
|
||||
ret = qubesadmin.tools.qvm_run.main(
|
||||
['--no-gui', '--service', '--pass-io', '--filter-escape-chars',
|
||||
'test-vm', 'test.service'],
|
||||
app=self.app)
|
||||
echo.stdout.close()
|
||||
echo.wait()
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(self.app.service_calls, [
|
||||
('test-vm', 'test.service', {
|
||||
'filter_esc': True,
|
||||
'stdout': None,
|
||||
'stderr': None,
|
||||
'user': None,
|
||||
}),
|
||||
# TODO: find a way to compare b'some-data\n' sent from another
|
||||
# proces
|
||||
('test-vm', 'test.service', b'')
|
||||
])
|
||||
self.assertAllCalled()
|
||||
|
||||
@ -156,7 +188,8 @@ class TC_00_qvm_run(qubesadmin.tests.QubesTestCase):
|
||||
['--no-gui', '--filter-esc', '--pass-io', 'test-vm',
|
||||
'command'],
|
||||
app=self.app)
|
||||
|
||||
echo.stdout.close()
|
||||
echo.wait()
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(self.app.service_calls, [
|
||||
('test-vm', 'qubes.VMShell', {
|
||||
@ -189,6 +222,8 @@ class TC_00_qvm_run(qubesadmin.tests.QubesTestCase):
|
||||
'test-vm', 'command'],
|
||||
app=self.app)
|
||||
|
||||
echo.stdout.close()
|
||||
echo.wait()
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(self.app.service_calls, [
|
||||
('test-vm', 'qubes.VMShell', {
|
||||
@ -224,6 +259,8 @@ class TC_00_qvm_run(qubesadmin.tests.QubesTestCase):
|
||||
'test-vm', 'command'],
|
||||
app=self.app)
|
||||
|
||||
echo.stdout.close()
|
||||
echo.wait()
|
||||
self.assertEqual(ret, 0)
|
||||
self.assertEqual(self.app.service_calls, [
|
||||
('test-vm', 'qubes.VMShell', {
|
||||
|
Loading…
Reference in New Issue
Block a user