Skip to content

Commit bf39bd3

Browse files
committed
migrate_context: widgets crashed when migrating context without version
1 parent 5fd880c commit bf39bd3

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Orange/widgets/settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,8 @@ def _migrate_contexts(self, contexts):
637637
context = contexts[i]
638638
try:
639639
self.widget_class.migrate_context(
640-
context, context.values.pop(VERSION_KEY, 0))
640+
context, context.values.pop(
641+
VERSION_KEY, self.widget_class.settings_version))
641642
except IncompatibleContext:
642643
del contexts[i]
643644
except Exception: # pylint: disable=broad-except

Orange/widgets/tests/base.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,13 @@ def _compare_selected_annotated_domains(self, selected, annotated):
839839
annotated_vars = annotated.domain.variables + annotated.domain.metas
840840
self.assertLess(set(selected_vars), set(annotated_vars))
841841

842+
def test_migrate_context_without_version(self):
843+
self.send_signal(self.signal_name, self.signal_data)
844+
settings = self.widget.settingsHandler.pack_data(self.widget)
845+
if "context_settings" in settings:
846+
del settings["context_settings"][0].values["__version__"]
847+
self.create_widget(self.widget.__class__, stored_settings=settings)
848+
842849

843850
class ProjectionWidgetTestMixin:
844851
"""Class for projection widget testing"""
@@ -1017,6 +1024,12 @@ def test_send_report(self, timeout=DEFAULT_TIMEOUT):
10171024
self.send_signal(self.widget.Inputs.data, None)
10181025
self.widget.report_button.click()
10191026

1027+
def test_migrate_context_without_version(self):
1028+
self.send_signal(self.signal_name, self.signal_data)
1029+
settings = self.widget.settingsHandler.pack_data(self.widget)
1030+
del settings["context_settings"][0].values["__version__"]
1031+
self.create_widget(self.widget.__class__, stored_settings=settings)
1032+
10201033

10211034
class AnchorProjectionWidgetTestMixin(ProjectionWidgetTestMixin):
10221035
def test_embedding_missing_values(self):

0 commit comments

Comments
 (0)