gix-testtools v0.16.0
Changed
-
In gix-testtools use
ignore
andindex
viagix_worktree
This removes thegix-ignore
andgix-index
direct dependencies
ofgix-testtools
, by havinggix_testtools
use them through
gix-worktree
, accessinggix_worktree::ignore
forgix_ignore
andgix_worktree::index
forgix_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
umask
panic 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 anError
to 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
theumask
command: 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
umask
are rare, as well as from the shell that is
used as an intermediary for running the command (since no external
umask
command 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_PRELOAD
environment 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 withcross
produces 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-program
subcommand, abbreviatedbp
, to the
gix-testools
program (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-testtools
to 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-testtools
is 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.exe
path (for fixtures)
Starting in #1712,gix-testtools
looks forbash.exe
on 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.exe
under that. But the
bin
andbash.exe
components 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::push
will 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
wheregit
installed 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$0
when 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
runsumask
from 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
expect
and 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.gitignore
file 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_ok
for 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_ok
usually
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-testtools
runs 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_ARCHIVES
environment variable, the new
variableGIX_TEST_CREATE_ARCHIVES_EVEN_ON_CI
is 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-lfs
managed 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-codingbash
on 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-path
to find thegit-core
directory. Then check if abash.exe
exists 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.exe
is not found in that way,
then fall back to using the relative pathbash.exe
. This is to
preserve the ability to runbash
on Windows systems where it
may have worked before even withoutbash.exe
in an expected
location provided by a Git for Windows installation.
(The distinction between
bash
andbash.exe
is 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.exe
elsewhere for consistency both with the
checked-for executable and for consistencey with how we run most
other programs on Windows, e.g., thegit
vs.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_ARCHIVES
unset, 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
bash
was found in aPATH
search, which had two problems:-
On most Windows systems, even if no WSL distribution is installed
and even if WSL itself is not set up, theSystem32
directory
contains abash.exe
program associated with WSL. This program
attempts to use WSL to runbash
in an installed distribution.
Thewsl.exe
program also provides this functionality and is
favored for this purpose, but thebash.exe
program is still
present and is likely to remain for many years for compatibility.Even when this
bash
is 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 nativegit
to 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
.gitignore
d 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
PATH
is modified -- either explicitly or by testing in an MSYS2
environment, such as the Git Bash environment -- whether or not
GIX_TEST_IGNORE_ARCHIVES
is 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::Command
path search
that may change without warning.On Windows, processes are created by calling the
CreateProcessW
API function.CreateProcessW
is capable of performing aPATH
search, but thisPATH
search is not secure in most uses, since
it includes the current directory (and searches it beforePATH
directories) unlessNoDefaultCurrentDirectoryInExePath
is set
in the caller's environment.While it is the most relevant to security, the CWD is not the
only locationCreateProcessW
searches 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.exe
precedesSystem32
inPATH
, an executable search
will still find the WSL-associatedbash.exe
inSystem32
unless it deviates from the algorithmCreateProcessW
uses.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 algorithmCreateProcessW
uses, other than not
automatically including the CWD. But there are some other subtle
differences.One such difference is that, when the
Command
instance is
configured to create a modified child environment (for example,
byenv
calls), thePATH
for the child is searched early on.
This precedes a search of theSystem32
directory. 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
runbash
on Windows with astd::process::Command
instance
constructed by passingbash
orbash.exe
as 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-WSLbash
when
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
whenPATH
is one of the environment variables customized for
the child process, then putting the directory with the desired
bash.exe
earlier than theSystem32
directory inPATH
will
no longer preventstd::proces::Command
from finding the
bash.exe
inSystem32
asCreateProcessW
would 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.exe
relative
to thegit-core
directory, 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
git
to find out where
it is installed, mainly so we know where to find installation
level configuration, we cannot in assume thatgit
is present
at all. Unlike GitPython, gitoxide is usable withoutgit
. -
We know our test fixture scripts are all (at least currently)
bash
scripts, 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.exe
located at the usual place relative to
(but outside of) thegit-core
directory is usually suitable,
there may be scenarios where running an executable found this
way is not safe. Limiting it togix-testtools
pending
further research may help mitigate this risk.
-
-
As in other runs of
git
bygix-testools
, this calls
git.exe
, lettingstd::process::Command
do an executable
search, but not trying any additional locations where Git is
known sometimes to be installed. This does not findgit.exe
in
as many situations asgix_path::env::exe_invocation
does.The reasons for not (or not quite yet) including that change are:
-
It would add
gix-path
as a dependency ofgix-testtools
. -
Finding
git
in astd::process::Command
path 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_invocation
behavior
is semantically correct forgix-testtools
, though it most
likely is reasonable.The main issue is that, in many cases where
git
itself runs
scripts, it prepends the path to thegit-core
directory to
thePATH
environment variable for the script. This directory
has agit
(orgit.exe
) executable in it, so scripts run
an equivalentgit
associated with the same installation.In contrast, when we run test fixture scripts with a
bash.exe
associated with a Git for Windows installation, we
do not customize its path. Since top-level scripts written to
usegit
but not to be used bygit
are 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-testtools
from 3 min
6 min. This seems to fix #1605. -
Unset other env vars related to
GIT_DIR
for fixtures
This removes other environment variables that have an effect
conceptually related toGIT_DIR
even whenGIT_DIR
is not set.
Most of them change wheregit
will look for files that are
ordinarily in a repository's.git
directory. In contrast,
GIT_WORK_TREE
changes 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_env
calls 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_DIRECTORIES
or 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_SYSTEM
only has an effect if
GIT_CONFIG_NOSYSTEM
is not set. We setGIT_CONFIG_NOSYSTEM
to
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.rs
for two reasons:-
That is a single
git
invocation 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_DIR
there thatgit
cannot
take to be a usable repository also prevents the variables
that overrideGIT_DIR
for specific files from being used. (But
maybe those should be unset there anyway, for clarity?)
-
-
Append to preexisting
MSYS
env var even if ill-formed
The value of an environment variable as obtained by the facilities
instd::env
is 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&OsStr
on Windows may accordingly not
quite be UTF-8.When the
MSYS
variable 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:nativestrict
is 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/Library
or/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_SYSTEM
to a path like/dev/null
. The latter
approach continues to be used to omit global scope config via
GIT_CONFIG_GLOBAL
(asgit
recognized noGIT_CONFIG_NOGLOBAL
). -
Omit system/global config in fixtures regardless of contents
This uses the null device,/dev/null
on Unix-like systems and
NUL
on Windows, as the value ofGIT_CONFIG_SYSTEM
and
GIT_CONFIG_GLOBAL
whengix-testtols
runs test fixture shell
scripts./dev/null
is 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,
NUL
is an analogue of/dev/null
. Even in the
unusual scenario that a\\?\
prefixed UNC path is used to create
an actual file namedNUL
in the directory the fixture script
operates in, the relative pathNUL
still 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.git
furthermore 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::Env
undo multiple changes to the same var
Previously, anEnv
instance 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 thatEnv
instance.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
Theunset
method inadvertently had the same docstring asset
,
even though this was not correct forunset
. This fixes that, and
also rewords theEnv
docstring 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
env
subcommand tointernal-tools
(809fb2f) - Test
gix_testtools::umask()
on Android targets (c19bf1d) - Add
env
testtools subcommand to show the environment (8d596b4) - Show unexpected stderr in
umask
panic 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.exe
path (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-lfs
managed 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
expect
message (1f6a866) - Run test fixture scripts on Windows with Git Bash (fe3f2d1)
- Refine
EXEC_PATH
validation inspawn_git_daemon
(479c06b) - Run
cargo fmt
(da03932) - Use consistent
git
command name in gix-testtools (e30c070) - Rename
parse_gix_version
toparse_git_version
(01737ad) - Merge pull request #1687 from EliahKagan/run-ci/32bit (aeaebec)
- Add
size_ok
for 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_command
comment (56dbcd5) - Merge pull request #1592 from EliahKagan/tools-cfgcmd (5e783de)
- Note that how we set
MSYS
ignoresenv
/env_remove
calls (4a25ef5) - Use more compact notation (0e1e6a9)
- Broaden
args
param 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_ci
comments (6963b37) - In gix-testtools use
ignore
andindex
viagix_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_DIR
for fixtures (9d4dd12) - Remove
configure_command_msys*
tests at least for now (c38d9b9) - Append to preexisting
MSYS
env 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::TempDir
cleans up (15bb2e3) - Avoid
File::create_new
for 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
tests
subdirectory (555164f) - Let
gix_testtools::Env
undo 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)