lix/tests/functional
eldritch horrors 512c1f05c3 Unify and refactor value printing
Previously, there were two mostly-identical value printers -- one in
`libexpr/eval.cc` (which didn't force values) and one in
`libcmd/repl.cc` (which did force values and also printed ANSI color
codes).

This PR unifies both of these printers into `print.cc` and provides a
`PrintOptions` struct for controlling the output, which allows for
toggling whether values are forced, whether repeated values are tracked,
and whether ANSI color codes are displayed.

Additionally, `PrintOptions` allows tuning the maximum number of
attributes, list items, and bytes in a string that will be displayed;
this makes it ideal for contexts where printing too much output (e.g.
all of Nixpkgs) is distracting. (As requested by @roberth in
https://github.com/NixOS/nix/pull/9554#issuecomment-1845095735)

Please read the tests for example output.

Future work:
- It would be nice to provide this function as a builtin, perhaps
  `builtins.toStringDebug` -- a printing function that never fails would
  be useful when debugging Nix code.
- It would be nice to support customizing `PrintOptions` members on the
  command line, e.g. `--option to-string-max-attrs 1000`.

(cherry picked from commit 0fa08b451682fb3311fe58112ff05c4fe5bee3a4, )

===

Restore ambiguous value printer for `nix-instantiate`

The Nix team has requested that this output format remain unchanged.
I've added a warning to the man page explaining that `nix-instantiate
--eval` output will not parse correctly in many situations.

(cherry picked from commit df84dd4d8dd3fd6381ac2ca3064432ab31a16b79)

Change-Id: I7cca6b4b53cd0642f2d49af657d5676a8554c9f8
2024-03-09 03:50:06 +01:00
..
ca Merge pull request #9589 from obsidiansystems/floating-content-addressing-derivations-eval-store 2024-03-04 07:15:08 +01:00
common Merge pull request #9632 from cole-h/nix-daemon-testing 2024-03-04 08:17:32 +01:00
config Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
dyn-drv Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
flakes Merge pull request #9324 from 9999years/fix-8854-take-2 2024-03-07 14:50:43 +01:00
lang Unify and refactor value printing 2024-03-09 03:50:06 +01:00
nested-sandboxing Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
plugins Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
test-libstoreconsumer Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
add.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
bad.tar.xz Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
bash-profile.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
big-derivation-attr.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
binary-cache-build-remote.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
binary-cache.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
brotli.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-delete.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-dry.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-hook-ca-fixed.nix Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
build-hook-ca-floating.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-hook.nix Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
build-remote-content-addressed-fixed.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-content-addressed-floating.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-input-addressed.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless-after.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless-should-fail-0.sh Merge pull request #9529 from wh0/patch-1 2024-03-04 07:11:25 +01:00
build-remote-trustless-should-pass-0.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless-should-pass-1.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless-should-pass-2.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless-should-pass-3.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote-trustless.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build-remote.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
build.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
ca-shell.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
case-hack.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
case.nar Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check-refs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check-refs.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check-reqs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check-reqs.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
check.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
common.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
completions.sh Merge pull request #9167 from obsidiansystems/pre-overhaul-completions 2024-03-04 04:38:33 +01:00
compression-levels.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
compute-levels.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
config.nix.in Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
config.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
db-migration.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
debugger.sh Merge pull request #9933 from pennae/debugger-fix 2024-03-04 08:57:44 +01:00
dependencies.builder0.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
dependencies.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
dependencies.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
derivation-json.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
dummy Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
dump-db.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
eval-store.sh Merge pull request #9589 from obsidiansystems/floating-content-addressing-derivations-eval-store 2024-03-04 07:15:08 +01:00
eval.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
eval.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
experimental-features.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
export-graph.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
export-graph.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
export.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
failing.nix Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
fetchClosure.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchGit.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchGitRefs.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchGitSubmodules.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchMercurial.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchPath.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchTree-file.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fetchurl.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
filter-source.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
filter-source.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fixed.builder1.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fixed.builder2.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fixed.nix Merge pull request #9662 from shlevy/flat-fixed-references-assert 2024-03-04 07:50:02 +01:00
fixed.sh Merge pull request #9662 from shlevy/flat-fixed-references-assert 2024-03-04 07:50:02 +01:00
fmt.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
fmt.simple.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
function-trace.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-auto.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-concurrent.builder.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-concurrent.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-concurrent.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-concurrent2.builder.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-non-blocking.sh Merge pull request #8544 from edolstra/handle-missing-gc-socket 2024-03-07 00:43:51 -07:00
gc-runtime.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc-runtime.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
gc.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
hash-check.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
hash.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
hermetic.nix Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
ifd.nix Merge branch '2.18-maintenance' into ifd-buildStore-2.18 2024-01-11 07:21:16 -05:00
import-derivation.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
import-derivation.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
impure-derivations.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
impure-derivations.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
impure-eval.sh Merge pull request #4093 from matthewbauer/eval-system 2024-03-04 07:21:01 +01:00
init.sh Merge pull request #9233 from bouk/bouk/apply-config-inner 2024-03-04 07:11:25 +01:00
install-darwin.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
lang-test-infra.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
lang.sh Fix boost::bad_format_string exception in builtins.addErrorContext (#9291) 2024-03-04 05:39:12 +01:00
legacy-ssh-store.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
linux-sandbox-cert-test.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
linux-sandbox.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
local-store.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
local.mk Merge pull request #9324 from 9999years/fix-8854-take-2 2024-03-07 14:50:43 +01:00
logging.sh Merge pull request #9637 from 9999years/fix-logging-test-on-macos 2024-03-04 07:26:34 +01:00
misc.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
multiple-outputs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
multiple-outputs.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nar-access.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nar-access.sh Merge pull request #9288 from edolstra/fix-nar-access-test 2024-03-04 05:27:18 +01:00
nested-sandboxing.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-build-examples.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-build.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-channel.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-collect-garbage-d.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-copy-ssh-common.sh Merge pull request #9604 from obsidiansystems/test-substitute-on-destination 2024-03-07 03:34:00 +01:00
nix-copy-ssh-ng.sh Merge pull request #9604 from obsidiansystems/test-substitute-on-destination 2024-03-07 03:34:00 +01:00
nix-copy-ssh.sh Merge pull request #9604 from obsidiansystems/test-substitute-on-destination 2024-03-07 03:34:00 +01:00
nix-daemon-untrusting.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-profile.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
nix-shell.sh Merge pull request #9930 from rvl/print-dev-env-unbound-variables 2024-03-04 08:51:49 +01:00
nix_path.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
optimise-store.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
output-normalization.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
parallel.builder.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
parallel.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
parallel.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
pass-as-file.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
path-from-hash-part.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
path.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
placeholders.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
plugins.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
post-hook.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
pure-eval.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
pure-eval.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
push-to-store-old.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
push-to-store.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
read-only-store.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
readfile-context.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
readfile-context.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
recursive.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
recursive.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
referrers.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
remote-store.sh Merge branch '2.18-maintenance' into ifd-buildStore-2.18 2024-01-11 07:21:16 -05:00
repair.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
repl.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
restricted.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
restricted.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
search.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
search.sh Merge pull request #9481 from iFreilicht/disallow-nix-search-without-search-terms 2024-03-04 08:40:12 +01:00
secure-drv-outputs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
secure-drv-outputs.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
selfref-gc.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
shell-hello.nix Merge pull request #9648 from cole-h/nix-shell-ordering 2024-03-04 07:50:55 +01:00
shell.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
shell.sh Merge pull request #9648 from cole-h/nix-shell-ordering 2024-03-04 07:50:55 +01:00
shell.shebang.nix Merge pull request #8470 from ncfavier/shebang-single-quotes 2024-03-04 05:06:32 +01:00
shell.shebang.rb Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
shell.shebang.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
signing.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
simple-failing.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
simple.builder.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
simple.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
simple.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
ssh-relay.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
store-ping.sh Merge pull request #9632 from cole-h/nix-daemon-testing 2024-03-04 08:17:32 +01:00
structured-attrs-shell.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
structured-attrs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
structured-attrs.sh Merge pull request #9032 from Ma27/structured-attrs-env-vars 2024-03-07 10:46:47 +01:00
substitute-with-invalid-ca.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
suggestions.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
supplementary-groups.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
tarball.sh Merge pull request #9225 from drupol/nixpkgs-pr-107251/make-gnutar-reproducible 2024-03-04 05:34:19 +01:00
test-infra.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
test-libstoreconsumer.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
timeout.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
timeout.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
toString-path.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
undefined-variable.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
user-envs-migration.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
user-envs.builder.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
user-envs.nix Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
user-envs.sh Merge pull request #9257 from Artturin/nixenvjsondrvpath 2024-03-04 05:59:15 +01:00
why-depends.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00
zstd.sh Put functional tests in tests/functional 2023-12-01 12:06:43 -05:00