diff --git a/.gitattributes b/.gitattributes index ba871fb..a0853c2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -35,6 +35,7 @@ python/** !export-ignore # Add more build files. scripts !export-ignore +scripts/download_testdata.sh !export-ignore scripts/libbrotli*.pc.in !export-ignore # Add testdata diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml index 91668d3..c21a144 100644 --- a/.github/workflows/build_test.yml +++ b/.github/workflows/build_test.yml @@ -357,39 +357,3 @@ jobs: python -VV python -c "import sys; sys.exit('Invalid python version') if '.'.join(map(str,sys.version_info[0:2])) != '${{ matrix.python_version }}' else True" python setup.py ${{ matrix.py_setuptools_cmd || 'test'}} - - archive_build: - name: Build and test from archive - runs-on: 'ubuntu-latest' - defaults: - run: - shell: bash - steps: - - - name: Checkout the source - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - with: - submodules: false - fetch-depth: 1 - - - name: Archive - run: | - git archive HEAD -o archive.tgz - - - name: Extract - run: | - mkdir archive - cd archive - tar xvzf ../archive.tgz - - - name: Configure and Build - run: | - cd archive - cmake -B out . - cmake --build out - - - name: Test - run: | - cd archive - cd out - ctest diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 00b2b33..4c0bc6f 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -119,4 +119,73 @@ jobs: uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 with: files: brotli-${{matrix.triplet}}.zip - tag_name: dev/null + + testdata_upload: + name: Upload testdata + runs-on: 'ubuntu-latest' + defaults: + run: + shell: bash + steps: + + - name: Checkout the source + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + with: + submodules: false + fetch-depth: 1 + + - name: Compress testdata + run: | + tar cvfJ testdata.txz tests/testdata + + - name: Upload archive to release + if: github.event_name == 'release' + uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # v0.1.15 + with: + files: testdata.txz + + archive_build: + needs: testdata_upload + name: Build and test from archive + runs-on: 'ubuntu-latest' + defaults: + run: + shell: bash + steps: + + - name: Checkout the source + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + with: + submodules: false + fetch-depth: 1 + + - name: Archive + run: | + git archive HEAD -o archive.tgz + + - name: Pick tag + run: | + echo "BROTLI_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV + + - name: Extract + run: | + mkdir archive + cd archive + tar xvzf ../archive.tgz + + - name: Download testdata + run: | + cd archive + scripts/download_testdata.sh + + - name: Configure and Build + run: | + cd archive + cmake -B out . + cmake --build out + + - name: Test + run: | + cd archive + cd out + ctest diff --git a/CMakeLists.txt b/CMakeLists.txt index 2400230..64b979a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -261,7 +261,7 @@ if(NOT BROTLI_DISABLE_TESTS) -P ${CMAKE_CURRENT_SOURCE_DIR}/tests/run-roundtrip-test.cmake) endforeach() else() - message(NOTICE "Test file ${INPUT} does not exist; OK on tarball builds") + message(NOTICE "Test file ${INPUT} does not exist; OK on tarball builds; consider running scripts/download_testdata.sh before configuring.") endif() endforeach() diff --git a/scripts/download_testdata.sh b/scripts/download_testdata.sh new file mode 100755 index 0000000..b93028d --- /dev/null +++ b/scripts/download_testdata.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -x +BROTLI_TAG=${BROTLI_TAG:-dev/null} +BROTLI_TAG="${BROTLI_TAG//'/'/%2F}" # Escaping for tag names with slash (e.g. "dev/null") +ARCHIVE=testdata.txz +curl -L https://github.com/google/brotli/releases/download/${BROTLI_TAG}/${ARCHIVE} -o ${ARCHIVE} +tar xvfJ ${ARCHIVE}