##// END OF EJS Templates
Fix assert_equal ref
Jonathan Frederic -
Show More
@@ -1,142 +1,143 b''
1 1 """
2 2 Contains base test class for nbconvert
3 3 """
4 4 #-----------------------------------------------------------------------------
5 5 #Copyright (c) 2013, the IPython Development Team.
6 6 #
7 7 #Distributed under the terms of the Modified BSD License.
8 8 #
9 9 #The full license is in the file COPYING.txt, distributed with this software.
10 10 #-----------------------------------------------------------------------------
11 11
12 12 #-----------------------------------------------------------------------------
13 13 # Imports
14 14 #-----------------------------------------------------------------------------
15 15
16 16 import os
17 17 import glob
18 18 import shutil
19 19
20 from nose.tools import assert_equal
20 21 import IPython
21 22 from IPython.utils.tempdir import TemporaryWorkingDirectory
22 23 from IPython.utils.process import get_output_error_code
23 24 from IPython.testing.tools import get_ipython_cmd
24 25
25 26 # a trailing space allows for simpler concatenation with the other arguments
26 27 ipy_cmd = get_ipython_cmd(as_string=True) + " "
27 28
28 29 #-----------------------------------------------------------------------------
29 30 # Classes and functions
30 31 #-----------------------------------------------------------------------------
31 32
32 33
33 34 class TestsBase(object):
34 35 """Base tests class. Contains useful fuzzy comparison and nbconvert
35 36 functions."""
36 37
37 38
38 39 def fuzzy_compare(self, a, b, newlines_are_spaces=True, tabs_are_spaces=True,
39 40 fuzzy_spacing=True, ignore_spaces=False,
40 41 ignore_newlines=False, case_sensitive=False, leave_padding=False):
41 42 """
42 43 Performs a fuzzy comparison of two strings. A fuzzy comparison is a
43 44 comparison that ignores insignificant differences in the two comparands.
44 45 The significance of certain differences can be specified via the keyword
45 46 parameters of this method.
46 47 """
47 48
48 49 if not leave_padding:
49 50 a = a.strip()
50 51 b = b.strip()
51 52
52 53 if ignore_newlines:
53 54 a = a.replace('\n', '')
54 55 b = b.replace('\n', '')
55 56
56 57 if newlines_are_spaces:
57 58 a = a.replace('\n', ' ')
58 59 b = b.replace('\n', ' ')
59 60
60 61 if tabs_are_spaces:
61 62 a = a.replace('\t', ' ')
62 63 b = b.replace('\t', ' ')
63 64
64 65 if ignore_spaces:
65 66 a = a.replace(' ', '')
66 67 b = b.replace(' ', '')
67 68
68 69 if fuzzy_spacing:
69 70 a = self.recursive_replace(a, ' ', ' ')
70 71 b = self.recursive_replace(b, ' ', ' ')
71 72
72 73 if not case_sensitive:
73 74 a = a.lower()
74 75 b = b.lower()
75
76 self.assertEqual(a, b)
76
77 assert_equal(a, b)
77 78
78 79
79 80 def recursive_replace(self, text, search, replacement):
80 81 """
81 82 Performs a recursive replacement operation. Replaces all instances
82 83 of a search string in a text string with a replacement string until
83 84 the search string no longer exists. Recursion is needed because the
84 85 replacement string may generate additional search strings.
85 86
86 87 For example:
87 88 Replace "ii" with "i" in the string "Hiiii" yields "Hii"
88 89 Another replacement yields "Hi" (the desired output)
89 90
90 91 Parameters:
91 92 -----------
92 93 text : string
93 94 Text to replace in.
94 95 search : string
95 96 String to search for within "text"
96 97 replacement : string
97 98 String to replace "search" with
98 99 """
99 100 while search in text:
100 101 text = text.replace(search, replacement)
101 102 return text
102 103
103 104 def create_temp_cwd(self, copy_filenames=None):
104 105 temp_dir = TemporaryWorkingDirectory()
105 106
106 107 #Copy the files if requested.
107 108 if copy_filenames is not None:
108 109 self.copy_files_to(copy_filenames)
109 110
110 111 #Return directory handler
111 112 return temp_dir
112 113
113 114
114 115 def copy_files_to(self, copy_filenames, dest='.'):
115 116 "Copy test files into the destination directory"
116 117 if not os.path.isdir(dest):
117 118 os.makedirs(dest)
118 119 files_path = self._get_files_path()
119 120 for pattern in copy_filenames:
120 121 for match in glob.glob(os.path.join(files_path, pattern)):
121 122 shutil.copyfile(match, os.path.join(dest, os.path.basename(match)))
122 123
123 124
124 125 def _get_files_path(self):
125 126
126 127 #Get the relative path to this module in the IPython directory.
127 128 names = self.__module__.split('.')[1:-1]
128 129 names.append('files')
129 130
130 131 #Build a path using the IPython directory and the relative path we just
131 132 #found.
132 133 path = IPython.__path__[0]
133 134 for name in names:
134 135 path = os.path.join(path, name)
135 136 return path
136 137
137 138
138 139 def call(self, parameters, raise_on_error=True):
139 140 stdout, stderr, retcode = get_output_error_code(ipy_cmd + parameters)
140 141 if retcode != 0 and raise_on_error:
141 142 raise OSError(stderr)
142 143 return stdout, stderr
General Comments 0
You need to be logged in to leave comments. Login now