github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/librclone/python/test_rclone.py (about)

     1  #!/usr/bin/env python3
     2  """
     3  Test program for librclone
     4  """
     5  
     6  import os
     7  import subprocess
     8  import unittest
     9  from rclone import *
    10  
    11  class TestRclone(unittest.TestCase):
    12      """TestSuite for rclone python module"""
    13      shared_object = "librclone.so"
    14  
    15      @classmethod
    16      def setUpClass(cls):
    17          super(TestRclone, cls).setUpClass()
    18          cls.shared_object = "./librclone.so"
    19          Rclone.build(cls.shared_object)
    20          cls.rclone = Rclone(shared_object=cls.shared_object)
    21  
    22      @classmethod
    23      def tearDownClass(cls):
    24          cls.rclone.close()
    25          os.remove(cls.shared_object)
    26          super(TestRclone, cls).tearDownClass()
    27  
    28      def test_rpc(self):
    29          o = self.rclone.rpc("rc/noop", a=42, b="string", c=[1234])
    30          self.assertEqual(dict(a=42, b="string", c=[1234]), o)
    31  
    32      def test_rpc_error(self):
    33          try:
    34              o = self.rclone.rpc("rc/error", a=42, b="string", c=[1234])
    35          except RcloneException as e:
    36              self.assertEqual(e.status, 500)
    37              self.assertTrue(e.output["error"].startswith("arbitrary error"))
    38          else:
    39              raise ValueError("Expecting exception")
    40  
    41  if __name__ == '__main__':
    42      unittest.main()