@@ -75,6 +75,7 @@ def test_managed_render(pystache_renderer, sut):
7575 mock .call .render_name (data .template , data , generator = paths .exe_file .relative_to (paths .swift_dir )),
7676 ]
7777
78+
7879def test_managed_render_with_no_registry (pystache_renderer , sut ):
7980 data = mock .Mock (spec = ("template" ,))
8081 text = "some text"
@@ -266,5 +267,70 @@ def test_render_with_extensions(pystache_renderer, sut):
266267 assert_file (expected_output , expected_contents )
267268
268269
270+ def test_managed_render_with_force_not_skipping_generated_file (pystache_renderer , sut ):
271+ data = mock .Mock (spec = ("template" ,))
272+ output = paths .swift_dir / "some/output.txt"
273+ some_output = "some output"
274+ registry = paths .swift_dir / "a/registry.list"
275+ write (output , some_output )
276+ write (registry , f"some/output.txt { hash (some_output )} { hash (some_output )} \n " )
277+
278+ pystache_renderer .render_name .side_effect = (some_output ,)
279+
280+ with sut .manage (generated = (output ,), stubs = (), registry = registry , force = True ) as renderer :
281+ renderer .render (data , output )
282+ assert renderer .written == {output }
283+ assert_file (output , some_output )
284+
285+ assert_file (registry , f"some/output.txt { hash (some_output )} { hash (some_output )} \n " )
286+ assert pystache_renderer .mock_calls == [
287+ mock .call .render_name (data .template , data , generator = paths .exe_file .relative_to (paths .swift_dir )),
288+ ]
289+
290+
291+ def test_managed_render_with_force_not_skipping_stub_file (pystache_renderer , sut ):
292+ data = mock .Mock (spec = ("template" ,))
293+ stub = paths .swift_dir / "some/stub.txt"
294+ some_output = "// generated some output"
295+ some_processed_output = "// generated some processed output"
296+ registry = paths .swift_dir / "a/registry.list"
297+ write (stub , some_processed_output )
298+ write (registry , f"some/stub.txt { hash (some_output )} { hash (some_processed_output )} \n " )
299+
300+ pystache_renderer .render_name .side_effect = (some_output ,)
301+
302+ with sut .manage (generated = (), stubs = (stub ,), registry = registry , force = True ) as renderer :
303+ renderer .render (data , stub )
304+ assert renderer .written == {stub }
305+ assert_file (stub , some_output )
306+
307+ assert_file (registry , f"some/stub.txt { hash (some_output )} { hash (some_output )} \n " )
308+ assert pystache_renderer .mock_calls == [
309+ mock .call .render_name (data .template , data , generator = paths .exe_file .relative_to (paths .swift_dir )),
310+ ]
311+
312+
313+ def test_managed_render_with_force_ignores_modified_generated_file (sut ):
314+ output = paths .swift_dir / "some/output.txt"
315+ some_processed_output = "// some processed output"
316+ registry = paths .swift_dir / "a/registry.list"
317+ write (output , "// something else" )
318+ write (registry , f"some/output.txt whatever { hash (some_processed_output )} \n " )
319+
320+ with sut .manage (generated = (output ,), stubs = (), registry = registry , force = True ):
321+ pass
322+
323+
324+ def test_managed_render_with_force_ignores_modified_stub_file_still_marked_as_generated (sut ):
325+ stub = paths .swift_dir / "some/stub.txt"
326+ some_processed_output = "// generated some processed output"
327+ registry = paths .swift_dir / "a/registry.list"
328+ write (stub , "// generated something else" )
329+ write (registry , f"some/stub.txt whatever { hash (some_processed_output )} \n " )
330+
331+ with sut .manage (generated = (), stubs = (stub ,), registry = registry , force = True ):
332+ pass
333+
334+
269335if __name__ == '__main__' :
270336 sys .exit (pytest .main ([__file__ ] + sys .argv [1 :]))
0 commit comments