def test_s3_iter_lines_without_key(self): """Does s3_iter_lines fail on invalid input?""" # cannot use context manager for assertRaise in py2.6 try: for i in smart_open.s3_iter_lines(None): pass except TypeError: pass else: self.fail("s3_iter_lines expected to fail on non-`boto.key.Key` inputs") try: for i in smart_open.s3_iter_lines("test"): pass except TypeError: pass else: self.fail("s3_iter_lines extected to fail on non-`boto.key.Key` inputs")
def test_s3_iter_lines_with_key(self): """Does s3_iter_lines give correct content?""" # create fake bucket and fake key conn = boto.connect_s3() conn.create_bucket("mybucket") test_string = u"hello žluťoučký world!\nhow are you?".encode('utf8') with smart_open.smart_open("s3://mybucket/mykey", "wb") as fin: fin.write(test_string) # obtain boto key object mykey = conn.get_bucket("mybucket").get_key("mykey") # call s3_iter_lines and check output output = list(smart_open.s3_iter_lines(mykey)) self.assertEqual(b''.join(output), test_string)