def testMultiChunkDecoder(self): self.Touch("fs/os/quux", b"QUUX" * 100) self.Touch("fs/os/thud", b"THUD" * 100) class BarDecoder(decoders.AbstractDecoder): def Check(self, filedesc): del filedesc # Unused. raise NotImplementedError() def Decode(self, filedesc): while True: chunk = filedesc.Read(4) if not chunk: return if chunk == b"QUUX": yield b"NORF" if chunk == b"THUD": yield b"BLARGH" decoders.FACTORY.Register("Bar", BarDecoder) args = vfs_plugin.ApiGetDecodedFileArgs() args.client_id = self.client_id args.decoder_name = "Bar" args.file_path = "fs/os/quux" self.assertEqual(self._Result(args), b"NORF" * 100) args.file_path = "fs/os/thud" self.assertEqual(self._Result(args), b"BLARGH" * 100)
def testUnknownDecoder(self): self.Touch("fs/os/baz") args = vfs_plugin.ApiGetDecodedFileArgs() args.client_id = self.client_id args.file_path = "fs/os/baz" args.decoder_name = "Baz" with self.assertRaisesRegex(ValueError, "'Baz'"): self._Result(args)
def testSimpleDecoder(self): self.Touch("fs/os/foo", b"foo") class FooDecoder(decoders.AbstractDecoder): def Check(self, filedesc): del filedesc # Unused. raise NotImplementedError() def Decode(self, filedesc): del filedesc # Unused. yield b"bar" decoders.FACTORY.Register("Foo", FooDecoder) args = vfs_plugin.ApiGetDecodedFileArgs() args.client_id = self.client_id args.file_path = "fs/os/foo" args.decoder_name = "Foo" self.assertEqual(self._Result(args), b"bar")