aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-07-09 23:09:57 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2021-07-09 23:09:57 +0000
commit91bb0d9e337725f70b3a2db0d6112a9a7adfb791 (patch)
tree8b323dc4d624becdbe2ff78dd7a520fe6503d876
parent42b072f4a760c3818abfe5240152264e1581f380 (diff)
parentbe4ebca4bac2829a6982ff60d4a966ec31936899 (diff)
downloadbuild-91bb0d9e337725f70b3a2db0d6112a9a7adfb791.tar.gz
Merge "Add mkstrip"
-rw-r--r--core/product_config.rbc21
-rw-r--r--tests/run.rbc4
2 files changed, 23 insertions, 2 deletions
diff --git a/core/product_config.rbc b/core/product_config.rbc
index 111e759ae6..2432e6453e 100644
--- a/core/product_config.rbc
+++ b/core/product_config.rbc
@@ -62,7 +62,8 @@ def __print_attr(attr, value):
elif _options.format == "pretty":
print(attr, "=", repr(value))
elif _options.format == "make":
- print(attr, ":=", value)
+ # Trim all spacing to a single space
+ print(attr, ":=", _mkstrip(value))
else:
fail("bad output format", _options.format)
@@ -432,6 +433,23 @@ def _mkinfo(file, message = ""):
"""Prints info."""
print(message)
+def _mkstrip(s):
+ """Emulates Make's strip.
+
+ That is, removes string's leading and trailing whitespace characters and
+ replaces any sequence of whitespace characters with with a single space.
+ """
+ result = ""
+ was_space = False
+ for ch in s.strip().elems():
+ is_space = ch.isspace()
+ if not is_space:
+ if was_space:
+ result += " "
+ result += ch
+ was_space = is_space
+ return result
+
def __get_options():
"""Returns struct containing runtime global settings."""
settings = dict(
@@ -479,6 +497,7 @@ rblf = struct(
mkinfo = _mkinfo,
mkerror = _mkerror,
mkwarning = _mkwarning,
+ mkstrip = _mkstrip,
printvars = _printvars,
product_configuration = _product_configuration,
require_artifacts_in_path = _require_artifacts_in_path,
diff --git a/tests/run.rbc b/tests/run.rbc
index b13f835bc1..64781596a8 100644
--- a/tests/run.rbc
+++ b/tests/run.rbc
@@ -1,4 +1,3 @@
-
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +27,9 @@ def assert_eq(expected, actual):
if expected != actual:
fail("Expected %s, got %s" % (expected, actual))
+# Unit tests for non-trivial runtime functions
+assert_eq("", rblf.mkstrip(" \n \t "))
+assert_eq("a b c", rblf.mkstrip(" a b \n c \t"))
globals, config = rblf.product_configuration("test/device", init)
assert_eq(