Skip to content

Commit bee95b4

Browse files
committed
Run test fixtures
To simplify test run set of files in 'fixtures' folder is used. Currently path to this folder should be specified, this need to be externalized.
1 parent 1a5f143 commit bee95b4

File tree

4 files changed

+64
-32
lines changed

4 files changed

+64
-32
lines changed

tests/base.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import os
2+
from unittest import TestCase
3+
4+
import sublime
5+
6+
7+
class IndentXmlBase(TestCase):
8+
src = ""
9+
fixtures_path = "/Users/alekseinesterov/dev/sublimetext_indentxml/tests/fixtures/"
10+
11+
def set_text(self, string):
12+
self.view.run_command("insert", {"characters": string})
13+
14+
def get_text(self):
15+
return self.view.substr(sublime.Region(0, self.view.size()))
16+
17+
def setUp(self):
18+
self.view = sublime.active_window().new_file()
19+
20+
def tearDown(self):
21+
if self.view:
22+
self.view.set_scratch(True)
23+
self.view.window().focus_view(self.view)
24+
self.view.window().run_command("close_file")
25+
26+
def indent(self):
27+
self.view.run_command("auto_indent")
28+
29+
def indent_xml(self):
30+
self.view.run_command("indent_xml")
31+
32+
def indent_json(self):
33+
self.view.run_command("indent_json")
34+
35+
def run_all_fixtures(self):
36+
files = os.listdir(self.fixtures_path)
37+
input_files = filter(lambda f: "input" in f, files)
38+
for input_file in input_files:
39+
output_file = input_file.replace("input", "output")
40+
self.run_fixture(input_file, output_file)
41+
42+
def run_fixture(self, input_file, output_file):
43+
with open(self.get_fixture_filename(input_file)) as input:
44+
with open(self.get_fixture_filename(output_file)) as output:
45+
self.run_test(input.read(), output.read())
46+
47+
def get_fixture_filename(self, filename):
48+
return os.path.join(self.fixtures_path, filename)
49+
50+
def run_test(self, src, expectation):
51+
pass

tests/fixtures/01_input.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<root><node zattr="z" attr="a" attr2="b"></node></root>

tests/fixtures/01_output.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<root>
3+
<node attr="a" attr2="b" zattr="z"/>
4+
</root>

tests/test_indentxml.py

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,13 @@
1-
from unittest import TestCase
2-
3-
import sublime
4-
5-
6-
class IndentXmlBase(TestCase):
7-
8-
src = ""
9-
10-
def set_text(self, string):
11-
self.view.run_command("insert", {"characters": string})
12-
13-
def get_text(self):
14-
return self.view.substr(sublime.Region(0, self.view.size()))
15-
16-
def setUp(self):
17-
self.view = sublime.active_window().new_file()
18-
19-
def tearDown(self):
20-
if self.view:
21-
self.view.set_scratch(True)
22-
self.view.window().focus_view(self.view)
23-
self.view.window().run_command("close_file")
24-
25-
def indent(self):
26-
self.view.run_command("indent_xml")
1+
from base import IndentXmlBase
272

283

294
class TestBasicIndentXml(IndentXmlBase):
305

31-
src = "<root><node></node></root>"
32-
expected = "<root>\n\t<node/>\n</root>"
6+
def test_fixtures(self):
7+
self.run_all_fixtures()
338

34-
def test_foo(self):
35-
self.set_text(self.src)
9+
def run_test(self, src, expectation):
10+
self.set_text(src)
11+
self.indent_xml()
3612

37-
self.indent()
38-
self.assertEqual(self.get_text(), self.expected)
13+
self.assertEqual(self.get_text(), expectation)

0 commit comments

Comments
 (0)