Best Python code snippet using avocado_python
sysinfo.py
Source:sysinfo.py  
...150        genio.write_file(added_path, added_packages)151        removed_path = os.path.join(self.basedir, "removed_packages")152        removed_packages = "\n".join(old_packages - new_packages) + "\n"153        genio.write_file(removed_path, removed_packages)154    def _save_sysinfo(self, log_hook, sysinfo_dir, optimized=False):155        try:156            file_path = os.path.join(sysinfo_dir, log_hook.name)157            with open(file_path, "wb") as log_file:158                for data in log_hook.collect():159                    log_file.write(data)160            if optimized:161                self._optimize(log_hook)162        except sysinfo.CollectibleException as e:163            log.debug(e.args[0])164        except Exception as exc:  # pylint: disable=W0703165            log.error("Collection %s failed: %s", type(log_hook), exc)166    def _optimize(self, log_hook):167        pre_file = os.path.join(self.pre_dir, log_hook.name)168        post_file = os.path.join(self.post_dir, log_hook.name)169        if filecmp.cmp(pre_file, post_file):170            os.remove(post_file)171            log.debug("Not logging %s (no change detected)", log_hook.name)172    def start(self):173        """Log all collectibles at the start of the event."""174        os.environ["AVOCADO_SYSINFODIR"] = self.pre_dir175        for log_hook in self.start_collectibles:176            # log daemons in profile directory177            if isinstance(log_hook, sysinfo.Daemon):178                try:179                    log_hook.run()180                except sysinfo.CollectibleException as e:181                    log.debug(e.args[0])182            else:183                self._save_sysinfo(log_hook, self.pre_dir)184        if self.log_packages:185            self._log_installed_packages(self.pre_dir)186    def end(self, status=""):187        """188        Logging hook called whenever a job finishes.189        """190        optimized = self.config.get("sysinfo.collect.optimize")191        os.environ["AVOCADO_SYSINFODIR"] = self.post_dir192        for log_hook in self.end_collectibles:193            self._save_sysinfo(log_hook, self.post_dir, optimized)194        if status == "FAIL":195            for log_hook in self.end_fail_collectibles:196                self._save_sysinfo(log_hook, self.post_dir, optimized)197        # Stop daemon(s) started previously198        for log_hook in self.start_collectibles:199            if isinstance(log_hook, sysinfo.Daemon):200                self._save_sysinfo(log_hook, self.post_dir)201        if self.log_packages:202            self._log_modified_packages(self.post_dir)203def collect_sysinfo(basedir):204    """205    Collect sysinfo to a base directory.206    """207    output.add_log_handler(log.name)208    if not basedir:209        cwd = os.getcwd()210        timestamp = time.strftime("%Y-%m-%d-%H.%M.%S")211        basedir = os.path.join(cwd, f"sysinfo-{timestamp}")212    sysinfo_logger = SysInfo(basedir=basedir)213    sysinfo_logger.start()214    sysinfo_logger.end()...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!!
