Add mkstrip
Bug: 181797530 Test: rbcrun build/make/tests/run.rbc Change-Id: I6b7ade400273cf5a4fd561322e8e9936bc9d8df6
This commit is contained in:
parent
42b072f4a7
commit
be4ebca4ba
2 changed files with 23 additions and 2 deletions
|
@ -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,
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue