* mkfifo: general refactor, move to clap, add unimplemented flags
* chore: update Cargo.lock
* chore: delete unused variables, simplify multiple lines with crash
* test: add tests
* chore: revert the use of crash
* test: use even more invalid mod mode
* install: implement `-C` / `--compare`
GNU coreutils [1] checks the following: whether
- either file is nonexistent,
- there's a sticky bit or set[ug]id bit in play,
- either file isn't a regular file,
- the sizes of both files mismatch,
- the destination file's owner differs from intended, or
- the contents of both files mismatch.
[1] https://git.savannah.gnu.org/cgit/coreutils.git/tree/src/install.c?h=v8.32#n174
* Add test: non-regular files
* Forgot a #[test]
* Give up on non-regular file test
* `cargo fmt` install.rs
* date: change tests to expect failure
Although these tests contain valid dates, the parsing logic is not
implemented yet. It should be changed to expect success when
the parsing logic is done.
* date: fix test build errors
Previously this used `print` instead of `println`, and as a result the
prompt would never appear and the command would hang. The Rust docs
note this about print:
> Note that stdout is frequently line-buffered by default so it may be
> necessary to use io::stdout().flush() to ensure the output is emitted
> immediately.
Changing to `println` fixes the issue.
Fixes#1889.
Co-authored-by: Kevin Burke <kevin@burke.dev>
* feat: move unexpand to clap
* chore: allow muliple files
* test: add test fixture, test reading from a file
* test: fix typo on file name, add test for multiple inputs
* chore: use 'success()' instead of asserting
* chore: delete unused variables
* chore: use help instead of long_help, break long line
* fix: use settings to allow leading hyphen and trailing var arg
fixes: https://github.com/uutils/coreutils/issues/1873
* test: add test cases
* test: add more test cases with different order in hyphen values
* chore: add comment to explain why we need TrailingVarArg
* Re-add fixed test
* Stop tests failing on utils that aren't the focus of the test
* Use which to find system utils
* Move timeout to per-test script
Move to a timeout applied to each script and re add the tests that are hanging so they show as failing
* Typo
* Use system timeout command
* Add 4 hour global timeout for protection
* Stop seq-precision.sh causing jams in make
* Shorten the timeout on seq-precision
* Try removing seq-precision
* Keep producing logs even if make hangs
* Add timeouts to other tests that hang
* More tight timeouts
* Remove unbuffer
This causes the make process to hang for some reason, and it itsn't providing any real advantage so it's taken out
* Create *sum binaries for tests
* Use system sha1sum in factor tests
* generate all factor scripts
* fail tests for any binary not built
* Fix tests still failing for the wrong reason
* Revert "Remove unbuffer"
This reverts commit bbce179115.
* Revert "Revert "Remove unbuffer""
This reverts commit 8dae8b798a.
* Use system utils
* clean up sed commands
* clean up workflow script
* Remove use of which to set system binaries
* Don't fail the job if test-suite.log is missing
* Fix typo
* Fix more problems with utils that aren't being tested
* Fix yaml syntax
* Fix test setup
- changed some error return codes to match GNU implementation
- changed warning/error messages to match GNU nohup
- replaced getopts dependency with clap
- added a test
This PR adds the options to customize what information is shown in long format regarding author, group & owner. Specifically it adds:
- `--author`: shows the author, which is always the same as the owner. GNU has this feature because GNU/Hurd supports a difference between author and owner, but I don't think Rust supports GNU/Hurd, so I just used the owner.
- `-G` & `--no-group`: hide the group information.
- `-o`: hide the group and use long format (equivalent to `-lG`).
- `-g`: hide the owner and use long format.
The `-o` and `-g` options have some interesting behaviour that I had to account for. Some examples:
- `-og` hides both group and owner.
- `-ol` still hides the group. Same behaviour with variations such as `-o --format=long`, `-gl`, `-g --format=long` and `-ogl`.
- They even retain some information when overridden by another format: `-oCl` (or `-o --format=vertical --format=long`) still hides the group.
My previous solution for handling the behaviour where `-l1` shows the long format did not fit with these additions, so I had to rewrite that as well.
The tests only cover the how many names (author, group and owner) are present in the output, so it can't distinguish between, for example, author & group and group & owner.