gix-testtools v0.16.0
Changed
-
In gix-testtools use
ignoreandindexviagix_worktree
This removes thegix-ignoreandgix-indexdirect dependencies
ofgix-testtools, by havinggix_testtoolsuse them through
gix-worktree, accessinggix_worktree::ignoreforgix_ignore
andgix_worktree::indexforgix_index.The rationale is that various other gix-* dependencies were used
this way already, and also that this specific change appears to
have been planned, based on the TODO comment in ddaacda (#1413).
New Features
-
Show unexpected stderr in
umaskpanic message
Becausegix_testtools::umask()is only suitable for use in tests,
where signaling an error with a panic is typically acceptable, it
panics rather than returning anErrorto indicate errors. To
avoid leading to the use of a potentially inaccurate umask value,
it treats as an error any departure from the typical output of
theumaskcommand: in addition to treating a nonzero exit status
as an error, it also treats anything it cannot strictly parse on
stdout as an error, as well as anything at all written to stderr as
an error. The latter is to avoid a situation where a warning is
printed that is could be significant to some umask use cases.Warnings from
umaskare rare, as well as from the shell that is
used as an intermediary for running the command (since no external
umaskcommand need exist and, often, does not) when it is used
just to runumask. When they do occur, they are sometimes from
the dynamic linker, such as a warning about a shared library listed
in theLD_PRELOADenvironment variable that cannot be used by
the shell program. To understand and distinguish such errors, it is
useful to show the text that was sent to stderr, since tests are
sometimes run in environments that are nontrivial to reproduce
otherwise. For example, running tests withcrossproduces an
environment that is not in all respects the same as what one gets
withdocker exec -it <container>, even if<container>is the
same still-running container being used to run the tests.This modifies
gix_testtools::umask()so that when it panics due
anything being written to stderr, it shows what was written. -
Add
jtt bash-program(jtt bp) to showbash_program()
This adds abash-programsubcommand, abbreviatedbp, to the
gix-testoolsprogram (jtt) to check what thebash_program()
library function gives.This is intended for diagnostic use and should probably not be used
in scripting. Currently it shows the quoted debug repreesentation
of the path. -
Document
gix_testtools::bash_program()and make it public
To make it easier for users ofgix-testtoolsto diagnose problems
or verify that the fallback for running fixutre scripts without
usable shebangs (which is effectively how any fixture shell script
is run on Windows), the formerly privatebash_program()is now
public.However, it is not recommend to rely on this specific value or on
observed behavior of how it is computed. The details may change at
any time.The purpose of
bash_program()and how it is used internally by
gix-testtoolsis also now documented explicitly. Broad details of
how it searches or guesses what path to use are likewise documented,
with a caveat that changes to them are not considered breaking. -
Look for bash in
(git root)/bin, then(git root)/usr/bin
This changesbash_program()so that it will find thebash.exe
provided by Git for Windows that is most reliable for our use in
runinng test fixture scripts, of those that are available. First
it uses the shim, but falls back to the non-shim if the shim is
not available. If neither is found, then the fallback of using the
simple commandbash.exe(which triggers a path search when run)
continues to be used. -
Prefer
/over\inbash.exepath (for fixtures)
Starting in #1712,gix-testtoolslooks forbash.exeon Windows
in one of its common locations as provided by Git for Windows, by
taking the path given bygit --exec-path, going up by three
components, and going down tobin/bash.exeunder that. But the
binandbash.execomponents were appended in a way that used
\directory separators.Ordinarily, that would be ideal, since
\is the primary directory
separator on Windows. However, in this case, appending with\
produces a path that is harder to read (especially in diagostic
messages), and that may cause problems if it is processed by a
shell or in a way that is intended to operate similarly to shell
processing of\.A path that does not explicitly prefer
/but instead uses
PathBuf::pushwill have\in front of the new components, but
will still usually have/in front of the old components. This is
because, aside from the unusual case that theGIT_EXEC_PATH
environment vairable is set explicitly and its value uses all\
separators, the output ofgit --exec-path, which we use to find
wheregitinstalled on Windows, uses/separators.The effect of this change seems to be fairly minor, with existing
test fixtures having worked before it was done. This is partly
because, on Windows, the value ofargv[0]that the shell
actually sees -- and that populates$0when no script name is
available, as happens inbash -c '...'with no subsequent
arguments -- is translated by an MSYS DLL such asmsys-2.0.dll
(or, for Cygwin,cygwin1.dll) into a Unix-style path meaningful
to the shell.This also refactors for clarity, and adds new tests related to the
change. -
Add
gix_testtools::umask, safe but only meant for tests
This implements a function for tests to safely read the current
process umask without the usual race condition of doing so, at the
expense of using subprocesses to do it. This just calls a shell and
runsumaskfrom it (which is expected to be a builtin and, on
many systems, is available as a builtin but not an executable).Even though this is safe, including thread-safe, it is unlikely to
be suitable for use outside of tests, because of its use of
expectand assertions when there are errors, combined with the
possibly slow speed of using subprocesses.Given that this is effecitvely running a tiny shell script to do
the work, why is it not instead a fixture script that is named in
a.gitignorefile so that it is not tracked? The reason is that
the outcomes of running such fixture scripts are still saved across
separate test runs, but it is useful to be able to run the tests
with differnt umasks, e.g.(umask 077; cargo nextest run ...).The immediate purpose is in forthcoming tests that, when checkout
sets +x on an existing file, it doesn't set excessive permissions.
The fix to pass such a test is not currently planned to use the
umask explicitly. But the tests will use it, at least to detect
when they cannot really verify the code under test on the grounds
that they are running with an excessively permissive umask that
doesn't allow behavior that only occurs with a generally reasonable
umask to be observed. -
Add
size_okfor asserting size is not too big
This compares using==on 64-bit targets and<=on 32-bit
targets.As noted in the documentation comment, when assertions about data
stuructures' sizes are being done to safeguard against them growing
too big, then it may be acceptable to use<=if the structure is
smaller on 32-bit targets, but it is still valuable to be able to
use==on 64-bit targets in the same assertions, since this
guards against a data structure becoming smaller, other changes
causing the smaller size to be important for memory usage or speed,
but then the data structure growing again, up to its original size.
An unconditional<=will not catch this, whilesize_okusually
will.A related reason to do a
==on 64-bit systems is so that the
expected value being compared to remains tied to the code. It can
otherwise become unclear what the expected value's significance is
and whether it ought to be updated. -
Recognize
GIX_TEST_CREATE_ARCHIVES_EVEN_ON_CI
Whengix-testtoolsruns fixtures, it now recognizes a new
environment variable,GIX_TEST_CREATE_ARCHIVES_EVEN_ON_CI,
specifying that archives should be generated even when on CI.By default, they are still not generated when on CI. It may make
sense to enable this:-
If automatically testing archive creation, or
-
As a way to check that all intended generated arhives are committed
(which is the motivating use case for this feature), or -
If actually using CI to generate archives that will be uploaded
as artifacts, or -
In unusual non-CI environments that are mis-detected as CI
(though that should usually be investigated and fixed, since some
software performs destructive operations more readily without
interactive checks when CI is detected).
The usual reason for not generating archives on CI is that they
would not typically be preserved. Thus refraining from generating
them on CI remains the default behavior.Like the
GIX_TEST_IGNORE_ARCHIVESenvironment variable, the new
variableGIX_TEST_CREATE_ARCHIVES_EVEN_ON_CIis currently
interpreted as "true" based solely on its presence. This is to say
that is actual value is currently not examined. -
Bug Fixes
-
fix check to detect
git-lfsmanaged files that weren't checked out.
Previously it would detect them incorrectly due to a find-and-replace
error. -
create a more local lock when creating writable fixtures.
Previously, the lock location would block all writers from executing
a fixture even though they wouldn't step on each others feet.Now, a script destination is used to assure locks are created close
to the destination when creating writable fixtures, typically removing
the need for multiple writers to wait on each other unnecessarily. -
Run test fixture scripts on Windows with Git Bash
Rather than hard-codingbashon all systems as the fallback
interpreter when a fixture script cannot be run directly, this
falls back in an operating system specific manner:-
Except on Windows, always fall back to
bash, as before. -
On Windows, run
git --exec-pathto find thegit-core
directory. Then check if abash.exeexists at the expected
location relative to that. In Git for Windows installations,
this will usually work. If so, use that path (with..
components resolved away). -
On Windows, if a specific
bash.exeis not found in that way,
then fall back to using the relative pathbash.exe. This is to
preserve the ability to runbashon Windows systems where it
may have worked before even withoutbash.exein an expected
location provided by a Git for Windows installation.
(The distinction between
bashandbash.exeis only slightly
significant: we check for the existence of the interpreter without
initially running it, and that check requires the full filename.
It is calledbash.exeelsewhere for consistency both with the
checked-for executable and for consistencey with how we run most
other programs on Windows, e.g., thegitvs.git.exe.)This fixes #1359. That bug is not currently observed on CI, but
this change is verified to fix it on a local test system where it
previously always occurred when running the test suite from
PowerShell in an unmodified environment. The fix applies both with
GIX_TEST_IGNORE_ARCHIVESunset, in which case there are now no
failures, and withGIX_TEST_IGNORE_ARCHIVES=1, in which case the
failures are now limited to the 15 cases tracked in #1358.Previously, fixture scripts had been run on Windows with whatever
bashwas found in aPATHsearch, which had two problems:-
On most Windows systems, even if no WSL distribution is installed
and even if WSL itself is not set up, theSystem32directory
contains abash.exeprogram associated with WSL. This program
attempts to use WSL to runbashin an installed distribution.
Thewsl.exeprogram also provides this functionality and is
favored for this purpose, but thebash.exeprogram is still
present and is likely to remain for many years for compatibility.Even when this
bashis usable, it is not suited for running
most shell scripts meant to operate on the native Windows system.
In particular, it is not suitable for running our fixture
scripts, which need to use the nativegitto prepare fixtures
to be used natively, among other requirements that would not be
satisfied with WSL (except when the tests are actually running in
WSL).Since some fixtures are
.gitignored because creating them on
the test system (rather than another system) is part of the test,
this has caused breakage in most Windows environments unless
PATHis modified -- either explicitly or by testing in an MSYS2
environment, such as the Git Bash environment -- whether or not
GIX_TEST_IGNORE_ARCHIVESis set. This was the cause of #1359. -
Although using a Git Bash environment or otherwise adjusting the
path currently works, the reasons it works are subtle and rely
on non-guaranteed behavior ofstd::process::Commandpath search
that may change without warning.On Windows, processes are created by calling the
CreateProcessW
API function.CreateProcessWis capable of performing aPATH
search, but thisPATHsearch is not secure in most uses, since
it includes the current directory (and searches it beforePATH
directories) unlessNoDefaultCurrentDirectoryInExePathis set
in the caller's environment.While it is the most relevant to security, the CWD is not the
only locationCreateProcessWsearches before searchingPATH
directories (and regardless of where, if anywhere, they may also
appear inPATH). Another such location is theSystem32
directory. This is to say that, even when another directory with
bash.exeprecedesSystem32inPATH, an executable search
will still find the WSL-associatedbash.exeinSystem32
unless it deviates from the algorithmCreateProcessWuses.To avoid including the CWD in the search,
std::process::Command
performs its own path search, then passes the resolved path to
CreateProcessW. The path search it performs is currently almost
the same the algorithmCreateProcessWuses, other than not
automatically including the CWD. But there are some other subtle
differences.One such difference is that, when the
Commandinstance is
configured to create a modified child environment (for example,
byenvcalls), thePATHfor the child is searched early on.
This precedes a search of theSystem32directory. It is done
even if none of the customizations of the child environment
modify itsPATH.This behavior is not guaranteed, and it may change at any time.
It is also the behavior we rely on inadvertently every time we
runbashon Windows with astd::process::Commandinstance
constructed by passingbashorbash.exeas theprogram
argument: it so happens that we are also customizing the child
environment, and due to implementation details in the Rust
standard library, this manages to find a non-WSLbashwhen
the tests are run in Git Bash, in GitHub Actions jobs, and in
some other cases.If in the future this is not done, or narrowed to be done only
whenPATHis one of the environment variables customized for
the child process, then putting the directory with the desired
bash.exeearlier than theSystem32directory inPATHwill
no longer preventstd::proces::Commandfrom finding the
bash.exeinSystem32asCreateProcessWwould and using it.
Then it would be nontrivial to run the test suite on Windows.
For references and other details, see #1359 and comments including:
#1359 (comment)On the approach of finding the Git for Windows
bash.exerelative
to thegit-coredirectory, see the GitPython pull request
gitpython-developers/GitPython#1791, its
comments, and the implementation of the approach by @emanspeaks:
https://github.com/gitpython-developers/GitPython/blob/f065d1fba422a528a133719350e027f1241273df/git/cmd.py#L398-L403Two possible future enhancements are not included in this commit:
-
This only modifies how test fixture scripts are run. It only
affects the behavior ofgix-testtools, and not of any other
gitoxide crates such asgix-command. This is because:-
While gitoxide uses information from
gitto find out where
it is installed, mainly so we know where to find installation
level configuration, we cannot in assume thatgitis present
at all. Unlike GitPython, gitoxide is usable withoutgit. -
We know our test fixture scripts are all (at least currently)
bashscripts, and this seems likely for other software that
currently uses this functionality ofgix-testtools. But
scripts that are run as hooks, or as custom commands, or
filters, etc., are often written in other languages, such as
Perl. (The fallback here does not examine leading#!lines.) -
Although a
bash.exelocated at the usual place relative to
(but outside of) thegit-coredirectory is usually suitable,
there may be scenarios where running an executable found this
way is not safe. Limiting it togix-testtoolspending
further research may help mitigate this risk.
-
-
As in other runs of
gitbygix-testools, this calls
git.exe, lettingstd::process::Commanddo an executable
search, but not trying any additional locations where Git is
known sometimes to be installed. This does not findgit.exein
as many situations asgix_path::env::exe_invocationdoes.The reasons for not (or not quite yet) including that change are:
-
It would add
gix-pathas a dependency ofgix-testtools. -
Finding
gitin astd::process::Commandpath search is an
established (though not promised) approach ingix-testtools,
including to rungit --exec-path(to findgit-daemon). -
It is not immediately obvious that
exe_invocationbehavior
is semantically correct forgix-testtools, though it most
likely is reasonable.The main issue is that, in many cases where
gititself runs
scripts, it prepends the path to thegit-coredirectory to
thePATHenvironment variable for the script. This directory
has agit(orgit.exe) executable in it, so scripts run
an equivalentgitassociated with the same installation.In contrast, when we run test fixture scripts with a
bash.exeassociated with a Git for Windows installation, we
do not customize its path. Since top-level scripts written to
usegitbut not to be used bygitare usually written
without the expectation of such an environment, prepending
this will not necessarily be an improvement.
-
-
-
Double the fixture lock timeout
This increases the lock timeout used ingix-testtoolsfrom 3 min
6 min. This seems to fix #1605. -
Unset other env vars related to
GIT_DIRfor fixtures
This removes other environment variables that have an effect
conceptually related toGIT_DIReven whenGIT_DIRis not set.
Most of them change wheregitwill look for files that are
ordinarily in a repository's.gitdirectory. In contrast,
GIT_WORK_TREEchanges where the working tree is found.These would rarely be set in the environment in which the tests are
run, but it makes sense to unset them for the same reason as
unsettingGIT_DIR, which is already done.The new
remove_envcalls are roughly in the order in which the
variables they unset are listed in git(1).This deliberately does not attempt to unset every possible
environment variable that git(1) documents as affecting its
behavior. This is for four reasons:-
Some variables may be set on the test machine without envisioning
this usage, but should still be kept, such as those that cause
more or less traversal than usual to be done. For example, if
GIT_CEILING_DIRECTORIESor evenGIT_DISCOVERY_ACROSS_FILESYSTEM
are set, it may be for a good reason. -
Some variables will have no default unless other variables that
are being modified here are changed again after the changes here.
In particular,GIT_CONFIG_SYSTEMonly has an effect if
GIT_CONFIG_NOSYSTEMis not set. We setGIT_CONFIG_NOSYSTEMto
1, so if it is unset then a fixture script has unset it, in
which case it is presumably intended thatGIT_CONFIG_SYSTEM
have some effect (if the fixture script doesn't change/unset it). -
Some variables are useful for extra debugging and make sense to
set when running the test fixtures under foreseeable conditions.
For example, the effects of allGIT_TRACE*variables are
intentionally preserved. -
For a few variables, such as
GIT_DEFAULT_HASH, it is unlikely
that they would be wanted in the test environment, but even more
unlikely that they would be set in that environment without the
intention of experimenting with their effect on fixtures.
However, this is not to say that all environment variables that
would make sense to remove have necessarily been removed.The removed variables here differ from those removed for the
git
invocation ingix-path/src/env/git/mod.rsfor two reasons:-
That is a single
gitinvocation for a specific command, so the
environment variables that ought to affect it must be kept, and
others can be removed. But here, arbitrary fixtures need to work,
and they provide almost all of their own environment as needed. -
Setting an unusual value of
GIT_DIRthere thatgitcannot
take to be a usable repository also prevents the variables
that overrideGIT_DIRfor specific files from being used. (But
maybe those should be unset there anyway, for clarity?)
-
-
Append to preexisting
MSYSenv var even if ill-formed
The value of an environment variable as obtained by the facilities
instd::envis not always well-formed Unicode. Specifically, on
Windows the values of environment variables, like paths, are
natively UTF-16LE strings except that unpaired surrogate code
points can also occur. An&OsStron Windows may accordingly not
quite be UTF-8.When the
MSYSvariable is absent, we treat this the same as when
it is present but empty. However, as described in #1574, anMSYS
variable that is present but whose value contains an unpaired
surrogate would also be replaced entirely, rather than appending to
its old value.This changes that, to instead append, retaining whatever was there
even if it was ill-formed Unicode.An alternative change could be to panic when the old value is
ill-formed Unicode. This commit allows and appends to the old
value, rather than panicking or keeping and documenting the
previous behavior of discarding the old value, because the appended
sequencewinsymlinks:nativestrictis effective at causing
fixture scripts to attempt to create actual symlinks even if
the preceding code point is an unpaired Unicode high surrogate. -
Omit other high-scoped config in fixtures
In addition to keeping fixture scripts from receiving global and
system scope Git configuration variables, as was already done, this
also omits configuration variables from high scopes similar to or
above the system scope, associated with the Git installation but
separate from the system scope.The main and possibly only case where this happens is the "unknown"
scope associated with an Apple Git installation on macOS. This is a
file usually located under/Libraryor/Applications.This is done by using
GIT_CONFIG_NOSYSTEM, which suppresses both
the system scope and this separate "unknown" scope, instead of by
settngGIT_CONFIG_SYSTEMto a path like/dev/null. The latter
approach continues to be used to omit global scope config via
GIT_CONFIG_GLOBAL(asgitrecognized noGIT_CONFIG_NOGLOBAL). -
Omit system/global config in fixtures regardless of contents
This uses the null device,/dev/nullon Unix-like systems and
NULon Windows, as the value ofGIT_CONFIG_SYSTEMand
GIT_CONFIG_GLOBALwhengix-testtolsruns test fixture shell
scripts./dev/nullis explicitly recommended for this purpose, when
setting those environment variables for the purpose of preventing
configuration files from being read, in the Git documentation:On Windows,
NULis an analogue of/dev/null. Even in the
unusual scenario that a\\?\prefixed UNC path is used to create
an actual file namedNULin the directory the fixture script
operates in, the relative pathNULstill resolves to the null
device and not to that file.The previous behavior was to use a value of
:on Unix-like
systems or-on Windows. But these were really just unusual but
valid paths, such that files of those names could exist in any
location.gitfurthermore treats them as paths: a:is not
special in these environment variables because they hold a single
path rather than a list of paths, and a-is not special (for
example, it does not specify stdin) because it appears in an
environment variable rather than a command-line argument.While
:and-are unusual filenames, this code is used in
testing, including of edge cases where unusual files may be used.
So this change may make the test tools slightly more robust. -
Let
gix_testtools::Envundo multiple changes to the same var
Previously, anEnvinstance would restore the original state on
drop if no more than one modification was made to any one variable
through it, but would restore an intermediate state if the same
variable was ever set multiple times, unset multiple times, or both
set and unset in any order.The state it would restore for each variable was its state
immediately before the most recent modification (through theEnv
instance) that affected it, rather than its original state before
the first time it was modified through thatEnvinstance.This fixes that by undoing the changes in the opposite of the order
they were made. -
assure archives are unique if their generator-scripts are called with arguments.
Previously there was a race condition that would cause archives to be created either with
or without arguments, depending on which test was run first.After its creation, they wouldn't be looked at again as on disk they would already be available
in their usable form.
Other
- Fix description of
gix_testtools::Env::unset
Theunsetmethod inadvertently had the same docstring asset,
even though this was not correct forunset. This fixes that, and
also rewords theEnvdocstring to better account for the ability
to unset.
New Features (BREAKING)
- on Windows, also instruct msys to create real symlinks
This will only reliably work on with developer setups, but that
seems fair to assume.
If this causes problems, it's fine to make it opt-in as well.
Bug Fixes (BREAKING)
- don't panic, instead provide an error when fixture script fails.
This makes introspection easier, even though we still have to print to
script output to stderr in order to make it legible.
Commit Statistics
- 104 commits contributed to the release over the course of 296 calendar days.
- 307 days passed between releases.
- 22 commits were understood as conventional.
- 2 unique issues were worked on: #1440, #1443
Thanks Clippy
Clippy helped 6 times to make code idiomatic.
Commit Details
view details
- #1440
- Assure archives are unique if their generator-scripts are called with arguments. (8a0fedb)
- #1443
- On Windows, also instruct msys to create real symlinks (0899c2e)
- Uncategorized
- Prepare new testtools release (070f5f6)
- Merge pull request #1935 from pierrechevalier83/fix_1923 (3b1bef7)
- J fmt (c3c6504)
- Thanks clippy (6f009d7)
- Merge pull request #1968 from GitoxideLabs/dependabot/cargo/cargo-bd18780e40 (46227e6)
- Bump the cargo group with 40 updates (06bf1e1)
- Merge pull request #1825 from DianaNites/diananites-reftable (edb449c)
- Don't panic, instead provide an error when fixture script fails. (692caeb)
- Merge pull request #1949 from GitoxideLabs/dependabot/cargo/cargo-6893e2988a (b5e9059)
- Bump the cargo group with 21 updates (68e6b2e)
- Merge pull request #1895 from EliahKagan/run-ci/s390x (705b86d)
- Move
envsubcommand tointernal-tools(809fb2f) - Test
gix_testtools::umask()on Android targets (c19bf1d) - Add
envtesttools subcommand to show the environment (8d596b4) - Show unexpected stderr in
umaskpanic message (07022ee) - Merge pull request #1864 from EliahKagan/run-ci/bash-program (97d50a3)
- Add
jtt bash-program(jtt bp) to showbash_program()(720a23f) - Document
gix_testtools::bash_program()and make it public (47234b6) - Look for bash in
(git root)/bin, then(git root)/usr/bin(0b45baf) - Look for bash in
(git root)/usr/bin, not(git root)/bin(73d30d7) - Prefer
/over\inbash.exepath (for fixtures) (ba76201) - Merge pull request #1854 from GitoxideLabs/montly-report (16a248b)
- Thanks clippy (8e96ed3)
- Merge pull request #1822 from epage/w7 (11ac79c)
- Upgrade to Winnow 0.7 (fdc57e7)
- Upgrade to Winnow 0.6.26 (783c4e6)
- Merge pull request #1815 from EliahKagan/quadratic (ffb73b5)
- Comment forthcoming dependency changes for gix-testtools (6990f76)
- Merge pull request #1764 from EliahKagan/finalize-entry (12f672f)
- Refactor (4d5e656)
- Fix an MSRV incompatibility (61174e5)
- Add
gix_testtools::umask, safe but only meant for tests (8e7fb99) - Merge pull request #1752 from GitoxideLabs/git-shell (1ca480a)
- Make a note to use
env::git_login_shell()in testtools when available. (3aff1e5) - Thanks clippy (9193b05)
- Merge pull request #1733 from GitoxideLabs/fix-testools (df5cead)
- Fix check to detect
git-lfsmanaged files that weren't checked out. (93cb5ba) - Merge pull request #1705 from GitoxideLabs/merge (520c832)
- Create a more local lock when creating writable fixtures. (8b694a6)
- Merge pull request #1712 from EliahKagan/run-ci/git-bash (fadf106)
- Fix an ambiguous
expectmessage (1f6a866) - Run test fixture scripts on Windows with Git Bash (fe3f2d1)
- Refine
EXEC_PATHvalidation inspawn_git_daemon(479c06b) - Run
cargo fmt(da03932) - Use consistent
gitcommand name in gix-testtools (e30c070) - Rename
parse_gix_versiontoparse_git_version(01737ad) - Merge pull request #1687 from EliahKagan/run-ci/32bit (aeaebec)
- Add
size_okfor asserting size is not too big (77c3c59) - Merge pull request #1612 from Byron/merge (37c1e4c)
- Thanks clippy (af03832)
- Merge pull request #1606 from EliahKagan/fixture-timeout (8c9e827)
- Double the fixture lock timeout (39323c3)
- Merge pull request #1594 from EliahKagan/comments (ab8880f)
- Copyedit
configure_commandcomment (56dbcd5) - Merge pull request #1592 from EliahKagan/tools-cfgcmd (5e783de)
- Note that how we set
MSYSignoresenv/env_removecalls (4a25ef5) - Use more compact notation (0e1e6a9)
- Broaden
argsparam ofconfigure_command(c202084) - Merge pull request #1590 from EliahKagan/run-ci/check-clean (4f92140)
- Merge pull request #1591 from EliahKagan/run-ci/deps-via-worktree (c485a2b)
- Thanks clippy (94c6d70)
- Recognize
GIX_TEST_CREATE_ARCHIVES_EVEN_ON_CI(03d5a68) - Rename create_archive_if_{not_on_ci -> we_should} (8b51b3a)
- Copyedit
create_archive_if_not_on_cicomments (6963b37) - In gix-testtools use
ignoreandindexviagix_worktree(f7f24e5) - Merge pull request #1581 from EliahKagan/fixture-env (4044ffb)
- Merge pull request #1580 from EliahKagan/msys (d00235a)
- Unset other env vars related to
GIT_DIRfor fixtures (9d4dd12) - Remove
configure_command_msys*tests at least for now (c38d9b9) - Append to preexisting
MSYSenv var even if ill-formed (8dc5d7a) - Start testing how the MSYS env var is customized (fbd4908)
- Merge pull request #1571 from EliahKagan/fixture-config (0e2f831)
- Run
cargo fmt(91e065c) - Omit other high-scoped config in fixtures (a879d22)
- Test that env for fixture scripts has only command-scope config (d576b32)
- Merge pull request #1570 from EliahKagan/tools-nulldev (6f128dd)
- Minor refactors (50fcd7e)
- Don't assert that
tempfile::TempDircleans up (15bb2e3) - Avoid
File::create_newfor compatibility with project MSRV (40ac226) - Thanks clippy (2d7abaf)
- Omit system/global config in fixtures regardless of contents (3cf9fc1)
- Verify that we really write the strangely named test files (d7dca27)
- Test on Windows with an actual file called
NUL(f71d596) - Refactor the test for readability (7186eed)
- Fix assertion messages and expected exit status (a2dc5d8)
- Test that the system/global scopes are really cleared (d5b61df)
- Start testing that we clear system/global scopes for fixtures (85c5e2f)
- Merge pull request #1560 from EliahKagan/run-ci/env-lifo (2972ea8)
- Merge pull request #1557 from Byron/merge-base (649f588)
- Move new tests up into a
testssubdirectory (555164f) - Let
gix_testtools::Envundo multiple changes to the same var (581957e) - Add tests for
gix_testtools::Env(505151c) - Fix description of
gix_testtools::Env::unset(3b17305) - Allow empty-docs (beba720)
- Merge branch 'global-lints' (37ba461)
- Workspace Clippy lint management (2e0ce50)
- Merge pull request #1546 from nyurik/semilocons (f992fb7)
- Add missing semicolons (ec69c88)
- Update manifests (by cargo-smart-release) (0470df3)
- Merge branch 'fix-windows-tests' (c2753b8)
- Fix gix-archive tests for when symlinks are allowed (93e088a)
- Merge branch 'fix-1440' (f87322e)