comparison test/test_admin.py @ 7252:9c067ed4568b

add pragma command to roundup-admin Added basic pragma command. Can assign settings, list settings. Most settings are not yet implemented. Only the pragma command respects unhidden pragma settings at this point. Also added tests, doc updates for roundup-admin. CHANGES.txt not updated because currently only pragma references the unhidden settings. Also fixed a couple of long lines.
author John Rouillard <rouilj@ieee.org>
date Wed, 12 Apr 2023 20:49:21 -0400
parents 1a3d4703c7d6
children af870e295b46
comparison
equal deleted inserted replaced
7251:ab0ea9f03866 7252:9c067ed4568b
801 out = out.getvalue().strip() 801 out = out.getvalue().strip()
802 print("me: " + out) 802 print("me: " + out)
803 print(err.getvalue().strip()) 803 print(err.getvalue().strip())
804 self.assertEqual(out, "issue1:issue2") 804 self.assertEqual(out, "issue1:issue2")
805 805
806 def testPragma(self):
807 """Uses interactive mode since pragmas only apply when using multiple
808 commands.
809 """
810 if self.backend not in ['anydbm']:
811 self.skipTest("For speed only run test with anydbm.")
812
813 orig_input = AdminTool.my_input
814
815 for i in ["oN", "1", "yeS", "True"]:
816 inputs = iter(["pragma verbose=%s" % i, "pragma list", "quit"])
817 AdminTool.my_input = lambda _self, _prompt: next(inputs)
818
819 self.install_init()
820 self.admin=AdminTool()
821 sys.argv=['main', '-i', self.dirname]
822
823 with captured_output() as (out, err):
824 ret = self.admin.main()
825
826 out = out.getvalue().strip().split('\n')
827
828 print(ret)
829 self.assertTrue(ret == 0)
830 expected = ' verbose=True'
831 self.assertIn(expected, out)
832 self.assertIn('descriptions...', out[-1])
833
834 # -----
835 for i in ["oFf", "0", "NO", "FalSe"]:
836 inputs = iter(["pragma verbose=true", "pragma verbose=%s" % i,
837 "pragma list", "quit"])
838 AdminTool.my_input = lambda _self, _prompt: next(inputs)
839
840 self.install_init()
841 self.admin=AdminTool()
842 sys.argv=['main', '-i', self.dirname]
843
844 with captured_output() as (out, err):
845 ret = self.admin.main()
846
847 out = out.getvalue().strip().split('\n')
848
849 print(ret)
850 self.assertTrue(ret == 0)
851 expected = ' verbose=False'
852 self.assertIn(expected, out)
853
854 # ----- test syntax errors
855 inputs = iter(["pragma", "pragma arg",
856 "pragma foo=3","quit"])
857 AdminTool.my_input = lambda _self, _prompt: next(inputs)
858
859 self.install_init()
860 self.admin=AdminTool()
861 sys.argv=['main', '-i', self.dirname]
862
863 with captured_output() as (out, err):
864 ret = self.admin.main()
865
866 out = out.getvalue().strip().split('\n')
867
868 print(ret)
869 self.assertTrue(ret == 0)
870 expected = 'Error: Not enough arguments supplied'
871 self.assertIn(expected, out)
872 expected = 'Error: Argument must be setting=value, was given: arg.'
873 self.assertIn(expected, out)
874 expected = 'Error: Unknown setting foo.'
875 self.assertIn(expected, out)
876
877 # -----
878 inputs = iter(["pragma verbose=foo", "quit"])
879 AdminTool.my_input = lambda _self, _prompt: next(inputs)
880
881 self.install_init()
882 self.admin=AdminTool()
883 sys.argv=['main', '-i', self.dirname]
884
885 with captured_output() as (out, err):
886 ret = self.admin.main()
887
888 out = out.getvalue().strip().split('\n')
889
890 print(ret)
891 self.assertTrue(ret == 0)
892 expected = 'Error: Incorrect value for boolean setting verbose: foo.'
893 self.assertIn(expected, out)
894
895 # -----
896 inputs = iter(["pragma verbose=on", "pragma _inttest=5",
897 "pragma list", "quit"])
898 AdminTool.my_input = lambda _self, _prompt: next(inputs)
899
900 self.install_init()
901 self.admin=AdminTool()
902 sys.argv=['main', '-i', self.dirname]
903
904 with captured_output() as (out, err):
905 ret = self.admin.main()
906
907 out = out.getvalue().strip().split('\n')
908
909 print(ret)
910 self.assertTrue(ret == 0)
911 expected = ' _inttest=5'
912 self.assertIn(expected, out)
913 self.assertIn('descriptions...', out[-1])
914
915
916 # -----
917 inputs = iter(["pragma verbose=on", "pragma _inttest=fred",
918 "pragma list", "quit"])
919 AdminTool.my_input = lambda _self, _prompt: next(inputs)
920
921 self.install_init()
922 self.admin=AdminTool()
923 sys.argv=['main', '-i', self.dirname]
924
925 with captured_output() as (out, err):
926 ret = self.admin.main()
927
928 out = out.getvalue().strip().split('\n')
929
930 print(ret)
931 self.assertTrue(ret == 0)
932 expected = 'Error: Incorrect value for integer setting _inttest: fred.'
933 self.assertIn(expected, out)
934 self.assertIn('descriptions...', out[-1])
935
936 # -----
937 inputs = iter(["pragma indexer_backend=whoosh", "pragma list",
938 "quit"])
939 AdminTool.my_input = lambda _self, _prompt: next(inputs)
940
941 self.install_init()
942 self.admin=AdminTool()
943 sys.argv=['main', '-i', self.dirname]
944
945 with captured_output() as (out, err):
946 ret = self.admin.main()
947
948 out = out.getvalue().strip().split('\n')
949
950 print(ret)
951 expected = ' indexer_backend=whoosh'
952 self.assertIn(expected, out)
953
954 # -----
955 inputs = iter(["pragma _floattest=4.5", "quit"])
956 AdminTool.my_input = lambda _self, _prompt: next(inputs)
957
958 self.install_init()
959 self.admin=AdminTool()
960 sys.argv=['main', '-i', self.dirname]
961
962 with captured_output() as (out, err):
963 ret = self.admin.main()
964
965 out = out.getvalue().strip().split('\n')
966
967 print(ret)
968 expected = 'Error: Internal error: pragma can not handle values of type: float'
969 self.assertIn(expected, out)
970
971 # -----
972 AdminTool.my_input = orig_input
806 973
807 def disabletestHelpInitopts(self): 974 def disabletestHelpInitopts(self):
808 975
809 ''' Note the tests will fail if you run this under pdb. 976 ''' Note the tests will fail if you run this under pdb.
810 the context managers capture the pdb prompts and this screws 977 the context managers capture the pdb prompts and this screws

Roundup Issue Tracker: http://roundup-tracker.org/