diff --git a/.github/workflows/reusable-ubuntu-ci.yml b/.github/workflows/reusable-ubuntu-ci.yml index 3b8fd649..2096d2be 100644 --- a/.github/workflows/reusable-ubuntu-ci.yml +++ b/.github/workflows/reusable-ubuntu-ci.yml @@ -59,6 +59,14 @@ on: required: false type: boolean default: false + blacklist_idls: + description: 'Comma-separated list of tests to be blacklisted' + required: false + type: string + default: 'interfaces,interfaces_2' +env: + blacklist_tests: ${{ inputs.run-tests && inputs.blacklist_idls }} + gradle-test-flags: ${{ inputs.blacklist_idls && format('-Dblacklist_tests={0}', inputs.blacklist_idls) }} defaults: run: shell: bash @@ -220,11 +228,27 @@ jobs: run: | source ${{ github.workspace }}/install/local_setup.bash cd ${{ github.workspace }}/src/fastddsgen - ./gradlew test + ./gradlew test ${{ env.gradle-test-flags }} - name: Test fastddsgen with python arg if: ${{ inputs.run-tests == true }} run: | source ${{ github.workspace }}/install/local_setup.bash cd ${{ github.workspace }}/src/fastddsgen/thirdparty/dds-types-test/IDL - find . -path "*.idl*" -exec fastddsgen -python {} + + # Example: blacklist_tests='file1,file1' + IFS=',' read -r -a BL <<< "${{ env.blacklist_tests }}" + + # Build exclusion: ! ( -name file1.idl -o -name file2.idl ) + EXCL=() + for f in "${BL[@]}"; do + [[ -n "$f" ]] && EXCL+=(-name "${f}.idl" -o) + done + # Drop trailing -o if present + ((${#EXCL[@]})) && unset 'EXCL[${#EXCL[@]}-1]' + + # Run find: match *.idl files, exclude blacklist, and batch fastddsgen calls + if ((${#EXCL[@]})); then + find . -type f -name '*.idl' ! \( "${EXCL[@]}" \) -exec fastddsgen -python {} + + else + find . -type f -name '*.idl' -exec fastddsgen -python {} + + fi diff --git a/src/main/java/com/eprosima/fastdds/idl/grammar/Interface.java b/src/main/java/com/eprosima/fastdds/idl/grammar/Interface.java index 75a6faa8..aa3438ad 100644 --- a/src/main/java/com/eprosima/fastdds/idl/grammar/Interface.java +++ b/src/main/java/com/eprosima/fastdds/idl/grammar/Interface.java @@ -17,6 +17,7 @@ import com.eprosima.fastdds.idl.grammar.Operation; import com.eprosima.fastdds.idl.parser.typecode.EnumTypeCode; import com.eprosima.fastdds.idl.parser.typecode.StructTypeCode; +import com.eprosima.idl.parser.exception.ParseException; import com.eprosima.idl.parser.typecode.Member; import com.eprosima.idl.parser.typecode.EnumMember; import com.eprosima.idl.parser.typecode.TypeCode.ExtensibilityKind; @@ -40,7 +41,7 @@ public void add(com.eprosima.idl.parser.tree.Export exp) Operation op = (Operation)exp; if (op.isAnnotationFeed()) { - m_hasOutputFeeds = true; + throw new ParseException(null, "Support for result feeds is part of Fast DDS Pro"); } if (op.getOutputparam().size() > 0) diff --git a/src/main/java/com/eprosima/fastdds/idl/grammar/Operation.java b/src/main/java/com/eprosima/fastdds/idl/grammar/Operation.java index ccc7a882..b3b768d6 100644 --- a/src/main/java/com/eprosima/fastdds/idl/grammar/Operation.java +++ b/src/main/java/com/eprosima/fastdds/idl/grammar/Operation.java @@ -84,9 +84,7 @@ public void add(com.eprosima.idl.parser.tree.Param param) } else { - // Take note that there is at least one input feed - m_context.inputFeedAdded(p); - m_hasInputFeeds = true; + throw new ParseException(null, "Support for input feeds is part of Fast DDS Pro"); } } diff --git a/thirdparty/dds-types-test b/thirdparty/dds-types-test index fa637e68..53e76215 160000 --- a/thirdparty/dds-types-test +++ b/thirdparty/dds-types-test @@ -1 +1 @@ -Subproject commit fa637e686224a8e4e6c8b8485802404bd33c5c0d +Subproject commit 53e762156817b38a2438a28d2a1b3baf9d5a80af