aboutsummaryrefslogtreecommitdiff
path: root/tests/hash.sh
AgeCommit message (Collapse)Author
2023-03-16nix-hash: support base-64 and SRI formatYueh-Shun Li
Add the --base64 and --sri flags for the Base64 and SRI format output. Add the --base16 flag to explicitly specify the hexadecimal format. Add the --to-base64 and --to-sri flag to convert a hash to the above mentioned format.
2023-03-16test/hash.sh: add to-base32 test for nix hashYueh-Shun Li
2023-03-16tests/hash.sh: try: Use FORMAT_FLAG instead of EXTRAYueh-Shun Li
Do not rely on the "multiple format flag specified" behavior. Explicitly test without the format flag / with the --base16 flag.
2023-03-08Harden tests' bashJohn Ericson
Use `set -u` and `set -o pipefail` to catch accidental mistakes and failures more strongly. - `set -u` catches the use of undefined variables - `set -o pipefail` catches failures (like `set -e`) earlier in the pipeline. This makes the tests a bit more robust. It is nice to read code not worrying about these spurious success paths (via uncaught) errors undermining the tests. Indeed, I caught some bugs doing this. There are a few tests where we run a command that should fail, and then search its output to make sure the failure message is one that we expect. Before, since the `grep` was the last command in the pipeline the exit code of those failing programs was silently ignored. Now with `set -o pipefail` it won't be, and we have to do something so the expected failure doesn't accidentally fail the test. To do that we use `expect` and a new `expectStderr` to check for the exact failing exit code. See the comments on each for why. `grep -q` is replaced with `grepQuiet`, see the comments on that function for why. `grep -v` when we just want the exit code is replaced with `grepInverse, see the comments on that function for why. `grep -q -v` together is, surprise surprise, replaced with `grepQuietInverse`, which is both combined. Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2020-12-03Move 'nix hash-*' and 'nix to-*' to 'nix hash'Eelco Dolstra
From the 'nix' UX review.
2018-12-13Support SRI hashesEelco Dolstra
SRI hashes (https://www.w3.org/TR/SRI/) combine the hash algorithm and a base-64 hash. This allows more concise and standard hash specifications. For example, instead of import <nix/fetchurl.nl> { url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz; sha256 = "5d22dad058d5c800d65a115f919da22938c50dd6ba98c5e3a183172d149840a4"; }; you can write import <nix/fetchurl.nl> { url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz; hash = "sha256-XSLa0FjVyADWWhFfkZ2iKTjFDda6mMXjoYMXLRSYQKQ="; }; In fixed-output derivations, the outputHashAlgo is no longer mandatory if outputHash specifies the hash (either as an SRI or in the old "<type>:<hash>" format). 'nix hash-{file,path}' now print hashes in SRI format by default. I also reverted them to use SHA-256 by default because that's what we're using most of the time in Nixpkgs. Suggested by @zimbatm.
2017-07-04Support base-64 hashesEelco Dolstra
Also simplify the Hash API. Fixes #1437.
2015-11-04Support SHA-512 hashesEelco Dolstra
Fixes #679. Note: on x86_64, SHA-512 is considerably faster than SHA-256 (198 MB/s versus 131 MB/s).
2012-03-19Replace "make check" with "make installcheck"Eelco Dolstra
Ensuring that the tests work from the build tree requires a growing number of nasty hacks. The tests also don't verify that the installed Nix actually works. Thus, the tests now require "make install" to have been run.
2011-10-10* Refactoring: remove unnecessary variables from the tests.Eelco Dolstra
2007-12-14* Mac OS X 10.5 compatibility: `echo -n foo' suddenly prints `-n foo'Eelco Dolstra
instead of `foo' without a newline (with /bin/sh, not /bin/bash, even though /bin/sh is also bash...). So use printf instead.
2006-03-01* Tests to prevent a repeat of the parseHash32 debacle.Eelco Dolstra
2006-03-01* Simplification.Eelco Dolstra
2006-03-01* Make it easy to run individual tests from the command line.Eelco Dolstra
2005-03-23* Add a test for base-32 encoding of hashes since it seems to beEelco Dolstra
broken on Mac OS X.
2005-01-14* Missing file.Eelco Dolstra