Skip to content

Commit 6277cad

Browse files
committed
[fix] Avoid replacing True/False substrings in UCI string values
1 parent 99225ad commit 6277cad

2 files changed

Lines changed: 37 additions & 2 deletions

File tree

netjsonconfig/backends/openwrt/renderer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ def cleanup(self, output):
1616
.replace("\noption", "\n\toption")
1717
.replace("\nlist", "\n\tlist")
1818
)
19-
# convert True to 1 and False to 0
20-
output = output.replace("True", "1").replace("False", "0")
19+
# convert True to 1 and False to 0 (exact match only, not substrings)
20+
output = output.replace("'True'", "'1'").replace("'False'", "'0'")
2121
# max 2 consecutive \n delimiters
2222
output = output.replace("\n\n\n", "\n\n")
2323
# if output is present

tests/openwrt/test_wireless.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,41 @@ def test_render_wifi_interface(self):
6363
expected = self._tabs(self._wifi_uci)
6464
self.assertEqual(o.render(), expected)
6565

66+
def test_render_wifi_issue_250_true_ssid(self):
67+
netjson = deepcopy(self._wifi_netjson)
68+
netjson["interfaces"][0]["wireless"]["ssid"] = "TrueGait Living Guest"
69+
o = OpenWrt(netjson)
70+
expected_uci = self._wifi_uci.replace("'MyWifiAP'", "'TrueGait Living Guest'")
71+
self.assertEqual(o.render(), self._tabs(expected_uci))
72+
73+
def test_render_wifi_issue_250_false_ssid(self):
74+
netjson = deepcopy(self._wifi_netjson)
75+
netjson["interfaces"][0]["wireless"]["ssid"] = "FalseGait Living Guest"
76+
o = OpenWrt(netjson)
77+
expected_uci = self._wifi_uci.replace("'MyWifiAP'", "'FalseGait Living Guest'")
78+
self.assertEqual(o.render(), self._tabs(expected_uci))
79+
80+
def test_render_wifi_issue_250_mid_word_true_ssid(self):
81+
netjson = deepcopy(self._wifi_netjson)
82+
netjson["interfaces"][0]["wireless"]["ssid"] = "MyTrueNetwork"
83+
o = OpenWrt(netjson)
84+
expected_uci = self._wifi_uci.replace("'MyWifiAP'", "'MyTrueNetwork'")
85+
self.assertEqual(o.render(), self._tabs(expected_uci))
86+
87+
def test_render_wifi_issue_250_exact_true_ssid(self):
88+
netjson = deepcopy(self._wifi_netjson)
89+
netjson["interfaces"][0]["wireless"]["ssid"] = "True"
90+
o = OpenWrt(netjson)
91+
expected_uci = self._wifi_uci.replace("'MyWifiAP'", "'1'")
92+
self.assertEqual(o.render(), self._tabs(expected_uci))
93+
94+
def test_render_wifi_issue_250_exact_false_ssid(self):
95+
netjson = deepcopy(self._wifi_netjson)
96+
netjson["interfaces"][0]["wireless"]["ssid"] = "False"
97+
o = OpenWrt(netjson)
98+
expected_uci = self._wifi_uci.replace("'MyWifiAP'", "'0'")
99+
self.assertEqual(o.render(), self._tabs(expected_uci))
100+
66101
def test_parse_wifi_interface(self):
67102
o = OpenWrt(native=self._wifi_uci)
68103
self.assertDictEqual(o.config, self._wifi_netjson)

0 commit comments

Comments
 (0)