summaryrefslogtreecommitdiffstats
path: root/testing/mozbase/manifestparser/manifestparser/util.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/mozbase/manifestparser/manifestparser/util.py')
-rw-r--r--testing/mozbase/manifestparser/manifestparser/util.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/testing/mozbase/manifestparser/manifestparser/util.py b/testing/mozbase/manifestparser/manifestparser/util.py
new file mode 100644
index 0000000000..4830b39547
--- /dev/null
+++ b/testing/mozbase/manifestparser/manifestparser/util.py
@@ -0,0 +1,46 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import ast
+import os
+
+
+def normsep(path):
+ """
+ Normalize path separators, by using forward slashes instead of whatever
+ :py:const:`os.sep` is.
+ """
+ if os.sep != "/":
+ # Python 2 is happy to do things like byte_string.replace(u'foo',
+ # u'bar'), but not Python 3.
+ if isinstance(path, bytes):
+ path = path.replace(os.sep.encode("ascii"), b"/")
+ else:
+ path = path.replace(os.sep, "/")
+ if os.altsep and os.altsep != "/":
+ if isinstance(path, bytes):
+ path = path.replace(os.altsep.encode("ascii"), b"/")
+ else:
+ path = path.replace(os.altsep, "/")
+ return path
+
+
+def evaluate_list_from_string(list_string):
+ """
+ This is a utility function for converting a string obtained from a manifest
+ into a list. If the string is not a valid list when converted, an error will be
+ raised from `ast.eval_literal`. For example, you can convert entries like this
+ into a list:
+ ```
+ test_settings=
+ ["hello", "world"],
+ [1, 10, 100],
+ values=
+ 5,
+ 6,
+ 7,
+ 8,
+ ```
+ """
+ return ast.literal_eval("[" + "".join(list_string.strip(",").split("\n")) + "]")