Skip to content

Commit 075c65c

Browse files
Update utests. Keep coverage.xml
1 parent 851dd48 commit 075c65c

File tree

8 files changed

+117
-9
lines changed

8 files changed

+117
-9
lines changed

.github/workflows/fedora_41.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
- uses: actions/upload-artifact@v4
9494
with:
9595
name: coverage-report
96-
path: .coverage-reports/htmlcov
96+
path: .coverage-reports/
9797
- name: Install and run
9898
run: |
9999
git submodule update --init --recursive

.github/workflows/linux.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ jobs:
128128
- uses: actions/upload-artifact@v4
129129
with:
130130
name: coverage-report
131-
path: .coverage-reports/htmlcov/
131+
path: .coverage-reports/
132132
- name: Install and run
133133
run: |
134134
git submodule update --init --recursive

pytest.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
[pytest]
22
addopts = -p no:warnings --order-group-scope=module
33
pythonpath = src src/robotide/preferences/configobj/src
4+

utest/application/test_editor_provider.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def test_registering(self):
3939
self.p.register_editor(TestObject, TestEditor2)
4040
assert self.p.get_editor(TestObject) == TestEditor2
4141

42-
def test_setting_deafult_editor(self):
42+
def test_setting_default_editor(self):
4343
self.p.register_editor(TestObject, TestEditor2, default=False)
4444
assert self.p.get_editor(TestObject) == TestEditor
4545

@@ -61,6 +61,11 @@ def test_registering_twice_does_nothing(self):
6161
self.p.register_editor(TestObject, TestEditor)
6262
assert self.p.get_editors(TestObject) == [TestEditor]
6363

64+
def test_set_default_last_does_nothing(self):
65+
self.p.register_editor(TestObject, TestEditor)
66+
self.p._editors[TestObject].set_default(TestEditor)
67+
assert self.p._editors[TestObject].get() == TestEditor
68+
6469
def test_activating(self):
6570
self.p.register_editor(TestObject, TestEditor2, default=False)
6671
self.p.set_active_editor(TestObject, TestEditor2)

utest/controller/test_controllers.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
import os
1818
import sys
1919
import unittest
20+
from copy import deepcopy
21+
22+
import pytest
2023
from mockito import mock
2124
from robotide.robotapi import ALIAS_MARKER
2225

@@ -30,6 +33,7 @@
3033
from robotide.controller.tablecontrollers import (
3134
VariableTableController, MetadataListController, ImportSettingsController,
3235
WithListOperations)
36+
from robotide.controller.settingcontrollers import MetadataController
3337
from robotide.publish.messages import (
3438
RideImportSetting, RideImportSettingRemoved, RideImportSettingAdded,
3539
RideImportSettingChanged, RideItemSettingsChanged)
@@ -497,6 +501,33 @@ def test_editing(self):
497501
self._assert_var_in_ctrl(1, '@{listvar}', ['a', 'b', 'c'])
498502
assert self.ctrl.dirty
499503

504+
def test_index_difference(self):
505+
import operator
506+
self.ctrl.add_variable('${blaa}', 'value')
507+
names = [n for n in self.ctrl] # [n for n in self.ctrl]
508+
ordered = deepcopy(names)
509+
ordered = sorted(ordered, key=operator.attrgetter('name'))
510+
diff = self.ctrl._index_difference(names, ordered)
511+
print(f"DEBUG: test_controllers.py VariablesControllerTest test_index_difference diff={diff}")
512+
assert diff == [1, 2, 0]
513+
514+
def test_validate_name(self):
515+
first = self.ctrl.validate_dict_variable_name('%{boo}') # validate_name
516+
# print(f"DEBUG: test_controllers.py VariablesControllerTest test_validate_name first={first.error_message}")
517+
assert first.error_message == "Dictionary variable name must be in format &{name}"
518+
self._add_var('&{foo}', 'boo')
519+
second = self.ctrl.validate_dict_variable_name('&{foo}') # validate_name
520+
# print(f"DEBUG: test_controllers.py VariablesControllerTest test_validate_name first={second.error_message}")
521+
assert second.error_message == "Variable with this name already exists."
522+
523+
def test_delete_var(self):
524+
self._add_var('${boo}', 'boo')
525+
existing = [x.name for x in self.ctrl]
526+
assert existing == ['${foo}', '@{bar}', '${boo}']
527+
self.ctrl.delete(-1)
528+
existing = [x.name for x in self.ctrl]
529+
assert existing == ['${foo}', '@{bar}']
530+
500531
def _assert_var_in_ctrl(self, index, name, value):
501532
assert self.ctrl[index].name == name
502533
assert self.ctrl[index].value == value
@@ -525,6 +556,14 @@ def test_editing(self):
525556
def test_serialization(self):
526557
assert (self._get_metadata(0).as_list() == ['Metadata', 'Meta name', 'Some value'])
527558

559+
def test_iter_metadatalist(self):
560+
for item in self.ctrl:
561+
assert isinstance(item, MetadataController)
562+
563+
def test_add_metadata(self):
564+
self.ctrl.add_metadata('test_metadata', 'this is the value', 'this is the comment')
565+
self._assert_meta_in_model(-1, 'test_metadata', 'this is the value')
566+
528567
def _assert_meta_in_ctrl(self, index, name, value):
529568
assert self.ctrl[index].name == name
530569
assert self.ctrl[index].value == value
@@ -550,6 +589,13 @@ def _items(self):
550589
def mark_dirty(self):
551590
self.dirty = True
552591

592+
@property
593+
def original_items(self):
594+
return WithListOperations()._items
595+
596+
def original_mark_dirty(self):
597+
WithListOperations.mark_dirty(self)
598+
553599

554600
class WithListOperationsTest(unittest.TestCase):
555601

@@ -582,6 +628,16 @@ def test_delete(self):
582628
self._list_operations.delete(0)
583629
self._assert_item_in(0, 'bar')
584630

631+
def test_original_items(self):
632+
with pytest.raises(NotImplementedError):
633+
items = self._list_operations.original_items
634+
print(f"DEBUG: test_controllers WithListOperationsTests test_original_items items={items}")
635+
636+
def test_original_mark_dirty(self):
637+
with pytest.raises(NotImplementedError):
638+
self._list_operations.original_mark_dirty()
639+
print("DEBUG: test_controllers WithListOperationsTests test_original_mark_dirty")
640+
585641
def _assert_item_in(self, index, name):
586642
assert self._list_operations._items[index] == name
587643

utest/editor/test_z_kweditor_plugin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,11 @@ def test_contentassist_file_button(self):
530530
wx.CallLater(5000, self.app.ExitMainLoop)
531531
self.app.MainLoop()
532532

533+
def test_get_resources(self):
534+
res = self.creator._only_resource_files(self.frame.tree)
535+
print(f"DEBUG: test_edit_creator.py EditorCreatorTest test_get_resources res={res}")
536+
537+
533538

534539
if __name__ == '__main__':
535540
unittest.main()

utest/namespace/test_resourcefactory.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def test_resourcefactory_ignores_imported_resource_from_ignore_directory(
6363

6464
def test_resourcefactory_ignores_imported_resource_from_ignore_subdirectory(self):
6565
self.r = self._create_factory(os.path.split(os.path.dirname(__file__))[0])
66-
self.assertEqual(None, self.r.get_resource_from_import(self._import, self._context))
66+
self.assertIsNone(self.r.get_resource_from_import(self._import, self._context))
6767

6868
def test_resourcefactory_finds_imported_resource_when_subdirectory_ignored(self):
6969
self.r = self._create_factory(os.path.join(os.path.dirname(__file__), 'something'))
@@ -77,7 +77,7 @@ def test_resourcefactory_finds_imported_resource_when_similar_ignore_name(self):
7777
def test_resourcefactory_ignores_imported_resource_when_relative_import(self):
7878
self.r = self._create_factory(os.path.abspath('.'))
7979
imp = ImportSetting(None, os.path.join('.', 'foo'))
80-
self.assertEqual(None, self.r.get_resource_from_import(imp, self._context))
80+
self.assertIsNone(self.r.get_resource_from_import(imp, self._context))
8181

8282
def test_resourcefactory_finds_imported_resource_from_python_path(self):
8383
self.r = _ResourceFactory(FakeSettings())
@@ -87,7 +87,14 @@ def test_resourcefactory_finds_imported_resource_from_python_path(self):
8787
def test_resourcefactory_ignores_imported_resource_from_python_path(self):
8888
self.r = self._create_factory(os.path.dirname(__file__))
8989
self.r.from_path = os.path.dirname(__file__)
90-
self.assertEqual(None, self.r.get_resource_from_import(self._import, self._context))
90+
self.assertIsNone(self.r.get_resource_from_import(self._import, self._context))
91+
92+
def test_resourcefactory_with_separator(self):
93+
self.r = self._create_factory(os.path.dirname(__file__))
94+
self.r.from_path = os.path.dirname(__file__)
95+
dir_name = self.r._with_separator(self.r.from_path)
96+
last_char = dir_name[-1]
97+
assert last_char == os.path.sep
9198

9299
if IS_WINDOWS:
93100

@@ -102,7 +109,7 @@ def test_case_insensitive_ignore_relative_with_pattern(self):
102109

103110
def _ignore_import(self, exclude_directory):
104111
self.r = self._create_factory(exclude_directory)
105-
self.assertEqual(None, self.r.get_resource_from_import(self._import, self._context))
112+
self.assertIsNone(self.r.get_resource_from_import(self._import, self._context))
106113

107114
def _create_factory(self, excluded_dir):
108115
settings = FakeSettings()
@@ -120,7 +127,7 @@ def _mock_context(self):
120127

121128
def _is_resolved(self, factory, imp=None):
122129
imp = imp or self._import
123-
self.assertNotEqual(None, factory.get_resource_from_import(imp, self._context))
130+
self.assertIsNotNone(factory.get_resource_from_import(imp, self._context))
124131

125132

126133
if __name__ == '__main__':

utest/validators/test_name_validation.py

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,32 @@
1414
# limitations under the License.
1515

1616
import unittest
17+
import pytest
1718

1819
from robotide.robotapi import VariableTable, KeywordTable, TestCaseTable
1920
from robotide.controller.macrocontrollers import (
2021
UserKeywordController, TestCaseController)
2122
from robotide.controller.tablecontrollers import (
22-
VariableTableController, KeywordTableController, TestCaseTableController)
23+
VariableTableController, KeywordTableController, TestCaseTableController, _MacroTable)
2324
from robotide.validators import (
2425
ScalarVariableNameValidator, ListVariableNameValidator,
2526
UserKeywordNameValidator, TestCaseNameValidator)
2627

2728

29+
from ..controller.controller_creator import _FakeProject
30+
31+
32+
class _FakeParent(_FakeProject):
33+
def __init__(self):
34+
self.parent = None
35+
self.dirty = False
36+
self.datafile = None
37+
self._setting_table = self
38+
39+
def mark_dirty(self):
40+
self.dirty = True
41+
42+
2843
class _NameValidationTest(object):
2944

3045
def mock_ctrl(self):
@@ -119,6 +134,25 @@ class TestCaseNameValidationTest(_MacroNameValidationTest, unittest.TestCase):
119134
validator_class = TestCaseNameValidator
120135

121136

137+
class MacroNameValidationTest(unittest.TestCase):
138+
139+
def setUp(self):
140+
self.parent = _FakeParent()
141+
self.table = TestCaseTableController(self.parent, None)
142+
self.keyword_table = KeywordTableController(self.parent, KeywordTable(self.parent))
143+
144+
def test_validate_name(self):
145+
validation = self.keyword_table.validate_name("New Line \nName\n")
146+
# print(f"DEBUG: test_name_validation.py MacroNameValidationTest test_validate_name validation
147+
# ={validation.error_message}")
148+
assert "name contains newlines" in validation.error_message
149+
150+
def test_items_macrotable(self):
151+
with pytest.raises(NotImplementedError):
152+
items = _MacroTable(self.table, self.table).items
153+
print(f"DEBUG: test_name_validation.py MacroNameValidationTest test_items_macrotable items={items}")
154+
155+
122156
if __name__ == '__main__':
123157
unittest.main()
124158

0 commit comments

Comments
 (0)