| Age | Commit message (Collapse) | Author | Lines |
|
|
|
Where a standalone Lua had no lpeg, the harness skipped the markdown
and man checks itself, behind a note the test library hides, and the
test passed on the six checks left. The real luaossl checks were left
out the same way. Each now shows as a skip under a prerequisite named
for the interpreter, and a misspelt mode fails rather than running the
default.
|
|
With no standalone interpreter on the path the unit checks were never
registered, so they counted as neither run nor skipped, and a fault in
the version probe dropped them all behind one line of output. The test
bodies now expand their paths as they run, so a quote in a path no
longer breaks them.
|
|
A plain lua is usually one of the versioned names again, as lua and
lua5.5 are here, so every 5.5 check ran twice, while names such as
lua54 and lua-5.4 were never looked for. A test now names the version
that ran, since "under lua" did not say which one it was.
|
|
The probe piped cgit into grep, so a crash or a sanitizer abort while
probing read as a missing module, and t0501, t0504 and t0505 then
expected the fallback on a machine that has the module.
|
|
As in link-commits, every capture was hex or digits. A string
replacement there would also raise outside the pcall that guards the
pattern and take the whole page down.
|
|
Every capture the checks used was hex or digits, which encoding leaves
alone, so the filter passed with url_encode gone and a broader rule
could then have broken out of the href.
|
|
Every escape the checks looked at sat between tokens or in the tail a
lexer left untagged, so a filter that escaped only those would have
passed with a string literal reaching the page raw.
|
|
A page that died part way through, or logged an error, passed as long
as the text grepped for came before the failure. Four tests also read
the page an earlier test had fetched, so none of them could run alone.
|
|
One ten second budget covered several inputs, so a failure did not say
which had regressed, and it allowed ten times the second a readme is
held to while leaving a slow host little room. A linear render costs
four times as much at four times the length and a quadratic one
sixteen, whatever the host. The cap on unclosed brackets had no check
at all, and the line of \h' escapes timed nothing that is bounded.
|
|
|
|
The old check split the scheme with a newline, which ends the line
before a link can form, so it passed with the strip removed.
|
|
The include run checked only the line in the outer file, so a warning
from the included one could have named the outer file and passed.
|
|
The messages hold the trash directory's path and were matched as
patterns, so a checkout path holding a bracket or a star would break
them.
|
|
grep -o is not in POSIX, while awk's match is.
|
|
The PERL prerequisite comes from NO_PERL in the build options, not from
an interpreter being there, so a host without perl and with the chain
linter off failed these tests instead of skipping them.
|
|
|
|
test-lib exports LC_ALL=C for every test, so the two sorted checks said
it again for nothing.
|
|
Without the fold of a carriage return before a newline, repo.path keeps
a trailing one and the repository cannot be opened, and no test had a
file saved that way. Semicolon comments and a line with no equals sign
were untested too.
|
|
Nothing reached the guard that stops a file including itself, so its
loss would have gone unseen until a site's own cgitrc recursed until
the stack gave out.
|
|
Both paging tests would have passed with the listing ignoring ofs,
since the prev link comes from ofs alone.
|
|
cgit takes no notice of how an about, commit, source or email filter
exits, and nothing showed that a failing one still leaves the page
whole.
|
|
Only the login page's tag was checked, so printing noindex everywhere
would have taken every site out of the search engines and passed.
|
|
Two tests read the page an earlier test left in tmp, so a test put in
between would have had them check some other page.
|
|
The negated greps passed on a missing or renamed file, and the old
hooks were matched with an alternation POSIX leaves undefined in a
basic expression, so a grep that read the bars literally never matched
anything.
|
|
No test served two repositories where one url holds the other as a
prefix, which is the case the longest match in cgit_parse_url is for.
|
|
Nothing exercised noweb, scan-hidden-path, section-from-path, an
ordinary project-list, the gitweb settings or the command-line modes,
so a regression could list repositories meant to stay hidden, and the
command line could drop what a repository set or lose its sort.
|
|
After the write fails the scan runs a second time, and that run adds
nothing only because scan-tree.c never resets the directories it has
visited. Nothing showed it, so a reset would have listed every
repository twice and passed.
|
|
The listing exposes the urls other visitors asked for, and every
request for it used the shared config, which turns it on.
|
|
No test showed a refresh serving and storing the page as it is now, and
the too-large refill could not tell a fresh render from the expired
copy, since nothing changed in between. A negative page ttl was proven
never to expire only for the scan list.
|
|
MANUAL says such a request serves the expired copy and logs nothing,
and only the case where the lock file cannot be opened was tested.
|
|
With no list the glob stayed unmatched, grep failed on it and the
negated check passed. The meta check had no proof that the summary had
rendered either.
|
|
Piping cgit into cat threw away its exit status, so a crash or
valgrind's 126 could not fail the no-key and negative ttl tests. Under
ulimit -f 0 not even a status file can be written, so that status goes
down the pipe with the page. The negative ttl test also leaned on the
list an earlier test left, and its last check passed on a missing file.
|
|
Nothing showed that the limited write failed at all, so a limit that
did not bite passed, as did a lock file left behind, a doubled prefix
or a page resumed from the wrong offset. The pipe to cat also threw
away cgit's exit status.
|
|
Two identical fresh renders passed the replay test, and the two tests
after it read its output, so a slot cut short was caught only because
tree pages happen to be cached.
|
|
The lock tests leaned on a three second sleep in the filter and gave up
the wait for its marker in silence, so on a slow run the requests need
not overlap at all and every check held trivially. A bare wait also
hid any crash of the first request, and the second request's page was
never looked at. The filter now holds the first request until the test
lets it go.
The strace test gets the same hold, released once the trace shows the
second request has opened the lock file. It checks that the delayed
flock then succeeded, since a refusal would mean the inode check was
never reached.
|
|
No fixture's size in whole kilobytes equalled the limit, so turning
the comparison into greater or equal passed every test.
|
|
Follow empties the prefix, and the cap has to come from the path asked
for, as the source warns. Only the line cap can show that. The pairs
are filtered before they are counted, so a single-file page counts one
file whatever the cap, and a followed check under max-diff-files could
never fail.
|
|
Only strict-export and the global filters were ever varied against one
cache-root, so dropping any of the other inputs passed. Leaving out
trust-scan-config is the one that matters most. A list scanned under
it carries the filters pushers set, the list is read back with no trust
check, and a site that does not trust its scans would run them.
|
|
The scan half grepped the page of the request that rebuilt the list,
and that page is drawn from the scan in memory, so the ghost could
never show there. Had the truncate moved out of cache_lock_file, every
later read of the list would have taken in the stale tail and the test
would still have passed.
|
|
Nothing requested a page pinned to an id with the static ttl in force,
so dropping the full id check would cache a page pinned to master or
an abbreviation for ever and the suite would pass.
|
|
The one-slot test threw every response away, so a slot that stopped
comparing keys and served whatever page it held still left one file
and passed. The collision MANUAL promises to log was never checked
either. The size tests also rewrote the shared cgitrc in place, and
the listing replay held only while the dynamic ttl did.
|
|
After tools/build-development.sh or build-release.sh, a plain make
test quietly rebuilt without the sanitizers or the hardening and tested
that binary instead, with nothing in its output to say so.
|
|
Only split_cgi_output was ever run. The handler, which builds the CGI
environment, guards the asset directory, caps the body, times cgit out,
turns a failed run into a 500 and answers HEAD, ran in no test at all.
The server listens on a port the system picks, so parallel runs cannot
collide.
|
|
The five cases ran as one test, and their names reached the log only
with -v. python3 also ran under the trash directory's HOME, where a
version manager's shim may find no interpreter, and without -I, so
PYTHONPATH or the user's site packages could shadow a module.
|
|
Nothing checked that the traced request worked, and one that failed
early opened fewer files and passed. cgit unsets HOME, so a read that
fell back on the account's entry in the password database would name
that home rather than the missing one the test set. Under Valgrind
every test would have failed, as strace follows valgrind into the
.valgrindrc it reads from the home directory.
|
|
test_url failed only on tidy's own errors, so a 404 or a 500 page in
place of the stats or the blame page validated as well as the real
one, and an empty body drew no more than warnings.
|
|
CGIT_TEST_NO_GIT_VERSION ended t0001 before the test library started,
so it wrote no counts and printed nothing. Without vendor/git/.git the
submodule check passed with a note on stderr, which is the case for a
tree from get-git or git archive, so the pin was checked nowhere.
|
|
t0006 ran build/nolua/cgit by its path, so Valgrind never saw it, and
its page checks passed a page that logged an error. The Makefile and
README said the suite runs both binaries the same way, though only
these four tests run the one without Lua.
|
|
The library runs a script again for --tee, --verbose-log and --stress
with the arguments setup.sh left it, and --valgrind was no longer among
them, so -V --valgrind ran cgit bare. --valgrind=<tool> reached the
library instead, which then wrapped every Git command and left cgit
alone. --valgrind-only is refused, as it would need the library's own
per-test switching.
|