1 | # -*- coding: utf-8 -*- |
---|
2 | # |
---|
3 | # Copyright (C) 2005-2007 Christopher Lenz <cmlenz@gmx.de> |
---|
4 | # Copyright (C) 2008 Matt Good <matt@matt-good.net> |
---|
5 | # Copyright (C) 2008-2010 Edgewall Software |
---|
6 | # Copyright (C) 2009 Grzegorz Sobanski <silk@boktor.net> |
---|
7 | # All rights reserved. |
---|
8 | # |
---|
9 | # This software is licensed as described in the file COPYING, which |
---|
10 | # you should have received as part of this distribution. The terms |
---|
11 | # are also available at http://bitten.edgewall.org/wiki/License. |
---|
12 | |
---|
13 | import os |
---|
14 | import cPickle as pickle |
---|
15 | import shutil |
---|
16 | import tempfile |
---|
17 | import unittest |
---|
18 | |
---|
19 | from bitten.build import monotools |
---|
20 | from bitten.build import FileSet |
---|
21 | from bitten.recipe import Context, Recipe |
---|
22 | |
---|
23 | |
---|
24 | |
---|
25 | class NUnitTestCase(unittest.TestCase): |
---|
26 | |
---|
27 | def setUp(self): |
---|
28 | self.basedir = os.path.realpath(tempfile.mkdtemp()) |
---|
29 | self.ctxt = Context(self.basedir) |
---|
30 | self.results_xml = open(os.path.join(self.basedir, 'test-results.xml'), 'w') |
---|
31 | |
---|
32 | def tearDown(self): |
---|
33 | shutil.rmtree(self.basedir) |
---|
34 | |
---|
35 | def test_missing_file_param(self): |
---|
36 | self.results_xml.close() |
---|
37 | self.assertRaises(AssertionError, monotools.nunit, self.ctxt) |
---|
38 | |
---|
39 | def test_empty_results(self): |
---|
40 | self.results_xml.write('<?xml version="1.0"?>' |
---|
41 | '<test-results>' |
---|
42 | '</test-results>') |
---|
43 | self.results_xml.close() |
---|
44 | monotools.nunit(self.ctxt, self.results_xml.name) |
---|
45 | type, category, generator, xml = self.ctxt.output.pop() |
---|
46 | self.assertEqual(Recipe.REPORT, type) |
---|
47 | self.assertEqual('test', category) |
---|
48 | self.assertEqual(0, len(xml.children)) |
---|
49 | |
---|
50 | def test_successful_test_simple(self): |
---|
51 | self.results_xml.write( |
---|
52 | '<?xml version="1.0" encoding="utf-8" standalone="no"?>' |
---|
53 | '<!--This file represents the results of running a test suite-->' |
---|
54 | '<test-results name="Test.dll" total="3" failures="1" not-run="0" date="2009-01-05" time="16:32:46">' |
---|
55 | ' <environment nunit-version="2.4.7.0" clr-version="2.0.50727.42" os-version="Unix 2.6.26.1" platform="Unix" cwd="/home/silk/devel/trac/testcheckout" machine-name="tango" user="silk" user-domain="tango" />' |
---|
56 | ' <culture-info current-culture="en-US" current-uiculture="en-US" />' |
---|
57 | ' <test-suite name="Test.dll" success="False" time="0.081" asserts="0">' |
---|
58 | ' <results>' |
---|
59 | ' <test-case name="Lib.Test.KlasaTests.Test2" executed="True" success="True" time="0.001" asserts="1" />' |
---|
60 | ' </results>' |
---|
61 | ' </test-suite>' |
---|
62 | '</test-results>' |
---|
63 | ) |
---|
64 | self.results_xml.close() |
---|
65 | monotools.nunit(self.ctxt, self.results_xml.name) |
---|
66 | type, category, generator, xml = self.ctxt.output.pop() |
---|
67 | self.assertEqual(1, len(xml.children)) |
---|
68 | test_elem = xml.children[0] |
---|
69 | self.assertEqual('test', test_elem.name) |
---|
70 | self.assertEqual('0.001', test_elem.attr['duration']) |
---|
71 | self.assertEqual('success', test_elem.attr['status']) |
---|
72 | self.assertEqual('Test.dll', test_elem.attr['fixture']) |
---|
73 | |
---|
74 | |
---|
75 | def test_failure_test_simple(self): |
---|
76 | self.results_xml.write( |
---|
77 | '<?xml version="1.0" encoding="utf-8" standalone="no"?>' |
---|
78 | '<!--This file represents the results of running a test suite-->' |
---|
79 | '<test-results name="Test.dll" total="3" failures="1" not-run="0" date="2009-01-05" time="16:32:46">' |
---|
80 | ' <environment nunit-version="2.4.7.0" clr-version="2.0.50727.42" os-version="Unix 2.6.26.1" platform="Unix" cwd="/home/silk/devel/trac/testcheckout" machine-name="tango" user="silk" user-domain="tango" />' |
---|
81 | ' <culture-info current-culture="en-US" current-uiculture="en-US" />' |
---|
82 | ' <test-suite name="Test.dll" success="False" time="0.081" asserts="0">' |
---|
83 | ' <results>' |
---|
84 | ' <test-case name="Lib.Test.KlasaTests.Test2" executed="True" success="False" time="0.001" asserts="1">' |
---|
85 | ' <failure>' |
---|
86 | ' <message><![CDATA[ Expected: 2' |
---|
87 | ' But was: 3' |
---|
88 | ']]></message>' |
---|
89 | ' <stack-trace><![CDATA[at Lib.Test.KlasaTests.Test1 () [0x00000]' |
---|
90 | 'at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&)' |
---|
91 | 'at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000]' |
---|
92 | ']]></stack-trace>' |
---|
93 | ' </failure>' |
---|
94 | ' </test-case>' |
---|
95 | ' </results>' |
---|
96 | ' </test-suite>' |
---|
97 | '</test-results>' |
---|
98 | ) |
---|
99 | self.results_xml.close() |
---|
100 | monotools.nunit(self.ctxt, self.results_xml.name) |
---|
101 | type, category, generator, xml = self.ctxt.output.pop() |
---|
102 | self.assertEqual(1, len(xml.children)) |
---|
103 | test_elem = xml.children[0] |
---|
104 | self.assertEqual('test', test_elem.name) |
---|
105 | self.assertEqual('0.001', test_elem.attr['duration']) |
---|
106 | self.assertEqual('failure', test_elem.attr['status']) |
---|
107 | self.assertEqual('Test.dll', test_elem.attr['fixture']) |
---|
108 | self.assertEqual(1, len(test_elem.children)) |
---|
109 | |
---|
110 | |
---|
111 | def test_successful_test_recursive(self): |
---|
112 | self.results_xml.write( |
---|
113 | '<?xml version="1.0" encoding="utf-8" standalone="no"?>' |
---|
114 | '<!--This file represents the results of running a test suite-->' |
---|
115 | '<test-results name="Test.dll" total="3" failures="1" not-run="0" date="2009-01-05" time="16:32:46">' |
---|
116 | ' <environment nunit-version="2.4.7.0" clr-version="2.0.50727.42" os-version="Unix 2.6.26.1" platform="Unix" cwd="/home/silk/devel/trac/testcheckout" machine-name="tango" user="silk" user-domain="tango" />' |
---|
117 | ' <culture-info current-culture="en-US" current-uiculture="en-US" />' |
---|
118 | ' <test-suite name="Test.dll" success="False" time="0.081" asserts="0">' |
---|
119 | ' <results>' |
---|
120 | ' <test-suite name="Lib" success="False" time="0.078" asserts="0">' |
---|
121 | ' <results>' |
---|
122 | ' <test-suite name="Test" success="False" time="0.078" asserts="0">' |
---|
123 | ' <results>' |
---|
124 | ' <test-case name="Lib.Test.KlasaTests.Test2" executed="True" success="True" time="0.001" asserts="1" />' |
---|
125 | ' </results>' |
---|
126 | ' </test-suite>' |
---|
127 | ' </results>' |
---|
128 | ' </test-suite>' |
---|
129 | ' </results>' |
---|
130 | ' </test-suite>' |
---|
131 | '</test-results>' |
---|
132 | ) |
---|
133 | self.results_xml.close() |
---|
134 | monotools.nunit(self.ctxt, self.results_xml.name) |
---|
135 | type, category, generator, xml = self.ctxt.output.pop() |
---|
136 | self.assertEqual(1, len(xml.children)) |
---|
137 | test_elem = xml.children[0] |
---|
138 | self.assertEqual('test', test_elem.name) |
---|
139 | self.assertEqual('0.001', test_elem.attr['duration']) |
---|
140 | self.assertEqual('success', test_elem.attr['status']) |
---|
141 | self.assertEqual('Test', test_elem.attr['fixture']) |
---|
142 | |
---|
143 | |
---|
144 | def suite(): |
---|
145 | suite = unittest.TestSuite() |
---|
146 | suite.addTest(unittest.makeSuite(NUnitTestCase, 'test')) |
---|
147 | return suite |
---|
148 | |
---|
149 | if __name__ == '__main__': |
---|
150 | unittest.main(defaultTest='suite') |
---|