diff options
author | Jędrzej Nowacki <jedrzej.nowacki@qt.io> | 2019-03-26 14:12:09 +0100 |
---|---|---|
committer | Jędrzej Nowacki <jedrzej.nowacki@qt.io> | 2019-03-28 06:30:32 +0000 |
commit | 89f34ee42a6f54e528533e673faa7e5fd371af4f (patch) | |
tree | bbf3e632d22bda00bfb2655cd58c85596d50b3da /util | |
parent | 8fa9a987ea7bb25ef96d325a8fbbb8031e9ada63 (diff) |
Fix turned logic in RemoveOperation
It is regression caused by a0a94576fae26bcbbf3823a6ee4b554886e84925
("Fix RemoveOperation").
Add unit test for all operation types to make sure this code actually
works:-)
Change-Id: I97c94cb3411f05de89422e3fa2222f2217a09e49
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'util')
-rwxr-xr-x | util/cmake/pro2cmake.py | 16 | ||||
-rwxr-xr-x | util/cmake/tests/test_operations.py | 57 |
2 files changed, 67 insertions, 6 deletions
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py index e77d6fdcaf..676ed4b406 100755 --- a/util/cmake/pro2cmake.py +++ b/util/cmake/pro2cmake.py @@ -239,15 +239,19 @@ class RemoveOperation(Operation): def process(self, input): input_set = set(input) - result_set = set(self._value) + value_set = set(self._value) result = [] - for v in self._value: - if v in input_set: - continue - if v in result_set: + + # Add everything that is not going to get removed: + for v in input: + if v not in value_set: result += [v,] - else: + + # Add everything else with removal marker: + for v in self._value: + if v not in input_set: result += ['-{}'.format(v), ] + return result def __repr__(self): diff --git a/util/cmake/tests/test_operations.py b/util/cmake/tests/test_operations.py new file mode 100755 index 0000000000..3ea2f76a43 --- /dev/null +++ b/util/cmake/tests/test_operations.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +############################################################################# +## +## Copyright (C) 2018 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the plugins of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +from pro2cmake import AddOperation, SetOperation, UniqueAddOperation, RemoveOperation + +def test_add_operation(): + op = AddOperation(['bar', 'buz']) + + result = op.process(['foo', 'bar']) + assert ['foo', 'bar', 'bar', 'buz'] == result + + +def test_uniqueadd_operation(): + op = UniqueAddOperation(['bar', 'buz']) + + result = op.process(['foo', 'bar']) + assert ['foo', 'bar', 'buz'] == result + + +def test_set_operation(): + op = SetOperation(['bar', 'buz']) + + result = op.process(['foo', 'bar']) + assert ['bar', 'buz'] == result + + +def test_remove_operation(): + op = RemoveOperation(['bar', 'buz']) + + result = op.process(['foo', 'bar']) + assert ['foo', '-buz'] == result |