Skip to content

Use 'FindMimeFromData' from Win API instead of QMimeDatabase() functions to get the mimetype. Prevents freeze from VFS placeholders. #4965

Use 'FindMimeFromData' from Win API instead of QMimeDatabase() functions to get the mimetype. Prevents freeze from VFS placeholders.

Use 'FindMimeFromData' from Win API instead of QMimeDatabase() functions to get the mimetype. Prevents freeze from VFS placeholders. #4965

name: Windows Build and Test
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
build:
name: Windows Build and Test
runs-on: windows-2019
env:
CRAFT_TARGET: windows-msvc2019_64-cl
COBERTURA_COVERAGE_FILE: ${{ github.workspace }}\cobertura_coverage\coverage.xml
CRAFT_MASTER_LOCATION: ${{ github.workspace }}\CraftMaster
CRAFT_MASTER_CONFIG: ${{ github.workspace }}\craftmaster.ini
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Install Craft Master with Nextcloud Client Deps
shell: pwsh
run: |
& cmd /C "git clone -q --depth=1 https://invent.kde.org/packaging/craftmaster.git ${{ env.CRAFT_MASTER_LOCATION }} 2>&1"
function craft() {
python "${{ env.CRAFT_MASTER_LOCATION }}\CraftMaster.py" --config "${{ env.CRAFT_MASTER_CONFIG }}" --target ${{ env.CRAFT_TARGET }} -c $args
if($LASTEXITCODE -ne 0) {exit $LASTEXITCODE}
}
craft --add-blueprint-repository [git]https://github.com/nextcloud/desktop-client-blueprints.git
craft craft
craft --install-deps nextcloud-client
- name: Cache Install OpenCppCoverage
id: cache-install-opencppcoverage
uses: actions/cache@v4
with:
path: C:\Program Files\OpenCppCoverage
key: ${{ runner.os }}-cache-install-opencppcoverage
- name: Install OpenCppCoverage
if: steps.cache-install-opencppcoverage.outputs.cache-hit != 'true'
shell: pwsh
run: |
choco install opencppcoverage
- name: Setup PATH
shell: pwsh
run: |
echo "C:\Program Files\OpenCppCoverage" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "${{ github.workspace }}\${{ env.CRAFT_TARGET }}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Compile
shell: pwsh
run: |
function craft() {
python "${{ env.CRAFT_MASTER_LOCATION }}\CraftMaster.py" --config "${{ env.CRAFT_MASTER_CONFIG }}" --target ${{ env.CRAFT_TARGET }} -c $args
if($LASTEXITCODE -ne 0) {exit $LASTEXITCODE}
}
craft --src-dir ${{ github.workspace }} nextcloud-client
- name: Run tests
shell: pwsh
run: |
function runTestsAndCreateCoverage() {
$buildFolder = "${{ github.workspace }}\${{ env.CRAFT_TARGET }}\build\nextcloud-client\work\build"
cd $buildFolder
$binFolder = "$buildFolder\bin"
& OpenCppCoverage.exe --optimized_build --quiet --sources ${{ github.workspace }} --modules $binFolder\*.dll* --export_type cobertura:${{ env.COBERTURA_COVERAGE_FILE }} --cover_children -- ctest --output-on-failure --timeout 300
}
runTestsAndCreateCoverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ${{ github.workspace }}\cobertura_coverage
fail_ci_if_error: true