From 26d2afc939e2bebfd20f3e075fd0f33534399108 Mon Sep 17 00:00:00 2001 From: John McFarlane Date: Sun, 27 Dec 2020 20:08:44 +0000 Subject: [PATCH 1/3] Make shellcheck script more robust - uses `git ls-files` -- instead of `find` -- to ensure that files under .git subdirectory are ignored - (This becomes a problem if any files under /.git/ match criteria for being a script.) - uses file mode bits and shebang of script file -- instead of file extensions -- to test whether each file is a bash script --- test/scripts/shellcheck.sh | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/test/scripts/shellcheck.sh b/test/scripts/shellcheck.sh index d38fafb0a..3fd551abc 100755 --- a/test/scripts/shellcheck.sh +++ b/test/scripts/shellcheck.sh @@ -9,14 +9,21 @@ PROJECT_DIR=$( pwd ) -find "${PROJECT_DIR}" -name "*.sh" | while read -r TEST; do - shellcheck \ - --check-sourced \ - --color=always \ - --external-sources \ - --severity=info \ - --shell=bash \ - "$TEST" +cd "${PROJECT_DIR}" + +git ls-files | while read -r file +do + if [[ -f "$file" && -x "$file" && "$(head --lines 1 "$file")" == "#!/usr/bin/env bash" ]] + then + shellcheck \ + --check-sourced \ + --color=always \ + --external-sources \ + --severity=info \ + --shell=bash \ + "$file" + printf "OK: %s\n" "$file" + fi done echo shellcheck success From fbff1fe1e06994797e65bd394a274da8fcca0266 Mon Sep 17 00:00:00 2001 From: John McFarlane Date: Sun, 27 Dec 2020 19:14:30 +0000 Subject: [PATCH 2/3] Fix Conan profile in deploy script - hypothesis is that since switch to using Conan to build CNL, unit tests are now build during deplotment and this highlights that Conan isn't correctly configured --- .github/deploy.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/deploy.sh b/.github/deploy.sh index 424d7230c..c82df0839 100755 --- a/.github/deploy.sh +++ b/.github/deploy.sh @@ -39,7 +39,7 @@ fi popd # Upload new version of CNL Conan package to Bintray -conan remote add --force johnmcfarlane/cnl https://api.bintray.com/conan/johnmcfarlane/cnl +"${PROJECT_DIR}/test/scripts/conan-setup.sh" conan user -p "${CONAN_PASS}" -r johnmcfarlane/cnl "${CONAN_USER}" conan install --build=missing "${PROJECT_DIR}" conan create "${PROJECT_DIR}" "cnl/${CNL_VERSION}@johnmcfarlane/development" From 1d0ee4cb7c3bd56efdf8ed2f8df0561628f60375 Mon Sep 17 00:00:00 2001 From: John McFarlane Date: Sun, 27 Dec 2020 20:13:46 +0000 Subject: [PATCH 3/3] Remove file extension, .sh, from shell scripts - Executables shouldn't need a file extension; they're already marked as executable. - .sh should be reserved for files that are run using the `source` command under the sh shell -- not executable files that use the bash shell. --- .github/{deploy.sh => deploy} | 4 ++-- .github/workflows/deploy.yml | 2 +- .github/workflows/test.yml | 4 ++-- doc/{generate.sh => generate} | 0 test/scripts/{benchmark.sh => benchmark} | 0 test/scripts/{clang-tidy.sh => clang-tidy} | 2 +- test/scripts/{conan-setup.sh => conan-setup} | 0 test/scripts/{sanitize-clang.sh => sanitize-clang} | 2 +- test/scripts/{sanitize-gcc.sh => sanitize-gcc} | 2 +- test/scripts/{shellcheck.sh => shellcheck} | 0 test/scripts/{test.sh => test} | 0 test/scripts/{test-all.sh => test-all} | 2 +- test/scripts/{unit-test.sh => unit-test} | 2 +- 13 files changed, 10 insertions(+), 10 deletions(-) rename .github/{deploy.sh => deploy} (94%) rename doc/{generate.sh => generate} (100%) rename test/scripts/{benchmark.sh => benchmark} (100%) rename test/scripts/{clang-tidy.sh => clang-tidy} (88%) rename test/scripts/{conan-setup.sh => conan-setup} (100%) rename test/scripts/{sanitize-clang.sh => sanitize-clang} (90%) rename test/scripts/{sanitize-gcc.sh => sanitize-gcc} (90%) rename test/scripts/{shellcheck.sh => shellcheck} (100%) rename test/scripts/{test.sh => test} (100%) rename test/scripts/{test-all.sh => test-all} (79%) rename test/scripts/{unit-test.sh => unit-test} (80%) diff --git a/.github/deploy.sh b/.github/deploy similarity index 94% rename from .github/deploy.sh rename to .github/deploy index c82df0839..60998d153 100755 --- a/.github/deploy.sh +++ b/.github/deploy @@ -22,7 +22,7 @@ else fi # Generate documentation -"${PROJECT_DIR}/doc/generate.sh" +"${PROJECT_DIR}/doc/generate" # Push revision of documentation pushd "${PROJECT_DIR}/doc/gh-pages" @@ -39,7 +39,7 @@ fi popd # Upload new version of CNL Conan package to Bintray -"${PROJECT_DIR}/test/scripts/conan-setup.sh" +"${PROJECT_DIR}/test/scripts/conan-setup" conan user -p "${CONAN_PASS}" -r johnmcfarlane/cnl "${CONAN_USER}" conan install --build=missing "${PROJECT_DIR}" conan create "${PROJECT_DIR}" "cnl/${CNL_VERSION}@johnmcfarlane/development" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d31a69a9a..99a759ae8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,4 +22,4 @@ jobs: GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} CONAN_PASS: ${{secrets.BINTRAY_API_KEY}} CONAN_USER: ${{secrets.BINTRAY_USERNAME}} - run: CNL_VERSION_TAG=$GITHUB_REF $GITHUB_WORKSPACE/.github/deploy.sh + run: CNL_VERSION_TAG=$GITHUB_REF $GITHUB_WORKSPACE/.github/deploy diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a45232ac5..5ffc92faa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -331,7 +331,7 @@ jobs: - name: Run All Tests shell: bash - run: $GITHUB_WORKSPACE/test/scripts/shellcheck.sh + run: $GITHUB_WORKSPACE/test/scripts/shellcheck # Test documentation generation doxygen: @@ -345,7 +345,7 @@ jobs: - name: Generate documentation shell: bash - run: $GITHUB_WORKSPACE/doc/generate.sh + run: $GITHUB_WORKSPACE/doc/generate - name: Upload documentation uses: actions/upload-artifact@v2 diff --git a/doc/generate.sh b/doc/generate similarity index 100% rename from doc/generate.sh rename to doc/generate diff --git a/test/scripts/benchmark.sh b/test/scripts/benchmark similarity index 100% rename from test/scripts/benchmark.sh rename to test/scripts/benchmark diff --git a/test/scripts/clang-tidy.sh b/test/scripts/clang-tidy similarity index 88% rename from test/scripts/clang-tidy.sh rename to test/scripts/clang-tidy index 31c3d6125..7257f9a87 100755 --- a/test/scripts/clang-tidy.sh +++ b/test/scripts/clang-tidy @@ -10,6 +10,6 @@ PROJECT_DIR=$( pwd ) -"${PROJECT_DIR}/test/scripts/test.sh" \ +"${PROJECT_DIR}/test/scripts/test" \ --env CONAN_CMAKE_TOOLCHAIN_FILE="${PROJECT_DIR}/test/cmake/toolchain/clang-tidy-libc++.cmake" \ --env CXX=clang++ diff --git a/test/scripts/conan-setup.sh b/test/scripts/conan-setup similarity index 100% rename from test/scripts/conan-setup.sh rename to test/scripts/conan-setup diff --git a/test/scripts/sanitize-clang.sh b/test/scripts/sanitize-clang similarity index 90% rename from test/scripts/sanitize-clang.sh rename to test/scripts/sanitize-clang index fc4ca212c..83d0a9ad3 100755 --- a/test/scripts/sanitize-clang.sh +++ b/test/scripts/sanitize-clang @@ -9,7 +9,7 @@ PROJECT_DIR=$( pwd ) -"${PROJECT_DIR}/test/scripts/test.sh" \ +"${PROJECT_DIR}/test/scripts/test" \ --env CONAN_CMAKE_TOOLCHAIN_FILE="${PROJECT_DIR}/test/cmake/toolchain/clang.cmake" \ --env CXX=clang++ \ --env LSAN_OPTIONS=verbosity=1:log_threads=1 \ diff --git a/test/scripts/sanitize-gcc.sh b/test/scripts/sanitize-gcc similarity index 90% rename from test/scripts/sanitize-gcc.sh rename to test/scripts/sanitize-gcc index 7fcc6a2cc..90dcd14f8 100755 --- a/test/scripts/sanitize-gcc.sh +++ b/test/scripts/sanitize-gcc @@ -9,7 +9,7 @@ PROJECT_DIR=$( pwd ) -"${PROJECT_DIR}/test/scripts/test.sh" \ +"${PROJECT_DIR}/test/scripts/test" \ --env CONAN_CMAKE_TOOLCHAIN_FILE="${PROJECT_DIR}/test/cmake/toolchain/gcc.cmake" \ --env CXX=g++ \ --env LSAN_OPTIONS=verbosity=1:log_threads=1 \ diff --git a/test/scripts/shellcheck.sh b/test/scripts/shellcheck similarity index 100% rename from test/scripts/shellcheck.sh rename to test/scripts/shellcheck diff --git a/test/scripts/test.sh b/test/scripts/test similarity index 100% rename from test/scripts/test.sh rename to test/scripts/test diff --git a/test/scripts/test-all.sh b/test/scripts/test-all similarity index 79% rename from test/scripts/test-all.sh rename to test/scripts/test-all index fdf52e22e..fc3382553 100755 --- a/test/scripts/test-all.sh +++ b/test/scripts/test-all @@ -9,5 +9,5 @@ PROJECT_DIR=$( pwd ) -"${PROJECT_DIR}"/test/scripts/test.sh \ +"${PROJECT_DIR}"/test/scripts/test \ --options target=test-all diff --git a/test/scripts/unit-test.sh b/test/scripts/unit-test similarity index 80% rename from test/scripts/unit-test.sh rename to test/scripts/unit-test index da4c1d4a8..36dce34b1 100755 --- a/test/scripts/unit-test.sh +++ b/test/scripts/unit-test @@ -9,5 +9,5 @@ PROJECT_DIR=$( pwd ) -"${PROJECT_DIR}/test/scripts/test.sh" \ +"${PROJECT_DIR}/test/scripts/test" \ --options target=test-unit