Skip to content

Commit 6498607

Browse files
committed
Add tool for parsing desired capabilities from a file
1 parent a43b81b commit 6498607

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
import re
2+
3+
4+
def get_desired_capabilities(cap_file):
5+
if not cap_file.endswith('.py'):
6+
raise Exception("\n\n`%s` is not a Python file!\n\n" % cap_file)
7+
8+
f = open(cap_file, 'r')
9+
all_code = f.read()
10+
f.close()
11+
12+
desired_capabilities = {}
13+
num_capabilities = 0
14+
15+
code_lines = all_code.split('\n')
16+
for line in code_lines:
17+
if "desired_cap = {" in line:
18+
line = line.split("desired_cap = {")[1]
19+
20+
# 'key' : 'value'
21+
data = re.match(r"^\s*'([\S\s]+)'\s*:\s*'([\S\s]+)'\s*[,}]?\s*$", line)
22+
if data:
23+
key = data.group(1)
24+
value = data.group(2)
25+
desired_capabilities[key] = value
26+
num_capabilities += 1
27+
continue
28+
29+
# "key" : "value"
30+
data = re.match(r'^\s*"([\S\s]+)"\s*:\s*"([\S\s]+)"\s*[,}]?\s*$', line)
31+
if data:
32+
key = data.group(1)
33+
value = data.group(2)
34+
desired_capabilities[key] = value
35+
num_capabilities += 1
36+
continue
37+
38+
# 'key' : "value"
39+
data = re.match(
40+
r'''^\s*'([\S\s]+)'\s*:\s*"([\S\s]+)"\s*[,}]?\s*$''', line)
41+
if data:
42+
key = data.group(1)
43+
value = data.group(2)
44+
desired_capabilities[key] = value
45+
num_capabilities += 1
46+
continue
47+
48+
# "key" : 'value'
49+
data = re.match(
50+
r'''^\s*"([\S\s]+)"\s*:\s*'([\S\s]+)'\s*[,}]?\s*$''', line)
51+
if data:
52+
key = data.group(1)
53+
value = data.group(2)
54+
desired_capabilities[key] = value
55+
num_capabilities += 1
56+
continue
57+
58+
# caps['key'] = 'value'
59+
data = re.match(r"^\s*caps\['([\S\s]+)'\]\s*=\s*'([\S\s]+)'\s*$", line)
60+
if data:
61+
key = data.group(1)
62+
value = data.group(2)
63+
desired_capabilities[key] = value
64+
num_capabilities += 1
65+
continue
66+
67+
# caps["key"] = "value"
68+
data = re.match(r'^\s*caps\["([\S\s]+)"\]\s*=\s*"([\S\s]+)"\s*$', line)
69+
if data:
70+
key = data.group(1)
71+
value = data.group(2)
72+
desired_capabilities[key] = value
73+
num_capabilities += 1
74+
continue
75+
76+
# caps['key'] = "value"
77+
data = re.match(
78+
r'''^\s*caps\['([\S\s]+)'\]\s*=\s*"([\S\s]+)"\s*$''', line)
79+
if data:
80+
key = data.group(1)
81+
value = data.group(2)
82+
desired_capabilities[key] = value
83+
num_capabilities += 1
84+
continue
85+
86+
# caps["key"] = 'value'
87+
data = re.match(
88+
r'''^\s*caps\["([\S\s]+)"\]\s*=\s*'([\S\s]+)'\s*$''', line)
89+
if data:
90+
key = data.group(1)
91+
value = data.group(2)
92+
desired_capabilities[key] = value
93+
num_capabilities += 1
94+
continue
95+
96+
if num_capabilities == 0:
97+
raise Exception("Unable to parse desired capabilities file!")
98+
99+
return desired_capabilities

0 commit comments

Comments
 (0)