diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-16 14:16:27 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-10-18 10:59:26 +0100 |
commit | a9aa1d24c7c4518173f622a1fab55a98a16150f9 (patch) | |
tree | 688a3602fce0b04eab7119930ad41d730029244a /bitbake/lib/bb/tests | |
parent | 58530c6e481a2d237291af9e75d4417ecac7636b (diff) | |
download | poky-a9aa1d24c7c4518173f622a1fab55a98a16150f9.tar.gz |
bitbake: data: Fix whitespace on _remove operations
We have some slightly odd behaviours with the current implementation of
_remove operations. For example:
TEST = " A B"
TEST_remove = "C"
would trigger TEST to become "A B" even thought it doesn't contain "C".
In particular, this means that an inactive remove operator added in a
bbappend could change the task checksum which is not desireable.
Fix the operation to preserve whitespace, adding new tests to make this
explict and test further corner cases. Also update the manual to match.
(Bitbake rev: c0a23dd9155c50a6b7df796980bc7b612cac7994)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/tests')
-rw-r--r-- | bitbake/lib/bb/tests/data.py | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/bitbake/lib/bb/tests/data.py b/bitbake/lib/bb/tests/data.py index a4a9dd30fb..8279115e03 100644 --- a/bitbake/lib/bb/tests/data.py +++ b/bitbake/lib/bb/tests/data.py | |||
@@ -281,7 +281,7 @@ class TestConcatOverride(unittest.TestCase): | |||
281 | def test_remove(self): | 281 | def test_remove(self): |
282 | self.d.setVar("TEST", "${VAL} ${BAR}") | 282 | self.d.setVar("TEST", "${VAL} ${BAR}") |
283 | self.d.setVar("TEST_remove", "val") | 283 | self.d.setVar("TEST_remove", "val") |
284 | self.assertEqual(self.d.getVar("TEST"), "bar") | 284 | self.assertEqual(self.d.getVar("TEST"), " bar") |
285 | 285 | ||
286 | def test_remove_cleared(self): | 286 | def test_remove_cleared(self): |
287 | self.d.setVar("TEST", "${VAL} ${BAR}") | 287 | self.d.setVar("TEST", "${VAL} ${BAR}") |
@@ -300,7 +300,7 @@ class TestConcatOverride(unittest.TestCase): | |||
300 | self.d.setVar("TEST", "${VAL} ${BAR}") | 300 | self.d.setVar("TEST", "${VAL} ${BAR}") |
301 | self.d.setVar("TEST_remove", "val") | 301 | self.d.setVar("TEST_remove", "val") |
302 | self.d.setVar("TEST_TEST", "${TEST} ${TEST}") | 302 | self.d.setVar("TEST_TEST", "${TEST} ${TEST}") |
303 | self.assertEqual(self.d.getVar("TEST_TEST"), "bar bar") | 303 | self.assertEqual(self.d.getVar("TEST_TEST"), " bar bar") |
304 | 304 | ||
305 | def test_empty_remove(self): | 305 | def test_empty_remove(self): |
306 | self.d.setVar("TEST", "") | 306 | self.d.setVar("TEST", "") |
@@ -311,13 +311,25 @@ class TestConcatOverride(unittest.TestCase): | |||
311 | self.d.setVar("BAR", "Z") | 311 | self.d.setVar("BAR", "Z") |
312 | self.d.setVar("TEST", "${BAR}/X Y") | 312 | self.d.setVar("TEST", "${BAR}/X Y") |
313 | self.d.setVar("TEST_remove", "${BAR}/X") | 313 | self.d.setVar("TEST_remove", "${BAR}/X") |
314 | self.assertEqual(self.d.getVar("TEST"), "Y") | 314 | self.assertEqual(self.d.getVar("TEST"), " Y") |
315 | 315 | ||
316 | def test_remove_expansion_items(self): | 316 | def test_remove_expansion_items(self): |
317 | self.d.setVar("TEST", "A B C D") | 317 | self.d.setVar("TEST", "A B C D") |
318 | self.d.setVar("BAR", "B D") | 318 | self.d.setVar("BAR", "B D") |
319 | self.d.setVar("TEST_remove", "${BAR}") | 319 | self.d.setVar("TEST_remove", "${BAR}") |
320 | self.assertEqual(self.d.getVar("TEST"), "A C") | 320 | self.assertEqual(self.d.getVar("TEST"), "A C ") |
321 | |||
322 | def test_remove_preserve_whitespace(self): | ||
323 | # When the removal isn't active, the original value should be preserved | ||
324 | self.d.setVar("TEST", " A B") | ||
325 | self.d.setVar("TEST_remove", "C") | ||
326 | self.assertEqual(self.d.getVar("TEST"), " A B") | ||
327 | |||
328 | def test_remove_preserve_whitespace2(self): | ||
329 | # When the removal is active preserve the whitespace | ||
330 | self.d.setVar("TEST", " A B") | ||
331 | self.d.setVar("TEST_remove", "B") | ||
332 | self.assertEqual(self.d.getVar("TEST"), " A ") | ||
321 | 333 | ||
322 | class TestOverrides(unittest.TestCase): | 334 | class TestOverrides(unittest.TestCase): |
323 | def setUp(self): | 335 | def setUp(self): |