| # | |
| # Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. | |
| # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
| # | |
| # This code is free software; you can redistribute it and/or modify it | |
| # under the terms of the GNU General Public License version 2 only, as | |
| # published by the Free Software Foundation. | |
| # | |
| # This code is distributed in the hope that it will be useful, but WITHOUT | |
| # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
| # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
| # version 2 for more details (a copy is included in the LICENSE file that | |
| # accompanied this code). | |
| # | |
| # You should have received a copy of the GNU General Public License version | |
| # 2 along with this work; if not, write to the Free Software Foundation, | |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
| # | |
| # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA | |
| # or visit www.oracle.com if you need additional information or have any | |
| # questions. | |
| # | |
| ############################################################################### | |
| # | |
| # Unit tests for the configure script | |
| # | |
| ############################################################################### | |
| AC_DEFUN([TEST_STRING_OPS], | |
| [ | |
| FEW="ninja banan pepparkaka" | |
| MANY="banan antarktis pepparkaka ninjamask bana" | |
| EXPECTED_NON_MATCHING="antarktis ninjamask bana" | |
| UTIL_GET_NON_MATCHING_VALUES(ACTUAL, $MANY, $FEW) | |
| UTIL_ASSERT_STRING_EQUALS($ACTUAL, $EXPECTED_NON_MATCHING, \ | |
| [UTIL_GET_NON_MATCHING_VALUES failed]) | |
| EXPECTED_MATCHING="banan pepparkaka" | |
| UTIL_GET_MATCHING_VALUES(ACTUAL, $FEW, $MANY) | |
| UTIL_ASSERT_STRING_EQUALS($ACTUAL, $EXPECTED_MATCHING, \ | |
| [UTIL_GET_MATCHING_VALUES failed]) | |
| ]) | |
| AC_DEFUN([TEST_ARG_ENABLE], | |
| [ | |
| # fake '--enable-default-false=yes' on the command line | |
| enable_default_false=yes | |
| UTIL_ARG_ENABLE(NAME: default-false, DEFAULT: false, RESULT: TEST_RESULT) | |
| UTIL_ASSERT_TRUE($TEST_RESULT) | |
| # assume '--enable-default-true-but-unavailable=yes' not set | |
| UTIL_ARG_ENABLE(NAME: default-true-but-unavailable, DEFAULT: auto, RESULT: TEST_RESULT, AVAILABLE: false) | |
| UTIL_ASSERT_NOT_TRUE($TEST_RESULT) | |
| enable_test_given_yes=yes | |
| given=false | |
| enabled=false | |
| disabled=false | |
| UTIL_ARG_ENABLE(NAME: test-given-yes, DEFAULT: false, | |
| IF_GIVEN: [ given=true ], IF_ENABLED: [ enabled=true ], | |
| IF_DISABLED: [ disabled=true ]) | |
| UTIL_ASSERT_TRUE($given) | |
| UTIL_ASSERT_TRUE($enabled) | |
| UTIL_ASSERT_NOT_TRUE($disabled) | |
| enable_test_given_default=no | |
| given=false | |
| enabled=false | |
| disabled=false | |
| UTIL_ARG_ENABLE(NAME: test-given-default, DEFAULT: true, | |
| IF_GIVEN: [ given=true ], IF_ENABLED: [ enabled=true ], | |
| IF_DISABLED: [ disabled=true ]) | |
| UTIL_ASSERT_TRUE($given) | |
| UTIL_ASSERT_NOT_TRUE($enabled) | |
| UTIL_ASSERT_TRUE($disabled) | |
| # assume '--enable-test-given-no' not set | |
| given=false | |
| enabled=false | |
| disabled=false | |
| UTIL_ARG_ENABLE(NAME: test-given-no, DEFAULT: true, | |
| IF_GIVEN: [ given=true ], IF_ENABLED: [ enabled=true ], | |
| IF_DISABLED: [ disabled=true ]) | |
| UTIL_ASSERT_NOT_TRUE($given) | |
| UTIL_ASSERT_TRUE($enabled) | |
| UTIL_ASSERT_NOT_TRUE($disabled) | |
| ]) | |
| # Use the CUSTOM_EARLY_HOOK to inject our test after basic init is done. | |
| AC_DEFUN_ONCE([CUSTOM_EARLY_HOOK], | |
| [ | |
| $ECHO "" | |
| $ECHO "Starting configure tests" | |
| $ECHO "==============================" | |
| TEST_STRING_OPS | |
| TEST_ARG_ENABLE | |
| # If no assertions failed, report success | |
| $ECHO "==============================" | |
| $ECHO "Configure tests finished successfully" | |
| $ECHO "" | |
| exit 0 | |
| ]) |