def test_unreachable_file(self):
        finished = Shove("memory://")
        requests = FaultyFakeRequests()

        ip = ItemProcessor(finished, requests)

        ip.process_item("a", "a")

        with self.assertRaises(IOError):
            with open("./qwerty"):
                pass

        self.assertFalse("a" in finished)
    def test_directory_exists(self):
        finished = Shove("memory://")
        requests = FakeRequests()

        ip = ItemProcessor(finished, requests)

        os.mkdir("./qwerty")

        ip.process_item("a", "a")

        self.assertFalse("a" in finished)

        os.rmdir("./qwerty")
    def test_file_exists(self):
        finished = Shove("memory://")
        requests = FakeRequests()

        ip = ItemProcessor(finished, requests)

        with open("./qwerty", "wb") as output_file:
            output_file.write("junk")

        ip.process_item("a", "a")

        self.assertFalse("a" in finished)

        os.remove("./qwerty")
    def test_download_file_disposition(self):
        finished = Shove("memory://")
        requests = FakeRequestsWithDisposition()

        ip = ItemProcessor(finished, requests)

        ip.process_item("a", "a")

        with self.assertRaises(IOError):
            with open("./qwerty"):
                pass

        with open("./fred"):
            pass

        os.remove("./fred")

        self.assertTrue("a" in finished)