@@ -86,49 +86,49 @@ def test_nonexist(self):
86
86
87
87
88
88
class TestInjectPlugin (unittest .TestCase ):
89
+ def setUp (self ):
90
+ self .out = Stream ('mike-mkdocs.yml' )
91
+
89
92
def test_no_plugins (self ):
90
- out = Stream ('mike-mkdocs.yml' )
91
93
cfg = '{}'
92
94
with mock .patch ('builtins.open' ,
93
95
mock_open_files ({'mkdocs.yml' : cfg })), \
94
96
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
95
- return_value = out ), \
97
+ return_value = self . out ), \
96
98
mock .patch ('os.remove' ) as mremove :
97
99
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
98
- self .assertEqual (f , out .name )
99
- newcfg = yaml .load ( out .getvalue (), Loader = yaml . Loader )
100
+ self .assertEqual (f , self . out .name )
101
+ newcfg = yaml .safe_load ( self . out .getvalue ())
100
102
mremove .assert_called_once ()
101
103
102
104
self .assertEqual (newcfg , {'plugins' : ['mike' , 'search' ]})
103
105
104
106
def test_other_plugins (self ):
105
- out = Stream ('mike-mkdocs.yml' )
106
107
cfg = 'plugins:\n - foo\n - bar:\n option: true'
107
108
with mock .patch ('builtins.open' ,
108
109
mock_open_files ({'mkdocs.yml' : cfg })), \
109
110
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
110
- return_value = out ), \
111
+ return_value = self . out ), \
111
112
mock .patch ('os.remove' ) as mremove :
112
113
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
113
- self .assertEqual (f , out .name )
114
- newcfg = yaml .load ( out .getvalue (), Loader = yaml . Loader )
114
+ self .assertEqual (f , self . out .name )
115
+ newcfg = yaml .safe_load ( self . out .getvalue ())
115
116
mremove .assert_called_once ()
116
117
117
118
self .assertEqual (newcfg , {'plugins' : [
118
119
'mike' , 'foo' , {'bar' : {'option' : True }},
119
120
]})
120
121
121
122
def test_other_plugins_dict (self ):
122
- out = Stream ('mike-mkdocs.yml' )
123
123
cfg = 'plugins:\n foo: {}\n bar:\n option: true'
124
124
with mock .patch ('builtins.open' ,
125
125
mock_open_files ({'mkdocs.yml' : cfg })), \
126
126
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
127
- return_value = out ), \
127
+ return_value = self . out ), \
128
128
mock .patch ('os.remove' ) as mremove :
129
129
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
130
- self .assertEqual (f , out .name )
131
- newcfg = yaml .load ( out .getvalue (), Loader = yaml . Loader )
130
+ self .assertEqual (f , self . out .name )
131
+ newcfg = yaml .safe_load ( self . out .getvalue ())
132
132
mremove .assert_called_once ()
133
133
134
134
self .assertEqual (newcfg , {'plugins' : {
@@ -140,44 +140,62 @@ def test_other_plugins_dict(self):
140
140
)
141
141
142
142
def test_mike_plugin (self ):
143
- out = Stream ('mike-mkdocs.yml' )
144
143
cfg = 'plugins:\n - mike'
145
144
with mock .patch ('builtins.open' ,
146
145
mock_open_files ({'mkdocs.yml' : cfg })), \
147
146
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
148
- return_value = out ), \
147
+ return_value = self . out ), \
149
148
mock .patch ('os.remove' ) as mremove :
150
149
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
151
150
self .assertEqual (f , 'mkdocs.yml' )
152
- self .assertEqual (out .getvalue (), '' )
151
+ self .assertEqual (self . out .getvalue (), '' )
153
152
mremove .assert_not_called ()
154
153
155
154
def test_mike_plugin_options (self ):
156
- out = Stream ('mike-mkdocs.yml' )
157
155
cfg = 'plugins:\n - mike:\n option: true'
158
156
with mock .patch ('builtins.open' ,
159
157
mock_open_files ({'mkdocs.yml' : cfg })), \
160
158
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
161
- return_value = out ), \
159
+ return_value = self . out ), \
162
160
mock .patch ('os.remove' ) as mremove :
163
161
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
164
162
self .assertEqual (f , 'mkdocs.yml' )
165
- self .assertEqual (out .getvalue (), '' )
163
+ self .assertEqual (self . out .getvalue (), '' )
166
164
mremove .assert_not_called ()
167
165
166
+ def test_round_trip (self ):
167
+ cfg = ('plugins:\n ' +
168
+ ' - foo:\n option: !relative $config_dir\n ' +
169
+ ' - bar:\n option: !ENV variable\n ' +
170
+ ' - baz:\n option: !ENV [variable, default]'
171
+ )
172
+ with mock .patch ('builtins.open' ,
173
+ mock_open_files ({'mkdocs.yml' : cfg })), \
174
+ mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
175
+ return_value = self .out ), \
176
+ mock .patch ('os.remove' ) as mremove :
177
+ with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
178
+ self .assertEqual (f , self .out .name )
179
+ mremove .assert_called_once ()
180
+
181
+ expected = ('plugins:\n - mike\n ' +
182
+ "- foo:\n option: !relative '$config_dir'\n " +
183
+ "- bar:\n option: !ENV 'variable'\n "
184
+ '- baz:\n option: !ENV [variable, default]\n ' )
185
+ self .assertEqual (self .out .getvalue (), expected )
186
+
168
187
def test_inherit (self ):
169
- out = Stream ('mike-mkdocs.yml' )
170
188
main_cfg = 'INHERIT: mkdocs-base.yml\n plugins:\n foo: {}\n '
171
189
base_cfg = 'plugins:\n bar: {}\n '
172
190
files = {'mkdocs.yml' : main_cfg , 'mkdocs-base.yml' : base_cfg }
173
191
with mock .patch ('builtins.open' , mock_open_files (files )), \
174
192
mock .patch ('mike.mkdocs_utils.NamedTemporaryFile' ,
175
- return_value = out ), \
193
+ return_value = self . out ), \
176
194
mock .patch ('os.path.exists' , return_value = True ), \
177
195
mock .patch ('os.remove' ) as mremove :
178
196
with mkdocs_utils .inject_plugin ('mkdocs.yml' ) as f :
179
197
self .assertEqual (f , 'mike-mkdocs.yml' )
180
- newcfg = yaml .load ( out .getvalue (), Loader = yaml . Loader )
198
+ newcfg = yaml .safe_load ( self . out .getvalue ())
181
199
mremove .assert_called_once ()
182
200
183
201
self .assertEqual (newcfg , {'plugins' : {
0 commit comments