ソースを参照

Test OgreImporter

1vanK 3 年 前
コミット
62040fbad3
2 ファイル変更198 行追加0 行削除
  1. 11 0
      .github/workflows/main.yml
  2. 187 0
      script/test_tools.sh

+ 11 - 0
.github/workflows/main.yml

@@ -90,6 +90,10 @@ jobs:
         if: matrix.platform != 'android'
       - name: Build
         run: script/dockerized.sh ${PLATFORM/-*} rake build
+      - name: Test tools
+        if: startsWith(matrix.platform, 'linux')
+        shell: bash
+        run: script/dockerized.sh ${PLATFORM/-*} /home/runner/work/Urho3D/Urho3D/script/test_tools.sh /home/runner/work/Urho3D/Urho3D /home/runner/work/Urho3D/Urho3D/build/ci
       - name: Test
         run: script/dockerized.sh ${PLATFORM/-*} rake test
         if: startsWith(matrix.platform, 'linux') || matrix.platform == 'android'
@@ -179,6 +183,10 @@ jobs:
         run: rake cmake
       - name: Build
         run: rake build
+      - name: Test tools
+        if: matrix.platform == 'macOS'
+        shell: bash
+        run: /Users/runner/work/Urho3D/Urho3D/script/test_tools.sh /Users/runner/work/Urho3D/Urho3D /Users/runner/work/Urho3D/Urho3D/build/ci
       - name: Test
         run: rake test
         if: matrix.platform == 'macOS'
@@ -270,6 +278,9 @@ jobs:
         run: rake cmake
       - name: Build
         run: rake build
+      - name: Test tools
+        shell: bash
+        run: D:/a/Urho3D/Urho3D/script/test_tools.sh D:/a/Urho3D/Urho3D D:/a/Urho3D/Urho3D/build/ci
       - name: Test
         run: rake test
         if: matrix.graphics-api != 'OpenGL'

+ 187 - 0
script/test_tools.sh

@@ -0,0 +1,187 @@
+#!/usr/bin/env bash
+
+# Copyright (c) 2008-2022 the Urho3D project
+# License: MIT
+
+if [[ $# != 2 ]]
+then
+    echo "Usage: test_tools.sh repo_dir build_dir"
+    exit 1
+fi
+
+repo_dir=$1
+build_dir=$2
+
+# Remove trailing slash in Unix and Windows
+repo_dir=${repo_dir%/}
+repo_dir=${repo_dir%\\}
+build_dir=${build_dir%/}
+build_dir=${build_dir%\\}
+
+src_filenames=(
+    Jack.mesh.xml
+    Level.mesh.xml
+    Mushroom.mesh.xml
+    Ninja.mesh.xml
+    Potion.mesh.xml
+    SnowBall.mesh.xml
+    SnowCrate.mesh.xml
+)
+
+result_filenames=(
+    Jack_Walk.ani
+    Ninja_Attack1.ani
+    Ninja_Attack2.ani
+    Ninja_Attack3.ani
+    Ninja_Backflip.ani
+    Ninja_Block.ani
+    Ninja_Climb.ani
+    Ninja_Crouch.ani
+    Ninja_Death1.ani
+    Ninja_Death2.ani
+    Ninja_HighJump.ani
+    Ninja_Idle1.ani
+    Ninja_Idle2.ani
+    Ninja_Idle3.ani
+    Ninja_Jump.ani
+    Ninja_JumpNoHeight.ani
+    Ninja_Kick.ani
+    Ninja_SideKick.ani
+    Ninja_Spin.ani
+    Ninja_Stealth.ani
+    Ninja_Walk.ani
+    Jack.mdl
+    Level.mdl
+    Mushroom.mdl
+    Ninja.mdl
+    Potion.mdl
+    SnowBall.mdl
+    SnowCrate.mdl
+)
+
+# This is not used because the result is compiler dependent.
+# Perhaps this is due to the calculation error when using float
+result_checksums=(
+    a07f69d23b84b0039d7e9159a494d7c5a587ae6d # Jack_Walk.ani
+    5abfe9cee41a2d8c4d8af8af5baf879fc6ab36cb # Ninja_Attack1.ani
+    f73548094148f9d18d6a93b66eac647db50672eb # Ninja_Attack2.ani
+    0549824bcbf73ebaff17964ba81ae2ca813ad684 # Ninja_Attack3.ani
+    a2aab4ad61b9de9038135abf9b1e459e17d6bb20 # Ninja_Backflip.ani
+    dec34fb0ec43f6fca8037328fc0dc8bd1e55d30d # Ninja_Block.ani
+    ae20b728ca1f2776ab6bb66ab4855f56710e8d14 # Ninja_Climb.ani
+    8f21ea4e1f999167a2b82a575c15de614f576a0f # Ninja_Crouch.ani
+    b3314a675d1a41f97f818f06b562e20ab072de5a # Ninja_Death1.ani
+    e3dd6aa2fb9b585180e3772b7c598828d935bf15 # Ninja_Death2.ani
+    ff6766e3d55855a240fc35ccf7395a6517911c99 # Ninja_HighJump.ani
+    d565fea93087a60df836637aad7f9c8184c28c6a # Ninja_Idle1.ani
+    065f7d89e032c18dedeae0b64975984ec80d3557 # Ninja_Idle2.ani
+    00b4d893b3cffbf58db4fb7f0e970990accb1155 # Ninja_Idle3.ani
+    bad0c363ec9cf9283ca08b8ca44a86dc09068603 # Ninja_Jump.ani
+    e55e9a21e635eb8a31b708fa009e9aca06ea9e7d # Ninja_JumpNoHeight.ani
+    82fcc8eda8929809fd771805466b8e287af3a3c7 # Ninja_Kick.ani
+    b09e8cc6e0fb58786c21184bcc0aa8dcd4b51b57 # Ninja_SideKick.ani
+    63683537161f7352684bc50a44b753b5f9691af3 # Ninja_Spin.ani
+    801383ba0ad30d4a0d401a69af5ca88bf5c6b39f # Ninja_Stealth.ani
+    608a91452ff6980ef34ca68c4fd688fd719592c2 # Ninja_Walk.ani
+    c8b032146ccde40058af94d5578e61345f6fb648 # Jack.mdl
+    cde0671fced710d666f15cd941c9f385359a45e9 # Level.mdl
+    39afeecb472b8be081fddb59419db595ccae2105 # Mushroom.mdl
+    ef5b6c831566f45cef0c7652fe16a7eec7f57f4c # Ninja.mdl
+    351044e86480d7ab0ee5bac2f557f800e6770925 # Potion.mdl
+    4c3c7b1c47f62c5c0a99e1f33bd20463a64d6b93 # SnowBall.mdl
+    110a90536d58e0a57ef6070b2b372341cb97bdaa # SnowCrate.mdl
+)
+
+result_sizes=(
+    56410  # Jack_Walk.ani
+    2916   # Ninja_Attack1.ani
+    2788   # Ninja_Attack2.ani
+    2628   # Ninja_Attack3.ani
+    3141   # Ninja_Backflip.ani
+    1186   # Ninja_Block.ani
+    2466   # Ninja_Climb.ani
+    4003   # Ninja_Crouch.ani
+    2307   # Ninja_Death1.ani
+    2723   # Ninja_Death2.ani
+    5541   # Ninja_HighJump.ani
+    3682   # Ninja_Idle1.ani
+    2434   # Ninja_Idle2.ani
+    2658   # Ninja_Idle3.ani
+    2785   # Ninja_Jump.ani
+    2857   # Ninja_JumpNoHeight.ani
+    3745   # Ninja_Kick.ani
+    2885   # Ninja_SideKick.ani
+    2625   # Ninja_Spin.ani
+    2244   # Ninja_Stealth.ani
+    3201   # Ninja_Walk.ani
+    433684 # Jack.mdl
+    26100  # Level.mdl
+    74196  # Mushroom.mdl
+    66895  # Ninja.mdl
+    7092   # Potion.mdl
+    2484   # SnowBall.mdl
+    11724  # SnowCrate.mdl
+)
+
+# Convert models
+for (( i = 0; i < ${#src_filenames[*]}; ++i ))
+do
+    src_filepath=${repo_dir}/SourceAssets/${src_filenames[$i]}
+
+    # Replace extension from .mesh.xml to .mdl
+    output_filename=${src_filenames[$i]%.mesh.xml}.mdl
+
+    ${build_dir}/bin/tool/OgreImporter $src_filepath $output_filename -t
+
+    # Check exit code of the previous command
+    if [[ $? != 0 ]]
+    then
+        echo temp
+        exit 1
+    fi
+done
+
+# Compare checksums
+#for (( i = 0; i < ${#result_filenames[*]}; ++i ))
+#do
+#    checksum=$(sha1sum ${result_filenames[$i]})
+#
+#    # Check exit code of the previous command
+#    if [[ $? != 0 ]]
+#    then
+#        exit 1
+#    fi
+#
+#    # Extract checksum from string
+#    checksum=$(echo $checksum | awk '{print $1}')
+#
+#    if [[ $checksum != ${result_checksums[$i]} ]]
+#    then
+#        echo "${result_filenames[$i]}: incorrect checksum"
+#        exit 1
+#    fi
+#done
+
+# Check sizes instead checksums
+for (( i = 0; i < ${#result_filenames[*]}; ++i ))
+do
+    # This works on any platform
+    file_size=$(wc -c ${result_filenames[$i]})
+
+    # Check exit code of the previous command
+    if [[ $? != 0 ]]
+    then
+        exit 1
+    fi
+
+    # Extract size from string
+    file_size=$(echo $file_size | awk '{print $1}')
+
+    if [[ $file_size != ${result_sizes[$i]} ]]
+    then
+        echo "${result_filenames[$i]}: incorrect size"
+        exit 1
+    fi
+done
+
+# vi: set ts=4 sw=4 expandtab: