1 import os
2 import sys
3 import stat
4 import errno
5
6 # use "import libmount" for in a standard way installed python binding
7 import pylibmount as mnt
8
9 def usage(tss):
10 print("\nUsage:\n\t{:s} <test> [testoptions]\nTests:\n".format(sys.argv[0]))
11 for i in tss:
12 print("\t{15:-s}".format(i[0]))
13 if i[2] != "":
14 print(" {:s}\n".format(i[2]))
15
16 print("\n")
17 return 1
18
19 def mnt_run_test(tss, argv):
20 rc = -1
21 if ((len(argv) < 2) or (argv[1] == "--help") or (argv[1] == "-h")):
22 return usage(tss)
23
24 #mnt_init_debug(0)
25
26 i=()
27 for i in tss:
28 if i[0] == argv[1]:
29 rc = i[1](i, argv[1:])
30 if rc:
31 print("FAILED [rc={:d}]".format(rc))
32 break
33
34 if ((rc < 0) and (i == ())):
35 return usage(tss)
36 return not not rc #because !!rc is too mainstream for python
37
38 def test_replace(ts, argv):
39 fs = mnt.Fs()
40 tb = mnt.Table()
41
42 if (len(argv) < 3):
43 return -1
44 tb.enable_comments(True)
45 tb.parse_fstab()
46
47 fs.source = argv[1]
48 fs.target = argv[2]
49 #TODO: resolve None + string
50 fs.comment = "# this is new filesystem\n"
51 tb.add_fs(fs)
52 tb.replace_file(os.environ["LIBMOUNT_FSTAB"])
53 return 0
54
55 tss = (
56 ( "--replace",test_replace, "<src> <target> Add a line to LIBMOUNT_FSTAB and replace the original file" ),
57 )
58
59 sys.exit(mnt_run_test(tss, sys.argv))