Best Python code snippet using lisa_python
process.py
Source:process.py  
...221                expected_exit_code=expected_exit_code,222                message=expected_exit_code_failure_message,223            )224        if self._is_posix and self._sudo:225            self._result.stdout = self._filter_sudo_result(self._result.stdout)226        return self._result227    def kill(self) -> None:228        if self._process:229            self._log.debug(f"Killing process : {self._id_}")230            try:231                if self._shell.is_remote:232                    # Support remote Posix so far233                    self._process.send_signal(9)234                else:235                    # local process should use the compiled value236                    # the value is different between windows and posix237                    self._process.send_signal(signal.SIGTERM)238            except Exception as identifier:239                self._log.debug(f"failed on killing process: {identifier}")240    def is_running(self) -> bool:241        if self._running and self._process:242            self._running = self._process.is_running()243        return self._running244    def wait_output(245        self,246        keyword: str,247        timeout: int = 300,248        error_on_missing: bool = True,249        interval: int = 1,250    ) -> None:251        # check if stdout buffers contain the string "keyword" to determine if252        # it is running253        start_time = time.time()254        while time.time() - start_time < timeout:255            # LogWriter only flushes if "\n" is written, so we need to flush256            # manually.257            self._stdout_writer.flush()258            # check if buffer contains the keyword259            if keyword in self._log_buffer.getvalue():260                return261            time.sleep(interval)262        if error_on_missing:263            raise LisaException(264                f"{keyword} not found in stdout after {timeout} seconds"265            )266        else:267            self._log.debug(268                f"not found '{keyword}' in {timeout} seconds, but ignore it."269            )270    def _recycle_resource(self) -> None:271        # TODO: The spur library is not very good and leaves open272        # resources (probably due to it starting the process with273        # `bufsize=0`). We need to replace it, but for now, we274        # manually close the leaks.275        if isinstance(self._process, spur.local.LocalProcess):276            popen: subprocess.Popen[str] = self._process._subprocess277            if popen.stdin:278                popen.stdin.close()279            if popen.stdout:280                popen.stdout.close()281            if popen.stderr:282                popen.stderr.close()283        elif isinstance(self._process, spur.ssh.SshProcess):284            if self._process._stdin:285                self._process._stdin.close()286            if self._process._stdout:287                self._process._stdout.close()288            if self._process._stderr:289                self._process._stderr.close()290        self._process = None291    def _filter_sudo_result(self, raw_input: str) -> str:292        # this warning message may break commands, so remove it from the first line293        # of standard output.294        if raw_input.startswith("sudo: unable to resolve host"):295            lines = raw_input.splitlines(keepends=True)296            raw_input = "".join(lines[1:])297            self._log.debug(f'found error message in sudo: "{lines[0]}"')298        return raw_input299def _create_exports(update_envs: Dict[str, str]) -> str:300    result: str = ""301    for key, value in update_envs.items():302        value = value.replace('"', '\\"')303        result += f'export {key}="{value}";'...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
