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
	 Marek Marczykowski-Górecki
						Marek Marczykowski-Górecki