Skip to content
Merged
Show file tree
Hide file tree
Changes from 249 commits
Commits
Show all changes
261 commits
Select commit Hold shift + click to select a range
fa3e77c
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 6, 2026
ced784d
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 6, 2026
8fa8283
Update PR
abraunegg Mar 7, 2026
96b2212
Update e2e-personal.yaml
abraunegg Mar 7, 2026
305f420
Update e2e-personal.yaml
abraunegg Mar 7, 2026
2484d95
Update PR
abraunegg Mar 7, 2026
cdb35c3
Fix token use across test cases
abraunegg Mar 7, 2026
9ff830f
Rework Test Case 0002
abraunegg Mar 7, 2026
f6d86ed
Update tc0002_sync_list_validation.py
abraunegg Mar 7, 2026
db85281
Update tc0002_sync_list_validation.py
abraunegg Mar 7, 2026
c367b1f
Update EVENT_PATTERNS to handle debug logging
abraunegg Mar 8, 2026
c4621df
Update tc0002_sync_list_validation.py
abraunegg Mar 8, 2026
47428c0
Update tc0002_sync_list_validation.py
abraunegg Mar 8, 2026
c203440
Update PR
abraunegg Mar 8, 2026
fee83aa
Update PR
abraunegg Mar 8, 2026
3522c0f
Update PR
abraunegg Mar 8, 2026
a4339f9
Update allow.txt
abraunegg Mar 8, 2026
ff8ebc1
Add further 'sync_list' test case coverage
abraunegg Mar 8, 2026
5a06159
Add 'config' file to ensure 'safeBackup' files are not generated
abraunegg Mar 8, 2026
0e04e27
Update SL-0003
abraunegg Mar 8, 2026
f14d62e
Update PR
abraunegg Mar 8, 2026
071db82
Update end_to_end_testing.md
abraunegg Mar 8, 2026
03683a9
Update PR
abraunegg Mar 8, 2026
1fb0700
Update PR: Add code changes for SL-0018 testing
abraunegg Mar 12, 2026
0c98f88
Update PR
abraunegg Mar 12, 2026
429eca8
Expand 'sync_list' testing scenarios
abraunegg Mar 12, 2026
20ff1b9
Update tc0002_sync_list_validation.py
abraunegg Mar 13, 2026
f87b1f4
Update sync.d
abraunegg Mar 13, 2026
6dd4dba
Update tc0002_sync_list_validation.py
abraunegg Mar 13, 2026
247646b
Update tc0002_sync_list_validation.py
abraunegg Mar 13, 2026
58c95df
Update PR
abraunegg Mar 13, 2026
0f35c83
Remove code fixes from this PR
abraunegg Mar 13, 2026
e96cd77
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 13, 2026
fad1c00
Fix doc badges
abraunegg Mar 13, 2026
c30cd81
Add further test cases
abraunegg Mar 13, 2026
4ceec37
Update Test Cases 0003 to 0016
abraunegg Mar 13, 2026
c71469c
Update PR
abraunegg Mar 13, 2026
e6d19a3
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 13, 2026
3e36377
Update PR - Add Test Cases 0017 to 0024
abraunegg Mar 14, 2026
7815913
Fix test cases
abraunegg Mar 14, 2026
29f7e8b
Update Test Cases
abraunegg Mar 14, 2026
c99d806
Just run failing cases
abraunegg Mar 14, 2026
b6579ce
Update tc0018_recycle_bin_validation.py
abraunegg Mar 14, 2026
8e95724
Update tc0018_recycle_bin_validation.py
abraunegg Mar 14, 2026
dfdff07
Update tc0018_recycle_bin_validation.py
abraunegg Mar 14, 2026
76724b1
Update tc0018
abraunegg Mar 14, 2026
445b5d8
tc0018 passed, moving on to tc0022
abraunegg Mar 15, 2026
3c33dd7
Update tc0022
abraunegg Mar 15, 2026
38ef1fc
Update PR - fix tc0022
abraunegg Mar 15, 2026
8b26efd
tc0022 passed, move to tc0023
abraunegg Mar 15, 2026
c461be7
Update tc0023_bypass_data_preservation_validation.py
abraunegg Mar 15, 2026
9c7d3b0
tc0023 passed, testing tc0024
abraunegg Mar 15, 2026
ac54ba8
Fix tc0024
abraunegg Mar 15, 2026
9ca0243
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 15, 2026
c16e8b6
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 15, 2026
28f533b
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 15, 2026
7b31feb
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 15, 2026
851f756
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 16, 2026
33d3772
Add files via upload
abraunegg Mar 16, 2026
1b39a13
Update e2e-business.yaml
abraunegg Mar 16, 2026
64b473c
Update docs
abraunegg Mar 16, 2026
a0f1221
Update PR
abraunegg Mar 16, 2026
5ed3381
Fix tc0024
abraunegg Mar 16, 2026
a0841fd
Update tc0024_big_delete_safeguard_validation.py
abraunegg Mar 16, 2026
5f957e6
Add Cleanup
abraunegg Mar 16, 2026
eac3ae3
Add tc0025
abraunegg Mar 16, 2026
e0bd8b4
Update tc0025
abraunegg Mar 16, 2026
2cfcda6
Add tc0026
abraunegg Mar 16, 2026
f3cf328
code fix for tc0026
abraunegg Mar 16, 2026
11d8230
revert code change
abraunegg Mar 16, 2026
0b93db4
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 16, 2026
f47e474
Add tc0027
abraunegg Mar 16, 2026
cc3ae5d
remove tc0027
abraunegg Mar 16, 2026
05c2fb8
Update run.py
abraunegg Mar 16, 2026
6ebea18
Update run.py
abraunegg Mar 16, 2026
b268d30
Add tc0028
abraunegg Mar 16, 2026
21231da
full test tc0001 -> tc0028
abraunegg Mar 16, 2026
4d2f116
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 16, 2026
43b0221
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 18, 2026
6b9ab23
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 18, 2026
016877b
Update tc0021
abraunegg Mar 18, 2026
26be0c5
Update utils.py
abraunegg Mar 19, 2026
ddd0987
Update cleanup()
abraunegg Mar 20, 2026
af6dc17
switch to debug logging for tc0021
abraunegg Mar 20, 2026
84b12ab
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 20, 2026
376978e
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 20, 2026
f02f4f7
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 20, 2026
3f9e7d8
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 20, 2026
cc58970
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 20, 2026
a397a96
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 21, 2026
71595db
Update run.py
abraunegg Mar 21, 2026
3ea472f
Update tc0021_resumable_transfers_validation.py
abraunegg Mar 21, 2026
f99ab1c
Update tc0023_bypass_data_preservation_validation.py
abraunegg Mar 22, 2026
6dc6b7a
Update tc0023_bypass_data_preservation_validation.py
abraunegg Mar 22, 2026
05bbdd5
Update tc0002_sync_list_validation.py
abraunegg Mar 22, 2026
8449930
Update tc0002_sync_list_validation.py
abraunegg Mar 22, 2026
9e12274
Update tc0002_sync_list_validation.py
abraunegg Mar 23, 2026
75977d4
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Mar 23, 2026
2b8baa0
Update PR
abraunegg Mar 23, 2026
c67db4f
Update tc0029_local_first_upload_only_timestamp_preservation_validati…
abraunegg Mar 23, 2026
63b1866
Add SharePoint 'drive_id' support
abraunegg Mar 23, 2026
66814e2
Add e2e-sharepoint.yaml
abraunegg Mar 23, 2026
345acb3
Update PR post SharePoint addition
abraunegg Mar 23, 2026
9efe13b
Update tc0001
abraunegg Mar 23, 2026
1753a37
Update PR
abraunegg Mar 23, 2026
ad73ae0
Add tc0030 and tc0031
abraunegg Mar 23, 2026
df0468a
Update tc0030 and tc0031
abraunegg Mar 23, 2026
cfd4d95
Update tc0030 and tc0031
abraunegg Mar 23, 2026
ec6fb8d
Update tc0030 and tc0031
abraunegg Mar 23, 2026
c478b26
Update tc0030 and tc0031
abraunegg Mar 23, 2026
e2ff64d
Update tc0030 and tc0031
abraunegg Mar 23, 2026
f56f55b
switch to debug logging for tc0030 and tc0031
abraunegg Mar 23, 2026
0f147b4
Update tc0030 and tc0031 - remove double --syncdir
abraunegg Mar 24, 2026
3e8d577
Update tc0031
abraunegg Mar 24, 2026
8a3c6ee
Update tc0031
abraunegg Mar 24, 2026
1d1b5e3
Update tc0031 - remove debug
abraunegg Mar 24, 2026
3567c05
Test full list
abraunegg Mar 24, 2026
270ed97
Add tc0032
abraunegg Mar 25, 2026
e6f3ae9
Add tc0033
abraunegg Mar 25, 2026
435907f
Update tc0033
abraunegg Mar 27, 2026
57a0e8a
Update tc0033
abraunegg Mar 27, 2026
7c54992
Update tc0033
abraunegg Mar 28, 2026
4c44903
Add tc0033 test
abraunegg Mar 28, 2026
1877d75
re-enable tc0031
abraunegg Mar 28, 2026
698deff
Update tc0033
abraunegg Mar 28, 2026
9cee8a5
Update testcases
abraunegg Mar 28, 2026
e5a1f0c
Update context.py
abraunegg Mar 28, 2026
641a798
Test Full Run
abraunegg Mar 29, 2026
05a7af3
Update YAML files
abraunegg Apr 4, 2026
e688879
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 4, 2026
42984f7
Update tc0021_resumable_transfers_validation.py
abraunegg Apr 5, 2026
7ddf14d
Update tc0020_monitor_mode_validation.py
abraunegg Apr 5, 2026
0a64015
Update e2e-personal.yaml
abraunegg Apr 5, 2026
0645a37
Add E2E Workflow for 15 Character Personal Accounts
abraunegg Apr 5, 2026
46a8744
Update e2e-personal-15char-check.yaml
abraunegg Apr 5, 2026
6076c94
Update PR
abraunegg Apr 5, 2026
b18259a
Update tc0021_resumable_transfers_validation.py
abraunegg Apr 6, 2026
b9d3984
Add tc0034
abraunegg Apr 6, 2026
03b01bc
Update tc0034_local_move_between_directories_validation.py
abraunegg Apr 6, 2026
fc346ed
Update tc0034
abraunegg Apr 6, 2026
79a88c3
Add tc0035
abraunegg Apr 6, 2026
3024b14
Update PR
abraunegg Apr 6, 2026
60e082e
Add tc0036
abraunegg Apr 6, 2026
30cc9cb
Update tc0036
abraunegg Apr 6, 2026
158a74d
Change titles of E2E workflows
abraunegg Apr 6, 2026
e56060f
Update e2e-personal-15char-check.yaml
abraunegg Apr 6, 2026
4f328c7
Add tc0037
abraunegg Apr 6, 2026
6e0ef7c
Update tc0037
abraunegg Apr 7, 2026
6562865
Update tc0037_mtime_only_local_change_handling.py
abraunegg Apr 7, 2026
d22e9ae
Update tc0037
abraunegg Apr 7, 2026
7fa42e6
Add tc0038
abraunegg Apr 7, 2026
9e073be
Add tc0039
abraunegg Apr 7, 2026
ede559d
Update tc0039
abraunegg Apr 7, 2026
a03ca60
Update tc0039_empty_directory_handling_validation.py
abraunegg Apr 7, 2026
facd57c
Fix tc0039
abraunegg Apr 7, 2026
aff3b76
Update tc0039
abraunegg Apr 7, 2026
dfd1711
Update tc0039
abraunegg Apr 7, 2026
d7ebf75
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 7, 2026
5fa9255
Update PR
abraunegg Apr 7, 2026
e73b145
Add CI re-run support with debugging
abraunegg Apr 8, 2026
617a674
Update yaml files to do debug run
abraunegg Apr 9, 2026
e896143
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 11, 2026
f1439b9
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 19, 2026
3d5590e
Add force_xfer_abort configuration option to tc0021
abraunegg Apr 20, 2026
d3087c6
Add tc0040
abraunegg Apr 20, 2026
1e330f2
Add --monitor test cases
abraunegg Apr 20, 2026
5c84f55
Update --monitor test cases
abraunegg Apr 20, 2026
e3399cd
Add further --monitor test cases
abraunegg Apr 20, 2026
8f9c363
Create monitor_case_base.py
abraunegg Apr 20, 2026
9cb0a6d
Update tc0051_monitor_mode_mtime_only_local_change_handling.py
abraunegg Apr 20, 2026
a371891
Update tc0051_monitor_mode_mtime_only_local_change_handling.py
abraunegg Apr 20, 2026
3912a9c
Add tc0054, tc0055 and tc0056
abraunegg Apr 20, 2026
98191fb
Update to perform full test
abraunegg Apr 20, 2026
8daa825
Refactor E2E test harness to standardise testcase framework and execu…
abraunegg Apr 20, 2026
86138ea
Update base.py
abraunegg Apr 21, 2026
9ca0c2a
Add startup guard
abraunegg Apr 21, 2026
ea3c9a6
Update PR
abraunegg Apr 23, 2026
c8f3a4f
Update PR
abraunegg Apr 24, 2026
7ccdf70
Fix tc0036 and tc0044
abraunegg Apr 25, 2026
2645e72
Update tc0024
abraunegg Apr 25, 2026
65ddf1b
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 25, 2026
f8c8755
Update readme.md
abraunegg Apr 25, 2026
6a13268
Update tc0031
abraunegg Apr 25, 2026
69b2f66
Update yaml files
abraunegg Apr 26, 2026
be9841f
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 26, 2026
d583672
Update tc0024
abraunegg Apr 26, 2026
d88acf9
Add OneDrive Personal Shared Folder Testing
abraunegg Apr 26, 2026
d2d7b13
Add e2e-personal-shared-folders.yaml
abraunegg Apr 26, 2026
664a376
Update end_to_end_testing.md
abraunegg Apr 26, 2026
7c4ed47
Add sfptc0002
abraunegg Apr 26, 2026
5dcdfec
Add Guarded Cleanup
abraunegg Apr 27, 2026
7796fec
Update guarded cleanup
abraunegg Apr 27, 2026
cb5cfa3
Update Guarded Cleanup v3
abraunegg Apr 27, 2026
1808bf4
Update OneDrive Personal Shared Folders Testing
abraunegg Apr 27, 2026
be6fee6
Revert "Update OneDrive Personal Shared Folders Testing"
abraunegg Apr 27, 2026
ac0229e
Update protection for shared folder testing
abraunegg Apr 27, 2026
aa4046e
Update OneDrive Personal Shared Folders manifest
abraunegg Apr 27, 2026
0e97687
Update shared_folder_common.py
abraunegg Apr 28, 2026
9185c08
Update sfptc0002_clean_monitor_pull_down.py
abraunegg Apr 28, 2026
6e286d0
Update PR
abraunegg Apr 28, 2026
676507d
Add tc0057
abraunegg Apr 28, 2026
ea947e1
Fix yaml files to pick up correct results
abraunegg Apr 28, 2026
001324d
Update tc0057
abraunegg Apr 28, 2026
fcdfc91
Update docs based on tc0057
abraunegg Apr 28, 2026
0434722
Add pgrep
abraunegg Apr 28, 2026
ab06b33
Update yaml
abraunegg Apr 28, 2026
a1ee746
Update yaml
abraunegg Apr 28, 2026
39adc14
Update tc0024_big_delete_safeguard_validation.py
abraunegg Apr 28, 2026
312cdbf
Add sfptc0003
abraunegg Apr 28, 2026
e47610c
Update sfptc0003
abraunegg Apr 29, 2026
a68ae49
Update sfptc0003
abraunegg Apr 29, 2026
a174887
Fix sfptc0003
abraunegg Apr 29, 2026
62dddf2
Update sfptc0003
abraunegg Apr 29, 2026
64a75b9
Fix empty directory creation when using sync_list
abraunegg Apr 30, 2026
b4e9aba
Run full CI harness
abraunegg Apr 30, 2026
b1d0dc6
Update wildcard and globbing exclusion handling
abraunegg Apr 30, 2026
95f3fc8
Update clientSideFiltering.d
abraunegg Apr 30, 2026
afbfd8e
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg Apr 30, 2026
5fef0ff
Update clientSideFiltering.d
abraunegg Apr 30, 2026
ba32bbc
Do not clear excludeWildcardMatched state
abraunegg Apr 30, 2026
0152912
Fix Personal Shared Folder SL-0010 Test
abraunegg Apr 30, 2026
a308b3c
Revert "Fix Personal Shared Folder SL-0010 Test"
abraunegg May 1, 2026
3b9b3f0
Fix Personal Shared Folder SL-0010 Test v2
abraunegg May 1, 2026
158b822
Revert "Fix Personal Shared Folder SL-0010 Test v2"
abraunegg May 1, 2026
32bf7d7
Fix Personal Shared Folder SL-0010 Test v3
abraunegg May 1, 2026
6d1736f
Capture client database on test failure
abraunegg May 1, 2026
17edf3d
Capture client database on test failure v2
abraunegg May 1, 2026
614887d
Update computePath() to handle multiple shared paths
abraunegg May 1, 2026
f8218b3
Fix sfptc0003 SL-0014 & SL-0017
abraunegg May 1, 2026
08f2250
Fix SL-0028, SL-0030 within tc0002
abraunegg May 2, 2026
09c7d9b
Merge branch 'master' into add-github-actions-ci-e2e-testing
abraunegg May 2, 2026
5e8afd6
Extend 'sync_list' Scenarios
abraunegg May 2, 2026
3e88041
Fix 'sync_list' scenario expectation defects
abraunegg May 3, 2026
e3837ca
Update sfptc0003_sync_list_validation.py
abraunegg May 3, 2026
b7c4ed1
Update sfptc0003_sync_list_validation.py
abraunegg May 3, 2026
3560d7a
Revert "Update sfptc0003_sync_list_validation.py"
abraunegg May 3, 2026
13379c0
Update sfptc0003_sync_list_validation.py
abraunegg May 3, 2026
cce3b32
Update end_to_end_testing.md
abraunegg May 4, 2026
d56fc64
Update allow.txt
abraunegg May 4, 2026
37bc871
Add files via upload
abraunegg May 5, 2026
6b2a9d3
Add Business Shared Folders
abraunegg May 5, 2026
d073f37
Merge branch 'add-github-actions-ci-e2e-testing' of https://github.co…
abraunegg May 5, 2026
4809bba
Update shared_folder_common.py
abraunegg May 5, 2026
6a704bd
Add OneDrive Business Shared Folders 'sync_list' Tests
abraunegg May 5, 2026
381da4a
Add additional scenarios for 'sync_list'
abraunegg May 6, 2026
5a368f3
Update bsftc0003_sync_list_validation.py
abraunegg May 6, 2026
2bab5dc
Update bsftc0003_sync_list_validation.py
abraunegg May 6, 2026
844d3b7
Update documents
abraunegg May 6, 2026
ebbe07f
Update allow.txt
abraunegg May 6, 2026
4b43ebd
Update end_to_end_testing.md
abraunegg May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/actions/spelling/allow.txt
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@ pastebin
permessage
pfa
PFN
pgrep
phlibi
phobos
pidx
Expand Down Expand Up @@ -444,6 +445,7 @@ rsnapshot
rsv
rtud
rul
ruleset
runstatedir
runsvdir
Ruppe
Expand Down
189 changes: 189 additions & 0 deletions .github/workflows/e2e-business.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
name: E2E Testing - Business Account

on:
push:
branches-ignore:
- master
- main
paths:
- 'src/**'
- 'ci/**'
- '.github/workflows/e2e-*.yaml'

permissions:
contents: read
pull-requests: write
issues: write

jobs:
e2e_business:
runs-on: ubuntu-latest
container: fedora:latest
environment:
name: e2e-business
deployment: false

steps:
- uses: actions/checkout@v4

- name: Install Dependencies
run: |
dnf -y update
dnf -y group install development-tools
dnf -y install python3 ldc libcurl-devel sqlite-devel dbus-devel jq

- name: Build + local install prefix
run: |
./configure --prefix="$PWD/.ci/prefix"
make -j"$(nproc)"
make install
"$PWD/.ci/prefix/bin/onedrive" --version

- name: Prepare isolated HOME
run: |
set -euo pipefail
export HOME="$RUNNER_TEMP/home-business"
echo "HOME=$HOME" >> "$GITHUB_ENV"
echo "XDG_CONFIG_HOME=$HOME/.config" >> "$GITHUB_ENV"
echo "XDG_CACHE_HOME=$HOME/.cache" >> "$GITHUB_ENV"
mkdir -p "$HOME"

- name: Inject refresh token into onedrive config
env:
REFRESH_TOKEN_BUSINESS: ${{ secrets.REFRESH_TOKEN_BUSINESS }}
run: |
set -euo pipefail
mkdir -p "$XDG_CONFIG_HOME/onedrive"
umask 077
printf "%s" "$REFRESH_TOKEN_BUSINESS" > "$XDG_CONFIG_HOME/onedrive/refresh_token"
chmod 600 "$XDG_CONFIG_HOME/onedrive/refresh_token"

- name: Run E2E harness
env:
ONEDRIVE_BIN: ${{ github.workspace }}/.ci/prefix/bin/onedrive
E2E_TARGET: business
RUN_ID: ${{ github.run_id }}
PYTHONUNBUFFERED: "1"
run: |
python3 -u ci/e2e/run.py

- name: Debug rerun failed E2E cases
if: always()
env:
ONEDRIVE_BIN: ${{ github.workspace }}/.ci/prefix/bin/onedrive
E2E_TARGET: business
RUN_ID: ${{ github.run_id }}
PYTHONUNBUFFERED: "1"
run: |
set -euo pipefail
if [ -f ci/e2e/out/results.json ]; then
python3 -u ci/e2e/rerun_failures.py \
--results ci/e2e/out/results.json \
--output-subdir debug-rerun \
--run-label debug-rerun \
--skip-suite-cleanup
else
echo "No primary results.json found; skipping debug rerun"
fi

- name: Upload E2E artefacts
if: always()
uses: actions/upload-artifact@v4
with:
name: e2e-business
path: ci/e2e/out/**

pr_comment:
name: Post PR summary comment
needs: [ e2e_business ]
runs-on: ubuntu-latest
if: always()

steps:
- uses: actions/checkout@v4

- name: Download artefact
uses: actions/download-artifact@v4
with:
name: e2e-business
path: artifacts/e2e-business

- name: Build markdown summary
id: summary
run: |
set -euo pipefail

primary_results="artifacts/e2e-business/results.json"
if [ -f "$primary_results" ]; then
f="$primary_results"
else
f="$(find artifacts/e2e-business \
-path '*/debug-rerun/*' -prune -o \
-name results.json -type f -print | head -n 1 || true)"
fi
if [ -z "$f" ] || [ ! -f "$f" ]; then
echo "md=⚠️ E2E ran but results.json was not found." >> "$GITHUB_OUTPUT"
exit 0
fi

target=$(jq -r '.target // "business"' "$f")
total=$(jq -r '.cases | length' "$f")
passed=$(jq -r '[.cases[] | select(.status=="pass")] | length' "$f")
failed=$(jq -r '[.cases[] | select(.status=="fail")] | length' "$f")

failures=$(jq -r '.cases[]
| select(.status=="fail")
| "- Test Case \(.id // "????"): \(.name) — \(.reason // "no reason provided")"' "$f" || true)

md="## ${target^} Account Testing\n"
md+="**${total}** Test Cases Run \n"
md+="**${passed}** Test Cases Passed \n"
md+="**${failed}** Test Cases Failed \n\n"

if [ "$failed" -gt 0 ] && [ -n "$failures" ]; then
md+="### ${target^} Account Test Failures\n"
md+="$failures\n"
fi

echo "md<<EOF" >> "$GITHUB_OUTPUT"
echo -e "$md" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"

- name: Find PR associated with this commit
id: pr
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const sha = context.sha;

const prs = await github.rest.repos.listPullRequestsAssociatedWithCommit({
owner, repo, commit_sha: sha
});

if (!prs.data.length) {
core.setOutput("found", "false");
return;
}

core.setOutput("found", "true");
core.setOutput("number", String(prs.data[0].number));

- name: Post PR comment
if: steps.pr.outputs.found == 'true'
uses: actions/github-script@v7
env:
COMMENT_MD: ${{ steps.summary.outputs.md }}
with:
script: |
const { owner, repo } = context.repo;
const issue_number = Number("${{ steps.pr.outputs.number }}");

const md = process.env.COMMENT_MD || "⚠️ No summary text produced.";

await github.rest.issues.createComment({
owner,
repo,
issue_number,
body: md
});
189 changes: 189 additions & 0 deletions .github/workflows/e2e-personal-15char-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
name: E2E Testing - Personal Account with 15 Character driveId Check

on:
push:
branches-ignore:
- master
- main
paths:
- 'src/**'
- 'ci/**'
- '.github/workflows/e2e-*.yaml'

permissions:
contents: read
pull-requests: write
issues: write

jobs:
e2e_personal:
runs-on: ubuntu-latest
container: fedora:latest
environment:
name: e2e-personal-15char-check
deployment: false

steps:
- uses: actions/checkout@v4

- name: Install Dependencies
run: |
dnf -y update
dnf -y group install development-tools
dnf -y install python3 ldc libcurl-devel sqlite-devel dbus-devel jq

- name: Build + local install prefix
run: |
./configure --prefix="$PWD/.ci/prefix"
make -j"$(nproc)"
make install
"$PWD/.ci/prefix/bin/onedrive" --version

- name: Prepare isolated HOME
run: |
set -euo pipefail
export HOME="$RUNNER_TEMP/home-personal"
echo "HOME=$HOME" >> "$GITHUB_ENV"
echo "XDG_CONFIG_HOME=$HOME/.config" >> "$GITHUB_ENV"
echo "XDG_CACHE_HOME=$HOME/.cache" >> "$GITHUB_ENV"
mkdir -p "$HOME"

- name: Inject refresh token into onedrive config
env:
REFRESH_TOKEN_PERSONAL: ${{ secrets.REFRESH_TOKEN_PERSONAL }}
run: |
set -euo pipefail
mkdir -p "$XDG_CONFIG_HOME/onedrive"
umask 077
printf "%s" "$REFRESH_TOKEN_PERSONAL" > "$XDG_CONFIG_HOME/onedrive/refresh_token"
chmod 600 "$XDG_CONFIG_HOME/onedrive/refresh_token"

- name: Run E2E harness
env:
ONEDRIVE_BIN: ${{ github.workspace }}/.ci/prefix/bin/onedrive
E2E_TARGET: personal
RUN_ID: ${{ github.run_id }}
PYTHONUNBUFFERED: "1"
run: |
python3 -u ci/e2e/run.py

- name: Debug rerun failed E2E cases
if: always()
env:
ONEDRIVE_BIN: ${{ github.workspace }}/.ci/prefix/bin/onedrive
E2E_TARGET: personal
RUN_ID: ${{ github.run_id }}
PYTHONUNBUFFERED: "1"
run: |
set -euo pipefail
if [ -f ci/e2e/out/results.json ]; then
python3 -u ci/e2e/rerun_failures.py \
--results ci/e2e/out/results.json \
--output-subdir debug-rerun \
--run-label debug-rerun \
--skip-suite-cleanup
else
echo "No primary results.json found; skipping debug rerun"
fi

- name: Upload E2E artefacts
if: always()
uses: actions/upload-artifact@v4
with:
name: e2e-personal-15char-check
path: ci/e2e/out/**

pr_comment:
name: Post PR summary comment
needs: [ e2e_personal ]
runs-on: ubuntu-latest
if: always()

steps:
- uses: actions/checkout@v4

- name: Download artefact
uses: actions/download-artifact@v4
with:
name: e2e-personal-15char-check
path: artifacts/e2e-personal-15char-check

- name: Build markdown summary
id: summary
run: |
set -euo pipefail

primary_results="artifacts/e2e-personal-15char-check/results.json"
if [ -f "$primary_results" ]; then
f="$primary_results"
else
f="$(find artifacts/e2e-personal-15char-check \
-path '*/debug-rerun/*' -prune -o \
-name results.json -type f -print | head -n 1 || true)"
fi
if [ -z "$f" ] || [ ! -f "$f" ]; then
echo "md=⚠️ E2E ran but results.json was not found." >> "$GITHUB_OUTPUT"
exit 0
fi

target=$(jq -r '.target // "personal"' "$f")
total=$(jq -r '.cases | length' "$f")
passed=$(jq -r '[.cases[] | select(.status=="pass")] | length' "$f")
failed=$(jq -r '[.cases[] | select(.status=="fail")] | length' "$f")

failures=$(jq -r '.cases[]
| select(.status=="fail")
| "- Test Case \(.id // "????"): \(.name) — \(.reason // "no reason provided")"' "$f" || true)

md="## ${target^} Account Testing - 15 Character 'driveId'\n"
md+="**${total}** Test Cases Run \n"
md+="**${passed}** Test Cases Passed \n"
md+="**${failed}** Test Cases Failed \n\n"

if [ "$failed" -gt 0 ] && [ -n "$failures" ]; then
md+="### ${target^} Account Test Failures\n"
md+="$failures\n"
fi

echo "md<<EOF" >> "$GITHUB_OUTPUT"
echo -e "$md" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"

- name: Find PR associated with this commit
id: pr
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const sha = context.sha;

const prs = await github.rest.repos.listPullRequestsAssociatedWithCommit({
owner, repo, commit_sha: sha
});

if (!prs.data.length) {
core.setOutput("found", "false");
return;
}

core.setOutput("found", "true");
core.setOutput("number", String(prs.data[0].number));

- name: Post PR comment
if: steps.pr.outputs.found == 'true'
uses: actions/github-script@v7
env:
COMMENT_MD: ${{ steps.summary.outputs.md }}
with:
script: |
const { owner, repo } = context.repo;
const issue_number = Number("${{ steps.pr.outputs.number }}");

const md = process.env.COMMENT_MD || "⚠️ No summary text produced.";

await github.rest.issues.createComment({
owner,
repo,
issue_number,
body: md
});
Loading
Loading