def test_write_if_needed_output_missing(self, write_to_disk): """If the output file is missing, we'll always write""" with self.cli.isolated_filesystem(): entry.Entry('notice_xml', '111').write(b'content') versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {}) self.assertTrue(write_to_disk.called)
def test_write_if_needed_no_need_to_recompute(monkeypatch): """If all dependencies are up to date and the output is present, there's no need to write anything""" monkeypatch.setattr(versions, 'write_to_disk', Mock()) entry.Entry('notice_xml', '111').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {}) assert not versions.write_to_disk.called
def test_write_if_needed_no_need_to_recompute(self, write_to_disk): """If all dependencies are up to date and the output is present, there's no need to write anything""" with self.cli.isolated_filesystem(): entry.Entry('notice_xml', '111').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {}) self.assertFalse(write_to_disk.called)
def test_write_if_needed_delays(monkeypatch): """Delays introduce dependencies.""" monkeypatch.setattr(versions, 'write_to_disk', Mock()) entry.Entry('notice_xml', '111').write(b'content') entry.Entry('notice_xml', '222').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) assert not versions.write_to_disk.called # Simulate a change to an input file label_id = str(entry.Notice('222')) new_time = timezone.now() + timedelta(hours=1) DBEntry.objects.filter(label_id=label_id).update(modified=new_time) versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) assert versions.write_to_disk.called
def test_write_if_needed_delays(self, write_to_disk): """Delays introduce dependencies.""" with self.cli.isolated_filesystem(): entry.Entry('notice_xml', '111').write(b'content') entry.Entry('notice_xml', '222').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertFalse(write_to_disk.called) # Simulate a change to an input file os.utime(str(entry.Notice('222')), (time() + 1000, time() + 1000)) versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertTrue(write_to_disk.called)
def test_write_if_needed_delays(self, write_to_disk): """Delays introduce dependencies.""" with self.cli.isolated_filesystem(): entry.Entry('notice_xml', '111').write('content') entry.Entry('notice_xml', '222').write('content') entry.Entry('version', 'title', 'part', '111').write('out') versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertFalse(write_to_disk.called) # Simulate a change to an input file os.utime(str(entry.Notice('222')), (time() + 1000, time() + 1000)) versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertTrue(write_to_disk.called)
def test_write_if_needed_delays(monkeypatch): """Delays introduce dependencies.""" monkeypatch.setattr(versions, 'write_to_disk', Mock()) entry.Entry('notice_xml', '111').write(b'content') entry.Entry('notice_xml', '222').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) assert not versions.write_to_disk.called # Simulate a change to an input file label_id = str(entry.Notice('222')) new_time = timezone.now() + timedelta(hours=1) DBEntry.objects.filter(label_id=label_id).update(modified=new_time) versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) assert versions.write_to_disk.called
def test_write_if_needed_delays(self, write_to_disk): """Delays introduce dependencies.""" with self.cli.isolated_filesystem(): entry.Entry('notice_xml', '111').write(b'content') entry.Entry('notice_xml', '222').write(b'content') entry.Entry('version', 'title', 'part', '111').write(b'out') versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertFalse(write_to_disk.called) # Simulate a change to an input file label_id = str(entry.Notice('222')) new_time = timezone.now() + timedelta(hours=1) DBEntry.objects.filter(label_id=label_id).update(modified=new_time) versions.write_if_needed( 'title', 'part', ['111'], {'111': 'xml111'}, {'111': versions.Delay('222', 'until-date')}) self.assertTrue(write_to_disk.called)
def test_write_if_needed_raises_exception(monkeypatch): """If an input file is missing, this raises an exception""" with pytest.raises(dependency.Missing): versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {})
def test_write_if_needed_raises_exception(self, write_to_disk): """If an input file is missing, this raises an exception""" with self.cli.isolated_filesystem(): with self.assertRaises(dependency.Missing): versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {})
def test_write_if_needed_output_missing(monkeypatch): """If the output file is missing, we'll always write""" monkeypatch.setattr(versions, 'write_to_disk', Mock()) entry.Entry('notice_xml', '111').write(b'content') versions.write_if_needed('title', 'part', ['111'], {'111': 'xml111'}, {}) assert versions.write_to_disk.called