Skip to content

Commit f70f9e1

Browse files
committed
OWFile: Fix invalid settings reuse
As domain editor shows variable's values, it should only reuse settings when two discrete variables have the same settings.
1 parent 2bbe7ed commit f70f9e1

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

Orange/tests/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77

88

99
@contextmanager
10-
def named_file(content, encoding=None):
11-
file = tempfile.NamedTemporaryFile("wt", delete=False, encoding=encoding)
10+
def named_file(content, encoding=None, suffix=None):
11+
file = tempfile.NamedTemporaryFile("wt", delete=False,
12+
encoding=encoding, suffix=suffix)
1213
file.write(content)
1314
name = file.name
1415
file.close()

Orange/widgets/data/owfile.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,9 @@ class OWFile(widget.OWWidget, RecentPathsWComboMixin):
8686
SIZE_LIMIT = 1e7
8787
LOCAL_FILE, URL = range(2)
8888

89-
settingsHandler = PerfectDomainContextHandler()
89+
settingsHandler = PerfectDomainContextHandler(
90+
match_values=PerfectDomainContextHandler.MATCH_VALUES_ALL
91+
)
9092

9193
# Overload RecentPathsWidgetMixin.recent_paths to set defaults
9294
recent_paths = Setting([

Orange/widgets/data/tests/test_owfile.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import Orange
1212
from Orange.data import FileFormat, dataset_dirs, StringVariable, Table, \
1313
Domain, DiscreteVariable
14+
from Orange.tests import named_file
1415
from Orange.widgets.data.owfile import OWFile
1516
from Orange.widgets.tests.base import WidgetTest
1617

@@ -140,3 +141,27 @@ def test_check_column_noname(self):
140141
self.assertEqual(self.widget.domain_editor.model().data(idx, Qt.DisplayRole), temp)
141142
self.widget.domain_editor.model().setData(idx, "", Qt.EditRole)
142143
self.assertEqual(self.widget.domain_editor.model().data(idx, Qt.DisplayRole), temp)
144+
145+
def test_context_match_includes_variable_values(self):
146+
file1="""\
147+
var
148+
a b
149+
150+
a
151+
"""
152+
file2="""\
153+
var
154+
a b c
155+
156+
a
157+
"""
158+
editor = self.widget.domain_editor
159+
idx = self.widget.domain_editor.model().createIndex(0, 3)
160+
161+
with named_file(file1, suffix=".tab") as filename:
162+
self.open_dataset(filename)
163+
self.assertEqual(editor.model().data(idx, Qt.DisplayRole), "a, b")
164+
165+
with named_file(file2, suffix=".tab") as filename:
166+
self.open_dataset(filename)
167+
self.assertEqual(editor.model().data(idx, Qt.DisplayRole), "a, b, c")

0 commit comments

Comments
 (0)