Measure coverage of forked processes
This commit is contained in:
		| @@ -133,6 +133,7 @@ class ParallelHTTPServer(ParallelizationMixIn, | |||||||
|         return super().finish_request(request, client_address) |         return super().finish_request(request, client_address) | ||||||
|  |  | ||||||
|     def finish_request(self, request, client_address): |     def finish_request(self, request, client_address): | ||||||
|  |         """Don't overwrite this! (Modified by tests.)""" | ||||||
|         with self.connections_guard: |         with self.connections_guard: | ||||||
|             return self.finish_request_locked(request, client_address) |             return self.finish_request_locked(request, client_address) | ||||||
|  |  | ||||||
| @@ -164,8 +165,7 @@ class ParallelHTTPSServer(ParallelHTTPServer): | |||||||
|             ssl_version=self.protocol, ciphers=self.ciphers, |             ssl_version=self.protocol, ciphers=self.ciphers, | ||||||
|             do_handshake_on_connect=False) |             do_handshake_on_connect=False) | ||||||
|  |  | ||||||
|     def finish_request(self, request, client_address): |     def finish_request_locked(self, request, client_address): | ||||||
|         with self.connections_guard: |  | ||||||
|         try: |         try: | ||||||
|             try: |             try: | ||||||
|                 request.do_handshake() |                 request.do_handshake() | ||||||
|   | |||||||
| @@ -26,6 +26,28 @@ import radicale | |||||||
| import sys | import sys | ||||||
| from io import BytesIO | from io import BytesIO | ||||||
|  |  | ||||||
|  | from pytest_cov import embed | ||||||
|  |  | ||||||
|  | from radicale import server | ||||||
|  |  | ||||||
|  | # Measure coverage of forked processes | ||||||
|  | finish_request = server.ParallelHTTPServer.finish_request | ||||||
|  | pid = os.getpid() | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def finish_request_cov(self, request, client_address): | ||||||
|  |     cov = None | ||||||
|  |     if pid != os.getpid(): | ||||||
|  |         cov = embed.init() | ||||||
|  |     try: | ||||||
|  |         return finish_request(self, request, client_address) | ||||||
|  |     finally: | ||||||
|  |         if cov: | ||||||
|  |             embed.cleanup(cov) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | server.ParallelHTTPServer.finish_request = finish_request_cov | ||||||
|  |  | ||||||
| # Allow importing of tests.custom.... | # Allow importing of tests.custom.... | ||||||
| sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) | sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) | ||||||
| # Enable debug output | # Enable debug output | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Unrud
					Unrud