• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IJHack / QtPass / 35471518671
93%

Build:
DEFAULT BRANCH: main
Ran 19 Sep 2026 09:58PM UTC
Jobs 1
Files 113
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Sep 2026 09:48PM UTC coverage: 78.067% (-0.1%) from 78.167%
35471518671

push

github

web-flow
Store walks visit real directories only; junctions and links are not entries (#1851)

* Store walks visit real directories only; junctions and links are not entries

Qt does not report an NTFS junction as a symlink: QFileInfo::isSymLink()
is false for one, QDir::NoSymLinks lets it through, and QDirIterator's
recursion (and QDir::removeRecursively) walks into it as if it were an
ordinary directory. So the symlink exclusion from #1848 did not hold on
Windows: a junction planted in the store made the re-encryption run read
and rewrite .gpg files outside it, and deleting a folder without git
emptied whatever a junction inside it pointed to.

Util::regularFilesUnder() and Util::directoriesUnder() walk the tree
themselves, over one core: an entry is looked at before anything recurses,
a symlink or junction is never entered or listed, a hidden directory
(.git, a sync tool's version folder) is not entered either, as with
QDirIterator without QDir::Hidden, and siblings come in name order. What
was left out although it is in the way is handed back: every linked
folder, and every link or special file (FIFO, socket, device) under a name
the caller asked for. Every recursive listing of the store uses the walk
now: re-encryption and its leftover recovery, the native search, the
first-run entry count, the files a fresh git init stages (hidden files
included there, .gpg-id is one), the folder list offered for a new entry
and the check before a folder is deleted.

Util::removeTree() removes a folder the way rm -rf does: a link inside goes
as an entry, its target is never touched, and a folder that is itself a
link is unlinked, not emptied. That includes the path with a trailing
separator the tree hands to Remove(): lstat("link/") looks at the target,
so QDir::removeRecursively() on a symlinked store folder deleted the
target's files on every platform. Recovery of an interrupted run refuses a
link or special file under a backup's name as before, and removes one
under a... (continued)

92 of 137 new or added lines in 6 files covered. (67.15%)

10 existing lines in 4 files now uncovered.

6891 of 8827 relevant lines covered (78.07%)

74.77 hits per line

Uncovered Changes

Lines Coverage ∆ File
29
51.49
-0.97% src/mainwindow.cpp
6
60.91
0.0% src/profileinit.cpp
6
89.53
1.53% src/util.cpp
4
74.88
-0.6% src/imitatepass.cpp

Coverage Regressions

Lines Coverage ∆ File
5
74.88
-0.6% src/imitatepass.cpp
2
51.49
-0.97% src/mainwindow.cpp
2
60.91
0.0% src/profileinit.cpp
1
86.42
-1.68% src/nativegrep.cpp
Jobs
ID Job ID Ran Files Coverage
1 35471518671.1 19 Sep 2026 09:58PM UTC 113
78.07
GitHub Action Run
Source Files on build 35471518671
  • Tree
  • List 113
  • Changed 7
  • Source Changed 7
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35471518671
  • e163fe18 on github
  • Prev Build on main (#35470704767)
  • Next Build on main (#35472238879)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc