def test_versions_to_display_for_releases(current_version, last_changelog_version, expected_display, ): # Setup releases = [ {"tag_name": "v0.{}.0".format(i), "body": "Changelog v0.{}.0{}".format(i, _CUSTOM_CHANGE_LOGS.get(i, "")), "html_url": "url"} for i in reversed(range(1, 11)) ] # Run all_change_logs, change_logs, version_to_display = update_checker.versions_to_display_for_releases( StrictVersion("0.{}.0".format(current_version)), StrictVersion("0.{}.0".format(last_changelog_version)), releases) # Assert if expected_display is None: assert version_to_display is None else: assert version_to_display == VersionDescription("v0.{}.0".format(expected_display), "Changelog v0.{}.0".format(expected_display), "url") assert change_logs == [ "## v0.{0}.0\n\nChangelog v0.{0}.0{1}".format(i, _CUSTOM_EXPECTED_LOG.get(i, "")) for i in reversed(range(last_changelog_version + 1, current_version + 1)) ] assert all_change_logs == [ "## v0.{0}.0\n\nChangelog v0.{0}.0{1}".format(i, _CUSTOM_CHANGE_LOGS.get(i, "")) for i in reversed(range(1, current_version + 1)) ]
async def _on_releases_data(self, releases: Optional[List[dict]]): current_version = update_checker.strict_current_version() last_changelog = self._options.last_changelog_displayed all_change_logs, new_change_logs, version_to_display = update_checker.versions_to_display_for_releases( current_version, last_changelog, releases) if version_to_display is not None: self.display_new_version(version_to_display) if all_change_logs: from randovania.gui.widgets.changelog_widget import ChangeLogWidget changelog_tab = ChangeLogWidget(all_change_logs) self.main_tab_widget.addTab(changelog_tab, "Change Log") if new_change_logs: from randovania.gui.lib.scroll_message_box import ScrollMessageBox message_box = ScrollMessageBox.create_new( self, QtWidgets.QMessageBox.Information, "What's new", "\n".join(new_change_logs), QtWidgets.QMessageBox.Ok, ) message_box.label.setTextFormat(QtCore.Qt.TextFormat.MarkdownText) message_box.scroll_area.setMinimumSize(500, 300) await async_dialog.execute_dialog(message_box) with self._options as options: options.last_changelog_displayed = current_version
async def _on_releases_data(self, releases: Optional[List[dict]]): import markdown current_version = update_checker.strict_current_version() last_changelog = self._options.last_changelog_displayed all_change_logs, new_change_logs, version_to_display = update_checker.versions_to_display_for_releases( current_version, last_changelog, releases) if version_to_display is not None: self.display_new_version(version_to_display) if all_change_logs: changelog_tab = QtWidgets.QWidget() changelog_tab.setObjectName("changelog_tab") changelog_tab_layout = QtWidgets.QVBoxLayout(changelog_tab) changelog_tab_layout.setContentsMargins(0, 0, 0, 0) changelog_tab_layout.setObjectName("changelog_tab_layout") changelog_scroll_area = QtWidgets.QScrollArea(changelog_tab) changelog_scroll_area.setWidgetResizable(True) changelog_scroll_area.setObjectName("changelog_scroll_area") changelog_scroll_contents = QtWidgets.QWidget() changelog_scroll_contents.setGeometry(QtCore.QRect(0, 0, 489, 337)) changelog_scroll_contents.setObjectName( "changelog_scroll_contents") changelog_scroll_layout = QtWidgets.QVBoxLayout( changelog_scroll_contents) changelog_scroll_layout.setObjectName("changelog_scroll_layout") for entry in all_change_logs: changelog_label = QtWidgets.QLabel(changelog_scroll_contents) _update_label_on_show(changelog_label, markdown.markdown(entry)) changelog_label.setObjectName("changelog_label") changelog_label.setWordWrap(True) changelog_scroll_layout.addWidget(changelog_label) changelog_scroll_area.setWidget(changelog_scroll_contents) changelog_tab_layout.addWidget(changelog_scroll_area) self.help_tab_widget.addTab(changelog_tab, "Change Log") if new_change_logs: await async_dialog.message_box( self, QtWidgets.QMessageBox.Information, "What's new", markdown.markdown("\n".join(new_change_logs))) with self._options as options: options.last_changelog_displayed = current_version
def _on_releases_data(self, task: asyncio.Task): releases = task.result() current_version = update_checker.strict_current_version() last_changelog = self._options.last_changelog_displayed all_change_logs, new_change_logs, version_to_display = update_checker.versions_to_display_for_releases( current_version, last_changelog, releases) if version_to_display is not None: self.display_new_version(version_to_display) if all_change_logs: changelog_tab = QtWidgets.QWidget() changelog_tab.setObjectName("changelog_tab") changelog_tab_layout = QtWidgets.QVBoxLayout(changelog_tab) changelog_tab_layout.setContentsMargins(0, 0, 0, 0) changelog_tab_layout.setObjectName("changelog_tab_layout") changelog_scroll_area = QtWidgets.QScrollArea(changelog_tab) changelog_scroll_area.setWidgetResizable(True) changelog_scroll_area.setObjectName("changelog_scroll_area") changelog_scroll_contents = QtWidgets.QWidget() changelog_scroll_contents.setGeometry(QtCore.QRect(0, 0, 489, 337)) changelog_scroll_contents.setObjectName( "changelog_scroll_contents") changelog_scroll_layout = QtWidgets.QVBoxLayout( changelog_scroll_contents) changelog_scroll_layout.setObjectName("changelog_scroll_layout") changelog_label = QtWidgets.QLabel(changelog_scroll_contents) changelog_label.setObjectName("changelog_label") changelog_label.setText( markdown.markdown("\n".join(all_change_logs))) changelog_label.setWordWrap(True) changelog_scroll_layout.addWidget(changelog_label) changelog_scroll_area.setWidget(changelog_scroll_contents) changelog_tab_layout.addWidget(changelog_scroll_area) self.help_tab_widget.addTab(changelog_tab, "Change Log") if new_change_logs: QMessageBox.information( self, "What's new", markdown.markdown("\n".join(new_change_logs))) with self._options as options: options.last_changelog_displayed = current_version