@@ -56,6 +56,7 @@ def __init__(
56
56
self ._stdout = self ._open (log_dir , 'stdout.log' )
57
57
self ._stderr = self ._open (log_dir , 'stderr.log' )
58
58
self ._adb_log = self ._open (log_dir , 'logcat.log' )
59
+ self ._log_dir = log_dir
59
60
self ._name = name
60
61
61
62
self ._emulator_binary = emulator_binary
@@ -93,12 +94,12 @@ def __exit__(self, exception_type, exception_value, traceback):
93
94
self ._kill (self ._logcat )
94
95
self ._close_files ()
95
96
96
- def _open (self , dirname , filename ):
97
+ def _open (self , dirname , filename , mode = 'w' ):
97
98
"""Opens a file in a given directory, creates directory if required."""
98
99
dirname = os .path .join (self ._artifacts_dir , dirname )
99
100
if (not os .path .exists (dirname )):
100
101
os .makedirs (dirname )
101
- return open (os .path .join (dirname , filename ), 'w' )
102
+ return open (os .path .join (dirname , filename ), mode )
102
103
103
104
def _wait_for_boot (self , timeout : datetime .timedelta ):
104
105
_logger .info ('Waiting for avd to boot...' )
@@ -124,6 +125,10 @@ def _wait_for_boot(self, timeout: datetime.timedelta):
124
125
self ._kill (wait , sig = signal .SIGKILL )
125
126
raise RuntimeError ("Emulator startup timed out." )
126
127
128
+ with self ._open (self ._log_dir , 'stderr.log' , mode = 'r' ) as stderr :
129
+ _logger .error ('Emulator failed with exit code {}\n {}' .format (
130
+ self ._process .returncode , stderr .read ()))
131
+
127
132
self ._kill (wait )
128
133
raise RuntimeError (
129
134
"Emulator failed to launch. See emulator logs for details." )
0 commit comments