Unit Test Results.

Designed for use with JUnit and Ant.

Summary

Tests Failures Errors Skipped Success rate Time
6489 0 0 22 100.00% 1158.985
Note: failures are anticipated and checked for with assertions while errors are unanticipated.

Packages

Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
Name Tests Failures Errors Skipped Time(s) Time Stamp Host
sharnessLinux.t0001-tests-work 316 0 0 0 2.029 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0002-docker-image 12 0 0 0 150.843 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0003-docker-migrate 14 0 0 0 152.105 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0012-completion-fish 2 0 0 0 0.190 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0015-basic-sh-functions 6 0 0 0 0.044 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0018-indent 109 0 0 0 0.570 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0021-config 171 0 0 0 14.448 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0022-init-default 7 0 0 0 0.400 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0023-shutdown 17 0 0 0 1.872 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0024-datastore-config 22 0 0 0 2.069 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0025-datastores 6 0 0 0 0.876 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0026-id 31 0 0 0 4.177 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0027-rotate 216 0 0 0 27.294 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0030-mount 0 0 0 0 0.000 2026-02-27T18:12:13Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0031-mount-publish 0 0 0 0 0.000 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0032-mount-sharded 0 0 0 0 0.000 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0040-add-and-cat 499 0 0 22 61.891 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0042-add-skip 31 0 0 0 3.114 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0043-add-w 51 0 0 0 4.144 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0044-add-symlink 30 0 0 0 3.165 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0045-ls 79 0 0 0 6.817 2026-02-27T18:12:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0046-id-hash 23 0 0 0 2.448 2026-02-27T18:12:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0047-add-mode-mtime 114 0 0 0 27.028 2026-02-27T18:12:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0050-block 57 0 0 0 6.769 2026-02-27T18:12:21Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0051-object 59 0 0 0 13.013 2026-02-27T18:12:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0052-object-diff 32 0 0 0 4.631 2026-02-27T18:12:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0053-dag 162 0 0 0 19.269 2026-02-27T18:12:28Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0054-dag-car-import-export 55 0 0 0 52.218 2026-02-27T18:12:30Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0055-dag-put-json-new-line 8 0 0 0 2.871 2026-02-27T18:12:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0060-daemon 70 0 0 0 16.229 2026-02-27T18:12:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0061-daemon-opts 23 0 0 0 2.191 2026-02-27T18:12:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0062-daemon-api 25 0 0 0 2.018 2026-02-27T18:12:38Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0063-daemon-init 6 0 0 0 4.507 2026-02-27T18:12:39Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0063-external 16 0 0 0 2.034 2026-02-27T18:12:41Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0064-api-file 48 0 0 0 6.196 2026-02-27T18:12:44Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0065-active-requests 19 0 0 0 4.049 2026-02-27T18:12:45Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0066-migration 28 0 0 0 7.931 2026-02-27T18:12:49Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0067-unix-api 13 0 0 0 2.391 2026-02-27T18:12:50Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0070-user-config 4 0 0 0 1.629 2026-02-27T18:12:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0080-repo 60 0 0 0 23.448 2026-02-27T18:12:52Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0081-repo-pinning 38 0 0 0 43.087 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0082-repo-gc-auto 0 0 0 0 0.000 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0084-repo-read-rehash 17 0 0 0 3.122 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0086-repo-verify 85 0 0 0 19.851 2026-02-27T18:12:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0087-repo-robust-gc 55 0 0 0 22.217 2026-02-27T18:12:55Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0088-repo-stat-symlink 5 0 0 0 6.365 2026-02-27T18:12:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0090-get 75 0 0 0 20.508 2026-02-27T18:13:01Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0095-refs 24 0 0 0 15.605 2026-02-27T18:13:09Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0101-iptb-name 14 0 0 0 3.153 2026-02-27T18:13:27Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0109-gateway-web-_redirects 43 0 0 0 2.675 2026-02-27T18:13:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0112-gateway-cors 32 0 0 0 2.437 2026-02-27T18:13:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0114-gateway-subdomains 243 0 0 0 10.105 2026-02-27T18:13:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0115-gateway-dir-listing 38 0 0 0 1.522 2026-02-27T18:13:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0116-gateway-cache 14 0 0 0 1.424 2026-02-27T18:13:34Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0119-prometheus 42 0 0 0 3.432 2026-02-27T18:13:34Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0120-bootstrap 81 0 0 0 4.312 2026-02-27T18:13:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0121-bootstrap-iptb 23 0 0 0 3.928 2026-02-27T18:13:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0131-multinode-client-routing 29 0 0 0 5.607 2026-02-27T18:13:36Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0140-swarm 84 0 0 0 8.747 2026-02-27T18:13:36Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0141-addfilter 41 0 0 0 3.176 2026-02-27T18:13:40Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0142-testfilter 11 0 0 0 2.252 2026-02-27T18:13:40Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0150-clisuggest 19 0 0 0 1.644 2026-02-27T18:13:41Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0151-sysdiag 7 0 0 0 0.834 2026-02-27T18:13:42Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0152-profile 26 0 0 0 25.698 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0160-resolve 105 0 0 0 6.416 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0165-keystore 48 0 0 0 7.947 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0180-p2p 83 0 0 0 7.720 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0181-private-network 47 0 0 0 12.731 2026-02-27T18:13:44Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0182-circuit-relay 15 0 0 0 2.509 2026-02-27T18:13:45Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0183-namesys-pubsub 53 0 0 0 13.506 2026-02-27T18:13:48Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0184-http-proxy-over-p2p 21 0 0 0 1.756 2026-02-27T18:13:48Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0185-autonat 21 0 0 0 1.921 2026-02-27T18:13:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0190-quic-ping 15 0 0 0 6.233 2026-02-27T18:13:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0191-webtransport-ping 15 0 0 0 6.583 2026-02-27T18:13:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0195-noise 14 0 0 0 9.034 2026-02-27T18:13:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0220-bitswap 23 0 0 0 1.785 2026-02-27T18:13:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0230-channel-streaming-http-content-type 15 0 0 0 1.549 2026-02-27T18:13:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0231-channel-streaming 14 0 0 0 1.339 2026-02-27T18:13:57Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0235-cli-request 10 0 0 0 1.289 2026-02-27T18:13:57Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0236-cli-api-dns-resolve 7 0 0 0 2.299 2026-02-27T18:13:58Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0240-republisher 57 0 0 0 5.988 2026-02-27T18:13:58Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0250-files-api 1738 0 0 0 104.119 2026-02-27T18:13:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0251-files-flushing 21 0 0 0 3.393 2026-02-27T18:13:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0252-files-gc 12 0 0 0 4.521 2026-02-27T18:14:00Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0260-sharding 58 0 0 0 12.963 2026-02-27T18:14:02Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0270-filestore 43 0 0 0 6.757 2026-02-27T18:14:03Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0271-filestore-utils 131 0 0 0 11.653 2026-02-27T18:14:04Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0272-urlstore 42 0 0 0 6.588 2026-02-27T18:14:04Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0275-cid-security 31 0 0 0 2.099 2026-02-27T18:14:06Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0276-cidv0v1 26 0 0 0 3.505 2026-02-27T18:14:10Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0280-plugin 0 0 0 0 0.000 2026-02-27T18:14:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0280-plugin-dag-jose 15 0 0 0 14.670 2026-02-27T18:14:10Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0280-plugin-fx 12 0 0 0 1.331 2026-02-27T18:14:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0280-plugin-git 24 0 0 0 12.346 2026-02-27T18:14:13Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0280-plugin-peerlog 19 0 0 0 2.950 2026-02-27T18:14:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0290-cid 20 0 0 0 1.810 2026-02-27T18:14:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0295-multibase 11 0 0 0 1.012 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0320-pubsub 82 0 0 0 12.019 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0321-pubsub-gossipsub 22 0 0 0 4.314 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0322-pubsub-http-rpc 13 0 0 0 1.513 2026-02-27T18:14:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0400-api-no-gateway 22 0 0 0 2.399 2026-02-27T18:14:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0401-api-browser-security 32 0 0 0 3.188 2026-02-27T18:14:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0410-api-add 12 0 0 0 1.486 2026-02-27T18:14:24Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0500-issues-and-regressions-offline 10 0 0 0 1.310 2026-02-27T18:14:25Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0600-issues-and-regressions-online 30 0 0 0 2.324 2026-02-27T18:14:26Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
sharnessLinux.t0800-blake3 13 0 0 0 1.491 2026-02-27T18:14:27Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64

Package sharnessLinux.t0001-tests-work

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0001-tests-work 316 0 0 0 2.029 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0002-docker-image

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0002-docker-image 12 0 0 0 150.843 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0003-docker-migrate

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0003-docker-migrate 14 0 0 0 152.105 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0012-completion-fish

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0012-completion-fish 2 0 0 0 0.190 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0015-basic-sh-functions

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0015-basic-sh-functions 6 0 0 0 0.044 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0018-indent

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0018-indent 109 0 0 0 0.570 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0021-config

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0021-config 171 0 0 0 14.448 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0022-init-default

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0022-init-default 7 0 0 0 0.400 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0023-shutdown

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0023-shutdown 17 0 0 0 1.872 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0024-datastore-config

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0024-datastore-config 22 0 0 0 2.069 2026-02-27T18:12:11Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0025-datastores

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0025-datastores 6 0 0 0 0.876 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0026-id

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0026-id 31 0 0 0 4.177 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0027-rotate

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0027-rotate 216 0 0 0 27.294 2026-02-27T18:12:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0030-mount

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0030-mount 0 0 0 0 0.000 2026-02-27T18:12:13Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0031-mount-publish

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0031-mount-publish 0 0 0 0 0.000 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0032-mount-sharded

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0032-mount-sharded 0 0 0 0 0.000 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0040-add-and-cat

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0040-add-and-cat 499 0 0 22 61.891 2026-02-27T18:12:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0042-add-skip

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0042-add-skip 31 0 0 0 3.114 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0043-add-w

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0043-add-w 51 0 0 0 4.144 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0044-add-symlink

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0044-add-symlink 30 0 0 0 3.165 2026-02-27T18:12:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0045-ls

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0045-ls 79 0 0 0 6.817 2026-02-27T18:12:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0046-id-hash

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0046-id-hash 23 0 0 0 2.448 2026-02-27T18:12:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0047-add-mode-mtime

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0047-add-mode-mtime 114 0 0 0 27.028 2026-02-27T18:12:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0050-block

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0050-block 57 0 0 0 6.769 2026-02-27T18:12:21Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0051-object

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0051-object 59 0 0 0 13.013 2026-02-27T18:12:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0052-object-diff

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0052-object-diff 32 0 0 0 4.631 2026-02-27T18:12:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0053-dag

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0053-dag 162 0 0 0 19.269 2026-02-27T18:12:28Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0054-dag-car-import-export

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0054-dag-car-import-export 55 0 0 0 52.218 2026-02-27T18:12:30Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0055-dag-put-json-new-line

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0055-dag-put-json-new-line 8 0 0 0 2.871 2026-02-27T18:12:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0060-daemon

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0060-daemon 70 0 0 0 16.229 2026-02-27T18:12:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0061-daemon-opts

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0061-daemon-opts 23 0 0 0 2.191 2026-02-27T18:12:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0062-daemon-api

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0062-daemon-api 25 0 0 0 2.018 2026-02-27T18:12:38Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0063-daemon-init

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0063-daemon-init 6 0 0 0 4.507 2026-02-27T18:12:39Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0063-external

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0063-external 16 0 0 0 2.034 2026-02-27T18:12:41Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0064-api-file

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0064-api-file 48 0 0 0 6.196 2026-02-27T18:12:44Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0065-active-requests

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0065-active-requests 19 0 0 0 4.049 2026-02-27T18:12:45Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0066-migration

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0066-migration 28 0 0 0 7.931 2026-02-27T18:12:49Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0067-unix-api

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0067-unix-api 13 0 0 0 2.391 2026-02-27T18:12:50Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0070-user-config

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0070-user-config 4 0 0 0 1.629 2026-02-27T18:12:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0080-repo

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0080-repo 60 0 0 0 23.448 2026-02-27T18:12:52Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0081-repo-pinning

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0081-repo-pinning 38 0 0 0 43.087 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0082-repo-gc-auto

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0082-repo-gc-auto 0 0 0 0 0.000 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0084-repo-read-rehash

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0084-repo-read-rehash 17 0 0 0 3.122 2026-02-27T18:12:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0086-repo-verify

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0086-repo-verify 85 0 0 0 19.851 2026-02-27T18:12:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0087-repo-robust-gc

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0087-repo-robust-gc 55 0 0 0 22.217 2026-02-27T18:12:55Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0088-repo-stat-symlink

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0088-repo-stat-symlink 5 0 0 0 6.365 2026-02-27T18:12:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0090-get

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0090-get 75 0 0 0 20.508 2026-02-27T18:13:01Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0095-refs

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0095-refs 24 0 0 0 15.605 2026-02-27T18:13:09Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0101-iptb-name

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0101-iptb-name 14 0 0 0 3.153 2026-02-27T18:13:27Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0109-gateway-web-_redirects

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0109-gateway-web-_redirects 43 0 0 0 2.675 2026-02-27T18:13:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0112-gateway-cors

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0112-gateway-cors 32 0 0 0 2.437 2026-02-27T18:13:31Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0114-gateway-subdomains

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0114-gateway-subdomains 243 0 0 0 10.105 2026-02-27T18:13:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0115-gateway-dir-listing

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0115-gateway-dir-listing 38 0 0 0 1.522 2026-02-27T18:13:32Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0116-gateway-cache

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0116-gateway-cache 14 0 0 0 1.424 2026-02-27T18:13:34Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0119-prometheus

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0119-prometheus 42 0 0 0 3.432 2026-02-27T18:13:34Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0120-bootstrap

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0120-bootstrap 81 0 0 0 4.312 2026-02-27T18:13:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0121-bootstrap-iptb

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0121-bootstrap-iptb 23 0 0 0 3.928 2026-02-27T18:13:35Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0131-multinode-client-routing

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0131-multinode-client-routing 29 0 0 0 5.607 2026-02-27T18:13:36Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0140-swarm

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0140-swarm 84 0 0 0 8.747 2026-02-27T18:13:36Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0141-addfilter

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0141-addfilter 41 0 0 0 3.176 2026-02-27T18:13:40Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0142-testfilter

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0142-testfilter 11 0 0 0 2.252 2026-02-27T18:13:40Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0150-clisuggest

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0150-clisuggest 19 0 0 0 1.644 2026-02-27T18:13:41Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0151-sysdiag

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0151-sysdiag 7 0 0 0 0.834 2026-02-27T18:13:42Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0152-profile

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0152-profile 26 0 0 0 25.698 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0160-resolve

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0160-resolve 105 0 0 0 6.416 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0165-keystore

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0165-keystore 48 0 0 0 7.947 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0180-p2p

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0180-p2p 83 0 0 0 7.720 2026-02-27T18:13:43Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0181-private-network

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0181-private-network 47 0 0 0 12.731 2026-02-27T18:13:44Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0182-circuit-relay

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0182-circuit-relay 15 0 0 0 2.509 2026-02-27T18:13:45Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0183-namesys-pubsub

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0183-namesys-pubsub 53 0 0 0 13.506 2026-02-27T18:13:48Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0184-http-proxy-over-p2p

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0184-http-proxy-over-p2p 21 0 0 0 1.756 2026-02-27T18:13:48Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0185-autonat

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0185-autonat 21 0 0 0 1.921 2026-02-27T18:13:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0190-quic-ping

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0190-quic-ping 15 0 0 0 6.233 2026-02-27T18:13:51Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0191-webtransport-ping

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0191-webtransport-ping 15 0 0 0 6.583 2026-02-27T18:13:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0195-noise

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0195-noise 14 0 0 0 9.034 2026-02-27T18:13:53Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0220-bitswap

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0220-bitswap 23 0 0 0 1.785 2026-02-27T18:13:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0230-channel-streaming-http-content-type

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0230-channel-streaming-http-content-type 15 0 0 0 1.549 2026-02-27T18:13:54Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0231-channel-streaming

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0231-channel-streaming 14 0 0 0 1.339 2026-02-27T18:13:57Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0235-cli-request

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0235-cli-request 10 0 0 0 1.289 2026-02-27T18:13:57Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0236-cli-api-dns-resolve

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0236-cli-api-dns-resolve 7 0 0 0 2.299 2026-02-27T18:13:58Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0240-republisher

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0240-republisher 57 0 0 0 5.988 2026-02-27T18:13:58Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0250-files-api

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0250-files-api 1738 0 0 0 104.119 2026-02-27T18:13:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0251-files-flushing

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0251-files-flushing 21 0 0 0 3.393 2026-02-27T18:13:59Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0252-files-gc

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0252-files-gc 12 0 0 0 4.521 2026-02-27T18:14:00Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0260-sharding

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0260-sharding 58 0 0 0 12.963 2026-02-27T18:14:02Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0270-filestore

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0270-filestore 43 0 0 0 6.757 2026-02-27T18:14:03Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0271-filestore-utils

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0271-filestore-utils 131 0 0 0 11.653 2026-02-27T18:14:04Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0272-urlstore

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0272-urlstore 42 0 0 0 6.588 2026-02-27T18:14:04Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0275-cid-security

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0275-cid-security 31 0 0 0 2.099 2026-02-27T18:14:06Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0276-cidv0v1

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0276-cidv0v1 26 0 0 0 3.505 2026-02-27T18:14:10Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0280-plugin

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0280-plugin 0 0 0 0 0.000 2026-02-27T18:14:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0280-plugin-dag-jose

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0280-plugin-dag-jose 15 0 0 0 14.670 2026-02-27T18:14:10Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0280-plugin-fx

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0280-plugin-fx 12 0 0 0 1.331 2026-02-27T18:14:12Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0280-plugin-git

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0280-plugin-git 24 0 0 0 12.346 2026-02-27T18:14:13Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0280-plugin-peerlog

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0280-plugin-peerlog 19 0 0 0 2.950 2026-02-27T18:14:14Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0290-cid

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0290-cid 20 0 0 0 1.810 2026-02-27T18:14:15Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0295-multibase

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0295-multibase 11 0 0 0 1.012 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0320-pubsub

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0320-pubsub 82 0 0 0 12.019 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0321-pubsub-gossipsub

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0321-pubsub-gossipsub 22 0 0 0 4.314 2026-02-27T18:14:18Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0322-pubsub-http-rpc

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0322-pubsub-http-rpc 13 0 0 0 1.513 2026-02-27T18:14:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0400-api-no-gateway

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0400-api-no-gateway 22 0 0 0 2.399 2026-02-27T18:14:20Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0401-api-browser-security

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0401-api-browser-security 32 0 0 0 3.188 2026-02-27T18:14:23Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0410-api-add

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0410-api-add 12 0 0 0 1.486 2026-02-27T18:14:24Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0500-issues-and-regressions-offline

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0500-issues-and-regressions-offline 10 0 0 0 1.310 2026-02-27T18:14:25Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0600-issues-and-regressions-online

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0600-issues-and-regressions-online 30 0 0 0 2.324 2026-02-27T18:14:26Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top

Package sharnessLinux.t0800-blake3

Name Tests Failures Errors Skipped Time(s) Time Stamp Host
t0800-blake3 13 0 0 0 1.491 2026-02-27T18:14:27Z Linux ip-10-0-102-120 6.14.0-1010-aws x86_64
Back to top


TestCase t0001-tests-work

Name Status Type Time(s)
1 - test in ../t0051-object.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 1 - test in ../t0051-object.sh finishes
2 - test in ../t0051-object.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 2 - test in ../t0051-object.sh has a description
3 - test in ../t0051-object.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 3 - test in ../t0051-object.sh has matching ipfs start/stop
4 - test in ../t0062-daemon-api.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 4 - test in ../t0062-daemon-api.sh finishes
5 - test in ../t0062-daemon-api.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 5 - test in ../t0062-daemon-api.sh has a description
6 - test in ../t0062-daemon-api.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 6 - test in ../t0062-daemon-api.sh has matching ipfs start/stop
7 - test in ../t0190-quic-ping.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 7 - test in ../t0190-quic-ping.sh finishes
8 - test in ../t0190-quic-ping.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 8 - test in ../t0190-quic-ping.sh has a description
9 - test in ../t0190-quic-ping.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 9 - test in ../t0190-quic-ping.sh has matching ipfs start/stop
10 - test in ../t0002-docker-image.sh finishes Success 0.004
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 10 - test in ../t0002-docker-image.sh finishes
11 - test in ../t0002-docker-image.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 11 - test in ../t0002-docker-image.sh has a description
12 - test in ../t0002-docker-image.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 12 - test in ../t0002-docker-image.sh has matching ipfs start/stop
13 - test in ../t0295-multibase.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 13 - test in ../t0295-multibase.sh finishes
14 - test in ../t0295-multibase.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 14 - test in ../t0295-multibase.sh has a description
15 - test in ../t0295-multibase.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 15 - test in ../t0295-multibase.sh has matching ipfs start/stop
16 - test in ../t0060-daemon.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 16 - test in ../t0060-daemon.sh finishes
17 - test in ../t0060-daemon.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 17 - test in ../t0060-daemon.sh has a description
18 - test in ../t0276-cidv0v1.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 18 - test in ../t0276-cidv0v1.sh finishes
19 - test in ../t0276-cidv0v1.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 19 - test in ../t0276-cidv0v1.sh has a description
20 - test in ../t0276-cidv0v1.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 20 - test in ../t0276-cidv0v1.sh has matching ipfs start/stop
21 - test in ../t0114-gateway-subdomains.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 21 - test in ../t0114-gateway-subdomains.sh finishes
22 - test in ../t0114-gateway-subdomains.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 22 - test in ../t0114-gateway-subdomains.sh has a description
23 - test in ../t0114-gateway-subdomains.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 23 - test in ../t0114-gateway-subdomains.sh has matching ipfs start/stop
24 - test in ../t0600-issues-and-regressions-online.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 24 - test in ../t0600-issues-and-regressions-online.sh finishes
25 - test in ../t0600-issues-and-regressions-online.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 25 - test in ../t0600-issues-and-regressions-online.sh has a description
26 - test in ../t0600-issues-and-regressions-online.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 26 - test in ../t0600-issues-and-regressions-online.sh has matching ipfs start/stop
27 - test in ../t0142-testfilter.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 27 - test in ../t0142-testfilter.sh finishes
28 - test in ../t0142-testfilter.sh has a description Success 0.004
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 28 - test in ../t0142-testfilter.sh has a description
29 - test in ../t0142-testfilter.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 29 - test in ../t0142-testfilter.sh has matching ipfs start/stop
30 - test in ../t0141-addfilter.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 30 - test in ../t0141-addfilter.sh finishes
31 - test in ../t0141-addfilter.sh has a description Success 0.004
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 31 - test in ../t0141-addfilter.sh has a description
32 - test in ../t0141-addfilter.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 32 - test in ../t0141-addfilter.sh has matching ipfs start/stop
33 - test in ../t0112-gateway-cors.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 33 - test in ../t0112-gateway-cors.sh finishes
34 - test in ../t0112-gateway-cors.sh has a description Success 0.004
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 34 - test in ../t0112-gateway-cors.sh has a description
35 - test in ../t0112-gateway-cors.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 35 - test in ../t0112-gateway-cors.sh has matching ipfs start/stop
36 - test in ../t0230-channel-streaming-http-content-type.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 36 - test in ../t0230-channel-streaming-http-content-type.sh finishes
37 - test in ../t0230-channel-streaming-http-content-type.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 37 - test in ../t0230-channel-streaming-http-content-type.sh has a description
38 - test in ../t0230-channel-streaming-http-content-type.sh has matching ipfs start/stop Success 0.005
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 38 - test in ../t0230-channel-streaming-http-content-type.sh has matching ipfs start/stop
39 - test in ../t0012-completion-fish.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 39 - test in ../t0012-completion-fish.sh finishes
40 - test in ../t0012-completion-fish.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 40 - test in ../t0012-completion-fish.sh has a description
41 - test in ../t0012-completion-fish.sh has matching ipfs start/stop Success 0.005
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 41 - test in ../t0012-completion-fish.sh has matching ipfs start/stop
42 - test in ../t0067-unix-api.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 42 - test in ../t0067-unix-api.sh finishes
43 - test in ../t0067-unix-api.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 43 - test in ../t0067-unix-api.sh has a description
44 - test in ../t0067-unix-api.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 44 - test in ../t0067-unix-api.sh has matching ipfs start/stop
45 - test in ../t0021-config.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 45 - test in ../t0021-config.sh finishes
46 - test in ../t0021-config.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 46 - test in ../t0021-config.sh has a description
47 - test in ../t0021-config.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 47 - test in ../t0021-config.sh has matching ipfs start/stop
48 - test in ../t0042-add-skip.sh finishes Success 0.004
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 48 - test in ../t0042-add-skip.sh finishes
49 - test in ../t0042-add-skip.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 49 - test in ../t0042-add-skip.sh has a description
50 - test in ../t0042-add-skip.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 50 - test in ../t0042-add-skip.sh has matching ipfs start/stop
51 - test in ../t0003-docker-migrate.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 51 - test in ../t0003-docker-migrate.sh finishes
52 - test in ../t0003-docker-migrate.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 52 - test in ../t0003-docker-migrate.sh has a description
53 - test in ../t0003-docker-migrate.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 53 - test in ../t0003-docker-migrate.sh has matching ipfs start/stop
54 - test in ../t0271-filestore-utils.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 54 - test in ../t0271-filestore-utils.sh finishes
55 - test in ../t0271-filestore-utils.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 55 - test in ../t0271-filestore-utils.sh has a description
56 - test in ../t0271-filestore-utils.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 56 - test in ../t0271-filestore-utils.sh has matching ipfs start/stop
57 - test in ../t0152-profile.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 57 - test in ../t0152-profile.sh finishes
58 - test in ../t0152-profile.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 58 - test in ../t0152-profile.sh has a description
59 - test in ../t0152-profile.sh has matching ipfs start/stop Success 0.005
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 59 - test in ../t0152-profile.sh has matching ipfs start/stop
60 - test in ../t0080-repo.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 60 - test in ../t0080-repo.sh finishes
61 - test in ../t0080-repo.sh has a description Success 0.004
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 61 - test in ../t0080-repo.sh has a description
62 - test in ../t0080-repo.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 62 - test in ../t0080-repo.sh has matching ipfs start/stop
63 - test in ../t0290-cid.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 63 - test in ../t0290-cid.sh finishes
64 - test in ../t0290-cid.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 64 - test in ../t0290-cid.sh has a description
65 - test in ../t0290-cid.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 65 - test in ../t0290-cid.sh has matching ipfs start/stop
66 - test in ../t0061-daemon-opts.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 66 - test in ../t0061-daemon-opts.sh finishes
67 - test in ../t0061-daemon-opts.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 67 - test in ../t0061-daemon-opts.sh has a description
68 - test in ../t0061-daemon-opts.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 68 - test in ../t0061-daemon-opts.sh has matching ipfs start/stop
69 - test in ../t0183-namesys-pubsub.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 69 - test in ../t0183-namesys-pubsub.sh finishes
70 - test in ../t0183-namesys-pubsub.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 70 - test in ../t0183-namesys-pubsub.sh has a description
71 - test in ../t0183-namesys-pubsub.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 71 - test in ../t0183-namesys-pubsub.sh has matching ipfs start/stop
72 - test in ../t0063-daemon-init.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 72 - test in ../t0063-daemon-init.sh finishes
73 - test in ../t0063-daemon-init.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 73 - test in ../t0063-daemon-init.sh has a description
74 - test in ../t0063-daemon-init.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 74 - test in ../t0063-daemon-init.sh has matching ipfs start/stop
75 - test in ../t0800-blake3.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 75 - test in ../t0800-blake3.sh finishes
76 - test in ../t0800-blake3.sh has a description Success 0.004
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 76 - test in ../t0800-blake3.sh has a description
77 - test in ../t0800-blake3.sh has matching ipfs start/stop Success 0.005
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 77 - test in ../t0800-blake3.sh has matching ipfs start/stop
78 - test in ../t0070-user-config.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 78 - test in ../t0070-user-config.sh finishes
79 - test in ../t0070-user-config.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 79 - test in ../t0070-user-config.sh has a description
80 - test in ../t0070-user-config.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 80 - test in ../t0070-user-config.sh has matching ipfs start/stop
81 - test in ../t0140-swarm.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 81 - test in ../t0140-swarm.sh finishes
82 - test in ../t0140-swarm.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 82 - test in ../t0140-swarm.sh has a description
83 - test in ../t0140-swarm.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 83 - test in ../t0140-swarm.sh has matching ipfs start/stop
84 - test in ../t0260-sharding.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 84 - test in ../t0260-sharding.sh finishes
85 - test in ../t0260-sharding.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 85 - test in ../t0260-sharding.sh has a description
86 - test in ../t0260-sharding.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 86 - test in ../t0260-sharding.sh has matching ipfs start/stop
87 - test in ../t0251-files-flushing.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 87 - test in ../t0251-files-flushing.sh finishes
88 - test in ../t0251-files-flushing.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 88 - test in ../t0251-files-flushing.sh has a description
89 - test in ../t0251-files-flushing.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 89 - test in ../t0251-files-flushing.sh has matching ipfs start/stop
90 - test in ../t0250-files-api.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 90 - test in ../t0250-files-api.sh finishes
91 - test in ../t0250-files-api.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 91 - test in ../t0250-files-api.sh has a description
92 - test in ../t0250-files-api.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 92 - test in ../t0250-files-api.sh has matching ipfs start/stop
93 - test in ../t0053-dag.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 93 - test in ../t0053-dag.sh finishes
94 - test in ../t0053-dag.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 94 - test in ../t0053-dag.sh has a description
95 - test in ../t0053-dag.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 95 - test in ../t0053-dag.sh has matching ipfs start/stop
96 - test in ../t0322-pubsub-http-rpc.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 96 - test in ../t0322-pubsub-http-rpc.sh finishes
97 - test in ../t0322-pubsub-http-rpc.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 97 - test in ../t0322-pubsub-http-rpc.sh has a description
98 - test in ../t0322-pubsub-http-rpc.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 98 - test in ../t0322-pubsub-http-rpc.sh has matching ipfs start/stop
99 - test in ../t0150-clisuggest.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 99 - test in ../t0150-clisuggest.sh finishes
100 - test in ../t0150-clisuggest.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 100 - test in ../t0150-clisuggest.sh has a description
101 - test in ../t0150-clisuggest.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 101 - test in ../t0150-clisuggest.sh has matching ipfs start/stop
102 - test in ../t0236-cli-api-dns-resolve.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 102 - test in ../t0236-cli-api-dns-resolve.sh finishes
103 - test in ../t0236-cli-api-dns-resolve.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 103 - test in ../t0236-cli-api-dns-resolve.sh has a description
104 - test in ../t0236-cli-api-dns-resolve.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 104 - test in ../t0236-cli-api-dns-resolve.sh has matching ipfs start/stop
105 - test in ../t0055-dag-put-json-new-line.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 105 - test in ../t0055-dag-put-json-new-line.sh finishes
106 - test in ../t0055-dag-put-json-new-line.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 106 - test in ../t0055-dag-put-json-new-line.sh has a description
107 - test in ../t0055-dag-put-json-new-line.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 107 - test in ../t0055-dag-put-json-new-line.sh has matching ipfs start/stop
108 - test in ../t0410-api-add.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 108 - test in ../t0410-api-add.sh finishes
109 - test in ../t0410-api-add.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 109 - test in ../t0410-api-add.sh has a description
110 - test in ../t0410-api-add.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 110 - test in ../t0410-api-add.sh has matching ipfs start/stop
111 - test in ../t0180-p2p.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 111 - test in ../t0180-p2p.sh finishes
112 - test in ../t0180-p2p.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 112 - test in ../t0180-p2p.sh has a description
113 - test in ../t0180-p2p.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 113 - test in ../t0180-p2p.sh has matching ipfs start/stop
114 - test in ../t0235-cli-request.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 114 - test in ../t0235-cli-request.sh finishes
115 - test in ../t0235-cli-request.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 115 - test in ../t0235-cli-request.sh has a description
116 - test in ../t0235-cli-request.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 116 - test in ../t0235-cli-request.sh has matching ipfs start/stop
117 - test in ../t0120-bootstrap.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 117 - test in ../t0120-bootstrap.sh finishes
118 - test in ../t0120-bootstrap.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 118 - test in ../t0120-bootstrap.sh has a description
119 - test in ../t0120-bootstrap.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 119 - test in ../t0120-bootstrap.sh has matching ipfs start/stop
120 - test in ../t0052-object-diff.sh finishes Success 0.013
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 120 - test in ../t0052-object-diff.sh finishes
121 - test in ../t0052-object-diff.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 121 - test in ../t0052-object-diff.sh has a description
122 - test in ../t0052-object-diff.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 122 - test in ../t0052-object-diff.sh has matching ipfs start/stop
123 - test in ../t0321-pubsub-gossipsub.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 123 - test in ../t0321-pubsub-gossipsub.sh finishes
124 - test in ../t0321-pubsub-gossipsub.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 124 - test in ../t0321-pubsub-gossipsub.sh has a description
125 - test in ../t0321-pubsub-gossipsub.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 125 - test in ../t0321-pubsub-gossipsub.sh has matching ipfs start/stop
126 - test in ../t0081-repo-pinning.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 126 - test in ../t0081-repo-pinning.sh finishes
127 - test in ../t0081-repo-pinning.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 127 - test in ../t0081-repo-pinning.sh has a description
128 - test in ../t0081-repo-pinning.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 128 - test in ../t0081-repo-pinning.sh has matching ipfs start/stop
129 - test in ../t0280-plugin.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 129 - test in ../t0280-plugin.sh finishes
130 - test in ../t0280-plugin.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 130 - test in ../t0280-plugin.sh has a description
131 - test in ../t0280-plugin.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 131 - test in ../t0280-plugin.sh has matching ipfs start/stop
132 - test in ../t0027-rotate.sh finishes Success 0.009
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 132 - test in ../t0027-rotate.sh finishes
133 - test in ../t0027-rotate.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 133 - test in ../t0027-rotate.sh has a description
134 - test in ../t0027-rotate.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 134 - test in ../t0027-rotate.sh has matching ipfs start/stop
135 - test in ../t0022-init-default.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 135 - test in ../t0022-init-default.sh finishes
136 - test in ../t0022-init-default.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 136 - test in ../t0022-init-default.sh has a description
137 - test in ../t0022-init-default.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 137 - test in ../t0022-init-default.sh has matching ipfs start/stop
138 - test in ../t0240-republisher.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 138 - test in ../t0240-republisher.sh finishes
139 - test in ../t0240-republisher.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 139 - test in ../t0240-republisher.sh has a description
140 - test in ../t0240-republisher.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 140 - test in ../t0240-republisher.sh has matching ipfs start/stop
141 - test in ../t0018-indent.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 141 - test in ../t0018-indent.sh finishes
142 - test in ../t0018-indent.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 142 - test in ../t0018-indent.sh has a description
143 - test in ../t0018-indent.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 143 - test in ../t0018-indent.sh has matching ipfs start/stop
144 - test in ../t0121-bootstrap-iptb.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 144 - test in ../t0121-bootstrap-iptb.sh finishes
145 - test in ../t0121-bootstrap-iptb.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 145 - test in ../t0121-bootstrap-iptb.sh has a description
146 - test in ../t0121-bootstrap-iptb.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 146 - test in ../t0121-bootstrap-iptb.sh has matching ipfs start/stop
147 - test in ../t0032-mount-sharded.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 147 - test in ../t0032-mount-sharded.sh finishes
148 - test in ../t0032-mount-sharded.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 148 - test in ../t0032-mount-sharded.sh has a description
149 - test in ../t0032-mount-sharded.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 149 - test in ../t0032-mount-sharded.sh has matching ipfs start/stop
150 - test in ../t0031-mount-publish.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 150 - test in ../t0031-mount-publish.sh finishes
151 - test in ../t0031-mount-publish.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 151 - test in ../t0031-mount-publish.sh has a description
152 - test in ../t0031-mount-publish.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 152 - test in ../t0031-mount-publish.sh has matching ipfs start/stop
153 - test in ../t0115-gateway-dir-listing.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 153 - test in ../t0115-gateway-dir-listing.sh finishes
154 - test in ../t0115-gateway-dir-listing.sh has a description Success 0.009
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 154 - test in ../t0115-gateway-dir-listing.sh has a description
155 - test in ../t0115-gateway-dir-listing.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 155 - test in ../t0115-gateway-dir-listing.sh has matching ipfs start/stop
156 - test in ../t0066-migration.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 156 - test in ../t0066-migration.sh finishes
157 - test in ../t0066-migration.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 157 - test in ../t0066-migration.sh has a description
158 - test in ../t0066-migration.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 158 - test in ../t0066-migration.sh has matching ipfs start/stop
159 - test in ../t0220-bitswap.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 159 - test in ../t0220-bitswap.sh finishes
160 - test in ../t0220-bitswap.sh has a description Success 0.010
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 160 - test in ../t0220-bitswap.sh has a description
161 - test in ../t0220-bitswap.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 161 - test in ../t0220-bitswap.sh has matching ipfs start/stop
162 - test in ../t0151-sysdiag.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 162 - test in ../t0151-sysdiag.sh finishes
163 - test in ../t0151-sysdiag.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 163 - test in ../t0151-sysdiag.sh has a description
164 - test in ../t0151-sysdiag.sh has matching ipfs start/stop Success 0.013
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 164 - test in ../t0151-sysdiag.sh has matching ipfs start/stop
165 - test in ../t0195-noise.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 165 - test in ../t0195-noise.sh finishes
166 - test in ../t0195-noise.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 166 - test in ../t0195-noise.sh has a description
167 - test in ../t0195-noise.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 167 - test in ../t0195-noise.sh has matching ipfs start/stop
168 - test in ../t0088-repo-stat-symlink.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 168 - test in ../t0088-repo-stat-symlink.sh finishes
169 - test in ../t0088-repo-stat-symlink.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 169 - test in ../t0088-repo-stat-symlink.sh has a description
170 - test in ../t0088-repo-stat-symlink.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 170 - test in ../t0088-repo-stat-symlink.sh has matching ipfs start/stop
171 - test in ../t0272-urlstore.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 171 - test in ../t0272-urlstore.sh finishes
172 - test in ../t0272-urlstore.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 172 - test in ../t0272-urlstore.sh has a description
173 - test in ../t0272-urlstore.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 173 - test in ../t0272-urlstore.sh has matching ipfs start/stop
174 - test in ../t0024-datastore-config.sh finishes Success 0.009
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 174 - test in ../t0024-datastore-config.sh finishes
175 - test in ../t0024-datastore-config.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 175 - test in ../t0024-datastore-config.sh has a description
176 - test in ../t0024-datastore-config.sh has matching ipfs start/stop Success 0.011
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 176 - test in ../t0024-datastore-config.sh has matching ipfs start/stop
177 - test in ../t0101-iptb-name.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 177 - test in ../t0101-iptb-name.sh finishes
178 - test in ../t0101-iptb-name.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 178 - test in ../t0101-iptb-name.sh has a description
179 - test in ../t0101-iptb-name.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 179 - test in ../t0101-iptb-name.sh has matching ipfs start/stop
180 - test in ../t0023-shutdown.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 180 - test in ../t0023-shutdown.sh finishes
181 - test in ../t0023-shutdown.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 181 - test in ../t0023-shutdown.sh has a description
182 - test in ../t0184-http-proxy-over-p2p.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 182 - test in ../t0184-http-proxy-over-p2p.sh finishes
183 - test in ../t0184-http-proxy-over-p2p.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 183 - test in ../t0184-http-proxy-over-p2p.sh has a description
184 - test in ../t0184-http-proxy-over-p2p.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 184 - test in ../t0184-http-proxy-over-p2p.sh has matching ipfs start/stop
185 - test in ../t0095-refs.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 185 - test in ../t0095-refs.sh finishes
186 - test in ../t0095-refs.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 186 - test in ../t0095-refs.sh has a description
187 - test in ../t0095-refs.sh has matching ipfs start/stop Success 0.011
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 187 - test in ../t0095-refs.sh has matching ipfs start/stop
188 - test in ../t0030-mount.sh finishes Success 0.009
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 188 - test in ../t0030-mount.sh finishes
189 - test in ../t0030-mount.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 189 - test in ../t0030-mount.sh has a description
190 - test in ../t0030-mount.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 190 - test in ../t0030-mount.sh has matching ipfs start/stop
191 - test in ../t0084-repo-read-rehash.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 191 - test in ../t0084-repo-read-rehash.sh finishes
192 - test in ../t0084-repo-read-rehash.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 192 - test in ../t0084-repo-read-rehash.sh has a description
193 - test in ../t0084-repo-read-rehash.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 193 - test in ../t0084-repo-read-rehash.sh has matching ipfs start/stop
194 - test in ../t0280-plugin-git.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 194 - test in ../t0280-plugin-git.sh finishes
195 - test in ../t0280-plugin-git.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 195 - test in ../t0280-plugin-git.sh has a description
196 - test in ../t0280-plugin-git.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 196 - test in ../t0280-plugin-git.sh has matching ipfs start/stop
197 - test in ../t0001-tests-work.sh finishes Success 0.009
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 197 - test in ../t0001-tests-work.sh finishes
198 - test in ../t0001-tests-work.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 198 - test in ../t0001-tests-work.sh has a description
199 - test in ../t0001-tests-work.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 199 - test in ../t0001-tests-work.sh has matching ipfs start/stop
200 - test in ../t0044-add-symlink.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 200 - test in ../t0044-add-symlink.sh finishes
201 - test in ../t0044-add-symlink.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 201 - test in ../t0044-add-symlink.sh has a description
202 - test in ../t0044-add-symlink.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 202 - test in ../t0044-add-symlink.sh has matching ipfs start/stop
203 - test in ../t0087-repo-robust-gc.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 203 - test in ../t0087-repo-robust-gc.sh finishes
204 - test in ../t0087-repo-robust-gc.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 204 - test in ../t0087-repo-robust-gc.sh has a description
205 - test in ../t0087-repo-robust-gc.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 205 - test in ../t0087-repo-robust-gc.sh has matching ipfs start/stop
206 - test in ../t0231-channel-streaming.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 206 - test in ../t0231-channel-streaming.sh finishes
207 - test in ../t0231-channel-streaming.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 207 - test in ../t0231-channel-streaming.sh has a description
208 - test in ../t0231-channel-streaming.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 208 - test in ../t0231-channel-streaming.sh has matching ipfs start/stop
209 - test in ../t0131-multinode-client-routing.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 209 - test in ../t0131-multinode-client-routing.sh finishes
210 - test in ../t0131-multinode-client-routing.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 210 - test in ../t0131-multinode-client-routing.sh has a description
211 - test in ../t0131-multinode-client-routing.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 211 - test in ../t0131-multinode-client-routing.sh has matching ipfs start/stop
212 - test in ../t0252-files-gc.sh finishes Success 0.012
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 212 - test in ../t0252-files-gc.sh finishes
213 - test in ../t0252-files-gc.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 213 - test in ../t0252-files-gc.sh has a description
214 - test in ../t0252-files-gc.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 214 - test in ../t0252-files-gc.sh has matching ipfs start/stop
215 - test in ../t0500-issues-and-regressions-offline.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 215 - test in ../t0500-issues-and-regressions-offline.sh finishes
216 - test in ../t0500-issues-and-regressions-offline.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 216 - test in ../t0500-issues-and-regressions-offline.sh has a description
217 - test in ../t0500-issues-and-regressions-offline.sh has matching ipfs start/stop Success 0.010
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 217 - test in ../t0500-issues-and-regressions-offline.sh has matching ipfs start/stop
218 - test in ../t0165-keystore.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 218 - test in ../t0165-keystore.sh finishes
219 - test in ../t0165-keystore.sh has a description Success 0.007
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 219 - test in ../t0165-keystore.sh has a description
220 - test in ../t0165-keystore.sh has matching ipfs start/stop Success 0.011
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 220 - test in ../t0165-keystore.sh has matching ipfs start/stop
221 - test in ../t0280-plugin-peerlog.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 221 - test in ../t0280-plugin-peerlog.sh finishes
222 - test in ../t0280-plugin-peerlog.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 222 - test in ../t0280-plugin-peerlog.sh has a description
223 - test in ../t0280-plugin-peerlog.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 223 - test in ../t0280-plugin-peerlog.sh has matching ipfs start/stop
224 - test in ../t0320-pubsub.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 224 - test in ../t0320-pubsub.sh finishes
225 - test in ../t0320-pubsub.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 225 - test in ../t0320-pubsub.sh has a description
226 - test in ../t0320-pubsub.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 226 - test in ../t0320-pubsub.sh has matching ipfs start/stop
227 - test in ../t0280-plugin-fx.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 227 - test in ../t0280-plugin-fx.sh finishes
228 - test in ../t0280-plugin-fx.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 228 - test in ../t0280-plugin-fx.sh has a description
229 - test in ../t0280-plugin-fx.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 229 - test in ../t0280-plugin-fx.sh has matching ipfs start/stop
230 - test in ../t0047-add-mode-mtime.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 230 - test in ../t0047-add-mode-mtime.sh finishes
231 - test in ../t0047-add-mode-mtime.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 231 - test in ../t0047-add-mode-mtime.sh has a description
232 - test in ../t0047-add-mode-mtime.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 232 - test in ../t0047-add-mode-mtime.sh has matching ipfs start/stop
233 - test in ../t0063-external.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 233 - test in ../t0063-external.sh finishes
234 - test in ../t0063-external.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 234 - test in ../t0063-external.sh has a description
235 - test in ../t0063-external.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 235 - test in ../t0063-external.sh has matching ipfs start/stop
236 - test in ../t0050-block.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 236 - test in ../t0050-block.sh finishes
237 - test in ../t0050-block.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 237 - test in ../t0050-block.sh has a description
238 - test in ../t0050-block.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 238 - test in ../t0050-block.sh has matching ipfs start/stop
239 - test in ../t0065-active-requests.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 239 - test in ../t0065-active-requests.sh finishes
240 - test in ../t0065-active-requests.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 240 - test in ../t0065-active-requests.sh has a description
241 - test in ../t0065-active-requests.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 241 - test in ../t0065-active-requests.sh has matching ipfs start/stop
242 - test in ../t0015-basic-sh-functions.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 242 - test in ../t0015-basic-sh-functions.sh finishes
243 - test in ../t0015-basic-sh-functions.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 243 - test in ../t0015-basic-sh-functions.sh has a description
244 - test in ../t0015-basic-sh-functions.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 244 - test in ../t0015-basic-sh-functions.sh has matching ipfs start/stop
245 - test in ../t0026-id.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 245 - test in ../t0026-id.sh finishes
246 - test in ../t0026-id.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 246 - test in ../t0026-id.sh has a description
247 - test in ../t0026-id.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 247 - test in ../t0026-id.sh has matching ipfs start/stop
248 - test in ../t0185-autonat.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 248 - test in ../t0185-autonat.sh finishes
249 - test in ../t0185-autonat.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 249 - test in ../t0185-autonat.sh has a description
250 - test in ../t0185-autonat.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 250 - test in ../t0185-autonat.sh has matching ipfs start/stop
251 - test in ../t0270-filestore.sh finishes Success 0.008
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 251 - test in ../t0270-filestore.sh finishes
252 - test in ../t0270-filestore.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 252 - test in ../t0270-filestore.sh has a description
253 - test in ../t0270-filestore.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 253 - test in ../t0270-filestore.sh has matching ipfs start/stop
254 - test in ../t0401-api-browser-security.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 254 - test in ../t0401-api-browser-security.sh finishes
255 - test in ../t0401-api-browser-security.sh has a description Success 0.008
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 255 - test in ../t0401-api-browser-security.sh has a description
256 - test in ../t0401-api-browser-security.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 256 - test in ../t0401-api-browser-security.sh has matching ipfs start/stop
257 - test in ../t0045-ls.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 257 - test in ../t0045-ls.sh finishes
258 - test in ../t0045-ls.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 258 - test in ../t0045-ls.sh has a description
259 - test in ../t0045-ls.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 259 - test in ../t0045-ls.sh has matching ipfs start/stop
260 - test in ../t0054-dag-car-import-export.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 260 - test in ../t0054-dag-car-import-export.sh finishes
261 - test in ../t0054-dag-car-import-export.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 261 - test in ../t0054-dag-car-import-export.sh has a description
262 - test in ../t0054-dag-car-import-export.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 262 - test in ../t0054-dag-car-import-export.sh has matching ipfs start/stop
263 - test in ../t0119-prometheus.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 263 - test in ../t0119-prometheus.sh finishes
264 - test in ../t0119-prometheus.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 264 - test in ../t0119-prometheus.sh has a description
265 - test in ../t0119-prometheus.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 265 - test in ../t0119-prometheus.sh has matching ipfs start/stop
266 - test in ../t0043-add-w.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 266 - test in ../t0043-add-w.sh finishes
267 - test in ../t0043-add-w.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 267 - test in ../t0043-add-w.sh has a description
268 - test in ../t0043-add-w.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 268 - test in ../t0043-add-w.sh has matching ipfs start/stop
269 - test in ../t0160-resolve.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 269 - test in ../t0160-resolve.sh finishes
270 - test in ../t0160-resolve.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 270 - test in ../t0160-resolve.sh has a description
271 - test in ../t0160-resolve.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 271 - test in ../t0160-resolve.sh has matching ipfs start/stop
272 - test in ../t0086-repo-verify.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 272 - test in ../t0086-repo-verify.sh finishes
273 - test in ../t0086-repo-verify.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 273 - test in ../t0086-repo-verify.sh has a description
274 - test in ../t0086-repo-verify.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 274 - test in ../t0086-repo-verify.sh has matching ipfs start/stop
275 - test in ../t0275-cid-security.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 275 - test in ../t0275-cid-security.sh finishes
276 - test in ../t0275-cid-security.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 276 - test in ../t0275-cid-security.sh has a description
277 - test in ../t0275-cid-security.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 277 - test in ../t0275-cid-security.sh has matching ipfs start/stop
278 - test in ../t0280-plugin-dag-jose.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 278 - test in ../t0280-plugin-dag-jose.sh finishes
279 - test in ../t0280-plugin-dag-jose.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 279 - test in ../t0280-plugin-dag-jose.sh has a description
280 - test in ../t0280-plugin-dag-jose.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 280 - test in ../t0280-plugin-dag-jose.sh has matching ipfs start/stop
281 - test in ../t0090-get.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 281 - test in ../t0090-get.sh finishes
282 - test in ../t0090-get.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 282 - test in ../t0090-get.sh has a description
283 - test in ../t0090-get.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 283 - test in ../t0090-get.sh has matching ipfs start/stop
284 - test in ../t0040-add-and-cat.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 284 - test in ../t0040-add-and-cat.sh finishes
285 - test in ../t0040-add-and-cat.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 285 - test in ../t0040-add-and-cat.sh has a description
286 - test in ../t0040-add-and-cat.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 286 - test in ../t0040-add-and-cat.sh has matching ipfs start/stop
287 - test in ../t0046-id-hash.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 287 - test in ../t0046-id-hash.sh finishes
288 - test in ../t0046-id-hash.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 288 - test in ../t0046-id-hash.sh has a description
289 - test in ../t0046-id-hash.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 289 - test in ../t0046-id-hash.sh has matching ipfs start/stop
290 - test in ../t0064-api-file.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 290 - test in ../t0064-api-file.sh finishes
291 - test in ../t0064-api-file.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 291 - test in ../t0064-api-file.sh has a description
292 - test in ../t0064-api-file.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 292 - test in ../t0064-api-file.sh has matching ipfs start/stop
293 - test in ../t0082-repo-gc-auto.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 293 - test in ../t0082-repo-gc-auto.sh finishes
294 - test in ../t0082-repo-gc-auto.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 294 - test in ../t0082-repo-gc-auto.sh has a description
295 - test in ../t0082-repo-gc-auto.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 295 - test in ../t0082-repo-gc-auto.sh has matching ipfs start/stop
296 - test in ../t0181-private-network.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 296 - test in ../t0181-private-network.sh finishes
297 - test in ../t0181-private-network.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 297 - test in ../t0181-private-network.sh has a description
298 - test in ../t0181-private-network.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 298 - test in ../t0181-private-network.sh has matching ipfs start/stop
299 - test in ../t0182-circuit-relay.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 299 - test in ../t0182-circuit-relay.sh finishes
300 - test in ../t0182-circuit-relay.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 300 - test in ../t0182-circuit-relay.sh has a description
301 - test in ../t0182-circuit-relay.sh has matching ipfs start/stop Success 0.006
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 301 - test in ../t0182-circuit-relay.sh has matching ipfs start/stop
302 - test in ../t0191-webtransport-ping.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 302 - test in ../t0191-webtransport-ping.sh finishes
303 - test in ../t0191-webtransport-ping.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 303 - test in ../t0191-webtransport-ping.sh has a description
304 - test in ../t0191-webtransport-ping.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 304 - test in ../t0191-webtransport-ping.sh has matching ipfs start/stop
305 - test in ../t0400-api-no-gateway.sh finishes Success 0.007
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 305 - test in ../t0400-api-no-gateway.sh finishes
306 - test in ../t0400-api-no-gateway.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 306 - test in ../t0400-api-no-gateway.sh has a description
307 - test in ../t0400-api-no-gateway.sh has matching ipfs start/stop Success 0.009
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 307 - test in ../t0400-api-no-gateway.sh has matching ipfs start/stop
308 - test in ../t0109-gateway-web-_redirects.sh finishes Success 0.006
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 308 - test in ../t0109-gateway-web-_redirects.sh finishes
309 - test in ../t0109-gateway-web-_redirects.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 309 - test in ../t0109-gateway-web-_redirects.sh has a description
310 - test in ../t0109-gateway-web-_redirects.sh has matching ipfs start/stop Success 0.008
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 310 - test in ../t0109-gateway-web-_redirects.sh has matching ipfs start/stop
311 - test in ../t0116-gateway-cache.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 311 - test in ../t0116-gateway-cache.sh finishes
312 - test in ../t0116-gateway-cache.sh has a description Success 0.006
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 312 - test in ../t0116-gateway-cache.sh has a description
313 - test in ../t0116-gateway-cache.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 313 - test in ../t0116-gateway-cache.sh has matching ipfs start/stop
314 - test in ../t0025-datastores.sh finishes Success 0.005
System.out »
expecting success: 
      grep -q "^test_done\b" "$file"
    
ok 314 - test in ../t0025-datastores.sh finishes
315 - test in ../t0025-datastores.sh has a description Success 0.005
System.out »
expecting success: 
              grep -q "^test_description=" "$file"
            
ok 315 - test in ../t0025-datastores.sh has a description
316 - test in ../t0025-datastores.sh has matching ipfs start/stop Success 0.007
System.out »
expecting success: 
      awk "/^ *[^#]*test_launch_ipfs_daemon/ { if (count != 0) { exit(1) }; count++ } /^ *[^#]*test_kill_ipfs_daemon/ { if (count != 1) { exit(1) }; count-- } END { exit(count) }" "$file"
    
ok 316 - test in ../t0025-datastores.sh has matching ipfs start/stop
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - test in ../t0051-object.sh finishes
ok 2 - test in ../t0051-object.sh has a description
ok 3 - test in ../t0051-object.sh has matching ipfs start/stop
ok 4 - test in ../t0062-daemon-api.sh finishes
ok 5 - test in ../t0062-daemon-api.sh has a description
ok 6 - test in ../t0062-daemon-api.sh has matching ipfs start/stop
ok 7 - test in ../t0190-quic-ping.sh finishes
ok 8 - test in ../t0190-quic-ping.sh has a description
ok 9 - test in ../t0190-quic-ping.sh has matching ipfs start/stop
ok 10 - test in ../t0002-docker-image.sh finishes
ok 11 - test in ../t0002-docker-image.sh has a description
ok 12 - test in ../t0002-docker-image.sh has matching ipfs start/stop
ok 13 - test in ../t0295-multibase.sh finishes
ok 14 - test in ../t0295-multibase.sh has a description
ok 15 - test in ../t0295-multibase.sh has matching ipfs start/stop
ok 16 - test in ../t0060-daemon.sh finishes
ok 17 - test in ../t0060-daemon.sh has a description
ok 18 - test in ../t0276-cidv0v1.sh finishes
ok 19 - test in ../t0276-cidv0v1.sh has a description
ok 20 - test in ../t0276-cidv0v1.sh has matching ipfs start/stop
ok 21 - test in ../t0114-gateway-subdomains.sh finishes
ok 22 - test in ../t0114-gateway-subdomains.sh has a description
ok 23 - test in ../t0114-gateway-subdomains.sh has matching ipfs start/stop
ok 24 - test in ../t0600-issues-and-regressions-online.sh finishes
ok 25 - test in ../t0600-issues-and-regressions-online.sh has a description
ok 26 - test in ../t0600-issues-and-regressions-online.sh has matching ipfs start/stop
ok 27 - test in ../t0142-testfilter.sh finishes
ok 28 - test in ../t0142-testfilter.sh has a description
ok 29 - test in ../t0142-testfilter.sh has matching ipfs start/stop
ok 30 - test in ../t0141-addfilter.sh finishes
ok 31 - test in ../t0141-addfilter.sh has a description
ok 32 - test in ../t0141-addfilter.sh has matching ipfs start/stop
ok 33 - test in ../t0112-gateway-cors.sh finishes
ok 34 - test in ../t0112-gateway-cors.sh has a description
ok 35 - test in ../t0112-gateway-cors.sh has matching ipfs start/stop
ok 36 - test in ../t0230-channel-streaming-http-content-type.sh finishes
ok 37 - test in ../t0230-channel-streaming-http-content-type.sh has a description
ok 38 - test in ../t0230-channel-streaming-http-content-type.sh has matching ipfs start/stop
ok 39 - test in ../t0012-completion-fish.sh finishes
ok 40 - test in ../t0012-completion-fish.sh has a description
ok 41 - test in ../t0012-completion-fish.sh has matching ipfs start/stop
ok 42 - test in ../t0067-unix-api.sh finishes
ok 43 - test in ../t0067-unix-api.sh has a description
ok 44 - test in ../t0067-unix-api.sh has matching ipfs start/stop
ok 45 - test in ../t0021-config.sh finishes
ok 46 - test in ../t0021-config.sh has a description
ok 47 - test in ../t0021-config.sh has matching ipfs start/stop
ok 48 - test in ../t0042-add-skip.sh finishes
ok 49 - test in ../t0042-add-skip.sh has a description
ok 50 - test in ../t0042-add-skip.sh has matching ipfs start/stop
ok 51 - test in ../t0003-docker-migrate.sh finishes
ok 52 - test in ../t0003-docker-migrate.sh has a description
ok 53 - test in ../t0003-docker-migrate.sh has matching ipfs start/stop
ok 54 - test in ../t0271-filestore-utils.sh finishes
ok 55 - test in ../t0271-filestore-utils.sh has a description
ok 56 - test in ../t0271-filestore-utils.sh has matching ipfs start/stop
ok 57 - test in ../t0152-profile.sh finishes
ok 58 - test in ../t0152-profile.sh has a description
ok 59 - test in ../t0152-profile.sh has matching ipfs start/stop
ok 60 - test in ../t0080-repo.sh finishes
ok 61 - test in ../t0080-repo.sh has a description
ok 62 - test in ../t0080-repo.sh has matching ipfs start/stop
ok 63 - test in ../t0290-cid.sh finishes
ok 64 - test in ../t0290-cid.sh has a description
ok 65 - test in ../t0290-cid.sh has matching ipfs start/stop
ok 66 - test in ../t0061-daemon-opts.sh finishes
ok 67 - test in ../t0061-daemon-opts.sh has a description
ok 68 - test in ../t0061-daemon-opts.sh has matching ipfs start/stop
ok 69 - test in ../t0183-namesys-pubsub.sh finishes
ok 70 - test in ../t0183-namesys-pubsub.sh has a description
ok 71 - test in ../t0183-namesys-pubsub.sh has matching ipfs start/stop
ok 72 - test in ../t0063-daemon-init.sh finishes
ok 73 - test in ../t0063-daemon-init.sh has a description
ok 74 - test in ../t0063-daemon-init.sh has matching ipfs start/stop
ok 75 - test in ../t0800-blake3.sh finishes
ok 76 - test in ../t0800-blake3.sh has a description
ok 77 - test in ../t0800-blake3.sh has matching ipfs start/stop
ok 78 - test in ../t0070-user-config.sh finishes
ok 79 - test in ../t0070-user-config.sh has a description
ok 80 - test in ../t0070-user-config.sh has matching ipfs start/stop
ok 81 - test in ../t0140-swarm.sh finishes
ok 82 - test in ../t0140-swarm.sh has a description
ok 83 - test in ../t0140-swarm.sh has matching ipfs start/stop
ok 84 - test in ../t0260-sharding.sh finishes
ok 85 - test in ../t0260-sharding.sh has a description
ok 86 - test in ../t0260-sharding.sh has matching ipfs start/stop
ok 87 - test in ../t0251-files-flushing.sh finishes
ok 88 - test in ../t0251-files-flushing.sh has a description
ok 89 - test in ../t0251-files-flushing.sh has matching ipfs start/stop
ok 90 - test in ../t0250-files-api.sh finishes
ok 91 - test in ../t0250-files-api.sh has a description
ok 92 - test in ../t0250-files-api.sh has matching ipfs start/stop
ok 93 - test in ../t0053-dag.sh finishes
ok 94 - test in ../t0053-dag.sh has a description
ok 95 - test in ../t0053-dag.sh has matching ipfs start/stop
ok 96 - test in ../t0322-pubsub-http-rpc.sh finishes
ok 97 - test in ../t0322-pubsub-http-rpc.sh has a description
ok 98 - test in ../t0322-pubsub-http-rpc.sh has matching ipfs start/stop
ok 99 - test in ../t0150-clisuggest.sh finishes
ok 100 - test in ../t0150-clisuggest.sh has a description
ok 101 - test in ../t0150-clisuggest.sh has matching ipfs start/stop
ok 102 - test in ../t0236-cli-api-dns-resolve.sh finishes
ok 103 - test in ../t0236-cli-api-dns-resolve.sh has a description
ok 104 - test in ../t0236-cli-api-dns-resolve.sh has matching ipfs start/stop
ok 105 - test in ../t0055-dag-put-json-new-line.sh finishes
ok 106 - test in ../t0055-dag-put-json-new-line.sh has a description
ok 107 - test in ../t0055-dag-put-json-new-line.sh has matching ipfs start/stop
ok 108 - test in ../t0410-api-add.sh finishes
ok 109 - test in ../t0410-api-add.sh has a description
ok 110 - test in ../t0410-api-add.sh has matching ipfs start/stop
ok 111 - test in ../t0180-p2p.sh finishes
ok 112 - test in ../t0180-p2p.sh has a description
ok 113 - test in ../t0180-p2p.sh has matching ipfs start/stop
ok 114 - test in ../t0235-cli-request.sh finishes
ok 115 - test in ../t0235-cli-request.sh has a description
ok 116 - test in ../t0235-cli-request.sh has matching ipfs start/stop
ok 117 - test in ../t0120-bootstrap.sh finishes
ok 118 - test in ../t0120-bootstrap.sh has a description
ok 119 - test in ../t0120-bootstrap.sh has matching ipfs start/stop
ok 120 - test in ../t0052-object-diff.sh finishes
ok 121 - test in ../t0052-object-diff.sh has a description
ok 122 - test in ../t0052-object-diff.sh has matching ipfs start/stop
ok 123 - test in ../t0321-pubsub-gossipsub.sh finishes
ok 124 - test in ../t0321-pubsub-gossipsub.sh has a description
ok 125 - test in ../t0321-pubsub-gossipsub.sh has matching ipfs start/stop
ok 126 - test in ../t0081-repo-pinning.sh finishes
ok 127 - test in ../t0081-repo-pinning.sh has a description
ok 128 - test in ../t0081-repo-pinning.sh has matching ipfs start/stop
ok 129 - test in ../t0280-plugin.sh finishes
ok 130 - test in ../t0280-plugin.sh has a description
ok 131 - test in ../t0280-plugin.sh has matching ipfs start/stop
ok 132 - test in ../t0027-rotate.sh finishes
ok 133 - test in ../t0027-rotate.sh has a description
ok 134 - test in ../t0027-rotate.sh has matching ipfs start/stop
ok 135 - test in ../t0022-init-default.sh finishes
ok 136 - test in ../t0022-init-default.sh has a description
ok 137 - test in ../t0022-init-default.sh has matching ipfs start/stop
ok 138 - test in ../t0240-republisher.sh finishes
ok 139 - test in ../t0240-republisher.sh has a description
ok 140 - test in ../t0240-republisher.sh has matching ipfs start/stop
ok 141 - test in ../t0018-indent.sh finishes
ok 142 - test in ../t0018-indent.sh has a description
ok 143 - test in ../t0018-indent.sh has matching ipfs start/stop
ok 144 - test in ../t0121-bootstrap-iptb.sh finishes
ok 145 - test in ../t0121-bootstrap-iptb.sh has a description
ok 146 - test in ../t0121-bootstrap-iptb.sh has matching ipfs start/stop
ok 147 - test in ../t0032-mount-sharded.sh finishes
ok 148 - test in ../t0032-mount-sharded.sh has a description
ok 149 - test in ../t0032-mount-sharded.sh has matching ipfs start/stop
ok 150 - test in ../t0031-mount-publish.sh finishes
ok 151 - test in ../t0031-mount-publish.sh has a description
ok 152 - test in ../t0031-mount-publish.sh has matching ipfs start/stop
ok 153 - test in ../t0115-gateway-dir-listing.sh finishes
ok 154 - test in ../t0115-gateway-dir-listing.sh has a description
ok 155 - test in ../t0115-gateway-dir-listing.sh has matching ipfs start/stop
ok 156 - test in ../t0066-migration.sh finishes
ok 157 - test in ../t0066-migration.sh has a description
ok 158 - test in ../t0066-migration.sh has matching ipfs start/stop
ok 159 - test in ../t0220-bitswap.sh finishes
ok 160 - test in ../t0220-bitswap.sh has a description
ok 161 - test in ../t0220-bitswap.sh has matching ipfs start/stop
ok 162 - test in ../t0151-sysdiag.sh finishes
ok 163 - test in ../t0151-sysdiag.sh has a description
ok 164 - test in ../t0151-sysdiag.sh has matching ipfs start/stop
ok 165 - test in ../t0195-noise.sh finishes
ok 166 - test in ../t0195-noise.sh has a description
ok 167 - test in ../t0195-noise.sh has matching ipfs start/stop
ok 168 - test in ../t0088-repo-stat-symlink.sh finishes
ok 169 - test in ../t0088-repo-stat-symlink.sh has a description
ok 170 - test in ../t0088-repo-stat-symlink.sh has matching ipfs start/stop
ok 171 - test in ../t0272-urlstore.sh finishes
ok 172 - test in ../t0272-urlstore.sh has a description
ok 173 - test in ../t0272-urlstore.sh has matching ipfs start/stop
ok 174 - test in ../t0024-datastore-config.sh finishes
ok 175 - test in ../t0024-datastore-config.sh has a description
ok 176 - test in ../t0024-datastore-config.sh has matching ipfs start/stop
ok 177 - test in ../t0101-iptb-name.sh finishes
ok 178 - test in ../t0101-iptb-name.sh has a description
ok 179 - test in ../t0101-iptb-name.sh has matching ipfs start/stop
ok 180 - test in ../t0023-shutdown.sh finishes
ok 181 - test in ../t0023-shutdown.sh has a description
ok 182 - test in ../t0184-http-proxy-over-p2p.sh finishes
ok 183 - test in ../t0184-http-proxy-over-p2p.sh has a description
ok 184 - test in ../t0184-http-proxy-over-p2p.sh has matching ipfs start/stop
ok 185 - test in ../t0095-refs.sh finishes
ok 186 - test in ../t0095-refs.sh has a description
ok 187 - test in ../t0095-refs.sh has matching ipfs start/stop
ok 188 - test in ../t0030-mount.sh finishes
ok 189 - test in ../t0030-mount.sh has a description
ok 190 - test in ../t0030-mount.sh has matching ipfs start/stop
ok 191 - test in ../t0084-repo-read-rehash.sh finishes
ok 192 - test in ../t0084-repo-read-rehash.sh has a description
ok 193 - test in ../t0084-repo-read-rehash.sh has matching ipfs start/stop
ok 194 - test in ../t0280-plugin-git.sh finishes
ok 195 - test in ../t0280-plugin-git.sh has a description
ok 196 - test in ../t0280-plugin-git.sh has matching ipfs start/stop
ok 197 - test in ../t0001-tests-work.sh finishes
ok 198 - test in ../t0001-tests-work.sh has a description
ok 199 - test in ../t0001-tests-work.sh has matching ipfs start/stop
ok 200 - test in ../t0044-add-symlink.sh finishes
ok 201 - test in ../t0044-add-symlink.sh has a description
ok 202 - test in ../t0044-add-symlink.sh has matching ipfs start/stop
ok 203 - test in ../t0087-repo-robust-gc.sh finishes
ok 204 - test in ../t0087-repo-robust-gc.sh has a description
ok 205 - test in ../t0087-repo-robust-gc.sh has matching ipfs start/stop
ok 206 - test in ../t0231-channel-streaming.sh finishes
ok 207 - test in ../t0231-channel-streaming.sh has a description
ok 208 - test in ../t0231-channel-streaming.sh has matching ipfs start/stop
ok 209 - test in ../t0131-multinode-client-routing.sh finishes
ok 210 - test in ../t0131-multinode-client-routing.sh has a description
ok 211 - test in ../t0131-multinode-client-routing.sh has matching ipfs start/stop
ok 212 - test in ../t0252-files-gc.sh finishes
ok 213 - test in ../t0252-files-gc.sh has a description
ok 214 - test in ../t0252-files-gc.sh has matching ipfs start/stop
ok 215 - test in ../t0500-issues-and-regressions-offline.sh finishes
ok 216 - test in ../t0500-issues-and-regressions-offline.sh has a description
ok 217 - test in ../t0500-issues-and-regressions-offline.sh has matching ipfs start/stop
ok 218 - test in ../t0165-keystore.sh finishes
ok 219 - test in ../t0165-keystore.sh has a description
ok 220 - test in ../t0165-keystore.sh has matching ipfs start/stop
ok 221 - test in ../t0280-plugin-peerlog.sh finishes
ok 222 - test in ../t0280-plugin-peerlog.sh has a description
ok 223 - test in ../t0280-plugin-peerlog.sh has matching ipfs start/stop
ok 224 - test in ../t0320-pubsub.sh finishes
ok 225 - test in ../t0320-pubsub.sh has a description
ok 226 - test in ../t0320-pubsub.sh has matching ipfs start/stop
ok 227 - test in ../t0280-plugin-fx.sh finishes
ok 228 - test in ../t0280-plugin-fx.sh has a description
ok 229 - test in ../t0280-plugin-fx.sh has matching ipfs start/stop
ok 230 - test in ../t0047-add-mode-mtime.sh finishes
ok 231 - test in ../t0047-add-mode-mtime.sh has a description
ok 232 - test in ../t0047-add-mode-mtime.sh has matching ipfs start/stop
ok 233 - test in ../t0063-external.sh finishes
ok 234 - test in ../t0063-external.sh has a description
ok 235 - test in ../t0063-external.sh has matching ipfs start/stop
ok 236 - test in ../t0050-block.sh finishes
ok 237 - test in ../t0050-block.sh has a description
ok 238 - test in ../t0050-block.sh has matching ipfs start/stop
ok 239 - test in ../t0065-active-requests.sh finishes
ok 240 - test in ../t0065-active-requests.sh has a description
ok 241 - test in ../t0065-active-requests.sh has matching ipfs start/stop
ok 242 - test in ../t0015-basic-sh-functions.sh finishes
ok 243 - test in ../t0015-basic-sh-functions.sh has a description
ok 244 - test in ../t0015-basic-sh-functions.sh has matching ipfs start/stop
ok 245 - test in ../t0026-id.sh finishes
ok 246 - test in ../t0026-id.sh has a description
ok 247 - test in ../t0026-id.sh has matching ipfs start/stop
ok 248 - test in ../t0185-autonat.sh finishes
ok 249 - test in ../t0185-autonat.sh has a description
ok 250 - test in ../t0185-autonat.sh has matching ipfs start/stop
ok 251 - test in ../t0270-filestore.sh finishes
ok 252 - test in ../t0270-filestore.sh has a description
ok 253 - test in ../t0270-filestore.sh has matching ipfs start/stop
ok 254 - test in ../t0401-api-browser-security.sh finishes
ok 255 - test in ../t0401-api-browser-security.sh has a description
ok 256 - test in ../t0401-api-browser-security.sh has matching ipfs start/stop
ok 257 - test in ../t0045-ls.sh finishes
ok 258 - test in ../t0045-ls.sh has a description
ok 259 - test in ../t0045-ls.sh has matching ipfs start/stop
ok 260 - test in ../t0054-dag-car-import-export.sh finishes
ok 261 - test in ../t0054-dag-car-import-export.sh has a description
ok 262 - test in ../t0054-dag-car-import-export.sh has matching ipfs start/stop
ok 263 - test in ../t0119-prometheus.sh finishes
ok 264 - test in ../t0119-prometheus.sh has a description
ok 265 - test in ../t0119-prometheus.sh has matching ipfs start/stop
ok 266 - test in ../t0043-add-w.sh finishes
ok 267 - test in ../t0043-add-w.sh has a description
ok 268 - test in ../t0043-add-w.sh has matching ipfs start/stop
ok 269 - test in ../t0160-resolve.sh finishes
ok 270 - test in ../t0160-resolve.sh has a description
ok 271 - test in ../t0160-resolve.sh has matching ipfs start/stop
ok 272 - test in ../t0086-repo-verify.sh finishes
ok 273 - test in ../t0086-repo-verify.sh has a description
ok 274 - test in ../t0086-repo-verify.sh has matching ipfs start/stop
ok 275 - test in ../t0275-cid-security.sh finishes
ok 276 - test in ../t0275-cid-security.sh has a description
ok 277 - test in ../t0275-cid-security.sh has matching ipfs start/stop
ok 278 - test in ../t0280-plugin-dag-jose.sh finishes
ok 279 - test in ../t0280-plugin-dag-jose.sh has a description
ok 280 - test in ../t0280-plugin-dag-jose.sh has matching ipfs start/stop
ok 281 - test in ../t0090-get.sh finishes
ok 282 - test in ../t0090-get.sh has a description
ok 283 - test in ../t0090-get.sh has matching ipfs start/stop
ok 284 - test in ../t0040-add-and-cat.sh finishes
ok 285 - test in ../t0040-add-and-cat.sh has a description
ok 286 - test in ../t0040-add-and-cat.sh has matching ipfs start/stop
ok 287 - test in ../t0046-id-hash.sh finishes
ok 288 - test in ../t0046-id-hash.sh has a description
ok 289 - test in ../t0046-id-hash.sh has matching ipfs start/stop
ok 290 - test in ../t0064-api-file.sh finishes
ok 291 - test in ../t0064-api-file.sh has a description
ok 292 - test in ../t0064-api-file.sh has matching ipfs start/stop
ok 293 - test in ../t0082-repo-gc-auto.sh finishes
ok 294 - test in ../t0082-repo-gc-auto.sh has a description
ok 295 - test in ../t0082-repo-gc-auto.sh has matching ipfs start/stop
ok 296 - test in ../t0181-private-network.sh finishes
ok 297 - test in ../t0181-private-network.sh has a description
ok 298 - test in ../t0181-private-network.sh has matching ipfs start/stop
ok 299 - test in ../t0182-circuit-relay.sh finishes
ok 300 - test in ../t0182-circuit-relay.sh has a description
ok 301 - test in ../t0182-circuit-relay.sh has matching ipfs start/stop
ok 302 - test in ../t0191-webtransport-ping.sh finishes
ok 303 - test in ../t0191-webtransport-ping.sh has a description
ok 304 - test in ../t0191-webtransport-ping.sh has matching ipfs start/stop
ok 305 - test in ../t0400-api-no-gateway.sh finishes
ok 306 - test in ../t0400-api-no-gateway.sh has a description
ok 307 - test in ../t0400-api-no-gateway.sh has matching ipfs start/stop
ok 308 - test in ../t0109-gateway-web-_redirects.sh finishes
ok 309 - test in ../t0109-gateway-web-_redirects.sh has a description
ok 310 - test in ../t0109-gateway-web-_redirects.sh has matching ipfs start/stop
ok 311 - test in ../t0116-gateway-cache.sh finishes
ok 312 - test in ../t0116-gateway-cache.sh has a description
ok 313 - test in ../t0116-gateway-cache.sh has matching ipfs start/stop
ok 314 - test in ../t0025-datastores.sh finishes
ok 315 - test in ../t0025-datastores.sh has a description
ok 316 - test in ../t0025-datastores.sh has matching ipfs start/stop

Back to top

TestCase t0002-docker-image

Name Status Type Time(s)
1 - 'docker --version' works Success 0.023
System.out »
expecting success: 
  docker --version >actual

ok 1 - 'docker --version' works
2 - 'docker --version' output looks good Success 0.007
System.out »
expecting success: 
  egrep "^Docker version" actual

Docker version 28.3.3, build 980b856
ok 2 - 'docker --version' output looks good
3 - docker image build succeeds Success 146.707
System.out »
expecting success: 
  docker_build "$IMAGE_TAG" "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR" ||
  test_fsh echo "TEST_TESTS_DIR: $TEST_TESTS_DIR" ||
  test_fsh echo "APP_ROOT_DIR : $APP_ROOT_DIR"

ok 3 - docker image build succeeds
System.err »
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 3.85kB done
#1 DONE 0.0s

#2 resolve image config for docker-image://docker.io/docker/dockerfile:1
#2 DONE 0.8s

#3 docker-image://docker.io/docker/dockerfile:1@sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6
#3 resolve docker.io/docker/dockerfile:1@sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6 done
#3 sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6 8.40kB / 8.40kB done
#3 sha256:62b0eac4b38b65f257ba2525a1bc87978b5e339d6133b5daef1bde40fe7aa10f 850B / 850B done
#3 sha256:6742480c08d7878bbb82a5f5b55d7cb17c5dea60d2068cb2bd37994f3a5c680e 1.33kB / 1.33kB done
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0B / 13.57MB 0.1s
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 12.58MB / 13.57MB 0.4s
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 13.57MB / 13.57MB 0.4s done
#3 extracting sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0.1s
#3 extracting sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0.2s done
#3 DONE 0.7s

#4 [internal] load metadata for docker.io/library/debian:bookworm-slim
#4 DONE 0.4s

#5 [internal] load metadata for docker.io/library/busybox:stable-glibc
#5 ...

#6 [internal] load metadata for docker.io/library/golang:1.25
#6 DONE 0.7s

#5 [internal] load metadata for docker.io/library/busybox:stable-glibc
#5 DONE 0.7s

#7 [internal] load .dockerignore
#7 transferring context: 297B done
#7 DONE 0.0s

#8 [stage-2  1/10] FROM docker.io/library/busybox:stable-glibc@sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc
#8 resolve docker.io/library/busybox:stable-glibc@sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc 0.0s done
#8 sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5 0B / 2.21MB 0.1s
#8 sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc 8.86kB / 8.86kB done
#8 sha256:0ad610868746fa822202c2052bb37f61272524ff4a4a3921edeeec7cd0a88c10 610B / 610B done
#8 sha256:114f4abb67995cfe8e368760f3bc8a1d00e12ac9883c7c304d80987f24452e75 459B / 459B done
#8 sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5 2.21MB / 2.21MB 0.3s done
#8 extracting sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5
#8 extracting sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5 0.1s done
#8 DONE 0.5s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 resolve docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be 0.0s done
#9 sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be 9.70kB / 9.70kB done
#9 sha256:fb4095b65a7bb89f039def7e33d7b90095d2c25f34597748758a6f209eead7ff 2.32kB / 2.32kB done
#9 sha256:220391c4f8b385f5e5476947cb365712c3ddc19c905b3573ee87560be0e2bcf5 3.04kB / 3.04kB done
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 13.63MB / 49.29MB 0.5s
#9 sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 16.78MB / 25.61MB 0.5s
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 0B / 67.78MB 0.5s
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 16.78MB / 49.29MB 0.6s
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 30.41MB / 49.29MB 0.7s
#9 sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 24.12MB / 25.61MB 0.7s
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 37.75MB / 49.29MB 0.8s
#9 sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 25.61MB / 25.61MB 0.7s done
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 4.19MB / 67.78MB 0.8s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 0B / 102.17MB 0.8s
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 47.19MB / 49.29MB 0.9s
#9 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 49.29MB / 49.29MB 1.1s done
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 17.83MB / 67.78MB 1.1s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 0B / 60.16MB 1.1s
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 22.02MB / 67.78MB 1.2s
#9 extracting sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 32.51MB / 67.78MB 1.3s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 8.39MB / 102.17MB 1.4s
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 49.28MB / 67.78MB 1.5s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 16.78MB / 102.17MB 1.5s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 15.73MB / 60.16MB 1.5s
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 66.06MB / 67.78MB 1.7s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 32.51MB / 60.16MB 1.7s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 32.51MB / 102.17MB 1.8s
#9 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 67.78MB / 67.78MB 1.8s done
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 37.75MB / 60.16MB 1.9s
#9 sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e 0B / 127B 1.9s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 45.09MB / 102.17MB 2.0s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 46.14MB / 60.16MB 2.0s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 50.33MB / 102.17MB 2.1s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 50.33MB / 60.16MB 2.1s
#9 sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e 127B / 127B 2.0s done
#9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0B / 32B 2.1s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 61.87MB / 102.17MB 2.3s
#9 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 60.16MB / 60.16MB 2.3s done
#9 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 2.3s done
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 77.59MB / 102.17MB 2.6s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 83.89MB / 102.17MB 2.8s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 89.13MB / 102.17MB 2.9s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 96.47MB / 102.17MB 3.0s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 102.17MB / 102.17MB 3.2s
#9 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 102.17MB / 102.17MB 3.2s done
#9 extracting sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 3.0s done
#9 extracting sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361
#9 ...

#10 [internal] load build context
#10 transferring context: 454.51MB 4.6s done
#10 DONE 4.7s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 ...

#11 [utilities 1/2] FROM docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421
#11 resolve docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421 0.0s done
#11 sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421 8.56kB / 8.56kB done
#11 sha256:74a21da88cf4b2e8fde34558376153c5cd80b00ca81da2e659387e76524edc73 1.02kB / 1.02kB done
#11 sha256:61cd928eb3eca3230a69ed2f2315c41a5655d2d1f3daa76d34034c3548df9320 453B / 453B done
#11 sha256:84a2afebaf4de2e8eb885634a69abd0087b79c947c53fa4f0481235d6dfadc6c 28.24MB / 28.24MB 2.9s done
#11 extracting sha256:84a2afebaf4de2e8eb885634a69abd0087b79c947c53fa4f0481235d6dfadc6c 2.0s done
#11 DONE 5.1s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 extracting sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 1.0s done
#9 extracting sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392
#9 extracting sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 3.4s done
#9 extracting sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483
#9 extracting sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 4.4s done
#9 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6
#9 ...

#12 [utilities 2/2] RUN set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		tini 		gosu     fuse     ca-certificates 	; 	apt-get clean; 	rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#12 0.173 + apt-get update
#12 0.203 Get:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
#12 0.214 Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
#12 0.214 Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
#12 0.285 Get:4 http://deb.debian.org/debian bookworm/main amd64 Packages [8792 kB]
#12 0.368 Get:5 http://deb.debian.org/debian bookworm-updates/main amd64 Packages [6924 B]
#12 0.402 Get:6 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [297 kB]
#12 1.718 Fetched 9350 kB in 2s (6151 kB/s)
#12 1.718 Reading package lists...
#12 2.401 + apt-get install -y --no-install-recommends tini gosu fuse ca-certificates
#12 2.412 Reading package lists...
#12 3.317 Building dependency tree...
#12 3.503 Reading state information...
#12 3.708 The following additional packages will be installed:
#12 3.709   libfuse2 libssl3 openssl
#12 3.775 The following NEW packages will be installed:
#12 3.777   ca-certificates fuse gosu libfuse2 libssl3 openssl tini
#12 3.803 0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
#12 3.803 Need to get 4831 kB of archives.
#12 3.803 After this operation, 12.4 MB of additional disk space will be used.
#12 3.803 Get:1 http://deb.debian.org/debian-security bookworm-security/main amd64 libssl3 amd64 3.0.18-1~deb12u2 [2030 kB]
#12 3.818 Get:2 http://deb.debian.org/debian-security bookworm-security/main amd64 openssl amd64 3.0.18-1~deb12u2 [1433 kB]
#12 3.831 Get:3 http://deb.debian.org/debian bookworm/main amd64 ca-certificates all 20230311+deb12u1 [155 kB]
#12 3.832 Get:4 http://deb.debian.org/debian bookworm/main amd64 libfuse2 amd64 2.9.9-6+b1 [119 kB]
#12 3.833 Get:5 http://deb.debian.org/debian bookworm/main amd64 fuse amd64 2.9.9-6+b1 [61.3 kB]
#12 3.834 Get:6 http://deb.debian.org/debian bookworm/main amd64 gosu amd64 1.14-1+b10 [766 kB]
#12 3.839 Get:7 http://deb.debian.org/debian bookworm/main amd64 tini amd64 0.19.0-1+b3 [267 kB]
#12 4.002 debconf: delaying package configuration, since apt-utils is not installed
#12 4.041 Fetched 4831 kB in 0s (87.7 MB/s)
#12 4.068 Selecting previously unselected package libssl3:amd64.
#12 4.068 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 6096 files and directories currently installed.)
#12 4.075 Preparing to unpack .../0-libssl3_3.0.18-1~deb12u2_amd64.deb ...
#12 4.083 Unpacking libssl3:amd64 (3.0.18-1~deb12u2) ...
#12 4.269 Selecting previously unselected package openssl.
#12 4.271 Preparing to unpack .../1-openssl_3.0.18-1~deb12u2_amd64.deb ...
#12 4.274 Unpacking openssl (3.0.18-1~deb12u2) ...
#12 4.428 Selecting previously unselected package ca-certificates.
#12 4.430 Preparing to unpack .../2-ca-certificates_20230311+deb12u1_all.deb ...
#12 4.433 Unpacking ca-certificates (20230311+deb12u1) ...
#12 4.490 Selecting previously unselected package libfuse2:amd64.
#12 4.492 Preparing to unpack .../3-libfuse2_2.9.9-6+b1_amd64.deb ...
#12 4.496 Unpacking libfuse2:amd64 (2.9.9-6+b1) ...
#12 4.545 Selecting previously unselected package fuse.
#12 4.547 Preparing to unpack .../4-fuse_2.9.9-6+b1_amd64.deb ...
#12 4.550 Unpacking fuse (2.9.9-6+b1) ...
#12 4.581 Selecting previously unselected package gosu.
#12 4.583 Preparing to unpack .../5-gosu_1.14-1+b10_amd64.deb ...
#12 4.586 Unpacking gosu (1.14-1+b10) ...
#12 4.686 Selecting previously unselected package tini.
#12 4.688 Preparing to unpack .../6-tini_0.19.0-1+b3_amd64.deb ...
#12 4.691 Unpacking tini (0.19.0-1+b3) ...
#12 4.756 Setting up libssl3:amd64 (3.0.18-1~deb12u2) ...
#12 4.768 Setting up libfuse2:amd64 (2.9.9-6+b1) ...
#12 4.777 Setting up gosu (1.14-1+b10) ...
#12 4.785 Setting up tini (0.19.0-1+b3) ...
#12 4.793 Setting up openssl (3.0.18-1~deb12u2) ...
#12 4.809 Setting up fuse (2.9.9-6+b1) ...
#12 4.837 Setting up ca-certificates (20230311+deb12u1) ...
#12 4.936 debconf: unable to initialize frontend: Dialog
#12 4.936 debconf: (TERM is not set, so the dialog frontend is not usable.)
#12 4.936 debconf: falling back to frontend: Readline
#12 4.937 debconf: unable to initialize frontend: Readline
#12 4.937 debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
#12 4.937 debconf: falling back to frontend: Teletype
#12 5.400 Updating certificates in /etc/ssl/certs...
#12 6.136 142 added, 0 removed; done.
#12 6.164 Processing triggers for libc-bin (2.36-9+deb12u13) ...
#12 6.186 Processing triggers for ca-certificates (20230311+deb12u1) ...
#12 6.193 Updating certificates in /etc/ssl/certs...
#12 6.721 0 added, 0 removed; done.
#12 6.721 Running hooks in /etc/ca-certificates/update.d...
#12 6.722 done.
#12 6.749 + apt-get clean
#12 6.755 + rm -rf /var/lib/apt/lists/auxfiles /var/lib/apt/lists/deb.debian.org_debian-security_dists_bookworm-security_InRelease /var/lib/apt/lists/deb.debian.org_debian-security_dists_bookworm-security_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm-updates_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm-updates_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/lock /var/lib/apt/lists/partial /tmp/* /var/tmp/*
#12 ...

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 ...

#12 [utilities 2/2] RUN set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		tini 		gosu     fuse     ca-certificates 	; 	apt-get clean; 	rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#12 DONE 11.6s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 ...

#13 [stage-2  2/10] COPY --from=utilities /usr/sbin/gosu /sbin/gosu
#13 DONE 0.5s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 5.1s
#9 ...

#14 [stage-2  3/10] COPY --from=utilities /usr/bin/tini /sbin/tini
#14 DONE 0.3s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 ...

#15 [stage-2  4/10] COPY --from=utilities /bin/fusermount /usr/local/bin/fusermount
#15 DONE 1.1s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 ...

#16 [stage-2  5/10] COPY --from=utilities /etc/ssl/certs /etc/ssl/certs
#16 DONE 0.5s

#9 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#9 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 9.2s done
#9 extracting sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e
#9 extracting sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e done
#9 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 done
#9 DONE 23.3s

#17 [builder 2/6] COPY go.mod go.sum /kubo/
#17 DONE 0.2s

#18 [builder 3/6] WORKDIR /kubo
#18 DONE 0.0s

#19 [builder 4/6] RUN --mount=type=cache,target=/go/pkg/mod   go mod download
#19 DONE 10.4s

#20 [builder 5/6] COPY . /kubo
#20 DONE 3.1s

#21 [builder 6/6] RUN --mount=type=cache,target=/go/pkg/mod   --mount=type=cache,target=/root/.cache/go-build   mkdir -p .git/objects   && GOOS=linux GOARCH=amd64 GOFLAGS=-buildvcs=false make build IPFS_PLUGINS=$IPFS_PLUGINS
#21 1.036 plugin/loader/preload.sh > plugin/loader/preload.go
#21 1.054 go fmt plugin/loader/preload.go >/dev/null
#21 1.646 go build -buildvcs=false "-trimpath" -ldflags="-X "github.com/ipfs/kubo".CurrentCommit=15017c4 -X "github.com/ipfs/kubo".taggedRelease=" -o "cmd/ipfs/ipfs" "github.com/ipfs/kubo/cmd/ipfs"
#21 DONE 105.2s

#22 [stage-2  6/10] COPY --from=builder /kubo/cmd/ipfs/ipfs /usr/local/bin/ipfs
#22 DONE 0.2s

#23 [stage-2  7/10] COPY --from=builder --chmod=755 /kubo/bin/container_daemon /usr/local/bin/start_ipfs
#23 DONE 0.0s

#24 [stage-2  8/10] COPY --from=builder /kubo/bin/container_init_run /usr/local/bin/container_init_run
#24 DONE 0.0s

#25 [stage-2  9/10] RUN chmod 4755 /usr/local/bin/fusermount
#25 DONE 0.2s

#26 [stage-2 10/10] RUN mkdir -p /data/ipfs /ipfs /ipns /mfs /container-init.d   && adduser -D -h /data/ipfs -u 1000 -G users ipfs   && chown ipfs:users /data/ipfs /ipfs /ipns /mfs /container-init.d
#26 DONE 0.2s

#27 exporting to image
#27 exporting layers
#27 exporting layers 0.5s done
#27 writing image sha256:06d9f3716fee915e04430813844312ff02972fdfd2daa29479cd32a8055f5cd3 done
#27 naming to docker.io/library/kubo_test done
#27 DONE 0.5s
4 - write init scripts Success 0.005
System.out »
expecting success: 
  echo "ipfs config Mounts.IPFS Bar" > 001.sh &&
  echo "ipfs config Pubsub.Router Qux" > 002.sh &&
  chmod +x 002.sh

ok 4 - write init scripts
5 - docker image runs Success 0.342
System.out »
expecting success: 
  DOC_ID=$(docker run -d \
                  -p 127.0.0.1:5001:5001 -p 127.0.0.1:8080:8080 \
                  -v "$PWD/001.sh":/container-init.d/001.sh \
                  -v "$PWD/002.sh":/container-init.d/002.sh \
                  "$IMAGE_TAG")

ok 5 - docker image runs
6 - docker container gateway is up Success 2.014
System.out »
expecting success: 
  pollEndpoint -host=/ip4/127.0.0.1/tcp/8080 -http-url http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi -v -tries 30 -tout 1s

ok 6 - docker container gateway is up
System.err »
2026-02-27T18:14:39.638Z	DEBUG	pollEndpoint	pollEndpoint/main.go:44	starting at 2026-02-27 18:14:39.638284946 +0000 UTC m=+0.000690235, tries: 30, timeout: 1s, addr: /ip4/127.0.0.1/tcp/8080
2026-02-27T18:14:39.638Z	DEBUG	pollEndpoint	pollEndpoint/main.go:50	ok -  endpoint reachable with 30 tries remaining, took 252.458µs
2026-02-27T18:14:39.638Z	DEBUG	pollEndpoint	pollEndpoint/main.go:71	trying HTTP req 1: 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi'
2026-02-27T18:14:39.639Z	DEBUG	pollEndpoint	pollEndpoint/main.go:76	HTTP req 1 to 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi' failed
2026-02-27T18:14:40.640Z	DEBUG	pollEndpoint	pollEndpoint/main.go:71	trying HTTP req 2: 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi'
2026-02-27T18:14:40.640Z	DEBUG	pollEndpoint	pollEndpoint/main.go:76	HTTP req 2 to 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi' failed
2026-02-27T18:14:41.640Z	DEBUG	pollEndpoint	pollEndpoint/main.go:71	trying HTTP req 3: 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi'
2026-02-27T18:14:41.645Z	DEBUG	pollEndpoint	pollEndpoint/main.go:73	HTTP req 3 to 'http://localhost:8080/ipfs/bafkqaddimvwgy3zao5xxe3debi' succeeded
7 - docker container API is up Success 0.007
System.out »
expecting success: 
  pollEndpoint -host=/ip4/127.0.0.1/tcp/5001 -http-url http://localhost:5001/version -v -tries 30 -tout 1s

ok 7 - docker container API is up
System.err »
2026-02-27T18:14:41.674Z	DEBUG	pollEndpoint	pollEndpoint/main.go:44	starting at 2026-02-27 18:14:41.674001095 +0000 UTC m=+0.000641391, tries: 30, timeout: 1s, addr: /ip4/127.0.0.1/tcp/5001
2026-02-27T18:14:41.674Z	DEBUG	pollEndpoint	pollEndpoint/main.go:50	ok -  endpoint reachable with 30 tries remaining, took 183.638µs
2026-02-27T18:14:41.674Z	DEBUG	pollEndpoint	pollEndpoint/main.go:71	trying HTTP req 1: 'http://localhost:5001/version'
2026-02-27T18:14:41.674Z	DEBUG	pollEndpoint	pollEndpoint/main.go:73	HTTP req 1 to 'http://localhost:5001/version' succeeded
8 - check that init scripts were run correctly and in the correct order Success 0.021
System.out »
expecting success: 
  echo -e "Sourcing '/container-init.d/001.sh'...\nExecuting '/container-init.d/002.sh'..." > expected &&
  docker logs 762dbc58ebc4e8b8d1f75660750c953c91574448ca5596ded83c3102a8120499 2>/dev/null | grep -e 001.sh -e 002.sh > actual &&
  test_cmp actual expected

ok 8 - check that init scripts were run correctly and in the correct order
9 - check that init script configs were applied Success 0.175
System.out »
expecting success: 
  echo Bar > expected &&
  docker exec "$DOC_ID" ipfs config Mounts.IPFS > actual &&
  test_cmp actual expected &&
  echo Qux > expected &&
  docker exec "$DOC_ID" ipfs config Pubsub.Router > actual &&
  test_cmp actual expected

ok 9 - check that init script configs were applied
10 - simple ipfs add/cat can be run in docker container Success 0.190
System.out »
expecting success: 
  echo "Hello Worlds" | tr -d "[:cntrl:]" > expected &&
  HASH=$(docker_exec "$DOC_ID" "echo $(cat expected) | ipfs add -q" | tr -d "[:cntrl:]") &&
  docker_exec "$DOC_ID" "ipfs cat $HASH" | tr -d "[:cntrl:]" > actual &&
  test_cmp expected actual

ok 10 - simple ipfs add/cat can be run in docker container
11 - version CurrentCommit is set Success 0.087
System.out »
expecting success: pollEndpoint -host=/ip4/127.0.0.1/tcp/5001 -http-url http://localhost:5001/version -http-out | grep Commit | cut -d" " -f2 >actual ;   test -s actual ;   docker exec -i "762dbc58ebc4e8b8d1f75660750c953c91574448ca5596ded83c3102a8120499" ipfs version --enc json     | sed 's/^.*"Commit":"\([^"]*\)".*$/\1/g' >expected ;   test -s expected ;   test_cmp expected actual
ok 11 - version CurrentCommit is set
12 - stop docker container Success 1.265
System.out »
expecting success: 
  docker_stop "$DOC_ID"

762dbc58ebc4e8b8d1f75660750c953c91574448ca5596ded83c3102a8120499
ok 12 - stop docker container
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - 'docker --version' works
ok 2 - 'docker --version' output looks good
ok 3 - docker image build succeeds
ok 4 - write init scripts
ok 5 - docker image runs
ok 6 - docker container gateway is up
ok 7 - docker container API is up
ok 8 - check that init scripts were run correctly and in the correct order
ok 9 - check that init script configs were applied
ok 10 - simple ipfs add/cat can be run in docker container
ok 11 - version CurrentCommit is set
ok 12 - stop docker container

Back to top

TestCase t0003-docker-migrate

Name Status Type Time(s)
1 - docker image build succeeds Success 147.033
System.out »
expecting success: 
  docker_build "$IMAGE_TAG" "$TEST_TESTS_DIR/../Dockerfile" "$APP_ROOT_DIR"

ok 1 - docker image build succeeds
System.err »
#0 building with "default" instance using docker driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 3.85kB done
#1 DONE 0.0s

#2 resolve image config for docker-image://docker.io/docker/dockerfile:1
#2 DONE 0.8s

#3 docker-image://docker.io/docker/dockerfile:1@sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6
#3 resolve docker.io/docker/dockerfile:1@sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6 done
#3 sha256:b6afd42430b15f2d2a4c5a02b919e98a525b785b1aaff16747d2f623364e39b6 8.40kB / 8.40kB done
#3 sha256:62b0eac4b38b65f257ba2525a1bc87978b5e339d6133b5daef1bde40fe7aa10f 850B / 850B done
#3 sha256:6742480c08d7878bbb82a5f5b55d7cb17c5dea60d2068cb2bd37994f3a5c680e 1.33kB / 1.33kB done
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0B / 13.57MB 0.1s
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 12.58MB / 13.57MB 0.4s
#3 sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 13.57MB / 13.57MB 0.4s done
#3 extracting sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0.1s
#3 extracting sha256:77246a01651da592b7bae79e0e20ed3b4f2e4c00a1b54b7c921c91ae3fa9ef07 0.2s done
#3 DONE 0.7s

#4 [internal] load metadata for docker.io/library/golang:1.25
#4 ...

#5 [internal] load metadata for docker.io/library/debian:bookworm-slim
#5 DONE 0.4s

#6 [internal] load metadata for docker.io/library/busybox:stable-glibc
#6 ...

#4 [internal] load metadata for docker.io/library/golang:1.25
#4 DONE 0.7s

#6 [internal] load metadata for docker.io/library/busybox:stable-glibc
#6 DONE 0.7s

#7 [internal] load .dockerignore
#7 transferring context: 297B done
#7 DONE 0.0s

#8 [utilities 1/2] FROM docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421
#8 resolve docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421
#8 resolve docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421 0.0s done
#8 sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421 8.56kB / 8.56kB done
#8 sha256:74a21da88cf4b2e8fde34558376153c5cd80b00ca81da2e659387e76524edc73 1.02kB / 1.02kB done
#8 sha256:61cd928eb3eca3230a69ed2f2315c41a5655d2d1f3daa76d34034c3548df9320 453B / 453B done
#8 ...

#9 [stage-2  1/10] FROM docker.io/library/busybox:stable-glibc@sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc
#9 resolve docker.io/library/busybox:stable-glibc@sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc 0.0s done
#9 sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5 2.21MB / 2.21MB 0.3s done
#9 sha256:f9e7f70a1bee62cdfd511b0960b4e15748ff6a7a1654cf6a63f57e63531fc6cc 8.86kB / 8.86kB done
#9 sha256:0ad610868746fa822202c2052bb37f61272524ff4a4a3921edeeec7cd0a88c10 610B / 610B done
#9 sha256:114f4abb67995cfe8e368760f3bc8a1d00e12ac9883c7c304d80987f24452e75 459B / 459B done
#9 extracting sha256:46d362e03e6a35f60e1e684105308726d6b3ae1716c605f20a2cae26c6065cd5 0.1s done
#9 DONE 0.5s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 resolve docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be 0.0s done
#10 sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be 9.70kB / 9.70kB done
#10 sha256:fb4095b65a7bb89f039def7e33d7b90095d2c25f34597748758a6f209eead7ff 2.32kB / 2.32kB done
#10 sha256:220391c4f8b385f5e5476947cb365712c3ddc19c905b3573ee87560be0e2bcf5 3.04kB / 3.04kB done
#10 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 30.41MB / 49.29MB 0.7s
#10 sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 24.12MB / 25.61MB 0.7s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 0B / 67.78MB 0.7s
#10 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 47.19MB / 49.29MB 0.9s
#10 sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 25.61MB / 25.61MB 0.7s done
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 6.29MB / 67.78MB 0.9s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 0B / 102.17MB 0.9s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 11.53MB / 67.78MB 1.0s
#10 sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 49.29MB / 49.29MB 1.1s done
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 17.83MB / 67.78MB 1.1s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 0B / 60.16MB 1.1s
#10 extracting sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 22.02MB / 67.78MB 1.2s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 32.51MB / 67.78MB 1.3s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 8.39MB / 102.17MB 1.4s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 49.28MB / 67.78MB 1.5s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 16.78MB / 102.17MB 1.5s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 15.73MB / 60.16MB 1.5s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 66.06MB / 67.78MB 1.7s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 32.51MB / 60.16MB 1.7s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 32.51MB / 102.17MB 1.8s
#10 sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 67.78MB / 67.78MB 1.8s done
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 37.75MB / 60.16MB 1.9s
#10 sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e 0B / 127B 1.9s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 45.09MB / 102.17MB 2.0s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 46.14MB / 60.16MB 2.0s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 50.33MB / 102.17MB 2.2s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 52.43MB / 60.16MB 2.2s
#10 sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e 127B / 127B 2.0s done
#10 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0B / 32B 2.2s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 61.87MB / 102.17MB 2.3s
#10 sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 60.16MB / 60.16MB 2.3s done
#10 sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 2.3s done
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 77.59MB / 102.17MB 2.6s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 83.89MB / 102.17MB 2.8s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 89.13MB / 102.17MB 2.9s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 96.47MB / 102.17MB 3.0s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 102.17MB / 102.17MB 3.2s
#10 sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 102.17MB / 102.17MB 3.2s done
#10 extracting sha256:866771c43bf5eb77362eeeb163c0c825e194c2806d0b697028434e3b9c02f59d 3.0s done
#10 extracting sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361
#10 ...

#11 [internal] load build context
#11 transferring context: 453.17MB 4.5s done
#11 DONE 4.5s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 ...

#8 [utilities 1/2] FROM docker.io/library/debian:bookworm-slim@sha256:74d56e3931e0d5a1dd51f8c8a2466d21de84a271cd3b5a733b803aa91abf4421
#8 sha256:84a2afebaf4de2e8eb885634a69abd0087b79c947c53fa4f0481235d6dfadc6c 28.24MB / 28.24MB 2.9s done
#8 extracting sha256:84a2afebaf4de2e8eb885634a69abd0087b79c947c53fa4f0481235d6dfadc6c 2.0s done
#8 DONE 5.1s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 extracting sha256:ed881fbf1b07b42dd470cd5b56a8feb684d60879c6f8028a9e7a8715e0e72361 1.0s done
#10 extracting sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392
#10 extracting sha256:9da421ddeb655bdfb3960e490b39373b0d1351e3eaba61d01978107920638392 3.4s done
#10 extracting sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483
#10 extracting sha256:697bdc10f841840961e521f4343462a584a8ee4b99ca0e873c75482765ed1483 4.4s done
#10 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6
#10 ...

#12 [utilities 2/2] RUN set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		tini 		gosu     fuse     ca-certificates 	; 	apt-get clean; 	rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#12 0.173 + apt-get update
#12 0.203 Get:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
#12 0.214 Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
#12 0.214 Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
#12 0.285 Get:4 http://deb.debian.org/debian bookworm/main amd64 Packages [8792 kB]
#12 0.368 Get:5 http://deb.debian.org/debian bookworm-updates/main amd64 Packages [6924 B]
#12 0.402 Get:6 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [297 kB]
#12 1.718 Fetched 9350 kB in 2s (6151 kB/s)
#12 1.718 Reading package lists...
#12 2.401 + apt-get install -y --no-install-recommends tini gosu fuse ca-certificates
#12 2.412 Reading package lists...
#12 3.317 Building dependency tree...
#12 3.503 Reading state information...
#12 3.708 The following additional packages will be installed:
#12 3.709   libfuse2 libssl3 openssl
#12 3.775 The following NEW packages will be installed:
#12 3.777   ca-certificates fuse gosu libfuse2 libssl3 openssl tini
#12 3.803 0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
#12 3.803 Need to get 4831 kB of archives.
#12 3.803 After this operation, 12.4 MB of additional disk space will be used.
#12 3.803 Get:1 http://deb.debian.org/debian-security bookworm-security/main amd64 libssl3 amd64 3.0.18-1~deb12u2 [2030 kB]
#12 3.818 Get:2 http://deb.debian.org/debian-security bookworm-security/main amd64 openssl amd64 3.0.18-1~deb12u2 [1433 kB]
#12 3.831 Get:3 http://deb.debian.org/debian bookworm/main amd64 ca-certificates all 20230311+deb12u1 [155 kB]
#12 3.832 Get:4 http://deb.debian.org/debian bookworm/main amd64 libfuse2 amd64 2.9.9-6+b1 [119 kB]
#12 3.833 Get:5 http://deb.debian.org/debian bookworm/main amd64 fuse amd64 2.9.9-6+b1 [61.3 kB]
#12 3.834 Get:6 http://deb.debian.org/debian bookworm/main amd64 gosu amd64 1.14-1+b10 [766 kB]
#12 3.839 Get:7 http://deb.debian.org/debian bookworm/main amd64 tini amd64 0.19.0-1+b3 [267 kB]
#12 4.002 debconf: delaying package configuration, since apt-utils is not installed
#12 4.041 Fetched 4831 kB in 0s (87.7 MB/s)
#12 4.068 Selecting previously unselected package libssl3:amd64.
#12 4.068 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 6096 files and directories currently installed.)
#12 4.075 Preparing to unpack .../0-libssl3_3.0.18-1~deb12u2_amd64.deb ...
#12 4.083 Unpacking libssl3:amd64 (3.0.18-1~deb12u2) ...
#12 4.269 Selecting previously unselected package openssl.
#12 4.271 Preparing to unpack .../1-openssl_3.0.18-1~deb12u2_amd64.deb ...
#12 4.274 Unpacking openssl (3.0.18-1~deb12u2) ...
#12 4.428 Selecting previously unselected package ca-certificates.
#12 4.430 Preparing to unpack .../2-ca-certificates_20230311+deb12u1_all.deb ...
#12 4.433 Unpacking ca-certificates (20230311+deb12u1) ...
#12 4.490 Selecting previously unselected package libfuse2:amd64.
#12 4.492 Preparing to unpack .../3-libfuse2_2.9.9-6+b1_amd64.deb ...
#12 4.496 Unpacking libfuse2:amd64 (2.9.9-6+b1) ...
#12 4.545 Selecting previously unselected package fuse.
#12 4.547 Preparing to unpack .../4-fuse_2.9.9-6+b1_amd64.deb ...
#12 4.550 Unpacking fuse (2.9.9-6+b1) ...
#12 4.581 Selecting previously unselected package gosu.
#12 4.583 Preparing to unpack .../5-gosu_1.14-1+b10_amd64.deb ...
#12 4.586 Unpacking gosu (1.14-1+b10) ...
#12 4.686 Selecting previously unselected package tini.
#12 4.688 Preparing to unpack .../6-tini_0.19.0-1+b3_amd64.deb ...
#12 4.691 Unpacking tini (0.19.0-1+b3) ...
#12 4.756 Setting up libssl3:amd64 (3.0.18-1~deb12u2) ...
#12 4.768 Setting up libfuse2:amd64 (2.9.9-6+b1) ...
#12 4.777 Setting up gosu (1.14-1+b10) ...
#12 4.785 Setting up tini (0.19.0-1+b3) ...
#12 4.793 Setting up openssl (3.0.18-1~deb12u2) ...
#12 4.809 Setting up fuse (2.9.9-6+b1) ...
#12 4.837 Setting up ca-certificates (20230311+deb12u1) ...
#12 4.936 debconf: unable to initialize frontend: Dialog
#12 4.936 debconf: (TERM is not set, so the dialog frontend is not usable.)
#12 4.936 debconf: falling back to frontend: Readline
#12 4.937 debconf: unable to initialize frontend: Readline
#12 4.937 debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
#12 4.937 debconf: falling back to frontend: Teletype
#12 5.400 Updating certificates in /etc/ssl/certs...
#12 6.136 142 added, 0 removed; done.
#12 6.164 Processing triggers for libc-bin (2.36-9+deb12u13) ...
#12 6.186 Processing triggers for ca-certificates (20230311+deb12u1) ...
#12 6.193 Updating certificates in /etc/ssl/certs...
#12 6.721 0 added, 0 removed; done.
#12 6.721 Running hooks in /etc/ca-certificates/update.d...
#12 6.722 done.
#12 6.749 + apt-get clean
#12 6.755 + rm -rf /var/lib/apt/lists/auxfiles /var/lib/apt/lists/deb.debian.org_debian-security_dists_bookworm-security_InRelease /var/lib/apt/lists/deb.debian.org_debian-security_dists_bookworm-security_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm-updates_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm-updates_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm_InRelease /var/lib/apt/lists/deb.debian.org_debian_dists_bookworm_main_binary-amd64_Packages.lz4 /var/lib/apt/lists/lock /var/lib/apt/lists/partial /tmp/* /var/tmp/*
#12 ...

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 ...

#12 [utilities 2/2] RUN set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		tini 		gosu     fuse     ca-certificates 	; 	apt-get clean; 	rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
#12 DONE 11.6s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 ...

#13 [stage-2  2/10] COPY --from=utilities /usr/sbin/gosu /sbin/gosu
#13 DONE 0.5s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 5.1s
#10 ...

#14 [stage-2  3/10] COPY --from=utilities /usr/bin/tini /sbin/tini
#14 DONE 0.3s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 ...

#15 [stage-2  4/10] COPY --from=utilities /bin/fusermount /usr/local/bin/fusermount
#15 DONE 1.1s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 ...

#16 [stage-2  5/10] COPY --from=utilities /etc/ssl/certs /etc/ssl/certs
#16 DONE 0.5s

#10 [builder 1/6] FROM docker.io/library/golang:1.25@sha256:931c889bca758a82fcbfcb1b6ed6ca1de30783e9e52e6093ad50060735cb99be
#10 extracting sha256:0fdf71b47847e47b44531d019e8eed7d243fd7189fe6b14cf6754724b04fbdd6 9.2s done
#10 extracting sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e
#10 extracting sha256:5ec41210057e053bb052a2039a683dbb9e18b55a8f2e434938fa1ed62804063e done
#10 extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 done
#10 DONE 23.3s

#17 [builder 2/6] COPY go.mod go.sum /kubo/
#17 CANCELED

#18 [builder 2/6] COPY go.mod go.sum /kubo/
#18 DONE 0.2s

#19 [builder 3/6] WORKDIR /kubo
#19 DONE 0.0s

#20 [builder 4/6] RUN --mount=type=cache,target=/go/pkg/mod   go mod download
#20 DONE 10.4s

#21 [builder 3/6] WORKDIR /kubo
#21 CACHED

#22 [builder 4/6] RUN --mount=type=cache,target=/go/pkg/mod   go mod download
#22 CACHED

#23 [builder 5/6] COPY . /kubo
#23 DONE 3.1s

#24 [builder 6/6] RUN --mount=type=cache,target=/go/pkg/mod   --mount=type=cache,target=/root/.cache/go-build   mkdir -p .git/objects   && GOOS=linux GOARCH=amd64 GOFLAGS=-buildvcs=false make build IPFS_PLUGINS=$IPFS_PLUGINS
#24 1.036 plugin/loader/preload.sh > plugin/loader/preload.go
#24 1.052 go fmt plugin/loader/preload.go >/dev/null
#24 1.636 go build -buildvcs=false "-trimpath" -ldflags="-X "github.com/ipfs/kubo".CurrentCommit=15017c4 -X "github.com/ipfs/kubo".taggedRelease=" -o "cmd/ipfs/ipfs" "github.com/ipfs/kubo/cmd/ipfs"
#24 DONE 105.2s

#25 [stage-2  6/10] COPY --from=builder /kubo/cmd/ipfs/ipfs /usr/local/bin/ipfs
#25 DONE 0.2s

#26 [stage-2  7/10] COPY --from=builder --chmod=755 /kubo/bin/container_daemon /usr/local/bin/start_ipfs
#26 DONE 0.0s

#27 [stage-2  8/10] COPY --from=builder /kubo/bin/container_init_run /usr/local/bin/container_init_run
#27 DONE 0.0s

#28 [stage-2  9/10] RUN chmod 4755 /usr/local/bin/fusermount
#28 DONE 0.2s

#29 [stage-2 10/10] RUN mkdir -p /data/ipfs /ipfs /ipns /mfs /container-init.d   && adduser -D -h /data/ipfs -u 1000 -G users ipfs   && chown ipfs:users /data/ipfs /ipfs /ipns /mfs /container-init.d
#29 DONE 0.2s

#30 exporting to image
#30 exporting layers
#30 exporting layers 0.5s done
#30 writing image sha256:06d9f3716fee915e04430813844312ff02972fdfd2daa29479cd32a8055f5cd3 done
#30 naming to docker.io/library/kubo_migrate done
#30 DONE 0.5s
2 - ipfs init succeeds Success 0.075
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.120
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.366
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0003-docker-migrate.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0003-docker-migrate.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0003-docker-migrate.sh/mfs"
ok 4 - prepare config -- mounting
5 - configure migration sources Success 0.065
System.out »
expecting success: 
  ipfs config --json Migration.DownloadSources "[\"http://127.0.0.1:17233\"]"

ok 5 - configure migration sources
6 - setup http response Success 0.136
System.out »
expecting success: 
  mkdir migration &&
  echo "v1.1.1" > migration/versions &&
  mkdir -p migration/fs-repo-6-to-7 &&
  echo "v1.1.1" > migration/fs-repo-6-to-7/versions &&
  CID=$(ipfs add -r -Q migration) &&
  echo "HTTP/1.1 200 OK" > vers_resp &&
  echo "Content-Type: application/vnd.ipld.car" >> vers_resp &&
  echo "" >> vers_resp &&
  ipfs dag export $CID >> vers_resp

ok 6 - setup http response
7 - make repo be version 4 Success 0.003
System.out »
expecting success: 
  echo 4 > "$IPFS_PATH/version"

ok 7 - make repo be version 4
8 - startup fake dists server Success 0.004
System.out »
expecting success: 
  ( socat tcp-listen:17233,fork,bind=127.0.0.1,reuseaddr "SYSTEM:cat vers_resp"!!STDERR 2> dist_serv_out ) &
  echo $! > netcat_pid

ok 8 - startup fake dists server
9 - docker image runs Success 0.250
System.out »
expecting success: 
  DOC_ID=$(docker run -d -v "$IPFS_PATH":/data/ipfs -e IPFS_DIST_PATH=/ipfs/$CID --net=host "$IMAGE_TAG")

ok 9 - docker image runs
10 - docker container tries to pull migrations from netcat Success 4.006
System.out »
expecting success: 
  sleep 4 &&
  cat dist_serv_out

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

2026/02/27 18:14:40 socat[355921] W waitpid(-1, {}, WNOHANG): no child has exited
GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

2026/02/27 18:14:40 socat[355921] W waitpid(-1, {}, WNOHANG): no child has exited
GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

2026/02/27 18:14:41 socat[355921] W waitpid(-1, {}, WNOHANG): no child has exited
GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

GET /ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions HTTP/1.1
Host: 127.0.0.1:17233
User-Agent: Go-http-client/1.1
Accept: application/vnd.ipld.car
Accept-Encoding: gzip

ok 10 - docker container tries to pull migrations from netcat
11 - see logs Success 0.019
System.out »
expecting success: 
  docker logs $DOC_ID

Changing user to ipfs
ipfs version 0.41.0-dev
Found IPFS fs-repo at /data/ipfs
Initializing daemon...
Kubo version: 0.41.0-dev-15017c4
Repo version: 18
System version: amd64/linux
Golang version: go1.25.7
Kubo repository at /data/ipfs has version 4 and needs to be migrated to version 18.
Starting hybrid migration from version 4 to 18
Using hybrid migration strategy: external to v16, then embedded
Phase 1: External migration from v4 to v16
Looking for suitable migration binaries.
Need 12 migrations, downloading.
Downloading migration: fs-repo-4-to-5...
Downloading migration: fs-repo-5-to-6...
Downloading migration: fs-repo-6-to-7...
Downloading migration: fs-repo-7-to-8...
Downloading migration: fs-repo-8-to-9...
Downloading migration: fs-repo-9-to-10...
Downloading migration: fs-repo-10-to-11...
Downloading migration: fs-repo-11-to-12...
Downloading migration: fs-repo-12-to-13...
Downloading migration: fs-repo-13-to-14...
Downloading migration: fs-repo-14-to-15...
Downloading migration: fs-repo-15-to-16...
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-11-to-12/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-14-to-15/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-15-to-16/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-4-to-5/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-7-to-8/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-5-to-6/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-9-to-10/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-12-to-13/versions"
could not get latest version of migration fs-repo-11-to-12: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-11-to-12" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-14-to-15: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-14-to-15" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-15-to-16: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-15-to-16" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz"
could not get latest version of migration fs-repo-7-to-8: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-7-to-8" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-9-to-10: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-9-to-10" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-5-to-6: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-5-to-6" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-4-to-5: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-4-to-5" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-12-to-13: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-12-to-13" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not download fs-repo-6-to-7: exceeded number of retries. last error was failed to resolve: no link named "v1.1.1" under Qma8hFRBhaTtfgnNi9m2eFfJgKzRgfMz165L8Cn5PGHr4D
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-8-to-9/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-13-to-14/versions"
Fetching with HTTP: "http://127.0.0.1:17233/ipfs/QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk/fs-repo-10-to-11/versions"
could not get latest version of migration fs-repo-8-to-9: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-8-to-9" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-13-to-14: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-13-to-14" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
could not get latest version of migration fs-repo-10-to-11: exceeded number of retries. last error was failed to resolve: no link named "fs-repo-10-to-11" under QmXoHuXXX51mjB1bYdt6CdDjxwi4UGq4uKksM5nFX84ykk
Failed to download migrations.
Repository migration failed:
  external migration phase failed: failed to download migrations: fs-repo-4-to-5 fs-repo-5-to-6 fs-repo-6-to-7 fs-repo-7-to-8 fs-repo-8-to-9 fs-repo-9-to-10 fs-repo-10-to-11 fs-repo-11-to-12 fs-repo-12-to-13 fs-repo-13-to-14 fs-repo-14-to-15 fs-repo-15-to-16
If you think this is a bug, please file an issue and include this whole log output.
  https://github.com/ipfs/kubo

ok 11 - see logs
System.err »
Error: external migration phase failed: failed to download migrations: fs-repo-4-to-5 fs-repo-5-to-6 fs-repo-6-to-7 fs-repo-7-to-8 fs-repo-8-to-9 fs-repo-9-to-10 fs-repo-10-to-11 fs-repo-11-to-12 fs-repo-12-to-13 fs-repo-13-to-14 fs-repo-14-to-15 fs-repo-15-to-16
12 - stop docker container Success 0.018
System.out »
expecting success: 
  docker_stop "$DOC_ID"

71e22cb56d246120e2e802c7b4ae874eb29b7a3ac8418f1bc429f89ea746eeac
ok 12 - stop docker container
13 - kill the net cat Success 0.005
System.out »
expecting success: 
  kill $(cat netcat_pid) || true

ok 13 - kill the net cat
14 - correct version was requested Success 0.005
System.out »
expecting success: 
  grep "/fs-repo-6-to-7/v1.1.1/fs-repo-6-to-7_v1.1.1_linux-amd64.tar.gz" dist_serv_out > /dev/null

ok 14 - correct version was requested
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - docker image build succeeds
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - configure migration sources
ok 6 - setup http response
ok 7 - make repo be version 4
ok 8 - startup fake dists server
ok 9 - docker image runs
ok 10 - docker container tries to pull migrations from netcat
ok 11 - see logs
ok 12 - stop docker container
ok 13 - kill the net cat
ok 14 - correct version was requested

Back to top

TestCase t0012-completion-fish

Name Status Type Time(s)
1 - 'ipfs commands completion fish' succeeds Success 0.100
System.out »
expecting success: 
  ipfs commands completion fish > completions.fish

ok 1 - 'ipfs commands completion fish' succeeds
2 - generated completions completes 'ipfs version' Success 0.090
System.out »
expecting success: 
  fish -c "source completions.fish && complete -C \"ipfs ver\" | grep -q \"version.Show IPFS version information.\" "

ok 2 - generated completions completes 'ipfs version'
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - 'ipfs commands completion fish' succeeds
ok 2 - generated completions completes 'ipfs version'

Back to top

TestCase t0015-basic-sh-functions

Name Status Type Time(s)
1 - shellquote works with simple stuff Success 0.009
System.out »
expecting success: 
  var=$(shellquote one two)

ok 1 - shellquote works with simple stuff
2 - shellquote output looks good Success 0.004
System.out »
expecting success: 
  test "$var" = "'one' 'two'" ||
  test_fsh echo "var is \"$var\" instead of \"'one' 'two'\""

ok 2 - shellquote output looks good
3 - shellquote works with complex printf Success 0.008
System.out »
expecting success: 
  eval "$(shellquote printf "\047\042\146\157\157\134\012\142\141\162\012")" >actual

ok 3 - shellquote works with complex printf
4 - shellquote output looks good Success 0.006
System.out »
expecting success: 
  printf "\047\042\146\157\157\134\012\142\141\162\012" >expected &&
  test_cmp expected actual

ok 4 - shellquote output looks good
5 - shellquote works with many different bytes Success 0.011
System.out »
expecting success: 
  bytes_sans_NUL=$(
    printf "\001\002\003\004\005\006\007\010\011\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044%%\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
  ) &&
  eval "$(shellquote printf "%s" "$bytes_sans_NUL")" >actual

ok 5 - shellquote works with many different bytes
6 - shellquote output looks good Success 0.006
System.out »
expecting success: 
  printf "%s" "$bytes_sans_NUL" >expected &&
  test_cmp expected actual

ok 6 - shellquote output looks good
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - shellquote works with simple stuff
ok 2 - shellquote output looks good
ok 3 - shellquote works with complex printf
ok 4 - shellquote output looks good
ok 5 - shellquote works with many different bytes
ok 6 - shellquote output looks good

Back to top

TestCase t0018-indent

Name Status Type Time(s)
1 - indent in ../t0051-object.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 1 - indent in ../t0051-object.sh is not using tabs
2 - indent in ../t0062-daemon-api.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 2 - indent in ../t0062-daemon-api.sh is not using tabs
3 - indent in ../t0190-quic-ping.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 3 - indent in ../t0190-quic-ping.sh is not using tabs
4 - indent in ../t0002-docker-image.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 4 - indent in ../t0002-docker-image.sh is not using tabs
5 - indent in ../t0295-multibase.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 5 - indent in ../t0295-multibase.sh is not using tabs
6 - indent in ../t0060-daemon.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 6 - indent in ../t0060-daemon.sh is not using tabs
7 - indent in ../t0276-cidv0v1.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 7 - indent in ../t0276-cidv0v1.sh is not using tabs
8 - indent in ../t0114-gateway-subdomains.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 8 - indent in ../t0114-gateway-subdomains.sh is not using tabs
9 - indent in ../t0600-issues-and-regressions-online.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 9 - indent in ../t0600-issues-and-regressions-online.sh is not using tabs
10 - indent in ../t0142-testfilter.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 10 - indent in ../t0142-testfilter.sh is not using tabs
11 - indent in ../t0141-addfilter.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 11 - indent in ../t0141-addfilter.sh is not using tabs
12 - indent in ../t0112-gateway-cors.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 12 - indent in ../t0112-gateway-cors.sh is not using tabs
13 - indent in ../t0230-channel-streaming-http-content-type.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 13 - indent in ../t0230-channel-streaming-http-content-type.sh is not using tabs
14 - indent in ../t0012-completion-fish.sh is not using tabs Success 0.004
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 14 - indent in ../t0012-completion-fish.sh is not using tabs
15 - indent in ../t0067-unix-api.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 15 - indent in ../t0067-unix-api.sh is not using tabs
16 - indent in ../t0021-config.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 16 - indent in ../t0021-config.sh is not using tabs
17 - indent in ../t0042-add-skip.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 17 - indent in ../t0042-add-skip.sh is not using tabs
18 - indent in ../t0003-docker-migrate.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 18 - indent in ../t0003-docker-migrate.sh is not using tabs
19 - indent in ../t0271-filestore-utils.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 19 - indent in ../t0271-filestore-utils.sh is not using tabs
20 - indent in ../t0152-profile.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 20 - indent in ../t0152-profile.sh is not using tabs
21 - indent in ../t0080-repo.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 21 - indent in ../t0080-repo.sh is not using tabs
22 - indent in ../t0061-daemon-opts.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 22 - indent in ../t0061-daemon-opts.sh is not using tabs
23 - indent in ../t0183-namesys-pubsub.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 23 - indent in ../t0183-namesys-pubsub.sh is not using tabs
24 - indent in ../t0063-daemon-init.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 24 - indent in ../t0063-daemon-init.sh is not using tabs
25 - indent in ../t0800-blake3.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 25 - indent in ../t0800-blake3.sh is not using tabs
26 - indent in ../t0070-user-config.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 26 - indent in ../t0070-user-config.sh is not using tabs
27 - indent in ../t0140-swarm.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 27 - indent in ../t0140-swarm.sh is not using tabs
28 - indent in ../t0260-sharding.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 28 - indent in ../t0260-sharding.sh is not using tabs
29 - indent in ../t0251-files-flushing.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 29 - indent in ../t0251-files-flushing.sh is not using tabs
30 - indent in ../t0250-files-api.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 30 - indent in ../t0250-files-api.sh is not using tabs
31 - indent in ../t0053-dag.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 31 - indent in ../t0053-dag.sh is not using tabs
32 - indent in ../lib/test-aggregate-junit-reports.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 32 - indent in ../lib/test-aggregate-junit-reports.sh is not using tabs
33 - indent in ../lib/test-lib-hashes.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 33 - indent in ../lib/test-lib-hashes.sh is not using tabs
34 - indent in ../lib/test-lib.sh is not using tabs Success 0.007
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 34 - indent in ../lib/test-lib.sh is not using tabs
35 - indent in ../lib/test-aggregate-results.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 35 - indent in ../lib/test-aggregate-results.sh is not using tabs
36 - indent in ../t0322-pubsub-http-rpc.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 36 - indent in ../t0322-pubsub-http-rpc.sh is not using tabs
37 - indent in ../t0150-clisuggest.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 37 - indent in ../t0150-clisuggest.sh is not using tabs
38 - indent in ../t0236-cli-api-dns-resolve.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 38 - indent in ../t0236-cli-api-dns-resolve.sh is not using tabs
39 - indent in ../t0055-dag-put-json-new-line.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 39 - indent in ../t0055-dag-put-json-new-line.sh is not using tabs
40 - indent in ../t0410-api-add.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 40 - indent in ../t0410-api-add.sh is not using tabs
41 - indent in ../t0180-p2p.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 41 - indent in ../t0180-p2p.sh is not using tabs
42 - indent in ../t0235-cli-request.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 42 - indent in ../t0235-cli-request.sh is not using tabs
43 - indent in ../t0120-bootstrap.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 43 - indent in ../t0120-bootstrap.sh is not using tabs
44 - indent in ../t0052-object-diff.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 44 - indent in ../t0052-object-diff.sh is not using tabs
45 - indent in ../t0321-pubsub-gossipsub.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 45 - indent in ../t0321-pubsub-gossipsub.sh is not using tabs
46 - indent in ../t0081-repo-pinning.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 46 - indent in ../t0081-repo-pinning.sh is not using tabs
47 - indent in ../t0280-plugin.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 47 - indent in ../t0280-plugin.sh is not using tabs
48 - indent in ../t0027-rotate.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 48 - indent in ../t0027-rotate.sh is not using tabs
49 - indent in ../t0022-init-default.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 49 - indent in ../t0022-init-default.sh is not using tabs
50 - indent in ../t0240-republisher.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 50 - indent in ../t0240-republisher.sh is not using tabs
51 - indent in ../t0018-indent.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 51 - indent in ../t0018-indent.sh is not using tabs
52 - indent in ../t0121-bootstrap-iptb.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 52 - indent in ../t0121-bootstrap-iptb.sh is not using tabs
53 - indent in ../t0032-mount-sharded.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 53 - indent in ../t0032-mount-sharded.sh is not using tabs
54 - indent in ../t0031-mount-publish.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 54 - indent in ../t0031-mount-publish.sh is not using tabs
55 - indent in ../t0115-gateway-dir-listing.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 55 - indent in ../t0115-gateway-dir-listing.sh is not using tabs
56 - indent in ../t0066-migration.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 56 - indent in ../t0066-migration.sh is not using tabs
57 - indent in ../t0220-bitswap.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 57 - indent in ../t0220-bitswap.sh is not using tabs
58 - indent in ../t0151-sysdiag.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 58 - indent in ../t0151-sysdiag.sh is not using tabs
59 - indent in ../t0195-noise.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 59 - indent in ../t0195-noise.sh is not using tabs
60 - indent in ../t0088-repo-stat-symlink.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 60 - indent in ../t0088-repo-stat-symlink.sh is not using tabs
61 - indent in ../t0272-urlstore.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 61 - indent in ../t0272-urlstore.sh is not using tabs
62 - indent in ../t0024-datastore-config.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 62 - indent in ../t0024-datastore-config.sh is not using tabs
63 - indent in ../t0101-iptb-name.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 63 - indent in ../t0101-iptb-name.sh is not using tabs
64 - indent in ../t0023-shutdown.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 64 - indent in ../t0023-shutdown.sh is not using tabs
65 - indent in ../t0184-http-proxy-over-p2p.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 65 - indent in ../t0184-http-proxy-over-p2p.sh is not using tabs
66 - indent in ../t0095-refs.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 66 - indent in ../t0095-refs.sh is not using tabs
67 - indent in ../t0030-mount.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 67 - indent in ../t0030-mount.sh is not using tabs
68 - indent in ../t0084-repo-read-rehash.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 68 - indent in ../t0084-repo-read-rehash.sh is not using tabs
69 - indent in ../t0280-plugin-git.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 69 - indent in ../t0280-plugin-git.sh is not using tabs
70 - indent in ../t0001-tests-work.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 70 - indent in ../t0001-tests-work.sh is not using tabs
71 - indent in ../t0044-add-symlink.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 71 - indent in ../t0044-add-symlink.sh is not using tabs
72 - indent in ../t0087-repo-robust-gc.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 72 - indent in ../t0087-repo-robust-gc.sh is not using tabs
73 - indent in ../t0231-channel-streaming.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 73 - indent in ../t0231-channel-streaming.sh is not using tabs
74 - indent in ../t0131-multinode-client-routing.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 74 - indent in ../t0131-multinode-client-routing.sh is not using tabs
75 - indent in ../t0252-files-gc.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 75 - indent in ../t0252-files-gc.sh is not using tabs
76 - indent in ../t0500-issues-and-regressions-offline.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 76 - indent in ../t0500-issues-and-regressions-offline.sh is not using tabs
77 - indent in ../t0165-keystore.sh is not using tabs Success 0.004
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 77 - indent in ../t0165-keystore.sh is not using tabs
78 - indent in ../t0280-plugin-peerlog.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 78 - indent in ../t0280-plugin-peerlog.sh is not using tabs
79 - indent in ../t0320-pubsub.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 79 - indent in ../t0320-pubsub.sh is not using tabs
80 - indent in ../t0280-plugin-fx.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 80 - indent in ../t0280-plugin-fx.sh is not using tabs
81 - indent in ../t0047-add-mode-mtime.sh is not using tabs Success 0.004
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 81 - indent in ../t0047-add-mode-mtime.sh is not using tabs
82 - indent in ../t0063-external.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 82 - indent in ../t0063-external.sh is not using tabs
83 - indent in ../t0050-block.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 83 - indent in ../t0050-block.sh is not using tabs
84 - indent in ../t0065-active-requests.sh is not using tabs Success 0.004
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 84 - indent in ../t0065-active-requests.sh is not using tabs
85 - indent in ../t0015-basic-sh-functions.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 85 - indent in ../t0015-basic-sh-functions.sh is not using tabs
86 - indent in ../t0026-id.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 86 - indent in ../t0026-id.sh is not using tabs
87 - indent in ../t0185-autonat.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 87 - indent in ../t0185-autonat.sh is not using tabs
88 - indent in ../t0270-filestore.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 88 - indent in ../t0270-filestore.sh is not using tabs
89 - indent in ../t0401-api-browser-security.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 89 - indent in ../t0401-api-browser-security.sh is not using tabs
90 - indent in ../t0045-ls.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 90 - indent in ../t0045-ls.sh is not using tabs
91 - indent in ../t0054-dag-car-import-export.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 91 - indent in ../t0054-dag-car-import-export.sh is not using tabs
92 - indent in ../t0119-prometheus.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 92 - indent in ../t0119-prometheus.sh is not using tabs
93 - indent in ../t0043-add-w.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 93 - indent in ../t0043-add-w.sh is not using tabs
94 - indent in ../t0160-resolve.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 94 - indent in ../t0160-resolve.sh is not using tabs
95 - indent in ../t0086-repo-verify.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 95 - indent in ../t0086-repo-verify.sh is not using tabs
96 - indent in ../t0275-cid-security.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 96 - indent in ../t0275-cid-security.sh is not using tabs
97 - indent in ../t0280-plugin-dag-jose.sh is not using tabs Success 0.007
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 97 - indent in ../t0280-plugin-dag-jose.sh is not using tabs
98 - indent in ../t0090-get.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 98 - indent in ../t0090-get.sh is not using tabs
99 - indent in ../t0040-add-and-cat.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 99 - indent in ../t0040-add-and-cat.sh is not using tabs
100 - indent in ../t0046-id-hash.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 100 - indent in ../t0046-id-hash.sh is not using tabs
101 - indent in ../t0064-api-file.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 101 - indent in ../t0064-api-file.sh is not using tabs
102 - indent in ../t0082-repo-gc-auto.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 102 - indent in ../t0082-repo-gc-auto.sh is not using tabs
103 - indent in ../t0181-private-network.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 103 - indent in ../t0181-private-network.sh is not using tabs
104 - indent in ../t0182-circuit-relay.sh is not using tabs Success 0.006
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 104 - indent in ../t0182-circuit-relay.sh is not using tabs
105 - indent in ../t0191-webtransport-ping.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 105 - indent in ../t0191-webtransport-ping.sh is not using tabs
106 - indent in ../t0400-api-no-gateway.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 106 - indent in ../t0400-api-no-gateway.sh is not using tabs
107 - indent in ../t0109-gateway-web-_redirects.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 107 - indent in ../t0109-gateway-web-_redirects.sh is not using tabs
108 - indent in ../t0116-gateway-cache.sh is not using tabs Success 0.004
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 108 - indent in ../t0116-gateway-cache.sh is not using tabs
109 - indent in ../t0025-datastores.sh is not using tabs Success 0.005
System.out »
expecting success: 
    test_must_fail grep -P "^ *\t" $file
  
ok 109 - indent in ../t0025-datastores.sh is not using tabs
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - indent in ../t0051-object.sh is not using tabs
ok 2 - indent in ../t0062-daemon-api.sh is not using tabs
ok 3 - indent in ../t0190-quic-ping.sh is not using tabs
ok 4 - indent in ../t0002-docker-image.sh is not using tabs
ok 5 - indent in ../t0295-multibase.sh is not using tabs
ok 6 - indent in ../t0060-daemon.sh is not using tabs
ok 7 - indent in ../t0276-cidv0v1.sh is not using tabs
ok 8 - indent in ../t0114-gateway-subdomains.sh is not using tabs
ok 9 - indent in ../t0600-issues-and-regressions-online.sh is not using tabs
ok 10 - indent in ../t0142-testfilter.sh is not using tabs
ok 11 - indent in ../t0141-addfilter.sh is not using tabs
ok 12 - indent in ../t0112-gateway-cors.sh is not using tabs
ok 13 - indent in ../t0230-channel-streaming-http-content-type.sh is not using tabs
ok 14 - indent in ../t0012-completion-fish.sh is not using tabs
ok 15 - indent in ../t0067-unix-api.sh is not using tabs
ok 16 - indent in ../t0021-config.sh is not using tabs
ok 17 - indent in ../t0042-add-skip.sh is not using tabs
ok 18 - indent in ../t0003-docker-migrate.sh is not using tabs
ok 19 - indent in ../t0271-filestore-utils.sh is not using tabs
ok 20 - indent in ../t0152-profile.sh is not using tabs
ok 21 - indent in ../t0080-repo.sh is not using tabs
ok 22 - indent in ../t0061-daemon-opts.sh is not using tabs
ok 23 - indent in ../t0183-namesys-pubsub.sh is not using tabs
ok 24 - indent in ../t0063-daemon-init.sh is not using tabs
ok 25 - indent in ../t0800-blake3.sh is not using tabs
ok 26 - indent in ../t0070-user-config.sh is not using tabs
ok 27 - indent in ../t0140-swarm.sh is not using tabs
ok 28 - indent in ../t0260-sharding.sh is not using tabs
ok 29 - indent in ../t0251-files-flushing.sh is not using tabs
ok 30 - indent in ../t0250-files-api.sh is not using tabs
ok 31 - indent in ../t0053-dag.sh is not using tabs
ok 32 - indent in ../lib/test-aggregate-junit-reports.sh is not using tabs
ok 33 - indent in ../lib/test-lib-hashes.sh is not using tabs
ok 34 - indent in ../lib/test-lib.sh is not using tabs
ok 35 - indent in ../lib/test-aggregate-results.sh is not using tabs
ok 36 - indent in ../t0322-pubsub-http-rpc.sh is not using tabs
ok 37 - indent in ../t0150-clisuggest.sh is not using tabs
ok 38 - indent in ../t0236-cli-api-dns-resolve.sh is not using tabs
ok 39 - indent in ../t0055-dag-put-json-new-line.sh is not using tabs
ok 40 - indent in ../t0410-api-add.sh is not using tabs
ok 41 - indent in ../t0180-p2p.sh is not using tabs
ok 42 - indent in ../t0235-cli-request.sh is not using tabs
ok 43 - indent in ../t0120-bootstrap.sh is not using tabs
ok 44 - indent in ../t0052-object-diff.sh is not using tabs
ok 45 - indent in ../t0321-pubsub-gossipsub.sh is not using tabs
ok 46 - indent in ../t0081-repo-pinning.sh is not using tabs
ok 47 - indent in ../t0280-plugin.sh is not using tabs
ok 48 - indent in ../t0027-rotate.sh is not using tabs
ok 49 - indent in ../t0022-init-default.sh is not using tabs
ok 50 - indent in ../t0240-republisher.sh is not using tabs
ok 51 - indent in ../t0018-indent.sh is not using tabs
ok 52 - indent in ../t0121-bootstrap-iptb.sh is not using tabs
ok 53 - indent in ../t0032-mount-sharded.sh is not using tabs
ok 54 - indent in ../t0031-mount-publish.sh is not using tabs
ok 55 - indent in ../t0115-gateway-dir-listing.sh is not using tabs
ok 56 - indent in ../t0066-migration.sh is not using tabs
ok 57 - indent in ../t0220-bitswap.sh is not using tabs
ok 58 - indent in ../t0151-sysdiag.sh is not using tabs
ok 59 - indent in ../t0195-noise.sh is not using tabs
ok 60 - indent in ../t0088-repo-stat-symlink.sh is not using tabs
ok 61 - indent in ../t0272-urlstore.sh is not using tabs
ok 62 - indent in ../t0024-datastore-config.sh is not using tabs
ok 63 - indent in ../t0101-iptb-name.sh is not using tabs
ok 64 - indent in ../t0023-shutdown.sh is not using tabs
ok 65 - indent in ../t0184-http-proxy-over-p2p.sh is not using tabs
ok 66 - indent in ../t0095-refs.sh is not using tabs
ok 67 - indent in ../t0030-mount.sh is not using tabs
ok 68 - indent in ../t0084-repo-read-rehash.sh is not using tabs
ok 69 - indent in ../t0280-plugin-git.sh is not using tabs
ok 70 - indent in ../t0001-tests-work.sh is not using tabs
ok 71 - indent in ../t0044-add-symlink.sh is not using tabs
ok 72 - indent in ../t0087-repo-robust-gc.sh is not using tabs
ok 73 - indent in ../t0231-channel-streaming.sh is not using tabs
ok 74 - indent in ../t0131-multinode-client-routing.sh is not using tabs
ok 75 - indent in ../t0252-files-gc.sh is not using tabs
ok 76 - indent in ../t0500-issues-and-regressions-offline.sh is not using tabs
ok 77 - indent in ../t0165-keystore.sh is not using tabs
ok 78 - indent in ../t0280-plugin-peerlog.sh is not using tabs
ok 79 - indent in ../t0320-pubsub.sh is not using tabs
ok 80 - indent in ../t0280-plugin-fx.sh is not using tabs
ok 81 - indent in ../t0047-add-mode-mtime.sh is not using tabs
ok 82 - indent in ../t0063-external.sh is not using tabs
ok 83 - indent in ../t0050-block.sh is not using tabs
ok 84 - indent in ../t0065-active-requests.sh is not using tabs
ok 85 - indent in ../t0015-basic-sh-functions.sh is not using tabs
ok 86 - indent in ../t0026-id.sh is not using tabs
ok 87 - indent in ../t0185-autonat.sh is not using tabs
ok 88 - indent in ../t0270-filestore.sh is not using tabs
ok 89 - indent in ../t0401-api-browser-security.sh is not using tabs
ok 90 - indent in ../t0045-ls.sh is not using tabs
ok 91 - indent in ../t0054-dag-car-import-export.sh is not using tabs
ok 92 - indent in ../t0119-prometheus.sh is not using tabs
ok 93 - indent in ../t0043-add-w.sh is not using tabs
ok 94 - indent in ../t0160-resolve.sh is not using tabs
ok 95 - indent in ../t0086-repo-verify.sh is not using tabs
ok 96 - indent in ../t0275-cid-security.sh is not using tabs
ok 97 - indent in ../t0280-plugin-dag-jose.sh is not using tabs
ok 98 - indent in ../t0090-get.sh is not using tabs
ok 99 - indent in ../t0040-add-and-cat.sh is not using tabs
ok 100 - indent in ../t0046-id-hash.sh is not using tabs
ok 101 - indent in ../t0064-api-file.sh is not using tabs
ok 102 - indent in ../t0082-repo-gc-auto.sh is not using tabs
ok 103 - indent in ../t0181-private-network.sh is not using tabs
ok 104 - indent in ../t0182-circuit-relay.sh is not using tabs
ok 105 - indent in ../t0191-webtransport-ping.sh is not using tabs
ok 106 - indent in ../t0400-api-no-gateway.sh is not using tabs
ok 107 - indent in ../t0109-gateway-web-_redirects.sh is not using tabs
ok 108 - indent in ../t0116-gateway-cache.sh is not using tabs
ok 109 - indent in ../t0025-datastores.sh is not using tabs

Back to top

TestCase t0021-config

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.090
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.172
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.459
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"
ok 3 - prepare config -- mounting
4 - ipfs config succeeds Success 0.072
System.out »
expecting success: 
    ipfs config  "Addresses.API" "foo"
  
ok 4 - ipfs config succeeds
5 - ipfs config output looks good Success 0.076
System.out »
expecting success: 
    echo "foo" >expected &&
    if [ != "--json"]; then
      ipfs config "Addresses.API" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.API" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 5 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
6 - ipfs config succeeds Success 0.080
System.out »
expecting success: 
    ipfs config  "Addresses.Gateway" "bar"
  
ok 6 - ipfs config succeeds
7 - ipfs config output looks good Success 0.080
System.out »
expecting success: 
    echo "bar" >expected &&
    if [ != "--json"]; then
      ipfs config "Addresses.Gateway" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.Gateway" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 7 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
8 - ipfs config succeeds Success 0.068
System.out »
expecting success: 
    ipfs config  "Datastore.GCPeriod" "baz"
  
ok 8 - ipfs config succeeds
9 - ipfs config output looks good Success 0.072
System.out »
expecting success: 
    echo "baz" >expected &&
    if [ != "--json"]; then
      ipfs config "Datastore.GCPeriod" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.GCPeriod" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 9 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
10 - ipfs config succeeds Success 0.087
System.out »
expecting success: 
    ipfs config  "AutoNAT.ServiceMode" "enabled"
  
ok 10 - ipfs config succeeds
11 - ipfs config output looks good Success 0.081
System.out »
expecting success: 
    echo "enabled" >expected &&
    if [ != "--json"]; then
      ipfs config "AutoNAT.ServiceMode" >actual &&
      test_cmp expected actual
    else 
      ipfs config "AutoNAT.ServiceMode" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 11 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
12 - ipfs config succeeds Success 0.084
System.out »
expecting success: 
    ipfs config --bool "Discovery.MDNS.Enabled" "true"
  
ok 12 - ipfs config succeeds
13 - ipfs config output looks good Success 0.069
System.out »
expecting success: 
    echo "true" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Discovery.MDNS.Enabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Discovery.MDNS.Enabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 13 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
14 - ipfs config succeeds Success 0.080
System.out »
expecting success: 
    ipfs config --bool "Discovery.MDNS.Enabled" "false"
  
ok 14 - ipfs config succeeds
15 - ipfs config output looks good Success 0.069
System.out »
expecting success: 
    echo "false" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Discovery.MDNS.Enabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Discovery.MDNS.Enabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 15 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
16 - ipfs config succeeds Success 0.070
System.out »
expecting success: 
    ipfs config --json "Datastore.HashOnRead" "true"
  
ok 16 - ipfs config succeeds
17 - ipfs config output looks good Success 0.068
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Datastore.HashOnRead" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.HashOnRead" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 17 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
18 - ipfs config succeeds Success 0.070
System.out »
expecting success: 
    ipfs config --json "Datastore.HashOnRead" "false"
  
ok 18 - ipfs config succeeds
19 - ipfs config output looks good Success 0.073
System.out »
expecting success: 
    echo "false" >expected &&
    if [--json != "--json"]; then
      ipfs config "Datastore.HashOnRead" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.HashOnRead" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 19 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
20 - ipfs config succeeds Success 0.073
System.out »
expecting success: 
    ipfs config --json "Experimental.FilestoreEnabled" "true"
  
ok 20 - ipfs config succeeds
21 - ipfs config output looks good Success 0.076
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Experimental.FilestoreEnabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Experimental.FilestoreEnabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 21 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
22 - ipfs config succeeds Success 0.084
System.out »
expecting success: 
    ipfs config --json "Import.BatchMaxSize" "null"
  
ok 22 - ipfs config succeeds
23 - ipfs config output looks good Success 0.109
System.out »
expecting success: 
    echo "null" >expected &&
    if [--json != "--json"]; then
      ipfs config "Import.BatchMaxSize" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Import.BatchMaxSize" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 23 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
24 - ipfs config succeeds Success 0.083
System.out »
expecting success: 
    ipfs config --json "Import.UnixFSRawLeaves" "true"
  
ok 24 - ipfs config succeeds
25 - ipfs config output looks good Success 0.098
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Import.UnixFSRawLeaves" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Import.UnixFSRawLeaves" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 25 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
26 - ipfs config succeeds Success 0.081
System.out »
expecting success: 
    ipfs config --json "Routing.Routers.Test" "{\"Parameters\":\"Test\",\"Type\":\"Test\"}"
  
ok 26 - ipfs config succeeds
27 - ipfs config output looks good Success 0.093
System.out »
expecting success: 
    echo "{\"Parameters\":\"Test\",\"Type\":\"Test\"}" >expected &&
    if [--json != "--json"]; then
      ipfs config "Routing.Routers.Test" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Routing.Routers.Test" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 27 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
28 - ipfs config succeeds Success 0.090
System.out »
expecting success: 
    ipfs config --json "Experimental.OptimisticProvideJobsPoolSize" "1337"
  
ok 28 - ipfs config succeeds
29 - ipfs config output looks good Success 0.100
System.out »
expecting success: 
    echo "1337" >expected &&
    if [--json != "--json"]; then
      ipfs config "Experimental.OptimisticProvideJobsPoolSize" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Experimental.OptimisticProvideJobsPoolSize" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 29 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
30 - ipfs config succeeds Success 0.108
System.out »
expecting success: 
    ipfs config --json "Addresses.Swarm" "[\"test\",\"test\",\"test\"]"
  
ok 30 - ipfs config succeeds
31 - ipfs config output looks good Success 0.111
System.out »
expecting success: 
    echo "[\"test\",\"test\",\"test\"]" >expected &&
    if [--json != "--json"]; then
      ipfs config "Addresses.Swarm" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.Swarm" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 31 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
32 - ipfs config succeeds Success 0.095
System.out »
expecting success: 
    ipfs config --json "Gateway.PublicGateways.Foo" "{\"DeserializedResponses\":true,\"InlineDNSLink\":false,\"NoDNSLink\":false,\"Paths\":[\"Bar\",\"Baz\"],\"UseSubdomains\":true}"
  
ok 32 - ipfs config succeeds
33 - ipfs config output looks good Success 0.104
System.out »
expecting success: 
    echo "{\"DeserializedResponses\":true,\"InlineDNSLink\":false,\"NoDNSLink\":false,\"Paths\":[\"Bar\",\"Baz\"],\"UseSubdomains\":true}" >expected &&
    if [--json != "--json"]; then
      ipfs config "Gateway.PublicGateways.Foo" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Gateway.PublicGateways.Foo" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 33 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
34 - ipfs config succeeds Success 0.120
System.out »
expecting success: 
    ipfs config --bool "Gateway.PublicGateways.Foo.UseSubdomains" "false"
  
ok 34 - ipfs config succeeds
35 - ipfs config output looks good Success 0.111
System.out »
expecting success: 
    echo "false" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Gateway.PublicGateways.Foo.UseSubdomains" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Gateway.PublicGateways.Foo.UseSubdomains" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 35 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
36 - 'ipfs config show' works Success 0.095
System.out »
expecting success: 
    ipfs config show >actual
  
ok 36 - 'ipfs config show' works
37 - 'ipfs config show' output looks good Success 0.018
System.out »
expecting success: 
    grep "\"API\": \"foo\"," actual &&
    grep "\"Gateway\": \"bar\"" actual &&
    grep "\"Enabled\": false" actual &&
    grep "\"HashOnRead\": false" actual
  
    "API": "foo",
    "Gateway": "bar",
    "Enabled": false
    "Enabled": false
      "Enabled": false
    "HashOnRead": false,
ok 37 - 'ipfs config show' output looks good
38 - 'ipfs config show --config-file' works Success 0.093
System.out »
expecting success: 
    mv "$IPFS_PATH/config" "$IPFS_PATH/config-moved" &&
    ipfs config --config-file "$IPFS_PATH/config-moved" show >moved &&
    test_cmp moved actual &&
    mv "$IPFS_PATH/config-moved" "$IPFS_PATH/config"
  
ok 38 - 'ipfs config show --config-file' works
39 - setup for config replace test Success 0.010
System.out »
expecting success: 
    cp "$IPFS_PATH/config" newconfig.json &&
    sed -i"~" -e /PrivKey/d -e s/10GB/11GB/ newconfig.json &&
    sed -i"~" -e '/PeerID/ {' -e ' s/,$// ' -e ' } ' newconfig.json
  
ok 39 - setup for config replace test
40 - run 'ipfs config replace' Success 0.112
System.out »
expecting success: 
  ipfs config replace - < newconfig.json
  
ok 40 - run 'ipfs config replace'
41 - check resulting config after 'ipfs config replace' Success 0.013
System.out »
expecting success: 
    sed -e /PrivKey/d "$IPFS_PATH/config" > replconfig.json &&
    sed -i"~" -e '/PeerID/ {' -e ' s/,$// ' -e ' } ' replconfig.json &&
    test_cmp replconfig.json newconfig.json
  
ok 41 - check resulting config after 'ipfs config replace'
42 - 'ipfs config Identity' fails Success 0.091
System.out »
expecting success: 
    test_expect_code 1 ipfs config Identity 2> ident_out
  
ok 42 - 'ipfs config Identity' fails
43 - output looks good Success 0.012
System.out »
expecting success: 
    echo "Error: cannot show or change private key through API" > ident_exp &&
    test_cmp ident_exp ident_out
  
ok 43 - output looks good
44 - 'ipfs config Identity.PrivKey' fails Success 0.084
System.out »
expecting success: 
    test_expect_code 1 ipfs config Identity.PrivKey 2> ident_out
  
ok 44 - 'ipfs config Identity.PrivKey' fails
45 - output looks good Success 0.009
System.out »
expecting success: 
    test_cmp ident_exp ident_out
  
ok 45 - output looks good
46 - lower cased PrivKey Success 0.104
System.out »
expecting success: 
    sed -i"~" -e 's/PrivKey/privkey/' "$IPFS_PATH/config" &&
    test_expect_code 1 ipfs config Identity.privkey 2> ident_out
  
ok 46 - lower cased PrivKey
47 - output looks good Success 0.014
System.out »
expecting success: 
    test_cmp ident_exp ident_out
  
ok 47 - output looks good
48 - fix it back Success 0.008
System.out »
expecting success: 
    sed -i"~" -e 's/privkey/PrivKey/' "$IPFS_PATH/config"
  
ok 48 - fix it back
49 - 'ipfs config show' doesn't include privkey Success 0.082
System.out »
expecting success: 
    ipfs config show > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 49 - 'ipfs config show' doesn't include privkey
50 - 'ipfs config replace' injects privkey back Success 0.121
System.out »
expecting success: 
    ipfs config replace show_config &&
    grep "\"PrivKey\":" "$IPFS_PATH/config" | grep -e ": \".\+\"" >/dev/null
  
ok 50 - 'ipfs config replace' injects privkey back
51 - 'ipfs config replace' with privkey errors out Success 0.110
System.out »
expecting success: 
    cp "$IPFS_PATH/config" real_config &&
    test_expect_code 1 ipfs config replace - < real_config 2> replace_out
  
ok 51 - 'ipfs config replace' with privkey errors out
52 - output looks good Success 0.009
System.out »
expecting success: 
    echo "Error: setting private key with API is not supported" > replace_expected
    test_cmp replace_out replace_expected
  
ok 52 - output looks good
53 - 'ipfs config replace' with lower case privkey errors out Success 0.106
System.out »
expecting success: 
    cp "$IPFS_PATH/config" real_config &&
    sed -i -e 's/PrivKey/privkey/' real_config &&
    test_expect_code 1 ipfs config replace - < real_config 2> replace_out
  
ok 53 - 'ipfs config replace' with lower case privkey errors out
54 - output looks good Success 0.008
System.out »
expecting success: 
    echo "Error: setting private key with API is not supported" > replace_expected
    test_cmp replace_out replace_expected
  
ok 54 - output looks good
55 - 'ipfs config Swarm.AddrFilters' looks good Success 0.126
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 1
  
ok 55 - 'ipfs config Swarm.AddrFilters' looks good
56 - copy ipfs config Success 0.012
System.out »
expecting success: 
    cp "$IPFS_PATH/config" before_patch
  
ok 56 - copy ipfs config
57 - 'ipfs config profile apply server' works Success 0.115
System.out »
expecting success: 
    ipfs config profile apply server
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    <> "AddrFilters": null,
    ** "AddrFilters": ["/ip4/10.0.0.0/ipcidr/8","/ip4/100.64.0.0/ipcidr/10","/ip4/169.254.0.0/ipcidr/16","/ip4/172.16.0.0/ipcidr/12","/ip4/192.0.0.0/ipcidr/24","/ip4/192.0.2.0/ipcidr/24","/ip4/192.168.0.0/ipcidr/16","/ip4/198.18.0.0/ipcidr/15","/ip4/198.51.100.0/ipcidr/24","/ip4/203.0.113.0/ipcidr/24","/ip4/240.0.0.0/ipcidr/4","/ip6/100::/ipcidr/64","/ip6/2001:2::/ipcidr/48","/ip6/2001:db8::/ipcidr/32","/ip6/fc00::/ipcidr/7","/ip6/fe80::/ipcidr/10"],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 57 - 'ipfs config profile apply server' works
58 - backup was created and looks good Success 0.011
System.out »
expecting success: 
    test_cmp "$(find "$IPFS_PATH" -name "config-*")" before_patch
  
ok 58 - backup was created and looks good
59 - 'ipfs config Swarm.AddrFilters' looks good with server profile Success 0.118
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 18
  
ok 59 - 'ipfs config Swarm.AddrFilters' looks good with server profile
60 - 'ipfs config profile apply local-discovery' works Success 0.107
System.out »
expecting success: 
    ipfs config profile apply local-discovery
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 60 - 'ipfs config profile apply local-discovery' works
61 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile Success 0.111
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 1
  
ok 61 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile
62 - save expected config Success 0.094
System.out »
expecting success: 
    ipfs config show >expected
  
ok 62 - save expected config
63 - 'ipfs config profile apply server' works Success 0.146
System.out »
expecting success: 
    ipfs config profile apply server
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 63 - 'ipfs config profile apply server' works
64 - profile server changed something Success 0.100
System.out »
expecting success: 
    ipfs config show >actual &&
    test_must_fail test_cmp expected actual
  
> diff -u expected actual
--- expected	2026-02-27 18:12:19.551212006 +0000
+++ actual	2026-02-27 18:12:19.854880806 +0000
@@ -7,7 +7,24 @@
     "Announce": [],
     "AppendAnnounce": [],
     "Gateway": "bar",
-    "NoAnnounce": [],
+    "NoAnnounce": [
+      "/ip4/10.0.0.0/ipcidr/8",
+      "/ip4/100.64.0.0/ipcidr/10",
+      "/ip4/169.254.0.0/ipcidr/16",
+      "/ip4/172.16.0.0/ipcidr/12",
+      "/ip4/192.0.0.0/ipcidr/24",
+      "/ip4/192.0.2.0/ipcidr/24",
+      "/ip4/192.168.0.0/ipcidr/16",
+      "/ip4/198.18.0.0/ipcidr/15",
+      "/ip4/198.51.100.0/ipcidr/24",
+      "/ip4/203.0.113.0/ipcidr/24",
+      "/ip4/240.0.0.0/ipcidr/4",
+      "/ip6/100::/ipcidr/64",
+      "/ip6/2001:2::/ipcidr/48",
+      "/ip6/2001:db8::/ipcidr/32",
+      "/ip6/fc00::/ipcidr/7",
+      "/ip6/fe80::/ipcidr/10"
+    ],
     "Swarm": [
       "test",
       "test",
@@ -58,7 +75,7 @@
   },
   "Discovery": {
     "MDNS": {
-      "Enabled": true
+      "Enabled": false
     }
   },
   "Experimental": {
@@ -158,10 +175,27 @@
     }
   },
   "Swarm": {
-    "AddrFilters": [],
+    "AddrFilters": [
+      "/ip4/10.0.0.0/ipcidr/8",
+      "/ip4/100.64.0.0/ipcidr/10",
+      "/ip4/169.254.0.0/ipcidr/16",
+      "/ip4/172.16.0.0/ipcidr/12",
+      "/ip4/192.0.0.0/ipcidr/24",
+      "/ip4/192.0.2.0/ipcidr/24",
+      "/ip4/192.168.0.0/ipcidr/16",
+      "/ip4/198.18.0.0/ipcidr/15",
+      "/ip4/198.51.100.0/ipcidr/24",
+      "/ip4/203.0.113.0/ipcidr/24",
+      "/ip4/240.0.0.0/ipcidr/4",
+      "/ip6/100::/ipcidr/64",
+      "/ip6/2001:2::/ipcidr/48",
+      "/ip6/2001:db8::/ipcidr/32",
+      "/ip6/fc00::/ipcidr/7",
+      "/ip6/fe80::/ipcidr/10"
+    ],
     "ConnMgr": {},
     "DisableBandwidthMetrics": false,
-    "DisableNatPortMap": false,
+    "DisableNatPortMap": true,
     "RelayClient": {},
     "RelayService": {},
     "ResourceMgr": {},

ok 64 - profile server changed something
65 - 'ipfs config profile apply local-discovery' works Success 0.106
System.out »
expecting success: 
    ipfs config profile apply local-discovery
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 65 - 'ipfs config profile apply local-discovery' works
66 - config is back to previous state after local-discovery was applied Success 0.082
System.out »
expecting success: 
    ipfs config show >actual &&
    test_cmp expected actual
  
ok 66 - config is back to previous state after local-discovery was applied
67 - ensure test profile is applied fully Success 0.088
System.out »
expecting success: 
    ipfs config profile apply test
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "foo",
    ** "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "bar",
    ** "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "test",
        ** "": "/ip4/127.0.0.1/tcp/0",
        >> "": "test",
        >> "": "test"
        }
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 67 - ensure test profile is applied fully
68 - save expected config Success 0.072
System.out »
expecting success: 
    ipfs config show >expected
  
ok 68 - save expected config
69 - 'ipfs config profile apply default-networking' works Success 0.101
System.out »
expecting success: 
    ipfs config profile apply default-networking
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "/ip4/127.0.0.1/tcp/0",
    ** "API": "/ip4/127.0.0.1/tcp/5001",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "/ip4/127.0.0.1/tcp/0",
    ** "Gateway": "/ip4/127.0.0.1/tcp/8080",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "/ip4/127.0.0.1/tcp/0",
        ** "": "/ip4/0.0.0.0/tcp/4001",
        << "": "/ip6/::/tcp/4001",
        << "": "/ip4/0.0.0.0/udp/4001/webrtc-direct",
        << "": "/ip4/0.0.0.0/udp/4001/quic-v1",
        << "": "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
        << "": "/ip6/::/udp/4001/webrtc-direct",
        << "": "/ip6/::/udp/4001/quic-v1",
        << "": "/ip6/::/udp/4001/quic-v1/webtransport"
        }
    },
"AutoConf": {
    >> "Enabled": false
    },
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {
    >> "Enabled": false
    },
"Bitswap": {},
"Bootstrap": {
    << "": "auto"
    },
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 69 - 'ipfs config profile apply default-networking' works
70 - profile default-networking changed something Success 0.086
System.out »
expecting success: 
    ipfs config show >actual &&
    test_must_fail test_cmp expected actual
  
> diff -u expected actual
--- expected	2026-02-27 18:12:20.350347052 +0000
+++ actual	2026-02-27 18:12:20.569040301 +0000
@@ -3,13 +3,20 @@
     "HTTPHeaders": {}
   },
   "Addresses": {
-    "API": "/ip4/127.0.0.1/tcp/0",
+    "API": "/ip4/127.0.0.1/tcp/5001",
     "Announce": [],
     "AppendAnnounce": [],
-    "Gateway": "/ip4/127.0.0.1/tcp/0",
+    "Gateway": "/ip4/127.0.0.1/tcp/8080",
     "NoAnnounce": [],
     "Swarm": [
-      "/ip4/127.0.0.1/tcp/0"
+      "/ip4/0.0.0.0/tcp/4001",
+      "/ip6/::/tcp/4001",
+      "/ip4/0.0.0.0/udp/4001/webrtc-direct",
+      "/ip4/0.0.0.0/udp/4001/quic-v1",
+      "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
+      "/ip6/::/udp/4001/webrtc-direct",
+      "/ip6/::/udp/4001/quic-v1",
+      "/ip6/::/udp/4001/quic-v1/webtransport"
     ]
   },
   "AutoConf": {
@@ -22,7 +29,9 @@
     "Enabled": false
   },
   "Bitswap": {},
-  "Bootstrap": [],
+  "Bootstrap": [
+    "auto"
+  ],
   "DNS": {
     "Resolvers": {}
   },
@@ -56,7 +65,7 @@
   },
   "Discovery": {
     "MDNS": {
-      "Enabled": false
+      "Enabled": true
     }
   },
   "Experimental": {
@@ -159,7 +168,7 @@
     "AddrFilters": [],
     "ConnMgr": {},
     "DisableBandwidthMetrics": false,
-    "DisableNatPortMap": true,
+    "DisableNatPortMap": false,
     "RelayClient": {},
     "RelayService": {},
     "ResourceMgr": {},

ok 70 - profile default-networking changed something
71 - 'ipfs config profile apply test' works Success 0.087
System.out »
expecting success: 
    ipfs config profile apply test
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "/ip4/127.0.0.1/tcp/5001",
    ** "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "/ip4/127.0.0.1/tcp/8080",
    ** "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "/ip4/0.0.0.0/tcp/4001",
        ** "": "/ip4/127.0.0.1/tcp/0",
        >> "": "/ip6/::/tcp/4001",
        >> "": "/ip4/0.0.0.0/udp/4001/webrtc-direct",
        >> "": "/ip4/0.0.0.0/udp/4001/quic-v1",
        >> "": "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
        >> "": "/ip6/::/udp/4001/webrtc-direct",
        >> "": "/ip6/::/udp/4001/quic-v1",
        >> "": "/ip6/::/udp/4001/quic-v1/webtransport"
        }
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": {
    >> "": "auto"
    },
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 71 - 'ipfs config profile apply test' works
72 - config is back to previous state after test was applied Success 0.065
System.out »
expecting success: 
    ipfs config show >actual &&
    test_cmp expected actual
  
ok 72 - config is back to previous state after test was applied
73 - 'ipfs config profile apply server --dry-run' doesn't alter config Success 0.093
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply server --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["/ip4/127.0.0.1/tcp/0"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 73 - 'ipfs config profile apply server --dry-run' doesn't alter config
74 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config Success 0.081
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply local-discovery --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {"API":"/ip4/127.0.0.1/tcp/0","Announce":[],"AppendAnnounce":[],"Gateway":"/ip4/127.0.0.1/tcp/0","NoAnnounce":[],"Swarm":["/ip4/127.0.0.1/tcp/0"]},
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 74 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config
75 - 'ipfs config profile apply test --dry-run' doesn't alter config Success 0.089
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply test --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {"API":"/ip4/127.0.0.1/tcp/0","Announce":[],"AppendAnnounce":[],"Gateway":"/ip4/127.0.0.1/tcp/0","NoAnnounce":[],"Swarm":["/ip4/127.0.0.1/tcp/0"]},
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {"AddrFilters":[],"ConnMgr":{},"DisableBandwidthMetrics":false,"DisableNatPortMap":true,"RelayClient":{},"RelayService":{},"ResourceMgr":{},"Transports":{"Multiplexers":{},"Network":{},"Security":{}}},
"Version": {}
}ok 75 - 'ipfs config profile apply test --dry-run' doesn't alter config
76 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info Success 0.090
System.out »
expecting success: 
    ipfs config profile apply local-discovery --dry-run > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 76 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info
77 - 'ipfs config profile apply server --dry-run' looks good with same profile info Success 0.084
System.out »
expecting success: 
    ipfs config profile apply server --dry-run > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 1
  
ok 77 - 'ipfs config profile apply server --dry-run' looks good with same profile info
78 - 'ipfs config profile apply server' looks good with same profile info Success 0.087
System.out »
expecting success: 
    ipfs config profile apply server > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 1
  
ok 78 - 'ipfs config profile apply server' looks good with same profile info
79 - 'ipfs config profile apply local-discovery' looks good with different profile info Success 0.093
System.out »
expecting success: 
    ipfs config profile apply local-discovery > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 79 - 'ipfs config profile apply local-discovery' looks good with different profile info
80 - 'ipfs config profile apply test' looks good with different profile info Success 0.088
System.out »
expecting success: 
    ipfs config profile apply test > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 80 - 'ipfs config profile apply test' looks good with different profile info
81 - 'ipfs config profile apply test --dry-run' doesn't include privkey Success 0.077
System.out »
expecting success: 
    ipfs config profile apply test --dry-run > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 81 - 'ipfs config profile apply test --dry-run' doesn't include privkey
82 - 'ipfs config profile apply test' doesn't include privkey Success 0.095
System.out »
expecting success: 
    ipfs config profile apply test > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 82 - 'ipfs config profile apply test' doesn't include privkey
83 - cleanup config backups Success 0.018
System.out »
expecting success: 
    find "$IPFS_PATH" -name "config-*" -exec rm {} \;
  
ok 83 - cleanup config backups
84 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 84 - 'ipfs daemon' succeeds
85 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 85 - api file shows up
86 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 86 - set up address variables
87 - get swarm addresses Success 0.066
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 87 - get swarm addresses
88 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 88 - set swarm address vars
89 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 89 - 'ipfs daemon' is ready
90 - ipfs config succeeds Success 0.064
System.out »
expecting success: 
    ipfs config  "Addresses.API" "foo"
  
ok 90 - ipfs config succeeds
91 - ipfs config output looks good Success 0.063
System.out »
expecting success: 
    echo "foo" >expected &&
    if [ != "--json"]; then
      ipfs config "Addresses.API" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.API" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 91 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
92 - ipfs config succeeds Success 0.068
System.out »
expecting success: 
    ipfs config  "Addresses.Gateway" "bar"
  
ok 92 - ipfs config succeeds
93 - ipfs config output looks good Success 0.072
System.out »
expecting success: 
    echo "bar" >expected &&
    if [ != "--json"]; then
      ipfs config "Addresses.Gateway" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.Gateway" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 93 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
94 - ipfs config succeeds Success 0.066
System.out »
expecting success: 
    ipfs config  "Datastore.GCPeriod" "baz"
  
ok 94 - ipfs config succeeds
95 - ipfs config output looks good Success 0.071
System.out »
expecting success: 
    echo "baz" >expected &&
    if [ != "--json"]; then
      ipfs config "Datastore.GCPeriod" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.GCPeriod" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 95 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
96 - ipfs config succeeds Success 0.068
System.out »
expecting success: 
    ipfs config  "AutoNAT.ServiceMode" "enabled"
  
ok 96 - ipfs config succeeds
97 - ipfs config output looks good Success 0.079
System.out »
expecting success: 
    echo "enabled" >expected &&
    if [ != "--json"]; then
      ipfs config "AutoNAT.ServiceMode" >actual &&
      test_cmp expected actual
    else 
      ipfs config "AutoNAT.ServiceMode" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 97 - ipfs config output looks good
System.err »
sharness.sh: line 439: [: missing `]'
98 - ipfs config succeeds Success 0.067
System.out »
expecting success: 
    ipfs config --bool "Discovery.MDNS.Enabled" "true"
  
ok 98 - ipfs config succeeds
99 - ipfs config output looks good Success 0.071
System.out »
expecting success: 
    echo "true" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Discovery.MDNS.Enabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Discovery.MDNS.Enabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 99 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
100 - ipfs config succeeds Success 0.063
System.out »
expecting success: 
    ipfs config --bool "Discovery.MDNS.Enabled" "false"
  
ok 100 - ipfs config succeeds
101 - ipfs config output looks good Success 0.066
System.out »
expecting success: 
    echo "false" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Discovery.MDNS.Enabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Discovery.MDNS.Enabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 101 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
102 - ipfs config succeeds Success 0.074
System.out »
expecting success: 
    ipfs config --json "Datastore.HashOnRead" "true"
  
ok 102 - ipfs config succeeds
103 - ipfs config output looks good Success 0.067
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Datastore.HashOnRead" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.HashOnRead" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 103 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
104 - ipfs config succeeds Success 0.075
System.out »
expecting success: 
    ipfs config --json "Datastore.HashOnRead" "false"
  
ok 104 - ipfs config succeeds
105 - ipfs config output looks good Success 0.089
System.out »
expecting success: 
    echo "false" >expected &&
    if [--json != "--json"]; then
      ipfs config "Datastore.HashOnRead" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Datastore.HashOnRead" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 105 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
106 - ipfs config succeeds Success 0.072
System.out »
expecting success: 
    ipfs config --json "Experimental.FilestoreEnabled" "true"
  
ok 106 - ipfs config succeeds
107 - ipfs config output looks good Success 0.074
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Experimental.FilestoreEnabled" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Experimental.FilestoreEnabled" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 107 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
108 - ipfs config succeeds Success 0.069
System.out »
expecting success: 
    ipfs config --json "Import.BatchMaxSize" "null"
  
ok 108 - ipfs config succeeds
109 - ipfs config output looks good Success 0.069
System.out »
expecting success: 
    echo "null" >expected &&
    if [--json != "--json"]; then
      ipfs config "Import.BatchMaxSize" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Import.BatchMaxSize" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 109 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
110 - ipfs config succeeds Success 0.068
System.out »
expecting success: 
    ipfs config --json "Import.UnixFSRawLeaves" "true"
  
ok 110 - ipfs config succeeds
111 - ipfs config output looks good Success 0.072
System.out »
expecting success: 
    echo "true" >expected &&
    if [--json != "--json"]; then
      ipfs config "Import.UnixFSRawLeaves" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Import.UnixFSRawLeaves" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 111 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
112 - ipfs config succeeds Success 0.086
System.out »
expecting success: 
    ipfs config --json "Routing.Routers.Test" "{\"Parameters\":\"Test\",\"Type\":\"Test\"}"
  
ok 112 - ipfs config succeeds
113 - ipfs config output looks good Success 0.067
System.out »
expecting success: 
    echo "{\"Parameters\":\"Test\",\"Type\":\"Test\"}" >expected &&
    if [--json != "--json"]; then
      ipfs config "Routing.Routers.Test" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Routing.Routers.Test" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 113 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
114 - ipfs config succeeds Success 0.065
System.out »
expecting success: 
    ipfs config --json "Experimental.OptimisticProvideJobsPoolSize" "1337"
  
ok 114 - ipfs config succeeds
115 - ipfs config output looks good Success 0.073
System.out »
expecting success: 
    echo "1337" >expected &&
    if [--json != "--json"]; then
      ipfs config "Experimental.OptimisticProvideJobsPoolSize" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Experimental.OptimisticProvideJobsPoolSize" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 115 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
116 - ipfs config succeeds Success 0.072
System.out »
expecting success: 
    ipfs config --json "Addresses.Swarm" "[\"test\",\"test\",\"test\"]"
  
ok 116 - ipfs config succeeds
117 - ipfs config output looks good Success 0.073
System.out »
expecting success: 
    echo "[\"test\",\"test\",\"test\"]" >expected &&
    if [--json != "--json"]; then
      ipfs config "Addresses.Swarm" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Addresses.Swarm" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 117 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
118 - ipfs config succeeds Success 0.070
System.out »
expecting success: 
    ipfs config --json "Gateway.PublicGateways.Foo" "{\"DeserializedResponses\":true,\"InlineDNSLink\":false,\"NoDNSLink\":false,\"Paths\":[\"Bar\",\"Baz\"],\"UseSubdomains\":true}"
  
ok 118 - ipfs config succeeds
119 - ipfs config output looks good Success 0.069
System.out »
expecting success: 
    echo "{\"DeserializedResponses\":true,\"InlineDNSLink\":false,\"NoDNSLink\":false,\"Paths\":[\"Bar\",\"Baz\"],\"UseSubdomains\":true}" >expected &&
    if [--json != "--json"]; then
      ipfs config "Gateway.PublicGateways.Foo" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Gateway.PublicGateways.Foo" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 119 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--json: command not found
120 - ipfs config succeeds Success 0.072
System.out »
expecting success: 
    ipfs config --bool "Gateway.PublicGateways.Foo.UseSubdomains" "false"
  
ok 120 - ipfs config succeeds
121 - ipfs config output looks good Success 0.074
System.out »
expecting success: 
    echo "false" >expected &&
    if [--bool != "--json"]; then
      ipfs config "Gateway.PublicGateways.Foo.UseSubdomains" >actual &&
      test_cmp expected actual
    else 
      ipfs config "Gateway.PublicGateways.Foo.UseSubdomains" | tr -d "\n\t " >actual &&
      echo >>actual &&
      test_cmp expected actual
    fi
  
ok 121 - ipfs config output looks good
System.err »
sharness.sh: line 439: [--bool: command not found
122 - 'ipfs config show' works Success 0.070
System.out »
expecting success: 
    ipfs config show >actual
  
ok 122 - 'ipfs config show' works
123 - 'ipfs config show' output looks good Success 0.011
System.out »
expecting success: 
    grep "\"API\": \"foo\"," actual &&
    grep "\"Gateway\": \"bar\"" actual &&
    grep "\"Enabled\": false" actual &&
    grep "\"HashOnRead\": false" actual
  
    "API": "foo",
    "Gateway": "bar",
    "Enabled": false
    "Enabled": false
      "Enabled": false
    "HashOnRead": false,
ok 123 - 'ipfs config show' output looks good
124 - 'ipfs config show --config-file' works Success 0.083
System.out »
expecting success: 
    mv "$IPFS_PATH/config" "$IPFS_PATH/config-moved" &&
    ipfs config --config-file "$IPFS_PATH/config-moved" show >moved &&
    test_cmp moved actual &&
    mv "$IPFS_PATH/config-moved" "$IPFS_PATH/config"
  
ok 124 - 'ipfs config show --config-file' works
125 - setup for config replace test Success 0.008
System.out »
expecting success: 
    cp "$IPFS_PATH/config" newconfig.json &&
    sed -i"~" -e /PrivKey/d -e s/10GB/11GB/ newconfig.json &&
    sed -i"~" -e '/PeerID/ {' -e ' s/,$// ' -e ' } ' newconfig.json
  
ok 125 - setup for config replace test
126 - run 'ipfs config replace' Success 0.108
System.out »
expecting success: 
  ipfs config replace - < newconfig.json
  
ok 126 - run 'ipfs config replace'
127 - check resulting config after 'ipfs config replace' Success 0.012
System.out »
expecting success: 
    sed -e /PrivKey/d "$IPFS_PATH/config" > replconfig.json &&
    sed -i"~" -e '/PeerID/ {' -e ' s/,$// ' -e ' } ' replconfig.json &&
    test_cmp replconfig.json newconfig.json
  
ok 127 - check resulting config after 'ipfs config replace'
128 - 'ipfs config Identity' fails Success 0.077
System.out »
expecting success: 
    test_expect_code 1 ipfs config Identity 2> ident_out
  
ok 128 - 'ipfs config Identity' fails
129 - output looks good Success 0.006
System.out »
expecting success: 
    echo "Error: cannot show or change private key through API" > ident_exp &&
    test_cmp ident_exp ident_out
  
ok 129 - output looks good
130 - 'ipfs config Identity.PrivKey' fails Success 0.073
System.out »
expecting success: 
    test_expect_code 1 ipfs config Identity.PrivKey 2> ident_out
  
ok 130 - 'ipfs config Identity.PrivKey' fails
131 - output looks good Success 0.006
System.out »
expecting success: 
    test_cmp ident_exp ident_out
  
ok 131 - output looks good
132 - lower cased PrivKey Success 0.070
System.out »
expecting success: 
    sed -i"~" -e 's/PrivKey/privkey/' "$IPFS_PATH/config" &&
    test_expect_code 1 ipfs config Identity.privkey 2> ident_out
  
ok 132 - lower cased PrivKey
133 - output looks good Success 0.007
System.out »
expecting success: 
    test_cmp ident_exp ident_out
  
ok 133 - output looks good
134 - fix it back Success 0.008
System.out »
expecting success: 
    sed -i"~" -e 's/privkey/PrivKey/' "$IPFS_PATH/config"
  
ok 134 - fix it back
135 - 'ipfs config show' doesn't include privkey Success 0.067
System.out »
expecting success: 
    ipfs config show > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 135 - 'ipfs config show' doesn't include privkey
136 - 'ipfs config replace' injects privkey back Success 0.073
System.out »
expecting success: 
    ipfs config replace show_config &&
    grep "\"PrivKey\":" "$IPFS_PATH/config" | grep -e ": \".\+\"" >/dev/null
  
ok 136 - 'ipfs config replace' injects privkey back
137 - 'ipfs config replace' with privkey errors out Success 0.073
System.out »
expecting success: 
    cp "$IPFS_PATH/config" real_config &&
    test_expect_code 1 ipfs config replace - < real_config 2> replace_out
  
ok 137 - 'ipfs config replace' with privkey errors out
138 - output looks good Success 0.009
System.out »
expecting success: 
    echo "Error: setting private key with API is not supported" > replace_expected
    test_cmp replace_out replace_expected
  
ok 138 - output looks good
139 - 'ipfs config replace' with lower case privkey errors out Success 0.073
System.out »
expecting success: 
    cp "$IPFS_PATH/config" real_config &&
    sed -i -e 's/PrivKey/privkey/' real_config &&
    test_expect_code 1 ipfs config replace - < real_config 2> replace_out
  
ok 139 - 'ipfs config replace' with lower case privkey errors out
140 - output looks good Success 0.007
System.out »
expecting success: 
    echo "Error: setting private key with API is not supported" > replace_expected
    test_cmp replace_out replace_expected
  
ok 140 - output looks good
141 - 'ipfs config Swarm.AddrFilters' looks good Success 0.073
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 1
  
ok 141 - 'ipfs config Swarm.AddrFilters' looks good
142 - copy ipfs config Success 0.008
System.out »
expecting success: 
    cp "$IPFS_PATH/config" before_patch
  
ok 142 - copy ipfs config
143 - 'ipfs config profile apply server' works Success 0.070
System.out »
expecting success: 
    ipfs config profile apply server
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 143 - 'ipfs config profile apply server' works
144 - backup was created and looks good Success 0.009
System.out »
expecting success: 
    test_cmp "$(find "$IPFS_PATH" -name "config-*")" before_patch
  
ok 144 - backup was created and looks good
145 - 'ipfs config Swarm.AddrFilters' looks good with server profile Success 0.074
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 18
  
ok 145 - 'ipfs config Swarm.AddrFilters' looks good with server profile
146 - 'ipfs config profile apply local-discovery' works Success 0.119
System.out »
expecting success: 
    ipfs config profile apply local-discovery
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 146 - 'ipfs config profile apply local-discovery' works
147 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile Success 0.144
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > actual_config &&
    test $(cat actual_config | wc -l) = 1
  
ok 147 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile
148 - save expected config Success 0.082
System.out »
expecting success: 
    ipfs config show >expected
  
ok 148 - save expected config
149 - 'ipfs config profile apply server' works Success 0.098
System.out »
expecting success: 
    ipfs config profile apply server
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 149 - 'ipfs config profile apply server' works
150 - profile server changed something Success 0.108
System.out »
expecting success: 
    ipfs config show >actual &&
    test_must_fail test_cmp expected actual
  
> diff -u expected actual
--- expected	2026-02-27 18:12:27.872519994 +0000
+++ actual	2026-02-27 18:12:28.135519682 +0000
@@ -7,7 +7,24 @@
     "Announce": [],
     "AppendAnnounce": [],
     "Gateway": "bar",
-    "NoAnnounce": [],
+    "NoAnnounce": [
+      "/ip4/10.0.0.0/ipcidr/8",
+      "/ip4/100.64.0.0/ipcidr/10",
+      "/ip4/169.254.0.0/ipcidr/16",
+      "/ip4/172.16.0.0/ipcidr/12",
+      "/ip4/192.0.0.0/ipcidr/24",
+      "/ip4/192.0.2.0/ipcidr/24",
+      "/ip4/192.168.0.0/ipcidr/16",
+      "/ip4/198.18.0.0/ipcidr/15",
+      "/ip4/198.51.100.0/ipcidr/24",
+      "/ip4/203.0.113.0/ipcidr/24",
+      "/ip4/240.0.0.0/ipcidr/4",
+      "/ip6/100::/ipcidr/64",
+      "/ip6/2001:2::/ipcidr/48",
+      "/ip6/2001:db8::/ipcidr/32",
+      "/ip6/fc00::/ipcidr/7",
+      "/ip6/fe80::/ipcidr/10"
+    ],
     "Swarm": [
       "test",
       "test",
@@ -58,7 +75,7 @@
   },
   "Discovery": {
     "MDNS": {
-      "Enabled": true
+      "Enabled": false
     }
   },
   "Experimental": {
@@ -158,10 +175,27 @@
     }
   },
   "Swarm": {
-    "AddrFilters": [],
+    "AddrFilters": [
+      "/ip4/10.0.0.0/ipcidr/8",
+      "/ip4/100.64.0.0/ipcidr/10",
+      "/ip4/169.254.0.0/ipcidr/16",
+      "/ip4/172.16.0.0/ipcidr/12",
+      "/ip4/192.0.0.0/ipcidr/24",
+      "/ip4/192.0.2.0/ipcidr/24",
+      "/ip4/192.168.0.0/ipcidr/16",
+      "/ip4/198.18.0.0/ipcidr/15",
+      "/ip4/198.51.100.0/ipcidr/24",
+      "/ip4/203.0.113.0/ipcidr/24",
+      "/ip4/240.0.0.0/ipcidr/4",
+      "/ip6/100::/ipcidr/64",
+      "/ip6/2001:2::/ipcidr/48",
+      "/ip6/2001:db8::/ipcidr/32",
+      "/ip6/fc00::/ipcidr/7",
+      "/ip6/fe80::/ipcidr/10"
+    ],
     "ConnMgr": {},
     "DisableBandwidthMetrics": false,
-    "DisableNatPortMap": false,
+    "DisableNatPortMap": true,
     "RelayClient": {},
     "RelayService": {},
     "ResourceMgr": {},

ok 150 - profile server changed something
151 - 'ipfs config profile apply local-discovery' works Success 0.112
System.out »
expecting success: 
    ipfs config profile apply local-discovery
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "foo",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "bar",
    "NoAnnounce": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["test","test","test"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        >> "": "/ip4/10.0.0.0/ipcidr/8",
        >> "": "/ip4/100.64.0.0/ipcidr/10",
        >> "": "/ip4/169.254.0.0/ipcidr/16",
        >> "": "/ip4/172.16.0.0/ipcidr/12",
        >> "": "/ip4/192.0.0.0/ipcidr/24",
        >> "": "/ip4/192.0.2.0/ipcidr/24",
        >> "": "/ip4/192.168.0.0/ipcidr/16",
        >> "": "/ip4/198.18.0.0/ipcidr/15",
        >> "": "/ip4/198.51.100.0/ipcidr/24",
        >> "": "/ip4/203.0.113.0/ipcidr/24",
        >> "": "/ip4/240.0.0.0/ipcidr/4",
        >> "": "/ip6/100::/ipcidr/64",
        >> "": "/ip6/2001:2::/ipcidr/48",
        >> "": "/ip6/2001:db8::/ipcidr/32",
        >> "": "/ip6/fc00::/ipcidr/7",
        >> "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 151 - 'ipfs config profile apply local-discovery' works
152 - config is back to previous state after local-discovery was applied Success 0.095
System.out »
expecting success: 
    ipfs config show >actual &&
    test_cmp expected actual
  
ok 152 - config is back to previous state after local-discovery was applied
153 - ensure test profile is applied fully Success 0.107
System.out »
expecting success: 
    ipfs config profile apply test
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "foo",
    ** "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "bar",
    ** "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "test",
        ** "": "/ip4/127.0.0.1/tcp/0",
        >> "": "test",
        >> "": "test"
        }
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 153 - ensure test profile is applied fully
154 - save expected config Success 0.094
System.out »
expecting success: 
    ipfs config show >expected
  
ok 154 - save expected config
155 - 'ipfs config profile apply default-networking' works Success 0.110
System.out »
expecting success: 
    ipfs config profile apply default-networking
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "/ip4/127.0.0.1/tcp/0",
    ** "API": "/ip4/127.0.0.1/tcp/5001",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "/ip4/127.0.0.1/tcp/0",
    ** "Gateway": "/ip4/127.0.0.1/tcp/8080",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "/ip4/127.0.0.1/tcp/0",
        ** "": "/ip4/0.0.0.0/tcp/4001",
        << "": "/ip6/::/tcp/4001",
        << "": "/ip4/0.0.0.0/udp/4001/webrtc-direct",
        << "": "/ip4/0.0.0.0/udp/4001/quic-v1",
        << "": "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
        << "": "/ip6/::/udp/4001/webrtc-direct",
        << "": "/ip6/::/udp/4001/quic-v1",
        << "": "/ip6/::/udp/4001/quic-v1/webtransport"
        }
    },
"AutoConf": {
    >> "Enabled": false
    },
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {
    >> "Enabled": false
    },
"Bitswap": {},
"Bootstrap": {
    << "": "auto"
    },
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 155 - 'ipfs config profile apply default-networking' works
156 - profile default-networking changed something Success 0.150
System.out »
expecting success: 
    ipfs config show >actual &&
    test_must_fail test_cmp expected actual
  
> diff -u expected actual
--- expected	2026-02-27 18:12:28.688519027 +0000
+++ actual	2026-02-27 18:12:28.959518706 +0000
@@ -3,13 +3,20 @@
     "HTTPHeaders": {}
   },
   "Addresses": {
-    "API": "/ip4/127.0.0.1/tcp/0",
+    "API": "/ip4/127.0.0.1/tcp/5001",
     "Announce": [],
     "AppendAnnounce": [],
-    "Gateway": "/ip4/127.0.0.1/tcp/0",
+    "Gateway": "/ip4/127.0.0.1/tcp/8080",
     "NoAnnounce": [],
     "Swarm": [
-      "/ip4/127.0.0.1/tcp/0"
+      "/ip4/0.0.0.0/tcp/4001",
+      "/ip6/::/tcp/4001",
+      "/ip4/0.0.0.0/udp/4001/webrtc-direct",
+      "/ip4/0.0.0.0/udp/4001/quic-v1",
+      "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
+      "/ip6/::/udp/4001/webrtc-direct",
+      "/ip6/::/udp/4001/quic-v1",
+      "/ip6/::/udp/4001/quic-v1/webtransport"
     ]
   },
   "AutoConf": {
@@ -22,7 +29,9 @@
     "Enabled": false
   },
   "Bitswap": {},
-  "Bootstrap": [],
+  "Bootstrap": [
+    "auto"
+  ],
   "DNS": {
     "Resolvers": {}
   },
@@ -56,7 +65,7 @@
   },
   "Discovery": {
     "MDNS": {
-      "Enabled": false
+      "Enabled": true
     }
   },
   "Experimental": {
@@ -159,7 +168,7 @@
     "AddrFilters": [],
     "ConnMgr": {},
     "DisableBandwidthMetrics": false,
-    "DisableNatPortMap": true,
+    "DisableNatPortMap": false,
     "RelayClient": {},
     "RelayService": {},
     "ResourceMgr": {},

ok 156 - profile default-networking changed something
157 - 'ipfs config profile apply test' works Success 0.118
System.out »
expecting success: 
    ipfs config profile apply test
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    <> "API": "/ip4/127.0.0.1/tcp/5001",
    ** "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    <> "Gateway": "/ip4/127.0.0.1/tcp/8080",
    ** "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": [],
    "Swarm": {
        <> "": "/ip4/0.0.0.0/tcp/4001",
        ** "": "/ip4/127.0.0.1/tcp/0",
        >> "": "/ip6/::/tcp/4001",
        >> "": "/ip4/0.0.0.0/udp/4001/webrtc-direct",
        >> "": "/ip4/0.0.0.0/udp/4001/quic-v1",
        >> "": "/ip4/0.0.0.0/udp/4001/quic-v1/webtransport",
        >> "": "/ip6/::/udp/4001/webrtc-direct",
        >> "": "/ip6/::/udp/4001/quic-v1",
        >> "": "/ip6/::/udp/4001/quic-v1/webtransport"
        }
    },
"AutoConf": {
    << "Enabled": false
    },
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {
    << "Enabled": false
    },
"Bitswap": {},
"Bootstrap": {
    >> "": "auto"
    },
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": true
        ** "Enabled": false
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": false,
    ** "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 157 - 'ipfs config profile apply test' works
158 - config is back to previous state after test was applied Success 0.187
System.out »
expecting success: 
    ipfs config show >actual &&
    test_cmp expected actual
  
ok 158 - config is back to previous state after test was applied
159 - 'ipfs config profile apply server --dry-run' doesn't alter config Success 0.136
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply server --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {
    "API": "/ip4/127.0.0.1/tcp/0",
    "Announce": [],
    "AppendAnnounce": [],
    "Gateway": "/ip4/127.0.0.1/tcp/0",
    "NoAnnounce": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "Swarm": ["/ip4/127.0.0.1/tcp/0"]
    },
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": {
        << "": "/ip4/10.0.0.0/ipcidr/8",
        << "": "/ip4/100.64.0.0/ipcidr/10",
        << "": "/ip4/169.254.0.0/ipcidr/16",
        << "": "/ip4/172.16.0.0/ipcidr/12",
        << "": "/ip4/192.0.0.0/ipcidr/24",
        << "": "/ip4/192.0.2.0/ipcidr/24",
        << "": "/ip4/192.168.0.0/ipcidr/16",
        << "": "/ip4/198.18.0.0/ipcidr/15",
        << "": "/ip4/198.51.100.0/ipcidr/24",
        << "": "/ip4/203.0.113.0/ipcidr/24",
        << "": "/ip4/240.0.0.0/ipcidr/4",
        << "": "/ip6/100::/ipcidr/64",
        << "": "/ip6/2001:2::/ipcidr/48",
        << "": "/ip6/2001:db8::/ipcidr/32",
        << "": "/ip6/fc00::/ipcidr/7",
        << "": "/ip6/fe80::/ipcidr/10"
        },
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    "DisableNatPortMap": true,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 159 - 'ipfs config profile apply server --dry-run' doesn't alter config
160 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config Success 0.202
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply local-discovery --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {"API":"/ip4/127.0.0.1/tcp/0","Announce":[],"AppendAnnounce":[],"Gateway":"/ip4/127.0.0.1/tcp/0","NoAnnounce":[],"Swarm":["/ip4/127.0.0.1/tcp/0"]},
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {
    "MDNS": {
        <> "Enabled": false
        ** "Enabled": true
        }
    },
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {
    "AddrFilters": [],
    "ConnMgr": {},
    "DisableBandwidthMetrics": false,
    <> "DisableNatPortMap": true,
    ** "DisableNatPortMap": false,
    "RelayClient": {},
    "RelayService": {},
    "ResourceMgr": {},
    "Transports": {"Multiplexers":{},"Network":{},"Security":{}}
    },
"Version": {}
}ok 160 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config
161 - 'ipfs config profile apply test --dry-run' doesn't alter config Success 0.174
System.out »
expecting success: 
    cat "$IPFS_PATH/config" >expected &&
    ipfs config profile apply test --dry-run &&
    cat "$IPFS_PATH/config" >actual &&
    test_cmp expected actual
  
{
"API": {"HTTPHeaders":{}},
"Addresses": {"API":"/ip4/127.0.0.1/tcp/0","Announce":[],"AppendAnnounce":[],"Gateway":"/ip4/127.0.0.1/tcp/0","NoAnnounce":[],"Swarm":["/ip4/127.0.0.1/tcp/0"]},
"AutoConf": {"Enabled":false},
"AutoNAT": {"ServiceMode":"enabled"},
"AutoTLS": {"Enabled":false},
"Bitswap": {},
"Bootstrap": [],
"DNS": {"Resolvers":{}},
"Datastore": {"BlockKeyCacheSize":null,"BloomFilterSize":0,"GCPeriod":"baz","HashOnRead":false,"Spec":{"mounts":[{"mountpoint":"/blocks","path":"blocks","prefix":"flatfs.datastore","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","sync":false,"type":"flatfs"},{"compression":"none","mountpoint":"/","path":"datastore","prefix":"leveldb.datastore","type":"levelds"}],"type":"mount"},"StorageGCWatermark":90,"StorageMax":"11GB"},
"Discovery": {"MDNS":{"Enabled":false}},
"Experimental": {"FilestoreEnabled":true,"Libp2pStreamMounting":false,"OptimisticProvide":false,"OptimisticProvideJobsPoolSize":1337,"P2pHttpProxy":false,"UrlstoreEnabled":false},
"Gateway": {"AllowCodecConversion":null,"DeserializedResponses":null,"DisableHTMLErrors":null,"ExposeRoutingAPI":null,"HTTPHeaders":{},"NoDNSLink":false,"NoFetch":false,"PublicGateways":{"Foo":{"DeserializedResponses":true,"InlineDNSLink":false,"NoDNSLink":false,"Paths":["Bar","Baz"],"UseSubdomains":false}},"RootRedirect":""},
"HTTPRetrieval": {},
"Identity": {"PeerID":"12D3KooWMku45fKUcJ5FAaASMkpG1bWc8eYRGRG3G9tHTWzJCcpW"},
"Import": {"BatchMaxNodes":null,"BatchMaxSize":null,"CidVersion":null,"FastProvideRoot":null,"FastProvideWait":null,"HashFunction":null,"UnixFSChunker":null,"UnixFSDAGLayout":null,"UnixFSDirectoryMaxLinks":null,"UnixFSFileMaxLinks":null,"UnixFSHAMTDirectoryMaxFanout":null,"UnixFSHAMTDirectorySizeEstimation":null,"UnixFSHAMTDirectorySizeThreshold":null,"UnixFSRawLeaves":true},
"Internal": {},
"Ipns": {"DelegatedPublishers":[],"RecordLifetime":"","RepublishPeriod":"","ResolveCacheSize":128},
"Migration": {},
"Mounts": {"FuseAllowOther":false,"IPFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipfs","IPNS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/ipns","MFS":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0021-config.sh/mfs"},
"Peering": {"Peers":null},
"Pinning": {"RemoteServices":{}},
"Plugins": {"Plugins":{"telemetry":{"Disabled":true}}},
"Provide": {"DHT":{}},
"Provider": {},
"Pubsub": {"DisableSigning":false,"Router":""},
"Reprovider": {},
"Routing": {"DelegatedRouters":[],"LoopbackAddressesOnLanDHT":true,"Routers":{"Test":{"Parameters":"Test","Type":"Test"}}},
"Swarm": {"AddrFilters":[],"ConnMgr":{},"DisableBandwidthMetrics":false,"DisableNatPortMap":true,"RelayClient":{},"RelayService":{},"ResourceMgr":{},"Transports":{"Multiplexers":{},"Network":{},"Security":{}}},
"Version": {}
}ok 161 - 'ipfs config profile apply test --dry-run' doesn't alter config
162 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info Success 0.168
System.out »
expecting success: 
    ipfs config profile apply local-discovery --dry-run > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 162 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info
163 - 'ipfs config profile apply server --dry-run' looks good with same profile info Success 0.184
System.out »
expecting success: 
    ipfs config profile apply server --dry-run > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 1
  
ok 163 - 'ipfs config profile apply server --dry-run' looks good with same profile info
164 - 'ipfs config profile apply server' looks good with same profile info Success 0.168
System.out »
expecting success: 
    ipfs config profile apply server > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 1
  
ok 164 - 'ipfs config profile apply server' looks good with same profile info
165 - 'ipfs config profile apply local-discovery' looks good with different profile info Success 0.287
System.out »
expecting success: 
    ipfs config profile apply local-discovery > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 165 - 'ipfs config profile apply local-discovery' looks good with different profile info
166 - 'ipfs config profile apply test' looks good with different profile info Success 0.248
System.out »
expecting success: 
    ipfs config profile apply test > diff_info &&
    test `grep "DisableNatPortMap" diff_info | wc -l` = 2
  
ok 166 - 'ipfs config profile apply test' looks good with different profile info
167 - 'ipfs config profile apply test --dry-run' doesn't include privkey Success 0.070
System.out »
expecting success: 
    ipfs config profile apply test --dry-run > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 167 - 'ipfs config profile apply test --dry-run' doesn't include privkey
168 - 'ipfs config profile apply test' doesn't include privkey Success 0.248
System.out »
expecting success: 
    ipfs config profile apply test > show_config &&
    test_expect_code 1 grep PrivKey show_config
  
ok 168 - 'ipfs config profile apply test' doesn't include privkey
169 - cleanup config backups Success 0.040
System.out »
expecting success: 
    find "$IPFS_PATH" -name "config-*" -exec rm {} \;
  
ok 169 - cleanup config backups
170 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 170 - 'ipfs daemon' is still running
171 - 'ipfs daemon' can be killed Success 0.247
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 171 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - ipfs config succeeds
ok 5 - ipfs config output looks good
ok 6 - ipfs config succeeds
ok 7 - ipfs config output looks good
ok 8 - ipfs config succeeds
ok 9 - ipfs config output looks good
ok 10 - ipfs config succeeds
ok 11 - ipfs config output looks good
ok 12 - ipfs config succeeds
ok 13 - ipfs config output looks good
ok 14 - ipfs config succeeds
ok 15 - ipfs config output looks good
ok 16 - ipfs config succeeds
ok 17 - ipfs config output looks good
ok 18 - ipfs config succeeds
ok 19 - ipfs config output looks good
ok 20 - ipfs config succeeds
ok 21 - ipfs config output looks good
ok 22 - ipfs config succeeds
ok 23 - ipfs config output looks good
ok 24 - ipfs config succeeds
ok 25 - ipfs config output looks good
ok 26 - ipfs config succeeds
ok 27 - ipfs config output looks good
ok 28 - ipfs config succeeds
ok 29 - ipfs config output looks good
ok 30 - ipfs config succeeds
ok 31 - ipfs config output looks good
ok 32 - ipfs config succeeds
ok 33 - ipfs config output looks good
ok 34 - ipfs config succeeds
ok 35 - ipfs config output looks good
ok 36 - 'ipfs config show' works
ok 37 - 'ipfs config show' output looks good
ok 38 - 'ipfs config show --config-file' works
ok 39 - setup for config replace test
ok 40 - run 'ipfs config replace'
ok 41 - check resulting config after 'ipfs config replace'
ok 42 - 'ipfs config Identity' fails
ok 43 - output looks good
ok 44 - 'ipfs config Identity.PrivKey' fails
ok 45 - output looks good
ok 46 - lower cased PrivKey
ok 47 - output looks good
ok 48 - fix it back
ok 49 - 'ipfs config show' doesn't include privkey
ok 50 - 'ipfs config replace' injects privkey back
ok 51 - 'ipfs config replace' with privkey errors out
ok 52 - output looks good
ok 53 - 'ipfs config replace' with lower case privkey errors out
ok 54 - output looks good
ok 55 - 'ipfs config Swarm.AddrFilters' looks good
ok 56 - copy ipfs config
ok 57 - 'ipfs config profile apply server' works
ok 58 - backup was created and looks good
ok 59 - 'ipfs config Swarm.AddrFilters' looks good with server profile
ok 60 - 'ipfs config profile apply local-discovery' works
ok 61 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile
ok 62 - save expected config
ok 63 - 'ipfs config profile apply server' works
ok 64 - profile server changed something
ok 65 - 'ipfs config profile apply local-discovery' works
ok 66 - config is back to previous state after local-discovery was applied
ok 67 - ensure test profile is applied fully
ok 68 - save expected config
ok 69 - 'ipfs config profile apply default-networking' works
ok 70 - profile default-networking changed something
ok 71 - 'ipfs config profile apply test' works
ok 72 - config is back to previous state after test was applied
ok 73 - 'ipfs config profile apply server --dry-run' doesn't alter config
ok 74 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config
ok 75 - 'ipfs config profile apply test --dry-run' doesn't alter config
ok 76 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info
ok 77 - 'ipfs config profile apply server --dry-run' looks good with same profile info
ok 78 - 'ipfs config profile apply server' looks good with same profile info
ok 79 - 'ipfs config profile apply local-discovery' looks good with different profile info
ok 80 - 'ipfs config profile apply test' looks good with different profile info
ok 81 - 'ipfs config profile apply test --dry-run' doesn't include privkey
ok 82 - 'ipfs config profile apply test' doesn't include privkey
ok 83 - cleanup config backups
ok 84 - 'ipfs daemon' succeeds
ok 85 - api file shows up
ok 86 - set up address variables
ok 87 - get swarm addresses
ok 88 - set swarm address vars
ok 89 - 'ipfs daemon' is ready
ok 90 - ipfs config succeeds
ok 91 - ipfs config output looks good
ok 92 - ipfs config succeeds
ok 93 - ipfs config output looks good
ok 94 - ipfs config succeeds
ok 95 - ipfs config output looks good
ok 96 - ipfs config succeeds
ok 97 - ipfs config output looks good
ok 98 - ipfs config succeeds
ok 99 - ipfs config output looks good
ok 100 - ipfs config succeeds
ok 101 - ipfs config output looks good
ok 102 - ipfs config succeeds
ok 103 - ipfs config output looks good
ok 104 - ipfs config succeeds
ok 105 - ipfs config output looks good
ok 106 - ipfs config succeeds
ok 107 - ipfs config output looks good
ok 108 - ipfs config succeeds
ok 109 - ipfs config output looks good
ok 110 - ipfs config succeeds
ok 111 - ipfs config output looks good
ok 112 - ipfs config succeeds
ok 113 - ipfs config output looks good
ok 114 - ipfs config succeeds
ok 115 - ipfs config output looks good
ok 116 - ipfs config succeeds
ok 117 - ipfs config output looks good
ok 118 - ipfs config succeeds
ok 119 - ipfs config output looks good
ok 120 - ipfs config succeeds
ok 121 - ipfs config output looks good
ok 122 - 'ipfs config show' works
ok 123 - 'ipfs config show' output looks good
ok 124 - 'ipfs config show --config-file' works
ok 125 - setup for config replace test
ok 126 - run 'ipfs config replace'
ok 127 - check resulting config after 'ipfs config replace'
ok 128 - 'ipfs config Identity' fails
ok 129 - output looks good
ok 130 - 'ipfs config Identity.PrivKey' fails
ok 131 - output looks good
ok 132 - lower cased PrivKey
ok 133 - output looks good
ok 134 - fix it back
ok 135 - 'ipfs config show' doesn't include privkey
ok 136 - 'ipfs config replace' injects privkey back
ok 137 - 'ipfs config replace' with privkey errors out
ok 138 - output looks good
ok 139 - 'ipfs config replace' with lower case privkey errors out
ok 140 - output looks good
ok 141 - 'ipfs config Swarm.AddrFilters' looks good
ok 142 - copy ipfs config
ok 143 - 'ipfs config profile apply server' works
ok 144 - backup was created and looks good
ok 145 - 'ipfs config Swarm.AddrFilters' looks good with server profile
ok 146 - 'ipfs config profile apply local-discovery' works
ok 147 - 'ipfs config Swarm.AddrFilters' looks good with applied local-discovery profile
ok 148 - save expected config
ok 149 - 'ipfs config profile apply server' works
ok 150 - profile server changed something
ok 151 - 'ipfs config profile apply local-discovery' works
ok 152 - config is back to previous state after local-discovery was applied
ok 153 - ensure test profile is applied fully
ok 154 - save expected config
ok 155 - 'ipfs config profile apply default-networking' works
ok 156 - profile default-networking changed something
ok 157 - 'ipfs config profile apply test' works
ok 158 - config is back to previous state after test was applied
ok 159 - 'ipfs config profile apply server --dry-run' doesn't alter config
ok 160 - 'ipfs config profile apply local-discovery --dry-run' doesn't alter config
ok 161 - 'ipfs config profile apply test --dry-run' doesn't alter config
ok 162 - 'ipfs config profile apply local-discovery --dry-run' looks good with different profile info
ok 163 - 'ipfs config profile apply server --dry-run' looks good with same profile info
ok 164 - 'ipfs config profile apply server' looks good with same profile info
ok 165 - 'ipfs config profile apply local-discovery' looks good with different profile info
ok 166 - 'ipfs config profile apply test' looks good with different profile info
ok 167 - 'ipfs config profile apply test --dry-run' doesn't include privkey
ok 168 - 'ipfs config profile apply test' doesn't include privkey
ok 169 - cleanup config backups
ok 170 - 'ipfs daemon' is still running
ok 171 - 'ipfs daemon' can be killed

Back to top

TestCase t0022-init-default

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.109
System.out »
expecting success: 
  export IPFS_PATH="$(pwd)/.ipfs" &&
  echo "IPFS_PATH: \"$IPFS_PATH\"" &&
  BITS="2048" &&
  ipfs init >actual_init ||
  test_fsh cat actual_init

IPFS_PATH: "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0022-init-default.sh/.ipfs"
ok 1 - ipfs init succeeds
2 - .ipfs/config has been created Success 0.004
System.out »
expecting success: 
  test -f "$IPFS_PATH"/config ||
  test_fsh ls -al .ipfs

ok 2 - .ipfs/config has been created
3 - ipfs config succeeds Success 0.073
System.out »
expecting success: 
  ipfs config $cfg_flags "$cfg_key" "$cfg_val"

ok 3 - ipfs config succeeds
4 - ipfs read config succeeds Success 0.005
System.out »
expecting success: 
  IPFS_DEFAULT_CONFIG=$(cat "$IPFS_PATH"/config)

ok 4 - ipfs read config succeeds
5 - clean up ipfs dir Success 0.006
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 5 - clean up ipfs dir
6 - ipfs init default config succeeds Success 0.109
System.out »
expecting success: 
  echo $IPFS_DEFAULT_CONFIG | ipfs init - >actual_init ||
  test_fsh cat actual_init

ok 6 - ipfs init default config succeeds
7 - ipfs config output looks good Success 0.094
System.out »
expecting success: 
  echo "$cfg_val" >expected &&
  ipfs config "$cfg_key" >actual &&
  test_cmp expected actual

ok 7 - ipfs config output looks good
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - .ipfs/config has been created
ok 3 - ipfs config succeeds
ok 4 - ipfs read config succeeds
ok 5 - clean up ipfs dir
ok 6 - ipfs init default config succeeds
ok 7 - ipfs config output looks good

Back to top

TestCase t0023-shutdown

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.096
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.146
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.439
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0023-shutdown.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0023-shutdown.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0023-shutdown.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.062
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.015
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - shutdown succeeds Success 0.061
System.out »
expecting success: 
  ipfs shutdown

ok 10 - shutdown succeeds
11 - daemon no longer running Success 0.247
System.out »
expecting success: 
  for i in $(test_seq 1 100)
  do
    go-sleep 100ms
    ! kill -0 $IPFS_PID 2>/dev/null && return
  done

ok 11 - daemon no longer running
12 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 12 - 'ipfs daemon' succeeds
13 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 13 - api file shows up
14 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 14 - set up address variables
15 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 15 - 'ipfs daemon' is ready
16 - shutdown succeeds Success 0.067
System.out »
expecting success: 
  ipfs shutdown

ok 16 - shutdown succeeds
17 - daemon no longer running Success 0.253
System.out »
expecting success: 
  for i in $(test_seq 1 100)
  do
    go-sleep 100ms
    ! kill -0 $IPFS_PID 2>/dev/null && return
  done

ok 17 - daemon no longer running
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - shutdown succeeds
ok 11 - daemon no longer running
ok 12 - 'ipfs daemon' succeeds
ok 13 - api file shows up
ok 14 - set up address variables
ok 15 - 'ipfs daemon' is ready
ok 16 - shutdown succeeds
ok 17 - daemon no longer running

Back to top

TestCase t0024-datastore-config

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.102
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.156
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.443
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0024-datastore-config.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0024-datastore-config.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0024-datastore-config.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.058
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 10 - 'ipfs daemon' is still running
11 - 'ipfs daemon' can be killed Success 0.253
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 11 - 'ipfs daemon' can be killed
12 - change runtime value in spec config Success 0.067
System.out »
expecting success: 
  ipfs config --json Datastore.Spec "$SPEC_NOSYNC"

ok 12 - change runtime value in spec config
13 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 13 - 'ipfs daemon' succeeds
14 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 14 - api file shows up
15 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 15 - set up address variables
16 - get swarm addresses Success 0.076
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 16 - get swarm addresses
17 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 17 - set swarm address vars
18 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 18 - 'ipfs daemon' is ready
19 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 19 - 'ipfs daemon' is still running
20 - 'ipfs daemon' can be killed Success 0.252
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 20 - 'ipfs daemon' can be killed
21 - change on-disk value in spec config Success 0.085
System.out »
expecting success: 
  ipfs config --json Datastore.Spec "$SPEC_NEWSHARDFUN"

ok 21 - change on-disk value in spec config
22 - can not launch daemon after on-disk value change Success 0.072
System.out »
expecting success: 
  test_must_fail ipfs daemon

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0

ok 22 - can not launch daemon after on-disk value change
System.err »
Error: datastore configuration of '{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/2","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"}' does not match what is on disk '{"mounts":[{"mountpoint":"/blocks","path":"blocks","shardFunc":"/repo/flatfs/shard/v1/next-to-last/3","type":"flatfs"},{"mountpoint":"/","path":"datastore","type":"levelds"}],"type":"mount"}'
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - 'ipfs daemon' is still running
ok 11 - 'ipfs daemon' can be killed
ok 12 - change runtime value in spec config
ok 13 - 'ipfs daemon' succeeds
ok 14 - api file shows up
ok 15 - set up address variables
ok 16 - get swarm addresses
ok 17 - set swarm address vars
ok 18 - 'ipfs daemon' is ready
ok 19 - 'ipfs daemon' is still running
ok 20 - 'ipfs daemon' can be killed
ok 21 - change on-disk value in spec config
ok 22 - can not launch daemon after on-disk value change

Back to top

TestCase t0025-datastores

Name Status Type Time(s)
1 - 'ipfs init --empty-repo=false --profile=flatfs' succeeds Success 0.114
System.out »
expecting success: 
        BITS="2048" &&
        IPFS_PATH="$proot/$profile" &&
        ipfs init --empty-repo=false --profile=$profile
    
generating ED25519 keypair...done
peer identity: 12D3KooWChh3HXq8a8jZJWjnHBjXps8Je2C84RydResmSvcDtVHA
initializing IPFS node at /tmp/t0025.FtEOzo/flatfs
to get started, enter:

	ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme

ok 1 - 'ipfs init --empty-repo=false --profile=flatfs' succeeds
2 - 'ipfs pin add' and 'pin ls' works with flatfs Success 0.157
System.out »
expecting success: 
        export IPFS_PATH="$proot/$profile" &&
        echo -n "hello_$profile" | ipfs block put --pin=true > hello_cid &&
        ipfs pin ls -t recursive "$(cat hello_cid)"
    
bafkreig2gjv6chwxhn6cuhvp2pl53yh3mdguuicbzej3qvzjj53dsn2lhe recursive
ok 2 - 'ipfs pin add' and 'pin ls' works with flatfs
3 - 'ipfs init --empty-repo=false --profile=pebbleds' succeeds Success 0.137
System.out »
expecting success: 
        BITS="2048" &&
        IPFS_PATH="$proot/$profile" &&
        ipfs init --empty-repo=false --profile=$profile
    
generating ED25519 keypair...done
peer identity: 12D3KooWNP7cy5Zw3PNQ3HKETTJwVpv8v4GVb2o6TFz6ayuTntgH
initializing IPFS node at /tmp/t0025.FtEOzo/pebbleds
to get started, enter:

	ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme

ok 3 - 'ipfs init --empty-repo=false --profile=pebbleds' succeeds
4 - 'ipfs pin add' and 'pin ls' works with pebbleds Success 0.174
System.out »
expecting success: 
        export IPFS_PATH="$proot/$profile" &&
        echo -n "hello_$profile" | ipfs block put --pin=true > hello_cid &&
        ipfs pin ls -t recursive "$(cat hello_cid)"
    
bafkreiekijm5fky6mtue3qsl46s6ybues5vf5mu66dtxrkncfjy5r23xxa recursive
ok 4 - 'ipfs pin add' and 'pin ls' works with pebbleds
5 - 'ipfs init --empty-repo=false --profile=badgerds' succeeds Success 0.107
System.out »
expecting success: 
        BITS="2048" &&
        IPFS_PATH="$proot/$profile" &&
        ipfs init --empty-repo=false --profile=$profile
    
generating ED25519 keypair...done
peer identity: 12D3KooWCSRdNhiAgfsfPGSA7qTabiBj1cDAu5ZCUrqLFrQrMkYW
initializing IPFS node at /tmp/t0025.FtEOzo/badgerds
to get started, enter:

	ipfs cat /ipfs/QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc/readme

ok 5 - 'ipfs init --empty-repo=false --profile=badgerds' succeeds
System.err »
2026-02-27T18:12:13.634Z	ERROR	plugin/badgerds	badgerds/badgerds.go:114	badger v1 datastore is deprecated and will be removed later in 2026, migrate to flatfs or experimental pebbleds: https://github.com/ipfs/kubo/issues/11186

╔════════════════════════════════════════════════════════════════════════════╗
║                                                                            ║
║  ERROR: BADGER v1 DATASTORE IS DEPRECATED                                  ║
║                                                                            ║
║  This datastore is based on badger 1.x which has not been maintained       ║
║  by its upstream maintainers for years and has known bugs (startup         ║
║  timeouts, shutdown hangs, file descriptor exhaustion, and more).          ║
║                                                                            ║
║  Badger v1 support will be REMOVED later in 2026.                          ║
║                                                                            ║
║  To migrate:                                                               ║
║    1. Create a new IPFS_PATH with flatfs (or experimental pebbleds         ║
║       if flatfs does not serve your use case):                             ║
║         export IPFS_PATH=/path/to/new/repo                                 ║
║         ipfs init --profile=flatfs                                         ║
║    2. Move pinned data via ipfs dag export/import                          ║
║       or ipfs pin ls -t recursive|add                                      ║
║    3. Decommission the old badger-based node                               ║
║                                                                            ║
║  See https://github.com/ipfs/kubo/blob/master/docs/datastores.md           ║
║      https://github.com/ipfs/kubo/issues/11186                             ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
2026-02-27T18:12:13.655Z	ERROR	plugin/badgerds	badgerds/badgerds.go:114	badger v1 datastore is deprecated and will be removed later in 2026, migrate to flatfs or experimental pebbleds: https://github.com/ipfs/kubo/issues/11186

╔════════════════════════════════════════════════════════════════════════════╗
║                                                                            ║
║  ERROR: BADGER v1 DATASTORE IS DEPRECATED                                  ║
║                                                                            ║
║  This datastore is based on badger 1.x which has not been maintained       ║
║  by its upstream maintainers for years and has known bugs (startup         ║
║  timeouts, shutdown hangs, file descriptor exhaustion, and more).          ║
║                                                                            ║
║  Badger v1 support will be REMOVED later in 2026.                          ║
║                                                                            ║
║  To migrate:                                                               ║
║    1. Create a new IPFS_PATH with flatfs (or experimental pebbleds         ║
║       if flatfs does not serve your use case):                             ║
║         export IPFS_PATH=/path/to/new/repo                                 ║
║         ipfs init --profile=flatfs                                         ║
║    2. Move pinned data via ipfs dag export/import                          ║
║       or ipfs pin ls -t recursive|add                                      ║
║    3. Decommission the old badger-based node                               ║
║                                                                            ║
║  See https://github.com/ipfs/kubo/blob/master/docs/datastores.md           ║
║      https://github.com/ipfs/kubo/issues/11186                             ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
6 - 'ipfs pin add' and 'pin ls' works with badgerds Success 0.187
System.out »
expecting success: 
        export IPFS_PATH="$proot/$profile" &&
        echo -n "hello_$profile" | ipfs block put --pin=true > hello_cid &&
        ipfs pin ls -t recursive "$(cat hello_cid)"
    
bafkreigxv3usuxjwoeutuunolgvj65az4vuojpjx6shzdgqju7a7mayqd4 recursive
ok 6 - 'ipfs pin add' and 'pin ls' works with badgerds
System.err »
2026-02-27T18:12:13.763Z	ERROR	plugin/badgerds	badgerds/badgerds.go:114	badger v1 datastore is deprecated and will be removed later in 2026, migrate to flatfs or experimental pebbleds: https://github.com/ipfs/kubo/issues/11186

╔════════════════════════════════════════════════════════════════════════════╗
║                                                                            ║
║  ERROR: BADGER v1 DATASTORE IS DEPRECATED                                  ║
║                                                                            ║
║  This datastore is based on badger 1.x which has not been maintained       ║
║  by its upstream maintainers for years and has known bugs (startup         ║
║  timeouts, shutdown hangs, file descriptor exhaustion, and more).          ║
║                                                                            ║
║  Badger v1 support will be REMOVED later in 2026.                          ║
║                                                                            ║
║  To migrate:                                                               ║
║    1. Create a new IPFS_PATH with flatfs (or experimental pebbleds         ║
║       if flatfs does not serve your use case):                             ║
║         export IPFS_PATH=/path/to/new/repo                                 ║
║         ipfs init --profile=flatfs                                         ║
║    2. Move pinned data via ipfs dag export/import                          ║
║       or ipfs pin ls -t recursive|add                                      ║
║    3. Decommission the old badger-based node                               ║
║                                                                            ║
║  See https://github.com/ipfs/kubo/blob/master/docs/datastores.md           ║
║      https://github.com/ipfs/kubo/issues/11186                             ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
2026-02-27T18:12:13.847Z	ERROR	plugin/badgerds	badgerds/badgerds.go:114	badger v1 datastore is deprecated and will be removed later in 2026, migrate to flatfs or experimental pebbleds: https://github.com/ipfs/kubo/issues/11186

╔════════════════════════════════════════════════════════════════════════════╗
║                                                                            ║
║  ERROR: BADGER v1 DATASTORE IS DEPRECATED                                  ║
║                                                                            ║
║  This datastore is based on badger 1.x which has not been maintained       ║
║  by its upstream maintainers for years and has known bugs (startup         ║
║  timeouts, shutdown hangs, file descriptor exhaustion, and more).          ║
║                                                                            ║
║  Badger v1 support will be REMOVED later in 2026.                          ║
║                                                                            ║
║  To migrate:                                                               ║
║    1. Create a new IPFS_PATH with flatfs (or experimental pebbleds         ║
║       if flatfs does not serve your use case):                             ║
║         export IPFS_PATH=/path/to/new/repo                                 ║
║         ipfs init --profile=flatfs                                         ║
║    2. Move pinned data via ipfs dag export/import                          ║
║       or ipfs pin ls -t recursive|add                                      ║
║    3. Decommission the old badger-based node                               ║
║                                                                            ║
║  See https://github.com/ipfs/kubo/blob/master/docs/datastores.md           ║
║      https://github.com/ipfs/kubo/issues/11186                             ║
║                                                                            ║
╚════════════════════════════════════════════════════════════════════════════╝
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - 'ipfs init --empty-repo=false --profile=flatfs' succeeds
ok 2 - 'ipfs pin add' and 'pin ls' works with flatfs
ok 3 - 'ipfs init --empty-repo=false --profile=pebbleds' succeeds
ok 4 - 'ipfs pin add' and 'pin ls' works with pebbleds
ok 5 - 'ipfs init --empty-repo=false --profile=badgerds' succeeds
ok 6 - 'ipfs pin add' and 'pin ls' works with badgerds

Back to top

TestCase t0026-id

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.085
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.137
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.448
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0026-id.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0026-id.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0026-id.sh/mfs"
ok 3 - prepare config -- mounting
4 - checking AgentVersion Success 0.202
System.out »
expecting success: 
  test_id_compute_agent > expected-agent-version &&
  ipfs id -f "<aver>\n" > actual-agent-version &&
  test_cmp expected-agent-version actual-agent-version

ok 4 - checking AgentVersion
5 - checking ID of self Success 0.167
System.out »
expecting success: 
  ipfs config Identity.PeerID > expected-id &&
  ipfs id -f "<id>\n" > actual-id &&
  test_cmp expected-id actual-id

ok 5 - checking ID of self
6 - checking and converting ID of a random peer while offline Success 0.080
System.out »
expecting success: 
  # Peer ID taken from `t0140-swarm.sh` test.
  echo k2k4r8ncs1yoluq95unsd7x2vfhgve0ncjoggwqx9vyh3vl8warrcp15 > expected-id &&
  ipfs id -f "<id>\n" --peerid-base base36 --offline QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N > actual-id &&
  test_cmp expected-id actual-id

ok 6 - checking and converting ID of a random peer while offline
7 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 7 - 'ipfs daemon' succeeds
8 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 8 - api file shows up
9 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 9 - set up address variables
10 - get swarm addresses Success 0.055
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 10 - get swarm addresses
11 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 11 - set swarm address vars
12 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 12 - 'ipfs daemon' is ready
13 - checking AgentVersion with suffix (local) Success 0.194
System.out »
expecting success: 
  test_id_compute_agent test-suffix > expected-agent-version &&
  ipfs id -f "<aver>\n" > actual-agent-version &&
  test_cmp expected-agent-version actual-agent-version

ok 13 - checking AgentVersion with suffix (local)
14 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.131
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 14 - set Routing.LoopbackAddressesOnLanDHT to true
15 - start up nodes with additional args Success 0.427
System.out »
expecting success: 
      iptb start -wait [0-1] -- --agent-version-suffix=test-suffix-identify
    
ok 15 - start up nodes with additional args
16 - connect nodes to each other Success 0.217
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 16 - connect nodes to each other
17 - node 0 is connected Success 0.089
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 17 - node 0 is connected
18 - node 1 is connected Success 0.090
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 18 - node 1 is connected
19 - checking AgentVersion with suffix (fetched via libp2p identify protocol) Success 0.255
System.out »
expecting success: 
  ipfsi 0 id -f "<aver>\n" > expected-identify-agent-version &&
  ipfsi 1 id "$(ipfsi 0 config Identity.PeerID)" -f "<aver>\n" > actual-libp2p-identify-agent-version &&
  test_cmp expected-identify-agent-version actual-libp2p-identify-agent-version

ok 19 - checking AgentVersion with suffix (fetched via libp2p identify protocol)
20 - 'ipfs daemon' is still running Success 0.007
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 20 - 'ipfs daemon' is still running
21 - 'ipfs daemon' can be killed Success 0.324
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 21 - 'ipfs daemon' can be killed
22 - setting Version.AgentSuffix in config Success 0.099
System.out »
expecting success: 
  ipfs config Version.AgentSuffix json-config-suffix

ok 22 - setting Version.AgentSuffix in config
23 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 23 - 'ipfs daemon' succeeds
24 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 24 - api file shows up
25 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 25 - set up address variables
26 - get swarm addresses Success 0.091
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 26 - get swarm addresses
27 - set swarm address vars Success 0.016
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 27 - set swarm address vars
28 - 'ipfs daemon' is ready Success 0.012
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 28 - 'ipfs daemon' is ready
29 - checking AgentVersion with suffix set via JSON config Success 0.231
System.out »
expecting success: 
  test_id_compute_agent json-config-suffix > expected-agent-version &&
  ipfs id -f "<aver>\n" > actual-agent-version &&
  test_cmp expected-agent-version actual-agent-version

ok 29 - checking AgentVersion with suffix set via JSON config
30 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 30 - 'ipfs daemon' is still running
31 - 'ipfs daemon' can be killed Success 0.325
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 31 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - checking AgentVersion
ok 5 - checking ID of self
ok 6 - checking and converting ID of a random peer while offline
ok 7 - 'ipfs daemon' succeeds
ok 8 - api file shows up
ok 9 - set up address variables
ok 10 - get swarm addresses
ok 11 - set swarm address vars
ok 12 - 'ipfs daemon' is ready
ok 13 - checking AgentVersion with suffix (local)
ok 14 - set Routing.LoopbackAddressesOnLanDHT to true
ok 15 - start up nodes with additional args
ok 16 - connect nodes to each other
ok 17 - node 0 is connected
ok 18 - node 1 is connected
ok 19 - checking AgentVersion with suffix (fetched via libp2p identify protocol)
ok 20 - 'ipfs daemon' is still running
ok 21 - 'ipfs daemon' can be killed
ok 22 - setting Version.AgentSuffix in config
ok 23 - 'ipfs daemon' succeeds
ok 24 - api file shows up
ok 25 - set up address variables
ok 26 - get swarm addresses
ok 27 - set swarm address vars
ok 28 - 'ipfs daemon' is ready
ok 29 - checking AgentVersion with suffix set via JSON config
ok 30 - 'ipfs daemon' is still running
ok 31 - 'ipfs daemon' can be killed

Back to top

TestCase t0027-rotate

Name Status Type Time(s)
1 - ipfs init (from rsa, to ) Success 0.113
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 1 - ipfs init (from rsa, to )
2 - Save first ID and key Success 0.173
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 2 - Save first ID and key
3 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 3 - 'ipfs daemon' succeeds
4 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 4 - api file shows up
5 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 5 - set up address variables
6 - get swarm addresses Success 0.069
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 6 - get swarm addresses
7 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 7 - set swarm address vars
8 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 8 - 'ipfs daemon' is ready
9 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 9 - 'ipfs daemon' is still running
10 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 10 - 'ipfs daemon' can be killed
11 - rotating keys Success 0.075
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWSArwwhQHDoHu9gMeWpte3pK9GL67fLZWmvEbESCYNoox
ok 11 - rotating keys
12 - 'ipfs key rotate -o self' should fail Success 0.058
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 12 - 'ipfs key rotate -o self' should fail
13 - Compare second ID and key to first Success 0.175
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:13.489536680 +0000
+++ second_id	2026-02-27 18:12:14.671999917 +0000
@@ -1 +1 @@
-QmVCf6k1Wu1a8LoSJkqjsgyq8esWjQNRdnm3jjHeFAiqCQ
\ No newline at end of file
+12D3KooWSArwwhQHDoHu9gMeWpte3pK9GL67fLZWmvEbESCYNoox
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:13.566536598 +0000
+++ second_key	2026-02-27 18:12:14.748535339 +0000
@@ -1 +1 @@
-CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDWAmD+GhbAv1DgH+JfDP5fliuhQeHPE0fz7hHH+GCrvhcUs5tKtYPClrs7mNoPoF3e/R0sv67o2w9lTDfikPmx7+oTmzgb97V3eOGgt1SjgW0kIIzFiK4y7ToPIjYpUDep+8Fza1bUya7liMzoMgl9f1v1SMCNC56WbsPEObSxa6BPYp3XMoac/XfomEtlIqWSQHbcJq28NYfFJnlk1ZToQOpCLft4HF1eQnBv2Mh5nnhJkbZpy+ewegIg8RCFR4djGx9I9M0w4dcjvW3D1YRrmG9+AzInWnB5EaRWR0DWkAsXgyGpUuLcaNmux6BXq758AzRWK/AnlXme7O0PZVdDAgMBAAE=
\ No newline at end of file
+CAESIPL7JdpCPaQk0xlBVm7s6coL9zobSl76Po0baujFAYvz
\ No newline at end of file

ok 13 - Compare second ID and key to first
14 - checking ID Success 0.304
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 14 - checking ID
15 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 15 - 'ipfs daemon' succeeds
16 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 16 - api file shows up
17 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 17 - set up address variables
18 - get swarm addresses Success 0.080
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 18 - get swarm addresses
19 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 19 - set swarm address vars
20 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 20 - 'ipfs daemon' is ready
21 - publish name with new and old keys Success 0.287
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5dm8lufapov36lckpt5sdtgyjyn4k0mn77czro6l65vg56psh9tf: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k2k4r8lyhylp04pdnw4s2usoclvknj52ztz7v4h2zbwgz8uk9dt6uij1: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 21 - publish name with new and old keys
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
22 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 22 - 'ipfs daemon' is still running
23 - 'ipfs daemon' can be killed Success 0.310
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 23 - 'ipfs daemon' can be killed
24 - clean up ipfs dir Success 0.008
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 24 - clean up ipfs dir
25 - ipfs init (from ed25519, to ) Success 0.118
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 25 - ipfs init (from ed25519, to )
26 - Save first ID and key Success 0.234
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 26 - Save first ID and key
27 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 27 - 'ipfs daemon' succeeds
28 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 28 - api file shows up
29 - set up address variables Success 0.027
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 29 - set up address variables
30 - get swarm addresses Success 0.097
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 30 - get swarm addresses
31 - set swarm address vars Success 0.021
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 31 - set swarm address vars
32 - 'ipfs daemon' is ready Success 0.013
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 32 - 'ipfs daemon' is ready
33 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 33 - 'ipfs daemon' is still running
34 - 'ipfs daemon' can be killed Success 0.317
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 34 - 'ipfs daemon' can be killed
35 - rotating keys Success 0.107
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWGkxoC5r33EN1m3PcG9Wjuw2ZBxnbgrQDNcjC6oXaPDWG
ok 35 - rotating keys
36 - 'ipfs key rotate -o self' should fail Success 0.094
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 36 - 'ipfs key rotate -o self' should fail
37 - Compare second ID and key to first Success 0.263
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:16.708293361 +0000
+++ second_id	2026-02-27 18:12:18.329531305 +0000
@@ -1 +1 @@
-12D3KooWS8xwH86UTztWZgx4vBWUM7ZwhiWdfWLFcUAR2ATx7i9U
\ No newline at end of file
+12D3KooWGkxoC5r33EN1m3PcG9Wjuw2ZBxnbgrQDNcjC6oXaPDWG
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:16.823533090 +0000
+++ second_key	2026-02-27 18:12:18.443982778 +0000
@@ -1 +1 @@
-CAESIPJ+wet9uwXJQPgAXBU1mBxSGpcr5KIkjzbUJkeXFMMP
\ No newline at end of file
+CAESIGcio8QIuLIB35eaDXxjFbDRPWxUqHVYQb5JAco+c3KR
\ No newline at end of file

ok 37 - Compare second ID and key to first
38 - checking ID Success 0.452
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 38 - checking ID
39 - 'ipfs daemon' succeeds Success 0.009
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 39 - 'ipfs daemon' succeeds
40 - api file shows up Success 0.216
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 40 - api file shows up
41 - set up address variables Success 0.027
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 41 - set up address variables
42 - get swarm addresses Success 0.089
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 42 - get swarm addresses
43 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 43 - set swarm address vars
44 - 'ipfs daemon' is ready Success 0.016
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 44 - 'ipfs daemon' is ready
45 - publish name with new and old keys Success 0.281
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5dir4mqn4tlipn3ydzy7lxcivs743htgqup9llw35u675zinnwcx: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5dm865e99oba725vwlpgx14cje73rykgnetrd5ww8hkycpm22lfz: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 45 - publish name with new and old keys
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
46 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 46 - 'ipfs daemon' is still running
47 - 'ipfs daemon' can be killed Success 0.285
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 47 - 'ipfs daemon' can be killed
48 - clean up ipfs dir Success 0.007
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 48 - clean up ipfs dir
49 - ipfs init (from , to ) Success 0.110
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 49 - ipfs init (from , to )
50 - Save first ID and key Success 0.190
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 50 - Save first ID and key
51 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 51 - 'ipfs daemon' succeeds
52 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 52 - api file shows up
53 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 53 - set up address variables
54 - get swarm addresses Success 0.073
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 54 - get swarm addresses
55 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 55 - set swarm address vars
56 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 56 - 'ipfs daemon' is ready
57 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 57 - 'ipfs daemon' is still running
58 - 'ipfs daemon' can be killed Success 0.280
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 58 - 'ipfs daemon' can be killed
59 - rotating keys Success 0.083
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWSnRyiRptSLtKdcjUto1Va58JL6hDmYPdC3RJDaQmRXyk
ok 59 - rotating keys
60 - 'ipfs key rotate -o self' should fail Success 0.070
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 60 - 'ipfs key rotate -o self' should fail
61 - Compare second ID and key to first Success 0.220
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:20.643477463 +0000
+++ second_id	2026-02-27 18:12:21.968526992 +0000
@@ -1 +1 @@
-12D3KooWM4Y57NVjLXXV7S7DN6ThuvmeYnFEPQNVozU4mJ8yPT5N
\ No newline at end of file
+12D3KooWSnRyiRptSLtKdcjUto1Va58JL6hDmYPdC3RJDaQmRXyk
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:20.744181824 +0000
+++ second_key	2026-02-27 18:12:22.058526886 +0000
@@ -1 +1 @@
-CAESIKcR4n0w7MiS0QEtw04FMAefiqPLfLL5ytQCKubeOhY1
\ No newline at end of file
+CAESIPwX0uz02qDkA6pDHX/XDI/r6/3VC3WlsLaf5bzhs2gz
\ No newline at end of file

ok 61 - Compare second ID and key to first
62 - checking ID Success 0.317
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 62 - checking ID
63 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 63 - 'ipfs daemon' succeeds
64 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 64 - api file shows up
65 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 65 - set up address variables
66 - get swarm addresses Success 0.072
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 66 - get swarm addresses
67 - set swarm address vars Success 0.012
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 67 - set swarm address vars
68 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 68 - 'ipfs daemon' is ready
69 - publish name with new and old keys Success 0.224
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5dmgs6c54ro3jzrbk6ob9ql3rxk0f3tnzue01hah7t5hrhdvcbhv: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5dkcht2creyu3fpg0ptlqy7qdagriueqni62izkip4kgh3z73yut: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 69 - publish name with new and old keys
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
70 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 70 - 'ipfs daemon' is still running
71 - 'ipfs daemon' can be killed Success 0.274
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 71 - 'ipfs daemon' can be killed
72 - clean up ipfs dir Success 0.006
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 72 - clean up ipfs dir
73 - ipfs init (from rsa, to rsa) Success 0.223
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 73 - ipfs init (from rsa, to rsa)
74 - Save first ID and key Success 0.169
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 74 - Save first ID and key
75 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 75 - 'ipfs daemon' succeeds
76 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 76 - api file shows up
77 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 77 - set up address variables
78 - get swarm addresses Success 0.077
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 78 - get swarm addresses
79 - set swarm address vars Success 0.011
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 79 - set swarm address vars
80 - 'ipfs daemon' is ready Success 0.012
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 80 - 'ipfs daemon' is ready
81 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 81 - 'ipfs daemon' is still running
82 - 'ipfs daemon' can be killed Success 0.283
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 82 - 'ipfs daemon' can be killed
83 - rotating keys Success 0.132
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating 2048-bit RSA keypair...done
peer identity: QmbnyjpDvqWUy4wbNrFAg5DGQ5ybLU5Wh6kdEWDAHbsWKF
ok 83 - rotating keys
84 - 'ipfs key rotate -o self' should fail Success 0.073
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 84 - 'ipfs key rotate -o self' should fail
85 - Compare second ID and key to first Success 0.217
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:23.983640441 +0000
+++ second_id	2026-02-27 18:12:25.352522981 +0000
@@ -1 +1 @@
-QmbZWfvjaixm11NzhByFKjdiiiJ3LG6HCXkPKB6USvwNqk
\ No newline at end of file
+QmbnyjpDvqWUy4wbNrFAg5DGQ5ybLU5Wh6kdEWDAHbsWKF
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:24.063867048 +0000
+++ second_key	2026-02-27 18:12:25.444726103 +0000
@@ -1 +1 @@
-CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDNRGEvfi2PMO0ql4ZF5EDShvbGagEEVSNhyqRrTDFMjCCIqk824q3pzluyKdPMQMpClqefM/V0GqMPYk+ixYKtKy9AjZhYCZDJRULhhjgqQATxlxN4x7fmEf8gWzUnxTJEsba1fheqouRv54HKu7DmX5ZFyZPmFUJkiE+IenJOd77qZSNBt84bMDfHXB/eI2x6nJsgKDB2ONDD2Xpwg3CjopH19A0H5BNORDiGuOnqENQIOz6IH5srYoF84j9WahogS7xdd7qvQgadF8k5gM9JPXXlN5YGUHSOz+hKZs7EqYcoaqQ4dpcW0OqqEqn11snzO6HHjLd6dHb/5Oqgr1kBAgMBAAE=
\ No newline at end of file
+CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCZrjRBf9RiklufDtLokNUMkdAMTNXwP+ZT09lC1eTj6t2ziu1tehyYSmTM1ar1EwvGozI0/26sJmO2vDsy90Prnp7CgqXQUz1wtI/CC+v+kWYPgpk/CY7aoMNCUpT1sMXFsjHGwb2MAep+lN9kxzyhWybodZtxRKXjcSGXh0rTW9UolQ7ZgneFecjzDr9Yi/NRAjINBWtVmG0biJ4keuLhKkPVzbpTtsMtaqwqQX+F4Bt/xuERfXAzO7MasbifPX3lKsGDvkiA9VmEwvXhn5l5kOh9JNzuMWO7qG/XFZA+Jfs1G2TTWxunVQPHUHeAI6WdGtcBfpDV3YCWl0dKqHt3AgMBAAE=
\ No newline at end of file

ok 85 - Compare second ID and key to first
86 - checking ID Success 0.349
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 86 - checking ID
87 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 87 - 'ipfs daemon' succeeds
88 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 88 - api file shows up
89 - set up address variables Success 0.027
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 89 - set up address variables
90 - get swarm addresses Success 0.069
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 90 - get swarm addresses
91 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 91 - set swarm address vars
92 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 92 - 'ipfs daemon' is ready
93 - publish name with new and old keys Success 0.239
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k2k4r8oedlkc83btyqe73gcl550xp0k7x57h9xyp27hhieontd99fwpy: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k2k4r8oba5xm42cz66qglycq0huhrgrhio3uak6kc8refhxveh1nev1b: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 93 - publish name with new and old keys
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
94 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 94 - 'ipfs daemon' is still running
95 - 'ipfs daemon' can be killed Success 0.281
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 95 - 'ipfs daemon' can be killed
96 - clean up ipfs dir Success 0.007
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 96 - clean up ipfs dir
97 - ipfs init (from ed25519, to rsa) Success 0.101
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 97 - ipfs init (from ed25519, to rsa)
98 - Save first ID and key Success 0.218
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 98 - Save first ID and key
99 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 99 - 'ipfs daemon' succeeds
100 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 100 - api file shows up
101 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 101 - set up address variables
102 - get swarm addresses Success 0.115
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 102 - get swarm addresses
103 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 103 - set swarm address vars
104 - 'ipfs daemon' is ready Success 0.016
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 104 - 'ipfs daemon' is ready
105 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 105 - 'ipfs daemon' is still running
106 - 'ipfs daemon' can be killed Success 0.241
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 106 - 'ipfs daemon' can be killed
107 - rotating keys Success 0.250
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating 2048-bit RSA keypair...done
peer identity: QmXTc2WcV2pXN1dJjWYpfRRAwe7bPKghaum82eErp92sQF
ok 107 - rotating keys
108 - 'ipfs key rotate -o self' should fail Success 0.111
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 108 - 'ipfs key rotate -o self' should fail
109 - Compare second ID and key to first Success 0.572
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:27.306520665 +0000
+++ second_id	2026-02-27 18:12:29.060413257 +0000
@@ -1 +1 @@
-12D3KooWR2SmsL3yuvP8qSLMtUxv3oCQJNYM9udp2xFBNJ79jjyP
\ No newline at end of file
+QmXTc2WcV2pXN1dJjWYpfRRAwe7bPKghaum82eErp92sQF
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:27.418520532 +0000
+++ second_key	2026-02-27 18:12:29.283505934 +0000
@@ -1 +1 @@
-CAESIOH3ey09Sz3657BYVF8xXy4viIYuKP8bTFOY5xwIUDo+
\ No newline at end of file
+CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgCNCpnflf+weKwy4EB4M2lhE724S7REyQws6UjF/4UQJTjs6B6+5mf8gZCRYdG/JFC+VyJ/SqEp+8EbVgkZfJIzRDa65s2PM/RjtrPPP2BhN7aWyiyXxpq7zoTy/StqmNJtSE0XQj7+50IlCUQ9i3GrjCljBvF3XipIlRMl9Tm+HqWaZf1DxcxxMVjUE4qQOqaZhoQDPHBEwdM39g7DJW4r8wNH0S5LCeZtJ49EXGZ/p3HzWMFNt/KB3CqAXz55BYaV9Ks5ATmtlcjOgKwv8gZQ6yzz7VV+CrEFegAITYyCclb7nR8da43FxwnFqd6U0fAkRFGex+ucH08vH4Iv03AgMBAAE=
\ No newline at end of file

ok 109 - Compare second ID and key to first
110 - checking ID Success 1.034
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 110 - checking ID
111 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 111 - 'ipfs daemon' succeeds
112 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 112 - api file shows up
113 - set up address variables Success 0.043
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 113 - set up address variables
114 - get swarm addresses Success 0.219
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 114 - get swarm addresses
115 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 115 - set swarm address vars
116 - 'ipfs daemon' is ready Success 0.013
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 116 - 'ipfs daemon' is ready
117 - publish name with new and old keys Success 0.588
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k2k4r8msliu6f81z11cw1xzghinwumdte0x0lmms4ngibljdrmin311w: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5dltc9b6jxgor2yc1a988abw62ax4cnxgjx6fwmp033i15mweo8u: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 117 - publish name with new and old keys
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
118 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 118 - 'ipfs daemon' is still running
119 - 'ipfs daemon' can be killed Success 0.252
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 119 - 'ipfs daemon' can be killed
120 - clean up ipfs dir Success 0.011
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 120 - clean up ipfs dir
121 - ipfs init (from , to rsa) Success 0.487
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 121 - ipfs init (from , to rsa)
122 - Save first ID and key Success 0.376
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 122 - Save first ID and key
123 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 123 - 'ipfs daemon' succeeds
124 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 124 - api file shows up
125 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 125 - set up address variables
126 - get swarm addresses Success 0.123
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 126 - get swarm addresses
127 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 127 - set swarm address vars
128 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 128 - 'ipfs daemon' is ready
129 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 129 - 'ipfs daemon' is still running
130 - 'ipfs daemon' can be killed Success 0.247
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 130 - 'ipfs daemon' can be killed
131 - rotating keys Success 0.355
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating 2048-bit RSA keypair...done
peer identity: QmdWocfnTmqGLayLzohJJ1Xq3vjSDto6s4vGkMMfjdQouz
ok 131 - rotating keys
132 - 'ipfs key rotate -o self' should fail Success 0.151
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 132 - 'ipfs key rotate -o self' should fail
133 - Compare second ID and key to first Success 0.321
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:33.339823677 +0000
+++ second_id	2026-02-27 18:12:35.332303947 +0000
@@ -1 +1 @@
-12D3KooWAXRTcsuwxiVNv1kHp2jCd46ZBy9jw5YogzuXvjuzZUZT
\ No newline at end of file
+QmdWocfnTmqGLayLzohJJ1Xq3vjSDto6s4vGkMMfjdQouz
\ No newline at end of file

> diff -u first_key second_key
ok 133 - Compare second ID and key to first
--- first_key	2026-02-27 18:12:33.547483412 +0000
+++ second_key	2026-02-27 18:12:35.497511489 +0000
@@ -1 +1 @@
-CAESIAqEiMUk4cUACgqU5BLUWYXgdMjekpmbshbDLrGIPzE2
\ No newline at end of file
+CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCiNcsunmq9i1rVzr9Ukd2P+KFFG2SYWLqci3MbyTszLO1d4B6Ft+oZljsiTjVkOGr31eTDkQK15IPNmeXJcL4qD++MfB6FLpkQ0eBnbbACN8gBCv3rKpDaMWgRPY1KHfx+60TRmKjWEK2LMNM52dxXTNBMhPyVbiEzOar4qOvJ9si5fbjnPs3M79Ggu4TeECGXTLRlUhu/pKyiG6gcjUs2CF1g2ClsGGmfe8jiT7nYGfEHBmySUcjxKAyYGsMtLoktkMZwIlk4UDtiTEEGIq4gznhzdKUd/YQ5NOuoMcUgP92BIEw7i5PIIU86I6u99TSfZBpTwU1kPTL7wmxyuIVjAgMBAAE=
\ No newline at end of file
134 - checking ID Success 0.606
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 134 - checking ID
135 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 135 - 'ipfs daemon' succeeds
136 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 136 - api file shows up
137 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 137 - set up address variables
138 - get swarm addresses Success 0.071
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 138 - get swarm addresses
139 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 139 - set swarm address vars
140 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 140 - 'ipfs daemon' is ready
141 - publish name with new and old keys Success 0.208
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k2k4r8p1bmwcgekhtx5athbutdrgcobdd2eka5bdhjmwi05nxhco50k1: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5dgg0ybeqr8r39bsmyl1mo2p5eu9iie5kwjkwa2smu6rr3mm0gfq: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 141 - publish name with new and old keys
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
142 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 142 - 'ipfs daemon' is still running
143 - 'ipfs daemon' can be killed Success 0.267
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 143 - 'ipfs daemon' can be killed
144 - clean up ipfs dir Success 0.008
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 144 - clean up ipfs dir
145 - ipfs init (from rsa, to ed25519) Success 0.179
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 145 - ipfs init (from rsa, to ed25519)
146 - Save first ID and key Success 0.165
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 146 - Save first ID and key
147 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 147 - 'ipfs daemon' succeeds
148 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 148 - api file shows up
149 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 149 - set up address variables
150 - get swarm addresses Success 0.061
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 150 - get swarm addresses
151 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 151 - set swarm address vars
152 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 152 - 'ipfs daemon' is ready
153 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 153 - 'ipfs daemon' is still running
154 - 'ipfs daemon' can be killed Success 0.264
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 154 - 'ipfs daemon' can be killed
155 - rotating keys Success 0.080
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWQTCQF2AYnimeuXcfcGg6b2U6d6gTdtnRcmGwj5GfFsfa
ok 155 - rotating keys
156 - 'ipfs key rotate -o self' should fail Success 0.064
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 156 - 'ipfs key rotate -o self' should fail
157 - Compare second ID and key to first Success 0.190
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:37.615920479 +0000
+++ second_id	2026-02-27 18:12:38.839508141 +0000
@@ -1 +1 @@
-QmbM7cpTL5irRHTybxMtcPpHRPu9DW8wyY7tY5JgAoH66X
\ No newline at end of file
+12D3KooWQTCQF2AYnimeuXcfcGg6b2U6d6gTdtnRcmGwj5GfFsfa
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:37.693498919 +0000
+++ second_key	2026-02-27 18:12:38.913508067 +0000
@@ -1 +1 @@
-CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmc6P+WNZK5YVebEoipvfNmiKLAiJtTMQAhrHF6NdTizppRKQ/XYcm3tl7GFf0HIJ98CIGaZuQRsN9GDvkK8FuoWf54rK1S2I/n8vhZf7amU9lAOhYRmd2CdBWJv2WDibtOGhe9b0+M/AyoKeuq4LpKUFoxDfzazUmRsAQ8LJbf1uhk+DaBDuwk5Pp7SaUtJtjVwg5igDrkUDU6rMgmNTkuY86l/VFIwItwh5qJZmtewqLaVpp9KR7Tds0qpDlaxZwg2g1lwTgkUbxoEEMlUdoEhz2ak2xopTBA5LJzeyp0XzhrydDgJ4BuCe6QBwiio652MQMaf38wXgrCJuvdRiFAgMBAAE=
\ No newline at end of file
+CAESINlzECGWIkCtLHIcve6vrw7HP0QYzlyamabtSZ5PKdK1
\ No newline at end of file

ok 157 - Compare second ID and key to first
158 - checking ID Success 0.316
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 158 - checking ID
159 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 159 - 'ipfs daemon' succeeds
160 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 160 - api file shows up
161 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 161 - set up address variables
162 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 162 - get swarm addresses
163 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 163 - set swarm address vars
164 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 164 - 'ipfs daemon' is ready
165 - publish name with new and old keys Success 0.192
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5dllp50fyntyna8tcotvzc8d56k0ux0kd8kuwlbh4e6dbmriml6d: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k2k4r8o8fkt4mppy1unwj49jayknablu8onqz16llav21xwpxswkt73o: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 165 - publish name with new and old keys
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
166 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 166 - 'ipfs daemon' is still running
167 - 'ipfs daemon' can be killed Success 0.257
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 167 - 'ipfs daemon' can be killed
168 - clean up ipfs dir Success 0.006
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 168 - clean up ipfs dir
169 - ipfs init (from ed25519, to ed25519) Success 0.092
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 169 - ipfs init (from ed25519, to ed25519)
170 - Save first ID and key Success 0.141
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 170 - Save first ID and key
171 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 171 - 'ipfs daemon' succeeds
172 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 172 - api file shows up
173 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 173 - set up address variables
174 - get swarm addresses Success 0.060
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 174 - get swarm addresses
175 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 175 - set swarm address vars
176 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 176 - 'ipfs daemon' is ready
177 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 177 - 'ipfs daemon' is still running
178 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 178 - 'ipfs daemon' can be killed
179 - rotating keys Success 0.088
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWGbEgRh8GnWZ92Ud33NBFswBzuM52mvEyrmfiUKD2dVeH
ok 179 - rotating keys
180 - 'ipfs key rotate -o self' should fail Success 0.061
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 180 - 'ipfs key rotate -o self' should fail
181 - Compare second ID and key to first Success 0.187
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:40.582506395 +0000
+++ second_id	2026-02-27 18:12:41.732505242 +0000
@@ -1 +1 @@
-12D3KooWC74JeLcZu5hvyZhtDTat1zrX1Bzpp6gbsNFsJQPmXnbZ
\ No newline at end of file
+12D3KooWGbEgRh8GnWZ92Ud33NBFswBzuM52mvEyrmfiUKD2dVeH
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:40.645506332 +0000
+++ second_key	2026-02-27 18:12:41.808900473 +0000
@@ -1 +1 @@
-CAESICH+DIhDpqY3fmE7IzYShLF+XHEtjMezClDtpfoIwmaY
\ No newline at end of file
+CAESIGSkyn4afvHCRnVd8oOpOi0/DLBsXYGLHAio6g1WVB+S
\ No newline at end of file

ok 181 - Compare second ID and key to first
182 - checking ID Success 0.306
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 182 - checking ID
183 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 183 - 'ipfs daemon' succeeds
184 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 184 - api file shows up
185 - set up address variables Success 0.036
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 185 - set up address variables
186 - get swarm addresses Success 0.120
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 186 - get swarm addresses
187 - set swarm address vars Success 0.012
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 187 - set swarm address vars
188 - 'ipfs daemon' is ready Success 0.015
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 188 - 'ipfs daemon' is ready
189 - publish name with new and old keys Success 0.361
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5diow5dvvtczwkics74hn30gmwgsmg1g4cinbtd07bpe0fe1opea: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5dh137ufh84tjjssnr7bqju0zvbh4ck2mu34s9hpu66xptno6c2g: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 189 - publish name with new and old keys
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
190 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 190 - 'ipfs daemon' is still running
191 - 'ipfs daemon' can be killed Success 0.266
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 191 - 'ipfs daemon' can be killed
192 - clean up ipfs dir Success 0.006
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 192 - clean up ipfs dir
193 - ipfs init (from , to ed25519) Success 0.091
System.out »
expecting success: 
        export IPFS_PATH="$(pwd)/.ipfs" &&
        case $FROM_ALG in
        rsa)
                ipfs init --profile=test -a=rsa > /dev/null
                ;;
        ed25519)
                ipfs init --profile=test -a=ed25519 > /dev/null
                ;;
        *)
                ipfs init --profile=test > /dev/null
                ;;
        esac
        
ok 193 - ipfs init (from , to ed25519)
194 - Save first ID and key Success 0.174
System.out »
expecting success: 
        ipfs id -f="<id>" > first_id &&
        ipfs id -f="<pubkey>" > first_key
        
ok 194 - Save first ID and key
195 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 195 - 'ipfs daemon' succeeds
196 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 196 - api file shows up
197 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 197 - set up address variables
198 - get swarm addresses Success 0.133
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 198 - get swarm addresses
199 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 199 - set swarm address vars
200 - 'ipfs daemon' is ready Success 0.074
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 200 - 'ipfs daemon' is ready
201 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 201 - 'ipfs daemon' is still running
202 - 'ipfs daemon' can be killed Success 0.241
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 202 - 'ipfs daemon' can be killed
203 - rotating keys Success 0.253
System.out »
expecting success: 
        case $TO_ALG in
        rsa)
                ipfs key rotate -t=rsa -s=2048 --oldkey=oldkey
                ;;
        ed25519)
                ipfs key rotate -t=ed25519 --oldkey=oldkey
                ;;
        *)
                ipfs key rotate --oldkey=oldkey
                ;;
        esac
        
generating ED25519 keypair...done
peer identity: 12D3KooWRGjfR2Xc5Hi8BLBm9RcvR5S2ywuDrJsUEbPjdq2ucHFU
ok 203 - rotating keys
204 - 'ipfs key rotate -o self' should fail Success 0.155
System.out »
expecting success: 
        echo "Error: keystore name for back up cannot be named 'self'" >expected-self
        test_must_fail ipfs key rotate -o self 2>actual-self &&
        test_cmp expected-self actual-self
        
ok 204 - 'ipfs key rotate -o self' should fail
205 - Compare second ID and key to first Success 0.716
System.out »
expecting success: 
        ipfs id -f="<id>" > second_id &&
        ipfs id -f="<pubkey>" > second_key &&
        ! test_cmp first_id second_id &&
        ! test_cmp first_key second_key
        
> diff -u first_id second_id
--- first_id	2026-02-27 18:12:43.920576829 +0000
+++ second_id	2026-02-27 18:12:46.228500739 +0000
@@ -1 +1 @@
-12D3KooWGyhLWtW2EUwqjpXRmWruLdX5Xm6e6ZjhVbYLfyu5MMrb
\ No newline at end of file
+12D3KooWRGjfR2Xc5Hi8BLBm9RcvR5S2ywuDrJsUEbPjdq2ucHFU
\ No newline at end of file

> diff -u first_key second_key
--- first_key	2026-02-27 18:12:44.010502960 +0000
+++ second_key	2026-02-27 18:12:46.576902684 +0000
@@ -1 +1 @@
-CAESIGpltap3zAmoBaIVc+ZsaZpCy+TluaouTISl7/It6wPs
\ No newline at end of file
+CAESIOWgtWlCu85toZX67C6NAiE/SPIxFDJBD7XRJSLeIPHf
\ No newline at end of file

ok 205 - Compare second ID and key to first
206 - checking ID Success 0.917
System.out »
expecting success: 
        ipfs config Identity.PeerID > expected-id &&
        ipfs id -f "<id>\n" > actual-id &&
        ipfs key list -l --ipns-base=b58mh | grep self | cut -d " " -f1 > keystore-id &&
        ipfs key list -l --ipns-base=b58mh | grep oldkey | cut -d " " -f1 | tr -d "\n" > old-keystore-id &&
        test_cmp expected-id actual-id &&
        test_cmp expected-id keystore-id &&
        test_cmp old-keystore-id first_id
        
ok 206 - checking ID
207 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 207 - 'ipfs daemon' succeeds
208 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 208 - api file shows up
209 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 209 - set up address variables
210 - get swarm addresses Success 0.104
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 210 - get swarm addresses
211 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 211 - set swarm address vars
212 - 'ipfs daemon' is ready Success 0.020
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 212 - 'ipfs daemon' is ready
213 - publish name with new and old keys Success 0.407
System.out »
expecting success: 
        echo "hello world" > msg &&
        ipfs add msg | cut -d " " -f2 | tr -d "\n" > msg_hash &&
        ipfs name publish --offline --allow-offline --key=self $(cat msg_hash) &&
        ipfs name publish --offline --allow-offline --key=oldkey $(cat msg_hash)
        
Published to k51qzi5uqu5dlwmik3soj1xapdbwn2qc7qirivg771m1hevs837m8t19cqs82n: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
Published to k51qzi5uqu5diu1zy5x6e277efk5paqg9mfaigsktbvpfifw52i5z4ftfee3n0: /ipfs/QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o
ok 213 - publish name with new and old keys
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
214 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 214 - 'ipfs daemon' is still running
215 - 'ipfs daemon' can be killed Success 0.247
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 215 - 'ipfs daemon' can be killed
216 - clean up ipfs dir Success 0.016
System.out »
expecting success: 
        rm -rf "$IPFS_PATH"
        
ok 216 - clean up ipfs dir
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init (from rsa, to )
ok 2 - Save first ID and key
ok 3 - 'ipfs daemon' succeeds
ok 4 - api file shows up
ok 5 - set up address variables
ok 6 - get swarm addresses
ok 7 - set swarm address vars
ok 8 - 'ipfs daemon' is ready
ok 9 - 'ipfs daemon' is still running
ok 10 - 'ipfs daemon' can be killed
ok 11 - rotating keys
ok 12 - 'ipfs key rotate -o self' should fail
ok 13 - Compare second ID and key to first
ok 14 - checking ID
ok 15 - 'ipfs daemon' succeeds
ok 16 - api file shows up
ok 17 - set up address variables
ok 18 - get swarm addresses
ok 19 - set swarm address vars
ok 20 - 'ipfs daemon' is ready
ok 21 - publish name with new and old keys
ok 22 - 'ipfs daemon' is still running
ok 23 - 'ipfs daemon' can be killed
ok 24 - clean up ipfs dir
ok 25 - ipfs init (from ed25519, to )
ok 26 - Save first ID and key
ok 27 - 'ipfs daemon' succeeds
ok 28 - api file shows up
ok 29 - set up address variables
ok 30 - get swarm addresses
ok 31 - set swarm address vars
ok 32 - 'ipfs daemon' is ready
ok 33 - 'ipfs daemon' is still running
ok 34 - 'ipfs daemon' can be killed
ok 35 - rotating keys
ok 36 - 'ipfs key rotate -o self' should fail
ok 37 - Compare second ID and key to first
ok 38 - checking ID
ok 39 - 'ipfs daemon' succeeds
ok 40 - api file shows up
ok 41 - set up address variables
ok 42 - get swarm addresses
ok 43 - set swarm address vars
ok 44 - 'ipfs daemon' is ready
ok 45 - publish name with new and old keys
ok 46 - 'ipfs daemon' is still running
ok 47 - 'ipfs daemon' can be killed
ok 48 - clean up ipfs dir
ok 49 - ipfs init (from , to )
ok 50 - Save first ID and key
ok 51 - 'ipfs daemon' succeeds
ok 52 - api file shows up
ok 53 - set up address variables
ok 54 - get swarm addresses
ok 55 - set swarm address vars
ok 56 - 'ipfs daemon' is ready
ok 57 - 'ipfs daemon' is still running
ok 58 - 'ipfs daemon' can be killed
ok 59 - rotating keys
ok 60 - 'ipfs key rotate -o self' should fail
ok 61 - Compare second ID and key to first
ok 62 - checking ID
ok 63 - 'ipfs daemon' succeeds
ok 64 - api file shows up
ok 65 - set up address variables
ok 66 - get swarm addresses
ok 67 - set swarm address vars
ok 68 - 'ipfs daemon' is ready
ok 69 - publish name with new and old keys
ok 70 - 'ipfs daemon' is still running
ok 71 - 'ipfs daemon' can be killed
ok 72 - clean up ipfs dir
ok 73 - ipfs init (from rsa, to rsa)
ok 74 - Save first ID and key
ok 75 - 'ipfs daemon' succeeds
ok 76 - api file shows up
ok 77 - set up address variables
ok 78 - get swarm addresses
ok 79 - set swarm address vars
ok 80 - 'ipfs daemon' is ready
ok 81 - 'ipfs daemon' is still running
ok 82 - 'ipfs daemon' can be killed
ok 83 - rotating keys
ok 84 - 'ipfs key rotate -o self' should fail
ok 85 - Compare second ID and key to first
ok 86 - checking ID
ok 87 - 'ipfs daemon' succeeds
ok 88 - api file shows up
ok 89 - set up address variables
ok 90 - get swarm addresses
ok 91 - set swarm address vars
ok 92 - 'ipfs daemon' is ready
ok 93 - publish name with new and old keys
ok 94 - 'ipfs daemon' is still running
ok 95 - 'ipfs daemon' can be killed
ok 96 - clean up ipfs dir
ok 97 - ipfs init (from ed25519, to rsa)
ok 98 - Save first ID and key
ok 99 - 'ipfs daemon' succeeds
ok 100 - api file shows up
ok 101 - set up address variables
ok 102 - get swarm addresses
ok 103 - set swarm address vars
ok 104 - 'ipfs daemon' is ready
ok 105 - 'ipfs daemon' is still running
ok 106 - 'ipfs daemon' can be killed
ok 107 - rotating keys
ok 108 - 'ipfs key rotate -o self' should fail
ok 109 - Compare second ID and key to first
ok 110 - checking ID
ok 111 - 'ipfs daemon' succeeds
ok 112 - api file shows up
ok 113 - set up address variables
ok 114 - get swarm addresses
ok 115 - set swarm address vars
ok 116 - 'ipfs daemon' is ready
ok 117 - publish name with new and old keys
ok 118 - 'ipfs daemon' is still running
ok 119 - 'ipfs daemon' can be killed
ok 120 - clean up ipfs dir
ok 121 - ipfs init (from , to rsa)
ok 122 - Save first ID and key
ok 123 - 'ipfs daemon' succeeds
ok 124 - api file shows up
ok 125 - set up address variables
ok 126 - get swarm addresses
ok 127 - set swarm address vars
ok 128 - 'ipfs daemon' is ready
ok 129 - 'ipfs daemon' is still running
ok 130 - 'ipfs daemon' can be killed
ok 131 - rotating keys
ok 132 - 'ipfs key rotate -o self' should fail
ok 133 - Compare second ID and key to first
ok 134 - checking ID
ok 135 - 'ipfs daemon' succeeds
ok 136 - api file shows up
ok 137 - set up address variables
ok 138 - get swarm addresses
ok 139 - set swarm address vars
ok 140 - 'ipfs daemon' is ready
ok 141 - publish name with new and old keys
ok 142 - 'ipfs daemon' is still running
ok 143 - 'ipfs daemon' can be killed
ok 144 - clean up ipfs dir
ok 145 - ipfs init (from rsa, to ed25519)
ok 146 - Save first ID and key
ok 147 - 'ipfs daemon' succeeds
ok 148 - api file shows up
ok 149 - set up address variables
ok 150 - get swarm addresses
ok 151 - set swarm address vars
ok 152 - 'ipfs daemon' is ready
ok 153 - 'ipfs daemon' is still running
ok 154 - 'ipfs daemon' can be killed
ok 155 - rotating keys
ok 156 - 'ipfs key rotate -o self' should fail
ok 157 - Compare second ID and key to first
ok 158 - checking ID
ok 159 - 'ipfs daemon' succeeds
ok 160 - api file shows up
ok 161 - set up address variables
ok 162 - get swarm addresses
ok 163 - set swarm address vars
ok 164 - 'ipfs daemon' is ready
ok 165 - publish name with new and old keys
ok 166 - 'ipfs daemon' is still running
ok 167 - 'ipfs daemon' can be killed
ok 168 - clean up ipfs dir
ok 169 - ipfs init (from ed25519, to ed25519)
ok 170 - Save first ID and key
ok 171 - 'ipfs daemon' succeeds
ok 172 - api file shows up
ok 173 - set up address variables
ok 174 - get swarm addresses
ok 175 - set swarm address vars
ok 176 - 'ipfs daemon' is ready
ok 177 - 'ipfs daemon' is still running
ok 178 - 'ipfs daemon' can be killed
ok 179 - rotating keys
ok 180 - 'ipfs key rotate -o self' should fail
ok 181 - Compare second ID and key to first
ok 182 - checking ID
ok 183 - 'ipfs daemon' succeeds
ok 184 - api file shows up
ok 185 - set up address variables
ok 186 - get swarm addresses
ok 187 - set swarm address vars
ok 188 - 'ipfs daemon' is ready
ok 189 - publish name with new and old keys
ok 190 - 'ipfs daemon' is still running
ok 191 - 'ipfs daemon' can be killed
ok 192 - clean up ipfs dir
ok 193 - ipfs init (from , to ed25519)
ok 194 - Save first ID and key
ok 195 - 'ipfs daemon' succeeds
ok 196 - api file shows up
ok 197 - set up address variables
ok 198 - get swarm addresses
ok 199 - set swarm address vars
ok 200 - 'ipfs daemon' is ready
ok 201 - 'ipfs daemon' is still running
ok 202 - 'ipfs daemon' can be killed
ok 203 - rotating keys
ok 204 - 'ipfs key rotate -o self' should fail
ok 205 - Compare second ID and key to first
ok 206 - checking ID
ok 207 - 'ipfs daemon' succeeds
ok 208 - api file shows up
ok 209 - set up address variables
ok 210 - get swarm addresses
ok 211 - set swarm address vars
ok 212 - 'ipfs daemon' is ready
ok 213 - publish name with new and old keys
ok 214 - 'ipfs daemon' is still running
ok 215 - 'ipfs daemon' can be killed
ok 216 - clean up ipfs dir

Back to top

TestCase t0030-mount

Name Status Type Time(s)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=

Back to top

TestCase t0031-mount-publish

Name Status Type Time(s)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=

Back to top

TestCase t0032-mount-sharded

Name Status Type Time(s)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=

Back to top

TestCase t0040-add-and-cat

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.101
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.179
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.624
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0040-add-and-cat.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0040-add-and-cat.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0040-add-and-cat.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.034
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.086
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.019
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - 'ipfs mount' succeeds Skipped N/A


skip 'ipfs mount' succeeds (missing FUSE)
0.000
11 - 'ipfs mount' output looks good Skipped N/A


skip 'ipfs mount' output looks good (missing FUSE)
0.000
12 - 'ipfs add --help' succeeds Success 0.085
System.out »
skipping test: 'ipfs mount' succeeds 
    do_umount "$(pwd)/ipfs" || true &&
    do_umount "$(pwd)/ipns" || true &&
    do_umount "$(pwd)/mfs" || true &&
    ipfs mount >actual
   'ipfs mount' succeeds
ok 10 # skip 'ipfs mount' succeeds (missing FUSE)
skipping test: 'ipfs mount' output looks good 
    echo "IPFS mounted at: $(pwd)/ipfs" >expected &&
    echo "IPNS mounted at: $(pwd)/ipns" >>expected &&
    echo "MFS mounted at: $(pwd)/mfs" >>expected &&
    test_cmp expected actual
   'ipfs mount' output looks good
ok 11 # skip 'ipfs mount' output looks good (missing FUSE)
expecting success: 
  ipfs add --help >actual

ok 12 - 'ipfs add --help' succeeds
13 - 'ipfs add --help' output looks good Success 0.008
System.out »
expecting success: 
  egrep "ipfs add.*<path>" actual >/dev/null ||
  test_fsh cat actual

ok 13 - 'ipfs add --help' output looks good
14 - 'ipfs help add' succeeds Success 0.099
System.out »
expecting success: 
  ipfs help add >actual

ok 14 - 'ipfs help add' succeeds
15 - 'ipfs help add' output looks good Success 0.009
System.out »
expecting success: 
  egrep "ipfs add.*<path>" actual >/dev/null ||
  test_fsh cat actual

ok 15 - 'ipfs help add' output looks good
16 - 'ipfs cat --help' succeeds Success 0.098
System.out »
expecting success: 
  ipfs cat --help >actual

ok 16 - 'ipfs cat --help' succeeds
17 - 'ipfs cat --help' output looks good Success 0.009
System.out »
expecting success: 
  egrep "ipfs cat.*<ipfs-path>" actual >/dev/null ||
  test_fsh cat actual

ok 17 - 'ipfs cat --help' output looks good
18 - 'ipfs help cat' succeeds Success 0.088
System.out »
expecting success: 
  ipfs help cat >actual

ok 18 - 'ipfs help cat' succeeds
19 - 'ipfs help cat' output looks good Success 0.010
System.out »
expecting success: 
  egrep "ipfs cat.*<ipfs-path>" actual >/dev/null ||
  test_fsh cat actual

ok 19 - 'ipfs help cat' output looks good
20 - ipfs add --help works Success 0.086
System.out »
expecting success: 
    ipfs add --help 2> add_help_err1 > /dev/null
  
ok 20 - ipfs add --help works
21 - stdin reading message doesn't show up Success 0.008
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err1 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err1
  
ok 21 - stdin reading message doesn't show up
22 - ipfs help add works Success 0.073
System.out »
expecting success: 
    ipfs help add 2> add_help_err2 > /dev/null
  
ok 22 - ipfs help add works
23 - stdin reading message doesn't show up Success 0.009
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err2 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err2
  
ok 23 - stdin reading message doesn't show up
24 - ipfs add succeeds Success 0.090
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/hello.txt &&
    ipfs add mountdir/hello.txt >actual
  
ok 24 - ipfs add succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
25 - ipfs add output looks good Success 0.011
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 25 - ipfs add output looks good
26 - ipfs add --only-hash succeeds Success 0.082
System.out »
expecting success: 
    ipfs add --only-hash mountdir/hello.txt > oh_actual
  
ok 26 - ipfs add --only-hash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
27 - ipfs add --only-hash output looks good Success 0.009
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 27 - ipfs add --only-hash output looks good
28 - ipfs cat succeeds Success 0.087
System.out »
expecting success: 
    ipfs cat "$HASH" >actual
  
ok 28 - ipfs cat succeeds
29 - ipfs cat output looks good Success 0.009
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 29 - ipfs cat output looks good
30 - ipfs cat with offset succeeds Success 0.123
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" >actual
  
ok 30 - ipfs cat with offset succeeds
31 - ipfs cat from offset output looks good Success 0.009
System.out »
expecting success: 
    echo "ds!" >expected &&
    test_cmp expected actual
  
ok 31 - ipfs cat from offset output looks good
32 - ipfs cat multiple hashes with offset succeeds Success 0.095
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" "$HASH" >actual
  
ok 32 - ipfs cat multiple hashes with offset succeeds
33 - ipfs cat from offset output looks good Success 0.017
System.out »
expecting success: 
    echo "ds!" >expected &&
    echo "Hello Worlds!" >>expected &&
    test_cmp expected actual
  
ok 33 - ipfs cat from offset output looks good
34 - ipfs cat multiple hashes with offset succeeds Success 0.094
System.out »
expecting success: 
    ipfs cat --offset 16 "$HASH" "$HASH" >actual
  
ok 34 - ipfs cat multiple hashes with offset succeeds
35 - ipfs cat from offset output looks good Success 0.007
System.out »
expecting success: 
    echo "llo Worlds!" >expected &&
    test_cmp expected actual
  
ok 35 - ipfs cat from offset output looks good
36 - ipfs cat from negative offset should fail Success 0.082
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --offset -102 "$HASH" > actual
  
ok 36 - ipfs cat from negative offset should fail
System.err »
Error: cannot specify negative offset
37 - ipfs cat with length succeeds Success 0.096
System.out »
expecting success: 
    ipfs cat --length 8 "$HASH" >actual
  
ok 37 - ipfs cat with length succeeds
38 - ipfs cat with length output looks good Success 0.007
System.out »
expecting success: 
    printf "Hello Wo" >expected &&
    test_cmp expected actual
  
ok 38 - ipfs cat with length output looks good
39 - ipfs cat multiple hashes with offset and length succeeds Success 0.085
System.out »
expecting success: 
    ipfs cat --offset 5 --length 15 "$HASH" "$HASH" "$HASH" >actual
  
ok 39 - ipfs cat multiple hashes with offset and length succeeds
40 - ipfs cat multiple hashes with offset and length looks good Success 0.009
System.out »
expecting success: 
    printf " Worlds!\nHello " >expected &&
    test_cmp expected actual
  
ok 40 - ipfs cat multiple hashes with offset and length looks good
41 - ipfs cat with exact length succeeds Success 0.167
System.out »
expecting success: 
    ipfs cat --length $(ipfs cat "$HASH" | wc -c) "$HASH" >actual
  
ok 41 - ipfs cat with exact length succeeds
42 - ipfs cat with exact length looks good Success 0.007
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 42 - ipfs cat with exact length looks good
43 - ipfs cat with 0 length succeeds Success 0.100
System.out »
expecting success: 
    ipfs cat --length 0 "$HASH" >actual
  
ok 43 - ipfs cat with 0 length succeeds
System.err »
 0 B / ? 

 0 B / ?  0s
44 - ipfs cat with 0 length looks good Success 0.007
System.out »
expecting success: 
    : >expected &&
    test_cmp expected actual
  
ok 44 - ipfs cat with 0 length looks good
45 - ipfs cat with oversized length succeeds Success 0.088
System.out »
expecting success: 
    ipfs cat --length 100 "$HASH" >actual
  
ok 45 - ipfs cat with oversized length succeeds
46 - ipfs cat with oversized length looks good Success 0.006
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 46 - ipfs cat with oversized length looks good
47 - ipfs cat with negative length should fail Success 0.066
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --length -102 "$HASH" > actual
  
ok 47 - ipfs cat with negative length should fail
System.err »
Error: cannot specify negative length
48 - ipfs cat /ipfs/file succeeds Success 0.066
System.out »
expecting success: 
    ipfs cat /ipfs/$HASH >actual
  
ok 48 - ipfs cat /ipfs/file succeeds
49 - output looks good Success 0.007
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 49 - output looks good
50 - ipfs add -t succeeds Success 0.097
System.out »
expecting success: 
    ipfs add -t mountdir/hello.txt >actual
  
ok 50 - ipfs add -t succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
51 - ipfs add -t output looks good Success 0.007
System.out »
expecting success: 
    HASH="QmUkUQgxXeggyaD5Ckv8ZqfW8wHBX6cYyeiyqvVZYzq5Bi" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 51 - ipfs add -t output looks good
52 - ipfs add --chunker size-32 succeeds Success 0.091
System.out »
expecting success: 
    ipfs add --chunker rabin mountdir/hello.txt >actual
  
ok 52 - ipfs add --chunker size-32 succeeds
System.err »
 14 B / ? 
 14 B / ? 

 14 B / ? 
53 - ipfs add --chunker size-32 output looks good Success 0.007
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 53 - ipfs add --chunker size-32 output looks good
54 - ipfs add --chunker size-64 succeeds Success 0.092
System.out »
expecting success: 
    ipfs add --chunker=size-64 mountdir/hello.txt >actual
  
ok 54 - ipfs add --chunker size-64 succeeds
System.err »
 14 B / ? 

 14 B / ? 
55 - ipfs add --chunker size-64 output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 55 - ipfs add --chunker size-64 output looks good
56 - ipfs add --chunker=size-0 failed Success 0.069
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker=size-0 mountdir/hello.txt
  
ok 56 - ipfs add --chunker=size-0 failed
System.err »
Error: chunker size must be greater than 0
57 - ipfs add --chunker rabin-36-512-1024 succeeds Success 0.084
System.out »
expecting success: 
    ipfs add --chunker rabin-36-512-1024 mountdir/hello.txt >actual
  
ok 57 - ipfs add --chunker rabin-36-512-1024 succeeds
System.err »
 14 B / ? 
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
58 - ipfs add --chunker rabin-36-512-1024 output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 58 - ipfs add --chunker rabin-36-512-1024 output looks good
59 - ipfs add --chunker rabin-12-512-1024 failed Success 0.069
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker rabin-12-512-1024 mountdir/hello.txt
  
ok 59 - ipfs add --chunker rabin-12-512-1024 failed
System.err »
Error: rabin min must be greater than 16
60 - ipfs add --chunker buzhash succeeds Success 0.078
System.out »
expecting success: 
    ipfs add --chunker buzhash mountdir/hello.txt >actual
  
ok 60 - ipfs add --chunker buzhash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
61 - ipfs add --chunker buzhash output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 61 - ipfs add --chunker buzhash output looks good
62 - ipfs add on hidden file succeeds Success 0.086
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/.hello.txt &&
    ipfs add mountdir/.hello.txt >actual
  
ok 62 - ipfs add on hidden file succeeds
System.err »
 14 B / ? 

 14 B / ? 
63 - ipfs add on hidden file output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH .hello.txt" >expected &&
    test_cmp expected actual
  
ok 63 - ipfs add on hidden file output looks good
64 - add zero length file Success 0.079
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q zero-length-file) &&
    echo $ZEROHASH
  
QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
ok 64 - add zero length file
65 - zero length file has correct hash Success 0.004
System.out »
expecting success: 
    test "$ZEROHASH" = QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
  
ok 65 - zero length file has correct hash
66 - cat zero length file Success 0.076
System.out »
expecting success: 
    ipfs cat $ZEROHASH > zero-length-file_out
  
ok 66 - cat zero length file
System.err »
 0 B / ? 

 0 B / ?  0s
67 - make sure it looks good Success 0.005
System.out »
expecting success: 
    test_cmp zero-length-file zero-length-file_out
  
ok 67 - make sure it looks good
68 - ipfs add --stdin-name Success 0.084
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add --stdin-name file.txt > actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 68 - ipfs add --stdin-name
System.err »
 5 B / ? 

 5 B / ? 
 5 B / 5 B  100.00%
69 - ipfs add --stdin-name -w Success 0.041
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add -w --stdin-name file.txt | head -n1> actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 69 - ipfs add --stdin-name -w
System.err »
 5 B / ? 

 5 B / ? 
70 - ipfs cat with stdin-name Success 0.157
System.out »
expecting success: 
    NAMEHASH=$(echo "IPFS" | ipfs add -w --stdin-name file.txt -Q) &&
    ipfs cat /ipfs/$NAMEHASH/file.txt > expected &&
    echo "IPFS" > actual &&
    test_cmp expected actual
  
ok 70 - ipfs cat with stdin-name
71 - ipfs add -r . Success 0.089
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q . > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 71 - ipfs add -r .
72 - ipfs add -r . output looks good Success 0.007
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 72 - ipfs add -r . output looks good
73 - ipfs add -r ./ Success 0.096
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q ./ > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 73 - ipfs add -r ./
74 - ipfs add -r ./ output looks good Success 0.005
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 74 - ipfs add -r ./ output looks good
75 - ipfs add --cid-base=base32 succeeds Success 0.085
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 mountdir/base32-test.txt >actual
  
ok 75 - ipfs add --cid-base=base32 succeeds
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
76 - ipfs add --cid-base=base32 output looks good Success 0.006
System.out »
expecting success: 
    HASHb32="bafybeibyosqxljd2eptb4ebbtvk7pb4aoxzqa6ttdsflty6rsslz5y6i34" &&
    echo "added $HASHb32 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 76 - ipfs add --cid-base=base32 output looks good
77 - ipfs add --cid-base=base32 --only-hash succeeds Success 0.067
System.out »
expecting success: 
    ipfs add --cid-base=base32 --only-hash mountdir/base32-test.txt > oh_actual
  
ok 77 - ipfs add --cid-base=base32 --only-hash succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
78 - ipfs add --cid-base=base32 --only-hash output looks good Success 0.006
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 78 - ipfs add --cid-base=base32 --only-hash output looks good
79 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds Success 0.077
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false mountdir/base32-test.txt >actual
  
ok 79 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
80 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good Success 0.010
System.out »
expecting success: 
    HASHv0=$(cid-fmt -v 0 -b z %s "$HASHb32") &&
    echo "added $HASHv0 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 80 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
81 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds Success 0.072
System.out »
expecting success: 
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash mountdir/base32-test.txt > oh_actual
  
ok 81 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
82 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good Success 0.006
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 82 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
83 - ipfs cat with base32 hash succeeds Success 0.076
System.out »
expecting success: 
    ipfs cat "$HASHb32" >actual
  
ok 83 - ipfs cat with base32 hash succeeds
84 - ipfs cat with base32 hash output looks good Success 0.006
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 84 - ipfs cat with base32 hash output looks good
85 - ipfs cat using CIDv0 hash succeeds Success 0.082
System.out »
expecting success: 
    ipfs cat "$HASHv0" >actual
  
ok 85 - ipfs cat using CIDv0 hash succeeds
86 - ipfs cat using CIDv0 hash looks good Success 0.006
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 86 - ipfs cat using CIDv0 hash looks good
87 - ipfs add with multiple files succeeds Success 0.093
System.out »
expecting success: 
    echo "Helloo Worlds!" >mountdir/hello2.txt &&
    ipfs add mountdir/hello.txt mountdir/hello2.txt >actual
  
ok 87 - ipfs add with multiple files succeeds
System.err »
 14 B / ? 

 14 B / 29 B   48.28%
 29 B / 29 B  100.00%

 29 B / 29 B  100.00%
88 - ipfs add with multiple files output looks good Success 0.006
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    echo "added Qmf35k66MZNW2GijohUmXQEWKZU4cCGTCwK6idfnt152wJ hello2.txt" >> expected &&
    test_cmp expected actual
  
ok 88 - ipfs add with multiple files output looks good
89 - ipfs add with multiple files of same name and import dir succeeds Success 0.081
System.out »
expecting success: 
    ipfs add mountdir/hello.txt mountdir/hello.txt >actual
  
ok 89 - ipfs add with multiple files of same name and import dir succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
90 - ipfs add with multiple files of same name output looks good Success 0.006
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    test_cmp expected actual
  
ok 90 - ipfs add with multiple files of same name output looks good
91 - ipfs add with multiple files of same name but different dirs fails Success 0.068
System.out »
expecting success: 
      mkdir -p mountdir/same-file/ &&
      cp mountdir/hello.txt mountdir/same-file/hello.txt &&
      test_expect_code 1 ipfs add mountdir/hello.txt mountdir/same-file/hello.txt >actual &&
      rm mountdir/same-file/hello.txt  &&
      rmdir mountdir/same-file
    
ok 91 - ipfs add with multiple files of same name but different dirs fails
System.err »
Error: file name hello.txt repeated under different import directories: mountdir/same-file and mountdir

USAGE
  ipfs add <path>... - Add a file or directory to IPFS.

  ipfs add [--recursive | -r] [--dereference-args] [--stdin-name=<stdin-name>]
           [--hidden | -H] [--ignore=<ignore>]...
           [--ignore-rules-path=<ignore-rules-path>] [--empty-dirs=false]
           [--dereference-symlinks] [--quiet | -q] [--quieter | -Q] [--silent]
           [--progress | -p] [--only-hash | -n] [--wrap-with-directory | -w]
           [--pin=false] [--pin-name=<pin-name>] [--to-files=<to-files>]
           [--cid-version=<cid-version>] [--hash=<hash>] [--raw-leaves]
           [--chunker=<chunker> | -s] [--trickle | -t]
           [--max-file-links=<max-file-links>]
           [--max-directory-links=<max-directory-links>]
           [--max-hamt-fanout=<max-hamt-fanout>] [--inline]
           [--inline-limit=<inline-limit>] [--nocopy] [--fscache]
           [--preserve-mode] [--preserve-mtime] [--mode=<mode>]
           [--mtime=<mtime>] [--mtime-nsecs=<mtime-nsecs>] [--fast-provide-root]
           [--fast-provide-wait] [--] <path>...

  Adds the content of <path> to IPFS. Use -r to add directories (recursively).
  
  FAST PROVIDE OPTIMIZATION:
  
  When you add content to IPFS, the sweep provider queues it for efficient
  DHT provides over time. While this is resource-efficient, other peers won't
  find your content immediately after 'ipfs add' completes.
  
  To make sharing faster, 'ipfs add' does an immediate provide of the root CID
  to the DHT in addition to the regular queue. This complements the sweep provider:
  fast-provide handles the urgent case (root CIDs that users share and reference),
  while the sweep provider efficiently provides all blocks according to
  Provide.Strategy over time.
  
  By default, this immediate provide runs in the background without blocking
  the command. If you need certainty that the root CID is discoverable before
  the command returns (e.g., sharing a link immediately), use --fast-provide-wait
  to wait for the provide to complete. Use --fast-provide-root=false to skip
  this optimization.
  
  This works best with the sweep provider and accelerated DHT client.
  Automatically skipped when DHT is not available.

  For more information about each command, use:
  'ipfs add <subcmd> --help'
92 - ipfs add --to-files /mfspath succeeds Success 0.083
System.out »
expecting success: 
    mkdir -p mountdir && echo "Hello MFS!" > mountdir/mfs.txt &&
    ipfs add mountdir/mfs.txt --to-files /ipfs-add-to-files >actual
  
ok 92 - ipfs add --to-files /mfspath succeeds
System.err »
 11 B / 11 B  100.00%

 11 B / 11 B  100.00%
93 - ipfs add --to-files output looks good Success 0.006
System.out »
expecting success: 
    HASH_MFS="QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr" &&
    echo "added $HASH_MFS mfs.txt" >expected &&
    test_cmp expected actual
  
ok 93 - ipfs add --to-files output looks good
94 - ipfs files read succeeds Success 0.143
System.out »
expecting success: 
    ipfs files read /ipfs-add-to-files >actual &&
    ipfs files rm /ipfs-add-to-files
  
ok 94 - ipfs files read succeeds
95 - ipfs cat output looks good Success 0.006
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    test_cmp expected actual
  
ok 95 - ipfs cat output looks good
96 - ipfs add --to-files requires argument Success 0.067
System.out »
expecting success: 
    test_expect_code 1 ipfs add mountdir/mfs.txt --to-files >actual 2>&1 &&
    test_should_contain "Error: missing argument for option \"to-files\"" actual
  
ok 96 - ipfs add --to-files requires argument
97 - ipfs add --to-files / (MFS root) works Success 0.209
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    ipfs add mountdir/mfs.txt --to-files / &&
    ipfs files read /mfs.txt >actual &&
    test_cmp expected actual &&
    ipfs files rm /mfs.txt &&
    rm mountdir/mfs.txt
  
added QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr mfs.txt
ok 97 - ipfs add --to-files / (MFS root) works
System.err »
 11 B / 11 B  100.00%

 11 B / 11 B  100.00%
98 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails Success 0.160
System.out »
expecting success: 
    mkdir -p test &&
    echo "file1" > test/mfs1.txt &&
    echo "file2" > test/mfs2.txt &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfspath0 >actual 2>&1 &&
    test_should_contain "MFS destination is a file: only one entry can be copied to \"/mfspath0\"" actual &&
    ipfs files rm -r --force /mfspath0
  
ok 98 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
99 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails Success 0.243
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsfile1\"" actual &&
    ipfs files rm -r --force /mfsfile1
  
ok 99 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
100 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails Success 0.214
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsdir1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsdir1\"" actual &&
    ipfs files rm -r --force /mfsdir1
  
ok 100 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
101 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds Success 0.310
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir2 &&
    test_expect_code 0 ipfs add --cid-version 1 test/mfs1.txt test/mfs2.txt --to-files /mfsdir2/ > actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby mfs2.txt" actual &&
    test_should_not_contain "Error" actual &&
    ipfs files ls /mfsdir2/ > lsout &&
    test_should_contain "mfs1.txt" lsout &&
    test_should_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfsdir2
  
ok 101 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
102 - ipfs add file1 file2 --to-files /mfsfile2/ (with trailing slash + with preexisting file) fails Success 0.217
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile2 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile2/ >actual 2>&1 &&
    test_should_contain "Error: to-files: MFS destination \"/mfsfile2/\" is not a directory" actual &&
    ipfs files rm -r --force /mfsfile2
  
ok 102 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
103 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists Success 0.215
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir3 &&
    test_expect_code 1 ipfs add -r test --to-files /mfs/subdir3 >actual 2>&1 &&
    test_should_contain "cannot put node in path \"/mfs/subdir3\": directory already has entry by that name" actual &&
    ipfs files rm -r --force /mfs
  
ok 103 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
104 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash) Success 0.312
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir4 &&
    ipfs add --cid-version 1 -r test --to-files /mfs/subdir4/ >actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a test/mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby test/mfs2.txt" actual &&
    test_should_contain "added bafybeic7xwqwovt4g4bax6d3udp6222i63vj2rblpbim7uy2uw4a5gahha test" actual &&
    test_should_not_contain "Error" actual
    ipfs files ls /mfs/subdir4/ > lsout &&
    test_should_contain "test" lsout &&
    test_should_not_contain "mfs1.txt" lsout &&
    test_should_not_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfs
  
ok 104 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
105 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive) Success 0.196
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir5 &&
    test_expect_code 1 ipfs add -r -w test --to-files /mfs/subdir5/ >actual 2>&1 &&
    test_should_contain "Error" actual &&
    ipfs files rm -r --force /mfs
  
ok 105 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
106 - ipfs cat succeeds with stdin opened (issue #1141) Success 0.080
System.out »
expecting success: 
  cat mountdir/hello.txt | while read line; do ipfs cat "$HASH" >actual || exit; done

ok 106 - ipfs cat succeeds with stdin opened (issue #1141)
107 - ipfs cat output looks good Success 0.007
System.out »
expecting success: 
  cat mountdir/hello.txt >expected &&
  test_cmp expected actual

ok 107 - ipfs cat output looks good
108 - ipfs cat accept hash from built input Success 0.077
System.out »
expecting success: 
  echo "$HASH" | ipfs cat >actual

ok 108 - ipfs cat accept hash from built input
109 - ipfs cat output looks good Success 0.007
System.out »
expecting success: 
  test_cmp expected actual

ok 109 - ipfs cat output looks good
110 - cat ipfs/stuff succeeds Skipped N/A


skip cat ipfs/stuff succeeds (missing FUSE)
0.000
111 - cat ipfs/stuff looks good Skipped N/A


skip cat ipfs/stuff looks good (missing FUSE)
0.000
112 - 'ipfs add -q' succeeds Success 0.085
System.out »
skipping test: cat ipfs/stuff succeeds 
  cat "ipfs/$HASH" >actual
 cat ipfs/stuff succeeds
ok 110 # skip cat ipfs/stuff succeeds (missing FUSE)
skipping test: cat ipfs/stuff looks good 
  test_cmp expected actual
 cat ipfs/stuff looks good
ok 111 # skip cat ipfs/stuff looks good (missing FUSE)
expecting success: 
  echo "Hello Venus!" >mountdir/venus.txt &&
  ipfs add -q mountdir/venus.txt >actual

ok 112 - 'ipfs add -q' succeeds
113 - 'ipfs add -q' output looks good Success 0.006
System.out »
expecting success: 
  HASH="QmU5kp3BH3B8tnWUU2Pikdb2maksBNkb92FHRr56hyghh4" &&
  echo "$HASH" >expected &&
  test_cmp expected actual

ok 113 - 'ipfs add -q' output looks good
114 - 'ipfs add -q' with stdin input succeeds Success 0.082
System.out »
expecting success: 
  echo "Hello Jupiter!" | ipfs add -q >actual

ok 114 - 'ipfs add -q' with stdin input succeeds
115 - 'ipfs add -q' output looks good Success 0.007
System.out »
expecting success: 
  HASH="QmUnvPcBctVTAcJpigv6KMqDvmDewksPWrNVoy1E1WP5fh" &&
  echo "$HASH" >expected &&
  test_cmp expected actual

ok 115 - 'ipfs add -q' output looks good
116 - 'ipfs cat' succeeds Success 0.085
System.out »
expecting success: 
  ipfs cat "$HASH" >actual

ok 116 - 'ipfs cat' succeeds
117 - ipfs cat output looks good Success 0.006
System.out »
expecting success: 
  echo "Hello Jupiter!" >expected &&
  test_cmp expected actual

ok 117 - ipfs cat output looks good
118 - 'ipfs add' with stdin input succeeds Success 0.083
System.out »
expecting success: 
  printf "Hello Neptune!\nHello Pluton!" | ipfs add >actual

ok 118 - 'ipfs add' with stdin input succeeds
System.err »
 28 B / ? 

 28 B / ? 
 28 B / 28 B  100.00%
119 - 'ipfs add' output looks good Success 0.006
System.out »
expecting success: 
  HASH="QmZDhWpi8NvKrekaYYhxKCdNVGWsFFe1CREnAjP1QbPaB3" &&
  echo "added $HASH $HASH" >expected &&
  test_cmp expected actual

ok 119 - 'ipfs add' output looks good
120 - 'ipfs cat' with built input succeeds Success 0.096
System.out »
expecting success: 
  echo "$HASH" | ipfs cat >actual

ok 120 - 'ipfs cat' with built input succeeds
121 - ipfs cat with built input output looks good Success 0.008
System.out »
expecting success: 
  printf "Hello Neptune!\nHello Pluton!" >expected &&
  test_cmp expected actual

ok 121 - ipfs cat with built input output looks good
122 - 'ipfs add -r ' succeeds Success 0.118
System.out »
expecting success: 
    mkdir mountdir/planets &&
    echo "Hello Mars!" >mountdir/planets/mars.txt &&
    echo "Hello Venus!" >mountdir/planets/venus.txt &&
    ipfs add -r $EXTRA_ARGS mountdir/planets >actual
  
ok 122 - 'ipfs add -r ' succeeds
System.err »
 12 B / ? 

 12 B / 25 B   48.00%
 25 B / 25 B  100.00%

 25 B / 25 B  100.00%

 25 B / 25 B  100.00%
123 - 'ipfs add -r ' output looks good Success 0.008
System.out »
expecting success: 
    echo "added $MARS planets/mars.txt" >expected &&
    echo "added $VENUS planets/venus.txt" >>expected &&
    echo "added $PLANETS planets" >>expected &&
    test_cmp expected actual
  
ok 123 - 'ipfs add -r ' output looks good
124 - ipfs cat accept many hashes from built input Success 0.151
System.out »
expecting success: 
    { echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
  
ok 124 - ipfs cat accept many hashes from built input
125 - ipfs cat output looks good Success 0.008
System.out »
expecting success: 
    cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 125 - ipfs cat output looks good
126 - ipfs cat accept many hashes as args Success 0.089
System.out »
expecting success: 
    ipfs cat "$MARS" "$VENUS" >actual
  
ok 126 - ipfs cat accept many hashes as args
127 - ipfs cat output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected actual
  
ok 127 - ipfs cat output looks good
128 - ipfs cat with both arg and stdin Success 0.105
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" >actual
  
ok 128 - ipfs cat with both arg and stdin
129 - ipfs cat output looks good Success 0.015
System.out »
expecting success: 
    cat mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 129 - ipfs cat output looks good
130 - ipfs cat with two args and stdin Success 0.151
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
  
ok 130 - ipfs cat with two args and stdin
131 - ipfs cat output looks good Success 0.017
System.out »
expecting success: 
    cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 131 - ipfs cat output looks good
132 - ipfs add --quieter succeeds Success 0.196
System.out »
expecting success: 
    ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
  
ok 132 - ipfs add --quieter succeeds
133 - ipfs add --quieter returns only one correct hash Success 0.021
System.out »
expecting success: 
    echo "$PLANETS" > expected &&
    test_cmp expected actual
  
ok 133 - ipfs add --quieter returns only one correct hash
134 - cleanup Success 0.006
System.out »
expecting success: 
    rm -r mountdir/planets
  
ok 134 - cleanup
135 - 'ipfs add -r --raw-leaves' succeeds Success 0.171
System.out »
expecting success: 
    mkdir mountdir/planets &&
    echo "Hello Mars!" >mountdir/planets/mars.txt &&
    echo "Hello Venus!" >mountdir/planets/venus.txt &&
    ipfs add -r $EXTRA_ARGS mountdir/planets >actual
  
ok 135 - 'ipfs add -r --raw-leaves' succeeds
System.err »
 12 B / ? 

 12 B / 25 B   48.00%
 25 B / 25 B  100.00%

 25 B / 25 B  100.00%

 25 B / 25 B  100.00%
136 - 'ipfs add -r --raw-leaves' output looks good Success 0.012
System.out »
expecting success: 
    echo "added $MARS planets/mars.txt" >expected &&
    echo "added $VENUS planets/venus.txt" >>expected &&
    echo "added $PLANETS planets" >>expected &&
    test_cmp expected actual
  
ok 136 - 'ipfs add -r --raw-leaves' output looks good
137 - ipfs cat accept many hashes from built input Success 0.133
System.out »
expecting success: 
    { echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
  
ok 137 - ipfs cat accept many hashes from built input
138 - ipfs cat output looks good Success 0.013
System.out »
expecting success: 
    cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 138 - ipfs cat output looks good
139 - ipfs cat accept many hashes as args Success 0.199
System.out »
expecting success: 
    ipfs cat "$MARS" "$VENUS" >actual
  
ok 139 - ipfs cat accept many hashes as args
140 - ipfs cat output looks good Success 0.015
System.out »
expecting success: 
    test_cmp expected actual
  
ok 140 - ipfs cat output looks good
141 - ipfs cat with both arg and stdin Success 0.180
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" >actual
  
ok 141 - ipfs cat with both arg and stdin
142 - ipfs cat output looks good Success 0.009
System.out »
expecting success: 
    cat mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 142 - ipfs cat output looks good
143 - ipfs cat with two args and stdin Success 0.175
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
  
ok 143 - ipfs cat with two args and stdin
144 - ipfs cat output looks good Success 0.021
System.out »
expecting success: 
    cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 144 - ipfs cat output looks good
145 - ipfs add --quieter succeeds Success 0.227
System.out »
expecting success: 
    ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
  
ok 145 - ipfs add --quieter succeeds
146 - ipfs add --quieter returns only one correct hash Success 0.009
System.out »
expecting success: 
    echo "$PLANETS" > expected &&
    test_cmp expected actual
  
ok 146 - ipfs add --quieter returns only one correct hash
147 - cleanup Success 0.017
System.out »
expecting success: 
    rm -r mountdir/planets
  
ok 147 - cleanup
148 - 'ipfs add -r --cid-version=1' succeeds Success 0.351
System.out »
expecting success: 
    mkdir mountdir/planets &&
    echo "Hello Mars!" >mountdir/planets/mars.txt &&
    echo "Hello Venus!" >mountdir/planets/venus.txt &&
    ipfs add -r $EXTRA_ARGS mountdir/planets >actual
  
ok 148 - 'ipfs add -r --cid-version=1' succeeds
System.err »
 12 B / ? 

 12 B / 25 B   48.00%
 25 B / 25 B  100.00%

 25 B / 25 B  100.00%

 25 B / 25 B  100.00%
149 - 'ipfs add -r --cid-version=1' output looks good Success 0.070
System.out »
expecting success: 
    echo "added $MARS planets/mars.txt" >expected &&
    echo "added $VENUS planets/venus.txt" >>expected &&
    echo "added $PLANETS planets" >>expected &&
    test_cmp expected actual
  
ok 149 - 'ipfs add -r --cid-version=1' output looks good
150 - ipfs cat accept many hashes from built input Success 0.196
System.out »
expecting success: 
    { echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
  
ok 150 - ipfs cat accept many hashes from built input
151 - ipfs cat output looks good Success 0.010
System.out »
expecting success: 
    cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 151 - ipfs cat output looks good
152 - ipfs cat accept many hashes as args Success 0.228
System.out »
expecting success: 
    ipfs cat "$MARS" "$VENUS" >actual
  
ok 152 - ipfs cat accept many hashes as args
153 - ipfs cat output looks good Success 0.026
System.out »
expecting success: 
    test_cmp expected actual
  
ok 153 - ipfs cat output looks good
154 - ipfs cat with both arg and stdin Success 0.218
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" >actual
  
ok 154 - ipfs cat with both arg and stdin
155 - ipfs cat output looks good Success 0.009
System.out »
expecting success: 
    cat mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 155 - ipfs cat output looks good
156 - ipfs cat with two args and stdin Success 0.119
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
  
ok 156 - ipfs cat with two args and stdin
157 - ipfs cat output looks good Success 0.013
System.out »
expecting success: 
    cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 157 - ipfs cat output looks good
158 - ipfs add --quieter succeeds Success 0.204
System.out »
expecting success: 
    ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
  
ok 158 - ipfs add --quieter succeeds
159 - ipfs add --quieter returns only one correct hash Success 0.006
System.out »
expecting success: 
    echo "$PLANETS" > expected &&
    test_cmp expected actual
  
ok 159 - ipfs add --quieter returns only one correct hash
160 - cleanup Success 0.006
System.out »
expecting success: 
    rm -r mountdir/planets
  
ok 160 - cleanup
161 - 'ipfs add -r --cid-version=1 --raw-leaves=false' succeeds Success 0.270
System.out »
expecting success: 
    mkdir mountdir/planets &&
    echo "Hello Mars!" >mountdir/planets/mars.txt &&
    echo "Hello Venus!" >mountdir/planets/venus.txt &&
    ipfs add -r $EXTRA_ARGS mountdir/planets >actual
  
ok 161 - 'ipfs add -r --cid-version=1 --raw-leaves=false' succeeds
System.err »
 12 B / ? 

 12 B / 25 B   48.00%
 25 B / 25 B  100.00%

 25 B / 25 B  100.00%

 25 B / 25 B  100.00%
162 - 'ipfs add -r --cid-version=1 --raw-leaves=false' output looks good Success 0.014
System.out »
expecting success: 
    echo "added $MARS planets/mars.txt" >expected &&
    echo "added $VENUS planets/venus.txt" >>expected &&
    echo "added $PLANETS planets" >>expected &&
    test_cmp expected actual
  
ok 162 - 'ipfs add -r --cid-version=1 --raw-leaves=false' output looks good
163 - ipfs cat accept many hashes from built input Success 0.129
System.out »
expecting success: 
    { echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
  
ok 163 - ipfs cat accept many hashes from built input
164 - ipfs cat output looks good Success 0.015
System.out »
expecting success: 
    cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 164 - ipfs cat output looks good
165 - ipfs cat accept many hashes as args Success 0.149
System.out »
expecting success: 
    ipfs cat "$MARS" "$VENUS" >actual
  
ok 165 - ipfs cat accept many hashes as args
166 - ipfs cat output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected actual
  
ok 166 - ipfs cat output looks good
167 - ipfs cat with both arg and stdin Success 0.103
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" >actual
  
ok 167 - ipfs cat with both arg and stdin
168 - ipfs cat output looks good Success 0.016
System.out »
expecting success: 
    cat mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 168 - ipfs cat output looks good
169 - ipfs cat with two args and stdin Success 0.106
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
  
ok 169 - ipfs cat with two args and stdin
170 - ipfs cat output looks good Success 0.030
System.out »
expecting success: 
    cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 170 - ipfs cat output looks good
171 - ipfs add --quieter succeeds Success 0.142
System.out »
expecting success: 
    ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
  
ok 171 - ipfs add --quieter succeeds
172 - ipfs add --quieter returns only one correct hash Success 0.012
System.out »
expecting success: 
    echo "$PLANETS" > expected &&
    test_cmp expected actual
  
ok 172 - ipfs add --quieter returns only one correct hash
173 - cleanup Success 0.017
System.out »
expecting success: 
    rm -r mountdir/planets
  
ok 173 - cleanup
174 - 'ipfs add -r --hash=blake2b-256' succeeds Success 0.172
System.out »
expecting success: 
    mkdir mountdir/planets &&
    echo "Hello Mars!" >mountdir/planets/mars.txt &&
    echo "Hello Venus!" >mountdir/planets/venus.txt &&
    ipfs add -r $EXTRA_ARGS mountdir/planets >actual
  
ok 174 - 'ipfs add -r --hash=blake2b-256' succeeds
System.err »
 12 B / ? 

 12 B / 25 B   48.00%
 25 B / 25 B  100.00%

 25 B / 25 B  100.00%

 25 B / 25 B  100.00%
175 - 'ipfs add -r --hash=blake2b-256' output looks good Success 0.008
System.out »
expecting success: 
    echo "added $MARS planets/mars.txt" >expected &&
    echo "added $VENUS planets/venus.txt" >>expected &&
    echo "added $PLANETS planets" >>expected &&
    test_cmp expected actual
  
ok 175 - 'ipfs add -r --hash=blake2b-256' output looks good
176 - ipfs cat accept many hashes from built input Success 0.103
System.out »
expecting success: 
    { echo "$MARS"; echo "$VENUS"; } | ipfs cat >actual
  
ok 176 - ipfs cat accept many hashes from built input
177 - ipfs cat output looks good Success 0.013
System.out »
expecting success: 
    cat mountdir/planets/mars.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 177 - ipfs cat output looks good
178 - ipfs cat accept many hashes as args Success 0.142
System.out »
expecting success: 
    ipfs cat "$MARS" "$VENUS" >actual
  
ok 178 - ipfs cat accept many hashes as args
179 - ipfs cat output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected actual
  
ok 179 - ipfs cat output looks good
180 - ipfs cat with both arg and stdin Success 0.094
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" >actual
  
ok 180 - ipfs cat with both arg and stdin
181 - ipfs cat output looks good Success 0.019
System.out »
expecting success: 
    cat mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 181 - ipfs cat output looks good
182 - ipfs cat with two args and stdin Success 0.104
System.out »
expecting success: 
    echo "$MARS" | ipfs cat "$VENUS" "$VENUS" >actual
  
ok 182 - ipfs cat with two args and stdin
183 - ipfs cat output looks good Success 0.013
System.out »
expecting success: 
    cat mountdir/planets/venus.txt mountdir/planets/venus.txt >expected &&
    test_cmp expected actual
  
ok 183 - ipfs cat output looks good
184 - ipfs add --quieter succeeds Success 0.119
System.out »
expecting success: 
    ipfs add -r -Q $EXTRA_ARGS mountdir/planets >actual
  
ok 184 - ipfs add --quieter succeeds
185 - ipfs add --quieter returns only one correct hash Success 0.007
System.out »
expecting success: 
    echo "$PLANETS" > expected &&
    test_cmp expected actual
  
ok 185 - ipfs add --quieter returns only one correct hash
186 - cleanup Success 0.006
System.out »
expecting success: 
    rm -r mountdir/planets
  
ok 186 - cleanup
187 - 'ipfs add -rn' succeeds Success 0.139
System.out »
expecting success: 
  mkdir -p mountdir/moons/jupiter &&
  mkdir -p mountdir/moons/saturn &&
  echo "Hello Europa!" >mountdir/moons/jupiter/europa.txt &&
  echo "Hello Titan!" >mountdir/moons/saturn/titan.txt &&
  echo "hey you are no moon!" >mountdir/moons/mercury.txt &&
  ipfs add -rn mountdir/moons >actual

ok 187 - 'ipfs add -rn' succeeds
System.err »
 14 B / ? 

 14 B / 48 B   29.17%
 35 B / 48 B   72.92%

 35 B / 48 B   72.92%
 48 B / 48 B  100.00%

 48 B / 48 B  100.00%

 48 B / 48 B  100.00%

 48 B / 48 B  100.00%

 48 B / 48 B  100.00%
188 - 'ipfs add -rn' output looks good Success 0.011
System.out »
expecting success: 
  MOONS="QmbGoaQZm8kjYfCiN1aBsgwhqfUBGDYTrDb91Mz7Dvq81B" &&
  EUROPA="Qmbjg7zWdqdMaK2BucPncJQDxiALExph5k3NkQv5RHpccu" &&
  JUPITER="QmS5mZddhFPLWFX3w6FzAy9QxyYkaxvUpsWCtZ3r7jub9J" &&
  SATURN="QmaMagZT4rTE7Nonw8KGSK4oe1bh533yhZrCo1HihSG8FK" &&
  TITAN="QmZzppb9WHn552rmRqpPfgU5FEiHH6gDwi3MrB9cTdPwdb" &&
  MERCURY="QmRsTB5CpEUvDUpDgHCzb3VftZ139zrk9zs5ZcgYh9TMPJ" &&
  echo "added $EUROPA moons/jupiter/europa.txt" >expected &&
  echo "added $MERCURY moons/mercury.txt" >>expected &&
  echo "added $TITAN moons/saturn/titan.txt" >>expected &&
  echo "added $JUPITER moons/jupiter" >>expected &&
  echo "added $SATURN moons/saturn" >>expected &&
  echo "added $MOONS moons" >>expected &&
  test_cmp expected actual

ok 188 - 'ipfs add -rn' output looks good
189 - random-data is installed Success 0.004
System.out »
expecting success: 
  type random-data

random-data is /home/runner/work/kubo/kubo/kubo/test/bin/random-data
ok 189 - random-data is installed
190 - generate 5MB file using random-data Success 0.030
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 190 - generate 5MB file using random-data
191 - sha1 of the file looks ok Success 0.018
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 191 - sha1 of the file looks ok
192 - 'ipfs add bigfile' succeeds Success 0.118
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 192 - 'ipfs add  bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
193 - 'ipfs add bigfile' output looks good Success 0.007
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 193 - 'ipfs add bigfile' output looks good
194 - 'ipfs cat' succeeds Success 0.096
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 194 - 'ipfs cat' succeeds
195 - 'ipfs cat' output looks good Success 0.009
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 195 - 'ipfs cat' output looks good
196 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
197 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
198 - remove hash Success 0.124
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 196 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 197 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned QmapAfmzmeWYTNztMQEhUXFcSGrsax22WRG7YN9xLdMeQq
removed QmapAfmzmeWYTNztMQEhUXFcSGrsax22WRG7YN9xLdMeQq
ok 198 - remove hash
199 - get base32 version of CID Success 0.065
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 199 - get base32 version of CID
200 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.105
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 200 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
201 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 201 - 'ipfs add bigfile --cid-base=base32' output looks good
202 - 'ipfs cat bafybeifzldgpohqtv2vqnrkgd557kah5uv64ufhkakfwkfjtln6cii66ti' succeeds Success 0.081
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 202 - 'ipfs cat bafybeifzldgpohqtv2vqnrkgd557kah5uv64ufhkakfwkfjtln6cii66ti' succeeds
203 - generate 5MB file using random-data Success 0.021
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 203 - generate 5MB file using random-data
204 - sha1 of the file looks ok Success 0.018
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 204 - sha1 of the file looks ok
205 - 'ipfs add --raw-leaves bigfile' succeeds Success 0.102
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 205 - 'ipfs add --raw-leaves bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
206 - 'ipfs add bigfile' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 206 - 'ipfs add bigfile' output looks good
207 - 'ipfs cat' succeeds Success 0.085
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 207 - 'ipfs cat' succeeds
208 - 'ipfs cat' output looks good Success 0.009
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 208 - 'ipfs cat' output looks good
209 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
210 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
211 - remove hash Success 0.135
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 209 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 210 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned QmabWSFaPusmiZaaVZLhEUtHcj8CCvVeUfkBpKqAkKVMiS
removed QmabWSFaPusmiZaaVZLhEUtHcj8CCvVeUfkBpKqAkKVMiS
ok 211 - remove hash
212 - get base32 version of CID Success 0.064
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 212 - get base32 version of CID
213 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.091
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 213 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
214 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 214 - 'ipfs add bigfile --cid-base=base32' output looks good
215 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds Success 0.077
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 215 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds
216 - generate 5MB file using random-data Success 0.028
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 216 - generate 5MB file using random-data
217 - sha1 of the file looks ok Success 0.017
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 217 - sha1 of the file looks ok
218 - 'ipfs add --cid-version=1 bigfile' succeeds Success 0.100
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 218 - 'ipfs add --cid-version=1 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
219 - 'ipfs add bigfile' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 219 - 'ipfs add bigfile' output looks good
220 - 'ipfs cat' succeeds Success 0.079
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 220 - 'ipfs cat' succeeds
221 - 'ipfs cat' output looks good Success 0.010
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 221 - 'ipfs cat' output looks good
222 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
223 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
224 - remove hash Success 0.135
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 222 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 223 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m
removed bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m
ok 224 - remove hash
225 - get base32 version of CID Success 0.065
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 225 - get base32 version of CID
226 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.099
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 226 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
227 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.007
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 227 - 'ipfs add bigfile --cid-base=base32' output looks good
228 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds Success 0.082
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 228 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds
229 - generate 5MB file using random-data Success 0.025
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 229 - generate 5MB file using random-data
230 - sha1 of the file looks ok Success 0.016
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 230 - sha1 of the file looks ok
231 - 'ipfs add --cid-version=1 --raw-leaves=false bigfile' succeeds Success 0.108
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 231 - 'ipfs add --cid-version=1 --raw-leaves=false bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
232 - 'ipfs add bigfile' output looks good Success 0.008
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 232 - 'ipfs add bigfile' output looks good
233 - 'ipfs cat' succeeds Success 0.089
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 233 - 'ipfs cat' succeeds
234 - 'ipfs cat' output looks good Success 0.009
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 234 - 'ipfs cat' output looks good
235 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
236 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
237 - remove hash Success 0.138
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 235 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 236 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned bafybeifq4unep5w4agr3nlynxidj2rymf6dzu6bf4ieqqildkboe5mdmne
removed bafybeifq4unep5w4agr3nlynxidj2rymf6dzu6bf4ieqqildkboe5mdmne
ok 237 - remove hash
238 - get base32 version of CID Success 0.069
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 238 - get base32 version of CID
239 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.096
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 239 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / ? 
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
240 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 240 - 'ipfs add bigfile --cid-base=base32' output looks good
241 - 'ipfs cat bafybeifq4unep5w4agr3nlynxidj2rymf6dzu6bf4ieqqildkboe5mdmne' succeeds Success 0.076
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 241 - 'ipfs cat bafybeifq4unep5w4agr3nlynxidj2rymf6dzu6bf4ieqqildkboe5mdmne' succeeds
242 - generate 5MB file using random-data Success 0.023
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 242 - generate 5MB file using random-data
243 - sha1 of the file looks ok Success 0.016
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 243 - sha1 of the file looks ok
244 - 'ipfs add --hash=blake2b-256 bigfile' succeeds Success 0.082
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 244 - 'ipfs add --hash=blake2b-256 bigfile' succeeds
System.err »
 256.00 KiB / 5.00 MiB    5.00%
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
245 - 'ipfs add bigfile' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 245 - 'ipfs add bigfile' output looks good
246 - 'ipfs cat' succeeds Success 0.080
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 246 - 'ipfs cat' succeeds
247 - 'ipfs cat' output looks good Success 0.008
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 247 - 'ipfs cat' output looks good
248 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
249 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
250 - remove hash Success 0.120
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 248 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 249 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned bafykbzacebxcnlql4oc3mtscqn32aumqkqxxv3wt7dkyrphgh6lc2gckiq6bw
removed bafykbzacebxcnlql4oc3mtscqn32aumqkqxxv3wt7dkyrphgh6lc2gckiq6bw
ok 250 - remove hash
251 - get base32 version of CID Success 0.055
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 251 - get base32 version of CID
252 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.075
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 252 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
253 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 253 - 'ipfs add bigfile --cid-base=base32' output looks good
254 - 'ipfs cat bafykbzacebxcnlql4oc3mtscqn32aumqkqxxv3wt7dkyrphgh6lc2gckiq6bw' succeeds Success 0.077
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 254 - 'ipfs cat bafykbzacebxcnlql4oc3mtscqn32aumqkqxxv3wt7dkyrphgh6lc2gckiq6bw' succeeds
255 - generate 5MB file using random-data Success 0.024
System.out »
expecting success: 
    random-data -size=5242880 -seed=41 >mountdir/bigfile
  
ok 255 - generate 5MB file using random-data
256 - sha1 of the file looks ok Success 0.014
System.out »
expecting success: 
    echo "11145b8c4bc8f87ea2fcfc3d55708b8cac2aadf12862" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 256 - sha1 of the file looks ok
257 - 'ipfs add --hash=blake2b-256 --raw-leaves=false bigfile' succeeds Success 0.082
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 257 - 'ipfs add --hash=blake2b-256 --raw-leaves=false bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
258 - 'ipfs add bigfile' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $EXP_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 258 - 'ipfs add bigfile' output looks good
259 - 'ipfs cat' succeeds Success 0.086
System.out »
expecting success: 
    ipfs cat "$EXP_HASH" >actual
  
ok 259 - 'ipfs cat' succeeds
260 - 'ipfs cat' output looks good Success 0.008
System.out »
expecting success: 
    test_cmp mountdir/bigfile actual
  
ok 260 - 'ipfs cat' output looks good
261 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE)
0.000
262 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE)
0.000
263 - remove hash Success 0.119
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$EXP_HASH" >actual
   cat ipfs/bigfile succeeds
ok 261 # skip cat ipfs/bigfile succeeds (missing FUSE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp mountdir/bigfile actual
   cat ipfs/bigfile looks good
ok 262 # skip cat ipfs/bigfile looks good (missing FUSE)
expecting success: 
    ipfs pin rm "$EXP_HASH" &&
    ipfs block rm "$EXP_HASH"
  
unpinned bafykbzacearibnoamkfmcagpfgk2sbgx65qftnsrh4ttd3g7ghooasfnyavme
removed bafykbzacearibnoamkfmcagpfgk2sbgx65qftnsrh4ttd3g7ghooasfnyavme
ok 263 - remove hash
264 - get base32 version of CID Success 0.064
System.out »
expecting success: 
    ipfs cid base32 $EXP_HASH > base32_cid &&
    BASE32_HASH=`cat base32_cid`
  
ok 264 - get base32 version of CID
265 - ipfs add --cid-base=base32 bigfile' succeeds Success 0.076
System.out »
expecting success: 
    ipfs add $ADD_FLAGS --cid-base=base32 mountdir/bigfile >actual ||
    test_fsh cat daemon_err
  
ok 265 - ipfs add --cid-base=base32 bigfile' succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 5.00 MiB   10.00%
 768.00 KiB / 5.00 MiB   15.00%
 1.00 MiB / 5.00 MiB   20.00%
 1.25 MiB / 5.00 MiB   25.00%
 1.50 MiB / 5.00 MiB   30.00%
 1.75 MiB / 5.00 MiB   35.00%
 2.00 MiB / 5.00 MiB   40.00%
 2.25 MiB / 5.00 MiB   45.00%
 2.50 MiB / 5.00 MiB   50.00%
 2.75 MiB / 5.00 MiB   55.00%
 3.00 MiB / 5.00 MiB   60.00%
 3.25 MiB / 5.00 MiB   65.00%
 3.50 MiB / 5.00 MiB   70.00%
 3.75 MiB / 5.00 MiB   75.00%
 4.00 MiB / 5.00 MiB   80.00%
 4.25 MiB / 5.00 MiB   85.00%
 4.50 MiB / 5.00 MiB   90.00%
 4.75 MiB / 5.00 MiB   95.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%
 5.00 MiB / 5.00 MiB  100.00%

 5.00 MiB / 5.00 MiB  100.00%
266 - 'ipfs add bigfile --cid-base=base32' output looks good Success 0.005
System.out »
expecting success: 
    echo "added $BASE32_HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 266 - 'ipfs add bigfile --cid-base=base32' output looks good
267 - 'ipfs cat bafykbzacearibnoamkfmcagpfgk2sbgx65qftnsrh4ttd3g7ghooasfnyavme' succeeds Success 0.079
System.out »
expecting success: 
    ipfs cat "$BASE32_HASH" >actual
  
ok 267 - 'ipfs cat bafykbzacearibnoamkfmcagpfgk2sbgx65qftnsrh4ttd3g7ghooasfnyavme' succeeds
268 - generate 100MB file using random-data Success 0.260
System.out »
expecting success: 
    random-data -size=104857600 -seed=42 >mountdir/bigfile
  
ok 268 - generate 100MB file using random-data
269 - sha1 of the file looks ok Success 0.137
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 269 - sha1 of the file looks ok
270 - ipfs add bigfile succeeds Success 0.622
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual
  
ok 270 - ipfs add  bigfile succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 100.00 MiB    0.50%
 768.00 KiB / 100.00 MiB    0.75% 00m01s
 1.00 MiB / 100.00 MiB    1.00%
 1.25 MiB / 100.00 MiB    1.25%
 1.50 MiB / 100.00 MiB    1.50%
 1.75 MiB / 100.00 MiB    1.75%
 2.00 MiB / 100.00 MiB    2.00%
 2.25 MiB / 100.00 MiB    2.25%
 2.50 MiB / 100.00 MiB    2.50%
 2.75 MiB / 100.00 MiB    2.75%
 3.00 MiB / 100.00 MiB    3.00%
 3.25 MiB / 100.00 MiB    3.25%
 3.50 MiB / 100.00 MiB    3.50%
 3.75 MiB / 100.00 MiB    3.75%
 4.00 MiB / 100.00 MiB    4.00%
 4.25 MiB / 100.00 MiB    4.25%
 4.50 MiB / 100.00 MiB    4.50%
 4.75 MiB / 100.00 MiB    4.75%
 5.00 MiB / 100.00 MiB    5.00%
 5.25 MiB / 100.00 MiB    5.25%
 5.50 MiB / 100.00 MiB    5.50%
 5.75 MiB / 100.00 MiB    5.75%
 6.00 MiB / 100.00 MiB    6.00%
 6.25 MiB / 100.00 MiB    6.25%
 6.50 MiB / 100.00 MiB    6.50%
 6.75 MiB / 100.00 MiB    6.75%
 7.00 MiB / 100.00 MiB    7.00%
 7.25 MiB / 100.00 MiB    7.25%
 7.50 MiB / 100.00 MiB    7.50%
 7.75 MiB / 100.00 MiB    7.75%
 8.00 MiB / 100.00 MiB    8.00%
 8.25 MiB / 100.00 MiB    8.25%
 8.50 MiB / 100.00 MiB    8.50%
 8.75 MiB / 100.00 MiB    8.75%
 9.00 MiB / 100.00 MiB    9.00%
 9.25 MiB / 100.00 MiB    9.25%
 9.50 MiB / 100.00 MiB    9.50%
 9.75 MiB / 100.00 MiB    9.75%
 10.00 MiB / 100.00 MiB   10.00%
 10.25 MiB / 100.00 MiB   10.25%
 10.50 MiB / 100.00 MiB   10.50%
 10.75 MiB / 100.00 MiB   10.75%
 11.00 MiB / 100.00 MiB   11.00%
 11.25 MiB / 100.00 MiB   11.25%
 11.50 MiB / 100.00 MiB   11.50%
 11.75 MiB / 100.00 MiB   11.75%
 12.00 MiB / 100.00 MiB   12.00%
 12.25 MiB / 100.00 MiB   12.25%
 12.50 MiB / 100.00 MiB   12.50%
 12.75 MiB / 100.00 MiB   12.75%
 13.00 MiB / 100.00 MiB   13.00%
 13.25 MiB / 100.00 MiB   13.25%
 13.50 MiB / 100.00 MiB   13.50%
 13.75 MiB / 100.00 MiB   13.75%
 14.00 MiB / 100.00 MiB   14.00%
 14.25 MiB / 100.00 MiB   14.25%
 14.50 MiB / 100.00 MiB   14.50%
 14.75 MiB / 100.00 MiB   14.75%
 15.00 MiB / 100.00 MiB   15.00%
 15.25 MiB / 100.00 MiB   15.25%
 15.50 MiB / 100.00 MiB   15.50%
 15.75 MiB / 100.00 MiB   15.75%
 16.00 MiB / 100.00 MiB   16.00%
 16.25 MiB / 100.00 MiB   16.25%
 16.50 MiB / 100.00 MiB   16.50%
 16.75 MiB / 100.00 MiB   16.75%
 17.00 MiB / 100.00 MiB   17.00%
 17.25 MiB / 100.00 MiB   17.25%
 17.50 MiB / 100.00 MiB   17.50%
 17.75 MiB / 100.00 MiB   17.75%
 18.00 MiB / 100.00 MiB   18.00%
 18.25 MiB / 100.00 MiB   18.25%
 18.50 MiB / 100.00 MiB   18.50%
 18.75 MiB / 100.00 MiB   18.75%
 19.00 MiB / 100.00 MiB   19.00%
 19.25 MiB / 100.00 MiB   19.25%
 19.50 MiB / 100.00 MiB   19.50%
 19.75 MiB / 100.00 MiB   19.75%
 20.00 MiB / 100.00 MiB   20.00%
 20.25 MiB / 100.00 MiB   20.25%
 20.50 MiB / 100.00 MiB   20.50%
 20.75 MiB / 100.00 MiB   20.75%
 21.00 MiB / 100.00 MiB   21.00%
 21.25 MiB / 100.00 MiB   21.25%
 21.50 MiB / 100.00 MiB   21.50%
 21.75 MiB / 100.00 MiB   21.75%
 22.00 MiB / 100.00 MiB   22.00%
 22.25 MiB / 100.00 MiB   22.25%
 22.50 MiB / 100.00 MiB   22.50%
 22.75 MiB / 100.00 MiB   22.75%
 23.00 MiB / 100.00 MiB   23.00%
 23.25 MiB / 100.00 MiB   23.25%
 23.50 MiB / 100.00 MiB   23.50%
 23.75 MiB / 100.00 MiB   23.75%
 24.00 MiB / 100.00 MiB   24.00%
 24.25 MiB / 100.00 MiB   24.25%
 24.50 MiB / 100.00 MiB   24.50%
 24.75 MiB / 100.00 MiB   24.75%
 25.00 MiB / 100.00 MiB   25.00%
 25.25 MiB / 100.00 MiB   25.25%
 25.50 MiB / 100.00 MiB   25.50%
 25.75 MiB / 100.00 MiB   25.75%
 26.00 MiB / 100.00 MiB   26.00%
 26.25 MiB / 100.00 MiB   26.25%
 26.50 MiB / 100.00 MiB   26.50%
 26.75 MiB / 100.00 MiB   26.75%
 27.00 MiB / 100.00 MiB   27.00%
 27.25 MiB / 100.00 MiB   27.25%
 27.50 MiB / 100.00 MiB   27.50%
 27.75 MiB / 100.00 MiB   27.75%
 28.00 MiB / 100.00 MiB   28.00%
 28.25 MiB / 100.00 MiB   28.25%
 28.50 MiB / 100.00 MiB   28.50%
 28.75 MiB / 100.00 MiB   28.75%
 29.00 MiB / 100.00 MiB   29.00%
 29.25 MiB / 100.00 MiB   29.25%
 29.50 MiB / 100.00 MiB   29.50%
 29.75 MiB / 100.00 MiB   29.75%
 30.00 MiB / 100.00 MiB   30.00%
 30.25 MiB / 100.00 MiB   30.25%
 30.50 MiB / 100.00 MiB   30.50%
 30.75 MiB / 100.00 MiB   30.75%
 31.00 MiB / 100.00 MiB   31.00%
 31.25 MiB / 100.00 MiB   31.25%
 31.50 MiB / 100.00 MiB   31.50%
 31.75 MiB / 100.00 MiB   31.75%
 32.00 MiB / 100.00 MiB   32.00%
 32.25 MiB / 100.00 MiB   32.25%
 32.50 MiB / 100.00 MiB   32.50%
 32.75 MiB / 100.00 MiB   32.75%
 33.00 MiB / 100.00 MiB   33.00%
 33.25 MiB / 100.00 MiB   33.25%
 33.50 MiB / 100.00 MiB   33.50%
 33.75 MiB / 100.00 MiB   33.75%
 34.00 MiB / 100.00 MiB   34.00%
 34.25 MiB / 100.00 MiB   34.25%
 34.50 MiB / 100.00 MiB   34.50%
 34.75 MiB / 100.00 MiB   34.75%
 35.00 MiB / 100.00 MiB   35.00%
 35.25 MiB / 100.00 MiB   35.25%
 35.50 MiB / 100.00 MiB   35.50%
 35.75 MiB / 100.00 MiB   35.75%
 36.00 MiB / 100.00 MiB   36.00%
 36.25 MiB / 100.00 MiB   36.25%
 36.50 MiB / 100.00 MiB   36.50%
 36.75 MiB / 100.00 MiB   36.75%
 37.00 MiB / 100.00 MiB   37.00%
 37.25 MiB / 100.00 MiB   37.25%
 37.50 MiB / 100.00 MiB   37.50%
 37.75 MiB / 100.00 MiB   37.75%
 38.00 MiB / 100.00 MiB   38.00%
 38.25 MiB / 100.00 MiB   38.25%
 38.50 MiB / 100.00 MiB   38.50%
 38.75 MiB / 100.00 MiB   38.75%
 39.00 MiB / 100.00 MiB   39.00%
 39.25 MiB / 100.00 MiB   39.25%
 39.50 MiB / 100.00 MiB   39.50%
 39.75 MiB / 100.00 MiB   39.75%
 40.00 MiB / 100.00 MiB   40.00%
 40.25 MiB / 100.00 MiB   40.25%
 40.50 MiB / 100.00 MiB   40.50%
 40.75 MiB / 100.00 MiB   40.75%
 41.00 MiB / 100.00 MiB   41.00%
 41.25 MiB / 100.00 MiB   41.25%
 41.50 MiB / 100.00 MiB   41.50%
 41.75 MiB / 100.00 MiB   41.75%
 42.00 MiB / 100.00 MiB   42.00%
 42.25 MiB / 100.00 MiB   42.25%
 42.50 MiB / 100.00 MiB   42.50%
 42.75 MiB / 100.00 MiB   42.75%
 43.00 MiB / 100.00 MiB   43.00%
 43.25 MiB / 100.00 MiB   43.25%
 43.50 MiB / 100.00 MiB   43.50%
 43.75 MiB / 100.00 MiB   43.75%
 44.00 MiB / 100.00 MiB   44.00%
 44.25 MiB / 100.00 MiB   44.25%
 44.50 MiB / 100.00 MiB   44.50%
 44.75 MiB / 100.00 MiB   44.75%
 45.00 MiB / 100.00 MiB   45.00%
 45.25 MiB / 100.00 MiB   45.25%
 45.50 MiB / 100.00 MiB   45.50%
 45.75 MiB / 100.00 MiB   45.75%
 46.00 MiB / 100.00 MiB   46.00%
 46.25 MiB / 100.00 MiB   46.25%
 46.50 MiB / 100.00 MiB   46.50%
 46.75 MiB / 100.00 MiB   46.75%
 47.00 MiB / 100.00 MiB   47.00%
 47.25 MiB / 100.00 MiB   47.25%
 47.50 MiB / 100.00 MiB   47.50%
 47.75 MiB / 100.00 MiB   47.75%
 48.00 MiB / 100.00 MiB   48.00%
 48.25 MiB / 100.00 MiB   48.25%
 48.50 MiB / 100.00 MiB   48.50%
 48.75 MiB / 100.00 MiB   48.75%
 49.00 MiB / 100.00 MiB   49.00%
 49.25 MiB / 100.00 MiB   49.25%
 49.50 MiB / 100.00 MiB   49.50%
 49.75 MiB / 100.00 MiB   49.75%
 50.00 MiB / 100.00 MiB   50.00%
 50.25 MiB / 100.00 MiB   50.25%
 50.50 MiB / 100.00 MiB   50.50%
 50.75 MiB / 100.00 MiB   50.75%
 51.00 MiB / 100.00 MiB   51.00%
 51.25 MiB / 100.00 MiB   51.25%
 51.50 MiB / 100.00 MiB   51.50%
 51.75 MiB / 100.00 MiB   51.75%
 52.00 MiB / 100.00 MiB   52.00%
 52.25 MiB / 100.00 MiB   52.25%
 52.50 MiB / 100.00 MiB   52.50%
 52.75 MiB / 100.00 MiB   52.75%
 53.00 MiB / 100.00 MiB   53.00%
 53.25 MiB / 100.00 MiB   53.25%
 53.50 MiB / 100.00 MiB   53.50%
 53.75 MiB / 100.00 MiB   53.75%
 54.00 MiB / 100.00 MiB   54.00%
 54.25 MiB / 100.00 MiB   54.25%
 54.50 MiB / 100.00 MiB   54.50%
 54.75 MiB / 100.00 MiB   54.75%
 55.00 MiB / 100.00 MiB   55.00%
 55.25 MiB / 100.00 MiB   55.25%
 55.50 MiB / 100.00 MiB   55.50%
 55.75 MiB / 100.00 MiB   55.75%
 56.00 MiB / 100.00 MiB   56.00%
 56.25 MiB / 100.00 MiB   56.25%
 56.50 MiB / 100.00 MiB   56.50%
 56.75 MiB / 100.00 MiB   56.75%
 57.00 MiB / 100.00 MiB   57.00%
 57.25 MiB / 100.00 MiB   57.25%
 57.50 MiB / 100.00 MiB   57.50%
 57.75 MiB / 100.00 MiB   57.75%
 58.00 MiB / 100.00 MiB   58.00%
 58.25 MiB / 100.00 MiB   58.25%
 58.50 MiB / 100.00 MiB   58.50%
 58.75 MiB / 100.00 MiB   58.75%
 59.00 MiB / 100.00 MiB   59.00%
 59.25 MiB / 100.00 MiB   59.25%
 59.50 MiB / 100.00 MiB   59.50%
 59.75 MiB / 100.00 MiB   59.75%
 60.00 MiB / 100.00 MiB   60.00%
 60.25 MiB / 100.00 MiB   60.25%
 60.50 MiB / 100.00 MiB   60.50%
 60.75 MiB / 100.00 MiB   60.75%
 61.00 MiB / 100.00 MiB   61.00%
 61.25 MiB / 100.00 MiB   61.25%
 61.50 MiB / 100.00 MiB   61.50%
 61.75 MiB / 100.00 MiB   61.75%
 62.00 MiB / 100.00 MiB   62.00%
 62.25 MiB / 100.00 MiB   62.25%
 62.50 MiB / 100.00 MiB   62.50%
 62.75 MiB / 100.00 MiB   62.75%
 63.00 MiB / 100.00 MiB   63.00%
 63.25 MiB / 100.00 MiB   63.25%
 63.50 MiB / 100.00 MiB   63.50%
 63.75 MiB / 100.00 MiB   63.75%
 64.00 MiB / 100.00 MiB   64.00%
 64.25 MiB / 100.00 MiB   64.25%
 64.50 MiB / 100.00 MiB   64.50%
 64.75 MiB / 100.00 MiB   64.75%
 65.00 MiB / 100.00 MiB   65.00%
 65.25 MiB / 100.00 MiB   65.25%
 65.50 MiB / 100.00 MiB   65.50%
 65.75 MiB / 100.00 MiB   65.75%
 66.00 MiB / 100.00 MiB   66.00%
 66.25 MiB / 100.00 MiB   66.25%
 66.50 MiB / 100.00 MiB   66.50%
 66.75 MiB / 100.00 MiB   66.75%
 67.00 MiB / 100.00 MiB   67.00%
 67.25 MiB / 100.00 MiB   67.25%
 67.50 MiB / 100.00 MiB   67.50%
 67.75 MiB / 100.00 MiB   67.75%
 68.00 MiB / 100.00 MiB   68.00%
 68.25 MiB / 100.00 MiB   68.25%
 68.50 MiB / 100.00 MiB   68.50%
 68.75 MiB / 100.00 MiB   68.75%
 69.00 MiB / 100.00 MiB   69.00%
 69.25 MiB / 100.00 MiB   69.25%
 69.50 MiB / 100.00 MiB   69.50%
 69.75 MiB / 100.00 MiB   69.75%
 70.00 MiB / 100.00 MiB   70.00%
 70.25 MiB / 100.00 MiB   70.25%
 70.50 MiB / 100.00 MiB   70.50%
 70.75 MiB / 100.00 MiB   70.75%
 71.00 MiB / 100.00 MiB   71.00%
 71.25 MiB / 100.00 MiB   71.25%
 71.50 MiB / 100.00 MiB   71.50%
 71.75 MiB / 100.00 MiB   71.75%
 72.00 MiB / 100.00 MiB   72.00%
 72.25 MiB / 100.00 MiB   72.25%
 72.50 MiB / 100.00 MiB   72.50%
 72.75 MiB / 100.00 MiB   72.75%
 73.00 MiB / 100.00 MiB   73.00%
 73.25 MiB / 100.00 MiB   73.25%
 73.50 MiB / 100.00 MiB   73.50%
 73.75 MiB / 100.00 MiB   73.75%
 74.00 MiB / 100.00 MiB   74.00%
 74.25 MiB / 100.00 MiB   74.25%
 74.50 MiB / 100.00 MiB   74.50%
 74.75 MiB / 100.00 MiB   74.75%
 75.00 MiB / 100.00 MiB   75.00%
 75.25 MiB / 100.00 MiB   75.25%
 75.50 MiB / 100.00 MiB   75.50%
 75.75 MiB / 100.00 MiB   75.75%
 76.00 MiB / 100.00 MiB   76.00%
 76.25 MiB / 100.00 MiB   76.25%
 76.50 MiB / 100.00 MiB   76.50%
 76.75 MiB / 100.00 MiB   76.75%
 77.00 MiB / 100.00 MiB   77.00%
 77.25 MiB / 100.00 MiB   77.25%
 77.50 MiB / 100.00 MiB   77.50%
 77.75 MiB / 100.00 MiB   77.75%
 78.00 MiB / 100.00 MiB   78.00%
 78.25 MiB / 100.00 MiB   78.25%
 78.50 MiB / 100.00 MiB   78.50%
 78.75 MiB / 100.00 MiB   78.75%
 79.00 MiB / 100.00 MiB   79.00%
 79.25 MiB / 100.00 MiB   79.25%
 79.50 MiB / 100.00 MiB   79.50%
 79.75 MiB / 100.00 MiB   79.75%
 80.00 MiB / 100.00 MiB   80.00%
 80.25 MiB / 100.00 MiB   80.25%
 80.50 MiB / 100.00 MiB   80.50%
 80.75 MiB / 100.00 MiB   80.75%
 81.00 MiB / 100.00 MiB   81.00%
 81.25 MiB / 100.00 MiB   81.25%
 81.50 MiB / 100.00 MiB   81.50%
 81.75 MiB / 100.00 MiB   81.75%
 82.00 MiB / 100.00 MiB   82.00%
 82.25 MiB / 100.00 MiB   82.25%
 82.50 MiB / 100.00 MiB   82.50%
 82.75 MiB / 100.00 MiB   82.75%
 83.00 MiB / 100.00 MiB   83.00%
 83.25 MiB / 100.00 MiB   83.25%
 83.50 MiB / 100.00 MiB   83.50%
 83.75 MiB / 100.00 MiB   83.75%
 84.00 MiB / 100.00 MiB   84.00%
 84.25 MiB / 100.00 MiB   84.25%
 84.50 MiB / 100.00 MiB   84.50%
 84.75 MiB / 100.00 MiB   84.75%
 85.00 MiB / 100.00 MiB   85.00%
 85.25 MiB / 100.00 MiB   85.25%
 85.50 MiB / 100.00 MiB   85.50%
 85.75 MiB / 100.00 MiB   85.75%
 86.00 MiB / 100.00 MiB   86.00%
 86.25 MiB / 100.00 MiB   86.25%
 86.50 MiB / 100.00 MiB   86.50%
 86.75 MiB / 100.00 MiB   86.75%
 87.00 MiB / 100.00 MiB   87.00%
 87.25 MiB / 100.00 MiB   87.25%
 87.50 MiB / 100.00 MiB   87.50%
 87.75 MiB / 100.00 MiB   87.75%
 88.00 MiB / 100.00 MiB   88.00%
 88.25 MiB / 100.00 MiB   88.25%
 88.50 MiB / 100.00 MiB   88.50%
 88.75 MiB / 100.00 MiB   88.75%
 89.00 MiB / 100.00 MiB   89.00%
 89.25 MiB / 100.00 MiB   89.25%
 89.50 MiB / 100.00 MiB   89.50%
 89.75 MiB / 100.00 MiB   89.75%
 90.00 MiB / 100.00 MiB   90.00%
 90.25 MiB / 100.00 MiB   90.25%
 90.50 MiB / 100.00 MiB   90.50%
 90.75 MiB / 100.00 MiB   90.75%
 91.00 MiB / 100.00 MiB   91.00%
 91.25 MiB / 100.00 MiB   91.25%
 91.50 MiB / 100.00 MiB   91.50%
 91.75 MiB / 100.00 MiB   91.75%
 92.00 MiB / 100.00 MiB   92.00%
 92.25 MiB / 100.00 MiB   92.25%
 92.50 MiB / 100.00 MiB   92.50%
 92.75 MiB / 100.00 MiB   92.75%
 93.00 MiB / 100.00 MiB   93.00%
 93.25 MiB / 100.00 MiB   93.25%
 93.50 MiB / 100.00 MiB   93.50%
 93.75 MiB / 100.00 MiB   93.75%
 94.00 MiB / 100.00 MiB   94.00%
 94.25 MiB / 100.00 MiB   94.25%
 94.50 MiB / 100.00 MiB   94.50%
 94.75 MiB / 100.00 MiB   94.75%
 95.00 MiB / 100.00 MiB   95.00%
 95.25 MiB / 100.00 MiB   95.25%
 95.50 MiB / 100.00 MiB   95.50%
 95.75 MiB / 100.00 MiB   95.75%
 96.00 MiB / 100.00 MiB   96.00%
 96.25 MiB / 100.00 MiB   96.25%
 96.50 MiB / 100.00 MiB   96.50%
 96.75 MiB / 100.00 MiB   96.75%
 97.00 MiB / 100.00 MiB   97.00%
 97.25 MiB / 100.00 MiB   97.25%
 97.50 MiB / 100.00 MiB   97.50%
 97.75 MiB / 100.00 MiB   97.75%
 98.00 MiB / 100.00 MiB   98.00%
 98.25 MiB / 100.00 MiB   98.25%
 98.50 MiB / 100.00 MiB   98.50%
 98.75 MiB / 100.00 MiB   98.75%
 99.00 MiB / 100.00 MiB   99.00%
 99.25 MiB / 100.00 MiB   99.25%
 99.50 MiB / 100.00 MiB   99.50%
 99.75 MiB / 100.00 MiB   99.75%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%

 100.00 MiB / 100.00 MiB  100.00%
271 - ipfs add bigfile output looks good Success 0.011
System.out »
expecting success: 
    echo "added $HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 271 - ipfs add bigfile output looks good
272 - ipfs cat succeeds Success 0.568
System.out »
expecting success: 
    ipfs cat "$HASH" | multihash -a=sha1 -e=hex >sha1_actual
  
ok 272 - ipfs cat succeeds
System.err »
 0 B / 100.00 MiB    0.00%
 46.00 MiB / 100.00 MiB   46.00%
 87.28 MiB / 100.00 MiB   87.28%

 100.00 MiB / 100.00 MiB  100.00% 0s
273 - ipfs cat output looks good Success 0.586
System.out »
expecting success: 
    ipfs cat "$HASH" >actual &&
    test_cmp mountdir/bigfile actual
  
ok 273 - ipfs cat output looks good
System.err »
 0 B / 100.00 MiB    0.00%
 60.00 MiB / 100.00 MiB   60.00%

 100.00 MiB / 100.00 MiB  100.00% 0s
274 - ipfs cat output hashed looks good Success 0.006
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    test_cmp sha1_expected sha1_actual
  
ok 274 - ipfs cat output hashed looks good
275 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
0.000
276 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
0.000
277 - generate 100MB file using random-data Success 0.397
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$HASH" | multihash -a=sha1 -e=hex >sha1_actual
   cat ipfs/bigfile succeeds
ok 275 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp sha1_expected sha1_actual
   cat ipfs/bigfile looks good
ok 276 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
expecting success: 
    random-data -size=104857600 -seed=42 >mountdir/bigfile
  
ok 277 - generate 100MB file using random-data
278 - sha1 of the file looks ok Success 0.136
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 278 - sha1 of the file looks ok
279 - ipfs add --cid-version=1 bigfile succeeds Success 0.670
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual
  
ok 279 - ipfs add --cid-version=1 bigfile succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 100.00 MiB    0.50%
 768.00 KiB / 100.00 MiB    0.75%
 1.00 MiB / 100.00 MiB    1.00%
 1.25 MiB / 100.00 MiB    1.25%
 1.50 MiB / 100.00 MiB    1.50%
 1.75 MiB / 100.00 MiB    1.75%
 2.00 MiB / 100.00 MiB    2.00%
 2.25 MiB / 100.00 MiB    2.25%
 2.50 MiB / 100.00 MiB    2.50%
 2.75 MiB / 100.00 MiB    2.75%
 3.00 MiB / 100.00 MiB    3.00%
 3.25 MiB / 100.00 MiB    3.25%
 3.50 MiB / 100.00 MiB    3.50%
 3.75 MiB / 100.00 MiB    3.75%
 4.00 MiB / 100.00 MiB    4.00%
 4.25 MiB / 100.00 MiB    4.25%
 4.50 MiB / 100.00 MiB    4.50%
 4.75 MiB / 100.00 MiB    4.75%
 5.00 MiB / 100.00 MiB    5.00%
 5.25 MiB / 100.00 MiB    5.25%
 5.50 MiB / 100.00 MiB    5.50%
 5.75 MiB / 100.00 MiB    5.75%
 6.00 MiB / 100.00 MiB    6.00%
 6.25 MiB / 100.00 MiB    6.25%
 6.50 MiB / 100.00 MiB    6.50%
 6.75 MiB / 100.00 MiB    6.75%
 7.00 MiB / 100.00 MiB    7.00%
 7.25 MiB / 100.00 MiB    7.25%
 7.50 MiB / 100.00 MiB    7.50%
 7.75 MiB / 100.00 MiB    7.75%
 8.00 MiB / 100.00 MiB    8.00%
 8.25 MiB / 100.00 MiB    8.25%
 8.50 MiB / 100.00 MiB    8.50%
 8.75 MiB / 100.00 MiB    8.75%
 9.00 MiB / 100.00 MiB    9.00%
 9.25 MiB / 100.00 MiB    9.25%
 9.50 MiB / 100.00 MiB    9.50%
 9.75 MiB / 100.00 MiB    9.75%
 10.00 MiB / 100.00 MiB   10.00%
 10.25 MiB / 100.00 MiB   10.25%
 10.50 MiB / 100.00 MiB   10.50%
 10.75 MiB / 100.00 MiB   10.75%
 11.00 MiB / 100.00 MiB   11.00%
 11.25 MiB / 100.00 MiB   11.25%
 11.50 MiB / 100.00 MiB   11.50%
 11.75 MiB / 100.00 MiB   11.75%
 12.00 MiB / 100.00 MiB   12.00%
 12.25 MiB / 100.00 MiB   12.25%
 12.50 MiB / 100.00 MiB   12.50%
 12.75 MiB / 100.00 MiB   12.75%
 13.00 MiB / 100.00 MiB   13.00%
 13.25 MiB / 100.00 MiB   13.25%
 13.50 MiB / 100.00 MiB   13.50%
 13.75 MiB / 100.00 MiB   13.75%
 14.00 MiB / 100.00 MiB   14.00%
 14.25 MiB / 100.00 MiB   14.25%
 14.50 MiB / 100.00 MiB   14.50%
 14.75 MiB / 100.00 MiB   14.75%
 15.00 MiB / 100.00 MiB   15.00%
 15.25 MiB / 100.00 MiB   15.25%
 15.50 MiB / 100.00 MiB   15.50%
 15.75 MiB / 100.00 MiB   15.75%
 16.00 MiB / 100.00 MiB   16.00%
 16.25 MiB / 100.00 MiB   16.25%
 16.50 MiB / 100.00 MiB   16.50%
 16.75 MiB / 100.00 MiB   16.75%
 17.00 MiB / 100.00 MiB   17.00%
 17.25 MiB / 100.00 MiB   17.25%
 17.50 MiB / 100.00 MiB   17.50%
 17.75 MiB / 100.00 MiB   17.75%
 18.00 MiB / 100.00 MiB   18.00%
 18.25 MiB / 100.00 MiB   18.25%
 18.50 MiB / 100.00 MiB   18.50%
 18.75 MiB / 100.00 MiB   18.75%
 19.00 MiB / 100.00 MiB   19.00%
 19.25 MiB / 100.00 MiB   19.25%
 19.50 MiB / 100.00 MiB   19.50%
 19.75 MiB / 100.00 MiB   19.75%
 20.00 MiB / 100.00 MiB   20.00%
 20.25 MiB / 100.00 MiB   20.25%
 20.50 MiB / 100.00 MiB   20.50%
 20.75 MiB / 100.00 MiB   20.75%
 21.00 MiB / 100.00 MiB   21.00%
 21.25 MiB / 100.00 MiB   21.25%
 21.50 MiB / 100.00 MiB   21.50%
 21.75 MiB / 100.00 MiB   21.75%
 22.00 MiB / 100.00 MiB   22.00%
 22.25 MiB / 100.00 MiB   22.25%
 22.50 MiB / 100.00 MiB   22.50%
 22.75 MiB / 100.00 MiB   22.75%
 23.00 MiB / 100.00 MiB   23.00%
 23.25 MiB / 100.00 MiB   23.25%
 23.50 MiB / 100.00 MiB   23.50%
 23.75 MiB / 100.00 MiB   23.75%
 24.00 MiB / 100.00 MiB   24.00%
 24.25 MiB / 100.00 MiB   24.25%
 24.50 MiB / 100.00 MiB   24.50%
 24.75 MiB / 100.00 MiB   24.75%
 25.00 MiB / 100.00 MiB   25.00%
 25.25 MiB / 100.00 MiB   25.25%
 25.50 MiB / 100.00 MiB   25.50%
 25.75 MiB / 100.00 MiB   25.75%
 26.00 MiB / 100.00 MiB   26.00%
 26.25 MiB / 100.00 MiB   26.25%
 26.50 MiB / 100.00 MiB   26.50%
 26.75 MiB / 100.00 MiB   26.75%
 27.00 MiB / 100.00 MiB   27.00%
 27.25 MiB / 100.00 MiB   27.25%
 27.50 MiB / 100.00 MiB   27.50%
 27.75 MiB / 100.00 MiB   27.75%
 28.00 MiB / 100.00 MiB   28.00%
 28.25 MiB / 100.00 MiB   28.25%
 28.50 MiB / 100.00 MiB   28.50%
 28.75 MiB / 100.00 MiB   28.75%
 29.00 MiB / 100.00 MiB   29.00%
 29.25 MiB / 100.00 MiB   29.25%
 29.50 MiB / 100.00 MiB   29.50%
 29.75 MiB / 100.00 MiB   29.75%
 30.00 MiB / 100.00 MiB   30.00%
 30.25 MiB / 100.00 MiB   30.25%
 30.50 MiB / 100.00 MiB   30.50%
 30.75 MiB / 100.00 MiB   30.75%
 31.00 MiB / 100.00 MiB   31.00%
 31.25 MiB / 100.00 MiB   31.25%
 31.50 MiB / 100.00 MiB   31.50%
 31.75 MiB / 100.00 MiB   31.75%
 32.00 MiB / 100.00 MiB   32.00%
 32.25 MiB / 100.00 MiB   32.25%
 32.50 MiB / 100.00 MiB   32.50%
 32.75 MiB / 100.00 MiB   32.75%
 33.00 MiB / 100.00 MiB   33.00%
 33.25 MiB / 100.00 MiB   33.25%
 33.50 MiB / 100.00 MiB   33.50%
 33.75 MiB / 100.00 MiB   33.75%
 34.00 MiB / 100.00 MiB   34.00%
 34.25 MiB / 100.00 MiB   34.25%
 34.50 MiB / 100.00 MiB   34.50%
 34.75 MiB / 100.00 MiB   34.75%
 35.00 MiB / 100.00 MiB   35.00%
 35.25 MiB / 100.00 MiB   35.25%
 35.50 MiB / 100.00 MiB   35.50%
 35.75 MiB / 100.00 MiB   35.75%
 36.00 MiB / 100.00 MiB   36.00%
 36.25 MiB / 100.00 MiB   36.25%
 36.50 MiB / 100.00 MiB   36.50%
 36.75 MiB / 100.00 MiB   36.75%
 37.00 MiB / 100.00 MiB   37.00%
 37.25 MiB / 100.00 MiB   37.25%
 37.50 MiB / 100.00 MiB   37.50%
 37.75 MiB / 100.00 MiB   37.75%
 38.00 MiB / 100.00 MiB   38.00%
 38.25 MiB / 100.00 MiB   38.25%
 38.50 MiB / 100.00 MiB   38.50%
 38.75 MiB / 100.00 MiB   38.75%
 39.00 MiB / 100.00 MiB   39.00%
 39.25 MiB / 100.00 MiB   39.25%
 39.50 MiB / 100.00 MiB   39.50%
 39.75 MiB / 100.00 MiB   39.75%
 40.00 MiB / 100.00 MiB   40.00%
 40.25 MiB / 100.00 MiB   40.25%
 40.50 MiB / 100.00 MiB   40.50%
 40.75 MiB / 100.00 MiB   40.75%
 41.00 MiB / 100.00 MiB   41.00%
 41.25 MiB / 100.00 MiB   41.25%
 41.50 MiB / 100.00 MiB   41.50%
 41.75 MiB / 100.00 MiB   41.75%
 42.00 MiB / 100.00 MiB   42.00%
 42.25 MiB / 100.00 MiB   42.25%
 42.50 MiB / 100.00 MiB   42.50%
 42.75 MiB / 100.00 MiB   42.75%
 43.00 MiB / 100.00 MiB   43.00%
 43.25 MiB / 100.00 MiB   43.25%
 43.50 MiB / 100.00 MiB   43.50%
 43.75 MiB / 100.00 MiB   43.75%
 44.00 MiB / 100.00 MiB   44.00%
 44.25 MiB / 100.00 MiB   44.25%
 44.50 MiB / 100.00 MiB   44.50%
 44.75 MiB / 100.00 MiB   44.75%
 45.00 MiB / 100.00 MiB   45.00%
 45.25 MiB / 100.00 MiB   45.25%
 45.50 MiB / 100.00 MiB   45.50%
 45.75 MiB / 100.00 MiB   45.75%
 46.00 MiB / 100.00 MiB   46.00%
 46.25 MiB / 100.00 MiB   46.25%
 46.50 MiB / 100.00 MiB   46.50%
 46.75 MiB / 100.00 MiB   46.75%
 47.00 MiB / 100.00 MiB   47.00%
 47.25 MiB / 100.00 MiB   47.25%
 47.50 MiB / 100.00 MiB   47.50%
 47.75 MiB / 100.00 MiB   47.75%
 48.00 MiB / 100.00 MiB   48.00%
 48.25 MiB / 100.00 MiB   48.25%
 48.50 MiB / 100.00 MiB   48.50%
 48.75 MiB / 100.00 MiB   48.75%
 49.00 MiB / 100.00 MiB   49.00%
 49.25 MiB / 100.00 MiB   49.25%
 49.50 MiB / 100.00 MiB   49.50%
 49.75 MiB / 100.00 MiB   49.75%
 50.00 MiB / 100.00 MiB   50.00%
 50.25 MiB / 100.00 MiB   50.25%
 50.50 MiB / 100.00 MiB   50.50%
 50.75 MiB / 100.00 MiB   50.75%
 51.00 MiB / 100.00 MiB   51.00%
 51.25 MiB / 100.00 MiB   51.25%
 51.50 MiB / 100.00 MiB   51.50%
 51.75 MiB / 100.00 MiB   51.75%
 52.00 MiB / 100.00 MiB   52.00%
 52.25 MiB / 100.00 MiB   52.25%
 52.50 MiB / 100.00 MiB   52.50%
 52.75 MiB / 100.00 MiB   52.75%
 53.00 MiB / 100.00 MiB   53.00%
 53.25 MiB / 100.00 MiB   53.25%
 53.50 MiB / 100.00 MiB   53.50%
 53.75 MiB / 100.00 MiB   53.75%
 54.00 MiB / 100.00 MiB   54.00%
 54.25 MiB / 100.00 MiB   54.25%
 54.50 MiB / 100.00 MiB   54.50%
 54.75 MiB / 100.00 MiB   54.75%
 55.00 MiB / 100.00 MiB   55.00%
 55.25 MiB / 100.00 MiB   55.25%
 55.50 MiB / 100.00 MiB   55.50%
 55.75 MiB / 100.00 MiB   55.75%
 56.00 MiB / 100.00 MiB   56.00%
 56.25 MiB / 100.00 MiB   56.25%
 56.50 MiB / 100.00 MiB   56.50%
 56.75 MiB / 100.00 MiB   56.75%
 57.00 MiB / 100.00 MiB   57.00%
 57.25 MiB / 100.00 MiB   57.25%
 57.50 MiB / 100.00 MiB   57.50%
 57.75 MiB / 100.00 MiB   57.75%
 58.00 MiB / 100.00 MiB   58.00%
 58.25 MiB / 100.00 MiB   58.25%
 58.50 MiB / 100.00 MiB   58.50%
 58.75 MiB / 100.00 MiB   58.75%
 59.00 MiB / 100.00 MiB   59.00%
 59.25 MiB / 100.00 MiB   59.25%
 59.50 MiB / 100.00 MiB   59.50%
 59.75 MiB / 100.00 MiB   59.75%
 60.00 MiB / 100.00 MiB   60.00%
 60.25 MiB / 100.00 MiB   60.25%
 60.50 MiB / 100.00 MiB   60.50%
 60.75 MiB / 100.00 MiB   60.75%
 61.00 MiB / 100.00 MiB   61.00%
 61.25 MiB / 100.00 MiB   61.25%
 61.50 MiB / 100.00 MiB   61.50%
 61.75 MiB / 100.00 MiB   61.75%
 62.00 MiB / 100.00 MiB   62.00%
 62.25 MiB / 100.00 MiB   62.25%
 62.50 MiB / 100.00 MiB   62.50%
 62.75 MiB / 100.00 MiB   62.75%
 63.00 MiB / 100.00 MiB   63.00%
 63.25 MiB / 100.00 MiB   63.25%
 63.50 MiB / 100.00 MiB   63.50%
 63.75 MiB / 100.00 MiB   63.75%
 64.00 MiB / 100.00 MiB   64.00%
 64.25 MiB / 100.00 MiB   64.25%
 64.50 MiB / 100.00 MiB   64.50%
 64.75 MiB / 100.00 MiB   64.75%
 65.00 MiB / 100.00 MiB   65.00%
 65.25 MiB / 100.00 MiB   65.25%
 65.50 MiB / 100.00 MiB   65.50%
 65.75 MiB / 100.00 MiB   65.75%
 66.00 MiB / 100.00 MiB   66.00%
 66.25 MiB / 100.00 MiB   66.25%
 66.50 MiB / 100.00 MiB   66.50%
 66.75 MiB / 100.00 MiB   66.75%
 67.00 MiB / 100.00 MiB   67.00%
 67.25 MiB / 100.00 MiB   67.25%
 67.50 MiB / 100.00 MiB   67.50%
 67.75 MiB / 100.00 MiB   67.75%
 68.00 MiB / 100.00 MiB   68.00%
 68.25 MiB / 100.00 MiB   68.25%
 68.50 MiB / 100.00 MiB   68.50%
 68.75 MiB / 100.00 MiB   68.75%
 69.00 MiB / 100.00 MiB   69.00%
 69.25 MiB / 100.00 MiB   69.25%
 69.50 MiB / 100.00 MiB   69.50%
 69.75 MiB / 100.00 MiB   69.75%
 70.00 MiB / 100.00 MiB   70.00%
 70.25 MiB / 100.00 MiB   70.25%
 70.50 MiB / 100.00 MiB   70.50%
 70.75 MiB / 100.00 MiB   70.75%
 71.00 MiB / 100.00 MiB   71.00%
 71.25 MiB / 100.00 MiB   71.25%
 71.50 MiB / 100.00 MiB   71.50%
 71.75 MiB / 100.00 MiB   71.75%
 72.00 MiB / 100.00 MiB   72.00%
 72.25 MiB / 100.00 MiB   72.25%
 72.50 MiB / 100.00 MiB   72.50%
 72.75 MiB / 100.00 MiB   72.75%
 73.00 MiB / 100.00 MiB   73.00%
 73.25 MiB / 100.00 MiB   73.25%
 73.50 MiB / 100.00 MiB   73.50%
 73.75 MiB / 100.00 MiB   73.75%
 74.00 MiB / 100.00 MiB   74.00%
 74.25 MiB / 100.00 MiB   74.25%
 74.50 MiB / 100.00 MiB   74.50%
 74.75 MiB / 100.00 MiB   74.75%
 75.00 MiB / 100.00 MiB   75.00%
 75.25 MiB / 100.00 MiB   75.25%
 75.50 MiB / 100.00 MiB   75.50%
 75.75 MiB / 100.00 MiB   75.75%
 76.00 MiB / 100.00 MiB   76.00%
 76.25 MiB / 100.00 MiB   76.25%
 76.50 MiB / 100.00 MiB   76.50%
 76.75 MiB / 100.00 MiB   76.75%
 77.00 MiB / 100.00 MiB   77.00%
 77.25 MiB / 100.00 MiB   77.25%
 77.50 MiB / 100.00 MiB   77.50%
 77.75 MiB / 100.00 MiB   77.75%
 78.00 MiB / 100.00 MiB   78.00%
 78.25 MiB / 100.00 MiB   78.25%
 78.50 MiB / 100.00 MiB   78.50%
 78.75 MiB / 100.00 MiB   78.75%
 79.00 MiB / 100.00 MiB   79.00%
 79.25 MiB / 100.00 MiB   79.25%
 79.50 MiB / 100.00 MiB   79.50%
 79.75 MiB / 100.00 MiB   79.75%
 80.00 MiB / 100.00 MiB   80.00%
 80.25 MiB / 100.00 MiB   80.25%
 80.50 MiB / 100.00 MiB   80.50%
 80.75 MiB / 100.00 MiB   80.75%
 81.00 MiB / 100.00 MiB   81.00%
 81.25 MiB / 100.00 MiB   81.25%
 81.50 MiB / 100.00 MiB   81.50%
 81.75 MiB / 100.00 MiB   81.75%
 82.00 MiB / 100.00 MiB   82.00%
 82.25 MiB / 100.00 MiB   82.25%
 82.50 MiB / 100.00 MiB   82.50%
 82.75 MiB / 100.00 MiB   82.75%
 83.00 MiB / 100.00 MiB   83.00%
 83.25 MiB / 100.00 MiB   83.25%
 83.50 MiB / 100.00 MiB   83.50%
 83.75 MiB / 100.00 MiB   83.75%
 84.00 MiB / 100.00 MiB   84.00%
 84.25 MiB / 100.00 MiB   84.25%
 84.50 MiB / 100.00 MiB   84.50%
 84.75 MiB / 100.00 MiB   84.75%
 85.00 MiB / 100.00 MiB   85.00%
 85.25 MiB / 100.00 MiB   85.25%
 85.50 MiB / 100.00 MiB   85.50%
 85.75 MiB / 100.00 MiB   85.75%
 86.00 MiB / 100.00 MiB   86.00%
 86.25 MiB / 100.00 MiB   86.25%
 86.50 MiB / 100.00 MiB   86.50%
 86.75 MiB / 100.00 MiB   86.75%
 87.00 MiB / 100.00 MiB   87.00%
 87.25 MiB / 100.00 MiB   87.25%
 87.50 MiB / 100.00 MiB   87.50%
 87.75 MiB / 100.00 MiB   87.75%
 88.00 MiB / 100.00 MiB   88.00%
 88.25 MiB / 100.00 MiB   88.25%
 88.50 MiB / 100.00 MiB   88.50%
 88.75 MiB / 100.00 MiB   88.75%
 89.00 MiB / 100.00 MiB   89.00%
 89.25 MiB / 100.00 MiB   89.25%
 89.50 MiB / 100.00 MiB   89.50%
 89.75 MiB / 100.00 MiB   89.75%
 90.00 MiB / 100.00 MiB   90.00%
 90.25 MiB / 100.00 MiB   90.25%
 90.50 MiB / 100.00 MiB   90.50%
 90.75 MiB / 100.00 MiB   90.75%
 91.00 MiB / 100.00 MiB   91.00%
 91.25 MiB / 100.00 MiB   91.25%
 91.50 MiB / 100.00 MiB   91.50%
 91.75 MiB / 100.00 MiB   91.75%
 92.00 MiB / 100.00 MiB   92.00%
 92.25 MiB / 100.00 MiB   92.25%
 92.50 MiB / 100.00 MiB   92.50%
 92.75 MiB / 100.00 MiB   92.75%
 93.00 MiB / 100.00 MiB   93.00%
 93.25 MiB / 100.00 MiB   93.25%
 93.50 MiB / 100.00 MiB   93.50%
 93.75 MiB / 100.00 MiB   93.75%
 94.00 MiB / 100.00 MiB   94.00%
 94.25 MiB / 100.00 MiB   94.25%
 94.50 MiB / 100.00 MiB   94.50%
 94.75 MiB / 100.00 MiB   94.75%
 95.00 MiB / 100.00 MiB   95.00%
 95.25 MiB / 100.00 MiB   95.25%
 95.50 MiB / 100.00 MiB   95.50%
 95.75 MiB / 100.00 MiB   95.75%
 96.00 MiB / 100.00 MiB   96.00%
 96.25 MiB / 100.00 MiB   96.25%
 96.50 MiB / 100.00 MiB   96.50%
 96.75 MiB / 100.00 MiB   96.75%
 97.00 MiB / 100.00 MiB   97.00%
 97.25 MiB / 100.00 MiB   97.25%
 97.50 MiB / 100.00 MiB   97.50%
 97.75 MiB / 100.00 MiB   97.75%
 98.00 MiB / 100.00 MiB   98.00%
 98.25 MiB / 100.00 MiB   98.25%
 98.50 MiB / 100.00 MiB   98.50%
 98.75 MiB / 100.00 MiB   98.75%
 99.00 MiB / 100.00 MiB   99.00%
 99.25 MiB / 100.00 MiB   99.25%
 99.50 MiB / 100.00 MiB   99.50%
 99.75 MiB / 100.00 MiB   99.75%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%

 100.00 MiB / 100.00 MiB  100.00%
280 - ipfs add bigfile output looks good Success 0.010
System.out »
expecting success: 
    echo "added $HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 280 - ipfs add bigfile output looks good
281 - ipfs cat succeeds Success 0.652
System.out »
expecting success: 
    ipfs cat "$HASH" | multihash -a=sha1 -e=hex >sha1_actual
  
ok 281 - ipfs cat succeeds
System.err »
 0 B / 100.00 MiB    0.00%
 26.18 MiB / 100.00 MiB   26.18%
 65.77 MiB / 100.00 MiB   65.77%

 100.00 MiB / 100.00 MiB  100.00% 0s
282 - ipfs cat output looks good Success 0.887
System.out »
expecting success: 
    ipfs cat "$HASH" >actual &&
    test_cmp mountdir/bigfile actual
  
ok 282 - ipfs cat output looks good
System.err »
 0 B / 100.00 MiB    0.00%
 45.09 MiB / 100.00 MiB   45.09%

 100.00 MiB / 100.00 MiB  100.00% 0s
283 - ipfs cat output hashed looks good Success 0.006
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    test_cmp sha1_expected sha1_actual
  
ok 283 - ipfs cat output hashed looks good
284 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
0.000
285 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
0.000
286 - generate 100MB file using random-data Success 1.023
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$HASH" | multihash -a=sha1 -e=hex >sha1_actual
   cat ipfs/bigfile succeeds
ok 284 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp sha1_expected sha1_actual
   cat ipfs/bigfile looks good
ok 285 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
expecting success: 
    random-data -size=104857600 -seed=42 >mountdir/bigfile
  
ok 286 - generate 100MB file using random-data
287 - sha1 of the file looks ok Success 0.139
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    multihash -a=sha1 -e=hex mountdir/bigfile >sha1_actual &&
    test_cmp sha1_expected sha1_actual
  
ok 287 - sha1 of the file looks ok
288 - ipfs add --hash=blake2b-256 bigfile succeeds Success 0.426
System.out »
expecting success: 
    ipfs add $ADD_FLAGS mountdir/bigfile >actual
  
ok 288 - ipfs add --hash=blake2b-256 bigfile succeeds
System.err »
 256.00 KiB / ? 
 512.00 KiB / 100.00 MiB    0.50%
 768.00 KiB / 100.00 MiB    0.75%
 1.00 MiB / 100.00 MiB    1.00%
 1.25 MiB / 100.00 MiB    1.25%
 1.50 MiB / 100.00 MiB    1.50%
 1.75 MiB / 100.00 MiB    1.75%
 2.00 MiB / 100.00 MiB    2.00%
 2.25 MiB / 100.00 MiB    2.25%
 2.50 MiB / 100.00 MiB    2.50%
 2.75 MiB / 100.00 MiB    2.75%
 3.00 MiB / 100.00 MiB    3.00%
 3.25 MiB / 100.00 MiB    3.25%
 3.50 MiB / 100.00 MiB    3.50%
 3.75 MiB / 100.00 MiB    3.75%
 4.00 MiB / 100.00 MiB    4.00%
 4.25 MiB / 100.00 MiB    4.25%
 4.50 MiB / 100.00 MiB    4.50%
 4.75 MiB / 100.00 MiB    4.75%
 5.00 MiB / 100.00 MiB    5.00%
 5.25 MiB / 100.00 MiB    5.25%
 5.50 MiB / 100.00 MiB    5.50%
 5.75 MiB / 100.00 MiB    5.75%
 6.00 MiB / 100.00 MiB    6.00%
 6.25 MiB / 100.00 MiB    6.25%
 6.50 MiB / 100.00 MiB    6.50%
 6.75 MiB / 100.00 MiB    6.75%
 7.00 MiB / 100.00 MiB    7.00%
 7.25 MiB / 100.00 MiB    7.25%
 7.50 MiB / 100.00 MiB    7.50%
 7.75 MiB / 100.00 MiB    7.75%
 8.00 MiB / 100.00 MiB    8.00%
 8.25 MiB / 100.00 MiB    8.25%
 8.50 MiB / 100.00 MiB    8.50%
 8.75 MiB / 100.00 MiB    8.75%
 9.00 MiB / 100.00 MiB    9.00%
 9.25 MiB / 100.00 MiB    9.25%
 9.50 MiB / 100.00 MiB    9.50%
 9.75 MiB / 100.00 MiB    9.75%
 10.00 MiB / 100.00 MiB   10.00%
 10.25 MiB / 100.00 MiB   10.25%
 10.50 MiB / 100.00 MiB   10.50%
 10.75 MiB / 100.00 MiB   10.75%
 11.00 MiB / 100.00 MiB   11.00%
 11.25 MiB / 100.00 MiB   11.25%
 11.50 MiB / 100.00 MiB   11.50%
 11.75 MiB / 100.00 MiB   11.75%
 12.00 MiB / 100.00 MiB   12.00%
 12.25 MiB / 100.00 MiB   12.25%
 12.50 MiB / 100.00 MiB   12.50%
 12.75 MiB / 100.00 MiB   12.75%
 13.00 MiB / 100.00 MiB   13.00%
 13.25 MiB / 100.00 MiB   13.25%
 13.50 MiB / 100.00 MiB   13.50%
 13.75 MiB / 100.00 MiB   13.75%
 14.00 MiB / 100.00 MiB   14.00%
 14.25 MiB / 100.00 MiB   14.25%
 14.50 MiB / 100.00 MiB   14.50%
 14.75 MiB / 100.00 MiB   14.75%
 15.00 MiB / 100.00 MiB   15.00%
 15.25 MiB / 100.00 MiB   15.25%
 15.50 MiB / 100.00 MiB   15.50%
 15.75 MiB / 100.00 MiB   15.75%
 16.00 MiB / 100.00 MiB   16.00%
 16.25 MiB / 100.00 MiB   16.25%
 16.50 MiB / 100.00 MiB   16.50%
 16.75 MiB / 100.00 MiB   16.75%
 17.00 MiB / 100.00 MiB   17.00%
 17.25 MiB / 100.00 MiB   17.25%
 17.50 MiB / 100.00 MiB   17.50%
 17.75 MiB / 100.00 MiB   17.75%
 18.00 MiB / 100.00 MiB   18.00%
 18.25 MiB / 100.00 MiB   18.25%
 18.50 MiB / 100.00 MiB   18.50%
 18.75 MiB / 100.00 MiB   18.75%
 19.00 MiB / 100.00 MiB   19.00%
 19.25 MiB / 100.00 MiB   19.25%
 19.50 MiB / 100.00 MiB   19.50%
 19.75 MiB / 100.00 MiB   19.75%
 20.00 MiB / 100.00 MiB   20.00%
 20.25 MiB / 100.00 MiB   20.25%
 20.50 MiB / 100.00 MiB   20.50%
 20.75 MiB / 100.00 MiB   20.75%
 21.00 MiB / 100.00 MiB   21.00%
 21.25 MiB / 100.00 MiB   21.25%
 21.50 MiB / 100.00 MiB   21.50%
 21.75 MiB / 100.00 MiB   21.75%
 22.00 MiB / 100.00 MiB   22.00%
 22.25 MiB / 100.00 MiB   22.25%
 22.50 MiB / 100.00 MiB   22.50%
 22.75 MiB / 100.00 MiB   22.75%
 23.00 MiB / 100.00 MiB   23.00%
 23.25 MiB / 100.00 MiB   23.25%
 23.50 MiB / 100.00 MiB   23.50%
 23.75 MiB / 100.00 MiB   23.75%
 24.00 MiB / 100.00 MiB   24.00%
 24.25 MiB / 100.00 MiB   24.25%
 24.50 MiB / 100.00 MiB   24.50%
 24.75 MiB / 100.00 MiB   24.75%
 25.00 MiB / 100.00 MiB   25.00%
 25.25 MiB / 100.00 MiB   25.25%
 25.50 MiB / 100.00 MiB   25.50%
 25.75 MiB / 100.00 MiB   25.75%
 26.00 MiB / 100.00 MiB   26.00%
 26.25 MiB / 100.00 MiB   26.25%
 26.50 MiB / 100.00 MiB   26.50%
 26.75 MiB / 100.00 MiB   26.75%
 27.00 MiB / 100.00 MiB   27.00%
 27.25 MiB / 100.00 MiB   27.25%
 27.50 MiB / 100.00 MiB   27.50%
 27.75 MiB / 100.00 MiB   27.75%
 28.00 MiB / 100.00 MiB   28.00%
 28.25 MiB / 100.00 MiB   28.25%
 28.50 MiB / 100.00 MiB   28.50%
 28.75 MiB / 100.00 MiB   28.75%
 29.00 MiB / 100.00 MiB   29.00%
 29.25 MiB / 100.00 MiB   29.25%
 29.50 MiB / 100.00 MiB   29.50%
 29.75 MiB / 100.00 MiB   29.75%
 30.00 MiB / 100.00 MiB   30.00%
 30.25 MiB / 100.00 MiB   30.25%
 30.50 MiB / 100.00 MiB   30.50%
 30.75 MiB / 100.00 MiB   30.75%
 31.00 MiB / 100.00 MiB   31.00%
 31.25 MiB / 100.00 MiB   31.25%
 31.50 MiB / 100.00 MiB   31.50%
 31.75 MiB / 100.00 MiB   31.75%
 32.00 MiB / 100.00 MiB   32.00%
 32.25 MiB / 100.00 MiB   32.25%
 32.50 MiB / 100.00 MiB   32.50%
 32.75 MiB / 100.00 MiB   32.75%
 33.00 MiB / 100.00 MiB   33.00%
 33.25 MiB / 100.00 MiB   33.25%
 33.50 MiB / 100.00 MiB   33.50%
 33.75 MiB / 100.00 MiB   33.75%
 34.00 MiB / 100.00 MiB   34.00%
 34.25 MiB / 100.00 MiB   34.25%
 34.50 MiB / 100.00 MiB   34.50%
 34.75 MiB / 100.00 MiB   34.75%
 35.00 MiB / 100.00 MiB   35.00%
 35.25 MiB / 100.00 MiB   35.25%
 35.50 MiB / 100.00 MiB   35.50%
 35.75 MiB / 100.00 MiB   35.75%
 36.00 MiB / 100.00 MiB   36.00%
 36.25 MiB / 100.00 MiB   36.25%
 36.50 MiB / 100.00 MiB   36.50%
 36.75 MiB / 100.00 MiB   36.75%
 37.00 MiB / 100.00 MiB   37.00%
 37.25 MiB / 100.00 MiB   37.25%
 37.50 MiB / 100.00 MiB   37.50%
 37.75 MiB / 100.00 MiB   37.75%
 38.00 MiB / 100.00 MiB   38.00%
 38.25 MiB / 100.00 MiB   38.25%
 38.50 MiB / 100.00 MiB   38.50%
 38.75 MiB / 100.00 MiB   38.75%
 39.00 MiB / 100.00 MiB   39.00%
 39.25 MiB / 100.00 MiB   39.25%
 39.50 MiB / 100.00 MiB   39.50%
 39.75 MiB / 100.00 MiB   39.75%
 40.00 MiB / 100.00 MiB   40.00%
 40.25 MiB / 100.00 MiB   40.25%
 40.50 MiB / 100.00 MiB   40.50%
 40.75 MiB / 100.00 MiB   40.75%
 41.00 MiB / 100.00 MiB   41.00%
 41.25 MiB / 100.00 MiB   41.25%
 41.50 MiB / 100.00 MiB   41.50%
 41.75 MiB / 100.00 MiB   41.75%
 42.00 MiB / 100.00 MiB   42.00%
 42.25 MiB / 100.00 MiB   42.25%
 42.50 MiB / 100.00 MiB   42.50%
 42.75 MiB / 100.00 MiB   42.75%
 43.00 MiB / 100.00 MiB   43.00%
 43.25 MiB / 100.00 MiB   43.25%
 43.50 MiB / 100.00 MiB   43.50%
 43.75 MiB / 100.00 MiB   43.75%
 44.00 MiB / 100.00 MiB   44.00%
 44.25 MiB / 100.00 MiB   44.25%
 44.50 MiB / 100.00 MiB   44.50%
 44.75 MiB / 100.00 MiB   44.75%
 45.00 MiB / 100.00 MiB   45.00%
 45.25 MiB / 100.00 MiB   45.25%
 45.50 MiB / 100.00 MiB   45.50%
 45.75 MiB / 100.00 MiB   45.75%
 46.00 MiB / 100.00 MiB   46.00%
 46.25 MiB / 100.00 MiB   46.25%
 46.50 MiB / 100.00 MiB   46.50%
 46.75 MiB / 100.00 MiB   46.75%
 47.00 MiB / 100.00 MiB   47.00%
 47.25 MiB / 100.00 MiB   47.25%
 47.50 MiB / 100.00 MiB   47.50%
 47.75 MiB / 100.00 MiB   47.75%
 48.00 MiB / 100.00 MiB   48.00%
 48.25 MiB / 100.00 MiB   48.25%
 48.50 MiB / 100.00 MiB   48.50%
 48.75 MiB / 100.00 MiB   48.75%
 49.00 MiB / 100.00 MiB   49.00%
 49.25 MiB / 100.00 MiB   49.25%
 49.50 MiB / 100.00 MiB   49.50%
 49.75 MiB / 100.00 MiB   49.75%
 50.00 MiB / 100.00 MiB   50.00%
 50.25 MiB / 100.00 MiB   50.25%
 50.50 MiB / 100.00 MiB   50.50%
 50.75 MiB / 100.00 MiB   50.75%
 51.00 MiB / 100.00 MiB   51.00%
 51.25 MiB / 100.00 MiB   51.25%
 51.50 MiB / 100.00 MiB   51.50%
 51.75 MiB / 100.00 MiB   51.75%
 52.00 MiB / 100.00 MiB   52.00%
 52.25 MiB / 100.00 MiB   52.25%
 52.50 MiB / 100.00 MiB   52.50%
 52.75 MiB / 100.00 MiB   52.75%
 53.00 MiB / 100.00 MiB   53.00%
 53.25 MiB / 100.00 MiB   53.25%
 53.50 MiB / 100.00 MiB   53.50%
 53.75 MiB / 100.00 MiB   53.75%
 54.00 MiB / 100.00 MiB   54.00%
 54.25 MiB / 100.00 MiB   54.25%
 54.50 MiB / 100.00 MiB   54.50%
 54.75 MiB / 100.00 MiB   54.75%
 55.00 MiB / 100.00 MiB   55.00%
 55.25 MiB / 100.00 MiB   55.25%
 55.50 MiB / 100.00 MiB   55.50%
 55.75 MiB / 100.00 MiB   55.75%
 56.00 MiB / 100.00 MiB   56.00%
 56.25 MiB / 100.00 MiB   56.25%
 56.50 MiB / 100.00 MiB   56.50%
 56.75 MiB / 100.00 MiB   56.75%
 57.00 MiB / 100.00 MiB   57.00%
 57.25 MiB / 100.00 MiB   57.25%
 57.50 MiB / 100.00 MiB   57.50%
 57.75 MiB / 100.00 MiB   57.75%
 58.00 MiB / 100.00 MiB   58.00%
 58.25 MiB / 100.00 MiB   58.25%
 58.50 MiB / 100.00 MiB   58.50%
 58.75 MiB / 100.00 MiB   58.75%
 59.00 MiB / 100.00 MiB   59.00%
 59.25 MiB / 100.00 MiB   59.25%
 59.50 MiB / 100.00 MiB   59.50%
 59.75 MiB / 100.00 MiB   59.75%
 60.00 MiB / 100.00 MiB   60.00%
 60.25 MiB / 100.00 MiB   60.25%
 60.50 MiB / 100.00 MiB   60.50%
 60.75 MiB / 100.00 MiB   60.75%
 61.00 MiB / 100.00 MiB   61.00%
 61.25 MiB / 100.00 MiB   61.25%
 61.50 MiB / 100.00 MiB   61.50%
 61.75 MiB / 100.00 MiB   61.75%
 62.00 MiB / 100.00 MiB   62.00%
 62.25 MiB / 100.00 MiB   62.25%
 62.50 MiB / 100.00 MiB   62.50%
 62.75 MiB / 100.00 MiB   62.75%
 63.00 MiB / 100.00 MiB   63.00%
 63.25 MiB / 100.00 MiB   63.25%
 63.50 MiB / 100.00 MiB   63.50%
 63.75 MiB / 100.00 MiB   63.75%
 64.00 MiB / 100.00 MiB   64.00%
 64.25 MiB / 100.00 MiB   64.25%
 64.50 MiB / 100.00 MiB   64.50%
 64.75 MiB / 100.00 MiB   64.75%
 65.00 MiB / 100.00 MiB   65.00%
 65.25 MiB / 100.00 MiB   65.25%
 65.50 MiB / 100.00 MiB   65.50%
 65.75 MiB / 100.00 MiB   65.75%
 66.00 MiB / 100.00 MiB   66.00%
 66.25 MiB / 100.00 MiB   66.25%
 66.50 MiB / 100.00 MiB   66.50%
 66.75 MiB / 100.00 MiB   66.75%
 67.00 MiB / 100.00 MiB   67.00%
 67.25 MiB / 100.00 MiB   67.25%
 67.50 MiB / 100.00 MiB   67.50%
 67.75 MiB / 100.00 MiB   67.75%
 68.00 MiB / 100.00 MiB   68.00%
 68.25 MiB / 100.00 MiB   68.25%
 68.50 MiB / 100.00 MiB   68.50%
 68.75 MiB / 100.00 MiB   68.75%
 69.00 MiB / 100.00 MiB   69.00%
 69.25 MiB / 100.00 MiB   69.25%
 69.50 MiB / 100.00 MiB   69.50%
 69.75 MiB / 100.00 MiB   69.75%
 70.00 MiB / 100.00 MiB   70.00%
 70.25 MiB / 100.00 MiB   70.25%
 70.50 MiB / 100.00 MiB   70.50%
 70.75 MiB / 100.00 MiB   70.75%
 71.00 MiB / 100.00 MiB   71.00%
 71.25 MiB / 100.00 MiB   71.25%
 71.50 MiB / 100.00 MiB   71.50%
 71.75 MiB / 100.00 MiB   71.75%
 72.00 MiB / 100.00 MiB   72.00%
 72.25 MiB / 100.00 MiB   72.25%
 72.50 MiB / 100.00 MiB   72.50%
 72.75 MiB / 100.00 MiB   72.75%
 73.00 MiB / 100.00 MiB   73.00%
 73.25 MiB / 100.00 MiB   73.25%
 73.50 MiB / 100.00 MiB   73.50%
 73.75 MiB / 100.00 MiB   73.75%
 74.00 MiB / 100.00 MiB   74.00%
 74.25 MiB / 100.00 MiB   74.25%
 74.50 MiB / 100.00 MiB   74.50%
 74.75 MiB / 100.00 MiB   74.75%
 75.00 MiB / 100.00 MiB   75.00%
 75.25 MiB / 100.00 MiB   75.25%
 75.50 MiB / 100.00 MiB   75.50%
 75.75 MiB / 100.00 MiB   75.75%
 76.00 MiB / 100.00 MiB   76.00%
 76.25 MiB / 100.00 MiB   76.25%
 76.50 MiB / 100.00 MiB   76.50%
 76.75 MiB / 100.00 MiB   76.75%
 77.00 MiB / 100.00 MiB   77.00%
 77.25 MiB / 100.00 MiB   77.25%
 77.50 MiB / 100.00 MiB   77.50%
 77.75 MiB / 100.00 MiB   77.75%
 78.00 MiB / 100.00 MiB   78.00%
 78.25 MiB / 100.00 MiB   78.25%
 78.50 MiB / 100.00 MiB   78.50%
 78.75 MiB / 100.00 MiB   78.75%
 79.00 MiB / 100.00 MiB   79.00%
 79.25 MiB / 100.00 MiB   79.25%
 79.50 MiB / 100.00 MiB   79.50%
 79.75 MiB / 100.00 MiB   79.75%
 80.00 MiB / 100.00 MiB   80.00%
 80.25 MiB / 100.00 MiB   80.25%
 80.50 MiB / 100.00 MiB   80.50%
 80.75 MiB / 100.00 MiB   80.75%
 81.00 MiB / 100.00 MiB   81.00%
 81.25 MiB / 100.00 MiB   81.25%
 81.50 MiB / 100.00 MiB   81.50%
 81.75 MiB / 100.00 MiB   81.75%
 82.00 MiB / 100.00 MiB   82.00%
 82.25 MiB / 100.00 MiB   82.25%
 82.50 MiB / 100.00 MiB   82.50%
 82.75 MiB / 100.00 MiB   82.75%
 83.00 MiB / 100.00 MiB   83.00%
 83.25 MiB / 100.00 MiB   83.25%
 83.50 MiB / 100.00 MiB   83.50%
 83.75 MiB / 100.00 MiB   83.75%
 84.00 MiB / 100.00 MiB   84.00%
 84.25 MiB / 100.00 MiB   84.25%
 84.50 MiB / 100.00 MiB   84.50%
 84.75 MiB / 100.00 MiB   84.75%
 85.00 MiB / 100.00 MiB   85.00%
 85.25 MiB / 100.00 MiB   85.25%
 85.50 MiB / 100.00 MiB   85.50%
 85.75 MiB / 100.00 MiB   85.75%
 86.00 MiB / 100.00 MiB   86.00%
 86.25 MiB / 100.00 MiB   86.25%
 86.50 MiB / 100.00 MiB   86.50%
 86.75 MiB / 100.00 MiB   86.75%
 87.00 MiB / 100.00 MiB   87.00%
 87.25 MiB / 100.00 MiB   87.25%
 87.50 MiB / 100.00 MiB   87.50%
 87.75 MiB / 100.00 MiB   87.75%
 88.00 MiB / 100.00 MiB   88.00%
 88.25 MiB / 100.00 MiB   88.25%
 88.50 MiB / 100.00 MiB   88.50%
 88.75 MiB / 100.00 MiB   88.75%
 89.00 MiB / 100.00 MiB   89.00%
 89.25 MiB / 100.00 MiB   89.25%
 89.50 MiB / 100.00 MiB   89.50%
 89.75 MiB / 100.00 MiB   89.75%
 90.00 MiB / 100.00 MiB   90.00%
 90.25 MiB / 100.00 MiB   90.25%
 90.50 MiB / 100.00 MiB   90.50%
 90.75 MiB / 100.00 MiB   90.75%
 91.00 MiB / 100.00 MiB   91.00%
 91.25 MiB / 100.00 MiB   91.25%
 91.50 MiB / 100.00 MiB   91.50%
 91.75 MiB / 100.00 MiB   91.75%
 92.00 MiB / 100.00 MiB   92.00%
 92.25 MiB / 100.00 MiB   92.25%
 92.50 MiB / 100.00 MiB   92.50%
 92.75 MiB / 100.00 MiB   92.75%
 93.00 MiB / 100.00 MiB   93.00%
 93.25 MiB / 100.00 MiB   93.25%
 93.50 MiB / 100.00 MiB   93.50%
 93.75 MiB / 100.00 MiB   93.75%
 94.00 MiB / 100.00 MiB   94.00%
 94.25 MiB / 100.00 MiB   94.25%
 94.50 MiB / 100.00 MiB   94.50%
 94.75 MiB / 100.00 MiB   94.75%
 95.00 MiB / 100.00 MiB   95.00%
 95.25 MiB / 100.00 MiB   95.25%
 95.50 MiB / 100.00 MiB   95.50%
 95.75 MiB / 100.00 MiB   95.75%
 96.00 MiB / 100.00 MiB   96.00%
 96.25 MiB / 100.00 MiB   96.25%
 96.50 MiB / 100.00 MiB   96.50%
 96.75 MiB / 100.00 MiB   96.75%
 97.00 MiB / 100.00 MiB   97.00%
 97.25 MiB / 100.00 MiB   97.25%
 97.50 MiB / 100.00 MiB   97.50%
 97.75 MiB / 100.00 MiB   97.75%
 98.00 MiB / 100.00 MiB   98.00%
 98.25 MiB / 100.00 MiB   98.25%
 98.50 MiB / 100.00 MiB   98.50%
 98.75 MiB / 100.00 MiB   98.75%
 99.00 MiB / 100.00 MiB   99.00%
 99.25 MiB / 100.00 MiB   99.25%
 99.50 MiB / 100.00 MiB   99.50%
 99.75 MiB / 100.00 MiB   99.75%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%
 100.00 MiB / 100.00 MiB  100.00%

 100.00 MiB / 100.00 MiB  100.00%
289 - ipfs add bigfile output looks good Success 0.015
System.out »
expecting success: 
    echo "added $HASH bigfile" >expected &&
    test_cmp expected actual
  
ok 289 - ipfs add bigfile output looks good
290 - ipfs cat succeeds Success 0.452
System.out »
expecting success: 
    ipfs cat "$HASH" | multihash -a=sha1 -e=hex >sha1_actual
  
ok 290 - ipfs cat succeeds
System.err »
 0 B / 100.00 MiB    0.00%
 55.16 MiB / 100.00 MiB   55.16%

 100.00 MiB / 100.00 MiB  100.00% 0s
291 - ipfs cat output looks good Success 0.496
System.out »
expecting success: 
    ipfs cat "$HASH" >actual &&
    test_cmp mountdir/bigfile actual
  
ok 291 - ipfs cat output looks good
System.err »
 0 B / 100.00 MiB    0.00%
 81.53 MiB / 100.00 MiB   81.53%

 100.00 MiB / 100.00 MiB  100.00% 0s
292 - ipfs cat output hashed looks good Success 0.007
System.out »
expecting success: 
    echo "11141e8c04d7cd019cc0acf0311a8ca6cf2c18413c96" >sha1_expected &&
    test_cmp sha1_expected sha1_actual
  
ok 292 - ipfs cat output hashed looks good
293 - cat ipfs/bigfile succeeds Skipped N/A


skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
0.000
294 - cat ipfs/bigfile looks good Skipped N/A


skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
0.000
295 - Adding named pipes explicitly works Success 0.203
System.out »
skipping test: cat ipfs/bigfile succeeds 
    cat "ipfs/$HASH" | multihash -a=sha1 -e=hex >sha1_actual
   cat ipfs/bigfile succeeds
ok 293 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
skipping test: cat ipfs/bigfile looks good 
    test_cmp sha1_expected sha1_actual
   cat ipfs/bigfile looks good
ok 294 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
expecting success: 
    mkfifo named-pipe1 &&
    ( echo foo > named-pipe1 & echo "added $( echo foo | ipfs add -nq ) named-pipe1" > expected_named_pipes_add ) &&
    mkfifo named-pipe2 &&
    ( echo bar > named-pipe2 & echo "added $( echo bar | ipfs add -nq ) named-pipe2" >> expected_named_pipes_add ) &&
    ipfs add -n named-pipe1 named-pipe2 >actual_pipe_add &&
    rm named-pipe1 &&
    rm named-pipe2 &&
    test_cmp expected_named_pipes_add actual_pipe_add
  
ok 295 - Adding named pipes explicitly works
System.err »
 4 B / ? 

 4 B / ? 
 8 B / ? 

 8 B / ? 
 8 B / 8 B  100.00%
296 - useful error message when recursively adding a named pipe Success 0.113
System.out »
expecting success: 
    mkdir -p named-pipe-dir &&
    mkfifo named-pipe-dir/named-pipe &&
    STAT=$(generic_stat named-pipe-dir/named-pipe) &&
    test_expect_code 1 ipfs add -r named-pipe-dir 2>actual &&
    printf "Error: unrecognized file type for named-pipe-dir/named-pipe: $STAT\n" >expected &&
    rm named-pipe-dir/named-pipe &&
    rmdir named-pipe-dir &&
    test_cmp expected actual
  
ok 296 - useful error message when recursively adding a named pipe
297 - ipfs add -r adds directory content when ./ is symlink Success 0.155
System.out »
expecting success: 
    mkdir hellodir &&
    echo "World" > hellodir/world &&
    ln -s hellodir hellolink &&
    ( cd hellolink &&
    ipfs add -r . > ../actual ) &&
    grep "added Qma9CyFdG5ffrZCcYSin2uAETygB25cswVwEYYzwfQuhTe" actual &&
    rm -r hellodir
  
added Qma9CyFdG5ffrZCcYSin2uAETygB25cswVwEYYzwfQuhTe hellodir/world
ok 297 - ipfs add -r adds directory content when ./ is symlink
System.err »
 6 B / ? 

 6 B / 6 B  100.00%

 6 B / 6 B  100.00%
298 - add a small file with raw-leaves Success 0.139
System.out »
expecting success: 
    echo "foobar" > afile &&
    HASH=$(ipfs add -q --raw-leaves afile)
  
ok 298 - add a small file with raw-leaves
299 - cat that small file Success 0.106
System.out »
expecting success: 
    ipfs cat $HASH > afile_out
  
ok 299 - cat that small file
300 - make sure it looks good Success 0.005
System.out »
expecting success: 
    test_cmp afile afile_out
  
ok 300 - make sure it looks good
301 - add zero length file with raw-leaves Success 0.148
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q --raw-leaves zero-length-file) &&
    echo $ZEROHASH
  
bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
ok 301 - add zero length file with raw-leaves
302 - zero length file has correct hash Success 0.004
System.out »
expecting success: 
    test "$ZEROHASH" = bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
  
ok 302 - zero length file has correct hash
303 - cat zero length file Success 0.078
System.out »
expecting success: 
    ipfs cat $ZEROHASH > zero-length-file_out
  
ok 303 - cat zero length file
System.err »
 0 B / ? 

 0 B / ?  0s
304 - make sure it looks good Success 0.005
System.out »
expecting success: 
    test_cmp zero-length-file zero-length-file_out
  
ok 304 - make sure it looks good
305 - ipfs add --cid-version=9 fails Success 0.072
System.out »
expecting success: 
  echo "context" > afile.txt &&
  test_must_fail ipfs add --cid-version=9 afile.txt 2>&1 | tee add_out &&
  grep -q "unknown CID version" add_out

Error: unknown CID version: 9
ok 305 - ipfs add --cid-version=9 fails
306 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 306 - 'ipfs daemon' is still running
307 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 307 - 'ipfs daemon' can be killed
308 - ipfs add --help works Success 0.067
System.out »
expecting success: 
    ipfs add --help 2> add_help_err1 > /dev/null
  
ok 308 - ipfs add --help works
309 - stdin reading message doesn't show up Success 0.006
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err1 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err1
  
ok 309 - stdin reading message doesn't show up
310 - ipfs help add works Success 0.081
System.out »
expecting success: 
    ipfs help add 2> add_help_err2 > /dev/null
  
ok 310 - ipfs help add works
311 - stdin reading message doesn't show up Success 0.007
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err2 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err2
  
ok 311 - stdin reading message doesn't show up
312 - ipfs add succeeds Success 0.634
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/hello.txt &&
    ipfs add mountdir/hello.txt >actual
  
ok 312 - ipfs add succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
313 - ipfs add output looks good Success 0.009
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 313 - ipfs add output looks good
314 - ipfs add --only-hash succeeds Success 0.105
System.out »
expecting success: 
    ipfs add --only-hash mountdir/hello.txt > oh_actual
  
ok 314 - ipfs add --only-hash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
315 - ipfs add --only-hash output looks good Success 0.007
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 315 - ipfs add --only-hash output looks good
316 - ipfs cat succeeds Success 0.080
System.out »
expecting success: 
    ipfs cat "$HASH" >actual
  
ok 316 - ipfs cat succeeds
317 - ipfs cat output looks good Success 0.008
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 317 - ipfs cat output looks good
318 - ipfs cat with offset succeeds Success 0.128
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" >actual
  
ok 318 - ipfs cat with offset succeeds
319 - ipfs cat from offset output looks good Success 0.010
System.out »
expecting success: 
    echo "ds!" >expected &&
    test_cmp expected actual
  
ok 319 - ipfs cat from offset output looks good
320 - ipfs cat multiple hashes with offset succeeds Success 0.159
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" "$HASH" >actual
  
ok 320 - ipfs cat multiple hashes with offset succeeds
321 - ipfs cat from offset output looks good Success 0.009
System.out »
expecting success: 
    echo "ds!" >expected &&
    echo "Hello Worlds!" >>expected &&
    test_cmp expected actual
  
ok 321 - ipfs cat from offset output looks good
322 - ipfs cat multiple hashes with offset succeeds Success 0.079
System.out »
expecting success: 
    ipfs cat --offset 16 "$HASH" "$HASH" >actual
  
ok 322 - ipfs cat multiple hashes with offset succeeds
323 - ipfs cat from offset output looks good Success 0.005
System.out »
expecting success: 
    echo "llo Worlds!" >expected &&
    test_cmp expected actual
  
ok 323 - ipfs cat from offset output looks good
324 - ipfs cat from negative offset should fail Success 0.074
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --offset -102 "$HASH" > actual
  
ok 324 - ipfs cat from negative offset should fail
System.err »
Error: cannot specify negative offset
325 - ipfs cat with length succeeds Success 0.086
System.out »
expecting success: 
    ipfs cat --length 8 "$HASH" >actual
  
ok 325 - ipfs cat with length succeeds
326 - ipfs cat with length output looks good Success 0.006
System.out »
expecting success: 
    printf "Hello Wo" >expected &&
    test_cmp expected actual
  
ok 326 - ipfs cat with length output looks good
327 - ipfs cat multiple hashes with offset and length succeeds Success 0.087
System.out »
expecting success: 
    ipfs cat --offset 5 --length 15 "$HASH" "$HASH" "$HASH" >actual
  
ok 327 - ipfs cat multiple hashes with offset and length succeeds
328 - ipfs cat multiple hashes with offset and length looks good Success 0.006
System.out »
expecting success: 
    printf " Worlds!\nHello " >expected &&
    test_cmp expected actual
  
ok 328 - ipfs cat multiple hashes with offset and length looks good
329 - ipfs cat with exact length succeeds Success 0.165
System.out »
expecting success: 
    ipfs cat --length $(ipfs cat "$HASH" | wc -c) "$HASH" >actual
  
ok 329 - ipfs cat with exact length succeeds
330 - ipfs cat with exact length looks good Success 0.006
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 330 - ipfs cat with exact length looks good
331 - ipfs cat with 0 length succeeds Success 0.070
System.out »
expecting success: 
    ipfs cat --length 0 "$HASH" >actual
  
ok 331 - ipfs cat with 0 length succeeds
System.err »
 0 B / ? 

 0 B / ?  0s
332 - ipfs cat with 0 length looks good Success 0.005
System.out »
expecting success: 
    : >expected &&
    test_cmp expected actual
  
ok 332 - ipfs cat with 0 length looks good
333 - ipfs cat with oversized length succeeds Success 0.086
System.out »
expecting success: 
    ipfs cat --length 100 "$HASH" >actual
  
ok 333 - ipfs cat with oversized length succeeds
334 - ipfs cat with oversized length looks good Success 0.005
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 334 - ipfs cat with oversized length looks good
335 - ipfs cat with negative length should fail Success 0.093
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --length -102 "$HASH" > actual
  
ok 335 - ipfs cat with negative length should fail
System.err »
Error: cannot specify negative length
336 - ipfs cat /ipfs/file succeeds Success 0.178
System.out »
expecting success: 
    ipfs cat /ipfs/$HASH >actual
  
ok 336 - ipfs cat /ipfs/file succeeds
337 - output looks good Success 0.007
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 337 - output looks good
338 - ipfs add -t succeeds Success 0.115
System.out »
expecting success: 
    ipfs add -t mountdir/hello.txt >actual
  
ok 338 - ipfs add -t succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
339 - ipfs add -t output looks good Success 0.007
System.out »
expecting success: 
    HASH="QmUkUQgxXeggyaD5Ckv8ZqfW8wHBX6cYyeiyqvVZYzq5Bi" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 339 - ipfs add -t output looks good
340 - ipfs add --chunker size-32 succeeds Success 0.093
System.out »
expecting success: 
    ipfs add --chunker rabin mountdir/hello.txt >actual
  
ok 340 - ipfs add --chunker size-32 succeeds
System.err »
 14 B / 14 B  100.00%
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
341 - ipfs add --chunker size-32 output looks good Success 0.005
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 341 - ipfs add --chunker size-32 output looks good
342 - ipfs add --chunker size-64 succeeds Success 0.083
System.out »
expecting success: 
    ipfs add --chunker=size-64 mountdir/hello.txt >actual
  
ok 342 - ipfs add --chunker size-64 succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
343 - ipfs add --chunker size-64 output looks good Success 0.005
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 343 - ipfs add --chunker size-64 output looks good
344 - ipfs add --chunker=size-0 failed Success 0.064
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker=size-0 mountdir/hello.txt
  

ok 344 - ipfs add --chunker=size-0 failed
System.err »
Error: chunker size must be greater than 0
345 - ipfs add --chunker rabin-36-512-1024 succeeds Success 0.087
System.out »
expecting success: 
    ipfs add --chunker rabin-36-512-1024 mountdir/hello.txt >actual
  
ok 345 - ipfs add --chunker rabin-36-512-1024 succeeds
System.err »
 14 B / 14 B  100.00%
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
346 - ipfs add --chunker rabin-36-512-1024 output looks good Success 0.007
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 346 - ipfs add --chunker rabin-36-512-1024 output looks good
347 - ipfs add --chunker rabin-12-512-1024 failed Success 0.069
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker rabin-12-512-1024 mountdir/hello.txt
  

ok 347 - ipfs add --chunker rabin-12-512-1024 failed
System.err »
Error: rabin min must be greater than 16
348 - ipfs add --chunker buzhash succeeds Success 0.108
System.out »
expecting success: 
    ipfs add --chunker buzhash mountdir/hello.txt >actual
  
ok 348 - ipfs add --chunker buzhash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
349 - ipfs add --chunker buzhash output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 349 - ipfs add --chunker buzhash output looks good
350 - ipfs add on hidden file succeeds Success 0.096
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/.hello.txt &&
    ipfs add mountdir/.hello.txt >actual
  
ok 350 - ipfs add on hidden file succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
351 - ipfs add on hidden file output looks good Success 0.008
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH .hello.txt" >expected &&
    test_cmp expected actual
  
ok 351 - ipfs add on hidden file output looks good
352 - add zero length file Success 0.082
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q zero-length-file) &&
    echo $ZEROHASH
  
QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
ok 352 - add zero length file
353 - zero length file has correct hash Success 0.007
System.out »
expecting success: 
    test "$ZEROHASH" = QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
  
ok 353 - zero length file has correct hash
354 - cat zero length file Success 0.073
System.out »
expecting success: 
    ipfs cat $ZEROHASH > zero-length-file_out
  
ok 354 - cat zero length file
System.err »
 0 B / ? 

 0 B / ?  0s
355 - make sure it looks good Success 0.005
System.out »
expecting success: 
    test_cmp zero-length-file zero-length-file_out
  
ok 355 - make sure it looks good
356 - ipfs add --stdin-name Success 0.112
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add --stdin-name file.txt > actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 356 - ipfs add --stdin-name
System.err »
 5 B / ? 

 5 B / ? 
 5 B / 5 B  100.00%
357 - ipfs add --stdin-name -w Success 0.062
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add -w --stdin-name file.txt | head -n1> actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 357 - ipfs add --stdin-name -w
System.err »
 5 B / ? 

 5 B / ? 
358 - ipfs cat with stdin-name Success 0.243
System.out »
expecting success: 
    NAMEHASH=$(echo "IPFS" | ipfs add -w --stdin-name file.txt -Q) &&
    ipfs cat /ipfs/$NAMEHASH/file.txt > expected &&
    echo "IPFS" > actual &&
    test_cmp expected actual
  
ok 358 - ipfs cat with stdin-name
359 - ipfs add -r . Success 0.139
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q . > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 359 - ipfs add -r .
360 - ipfs add -r . output looks good Success 0.006
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 360 - ipfs add -r . output looks good
361 - ipfs add -r ./ Success 0.145
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q ./ > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 361 - ipfs add -r ./
362 - ipfs add -r ./ output looks good Success 0.005
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 362 - ipfs add -r ./ output looks good
363 - ipfs add --cid-base=base32 succeeds Success 0.099
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 mountdir/base32-test.txt >actual
  
ok 363 - ipfs add --cid-base=base32 succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
364 - ipfs add --cid-base=base32 output looks good Success 0.007
System.out »
expecting success: 
    HASHb32="bafybeibyosqxljd2eptb4ebbtvk7pb4aoxzqa6ttdsflty6rsslz5y6i34" &&
    echo "added $HASHb32 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 364 - ipfs add --cid-base=base32 output looks good
365 - ipfs add --cid-base=base32 --only-hash succeeds Success 0.088
System.out »
expecting success: 
    ipfs add --cid-base=base32 --only-hash mountdir/base32-test.txt > oh_actual
  
ok 365 - ipfs add --cid-base=base32 --only-hash succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
366 - ipfs add --cid-base=base32 --only-hash output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 366 - ipfs add --cid-base=base32 --only-hash output looks good
367 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds Success 0.134
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false mountdir/base32-test.txt >actual
  
ok 367 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
368 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good Success 0.016
System.out »
expecting success: 
    HASHv0=$(cid-fmt -v 0 -b z %s "$HASHb32") &&
    echo "added $HASHv0 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 368 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
369 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds Success 0.516
System.out »
expecting success: 
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash mountdir/base32-test.txt > oh_actual
  
ok 369 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
370 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good Success 0.052
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 370 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
371 - ipfs cat with base32 hash succeeds Success 0.274
System.out »
expecting success: 
    ipfs cat "$HASHb32" >actual
  
ok 371 - ipfs cat with base32 hash succeeds
372 - ipfs cat with base32 hash output looks good Success 0.025
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 372 - ipfs cat with base32 hash output looks good
373 - ipfs cat using CIDv0 hash succeeds Success 0.245
System.out »
expecting success: 
    ipfs cat "$HASHv0" >actual
  
ok 373 - ipfs cat using CIDv0 hash succeeds
374 - ipfs cat using CIDv0 hash looks good Success 0.012
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 374 - ipfs cat using CIDv0 hash looks good
375 - ipfs add with multiple files succeeds Success 0.199
System.out »
expecting success: 
    echo "Helloo Worlds!" >mountdir/hello2.txt &&
    ipfs add mountdir/hello.txt mountdir/hello2.txt >actual
  
ok 375 - ipfs add with multiple files succeeds
System.err »
 14 B / 29 B   48.28%

 14 B / 29 B   48.28%
 29 B / 29 B  100.00%

 29 B / 29 B  100.00%
376 - ipfs add with multiple files output looks good Success 0.008
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    echo "added Qmf35k66MZNW2GijohUmXQEWKZU4cCGTCwK6idfnt152wJ hello2.txt" >> expected &&
    test_cmp expected actual
  
ok 376 - ipfs add with multiple files output looks good
377 - ipfs add with multiple files of same name and import dir succeeds Success 0.241
System.out »
expecting success: 
    ipfs add mountdir/hello.txt mountdir/hello.txt >actual
  
ok 377 - ipfs add with multiple files of same name and import dir succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
378 - ipfs add with multiple files of same name output looks good Success 0.032
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    test_cmp expected actual
  
ok 378 - ipfs add with multiple files of same name output looks good
379 - ipfs add with multiple files of same name but different dirs fails Success 0.324
System.out »
expecting success: 
      mkdir -p mountdir/same-file/ &&
      cp mountdir/hello.txt mountdir/same-file/hello.txt &&
      test_expect_code 1 ipfs add mountdir/hello.txt mountdir/same-file/hello.txt >actual &&
      rm mountdir/same-file/hello.txt  &&
      rmdir mountdir/same-file
    
ok 379 - ipfs add with multiple files of same name but different dirs fails
System.err »
Error: file name hello.txt repeated under different import directories: mountdir/same-file and mountdir

USAGE
  ipfs add <path>... - Add a file or directory to IPFS.

  ipfs add [--recursive | -r] [--dereference-args] [--stdin-name=<stdin-name>]
           [--hidden | -H] [--ignore=<ignore>]...
           [--ignore-rules-path=<ignore-rules-path>] [--empty-dirs=false]
           [--dereference-symlinks] [--quiet | -q] [--quieter | -Q] [--silent]
           [--progress | -p] [--only-hash | -n] [--wrap-with-directory | -w]
           [--pin=false] [--pin-name=<pin-name>] [--to-files=<to-files>]
           [--cid-version=<cid-version>] [--hash=<hash>] [--raw-leaves]
           [--chunker=<chunker> | -s] [--trickle | -t]
           [--max-file-links=<max-file-links>]
           [--max-directory-links=<max-directory-links>]
           [--max-hamt-fanout=<max-hamt-fanout>] [--inline]
           [--inline-limit=<inline-limit>] [--nocopy] [--fscache]
           [--preserve-mode] [--preserve-mtime] [--mode=<mode>]
           [--mtime=<mtime>] [--mtime-nsecs=<mtime-nsecs>] [--fast-provide-root]
           [--fast-provide-wait] [--] <path>...

  Adds the content of <path> to IPFS. Use -r to add directories (recursively).
  
  FAST PROVIDE OPTIMIZATION:
  
  When you add content to IPFS, the sweep provider queues it for efficient
  DHT provides over time. While this is resource-efficient, other peers won't
  find your content immediately after 'ipfs add' completes.
  
  To make sharing faster, 'ipfs add' does an immediate provide of the root CID
  to the DHT in addition to the regular queue. This complements the sweep provider:
  fast-provide handles the urgent case (root CIDs that users share and reference),
  while the sweep provider efficiently provides all blocks according to
  Provide.Strategy over time.
  
  By default, this immediate provide runs in the background without blocking
  the command. If you need certainty that the root CID is discoverable before
  the command returns (e.g., sharing a link immediately), use --fast-provide-wait
  to wait for the provide to complete. Use --fast-provide-root=false to skip
  this optimization.
  
  This works best with the sweep provider and accelerated DHT client.
  Automatically skipped when DHT is not available.

  For more information about each command, use:
  'ipfs add <subcmd> --help'
380 - ipfs add --to-files /mfspath succeeds Success 0.362
System.out »
expecting success: 
    mkdir -p mountdir && echo "Hello MFS!" > mountdir/mfs.txt &&
    ipfs add mountdir/mfs.txt --to-files /ipfs-add-to-files >actual
  
ok 380 - ipfs add --to-files /mfspath succeeds
System.err »
 11 B / 11 B  100.00%

 11 B / 11 B  100.00%
381 - ipfs add --to-files output looks good Success 0.065
System.out »
expecting success: 
    HASH_MFS="QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr" &&
    echo "added $HASH_MFS mfs.txt" >expected &&
    test_cmp expected actual
  
ok 381 - ipfs add --to-files output looks good
382 - ipfs files read succeeds Success 1.006
System.out »
expecting success: 
    ipfs files read /ipfs-add-to-files >actual &&
    ipfs files rm /ipfs-add-to-files
  
ok 382 - ipfs files read succeeds
383 - ipfs cat output looks good Success 0.105
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    test_cmp expected actual
  
ok 383 - ipfs cat output looks good
384 - ipfs add --to-files requires argument Success 0.580
System.out »
expecting success: 
    test_expect_code 1 ipfs add mountdir/mfs.txt --to-files >actual 2>&1 &&
    test_should_contain "Error: missing argument for option \"to-files\"" actual
  
ok 384 - ipfs add --to-files requires argument
385 - ipfs add --to-files / (MFS root) works Success 1.521
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    ipfs add mountdir/mfs.txt --to-files / &&
    ipfs files read /mfs.txt >actual &&
    test_cmp expected actual &&
    ipfs files rm /mfs.txt &&
    rm mountdir/mfs.txt
  
added QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr mfs.txt
ok 385 - ipfs add --to-files / (MFS root) works
System.err »
 11 B / 11 B  100.00%

 11 B / 11 B  100.00%
386 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails Success 1.866
System.out »
expecting success: 
    mkdir -p test &&
    echo "file1" > test/mfs1.txt &&
    echo "file2" > test/mfs2.txt &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfspath0 >actual 2>&1 &&
    test_should_contain "MFS destination is a file: only one entry can be copied to \"/mfspath0\"" actual &&
    ipfs files rm -r --force /mfspath0
  
ok 386 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
387 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails Success 2.016
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsfile1\"" actual &&
    ipfs files rm -r --force /mfsfile1
  
ok 387 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
388 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails Success 2.502
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsdir1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsdir1\"" actual &&
    ipfs files rm -r --force /mfsdir1
  
ok 388 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
389 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds Success 3.252
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir2 &&
    test_expect_code 0 ipfs add --cid-version 1 test/mfs1.txt test/mfs2.txt --to-files /mfsdir2/ > actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby mfs2.txt" actual &&
    test_should_not_contain "Error" actual &&
    ipfs files ls /mfsdir2/ > lsout &&
    test_should_contain "mfs1.txt" lsout &&
    test_should_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfsdir2
  
ok 389 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
390 - ipfs add file1 file2 --to-files /mfsfile2/ (with trailing slash + with preexisting file) fails Success 1.322
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile2 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile2/ >actual 2>&1 &&
    test_should_contain "Error: to-files: MFS destination \"/mfsfile2/\" is not a directory" actual &&
    ipfs files rm -r --force /mfsfile2
  
ok 390 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
391 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists Success 2.923
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir3 &&
    test_expect_code 1 ipfs add -r test --to-files /mfs/subdir3 >actual 2>&1 &&
    test_should_contain "cannot put node in path \"/mfs/subdir3\": directory already has entry by that name" actual &&
    ipfs files rm -r --force /mfs
  
ok 391 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
392 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash) Success 2.681
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir4 &&
    ipfs add --cid-version 1 -r test --to-files /mfs/subdir4/ >actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a test/mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby test/mfs2.txt" actual &&
    test_should_contain "added bafybeic7xwqwovt4g4bax6d3udp6222i63vj2rblpbim7uy2uw4a5gahha test" actual &&
    test_should_not_contain "Error" actual
    ipfs files ls /mfs/subdir4/ > lsout &&
    test_should_contain "test" lsout &&
    test_should_not_contain "mfs1.txt" lsout &&
    test_should_not_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfs
  
ok 392 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
393 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive) Success 1.515
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir5 &&
    test_expect_code 1 ipfs add -r -w test --to-files /mfs/subdir5/ >actual 2>&1 &&
    test_should_contain "Error" actual &&
    ipfs files rm -r --force /mfs
  
ok 393 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
394 - add a small file with raw-leaves Success 0.249
System.out »
expecting success: 
    echo "foobar" > afile &&
    HASH=$(ipfs add -q --raw-leaves afile)
  
ok 394 - add a small file with raw-leaves
395 - cat that small file Success 0.221
System.out »
expecting success: 
    ipfs cat $HASH > afile_out
  
ok 395 - cat that small file
396 - make sure it looks good Success 0.015
System.out »
expecting success: 
    test_cmp afile afile_out
  
ok 396 - make sure it looks good
397 - add zero length file with raw-leaves Success 0.233
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q --raw-leaves zero-length-file) &&
    echo $ZEROHASH
  
bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
ok 397 - add zero length file with raw-leaves
398 - zero length file has correct hash Success 0.006
System.out »
expecting success: 
    test "$ZEROHASH" = bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
  
ok 398 - zero length file has correct hash
399 - cat zero length file Success 0.117
System.out »
expecting success: 
    ipfs cat $ZEROHASH > zero-length-file_out
  
ok 399 - cat zero length file
System.err »
 0 B / ? 

 0 B / ?  0s
400 - make sure it looks good Success 0.006
System.out »
expecting success: 
    test_cmp zero-length-file zero-length-file_out
  
ok 400 - make sure it looks good
401 - ipfs add --only-hash succeeds Success 0.120
System.out »
expecting success: 
  echo "unknown content for only-hash" | ipfs add --only-hash -q > oh_hash

ok 401 - ipfs add --only-hash succeeds
402 - create and hash zero length file Success 0.109
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q -n zero-length-file)
  
ok 402 - create and hash zero length file
403 - create symlink and add with dereferenced arguments Success 0.087
System.out »
expecting success: 
    ln -s zero-length-file symlink-to-zero &&
    HASH=$(ipfs add -q -n --dereference-args symlink-to-zero) &&
    test $HASH = $ZEROHASH
  
ok 403 - create symlink and add with dereferenced arguments
404 - ipfs cat file fails Success 0.100
System.out »
expecting success: 
  test_must_fail ipfs cat $(cat oh_hash)

ok 404 - ipfs cat file fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmTe26NmLQ1kRcEXkgv9kohf7TM7HCsM3cxa81u7qGKq1j
405 - Adding named pipes explicitly works Success 0.302
System.out »
expecting success: 
    mkfifo named-pipe1 &&
    ( echo foo > named-pipe1 & echo "added $( echo foo | ipfs add -nq ) named-pipe1" > expected_named_pipes_add ) &&
    mkfifo named-pipe2 &&
    ( echo bar > named-pipe2 & echo "added $( echo bar | ipfs add -nq ) named-pipe2" >> expected_named_pipes_add ) &&
    ipfs add -n named-pipe1 named-pipe2 >actual_pipe_add &&
    rm named-pipe1 &&
    rm named-pipe2 &&
    test_cmp expected_named_pipes_add actual_pipe_add
  
ok 405 - Adding named pipes explicitly works
System.err »
 4 B / ? 

 4 B / ? 
 8 B / ? 

 8 B / ? 
 8 B / 8 B  100.00%
406 - useful error message when recursively adding a named pipe Success 0.114
System.out »
expecting success: 
    mkdir -p named-pipe-dir &&
    mkfifo named-pipe-dir/named-pipe &&
    STAT=$(generic_stat named-pipe-dir/named-pipe) &&
    test_expect_code 1 ipfs add -r named-pipe-dir 2>actual &&
    printf "Error: unrecognized file type for named-pipe-dir/named-pipe: $STAT\n" >expected &&
    rm named-pipe-dir/named-pipe &&
    rmdir named-pipe-dir &&
    test_cmp expected actual
  
ok 406 - useful error message when recursively adding a named pipe
407 - ipfs add -r adds directory content when ./ is symlink Success 0.103
System.out »
expecting success: 
    mkdir hellodir &&
    echo "World" > hellodir/world &&
    ln -s hellodir hellolink &&
    ( cd hellolink &&
    ipfs add -r . > ../actual ) &&
    grep "added Qma9CyFdG5ffrZCcYSin2uAETygB25cswVwEYYzwfQuhTe" actual &&
    rm -r hellodir
  
added Qma9CyFdG5ffrZCcYSin2uAETygB25cswVwEYYzwfQuhTe hellodir/world
ok 407 - ipfs add -r adds directory content when ./ is symlink
System.err »

 0 B / 6 B    0.00%
 6 B / 6 B  100.00%

 6 B / 6 B  100.00%

 6 B / 6 B  100.00%
408 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 408 - 'ipfs daemon' succeeds
409 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 409 - api file shows up
410 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 410 - set up address variables
411 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 411 - 'ipfs daemon' is ready
412 - ipfs add --help works Success 0.068
System.out »
expecting success: 
    ipfs add --help 2> add_help_err1 > /dev/null
  
ok 412 - ipfs add --help works
413 - stdin reading message doesn't show up Success 0.008
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err1 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err1
  
ok 413 - stdin reading message doesn't show up
414 - ipfs help add works Success 0.064
System.out »
expecting success: 
    ipfs help add 2> add_help_err2 > /dev/null
  
ok 414 - ipfs help add works
415 - stdin reading message doesn't show up Success 0.007
System.out »
expecting success: 
    test_expect_code 1 grep "ipfs: Reading from" add_help_err2 &&
    test_expect_code 1 grep "send Ctrl-d to stop." add_help_err2
  
ok 415 - stdin reading message doesn't show up
416 - ipfs add succeeds Success 0.090
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/hello.txt &&
    ipfs add mountdir/hello.txt >actual
  
ok 416 - ipfs add succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
417 - ipfs add output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 417 - ipfs add output looks good
418 - ipfs add --only-hash succeeds Success 0.068
System.out »
expecting success: 
    ipfs add --only-hash mountdir/hello.txt > oh_actual
  
ok 418 - ipfs add --only-hash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
419 - ipfs add --only-hash output looks good Success 0.006
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 419 - ipfs add --only-hash output looks good
420 - ipfs cat succeeds Success 0.083
System.out »
expecting success: 
    ipfs cat "$HASH" >actual
  
ok 420 - ipfs cat succeeds
421 - ipfs cat output looks good Success 0.007
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 421 - ipfs cat output looks good
422 - ipfs cat with offset succeeds Success 0.069
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" >actual
  
ok 422 - ipfs cat with offset succeeds
423 - ipfs cat from offset output looks good Success 0.006
System.out »
expecting success: 
    echo "ds!" >expected &&
    test_cmp expected actual
  
ok 423 - ipfs cat from offset output looks good
424 - ipfs cat multiple hashes with offset succeeds Success 0.074
System.out »
expecting success: 
    ipfs cat --offset 10 "$HASH" "$HASH" >actual
  
ok 424 - ipfs cat multiple hashes with offset succeeds
425 - ipfs cat from offset output looks good Success 0.007
System.out »
expecting success: 
    echo "ds!" >expected &&
    echo "Hello Worlds!" >>expected &&
    test_cmp expected actual
  
ok 425 - ipfs cat from offset output looks good
426 - ipfs cat multiple hashes with offset succeeds Success 0.069
System.out »
expecting success: 
    ipfs cat --offset 16 "$HASH" "$HASH" >actual
  
ok 426 - ipfs cat multiple hashes with offset succeeds
427 - ipfs cat from offset output looks good Success 0.006
System.out »
expecting success: 
    echo "llo Worlds!" >expected &&
    test_cmp expected actual
  
ok 427 - ipfs cat from offset output looks good
428 - ipfs cat from negative offset should fail Success 0.069
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --offset -102 "$HASH" > actual
  
ok 428 - ipfs cat from negative offset should fail
System.err »
Error: cannot specify negative offset
429 - ipfs cat with length succeeds Success 0.077
System.out »
expecting success: 
    ipfs cat --length 8 "$HASH" >actual
  
ok 429 - ipfs cat with length succeeds
430 - ipfs cat with length output looks good Success 0.006
System.out »
expecting success: 
    printf "Hello Wo" >expected &&
    test_cmp expected actual
  
ok 430 - ipfs cat with length output looks good
431 - ipfs cat multiple hashes with offset and length succeeds Success 0.068
System.out »
expecting success: 
    ipfs cat --offset 5 --length 15 "$HASH" "$HASH" "$HASH" >actual
  
ok 431 - ipfs cat multiple hashes with offset and length succeeds
432 - ipfs cat multiple hashes with offset and length looks good Success 0.005
System.out »
expecting success: 
    printf " Worlds!\nHello " >expected &&
    test_cmp expected actual
  
ok 432 - ipfs cat multiple hashes with offset and length looks good
433 - ipfs cat with exact length succeeds Success 0.138
System.out »
expecting success: 
    ipfs cat --length $(ipfs cat "$HASH" | wc -c) "$HASH" >actual
  
ok 433 - ipfs cat with exact length succeeds
434 - ipfs cat with exact length looks good Success 0.007
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 434 - ipfs cat with exact length looks good
435 - ipfs cat with 0 length succeeds Success 0.069
System.out »
expecting success: 
    ipfs cat --length 0 "$HASH" >actual
  
ok 435 - ipfs cat with 0 length succeeds
System.err »
 0 B / ? 

 0 B / ?  0s
436 - ipfs cat with 0 length looks good Success 0.006
System.out »
expecting success: 
    : >expected &&
    test_cmp expected actual
  
ok 436 - ipfs cat with 0 length looks good
437 - ipfs cat with oversized length succeeds Success 0.065
System.out »
expecting success: 
    ipfs cat --length 100 "$HASH" >actual
  
ok 437 - ipfs cat with oversized length succeeds
438 - ipfs cat with oversized length looks good Success 0.006
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 438 - ipfs cat with oversized length looks good
439 - ipfs cat with negative length should fail Success 0.065
System.out »
expecting success: 
    test_expect_code 1 ipfs cat --length -102 "$HASH" > actual
  
ok 439 - ipfs cat with negative length should fail
System.err »
Error: cannot specify negative length
440 - ipfs cat /ipfs/file succeeds Success 0.065
System.out »
expecting success: 
    ipfs cat /ipfs/$HASH >actual
  
ok 440 - ipfs cat /ipfs/file succeeds
441 - output looks good Success 0.006
System.out »
expecting success: 
    echo "Hello Worlds!" >expected &&
    test_cmp expected actual
  
ok 441 - output looks good
442 - ipfs add -t succeeds Success 0.079
System.out »
expecting success: 
    ipfs add -t mountdir/hello.txt >actual
  
ok 442 - ipfs add -t succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
443 - ipfs add -t output looks good Success 0.005
System.out »
expecting success: 
    HASH="QmUkUQgxXeggyaD5Ckv8ZqfW8wHBX6cYyeiyqvVZYzq5Bi" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 443 - ipfs add -t output looks good
444 - ipfs add --chunker size-32 succeeds Success 0.080
System.out »
expecting success: 
    ipfs add --chunker rabin mountdir/hello.txt >actual
  
ok 444 - ipfs add --chunker size-32 succeeds
System.err »
 14 B / 14 B  100.00%
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
445 - ipfs add --chunker size-32 output looks good Success 0.005
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 445 - ipfs add --chunker size-32 output looks good
446 - ipfs add --chunker size-64 succeeds Success 0.078
System.out »
expecting success: 
    ipfs add --chunker=size-64 mountdir/hello.txt >actual
  
ok 446 - ipfs add --chunker size-64 succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
447 - ipfs add --chunker size-64 output looks good Success 0.007
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 447 - ipfs add --chunker size-64 output looks good
448 - ipfs add --chunker=size-0 failed Success 0.083
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker=size-0 mountdir/hello.txt
  
ok 448 - ipfs add --chunker=size-0 failed
System.err »
Error: chunker size must be greater than 0
449 - ipfs add --chunker rabin-36-512-1024 succeeds Success 0.076
System.out »
expecting success: 
    ipfs add --chunker rabin-36-512-1024 mountdir/hello.txt >actual
  
ok 449 - ipfs add --chunker rabin-36-512-1024 succeeds
System.err »
 14 B / ? 
 14 B / ? 

 14 B / 14 B  100.00%
450 - ipfs add --chunker rabin-36-512-1024 output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 450 - ipfs add --chunker rabin-36-512-1024 output looks good
451 - ipfs add --chunker rabin-12-512-1024 failed Success 0.074
System.out »
expecting success: 
    test_expect_code 1 ipfs add -Q --chunker rabin-12-512-1024 mountdir/hello.txt
  
ok 451 - ipfs add --chunker rabin-12-512-1024 failed
System.err »
Error: rabin min must be greater than 16
452 - ipfs add --chunker buzhash succeeds Success 0.076
System.out »
expecting success: 
    ipfs add --chunker buzhash mountdir/hello.txt >actual
  
ok 452 - ipfs add --chunker buzhash succeeds
System.err »
 14 B / 14 B  100.00%

 14 B / 14 B  100.00%
453 - ipfs add --chunker buzhash output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH hello.txt" >expected &&
    test_cmp expected actual
  
ok 453 - ipfs add --chunker buzhash output looks good
454 - ipfs add on hidden file succeeds Success 0.082
System.out »
expecting success: 
    echo "Hello Worlds!" >mountdir/.hello.txt &&
    ipfs add mountdir/.hello.txt >actual
  
ok 454 - ipfs add on hidden file succeeds
System.err »
 14 B / ? 

 14 B / ? 
455 - ipfs add on hidden file output looks good Success 0.006
System.out »
expecting success: 
    HASH="QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH" &&
    echo "added $HASH .hello.txt" >expected &&
    test_cmp expected actual
  
ok 455 - ipfs add on hidden file output looks good
456 - add zero length file Success 0.075
System.out »
expecting success: 
    touch zero-length-file &&
    ZEROHASH=$(ipfs add -q zero-length-file) &&
    echo $ZEROHASH
  
QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
ok 456 - add zero length file
457 - zero length file has correct hash Success 0.005
System.out »
expecting success: 
    test "$ZEROHASH" = QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
  
ok 457 - zero length file has correct hash
458 - cat zero length file Success 0.073
System.out »
expecting success: 
    ipfs cat $ZEROHASH > zero-length-file_out
  
ok 458 - cat zero length file
System.err »
 0 B / ? 

 0 B / ?  0s
459 - make sure it looks good Success 0.005
System.out »
expecting success: 
    test_cmp zero-length-file zero-length-file_out
  
ok 459 - make sure it looks good
460 - ipfs add --stdin-name Success 0.082
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add --stdin-name file.txt > actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 460 - ipfs add --stdin-name
System.err »
 5 B / ? 

 5 B / ? 
 5 B / 5 B  100.00%
461 - ipfs add --stdin-name -w Success 0.035
System.out »
expecting success: 
    NAMEHASH="QmdFyxZXsFiP4csgfM5uPu99AvFiKH62CSPDw5TP92nr7w" &&
    echo "IPFS" | ipfs add -w --stdin-name file.txt | head -n1> actual &&
    echo "added $NAMEHASH file.txt" > expected &&
    test_cmp expected actual
  
ok 461 - ipfs add --stdin-name -w
System.err »
 5 B / ? 

 5 B / ? 
462 - ipfs cat with stdin-name Success 0.141
System.out »
expecting success: 
    NAMEHASH=$(echo "IPFS" | ipfs add -w --stdin-name file.txt -Q) &&
    ipfs cat /ipfs/$NAMEHASH/file.txt > expected &&
    echo "IPFS" > actual &&
    test_cmp expected actual
  
ok 462 - ipfs cat with stdin-name
463 - ipfs add -r . Success 0.075
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q . > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 463 - ipfs add -r .
464 - ipfs add -r . output looks good Success 0.006
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 464 - ipfs add -r . output looks good
465 - ipfs add -r ./ Success 0.077
System.out »
expecting success: 
    mkdir test_current_dir &&
    echo "Hey" > test_current_dir/hey &&
    mkdir test_current_dir/hello &&
    echo "World" > test_current_dir/hello/world &&
    ( cd test_current_dir &&
    ipfs add -r -Q ./ > ../actual && cd ../ ) &&
    rm -r test_current_dir
  
ok 465 - ipfs add -r ./
466 - ipfs add -r ./ output looks good Success 0.006
System.out »
expecting success: 
    echo "QmZQWnfcqJ6hNkkPvrY9Q5X39GP3jUnUbAV4AbmbbR3Cb1" > expected
    test_cmp expected actual
  
ok 466 - ipfs add -r ./ output looks good
467 - ipfs add --cid-base=base32 succeeds Success 0.072
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 mountdir/base32-test.txt >actual
  
ok 467 - ipfs add --cid-base=base32 succeeds
System.err »
 12 B / ? 

 12 B / 12 B  100.00%
468 - ipfs add --cid-base=base32 output looks good Success 0.006
System.out »
expecting success: 
    HASHb32="bafybeibyosqxljd2eptb4ebbtvk7pb4aoxzqa6ttdsflty6rsslz5y6i34" &&
    echo "added $HASHb32 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 468 - ipfs add --cid-base=base32 output looks good
469 - ipfs add --cid-base=base32 --only-hash succeeds Success 0.066
System.out »
expecting success: 
    ipfs add --cid-base=base32 --only-hash mountdir/base32-test.txt > oh_actual
  
ok 469 - ipfs add --cid-base=base32 --only-hash succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
470 - ipfs add --cid-base=base32 --only-hash output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 470 - ipfs add --cid-base=base32 --only-hash output looks good
471 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds Success 0.065
System.out »
expecting success: 
    echo "base32 test" >mountdir/base32-test.txt &&
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false mountdir/base32-test.txt >actual
  
ok 471 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
472 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good Success 0.008
System.out »
expecting success: 
    HASHv0=$(cid-fmt -v 0 -b z %s "$HASHb32") &&
    echo "added $HASHv0 base32-test.txt" >expected &&
    test_cmp expected actual
  
ok 472 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
473 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds Success 0.062
System.out »
expecting success: 
    ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash mountdir/base32-test.txt > oh_actual
  
ok 473 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
System.err »
 12 B / 12 B  100.00%

 12 B / 12 B  100.00%
474 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good Success 0.005
System.out »
expecting success: 
    test_cmp expected oh_actual
  
ok 474 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
475 - ipfs cat with base32 hash succeeds Success 0.069
System.out »
expecting success: 
    ipfs cat "$HASHb32" >actual
  
ok 475 - ipfs cat with base32 hash succeeds
476 - ipfs cat with base32 hash output looks good Success 0.006
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 476 - ipfs cat with base32 hash output looks good
477 - ipfs cat using CIDv0 hash succeeds Success 0.064
System.out »
expecting success: 
    ipfs cat "$HASHv0" >actual
  
ok 477 - ipfs cat using CIDv0 hash succeeds
478 - ipfs cat using CIDv0 hash looks good Success 0.006
System.out »
expecting success: 
    echo "base32 test" >expected &&
    test_cmp expected actual
  
ok 478 - ipfs cat using CIDv0 hash looks good
479 - ipfs add with multiple files succeeds Success 0.095
System.out »
expecting success: 
    echo "Helloo Worlds!" >mountdir/hello2.txt &&
    ipfs add mountdir/hello.txt mountdir/hello2.txt >actual
  
ok 479 - ipfs add with multiple files succeeds
System.err »
 14 B / ? 

 14 B / 29 B   48.28%
 29 B / 29 B  100.00%

 29 B / 29 B  100.00%
480 - ipfs add with multiple files output looks good Success 0.006
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    echo "added Qmf35k66MZNW2GijohUmXQEWKZU4cCGTCwK6idfnt152wJ hello2.txt" >> expected &&
    test_cmp expected actual
  
ok 480 - ipfs add with multiple files output looks good
481 - ipfs add with multiple files of same name and import dir succeeds Success 0.069
System.out »
expecting success: 
    ipfs add mountdir/hello.txt mountdir/hello.txt >actual
  
ok 481 - ipfs add with multiple files of same name and import dir succeeds
System.err »
 14 B / ? 

 14 B / 14 B  100.00%
482 - ipfs add with multiple files of same name output looks good Success 0.007
System.out »
expecting success: 
    echo "added QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH hello.txt" >expected &&
    test_cmp expected actual
  
ok 482 - ipfs add with multiple files of same name output looks good
483 - ipfs add with multiple files of same name but different dirs fails Success 0.068
System.out »
expecting success: 
      mkdir -p mountdir/same-file/ &&
      cp mountdir/hello.txt mountdir/same-file/hello.txt &&
      test_expect_code 1 ipfs add mountdir/hello.txt mountdir/same-file/hello.txt >actual &&
      rm mountdir/same-file/hello.txt  &&
      rmdir mountdir/same-file
    
ok 483 - ipfs add with multiple files of same name but different dirs fails
System.err »
Error: file name hello.txt repeated under different import directories: mountdir/same-file and mountdir

USAGE
  ipfs add <path>... - Add a file or directory to IPFS.

  ipfs add [--recursive | -r] [--dereference-args] [--stdin-name=<stdin-name>]
           [--hidden | -H] [--ignore=<ignore>]...
           [--ignore-rules-path=<ignore-rules-path>] [--empty-dirs=false]
           [--dereference-symlinks] [--quiet | -q] [--quieter | -Q] [--silent]
           [--progress | -p] [--only-hash | -n] [--wrap-with-directory | -w]
           [--pin=false] [--pin-name=<pin-name>] [--to-files=<to-files>]
           [--cid-version=<cid-version>] [--hash=<hash>] [--raw-leaves]
           [--chunker=<chunker> | -s] [--trickle | -t]
           [--max-file-links=<max-file-links>]
           [--max-directory-links=<max-directory-links>]
           [--max-hamt-fanout=<max-hamt-fanout>] [--inline]
           [--inline-limit=<inline-limit>] [--nocopy] [--fscache]
           [--preserve-mode] [--preserve-mtime] [--mode=<mode>]
           [--mtime=<mtime>] [--mtime-nsecs=<mtime-nsecs>] [--fast-provide-root]
           [--fast-provide-wait] [--] <path>...

  Adds the content of <path> to IPFS. Use -r to add directories (recursively).
  
  FAST PROVIDE OPTIMIZATION:
  
  When you add content to IPFS, the sweep provider queues it for efficient
  DHT provides over time. While this is resource-efficient, other peers won't
  find your content immediately after 'ipfs add' completes.
  
  To make sharing faster, 'ipfs add' does an immediate provide of the root CID
  to the DHT in addition to the regular queue. This complements the sweep provider:
  fast-provide handles the urgent case (root CIDs that users share and reference),
  while the sweep provider efficiently provides all blocks according to
  Provide.Strategy over time.
  
  By default, this immediate provide runs in the background without blocking
  the command. If you need certainty that the root CID is discoverable before
  the command returns (e.g., sharing a link immediately), use --fast-provide-wait
  to wait for the provide to complete. Use --fast-provide-root=false to skip
  this optimization.
  
  This works best with the sweep provider and accelerated DHT client.
  Automatically skipped when DHT is not available.

  For more information about each command, use:
  'ipfs add <subcmd> --help'
484 - ipfs add --to-files /mfspath succeeds Success 0.080
System.out »
expecting success: 
    mkdir -p mountdir && echo "Hello MFS!" > mountdir/mfs.txt &&
    ipfs add mountdir/mfs.txt --to-files /ipfs-add-to-files >actual
  
ok 484 - ipfs add --to-files /mfspath succeeds
System.err »
 11 B / 11 B  100.00%

 11 B / 11 B  100.00%
485 - ipfs add --to-files output looks good Success 0.007
System.out »
expecting success: 
    HASH_MFS="QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr" &&
    echo "added $HASH_MFS mfs.txt" >expected &&
    test_cmp expected actual
  
ok 485 - ipfs add --to-files output looks good
486 - ipfs files read succeeds Success 0.132
System.out »
expecting success: 
    ipfs files read /ipfs-add-to-files >actual &&
    ipfs files rm /ipfs-add-to-files
  
ok 486 - ipfs files read succeeds
487 - ipfs cat output looks good Success 0.005
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    test_cmp expected actual
  
ok 487 - ipfs cat output looks good
488 - ipfs add --to-files requires argument Success 0.055
System.out »
expecting success: 
    test_expect_code 1 ipfs add mountdir/mfs.txt --to-files >actual 2>&1 &&
    test_should_contain "Error: missing argument for option \"to-files\"" actual
  
ok 488 - ipfs add --to-files requires argument
489 - ipfs add --to-files / (MFS root) works Success 0.191
System.out »
expecting success: 
    echo "Hello MFS!" >expected &&
    ipfs add mountdir/mfs.txt --to-files / &&
    ipfs files read /mfs.txt >actual &&
    test_cmp expected actual &&
    ipfs files rm /mfs.txt &&
    rm mountdir/mfs.txt
  
added QmVT8bL3sGBA2TwvX8JPhrv5CYZL8LLLfW7mxkUjPZsgBr mfs.txt
ok 489 - ipfs add --to-files / (MFS root) works
System.err »
 11 B / ? 

 11 B / 11 B  100.00%
490 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails Success 0.144
System.out »
expecting success: 
    mkdir -p test &&
    echo "file1" > test/mfs1.txt &&
    echo "file2" > test/mfs2.txt &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfspath0 >actual 2>&1 &&
    test_should_contain "MFS destination is a file: only one entry can be copied to \"/mfspath0\"" actual &&
    ipfs files rm -r --force /mfspath0
  
ok 490 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
491 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails Success 0.245
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsfile1\"" actual &&
    ipfs files rm -r --force /mfsfile1
  
ok 491 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
492 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails Success 0.183
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir1 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsdir1 >actual 2>&1 &&
    test_should_contain "Error: to-files: cannot put node in path \"/mfsdir1\"" actual &&
    ipfs files rm -r --force /mfsdir1
  
ok 492 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
493 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds Success 0.297
System.out »
expecting success: 
    ipfs files mkdir -p /mfsdir2 &&
    test_expect_code 0 ipfs add --cid-version 1 test/mfs1.txt test/mfs2.txt --to-files /mfsdir2/ > actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby mfs2.txt" actual &&
    test_should_not_contain "Error" actual &&
    ipfs files ls /mfsdir2/ > lsout &&
    test_should_contain "mfs1.txt" lsout &&
    test_should_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfsdir2
  
ok 493 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
494 - ipfs add file1 file2 --to-files /mfsfile2/ (with trailing slash + with preexisting file) fails Success 0.172
System.out »
expecting success: 
    echo test | ipfs files write --create /mfsfile2 &&
    test_expect_code 1 ipfs add test/mfs1.txt test/mfs2.txt --to-files /mfsfile2/ >actual 2>&1 &&
    test_should_contain "Error: to-files: MFS destination \"/mfsfile2/\" is not a directory" actual &&
    ipfs files rm -r --force /mfsfile2
  
ok 494 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
495 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists Success 0.197
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir3 &&
    test_expect_code 1 ipfs add -r test --to-files /mfs/subdir3 >actual 2>&1 &&
    test_should_contain "cannot put node in path \"/mfs/subdir3\": directory already has entry by that name" actual &&
    ipfs files rm -r --force /mfs
  
ok 495 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
496 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash) Success 0.261
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir4 &&
    ipfs add --cid-version 1 -r test --to-files /mfs/subdir4/ >actual 2>&1 &&
    test_should_contain "added bafkreihm3rktn5z33luic3youqdsn326toaq3ekesmdvsa53sbrd3f5r3a test/mfs1.txt" actual &&
    test_should_contain "added bafkreidh5zkhr2vnwa2luwmuj24xo6l3jhfgvkgtk5cyp43oxs7owzpxby test/mfs2.txt" actual &&
    test_should_contain "added bafybeic7xwqwovt4g4bax6d3udp6222i63vj2rblpbim7uy2uw4a5gahha test" actual &&
    test_should_not_contain "Error" actual
    ipfs files ls /mfs/subdir4/ > lsout &&
    test_should_contain "test" lsout &&
    test_should_not_contain "mfs1.txt" lsout &&
    test_should_not_contain "mfs2.txt" lsout &&
    ipfs files rm -r --force /mfs
  
ok 496 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
497 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive) Success 0.185
System.out »
expecting success: 
    ipfs files mkdir -p /mfs/subdir5 &&
    test_expect_code 1 ipfs add -r -w test --to-files /mfs/subdir5/ >actual 2>&1 &&
    test_should_contain "Error" actual &&
    ipfs files rm -r --force /mfs
  
ok 497 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
498 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 498 - 'ipfs daemon' is still running
499 - 'ipfs daemon' can be killed Success 0.272
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 499 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 # skip 'ipfs mount' succeeds (missing FUSE)
ok 11 # skip 'ipfs mount' output looks good (missing FUSE)
ok 12 - 'ipfs add --help' succeeds
ok 13 - 'ipfs add --help' output looks good
ok 14 - 'ipfs help add' succeeds
ok 15 - 'ipfs help add' output looks good
ok 16 - 'ipfs cat --help' succeeds
ok 17 - 'ipfs cat --help' output looks good
ok 18 - 'ipfs help cat' succeeds
ok 19 - 'ipfs help cat' output looks good
ok 20 - ipfs add --help works
ok 21 - stdin reading message doesn't show up
ok 22 - ipfs help add works
ok 23 - stdin reading message doesn't show up
ok 24 - ipfs add succeeds
ok 25 - ipfs add output looks good
ok 26 - ipfs add --only-hash succeeds
ok 27 - ipfs add --only-hash output looks good
ok 28 - ipfs cat succeeds
ok 29 - ipfs cat output looks good
ok 30 - ipfs cat with offset succeeds
ok 31 - ipfs cat from offset output looks good
ok 32 - ipfs cat multiple hashes with offset succeeds
ok 33 - ipfs cat from offset output looks good
ok 34 - ipfs cat multiple hashes with offset succeeds
ok 35 - ipfs cat from offset output looks good
ok 36 - ipfs cat from negative offset should fail
ok 37 - ipfs cat with length succeeds
ok 38 - ipfs cat with length output looks good
ok 39 - ipfs cat multiple hashes with offset and length succeeds
ok 40 - ipfs cat multiple hashes with offset and length looks good
ok 41 - ipfs cat with exact length succeeds
ok 42 - ipfs cat with exact length looks good
ok 43 - ipfs cat with 0 length succeeds
ok 44 - ipfs cat with 0 length looks good
ok 45 - ipfs cat with oversized length succeeds
ok 46 - ipfs cat with oversized length looks good
ok 47 - ipfs cat with negative length should fail
ok 48 - ipfs cat /ipfs/file succeeds
ok 49 - output looks good
ok 50 - ipfs add -t succeeds
ok 51 - ipfs add -t output looks good
ok 52 - ipfs add --chunker size-32 succeeds
ok 53 - ipfs add --chunker size-32 output looks good
ok 54 - ipfs add --chunker size-64 succeeds
ok 55 - ipfs add --chunker size-64 output looks good
ok 56 - ipfs add --chunker=size-0 failed
ok 57 - ipfs add --chunker rabin-36-512-1024 succeeds
ok 58 - ipfs add --chunker rabin-36-512-1024 output looks good
ok 59 - ipfs add --chunker rabin-12-512-1024 failed
ok 60 - ipfs add --chunker buzhash succeeds
ok 61 - ipfs add --chunker buzhash output looks good
ok 62 - ipfs add on hidden file succeeds
ok 63 - ipfs add on hidden file output looks good
ok 64 - add zero length file
ok 65 - zero length file has correct hash
ok 66 - cat zero length file
ok 67 - make sure it looks good
ok 68 - ipfs add --stdin-name
ok 69 - ipfs add --stdin-name -w
ok 70 - ipfs cat with stdin-name
ok 71 - ipfs add -r .
ok 72 - ipfs add -r . output looks good
ok 73 - ipfs add -r ./
ok 74 - ipfs add -r ./ output looks good
ok 75 - ipfs add --cid-base=base32 succeeds
ok 76 - ipfs add --cid-base=base32 output looks good
ok 77 - ipfs add --cid-base=base32 --only-hash succeeds
ok 78 - ipfs add --cid-base=base32 --only-hash output looks good
ok 79 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
ok 80 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
ok 81 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
ok 82 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
ok 83 - ipfs cat with base32 hash succeeds
ok 84 - ipfs cat with base32 hash output looks good
ok 85 - ipfs cat using CIDv0 hash succeeds
ok 86 - ipfs cat using CIDv0 hash looks good
ok 87 - ipfs add with multiple files succeeds
ok 88 - ipfs add with multiple files output looks good
ok 89 - ipfs add with multiple files of same name and import dir succeeds
ok 90 - ipfs add with multiple files of same name output looks good
ok 91 - ipfs add with multiple files of same name but different dirs fails
ok 92 - ipfs add --to-files /mfspath succeeds
ok 93 - ipfs add --to-files output looks good
ok 94 - ipfs files read succeeds
ok 95 - ipfs cat output looks good
ok 96 - ipfs add --to-files requires argument
ok 97 - ipfs add --to-files / (MFS root) works
ok 98 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
ok 99 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
ok 100 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
ok 101 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
ok 102 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
ok 103 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
ok 104 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
ok 105 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
ok 106 - ipfs cat succeeds with stdin opened (issue #1141)
ok 107 - ipfs cat output looks good
ok 108 - ipfs cat accept hash from built input
ok 109 - ipfs cat output looks good
ok 110 # skip cat ipfs/stuff succeeds (missing FUSE)
ok 111 # skip cat ipfs/stuff looks good (missing FUSE)
ok 112 - 'ipfs add -q' succeeds
ok 113 - 'ipfs add -q' output looks good
ok 114 - 'ipfs add -q' with stdin input succeeds
ok 115 - 'ipfs add -q' output looks good
ok 116 - 'ipfs cat' succeeds
ok 117 - ipfs cat output looks good
ok 118 - 'ipfs add' with stdin input succeeds
ok 119 - 'ipfs add' output looks good
ok 120 - 'ipfs cat' with built input succeeds
ok 121 - ipfs cat with built input output looks good
ok 122 - 'ipfs add -r ' succeeds
ok 123 - 'ipfs add -r ' output looks good
ok 124 - ipfs cat accept many hashes from built input
ok 125 - ipfs cat output looks good
ok 126 - ipfs cat accept many hashes as args
ok 127 - ipfs cat output looks good
ok 128 - ipfs cat with both arg and stdin
ok 129 - ipfs cat output looks good
ok 130 - ipfs cat with two args and stdin
ok 131 - ipfs cat output looks good
ok 132 - ipfs add --quieter succeeds
ok 133 - ipfs add --quieter returns only one correct hash
ok 134 - cleanup
ok 135 - 'ipfs add -r --raw-leaves' succeeds
ok 136 - 'ipfs add -r --raw-leaves' output looks good
ok 137 - ipfs cat accept many hashes from built input
ok 138 - ipfs cat output looks good
ok 139 - ipfs cat accept many hashes as args
ok 140 - ipfs cat output looks good
ok 141 - ipfs cat with both arg and stdin
ok 142 - ipfs cat output looks good
ok 143 - ipfs cat with two args and stdin
ok 144 - ipfs cat output looks good
ok 145 - ipfs add --quieter succeeds
ok 146 - ipfs add --quieter returns only one correct hash
ok 147 - cleanup
ok 148 - 'ipfs add -r --cid-version=1' succeeds
ok 149 - 'ipfs add -r --cid-version=1' output looks good
ok 150 - ipfs cat accept many hashes from built input
ok 151 - ipfs cat output looks good
ok 152 - ipfs cat accept many hashes as args
ok 153 - ipfs cat output looks good
ok 154 - ipfs cat with both arg and stdin
ok 155 - ipfs cat output looks good
ok 156 - ipfs cat with two args and stdin
ok 157 - ipfs cat output looks good
ok 158 - ipfs add --quieter succeeds
ok 159 - ipfs add --quieter returns only one correct hash
ok 160 - cleanup
ok 161 - 'ipfs add -r --cid-version=1 --raw-leaves=false' succeeds
ok 162 - 'ipfs add -r --cid-version=1 --raw-leaves=false' output looks good
ok 163 - ipfs cat accept many hashes from built input
ok 164 - ipfs cat output looks good
ok 165 - ipfs cat accept many hashes as args
ok 166 - ipfs cat output looks good
ok 167 - ipfs cat with both arg and stdin
ok 168 - ipfs cat output looks good
ok 169 - ipfs cat with two args and stdin
ok 170 - ipfs cat output looks good
ok 171 - ipfs add --quieter succeeds
ok 172 - ipfs add --quieter returns only one correct hash
ok 173 - cleanup
ok 174 - 'ipfs add -r --hash=blake2b-256' succeeds
ok 175 - 'ipfs add -r --hash=blake2b-256' output looks good
ok 176 - ipfs cat accept many hashes from built input
ok 177 - ipfs cat output looks good
ok 178 - ipfs cat accept many hashes as args
ok 179 - ipfs cat output looks good
ok 180 - ipfs cat with both arg and stdin
ok 181 - ipfs cat output looks good
ok 182 - ipfs cat with two args and stdin
ok 183 - ipfs cat output looks good
ok 184 - ipfs add --quieter succeeds
ok 185 - ipfs add --quieter returns only one correct hash
ok 186 - cleanup
ok 187 - 'ipfs add -rn' succeeds
ok 188 - 'ipfs add -rn' output looks good
ok 189 - random-data is installed
ok 190 - generate 5MB file using random-data
ok 191 - sha1 of the file looks ok
ok 192 - 'ipfs add  bigfile' succeeds
ok 193 - 'ipfs add bigfile' output looks good
ok 194 - 'ipfs cat' succeeds
ok 195 - 'ipfs cat' output looks good
ok 196 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 197 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 198 - remove hash
ok 199 - get base32 version of CID
ok 200 - ipfs add --cid-base=base32 bigfile' succeeds
ok 201 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 202 - 'ipfs cat bafybeifzldgpohqtv2vqnrkgd557kah5uv64ufhkakfwkfjtln6cii66ti' succeeds
ok 203 - generate 5MB file using random-data
ok 204 - sha1 of the file looks ok
ok 205 - 'ipfs add --raw-leaves bigfile' succeeds
ok 206 - 'ipfs add bigfile' output looks good
ok 207 - 'ipfs cat' succeeds
ok 208 - 'ipfs cat' output looks good
ok 209 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 210 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 211 - remove hash
ok 212 - get base32 version of CID
ok 213 - ipfs add --cid-base=base32 bigfile' succeeds
ok 214 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 215 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds
ok 216 - generate 5MB file using random-data
ok 217 - sha1 of the file looks ok
ok 218 - 'ipfs add --cid-version=1 bigfile' succeeds
ok 219 - 'ipfs add bigfile' output looks good
ok 220 - 'ipfs cat' succeeds
ok 221 - 'ipfs cat' output looks good
ok 222 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 223 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 224 - remove hash
ok 225 - get base32 version of CID
ok 226 - ipfs add --cid-base=base32 bigfile' succeeds
ok 227 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 228 - 'ipfs cat bafybeifwdkm32fmukqwh3jofm6ma76bcqvn6opxstsnzmya7utboi4cb2m' succeeds
ok 229 - generate 5MB file using random-data
ok 230 - sha1 of the file looks ok
ok 231 - 'ipfs add --cid-version=1 --raw-leaves=false bigfile' succeeds
ok 232 - 'ipfs add bigfile' output looks good
ok 233 - 'ipfs cat' succeeds
ok 234 - 'ipfs cat' output looks good
ok 235 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 236 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 237 - remove hash
ok 238 - get base32 version of CID
ok 239 - ipfs add --cid-base=base32 bigfile' succeeds
ok 240 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 241 - 'ipfs cat bafybeifq4unep5w4agr3nlynxidj2rymf6dzu6bf4ieqqildkboe5mdmne' succeeds
ok 242 - generate 5MB file using random-data
ok 243 - sha1 of the file looks ok
ok 244 - 'ipfs add --hash=blake2b-256 bigfile' succeeds
ok 245 - 'ipfs add bigfile' output looks good
ok 246 - 'ipfs cat' succeeds
ok 247 - 'ipfs cat' output looks good
ok 248 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 249 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 250 - remove hash
ok 251 - get base32 version of CID
ok 252 - ipfs add --cid-base=base32 bigfile' succeeds
ok 253 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 254 - 'ipfs cat bafykbzacebxcnlql4oc3mtscqn32aumqkqxxv3wt7dkyrphgh6lc2gckiq6bw' succeeds
ok 255 - generate 5MB file using random-data
ok 256 - sha1 of the file looks ok
ok 257 - 'ipfs add --hash=blake2b-256 --raw-leaves=false bigfile' succeeds
ok 258 - 'ipfs add bigfile' output looks good
ok 259 - 'ipfs cat' succeeds
ok 260 - 'ipfs cat' output looks good
ok 261 # skip cat ipfs/bigfile succeeds (missing FUSE)
ok 262 # skip cat ipfs/bigfile looks good (missing FUSE)
ok 263 - remove hash
ok 264 - get base32 version of CID
ok 265 - ipfs add --cid-base=base32 bigfile' succeeds
ok 266 - 'ipfs add bigfile --cid-base=base32' output looks good
ok 267 - 'ipfs cat bafykbzacearibnoamkfmcagpfgk2sbgx65qftnsrh4ttd3g7ghooasfnyavme' succeeds
ok 268 - generate 100MB file using random-data
ok 269 - sha1 of the file looks ok
ok 270 - ipfs add  bigfile succeeds
ok 271 - ipfs add bigfile output looks good
ok 272 - ipfs cat succeeds
ok 273 - ipfs cat output looks good
ok 274 - ipfs cat output hashed looks good
ok 275 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
ok 276 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
ok 277 - generate 100MB file using random-data
ok 278 - sha1 of the file looks ok
ok 279 - ipfs add --cid-version=1 bigfile succeeds
ok 280 - ipfs add bigfile output looks good
ok 281 - ipfs cat succeeds
ok 282 - ipfs cat output looks good
ok 283 - ipfs cat output hashed looks good
ok 284 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
ok 285 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
ok 286 - generate 100MB file using random-data
ok 287 - sha1 of the file looks ok
ok 288 - ipfs add --hash=blake2b-256 bigfile succeeds
ok 289 - ipfs add bigfile output looks good
ok 290 - ipfs cat succeeds
ok 291 - ipfs cat output looks good
ok 292 - ipfs cat output hashed looks good
ok 293 # skip cat ipfs/bigfile succeeds (missing FUSE of FUSE,EXPENSIVE)
ok 294 # skip cat ipfs/bigfile looks good (missing FUSE of FUSE,EXPENSIVE)
ok 295 - Adding named pipes explicitly works
ok 296 - useful error message when recursively adding a named pipe
ok 297 - ipfs add -r adds directory content when ./ is symlink
ok 298 - add a small file with raw-leaves
ok 299 - cat that small file
ok 300 - make sure it looks good
ok 301 - add zero length file with raw-leaves
ok 302 - zero length file has correct hash
ok 303 - cat zero length file
ok 304 - make sure it looks good
ok 305 - ipfs add --cid-version=9 fails
ok 306 - 'ipfs daemon' is still running
ok 307 - 'ipfs daemon' can be killed
ok 308 - ipfs add --help works
ok 309 - stdin reading message doesn't show up
ok 310 - ipfs help add works
ok 311 - stdin reading message doesn't show up
ok 312 - ipfs add succeeds
ok 313 - ipfs add output looks good
ok 314 - ipfs add --only-hash succeeds
ok 315 - ipfs add --only-hash output looks good
ok 316 - ipfs cat succeeds
ok 317 - ipfs cat output looks good
ok 318 - ipfs cat with offset succeeds
ok 319 - ipfs cat from offset output looks good
ok 320 - ipfs cat multiple hashes with offset succeeds
ok 321 - ipfs cat from offset output looks good
ok 322 - ipfs cat multiple hashes with offset succeeds
ok 323 - ipfs cat from offset output looks good
ok 324 - ipfs cat from negative offset should fail
ok 325 - ipfs cat with length succeeds
ok 326 - ipfs cat with length output looks good
ok 327 - ipfs cat multiple hashes with offset and length succeeds
ok 328 - ipfs cat multiple hashes with offset and length looks good
ok 329 - ipfs cat with exact length succeeds
ok 330 - ipfs cat with exact length looks good
ok 331 - ipfs cat with 0 length succeeds
ok 332 - ipfs cat with 0 length looks good
ok 333 - ipfs cat with oversized length succeeds
ok 334 - ipfs cat with oversized length looks good
ok 335 - ipfs cat with negative length should fail
ok 336 - ipfs cat /ipfs/file succeeds
ok 337 - output looks good
ok 338 - ipfs add -t succeeds
ok 339 - ipfs add -t output looks good
ok 340 - ipfs add --chunker size-32 succeeds
ok 341 - ipfs add --chunker size-32 output looks good
ok 342 - ipfs add --chunker size-64 succeeds
ok 343 - ipfs add --chunker size-64 output looks good
ok 344 - ipfs add --chunker=size-0 failed
ok 345 - ipfs add --chunker rabin-36-512-1024 succeeds
ok 346 - ipfs add --chunker rabin-36-512-1024 output looks good
ok 347 - ipfs add --chunker rabin-12-512-1024 failed
ok 348 - ipfs add --chunker buzhash succeeds
ok 349 - ipfs add --chunker buzhash output looks good
ok 350 - ipfs add on hidden file succeeds
ok 351 - ipfs add on hidden file output looks good
ok 352 - add zero length file
ok 353 - zero length file has correct hash
ok 354 - cat zero length file
ok 355 - make sure it looks good
ok 356 - ipfs add --stdin-name
ok 357 - ipfs add --stdin-name -w
ok 358 - ipfs cat with stdin-name
ok 359 - ipfs add -r .
ok 360 - ipfs add -r . output looks good
ok 361 - ipfs add -r ./
ok 362 - ipfs add -r ./ output looks good
ok 363 - ipfs add --cid-base=base32 succeeds
ok 364 - ipfs add --cid-base=base32 output looks good
ok 365 - ipfs add --cid-base=base32 --only-hash succeeds
ok 366 - ipfs add --cid-base=base32 --only-hash output looks good
ok 367 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
ok 368 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
ok 369 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
ok 370 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
ok 371 - ipfs cat with base32 hash succeeds
ok 372 - ipfs cat with base32 hash output looks good
ok 373 - ipfs cat using CIDv0 hash succeeds
ok 374 - ipfs cat using CIDv0 hash looks good
ok 375 - ipfs add with multiple files succeeds
ok 376 - ipfs add with multiple files output looks good
ok 377 - ipfs add with multiple files of same name and import dir succeeds
ok 378 - ipfs add with multiple files of same name output looks good
ok 379 - ipfs add with multiple files of same name but different dirs fails
ok 380 - ipfs add --to-files /mfspath succeeds
ok 381 - ipfs add --to-files output looks good
ok 382 - ipfs files read succeeds
ok 383 - ipfs cat output looks good
ok 384 - ipfs add --to-files requires argument
ok 385 - ipfs add --to-files / (MFS root) works
ok 386 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
ok 387 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
ok 388 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
ok 389 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
ok 390 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
ok 391 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
ok 392 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
ok 393 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
ok 394 - add a small file with raw-leaves
ok 395 - cat that small file
ok 396 - make sure it looks good
ok 397 - add zero length file with raw-leaves
ok 398 - zero length file has correct hash
ok 399 - cat zero length file
ok 400 - make sure it looks good
ok 401 - ipfs add --only-hash succeeds
ok 402 - create and hash zero length file
ok 403 - create symlink and add with dereferenced arguments
ok 404 - ipfs cat file fails
ok 405 - Adding named pipes explicitly works
ok 406 - useful error message when recursively adding a named pipe
ok 407 - ipfs add -r adds directory content when ./ is symlink
ok 408 - 'ipfs daemon' succeeds
ok 409 - api file shows up
ok 410 - set up address variables
ok 411 - 'ipfs daemon' is ready
ok 412 - ipfs add --help works
ok 413 - stdin reading message doesn't show up
ok 414 - ipfs help add works
ok 415 - stdin reading message doesn't show up
ok 416 - ipfs add succeeds
ok 417 - ipfs add output looks good
ok 418 - ipfs add --only-hash succeeds
ok 419 - ipfs add --only-hash output looks good
ok 420 - ipfs cat succeeds
ok 421 - ipfs cat output looks good
ok 422 - ipfs cat with offset succeeds
ok 423 - ipfs cat from offset output looks good
ok 424 - ipfs cat multiple hashes with offset succeeds
ok 425 - ipfs cat from offset output looks good
ok 426 - ipfs cat multiple hashes with offset succeeds
ok 427 - ipfs cat from offset output looks good
ok 428 - ipfs cat from negative offset should fail
ok 429 - ipfs cat with length succeeds
ok 430 - ipfs cat with length output looks good
ok 431 - ipfs cat multiple hashes with offset and length succeeds
ok 432 - ipfs cat multiple hashes with offset and length looks good
ok 433 - ipfs cat with exact length succeeds
ok 434 - ipfs cat with exact length looks good
ok 435 - ipfs cat with 0 length succeeds
ok 436 - ipfs cat with 0 length looks good
ok 437 - ipfs cat with oversized length succeeds
ok 438 - ipfs cat with oversized length looks good
ok 439 - ipfs cat with negative length should fail
ok 440 - ipfs cat /ipfs/file succeeds
ok 441 - output looks good
ok 442 - ipfs add -t succeeds
ok 443 - ipfs add -t output looks good
ok 444 - ipfs add --chunker size-32 succeeds
ok 445 - ipfs add --chunker size-32 output looks good
ok 446 - ipfs add --chunker size-64 succeeds
ok 447 - ipfs add --chunker size-64 output looks good
ok 448 - ipfs add --chunker=size-0 failed
ok 449 - ipfs add --chunker rabin-36-512-1024 succeeds
ok 450 - ipfs add --chunker rabin-36-512-1024 output looks good
ok 451 - ipfs add --chunker rabin-12-512-1024 failed
ok 452 - ipfs add --chunker buzhash succeeds
ok 453 - ipfs add --chunker buzhash output looks good
ok 454 - ipfs add on hidden file succeeds
ok 455 - ipfs add on hidden file output looks good
ok 456 - add zero length file
ok 457 - zero length file has correct hash
ok 458 - cat zero length file
ok 459 - make sure it looks good
ok 460 - ipfs add --stdin-name
ok 461 - ipfs add --stdin-name -w
ok 462 - ipfs cat with stdin-name
ok 463 - ipfs add -r .
ok 464 - ipfs add -r . output looks good
ok 465 - ipfs add -r ./
ok 466 - ipfs add -r ./ output looks good
ok 467 - ipfs add --cid-base=base32 succeeds
ok 468 - ipfs add --cid-base=base32 output looks good
ok 469 - ipfs add --cid-base=base32 --only-hash succeeds
ok 470 - ipfs add --cid-base=base32 --only-hash output looks good
ok 471 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false succeeds
ok 472 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false output looks good
ok 473 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash succeeds
ok 474 - ipfs add --cid-base=base32 --upgrade-cidv0-in-output=false --only-hash output looks good
ok 475 - ipfs cat with base32 hash succeeds
ok 476 - ipfs cat with base32 hash output looks good
ok 477 - ipfs cat using CIDv0 hash succeeds
ok 478 - ipfs cat using CIDv0 hash looks good
ok 479 - ipfs add with multiple files succeeds
ok 480 - ipfs add with multiple files output looks good
ok 481 - ipfs add with multiple files of same name and import dir succeeds
ok 482 - ipfs add with multiple files of same name output looks good
ok 483 - ipfs add with multiple files of same name but different dirs fails
ok 484 - ipfs add --to-files /mfspath succeeds
ok 485 - ipfs add --to-files output looks good
ok 486 - ipfs files read succeeds
ok 487 - ipfs cat output looks good
ok 488 - ipfs add --to-files requires argument
ok 489 - ipfs add --to-files / (MFS root) works
ok 490 - ipfs add file1 file2 --to-files /mfspath0 (without trailing slash) fails
ok 491 - ipfs add file1 file2 --to-files /mfsfile1 (without trailing slash + with preexisting file) fails
ok 492 - ipfs add file1 file2 --to-files /mfsdir1 (without trailing slash + with preexisting dir) fails
ok 493 - ipfs add file1 file2 --to-files /mfsdir2/ (with trailing slash) succeeds
ok 494 - ipfs add file1 file2 --to-files /mfsfile2/ (with  trailing slash + with preexisting file) fails
ok 495 - ipfs add with --to-files /mfs/subdir3 fails because /mfs/subdir3 exists
ok 496 - ipfs add -r dir --to-files /mfs/subdir4/ succeeds (because of trailing slash)
ok 497 - ipfs add -r -w dir --to-files /mfs/subdir5/ errors (-w and --to-files are exclusive)
ok 498 - 'ipfs daemon' is still running
ok 499 - 'ipfs daemon' can be killed

Back to top

TestCase t0042-add-skip

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.107
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.225
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.595
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0042-add-skip.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0042-add-skip.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0042-add-skip.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs add -r' with hidden file succeeds Success 0.116
System.out »
expecting success: 
    mkdir -p mountdir/planets/.asteroids &&
    echo "mars.txt" >mountdir/planets/.gitignore &&
    echo "Hello Mars" >mountdir/planets/mars.txt &&
    echo "Hello Venus" >mountdir/planets/venus.txt &&
    echo "Hello Pluto" >mountdir/planets/.pluto.txt &&
    echo "Hello Charon" >mountdir/planets/.charon.txt &&
    echo "Hello Ceres" >mountdir/planets/.asteroids/ceres.txt &&
    echo "Hello Pallas" >mountdir/planets/.asteroids/pallas.txt &&
    ipfs add -r mountdir/planets >actual
  
ok 4 - 'ipfs add -r' with hidden file succeeds
System.err »
 11 B / 23 B   47.83%

 11 B / 23 B   47.83%
 23 B / 23 B  100.00%

 23 B / 23 B  100.00%

 23 B / 23 B  100.00%
5 - 'ipfs add -r' did not include . files Success 0.008
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmZy3khu7qf696i5HtkgL2NotsCZ8wzvNZJ1eUdA5n8KaV planets/mars.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added QmR8nD1Vzk5twWVC6oShTHvv7mMYkVh6dApCByBJyV2oj3 planets
EOF
    test_cmp expected actual
  
ok 5 - 'ipfs add -r' did not include . files
6 - 'ipfs add -r --hidden' succeeds Success 0.146
System.out »
expecting success: 
    ipfs add -r --hidden mountdir/planets >actual
  
ok 6 - 'ipfs add -r --hidden' succeeds
System.err »
 12 B / 82 B   14.63%

 12 B / 82 B   14.63%
 25 B / 82 B   30.49%

 25 B / 82 B   30.49%
 38 B / 82 B   46.34%

 38 B / 82 B   46.34%
 47 B / 82 B   57.32%

 47 B / 82 B   57.32%
 59 B / 82 B   71.95%

 59 B / 82 B   71.95%
 70 B / 82 B   85.37%

 70 B / 82 B   85.37%
 82 B / 82 B  100.00%

 82 B / 82 B  100.00%

 82 B / 82 B  100.00%

 82 B / 82 B  100.00%
7 - 'ipfs add -r --hidden' did include . files Success 0.012
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmcAREBcjgnUpKfyFmUGnfajA1NQS5ydqRp7WfqZ6JF8Dx planets/.asteroids/ceres.txt
added QmZ5eaLybJ5GUZBNwy24AA9EEDTDpA4B8qXnuN3cGxu2uF planets/.asteroids/pallas.txt
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmZy3khu7qf696i5HtkgL2NotsCZ8wzvNZJ1eUdA5n8KaV planets/mars.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added Qmf6rbs5GF85anDuoxpSAdtuZPM9D2Yt3HngzjUVSQ7kDV planets/.asteroids
added QmczhHaXyb3bc9APMxe4MXbr87V5YDLKLaw3DZX3fK7HrK planets
EOF
    test_cmp expected actual
  
ok 7 - 'ipfs add -r --hidden' did include . files
8 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds Success 0.125
System.out »
expecting success: 
    (cd mountdir/planets && ipfs add -r --ignore-rules-path=.gitignore --hidden .) > actual
  
ok 8 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds
System.err »
 12 B / 71 B   16.90%

 12 B / 71 B   16.90%
 25 B / 71 B   35.21%

 25 B / 71 B   35.21%
 38 B / 71 B   53.52%

 38 B / 71 B   53.52%
 47 B / 71 B   66.20%

 47 B / 71 B   66.20%
 59 B / 71 B   83.10%

 59 B / 71 B   83.10%
 71 B / 71 B  100.00%

 71 B / 71 B  100.00%

 71 B / 71 B  100.00%

 71 B / 71 B  100.00%
9 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file Success 0.008
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmcAREBcjgnUpKfyFmUGnfajA1NQS5ydqRp7WfqZ6JF8Dx planets/.asteroids/ceres.txt
added QmZ5eaLybJ5GUZBNwy24AA9EEDTDpA4B8qXnuN3cGxu2uF planets/.asteroids/pallas.txt
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added Qmf6rbs5GF85anDuoxpSAdtuZPM9D2Yt3HngzjUVSQ7kDV planets/.asteroids
added QmaRsiaCYvc65RqHVAcv2tqyjZgQYgvaNqW1tQGsjfy4N5 planets
EOF
    test_cmp expected actual
  
ok 9 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file
10 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds Success 0.147
System.out »
expecting success: 
    (cd mountdir/planets && ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden .) > actual
  
ok 10 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds
System.err »
 13 B / 34 B   38.24%

 13 B / 34 B   38.24%
 22 B / 34 B   64.71%

 22 B / 34 B   64.71%
 34 B / 34 B  100.00%

 34 B / 34 B  100.00%

 34 B / 34 B  100.00%
11 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files Success 0.015
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmemuMahjSh7eYLY3hbz2q8sqMPnbQzBQeUdosqNiWChE6 planets
EOF
    test_cmp expected actual
  
ok 11 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files
12 - 'ipfs add' includes hidden files given explicitly even without --hidden Success 0.127
System.out »
expecting success: 
    mkdir -p mountdir/dotfiles &&
    echo "set nocompatible" > mountdir/dotfiles/.vimrc
    cat >expected <<-\EOF &&
added QmT4uMRDCN7EMpFeqwvKkboszbqeW1kWVGrBxBuCGqZcQc .vimrc
EOF
    ipfs add mountdir/dotfiles/.vimrc >actual
    cat actual
    test_cmp expected actual
  
added QmT4uMRDCN7EMpFeqwvKkboszbqeW1kWVGrBxBuCGqZcQc .vimrc
ok 12 - 'ipfs add' includes hidden files given explicitly even without --hidden
System.err »
 17 B / 17 B  100.00%

 17 B / 17 B  100.00%
13 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing Success 0.131
System.out »
expecting success: 
    test_expect_code 1 ipfs add --hash poseidon-bls12_381-a2-fc1 --raw-leaves=false -r mountdir/planets
  
ok 13 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing
System.err »
 11 B / 23 B   47.83%Error: unknown multihash code 46081 (0xb401): no such hash registered
14 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 14 - 'ipfs daemon' succeeds
15 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 15 - api file shows up
16 - set up address variables Success 0.027
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 16 - set up address variables
17 - get swarm addresses Success 0.073
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 17 - get swarm addresses
18 - set swarm address vars Success 0.015
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 18 - set swarm address vars
19 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 19 - 'ipfs daemon' is ready
20 - 'ipfs add -r' with hidden file succeeds Success 0.128
System.out »
expecting success: 
    mkdir -p mountdir/planets/.asteroids &&
    echo "mars.txt" >mountdir/planets/.gitignore &&
    echo "Hello Mars" >mountdir/planets/mars.txt &&
    echo "Hello Venus" >mountdir/planets/venus.txt &&
    echo "Hello Pluto" >mountdir/planets/.pluto.txt &&
    echo "Hello Charon" >mountdir/planets/.charon.txt &&
    echo "Hello Ceres" >mountdir/planets/.asteroids/ceres.txt &&
    echo "Hello Pallas" >mountdir/planets/.asteroids/pallas.txt &&
    ipfs add -r mountdir/planets >actual
  
ok 20 - 'ipfs add -r' with hidden file succeeds
System.err »
 11 B / ? 

 11 B / ? 
 23 B / ? 

 23 B / 23 B  100.00%

 23 B / 23 B  100.00%
21 - 'ipfs add -r' did not include . files Success 0.010
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmZy3khu7qf696i5HtkgL2NotsCZ8wzvNZJ1eUdA5n8KaV planets/mars.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added QmR8nD1Vzk5twWVC6oShTHvv7mMYkVh6dApCByBJyV2oj3 planets
EOF
    test_cmp expected actual
  
ok 21 - 'ipfs add -r' did not include . files
22 - 'ipfs add -r --hidden' succeeds Success 0.117
System.out »
expecting success: 
    ipfs add -r --hidden mountdir/planets >actual
  
ok 22 - 'ipfs add -r --hidden' succeeds
System.err »
 12 B / ? 

 12 B / ? 
 25 B / ? 

 25 B / ? 
 38 B / ? 

 38 B / 82 B   46.34%
 47 B / 82 B   57.32%

 47 B / 82 B   57.32%
 59 B / 82 B   71.95%

 59 B / 82 B   71.95%
 70 B / 82 B   85.37%

 70 B / 82 B   85.37%
 82 B / 82 B  100.00%

 82 B / 82 B  100.00%

 82 B / 82 B  100.00%

 82 B / 82 B  100.00%
23 - 'ipfs add -r --hidden' did include . files Success 0.009
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmcAREBcjgnUpKfyFmUGnfajA1NQS5ydqRp7WfqZ6JF8Dx planets/.asteroids/ceres.txt
added QmZ5eaLybJ5GUZBNwy24AA9EEDTDpA4B8qXnuN3cGxu2uF planets/.asteroids/pallas.txt
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmZy3khu7qf696i5HtkgL2NotsCZ8wzvNZJ1eUdA5n8KaV planets/mars.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added Qmf6rbs5GF85anDuoxpSAdtuZPM9D2Yt3HngzjUVSQ7kDV planets/.asteroids
added QmczhHaXyb3bc9APMxe4MXbr87V5YDLKLaw3DZX3fK7HrK planets
EOF
    test_cmp expected actual
  
ok 23 - 'ipfs add -r --hidden' did include . files
24 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds Success 0.104
System.out »
expecting success: 
    (cd mountdir/planets && ipfs add -r --ignore-rules-path=.gitignore --hidden .) > actual
  
ok 24 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds
System.err »
 12 B / ? 

 12 B / ? 
 25 B / 71 B   35.21%

 25 B / 71 B   35.21%
 38 B / 71 B   53.52%

 38 B / 71 B   53.52%
 47 B / 71 B   66.20%

 47 B / 71 B   66.20%
 59 B / 71 B   83.10%

 59 B / 71 B   83.10%
 71 B / 71 B  100.00%

 71 B / 71 B  100.00%

 71 B / 71 B  100.00%

 71 B / 71 B  100.00%
25 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file Success 0.011
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmcAREBcjgnUpKfyFmUGnfajA1NQS5ydqRp7WfqZ6JF8Dx planets/.asteroids/ceres.txt
added QmZ5eaLybJ5GUZBNwy24AA9EEDTDpA4B8qXnuN3cGxu2uF planets/.asteroids/pallas.txt
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmQnv4m3Q5512zgVtpbJ9z85osQrzZzGRn934AGh6iVEXz planets/venus.txt
added Qmf6rbs5GF85anDuoxpSAdtuZPM9D2Yt3HngzjUVSQ7kDV planets/.asteroids
added QmaRsiaCYvc65RqHVAcv2tqyjZgQYgvaNqW1tQGsjfy4N5 planets
EOF
    test_cmp expected actual
  
ok 25 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file
26 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds Success 0.105
System.out »
expecting success: 
    (cd mountdir/planets && ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden .) > actual
  
ok 26 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds
System.err »
 13 B / ? 

 13 B / 34 B   38.24%
 22 B / 34 B   64.71%

 22 B / 34 B   64.71%
 34 B / 34 B  100.00%

 34 B / 34 B  100.00%

 34 B / 34 B  100.00%
27 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files Success 0.012
System.out »
expecting success: 
    cat >expected <<-\EOF &&
added QmaowqjedBkUrMUXgzt9c2ZnAJncM9jpJtkFfgdFstGr5a planets/.charon.txt
added QmPHrRjTH8FskN3C2iv6BLekDT94o23KSL2u5qLqQqGhVH planets/.gitignore
added QmU4zFD5eJtRBsWC63AvpozM9Atiadg9kPVTuTrnCYJiNF planets/.pluto.txt
added QmemuMahjSh7eYLY3hbz2q8sqMPnbQzBQeUdosqNiWChE6 planets
EOF
    test_cmp expected actual
  
ok 27 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files
28 - 'ipfs add' includes hidden files given explicitly even without --hidden Success 0.107
System.out »
expecting success: 
    mkdir -p mountdir/dotfiles &&
    echo "set nocompatible" > mountdir/dotfiles/.vimrc
    cat >expected <<-\EOF &&
added QmT4uMRDCN7EMpFeqwvKkboszbqeW1kWVGrBxBuCGqZcQc .vimrc
EOF
    ipfs add mountdir/dotfiles/.vimrc >actual
    cat actual
    test_cmp expected actual
  
added QmT4uMRDCN7EMpFeqwvKkboszbqeW1kWVGrBxBuCGqZcQc .vimrc
ok 28 - 'ipfs add' includes hidden files given explicitly even without --hidden
System.err »
 17 B / ? 

 17 B / 17 B  100.00%
29 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing Success 0.085
System.out »
expecting success: 
    test_expect_code 1 ipfs add --hash poseidon-bls12_381-a2-fc1 --raw-leaves=false -r mountdir/planets
  
ok 29 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing
System.err »
 11 B / 23 B   47.83%Error: unknown multihash code 46081 (0xb401): no such hash registered
30 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 30 - 'ipfs daemon' is still running
31 - 'ipfs daemon' can be killed Success 0.313
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 31 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs add -r' with hidden file succeeds
ok 5 - 'ipfs add -r' did not include . files
ok 6 - 'ipfs add -r --hidden' succeeds
ok 7 - 'ipfs add -r --hidden' did include . files
ok 8 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds
ok 9 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file
ok 10 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds
ok 11 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files
ok 12 - 'ipfs add' includes hidden files given explicitly even without --hidden
ok 13 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing
ok 14 - 'ipfs daemon' succeeds
ok 15 - api file shows up
ok 16 - set up address variables
ok 17 - get swarm addresses
ok 18 - set swarm address vars
ok 19 - 'ipfs daemon' is ready
ok 20 - 'ipfs add -r' with hidden file succeeds
ok 21 - 'ipfs add -r' did not include . files
ok 22 - 'ipfs add -r --hidden' succeeds
ok 23 - 'ipfs add -r --hidden' did include . files
ok 24 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' succeeds
ok 25 - 'ipfs add -r --ignore-rules-path=.gitignore --hidden' did not include mars.txt file
ok 26 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' succeeds
ok 27 - 'ipfs add -r --ignore-rules-path=.gitignore --ignore .asteroids --ignore venus.txt --hidden' did not include ignored files
ok 28 - 'ipfs add' includes hidden files given explicitly even without --hidden
ok 29 - 'ipfs add' with an unregistered hash and wrapped leaves fails without crashing
ok 30 - 'ipfs daemon' is still running
ok 31 - 'ipfs daemon' can be killed

Back to top

TestCase t0043-add-w

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.129
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.200
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.633
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0043-add-w.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0043-add-w.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0043-add-w.sh/mfs"
ok 3 - prepare config -- mounting
4 - random-files is installed Success 0.006
System.out »
expecting success: 
    type random-files
  
random-files is /home/runner/work/kubo/kubo/kubo/test/bin/random-files
ok 4 - random-files is installed
5 - random-files generates test files Success 0.167
System.out »
expecting success: 
    random-files --seed 7547632 --files 5 --dirs 2 --depth 3 m &&
    echo "$add_w_m" >expected &&
    ipfs add -Q -r m >actual &&
    test_sort_cmp expected actual
  
m/i7dog6gjzq
m/0h0r91
m/kq581u5w_yp1b
m/951op
m/opnyzga
m/vck_-2/
m/vck_-2/0dl083je2
m/vck_-2/xxtrauhkxa
m/vck_-2/um9njjosvaz
m/vck_-2/dp73ghuv-9y9s
m/vck_-2/7yrc7fki
m/vck_-2/it0lbxp/
m/vck_-2/it0lbxp/hcf090
m/vck_-2/it0lbxp/0q78wvkwgrpwi
m/vck_-2/it0lbxp/5104ydvy2de0-1
m/vck_-2/it0lbxp/v6kh_u12yl334i
m/vck_-2/it0lbxp/z7v0efafkgrh
m/vck_-2/2ju9tn-b09/
m/vck_-2/2ju9tn-b09/ugqi0nmv-1
m/vck_-2/2ju9tn-b09/57dl-1lbjvu
m/vck_-2/2ju9tn-b09/03rfc61t4qq_m
m/vck_-2/2ju9tn-b09/-qw1d8j9
m/vck_-2/2ju9tn-b09/t8h1_w
m/9m7mh3u51z3b/
m/9m7mh3u51z3b/b10c916mtlb
m/9m7mh3u51z3b/encd4yy3gc
m/9m7mh3u51z3b/1o8ef-25onywi
m/9m7mh3u51z3b/cnzc66hkd
m/9m7mh3u51z3b/a4mh2sj-
m/9m7mh3u51z3b/fvmq97/
m/9m7mh3u51z3b/fvmq97/pq3f6t0
m/9m7mh3u51z3b/fvmq97/nsz0wsonz
m/9m7mh3u51z3b/fvmq97/2hpfk8slf0
m/9m7mh3u51z3b/fvmq97/nda000755cd76
m/9m7mh3u51z3b/fvmq97/0vz12t0yf
m/9m7mh3u51z3b/3s78oa/
m/9m7mh3u51z3b/3s78oa/p91vs5t
m/9m7mh3u51z3b/3s78oa/kfo77-6i_hp0ttz
m/9m7mh3u51z3b/3s78oa/cnd062l-rh
m/9m7mh3u51z3b/3s78oa/es3gm9ck7b
m/9m7mh3u51z3b/3s78oa/cb5v5v
ok 5 - random-files generates test files
6 - ipfs add -w (single file) succeeds Success 0.152
System.out »
expecting success: 
    ipfs add -w m/0h0r91 >actual
  
ok 6 - ipfs add -w (single file) succeeds
System.err »
 3.96 KiB / 3.96 KiB  100.00%

 3.96 KiB / 3.96 KiB  100.00%

 3.96 KiB / 3.96 KiB  100.00%
7 - ipfs add -w (single file) is correct Success 0.014
System.out »
expecting success: 
    echo "$add_w_1" >expected &&
    test_sort_cmp expected actual
  
ok 7 - ipfs add -w (single file) is correct
8 - ipfs add -w (multiple) succeeds Success 0.125
System.out »
expecting success: 
    ipfs add -w m/0h0r91 m/951op >actual
  
ok 8 - ipfs add -w (multiple) succeeds
System.err »
 3.96 KiB / 4.70 KiB   84.40%

 3.96 KiB / 4.70 KiB   84.40%
 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%
9 - ipfs add -w (multiple) is correct Success 0.011
System.out »
expecting success: 
    echo "$add_w_12" >expected  &&
    test_sort_cmp expected actual
  
ok 9 - ipfs add -w (multiple) is correct
10 - ipfs add -w (multiple) succeeds Success 0.151
System.out »
expecting success: 
    ipfs add -w m/951op m/0h0r91 >actual
  
ok 10 - ipfs add -w (multiple) succeeds
System.err »
 3.96 KiB / 4.70 KiB   84.40%

 3.96 KiB / 4.70 KiB   84.40%
 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%
11 - ipfs add -w (multiple) orders Success 0.012
System.out »
expecting success: 
    echo "$add_w_12" >expected  &&
    test_sort_cmp expected actual
  
ok 11 - ipfs add -w (multiple) orders
12 - ipfs add -w -r (dir) succeeds Success 0.122
System.out »
expecting success: 
    ipfs add -r -w m/9m7mh3u51z3b/3s78oa >actual
  
ok 12 - ipfs add -w -r (dir) succeeds
System.err »
 3.13 KiB / 6.30 KiB   49.74%

 3.13 KiB / 6.30 KiB   49.74%
 3.25 KiB / 6.30 KiB   51.62%

 3.25 KiB / 6.30 KiB   51.62%
 5.28 KiB / 6.30 KiB   83.76%

 5.28 KiB / 6.30 KiB   83.76%
 6.00 KiB / 6.30 KiB   95.21%

 6.00 KiB / 6.30 KiB   95.21%
 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%
13 - ipfs add -w -r (dir) is correct Success 0.016
System.out »
expecting success: 
    echo "$add_w_d1" >expected &&
    test_sort_cmp expected actual
  
ok 13 - ipfs add -w -r (dir) is correct
14 - ipfs add -w -r <many> succeeds Success 0.133
System.out »
expecting success: 
    ipfs add -w -r m/9m7mh3u51z3b/1o8ef-25onywi \
      m/vck_-2/2ju9tn-b09 m/9m7mh3u51z3b/fvmq97 m/0h0r91 >actual
  
ok 14 - ipfs add -w -r <many> succeeds
System.err »
 3.96 KiB / 20.59 KiB   19.25%

 3.96 KiB / 20.59 KiB   19.25%
 4.99 KiB / 20.59 KiB   24.25%

 4.99 KiB / 20.59 KiB   24.25%
 6.13 KiB / 20.59 KiB   29.78%

 6.13 KiB / 20.59 KiB   29.78%
 7.26 KiB / 20.59 KiB   35.28%

 7.26 KiB / 20.59 KiB   35.28%
 9.16 KiB / 20.59 KiB   44.47%

 9.16 KiB / 20.59 KiB   44.47%
 12.19 KiB / 20.59 KiB   59.22%

 12.19 KiB / 20.59 KiB   59.22%
 15.39 KiB / 20.59 KiB   74.74%

 15.39 KiB / 20.59 KiB   74.74%
 16.18 KiB / 20.59 KiB   78.57%

 16.18 KiB / 20.59 KiB   78.57%
 16.66 KiB / 20.59 KiB   80.92%

 16.66 KiB / 20.59 KiB   80.92%
 18.11 KiB / 20.59 KiB   87.94%

 18.11 KiB / 20.59 KiB   87.94%
 19.15 KiB / 20.59 KiB   93.02%

 19.15 KiB / 20.59 KiB   93.02%
 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%
15 - ipfs add -w -r <many> is correct Success 0.012
System.out »
expecting success: 
    echo "$add_w_d2" >expected &&
    test_sort_cmp expected actual
  
ok 15 - ipfs add -w -r <many> is correct
16 - ipfs add -w -r m/* == add -r m succeeds Success 0.164
System.out »
expecting success: 
    ipfs add -Q -w -r m/* >actual
  
ok 16 - ipfs add -w -r m/* == add -r m  succeeds
17 - ipfs add -w -r m/* == add -r m is correct Success 0.015
System.out »
expecting success: 
    echo "$add_w_m" >expected &&
    test_sort_cmp expected actual
  
ok 17 - ipfs add -w -r m/* == add -r m  is correct
18 - ipfs add -w (repeats) succeeds Success 0.170
System.out »
expecting success: 
    ipfs add -Q -w -r m/9m7mh3u51z3b/1o8ef-25onywi m/vck_-2/2ju9tn-b09 \
      m/9m7mh3u51z3b/fvmq97 m/0h0r91 m/9m7mh3u51z3b m/9m7mh3u51z3b m/0h0r91 \
      m/0h0r91 m/vck_-2/0dl083je2 \
      m/vck_-2/2ju9tn-b09/-qw1d8j9 >actual
  
ok 18 - ipfs add -w (repeats) succeeds
19 - ipfs add -w (repeats) is correct Success 0.011
System.out »
expecting success: 
    echo "$add_w_r" >expected  &&
    test_sort_cmp expected actual
  
ok 19 - ipfs add -w (repeats) is correct
20 - ipfs add -w -r (dir) --cid-version=1 succeeds Success 0.116
System.out »
expecting success: 
    ipfs add -r -w --cid-version=1 m/9m7mh3u51z3b/fvmq97 >actual
  
ok 20 - ipfs add -w -r (dir) --cid-version=1 succeeds
System.err »
 807 B / 5.20 KiB   15.15%

 807 B / 5.20 KiB   15.15%
 1.27 KiB / 5.20 KiB   24.48%

 1.27 KiB / 5.20 KiB   24.48%
 2.72 KiB / 5.20 KiB   52.25%

 2.72 KiB / 5.20 KiB   52.25%
 3.76 KiB / 5.20 KiB   72.36%

 3.76 KiB / 5.20 KiB   72.36%
 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%
21 - ipfs add -w -r (dir) --cid-version=1 is correct Success 0.013
System.out »
expecting success: 
    echo "$add_w_d1_v1" >expected &&
    test_sort_cmp expected actual
  
ok 21 - ipfs add -w -r (dir) --cid-version=1 is correct
22 - ipfs add -w -r -n (dir) --cid-version=1 succeeds Success 0.126
System.out »
expecting success: 
    ipfs add -r -w -n --cid-version=1 m/9m7mh3u51z3b/fvmq97 >actual
  
ok 22 - ipfs add -w -r -n (dir) --cid-version=1 succeeds
System.err »
 807 B / 5.20 KiB   15.15%

 807 B / 5.20 KiB   15.15%
 1.27 KiB / 5.20 KiB   24.48%

 1.27 KiB / 5.20 KiB   24.48%
 2.72 KiB / 5.20 KiB   52.25%

 2.72 KiB / 5.20 KiB   52.25%
 3.76 KiB / 5.20 KiB   72.36%

 3.76 KiB / 5.20 KiB   72.36%
 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%
23 - ipfs add -w -r -n (dir) --cid-version=1 is correct Success 0.012
System.out »
expecting success: 
    echo "$add_w_d1_v1" > expected &&
    test_sort_cmp expected actual
  
ok 23 - ipfs add -w -r -n (dir) --cid-version=1 is correct
24 - 'ipfs daemon' succeeds Success 0.009
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 24 - 'ipfs daemon' succeeds
25 - api file shows up Success 0.215
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 25 - api file shows up
26 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 26 - set up address variables
27 - get swarm addresses Success 0.092
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 27 - get swarm addresses
28 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 28 - set swarm address vars
29 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 29 - 'ipfs daemon' is ready
30 - random-files is installed Success 0.004
System.out »
expecting success: 
    type random-files
  
random-files is hashed (/home/runner/work/kubo/kubo/kubo/test/bin/random-files)
ok 30 - random-files is installed
31 - random-files generates test files Success 0.136
System.out »
expecting success: 
    random-files --seed 7547632 --files 5 --dirs 2 --depth 3 m &&
    echo "$add_w_m" >expected &&
    ipfs add -Q -r m >actual &&
    test_sort_cmp expected actual
  
m/i7dog6gjzq
m/0h0r91
m/kq581u5w_yp1b
m/951op
m/opnyzga
m/vck_-2/
m/vck_-2/0dl083je2
m/vck_-2/xxtrauhkxa
m/vck_-2/um9njjosvaz
m/vck_-2/dp73ghuv-9y9s
m/vck_-2/7yrc7fki
m/vck_-2/it0lbxp/
m/vck_-2/it0lbxp/hcf090
m/vck_-2/it0lbxp/0q78wvkwgrpwi
m/vck_-2/it0lbxp/5104ydvy2de0-1
m/vck_-2/it0lbxp/v6kh_u12yl334i
m/vck_-2/it0lbxp/z7v0efafkgrh
m/vck_-2/2ju9tn-b09/
m/vck_-2/2ju9tn-b09/ugqi0nmv-1
m/vck_-2/2ju9tn-b09/57dl-1lbjvu
m/vck_-2/2ju9tn-b09/03rfc61t4qq_m
m/vck_-2/2ju9tn-b09/-qw1d8j9
m/vck_-2/2ju9tn-b09/t8h1_w
m/9m7mh3u51z3b/
m/9m7mh3u51z3b/b10c916mtlb
m/9m7mh3u51z3b/encd4yy3gc
m/9m7mh3u51z3b/1o8ef-25onywi
m/9m7mh3u51z3b/cnzc66hkd
m/9m7mh3u51z3b/a4mh2sj-
m/9m7mh3u51z3b/fvmq97/
m/9m7mh3u51z3b/fvmq97/pq3f6t0
m/9m7mh3u51z3b/fvmq97/nsz0wsonz
m/9m7mh3u51z3b/fvmq97/2hpfk8slf0
m/9m7mh3u51z3b/fvmq97/nda000755cd76
m/9m7mh3u51z3b/fvmq97/0vz12t0yf
m/9m7mh3u51z3b/3s78oa/
m/9m7mh3u51z3b/3s78oa/p91vs5t
m/9m7mh3u51z3b/3s78oa/kfo77-6i_hp0ttz
m/9m7mh3u51z3b/3s78oa/cnd062l-rh
m/9m7mh3u51z3b/3s78oa/es3gm9ck7b
m/9m7mh3u51z3b/3s78oa/cb5v5v
ok 31 - random-files generates test files
32 - ipfs add -w (single file) succeeds Success 0.083
System.out »
expecting success: 
    ipfs add -w m/0h0r91 >actual
  
ok 32 - ipfs add -w (single file) succeeds
System.err »
 3.96 KiB / ? 

 3.96 KiB / 3.96 KiB  100.00%

 3.96 KiB / 3.96 KiB  100.00%
33 - ipfs add -w (single file) is correct Success 0.009
System.out »
expecting success: 
    echo "$add_w_1" >expected &&
    test_sort_cmp expected actual
  
ok 33 - ipfs add -w (single file) is correct
34 - ipfs add -w (multiple) succeeds Success 0.081
System.out »
expecting success: 
    ipfs add -w m/0h0r91 m/951op >actual
  
ok 34 - ipfs add -w (multiple) succeeds
System.err »
 3.96 KiB / ? 

 3.96 KiB / 4.70 KiB   84.40%
 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%
35 - ipfs add -w (multiple) is correct Success 0.012
System.out »
expecting success: 
    echo "$add_w_12" >expected  &&
    test_sort_cmp expected actual
  
ok 35 - ipfs add -w (multiple) is correct
36 - ipfs add -w (multiple) succeeds Success 0.077
System.out »
expecting success: 
    ipfs add -w m/951op m/0h0r91 >actual
  
ok 36 - ipfs add -w (multiple) succeeds
System.err »
 3.96 KiB / 4.70 KiB   84.40%

 3.96 KiB / 4.70 KiB   84.40%
 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%

 4.70 KiB / 4.70 KiB  100.00%
37 - ipfs add -w (multiple) orders Success 0.011
System.out »
expecting success: 
    echo "$add_w_12" >expected  &&
    test_sort_cmp expected actual
  
ok 37 - ipfs add -w (multiple) orders
38 - ipfs add -w -r (dir) succeeds Success 0.102
System.out »
expecting success: 
    ipfs add -r -w m/9m7mh3u51z3b/3s78oa >actual
  
ok 38 - ipfs add -w -r (dir) succeeds
System.err »
 3.13 KiB / ? 

 3.13 KiB / ? 
 3.25 KiB / 6.30 KiB   51.62%

 3.25 KiB / 6.30 KiB   51.62%
 5.28 KiB / 6.30 KiB   83.76%

 5.28 KiB / 6.30 KiB   83.76%
 6.00 KiB / 6.30 KiB   95.21%

 6.00 KiB / 6.30 KiB   95.21%
 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%

 6.30 KiB / 6.30 KiB  100.00%
39 - ipfs add -w -r (dir) is correct Success 0.009
System.out »
expecting success: 
    echo "$add_w_d1" >expected &&
    test_sort_cmp expected actual
  
ok 39 - ipfs add -w -r (dir) is correct
40 - ipfs add -w -r <many> succeeds Success 0.080
System.out »
expecting success: 
    ipfs add -w -r m/9m7mh3u51z3b/1o8ef-25onywi \
      m/vck_-2/2ju9tn-b09 m/9m7mh3u51z3b/fvmq97 m/0h0r91 >actual
  
ok 40 - ipfs add -w -r <many> succeeds
System.err »
 3.96 KiB / ? 

 3.96 KiB / 20.59 KiB   19.25%
 4.99 KiB / 20.59 KiB   24.25%

 4.99 KiB / 20.59 KiB   24.25%
 6.13 KiB / 20.59 KiB   29.78%

 6.13 KiB / 20.59 KiB   29.78%
 7.26 KiB / 20.59 KiB   35.28%

 7.26 KiB / 20.59 KiB   35.28%
 9.16 KiB / 20.59 KiB   44.47%

 9.16 KiB / 20.59 KiB   44.47%
 12.19 KiB / 20.59 KiB   59.22%

 12.19 KiB / 20.59 KiB   59.22%
 15.39 KiB / 20.59 KiB   74.74%

 15.39 KiB / 20.59 KiB   74.74%
 16.18 KiB / 20.59 KiB   78.57%

 16.18 KiB / 20.59 KiB   78.57%
 16.66 KiB / 20.59 KiB   80.92%

 16.66 KiB / 20.59 KiB   80.92%
 18.11 KiB / 20.59 KiB   87.94%

 18.11 KiB / 20.59 KiB   87.94%
 19.15 KiB / 20.59 KiB   93.02%

 19.15 KiB / 20.59 KiB   93.02%
 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%

 20.59 KiB / 20.59 KiB  100.00%
41 - ipfs add -w -r <many> is correct Success 0.011
System.out »
expecting success: 
    echo "$add_w_d2" >expected &&
    test_sort_cmp expected actual
  
ok 41 - ipfs add -w -r <many> is correct
42 - ipfs add -w -r m/* == add -r m succeeds Success 0.092
System.out »
expecting success: 
    ipfs add -Q -w -r m/* >actual
  
ok 42 - ipfs add -w -r m/* == add -r m  succeeds
43 - ipfs add -w -r m/* == add -r m is correct Success 0.011
System.out »
expecting success: 
    echo "$add_w_m" >expected &&
    test_sort_cmp expected actual
  
ok 43 - ipfs add -w -r m/* == add -r m  is correct
44 - ipfs add -w (repeats) succeeds Success 0.083
System.out »
expecting success: 
    ipfs add -Q -w -r m/9m7mh3u51z3b/1o8ef-25onywi m/vck_-2/2ju9tn-b09 \
      m/9m7mh3u51z3b/fvmq97 m/0h0r91 m/9m7mh3u51z3b m/9m7mh3u51z3b m/0h0r91 \
      m/0h0r91 m/vck_-2/0dl083je2 \
      m/vck_-2/2ju9tn-b09/-qw1d8j9 >actual
  
ok 44 - ipfs add -w (repeats) succeeds
45 - ipfs add -w (repeats) is correct Success 0.009
System.out »
expecting success: 
    echo "$add_w_r" >expected  &&
    test_sort_cmp expected actual
  
ok 45 - ipfs add -w (repeats) is correct
46 - ipfs add -w -r (dir) --cid-version=1 succeeds Success 0.091
System.out »
expecting success: 
    ipfs add -r -w --cid-version=1 m/9m7mh3u51z3b/fvmq97 >actual
  
ok 46 - ipfs add -w -r (dir) --cid-version=1 succeeds
System.err »
 807 B / ? 

 807 B / 5.20 KiB   15.15%
 1.27 KiB / 5.20 KiB   24.48%

 1.27 KiB / 5.20 KiB   24.48%
 2.72 KiB / 5.20 KiB   52.25%

 2.72 KiB / 5.20 KiB   52.25%
 3.76 KiB / 5.20 KiB   72.36%

 3.76 KiB / 5.20 KiB   72.36%
 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%
47 - ipfs add -w -r (dir) --cid-version=1 is correct Success 0.009
System.out »
expecting success: 
    echo "$add_w_d1_v1" >expected &&
    test_sort_cmp expected actual
  
ok 47 - ipfs add -w -r (dir) --cid-version=1 is correct
48 - ipfs add -w -r -n (dir) --cid-version=1 succeeds Success 0.078
System.out »
expecting success: 
    ipfs add -r -w -n --cid-version=1 m/9m7mh3u51z3b/fvmq97 >actual
  
ok 48 - ipfs add -w -r -n (dir) --cid-version=1 succeeds
System.err »
 807 B / ? 

 807 B / ? 
 1.27 KiB / ? 

 1.27 KiB / ? 
 2.72 KiB / 5.20 KiB   52.25%

 2.72 KiB / 5.20 KiB   52.25%
 3.76 KiB / 5.20 KiB   72.36%

 3.76 KiB / 5.20 KiB   72.36%
 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%

 5.20 KiB / 5.20 KiB  100.00%
49 - ipfs add -w -r -n (dir) --cid-version=1 is correct Success 0.010
System.out »
expecting success: 
    echo "$add_w_d1_v1" > expected &&
    test_sort_cmp expected actual
  
ok 49 - ipfs add -w -r -n (dir) --cid-version=1 is correct
50 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 50 - 'ipfs daemon' is still running
51 - 'ipfs daemon' can be killed Success 0.267
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 51 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - random-files is installed
ok 5 - random-files generates test files
ok 6 - ipfs add -w (single file) succeeds
ok 7 - ipfs add -w (single file) is correct
ok 8 - ipfs add -w (multiple) succeeds
ok 9 - ipfs add -w (multiple) is correct
ok 10 - ipfs add -w (multiple) succeeds
ok 11 - ipfs add -w (multiple) orders
ok 12 - ipfs add -w -r (dir) succeeds
ok 13 - ipfs add -w -r (dir) is correct
ok 14 - ipfs add -w -r <many> succeeds
ok 15 - ipfs add -w -r <many> is correct
ok 16 - ipfs add -w -r m/* == add -r m  succeeds
ok 17 - ipfs add -w -r m/* == add -r m  is correct
ok 18 - ipfs add -w (repeats) succeeds
ok 19 - ipfs add -w (repeats) is correct
ok 20 - ipfs add -w -r (dir) --cid-version=1 succeeds
ok 21 - ipfs add -w -r (dir) --cid-version=1 is correct
ok 22 - ipfs add -w -r -n (dir) --cid-version=1 succeeds
ok 23 - ipfs add -w -r -n (dir) --cid-version=1 is correct
ok 24 - 'ipfs daemon' succeeds
ok 25 - api file shows up
ok 26 - set up address variables
ok 27 - get swarm addresses
ok 28 - set swarm address vars
ok 29 - 'ipfs daemon' is ready
ok 30 - random-files is installed
ok 31 - random-files generates test files
ok 32 - ipfs add -w (single file) succeeds
ok 33 - ipfs add -w (single file) is correct
ok 34 - ipfs add -w (multiple) succeeds
ok 35 - ipfs add -w (multiple) is correct
ok 36 - ipfs add -w (multiple) succeeds
ok 37 - ipfs add -w (multiple) orders
ok 38 - ipfs add -w -r (dir) succeeds
ok 39 - ipfs add -w -r (dir) is correct
ok 40 - ipfs add -w -r <many> succeeds
ok 41 - ipfs add -w -r <many> is correct
ok 42 - ipfs add -w -r m/* == add -r m  succeeds
ok 43 - ipfs add -w -r m/* == add -r m  is correct
ok 44 - ipfs add -w (repeats) succeeds
ok 45 - ipfs add -w (repeats) is correct
ok 46 - ipfs add -w -r (dir) --cid-version=1 succeeds
ok 47 - ipfs add -w -r (dir) --cid-version=1 is correct
ok 48 - ipfs add -w -r -n (dir) --cid-version=1 succeeds
ok 49 - ipfs add -w -r -n (dir) --cid-version=1 is correct
ok 50 - 'ipfs daemon' is still running
ok 51 - 'ipfs daemon' can be killed

Back to top

TestCase t0044-add-symlink

Name Status Type Time(s)
1 - creating files succeeds Success 0.014
System.out »
expecting success: 
  mkdir -p files/foo &&
  mkdir -p files/bar &&
  echo "some text" > files/foo/baz &&
  ln -s files/foo/baz files/bar/baz &&
  ln -s files/does/not/exist files/bad

ok 1 - creating files succeeds
2 - ipfs init succeeds Success 0.131
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.197
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.644
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0044-add-symlink.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0044-add-symlink.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0044-add-symlink.sh/mfs"
ok 4 - prepare config -- mounting
5 - ipfs add files succeeds Success 0.133
System.out »
expecting success: 
    ipfs add -Q -r files >filehash_out
  
ok 5 - ipfs add files succeeds
6 - output looks good Success 0.007
System.out »
expecting success: 
    echo QmWdiHKoeSW8G1u7ATCgpx4yMoUhYaJBQGkyPLkS9goYZ8 > filehash_exp &&
    test_cmp filehash_exp filehash_out
  
ok 6 - output looks good
7 - ipfs add --cid-version=1 files succeeds Success 0.112
System.out »
expecting success: 
    ipfs add -Q -r --cid-version=1 files >filehash_out
  
ok 7 - ipfs add --cid-version=1 files succeeds
8 - output looks good Success 0.007
System.out »
expecting success: 
    # note this hash implies all internal nodes are stored using CidV1
    echo bafybeibyhlx64cklod6isy3h7tsmr4qvam3ae3b74n3hfes5bythjrwyua > filehash_exp &&
    test_cmp filehash_exp filehash_out
  
ok 8 - output looks good
9 - adding a symlink adds the link itself Success 0.135
System.out »
expecting success: 
    ipfs add -q files/bar/baz > goodlink_out
  
ok 9 - adding a symlink adds the link itself
10 - output looks good Success 0.008
System.out »
expecting success: 
    echo "QmdocmZeF7qwPT9Z8SiVhMSyKA2KKoA2J7jToW6z6WBmxR" > goodlink_exp &&
    test_cmp goodlink_exp goodlink_out
  
ok 10 - output looks good
11 - adding a broken symlink works Success 0.139
System.out »
expecting success: 
    ipfs add -q files/bad > badlink_out
  
ok 11 - adding a broken symlink works
12 - output looks good Success 0.006
System.out »
expecting success: 
    echo "QmWYN8SEXCgNT2PSjB6BnxAx6NJQtazWoBkTRH9GRfPFFQ" > badlink_exp &&
    test_cmp badlink_exp badlink_out
  
ok 12 - output looks good
13 - adding with symlink in middle of path is same asadding with no symlink Success 0.253
System.out »
expecting success: 
    mkdir -p files2/a/b/c &&
    echo "some other text" > files2/a/b/c/foo &&
    ln -s b files2/a/d
    ipfs add -rq files2/a/b/c > no_sym &&
    ipfs add -rq files2/a/d/c > sym &&
    test_cmp no_sym sym
  
ok 13 - adding with symlink in middle of path is same asadding with no symlink
14 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 14 - 'ipfs daemon' succeeds
15 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 15 - api file shows up
16 - set up address variables Success 0.035
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 16 - set up address variables
17 - get swarm addresses Success 0.094
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 17 - get swarm addresses
18 - set swarm address vars Success 0.015
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 18 - set swarm address vars
19 - 'ipfs daemon' is ready Success 0.012
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 19 - 'ipfs daemon' is ready
20 - ipfs add files succeeds Success 0.108
System.out »
expecting success: 
    ipfs add -Q -r files >filehash_out
  
ok 20 - ipfs add files succeeds
21 - output looks good Success 0.009
System.out »
expecting success: 
    echo QmWdiHKoeSW8G1u7ATCgpx4yMoUhYaJBQGkyPLkS9goYZ8 > filehash_exp &&
    test_cmp filehash_exp filehash_out
  
ok 21 - output looks good
22 - ipfs add --cid-version=1 files succeeds Success 0.102
System.out »
expecting success: 
    ipfs add -Q -r --cid-version=1 files >filehash_out
  
ok 22 - ipfs add --cid-version=1 files succeeds
23 - output looks good Success 0.009
System.out »
expecting success: 
    # note this hash implies all internal nodes are stored using CidV1
    echo bafybeibyhlx64cklod6isy3h7tsmr4qvam3ae3b74n3hfes5bythjrwyua > filehash_exp &&
    test_cmp filehash_exp filehash_out
  
ok 23 - output looks good
24 - adding a symlink adds the link itself Success 0.115
System.out »
expecting success: 
    ipfs add -q files/bar/baz > goodlink_out
  
ok 24 - adding a symlink adds the link itself
25 - output looks good Success 0.009
System.out »
expecting success: 
    echo "QmdocmZeF7qwPT9Z8SiVhMSyKA2KKoA2J7jToW6z6WBmxR" > goodlink_exp &&
    test_cmp goodlink_exp goodlink_out
  
ok 25 - output looks good
26 - adding a broken symlink works Success 0.102
System.out »
expecting success: 
    ipfs add -q files/bad > badlink_out
  
ok 26 - adding a broken symlink works
27 - output looks good Success 0.008
System.out »
expecting success: 
    echo "QmWYN8SEXCgNT2PSjB6BnxAx6NJQtazWoBkTRH9GRfPFFQ" > badlink_exp &&
    test_cmp badlink_exp badlink_out
  
ok 27 - output looks good
28 - adding with symlink in middle of path is same asadding with no symlink Success 0.225
System.out »
expecting success: 
    mkdir -p files2/a/b/c &&
    echo "some other text" > files2/a/b/c/foo &&
    ln -s b files2/a/d
    ipfs add -rq files2/a/b/c > no_sym &&
    ipfs add -rq files2/a/d/c > sym &&
    test_cmp no_sym sym
  
ok 28 - adding with symlink in middle of path is same asadding with no symlink
29 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 29 - 'ipfs daemon' is still running
30 - 'ipfs daemon' can be killed Success 0.311
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 30 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - creating files succeeds
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - ipfs add files succeeds
ok 6 - output looks good
ok 7 - ipfs add --cid-version=1 files succeeds
ok 8 - output looks good
ok 9 - adding a symlink adds the link itself
ok 10 - output looks good
ok 11 - adding a broken symlink works
ok 12 - output looks good
ok 13 - adding with symlink in middle of path is same asadding with no symlink
ok 14 - 'ipfs daemon' succeeds
ok 15 - api file shows up
ok 16 - set up address variables
ok 17 - get swarm addresses
ok 18 - set swarm address vars
ok 19 - 'ipfs daemon' is ready
ok 20 - ipfs add files succeeds
ok 21 - output looks good
ok 22 - ipfs add --cid-version=1 files succeeds
ok 23 - output looks good
ok 24 - adding a symlink adds the link itself
ok 25 - output looks good
ok 26 - adding a broken symlink works
ok 27 - output looks good
ok 28 - adding with symlink in middle of path is same asadding with no symlink
ok 29 - 'ipfs daemon' is still running
ok 30 - 'ipfs daemon' can be killed

Back to top

TestCase t0045-ls

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.126
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.228
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.647
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0045-ls.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0045-ls.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0045-ls.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs add -r testData' succeeds Success 0.109
System.out »
expecting success: 
    mkdir -p testData testData/d1 testData/d2 &&
    echo "test" >testData/f1 &&
    echo "data" >testData/f2 &&
    echo "hello" >testData/d1/a &&
    random-data -size=128 -seed=42 >testData/d1/128 &&
    echo "world" >testData/d2/a &&
    random-data -size=1024 -seed=42 >testData/d2/1024 &&
    echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
    ipfs add -r testData >actual_add
  
ok 4 - 'ipfs add -r testData' succeeds
System.err »
 128 B / 1.15 KiB   10.83%

 128 B / 1.15 KiB   10.83%
 134 B / 1.15 KiB   11.34%

 134 B / 1.15 KiB   11.34%
 1.13 KiB / 1.15 KiB   97.97%

 1.13 KiB / 1.15 KiB   97.97%
 1.14 KiB / 1.15 KiB   98.48%

 1.14 KiB / 1.15 KiB   98.48%
 1.14 KiB / 1.15 KiB   99.15%

 1.14 KiB / 1.15 KiB   99.15%
 1.15 KiB / 1.15 KiB   99.58%

 1.15 KiB / 1.15 KiB   99.58%
 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%
5 - 'ipfs add' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_add &&
added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
EOF
    test_cmp expected_add actual_add
  
ok 5 - 'ipfs add' output looks good
6 - 'ipfs ls <three dir hashes>' succeeds Success 0.096
System.out »
expecting success: 
    ipfs ls QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
  
ok 6 - 'ipfs ls <three dir hashes>' succeeds
7 - 'ipfs ls <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6    a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8    bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6   a
EOF
    test_cmp expected_ls actual_ls
  
ok 7 - 'ipfs ls <three dir hashes>' output looks good
8 - 'ipfs ls --size=false <three dir hashes>' succeeds Success 0.098
System.out »
expecting success: 
    ipfs ls --size=false QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
  
ok 8 - 'ipfs ls --size=false <three dir hashes>' succeeds
9 - 'ipfs ls <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
EOF
    test_cmp expected_ls actual_ls
  
ok 9 - 'ipfs ls <three dir hashes>' output looks good
10 - 'ipfs ls --headers <three dir hashes>' succeeds Success 0.092
System.out »
expecting success: 
    ipfs ls --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_headers
  
ok 10 - 'ipfs ls --headers <three dir hashes>' succeeds
11 - 'ipfs ls --headers <three dir hashes>' output looks good Success 0.006
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_headers &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
Hash                                           Size Name
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -    d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -    d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5    f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5    f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
Hash                                           Size Name
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6    a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8    bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
Hash                                           Size Name
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128  128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6    a
EOF
    test_cmp expected_ls_headers actual_ls_headers
  
ok 11 - 'ipfs ls --headers  <three dir hashes>' output looks good
12 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds Success 0.094
System.out »
expecting success: 
    ipfs ls --size=false --cid-base=base32 $(cid-fmt -v 1 -b base32 %s QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j) >actual_ls_base32
  
ok 12 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds
13 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good Success 0.008
System.out »
expecting success: 
    cid-fmt -b base32 -v 1 --filter %s < expected_ls > expected_ls_base32
    test_cmp expected_ls_base32 actual_ls_base32
  
ok 13 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good
14 - 'ipfs add -r testData' succeeds Success 0.124
System.out »
expecting success: 
    mkdir -p testData testData/d1 testData/d2 &&
    echo "test" >testData/f1 &&
    echo "data" >testData/f2 &&
    echo "hello" >testData/d1/a &&
    random-data -size=128 -seed=42 >testData/d1/128 &&
    echo "world" >testData/d2/a &&
    random-data -size=1024 -seed=42 >testData/d2/1024 &&
    echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
    ipfs add -r testData >actual_add
  
ok 14 - 'ipfs add -r testData' succeeds
System.err »
 128 B / 1.15 KiB   10.83%

 128 B / 1.15 KiB   10.83%
 134 B / 1.15 KiB   11.34%

 134 B / 1.15 KiB   11.34%
 1.13 KiB / 1.15 KiB   97.97%

 1.13 KiB / 1.15 KiB   97.97%
 1.14 KiB / 1.15 KiB   98.48%

 1.14 KiB / 1.15 KiB   98.48%
 1.14 KiB / 1.15 KiB   99.15%

 1.14 KiB / 1.15 KiB   99.15%
 1.15 KiB / 1.15 KiB   99.58%

 1.15 KiB / 1.15 KiB   99.58%
 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%
15 - 'ipfs add' output looks good Success 0.009
System.out »
expecting success: 
    cat <<-\EOF >expected_add &&
added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
EOF
    test_cmp expected_add actual_add
  
ok 15 - 'ipfs add' output looks good
16 - 'ipfs ls --stream <three dir hashes>' succeeds Success 0.100
System.out »
expecting success: 
    ipfs ls --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
  
ok 16 - 'ipfs ls --stream <three dir hashes>' succeeds
17 - 'ipfs ls --stream <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -         d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -         d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5         f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5         f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024      1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6         a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8         bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128       128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6         a
EOF
    test_cmp expected_ls_stream actual_ls_stream
  
ok 17 - 'ipfs ls --stream <three dir hashes>' output looks good
18 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds Success 0.091
System.out »
expecting success: 
    ipfs ls --size=false --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
  
ok 18 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds
19 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
EOF
    test_cmp expected_ls_stream actual_ls_stream
  
ok 19 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good
20 - 'ipfs ls --stream --headers <three dir hashes>' succeeds Success 0.093
System.out »
expecting success: 
    ipfs ls --stream --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream_headers
  
ok 20 - 'ipfs ls --stream --headers <three dir hashes>' succeeds
21 - 'ipfs ls --stream --headers <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream_headers &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
Hash                                           Size      Name
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -         d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -         d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5         f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5         f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
Hash                                           Size      Name
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024      1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6         a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8         bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
Hash                                           Size      Name
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128       128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6         a
EOF
    test_cmp expected_ls_stream_headers actual_ls_stream_headers
  
ok 21 - 'ipfs ls --stream --headers  <three dir hashes>' output looks good
22 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected Success 0.183
System.out »
expecting success: 
    mkdir -p somedir &&
    echo bar > somedir/foo &&
    ipfs add --raw-leaves -r somedir/ > /dev/null &&
    ipfs ls  QmThNTdtKaVoCVrYmM5EBS6U3S5vfKFue2TxbxxAxRcKKE > ls-actual
    echo "bafkreid5qzpjlgzem2iyzgddv7fjilipxcoxzgwazgn27q3usucn5wlxga 4 foo" > ls-expect
    test_cmp ls-actual ls-expect
  
ok 22 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
System.err »
 4 B / 4 B  100.00%

 4 B / 4 B  100.00%

 4 B / 4 B  100.00%
23 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected Success 0.202
System.out »
expecting success: 
    mkdir -p somedir &&
    echo bar > somedir/foo &&
    ipfs add --raw-leaves -r somedir/ > /dev/null &&
    ipfs ls --size QmThNTdtKaVoCVrYmM5EBS6U3S5vfKFue2TxbxxAxRcKKE > ls-actual
    echo "bafkreid5qzpjlgzem2iyzgddv7fjilipxcoxzgwazgn27q3usucn5wlxga 4 foo" > ls-expect
    test_cmp ls-actual ls-expect
  
ok 23 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
System.err »
 4 B / 4 B  100.00%

 4 B / 4 B  100.00%

 4 B / 4 B  100.00%
24 - ipfs add medium size file then 'ipfs ls --size=false' works as expected Success 0.177
System.out »
expecting success: 
    random-data -size=500000 -seed=2 > somefile &&
    HASH=$(ipfs add somefile -q) &&
    echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo " > ls-expect &&
    echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm " >> ls-expect &&
    ipfs ls --size=false $HASH > ls-actual &&
    test_cmp ls-actual ls-expect
  
ok 24 - ipfs add medium size file then 'ipfs ls --size=false' works as expected
25 - ipfs add medium size file then 'ipfs ls' works as expected Success 0.197
System.out »
expecting success: 
    random-data -size=500000 -seed=2 > somefile &&
    HASH=$(ipfs add somefile -q) &&
    echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo 262144 " > ls-expect &&
    echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm 237856 " >> ls-expect &&
    ipfs ls $HASH > ls-actual &&
    test_cmp ls-actual ls-expect
  
ok 25 - ipfs add medium size file then 'ipfs ls' works as expected
26 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 26 - 'ipfs daemon' succeeds
27 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 27 - api file shows up
28 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 28 - set up address variables
29 - get swarm addresses Success 0.077
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 29 - get swarm addresses
30 - set swarm address vars Success 0.011
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 30 - set swarm address vars
31 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 31 - 'ipfs daemon' is ready
32 - 'ipfs add -r testData' succeeds Success 0.095
System.out »
expecting success: 
    mkdir -p testData testData/d1 testData/d2 &&
    echo "test" >testData/f1 &&
    echo "data" >testData/f2 &&
    echo "hello" >testData/d1/a &&
    random-data -size=128 -seed=42 >testData/d1/128 &&
    echo "world" >testData/d2/a &&
    random-data -size=1024 -seed=42 >testData/d2/1024 &&
    echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
    ipfs add -r testData >actual_add
  
ok 32 - 'ipfs add -r testData' succeeds
System.err »
 128 B / ? 

 128 B / 1.15 KiB   10.83%
 134 B / 1.15 KiB   11.34%

 134 B / 1.15 KiB   11.34%
 1.13 KiB / 1.15 KiB   97.97%

 1.13 KiB / 1.15 KiB   97.97%
 1.14 KiB / 1.15 KiB   98.48%

 1.14 KiB / 1.15 KiB   98.48%
 1.14 KiB / 1.15 KiB   99.15%

 1.14 KiB / 1.15 KiB   99.15%
 1.15 KiB / 1.15 KiB   99.58%

 1.15 KiB / 1.15 KiB   99.58%
 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%
33 - 'ipfs add' output looks good Success 0.008
System.out »
expecting success: 
    cat <<-\EOF >expected_add &&
added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
EOF
    test_cmp expected_add actual_add
  
ok 33 - 'ipfs add' output looks good
34 - 'ipfs ls <three dir hashes>' succeeds Success 0.080
System.out »
expecting success: 
    ipfs ls QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
  
ok 34 - 'ipfs ls <three dir hashes>' succeeds
35 - 'ipfs ls <three dir hashes>' output looks good Success 0.008
System.out »
expecting success: 
    cat <<-\EOF >expected_ls &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j - d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW - d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5 f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5 f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6    a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8    bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6   a
EOF
    test_cmp expected_ls actual_ls
  
ok 35 - 'ipfs ls <three dir hashes>' output looks good
36 - 'ipfs ls --size=false <three dir hashes>' succeeds Success 0.072
System.out »
expecting success: 
    ipfs ls --size=false QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls
  
ok 36 - 'ipfs ls --size=false <three dir hashes>' succeeds
37 - 'ipfs ls <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
EOF
    test_cmp expected_ls actual_ls
  
ok 37 - 'ipfs ls <three dir hashes>' output looks good
38 - 'ipfs ls --headers <three dir hashes>' succeeds Success 0.070
System.out »
expecting success: 
    ipfs ls --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_headers
  
ok 38 - 'ipfs ls --headers <three dir hashes>' succeeds
39 - 'ipfs ls --headers <three dir hashes>' output looks good Success 0.009
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_headers &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
Hash                                           Size Name
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -    d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -    d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5    f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5    f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
Hash                                           Size Name
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6    a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8    bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
Hash                                           Size Name
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128  128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6    a
EOF
    test_cmp expected_ls_headers actual_ls_headers
  
ok 39 - 'ipfs ls --headers  <three dir hashes>' output looks good
40 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds Success 0.075
System.out »
expecting success: 
    ipfs ls --size=false --cid-base=base32 $(cid-fmt -v 1 -b base32 %s QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j) >actual_ls_base32
  
ok 40 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds
41 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good Success 0.008
System.out »
expecting success: 
    cid-fmt -b base32 -v 1 --filter %s < expected_ls > expected_ls_base32
    test_cmp expected_ls_base32 actual_ls_base32
  
ok 41 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good
42 - 'ipfs add -r testData' succeeds Success 0.094
System.out »
expecting success: 
    mkdir -p testData testData/d1 testData/d2 &&
    echo "test" >testData/f1 &&
    echo "data" >testData/f2 &&
    echo "hello" >testData/d1/a &&
    random-data -size=128 -seed=42 >testData/d1/128 &&
    echo "world" >testData/d2/a &&
    random-data -size=1024 -seed=42 >testData/d2/1024 &&
    echo "badname" >testData/d2/`echo -e "bad\x7fname.txt"` &&
    ipfs add -r testData >actual_add
  
ok 42 - 'ipfs add -r testData' succeeds
System.err »
 128 B / ? 

 128 B / ? 
 134 B / 1.15 KiB   11.34%

 134 B / 1.15 KiB   11.34%
 1.13 KiB / 1.15 KiB   97.97%

 1.13 KiB / 1.15 KiB   97.97%
 1.14 KiB / 1.15 KiB   98.48%

 1.14 KiB / 1.15 KiB   98.48%
 1.14 KiB / 1.15 KiB   99.15%

 1.14 KiB / 1.15 KiB   99.15%
 1.15 KiB / 1.15 KiB   99.58%

 1.15 KiB / 1.15 KiB   99.58%
 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%

 1.15 KiB / 1.15 KiB  100.00%
43 - 'ipfs add' output looks good Success 0.011
System.out »
expecting success: 
    cat <<-\EOF >expected_add &&
added QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN testData/d1/128
added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN testData/d1/a
added QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 testData/d2/1024
added QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL testData/d2/a
added QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn testData/d2/bad\x7fname.txt
added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH testData/f1
added QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M testData/f2
added QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j testData/d1
added Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW testData/d2
added QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc testData
EOF
    test_cmp expected_add actual_add
  
ok 43 - 'ipfs add' output looks good
44 - 'ipfs ls --stream <three dir hashes>' succeeds Success 0.087
System.out »
expecting success: 
    ipfs ls --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
  
ok 44 - 'ipfs ls --stream <three dir hashes>' succeeds
45 - 'ipfs ls --stream <three dir hashes>' output looks good Success 0.006
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -         d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -         d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5         f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5         f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024      1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6         a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8         bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128       128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6         a
EOF
    test_cmp expected_ls_stream actual_ls_stream
  
ok 45 - 'ipfs ls --stream <three dir hashes>' output looks good
46 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds Success 0.071
System.out »
expecting success: 
    ipfs ls --size=false --stream QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream
  
ok 46 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds
47 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good Success 0.007
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN a
EOF
    test_cmp expected_ls_stream actual_ls_stream
  
ok 47 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good
48 - 'ipfs ls --stream --headers <three dir hashes>' succeeds Success 0.071
System.out »
expecting success: 
    ipfs ls --stream --headers QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j >actual_ls_stream_headers
  
ok 48 - 'ipfs ls --stream --headers <three dir hashes>' succeeds
49 - 'ipfs ls --stream --headers <three dir hashes>' output looks good Success 0.009
System.out »
expecting success: 
    cat <<-\EOF >expected_ls_stream_headers &&
QmR5UuxvF2ALd2GRGMCNg1GDiuuvcAyEkQaCV9fNkevWuc:
Hash                                           Size      Name
QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j -         d1/
Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW -         d2/
QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH 5         f1
QmNtocSs7MoDkJMc1RkyisCSKvLadujPsfJfSdJ3e1eA1M 5         f2

Qmapxr4zxxUjoUFzyggydRZDkcJknjbtahYFKokbBAVghW:
Hash                                           Size      Name
QmZHVTX2epinyx5baTFV2L2ap9VtgbmfeFdhgntAypT5N3 1024      1024
QmaRGe7bVmVaLmxbrMiVNXqW4pRNNp3xq7hFtyRKA3mtJL 6         a
QmQSLRRd1Lxn6NMsWmmj2g9W3LtSRfmVAVqU3ShneLUrbn 8         bad\x7fname.txt

QmWWEQhcLufF3qPmmbUjqH7WVWBT9JrGJwPiVTryCoBs2j:
Hash                                           Size      Name
QmWUixdcx1VJtpuAgXAy4e3JPAbEoHE6VEDut5KcYcpuGN 128       128
QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN 6         a
EOF
    test_cmp expected_ls_stream_headers actual_ls_stream_headers
  
ok 49 - 'ipfs ls --stream --headers  <three dir hashes>' output looks good
50 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected Success 0.148
System.out »
expecting success: 
    mkdir -p somedir &&
    echo bar > somedir/foo &&
    ipfs add --raw-leaves -r somedir/ > /dev/null &&
    ipfs ls  QmThNTdtKaVoCVrYmM5EBS6U3S5vfKFue2TxbxxAxRcKKE > ls-actual
    echo "bafkreid5qzpjlgzem2iyzgddv7fjilipxcoxzgwazgn27q3usucn5wlxga 4 foo" > ls-expect
    test_cmp ls-actual ls-expect
  
ok 50 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
System.err »
 4 B / ? 

 4 B / 4 B  100.00%

 4 B / 4 B  100.00%
51 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected Success 0.155
System.out »
expecting success: 
    mkdir -p somedir &&
    echo bar > somedir/foo &&
    ipfs add --raw-leaves -r somedir/ > /dev/null &&
    ipfs ls --size QmThNTdtKaVoCVrYmM5EBS6U3S5vfKFue2TxbxxAxRcKKE > ls-actual
    echo "bafkreid5qzpjlgzem2iyzgddv7fjilipxcoxzgwazgn27q3usucn5wlxga 4 foo" > ls-expect
    test_cmp ls-actual ls-expect
  
ok 51 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
System.err »
 4 B / ? 

 4 B / 4 B  100.00%

 4 B / 4 B  100.00%
52 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 52 - 'ipfs daemon' is still running
53 - 'ipfs daemon' can be killed Success 0.274
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 53 - 'ipfs daemon' can be killed
54 - ipfs add medium size file then 'ipfs ls --size=false' works as expected Success 0.202
System.out »
expecting success: 
    random-data -size=500000 -seed=2 > somefile &&
    HASH=$(ipfs add somefile -q) &&
    echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo " > ls-expect &&
    echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm " >> ls-expect &&
    ipfs ls --size=false $HASH > ls-actual &&
    test_cmp ls-actual ls-expect
  
ok 54 - ipfs add medium size file then 'ipfs ls --size=false' works as expected
55 - ipfs add medium size file then 'ipfs ls' works as expected Success 0.199
System.out »
expecting success: 
    random-data -size=500000 -seed=2 > somefile &&
    HASH=$(ipfs add somefile -q) &&
    echo "QmWJuiG6dhfwo3KXxCc9gkdizoMoXbLMCDiTTZgEhSmyyo 262144 " > ls-expect &&
    echo "QmNPxtpjhoXMRVKm4oSwcJaS4fck5FR4LufPd5KJr4jYhm 237856 " >> ls-expect &&
    ipfs ls $HASH > ls-actual &&
    test_cmp ls-actual ls-expect
  
ok 55 - ipfs add medium size file then 'ipfs ls' works as expected
56 - 'ipfs add -r' succeeds Success 0.095
System.out »
expecting success: 
  mkdir adir &&
  # note: not using a seed as the files need to have truly random content
  random-data -size=1000 > adir/file1 &&
  random-data -size=1000 > adir/file2 &&
  ipfs add --pin=false -q -r adir > adir-hashes

ok 56 - 'ipfs add -r' succeeds
57 - get hashes from add output Success 0.009
System.out »
expecting success: 
  FILE=`head -1 adir-hashes` &&
  DIR=`tail -1 adir-hashes` &&
  test "$FILE" -a "$DIR"

ok 57 - get hashes from add output
58 - remove a file in dir Success 0.091
System.out »
expecting success: 
  ipfs block rm $FILE

removed QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
ok 58 - remove a file in dir
59 - 'ipfs ls --resolve-type=false ' fails Success 0.078
System.out »
expecting success: 
  test_must_fail ipfs ls --resolve-type=false $DIR > /dev/null

ok 59 - 'ipfs ls --resolve-type=false ' fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
60 - 'ipfs ls' fails Success 0.093
System.out »
expecting success: 
  test_must_fail ipfs ls $DIR

ok 60 - 'ipfs ls' fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
61 - 'ipfs ls --resolve-type=true --size=false' fails Success 0.130
System.out »
expecting success: 
  test_must_fail ipfs ls --resolve-type=true --size=false $DIR

ok 61 - 'ipfs ls --resolve-type=true --size=false' fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
62 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 62 - 'ipfs daemon' succeeds
63 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 63 - api file shows up
64 - set up address variables Success 0.028
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 64 - set up address variables
65 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 65 - 'ipfs daemon' is ready
66 - 'ipfs ls --resolve-type=false --size=false' ok Success 0.067
System.out »
expecting success: 
  ipfs ls --resolve-type=false --size=false $DIR > /dev/null

ok 66 - 'ipfs ls --resolve-type=false --size=false' ok
67 - 'ipfs ls' fails Success 0.074
System.out »
expecting success: 
  test_must_fail ipfs ls $DIR

ok 67 - 'ipfs ls' fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
68 - 'ipfs ls --resolve-type=false --size=true' fails Success 0.069
System.out »
expecting success: 
  test_must_fail ipfs ls --resolve-type=false --size=true $DIR

ok 68 - 'ipfs ls --resolve-type=false --size=true' fails
System.err »
Error: block was not found locally (offline): ipld: could not find QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke
69 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 69 - 'ipfs daemon' is still running
70 - 'ipfs daemon' can be killed Success 0.280
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 70 - 'ipfs daemon' can be killed
71 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 71 - 'ipfs daemon' succeeds
72 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 72 - api file shows up
73 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 73 - set up address variables
74 - get swarm addresses Success 0.117
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 74 - get swarm addresses
75 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 75 - set swarm address vars
76 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 76 - 'ipfs daemon' is ready
77 - 'ipfs ls --resolve-type=false --size=false' ok and does not hang Success 0.117
System.out »
expecting success: 
  go-timeout 2 ipfs ls --resolve-type=false --size=false $DIR

QmXp5CoYw2AQD7hybo12iknYrADUkqT7NX62FYie6ZChke file1
QmU8mKT3N1P9YPHbQM4ME7Pe4vGxFYwsSfunExfs2tgdHU file2
ok 77 - 'ipfs ls --resolve-type=false --size=false' ok and does not hang
78 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 78 - 'ipfs daemon' is still running
79 - 'ipfs daemon' can be killed Success 0.253
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 79 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs add -r testData' succeeds
ok 5 - 'ipfs add' output looks good
ok 6 - 'ipfs ls <three dir hashes>' succeeds
ok 7 - 'ipfs ls <three dir hashes>' output looks good
ok 8 - 'ipfs ls --size=false <three dir hashes>' succeeds
ok 9 - 'ipfs ls <three dir hashes>' output looks good
ok 10 - 'ipfs ls --headers <three dir hashes>' succeeds
ok 11 - 'ipfs ls --headers  <three dir hashes>' output looks good
ok 12 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds
ok 13 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good
ok 14 - 'ipfs add -r testData' succeeds
ok 15 - 'ipfs add' output looks good
ok 16 - 'ipfs ls --stream <three dir hashes>' succeeds
ok 17 - 'ipfs ls --stream <three dir hashes>' output looks good
ok 18 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds
ok 19 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good
ok 20 - 'ipfs ls --stream --headers <three dir hashes>' succeeds
ok 21 - 'ipfs ls --stream --headers  <three dir hashes>' output looks good
ok 22 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
ok 23 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
ok 24 - ipfs add medium size file then 'ipfs ls --size=false' works as expected
ok 25 - ipfs add medium size file then 'ipfs ls' works as expected
ok 26 - 'ipfs daemon' succeeds
ok 27 - api file shows up
ok 28 - set up address variables
ok 29 - get swarm addresses
ok 30 - set swarm address vars
ok 31 - 'ipfs daemon' is ready
ok 32 - 'ipfs add -r testData' succeeds
ok 33 - 'ipfs add' output looks good
ok 34 - 'ipfs ls <three dir hashes>' succeeds
ok 35 - 'ipfs ls <three dir hashes>' output looks good
ok 36 - 'ipfs ls --size=false <three dir hashes>' succeeds
ok 37 - 'ipfs ls <three dir hashes>' output looks good
ok 38 - 'ipfs ls --headers <three dir hashes>' succeeds
ok 39 - 'ipfs ls --headers  <three dir hashes>' output looks good
ok 40 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' succeeds
ok 41 - 'ipfs ls --size=false --cid-base=base32 <three dir hashes>' output looks good
ok 42 - 'ipfs add -r testData' succeeds
ok 43 - 'ipfs add' output looks good
ok 44 - 'ipfs ls --stream <three dir hashes>' succeeds
ok 45 - 'ipfs ls --stream <three dir hashes>' output looks good
ok 46 - 'ipfs ls --size=false --stream <three dir hashes>' succeeds
ok 47 - 'ipfs ls --size=false --stream <three dir hashes>' output looks good
ok 48 - 'ipfs ls --stream --headers <three dir hashes>' succeeds
ok 49 - 'ipfs ls --stream --headers  <three dir hashes>' output looks good
ok 50 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
ok 51 - 'ipfs add -r --raw-leaves' then 'ipfs ls' works as expected
ok 52 - 'ipfs daemon' is still running
ok 53 - 'ipfs daemon' can be killed
ok 54 - ipfs add medium size file then 'ipfs ls --size=false' works as expected
ok 55 - ipfs add medium size file then 'ipfs ls' works as expected
ok 56 - 'ipfs add -r' succeeds
ok 57 - get hashes from add output
ok 58 - remove a file in dir
ok 59 - 'ipfs ls --resolve-type=false ' fails
ok 60 - 'ipfs ls' fails
ok 61 - 'ipfs ls --resolve-type=true --size=false' fails
ok 62 - 'ipfs daemon' succeeds
ok 63 - api file shows up
ok 64 - set up address variables
ok 65 - 'ipfs daemon' is ready
ok 66 - 'ipfs ls --resolve-type=false --size=false' ok
ok 67 - 'ipfs ls' fails
ok 68 - 'ipfs ls --resolve-type=false --size=true' fails
ok 69 - 'ipfs daemon' is still running
ok 70 - 'ipfs daemon' can be killed
ok 71 - 'ipfs daemon' succeeds
ok 72 - api file shows up
ok 73 - set up address variables
ok 74 - get swarm addresses
ok 75 - set swarm address vars
ok 76 - 'ipfs daemon' is ready
ok 77 - 'ipfs ls --resolve-type=false --size=false' ok and does not hang
ok 78 - 'ipfs daemon' is still running
ok 79 - 'ipfs daemon' can be killed

Back to top

TestCase t0046-id-hash

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.108
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.176
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.497
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0046-id-hash.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0046-id-hash.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0046-id-hash.sh/mfs"
ok 3 - prepare config -- mounting
4 - can fetch random identity hash Success 0.093
System.out »
expecting success: 
  ipfs cat $ID_HASH0 > expected &&
  echo $ID_HASH0_CONTENTS > actual &&
  test_cmp expected actual

ok 4 - can fetch random identity hash
5 - can pin random identity hash Success 0.088
System.out »
expecting success: 
  ipfs pin add $ID_HASH0

pinned bafkqaedknncdsodknncdsnzvnbvuioak recursively
ok 5 - can pin random identity hash
6 - ipfs add succeeds with identity hash Success 0.091
System.out »
expecting success: 
  echo "djkd7jdkd7jkHHG" > junk.txt &&
  HASH=$(ipfs add -q --hash=identity junk.txt)

ok 6 - ipfs add succeeds with identity hash
7 - content not actually added Success 0.099
System.out »
expecting success: 
  ipfs refs local > locals &&
  test_should_not_contain $HASH locals

ok 7 - content not actually added
8 - but can fetch it anyway Success 0.090
System.out »
expecting success: 
  ipfs cat $HASH > actual &&
  test_cmp junk.txt actual

ok 8 - but can fetch it anyway
9 - block rm does nothing Success 0.170
System.out »
expecting success: 
  ipfs pin rm $HASH &&
  ipfs block rm $HASH

unpinned bafkqaedenjvwin3kmrvwin3knneeqryk
removed bafkqaedenjvwin3kmrvwin3knneeqryk
ok 9 - block rm does nothing
10 - can still fetch it Success 0.094
System.out »
expecting success: 
  ipfs cat $HASH > actual
  test_cmp junk.txt actual

ok 10 - can still fetch it
11 - ipfs add --inline works as expected Success 0.089
System.out »
expecting success: 
  echo $ID_HASH0_CONTENTS > afile &&
  HASH=$(ipfs add -q --inline afile)

ok 11 - ipfs add --inline works as expected
12 - ipfs add --inline uses identity multihash Success 0.007
System.out »
expecting success: 
  MHTYPE=`cid-fmt %h $HASH`
  echo "mhtype is $MHTYPE"
  test "$MHTYPE" = identity

mhtype is identity
ok 12 - ipfs add --inline uses identity multihash
13 - ipfs add --inline --raw-leaves works as expected Success 0.093
System.out »
expecting success: 
  echo $ID_HASH0_CONTENTS > afile &&
  HASH=$(ipfs add -q --inline --raw-leaves afile)

ok 13 - ipfs add --inline --raw-leaves works as expected
14 - ipfs add --inline --raw-leaves outputs the correct hash Success 0.004
System.out »
expecting success: 
  echo "$ID_HASH0" = "$HASH" &&
  test "$ID_HASH0" = "$HASH"

bafkqaedknncdsodknncdsnzvnbvuioak = bafkqaedknncdsodknncdsnzvnbvuioak
ok 14 - ipfs add --inline --raw-leaves outputs the correct hash
15 - create 1000 bytes file and get its hash Success 0.089
System.out »
expecting success: 
  random-data -size=1000 -seed=2 > 1000bytes &&
  HASH0=$(ipfs add -q --raw-leaves --only-hash 1000bytes)

ok 15 - create 1000 bytes file and get its hash
16 - ipfs add --inline --raw-leaves works as expected on large file Success 0.099
System.out »
expecting success: 
  HASH=$(ipfs add -q --inline --raw-leaves 1000bytes)

ok 16 - ipfs add --inline --raw-leaves works as expected on large file
17 - ipfs add --inline --raw-leaves outputs the correct hash on large file Success 0.004
System.out »
expecting success: 
  echo "$HASH0" = "$HASH" &&
  test "$HASH0" = "$HASH"

bafkreiefucfbxl5mea433slto5biq64zaqeu5tcafglbnvr4j6ta6tfcum = bafkreiefucfbxl5mea433slto5biq64zaqeu5tcafglbnvr4j6ta6tfcum
ok 17 - ipfs add --inline --raw-leaves outputs the correct hash on large file
18 - enable filestore Success 0.083
System.out »
expecting success: 
  ipfs config --json Experimental.FilestoreEnabled true

ok 18 - enable filestore
19 - can fetch random identity hash (filestore enabled) Success 0.094
System.out »
expecting success: 
  ipfs cat $ID_HASH0 > expected &&
  echo $ID_HASH0_CONTENTS > actual &&
  test_cmp expected actual

ok 19 - can fetch random identity hash (filestore enabled)
20 - can pin random identity hash (filestore enabled) Success 0.099
System.out »
expecting success: 
  ipfs pin add $ID_HASH0

pinned bafkqaedknncdsodknncdsnzvnbvuioak recursively
ok 20 - can pin random identity hash (filestore enabled)
21 - ipfs add succeeds with identity hash and --nocopy Success 0.098
System.out »
expecting success: 
  echo "djkd7jdkd7jkHHG" > junk.txt &&
  HASH=$(ipfs add -q --hash=identity --nocopy junk.txt)

ok 21 - ipfs add succeeds with identity hash and --nocopy
22 - content not actually added (filestore enabled) Success 0.090
System.out »
expecting success: 
  ipfs refs local > locals &&
  test_should_not_contain $HASH locals

ok 22 - content not actually added (filestore enabled)
23 - but can fetch it anyway (filestore enabled) Success 0.093
System.out »
expecting success: 
  ipfs cat $HASH > actual &&
  test_cmp junk.txt actual

ok 23 - but can fetch it anyway (filestore enabled)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - can fetch random identity hash
ok 5 - can pin random identity hash
ok 6 - ipfs add succeeds with identity hash
ok 7 - content not actually added
ok 8 - but can fetch it anyway
ok 9 - block rm does nothing
ok 10 - can still fetch it
ok 11 - ipfs add --inline works as expected
ok 12 - ipfs add --inline uses identity multihash
ok 13 - ipfs add --inline --raw-leaves works as expected
ok 14 - ipfs add --inline --raw-leaves outputs the correct hash
ok 15 - create 1000 bytes file and get its hash
ok 16 - ipfs add --inline --raw-leaves works as expected on large file
ok 17 - ipfs add --inline --raw-leaves outputs the correct hash on large file
ok 18 - enable filestore
ok 19 - can fetch random identity hash (filestore enabled)
ok 20 - can pin random identity hash (filestore enabled)
ok 21 - ipfs add succeeds with identity hash and --nocopy
ok 22 - content not actually added (filestore enabled)
ok 23 - but can fetch it anyway (filestore enabled)

Back to top

TestCase t0047-add-mode-mtime

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.103
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.166
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.491
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mfs"
ok 3 - prepare config -- mounting
4 - set Import defaults to ensure deterministic cids for mod and mtime tests Success 0.242
System.out »
expecting success: 
  ipfs config --json Import.CidVersion 0 &&
  ipfs config Import.HashFunction sha2-256 &&
  ipfs config Import.UnixFSChunker size-262144

ok 4 - set Import defaults to ensure deterministic cids for mod and mtime tests
5 - can stat file string mode [direct] Success 0.192
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 5 - can stat file string mode [direct]
6 - can stat file octal mode [direct] Success 0.182
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 6 - can stat file octal mode [direct]
7 - can stat file modification time string [direct] Success 0.180
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 7 - can stat file modification time string [direct]
8 - can stat file modification time seconds [direct] Success 0.173
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 8 - can stat file modification time seconds [direct]
9 - can stat file modification time nanoseconds [direct] Success 0.182
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 9 - can stat file modification time nanoseconds [direct]
10 - can stat directory string mode [direct] Success 0.187
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 10 - can stat directory string mode [direct]
11 - can stat directory octal mode [direct] Success 0.188
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 11 - can stat directory octal mode [direct]
12 - can stat directory modification time string [direct] Success 0.176
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 12 - can stat directory modification time string [direct]
13 - can stat directory modification time seconds [direct] Success 0.180
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 13 - can stat directory modification time seconds [direct]
14 - can stat directory modification time nanoseconds [direct] Success 0.187
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 14 - can stat directory modification time nanoseconds [direct]
15 - can stat link string mode [direct] Success 0.178
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 15 - can stat link string mode [direct]
16 - can stat link octal mode [direct] Success 0.190
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 16 - can stat link octal mode [direct]
17 - can stat link modification time string [direct] Success 0.197
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 17 - can stat link modification time string [direct]
18 - can stat link modification time seconds [direct] Success 0.184
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 18 - can stat link modification time seconds [direct]
19 - can stat link modification time nanoseconds [direct] Success 0.183
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 19 - can stat link modification time nanoseconds [direct]
20 - can chain stat template [direct] Success 0.199
System.out »
expecting success: 
    HASH=$(ipfs add -q --mode=0644 --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime> <mtime-secs> <mtime-nsecs> <mode> <mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC 1603539720 54321 -rw-r--r-- 0644"
  
ok 20 - can chain stat template [direct]
21 - feature on file has no effect when not used [direct] Success 0.099
System.out »
expecting success: 
    touch "$TESTFILE" &&
    HASH=$(ipfs add -q "$TESTFILE") &&
    test "$HASH_NO_PRESERVE" = "$HASH"
  
ok 21 - feature on file has no effect when not used [direct]
22 - can preserve file mode [direct] Success 0.100
System.out »
expecting success: 
    touch "$TESTFILE" &&
    chmod $PRESERVE_MODE "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mode "$TESTFILE") &&
    test "$HASH_PRESERVE_MODE" = "$HASH"
  
ok 22 - can preserve file mode [direct]
23 - can preserve file modification time [direct] Success 0.102
System.out »
expecting success: 
    touch -m -d @$PRESERVE_MTIME "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mtime "$TESTFILE") &&
    test "$HASH_PRESERVE_MTIME" = "$HASH"
  
ok 23 - can preserve file modification time [direct]
24 - can preserve file mode and modification time [direct] Success 0.111
System.out »
expecting success: 
    touch -m -d @$PRESERVE_MTIME "$TESTFILE" &&
    chmod $PRESERVE_MODE "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mode --preserve-mtime "$TESTFILE") &&
    test "$HASH_PRESERVE_MODE_AND_MTIME" = "$HASH"
  
ok 24 - can preserve file mode and modification time [direct]
25 - can preserve symlink modification time [direct] Success 0.101
System.out »
expecting success: 
    touch -h -m -d @$PRESERVE_MTIME "$TESTLINK" &&
    HASH=$(ipfs add -q --preserve-mtime "$TESTLINK") &&
    test "$HASH_PRESERVE_LINK_MTIME" = "$HASH"
  
ok 25 - can preserve symlink modification time [direct]
26 - can set file mode [direct] Success 0.150
System.out »
expecting success: 
    touch "$TESTFILE" &&
    chmod 0600 "$TESTFILE" &&
    HASH=$(ipfs add -q --mode=$CUSTOM_MODE "$TESTFILE") &&
    test "$HASH_CUSTOM_MODE" = "$HASH"
  
ok 26 - can set file mode [direct]
27 - can set file modification time [direct] Success 0.112
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME "$TESTFILE") &&
    test "$HASH_CUSTOM_MTIME" = "$HASH"
  
ok 27 - can set file modification time [direct]
28 - can set file modification time nanoseconds [direct] Success 0.102
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTFILE") &&
    test "$HASH_CUSTOM_MTIME_NSECS" = "$HASH"
  
ok 28 - can set file modification time nanoseconds [direct]
29 - can set file mode and modification time [direct] Success 0.108
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    chmod 0600 "$TESTFILE" &&
    HASH=$(ipfs add -q --mode=$CUSTOM_MODE --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTFILE") &&
    test "$HASH_CUSTOM_MODE_AND_MTIME" = "$HASH"
  
ok 29 - can set file mode and modification time [direct]
30 - can set symlink modification time [direct] Success 0.093
System.out »
expecting success: 
    touch -h -m -t 202011021234.42 "$TESTLINK" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME "$TESTLINK") &&
    test "$HASH_CUSTOM_LINK_MTIME" = "$HASH"
  
ok 30 - can set symlink modification time [direct]
31 - cannot set mode on symbolic link Success 0.196
System.out »
expecting success: 
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mode=$CUSTOM_MODE "$TESTLINK") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "lrwxrwxrwx"
  
ok 31 - cannot set mode on symbolic link
32 - can set symlink modification time nanoseconds [direct] Success 0.104
System.out »
expecting success: 
    touch -h -m -t 202011021234.42 "$TESTLINK" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTLINK") &&
    test "$HASH_CUSTOM_LINK_MTIME_NSECS" = "$HASH"
  
ok 32 - can set symlink modification time nanoseconds [direct]
33 - can get preserved mode and modification time [direct] Success 0.104
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_PRESERVE_MODE_AND_MTIME)" &&
    ipfs get -o "$OUTFILE" $HASH_PRESERVE_MODE_AND_MTIME &&
    test "$PRESERVE_MODE:$PRESERVE_MTIME" = "$(stat -c "0%a:%Y" "$OUTFILE")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmYkvboLsvLFcSYmqVJRxvBdYRQLroLv9kELf3LRiCqBri_k3eYvl
ok 33 - can get preserved mode and modification time [direct]
System.err »
 0 B / ? 
 0 B / ?  0s
34 - can get custom mode and modification time [direct] Success 0.101
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_CUSTOM_MODE_AND_MTIME)" &&
    ipfs get -o "$OUTFILE" $HASH_CUSTOM_MODE_AND_MTIME &&
    TIMESTAMP=$(date +%s%N --date="$(stat -c "%y" "$OUTFILE")") &&
    MODETIME=$(stat -c "0%a:$TIMESTAMP" "$OUTFILE") &&
    printf -v EXPECTED "$CUSTOM_MODE:$CUSTOM_MTIME%09d" $CUSTOM_MTIME_NSECS &&
    test "$EXPECTED" = "$MODETIME"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmUkxrtBA8tPjwCYz1HrsoRfDz6NgKut3asVeHVQNH4C8L_ufH8lx
ok 34 - can get custom mode and modification time [direct]
System.err »
 0 B / ? 
 0 B / ?  0s
35 - can get custom symlink modification time [direct] Success 0.117
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_CUSTOM_LINK_MTIME_NSECS)" &&
    ipfs get -o "$OUTFILE" $HASH_CUSTOM_LINK_MTIME_NSECS &&
    TIMESTAMP=$(date +%s%N --date="$(stat -c "%y" "$OUTFILE")") &&
    printf -v EXPECTED "$CUSTOM_MTIME%09d" $CUSTOM_MTIME_NSECS &&
    test "$EXPECTED" = "$TIMESTAMP"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmPHYCxYvvHj6VxiPNJ3kXxcPsnJLDYUJqsDJWjvytmrmY_f5bew0
ok 35 - can get custom symlink modification time [direct]
System.err »
 0 B / 7 B    0.00%
 7 B / 7 B  100.00% 0s
36 - can change file mode [direct] Success 1.025
System.out »
expecting success: 
    NAME=$(mk_name) &&
    HASH=$(echo testfile | ipfs add -q --mode=0600) &&
    OUTFILE=$(mk_file "${NAME}") &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files chmod 444 /$NAME &&
    HASH2=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" $HASH2 &&
    test $(stat -c "%a" "$OUTFILE") = 444
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_2qvXhY4Zp2PfWkpn_Kfu4XD
ok 36 - can change file mode [direct]
System.err »
tr: write error: Broken pipe

 0 B / 9 B    0.00%
 9 B / 9 B  100.00% 0s
37 - can add file mode to cidv1 raw block [direct] Success 1.326
System.out »
expecting success: 
    NAME=$(mk_name) &&
    HASH=$(date | ipfs add -q --cid-version 1 --raw-leaves=true) &&
    OUTFILE=$(mk_file "${NAME}") &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files chmod 445 /$NAME &&
    HASH2=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" $HASH2 &&
    test $(stat -c "%a" "$OUTFILE") = 445
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_G0pPEs8b86BWmsAR_BdY5Yk
ok 37 - can add file mode to cidv1 raw block [direct]
System.err »
tr: write error: Broken pipe

 0 B / 29 B    0.00%
 29 B / 29 B  100.00% 0s
38 - can change file modification time [direct] Success 2.492
System.out »
expecting success: 
    NAME=$(mk_name) &&
    OUTFILE="$(mk_file "$NAME")" &&
    NOW=$(date +%s) &&
    HASH=$(echo testfile | ipfs add -q --mtime=$NOW) &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    sleep 1 &&
    ipfs files touch /$NAME &&
    HASH=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" "$HASH" &&
    test $(stat -c "%Y" "$OUTFILE") -gt $NOW
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_B4SCckCMGcGmrntp_T92IRQ
ok 38 - can change file modification time [direct]
System.err »
tr: write error: Broken pipe

 0 B / 9 B    0.00%
 9 B / 9 B  100.00% 0s
39 - can add file modification time to cidv1 raw block [direct] Success 1.529
System.out »
expecting success: 
    NAME=$(mk_name) &&
    OUTFILE="$(mk_file "$NAME")" &&
    EXPECTED="$CUSTOM_MTIME" &&
    HASH=$(date | ipfs add -q --cid-version 1 --raw-leaves=true) &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files touch --mtime=$EXPECTED /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED &&
    HASH=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" "$HASH" &&
    test $(stat -c "%Y" "$OUTFILE") -eq $EXPECTED
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_5OB8dMeABGfGDQaa_Rh0aBV
ok 39 - can add file modification time to cidv1 raw block [direct]
System.err »
tr: write error: Broken pipe

 0 B / 29 B    0.00%
 29 B / 29 B  100.00% 0s
40 - can change file modification time nanoseconds [direct] Success 0.709
System.out »
expecting success: 
    NAME=$(mk_name) &&
    echo test|ipfs files write --create /$NAME &&
    EXPECTED=$(date --date="yesterday" +%s) &&
    ipfs files touch --mtime=$EXPECTED --mtime-nsecs=55567 /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $EXPECTED &&
    test $(ipfs files stat --format="<mtime-nsecs>" /$NAME) -eq 55567
  
ok 40 - can change file modification time nanoseconds [direct]
System.err »
tr: write error: Broken pipe
41 - can change symlink modification time [direct] Success 0.707
System.out »
expecting success: 
    NAME=$(mk_name) &&
    EXPECTED=$(date +%s) &&
    ipfs files cp "/ipfs/$HASH_PRESERVE_LINK_MTIME" "/$NAME" ||
    ipfs files touch --mtime=$EXPECTED "/$NAME" &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED
  
ok 41 - can change symlink modification time [direct]
System.err »
tr: write error: Broken pipe
Error: cp: cannot flush the created file /XPJ0dnfiUGzEakGA: symlinks not yet supported
42 - can change symlink modification time nanoseconds [direct] Success 0.628
System.out »
expecting success: 
    NAME=$(mk_name) &&
    EXPECTED=$(date +%s) &&
    ipfs files cp "/ipfs/$HASH_PRESERVE_LINK_MTIME" "/$NAME" ||
    ipfs files touch --mtime=$EXPECTED --mtime-nsecs=938475 "/$NAME" &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED &&
    test $(ipfs files stat --format="<mtime-nsecs>" "/$NAME") -eq 938475
  
ok 42 - can change symlink modification time nanoseconds [direct]
System.err »
tr: write error: Broken pipe
Error: cp: cannot flush the created file /zmvmPIakJqcpdN66: symlinks not yet supported
43 - feature on directory has no effect when not used [direct] Success 0.090
System.out »
expecting success: 
    HASH=$(ipfs add -qr "$TESTDIR1") &&
    test "$HASH_DIR1_NO_PRESERVE" = "$HASH"
  
ok 43 - feature on directory has no effect when not used [direct]
44 - can preserve directory mode [direct] Success 0.082
System.out »
expecting success: 
    HASH=$(ipfs add -qr --preserve-mode "$TESTDIR1") &&
    test "$HASH_DIR1_PRESERVE_MODE" = "$HASH"
  
ok 44 - can preserve directory mode [direct]
45 - can preserve directory modification time [direct] Success 0.088
System.out »
expecting success: 
    HASH=$(ipfs add -qr --preserve-mtime "$TESTDIR1") &&
    test "$HASH_DIR1_PRESERVE_MTIME" = "$HASH"
  
ok 45 - can preserve directory modification time [direct]
46 - can set directory mode [direct] Success 0.091
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mode=$CUSTOM_DIR_MODE "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MODE" = "$HASH"
  
ok 46 - can set directory mode [direct]
47 - can set directory modification time [direct] Success 0.090
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MTIME" = "$HASH"
  
ok 47 - can set directory modification time [direct]
48 - can set directory modification time nanoseconds [direct] Success 0.087
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MTIME_NSECS" = "$HASH"
  
ok 48 - can set directory modification time nanoseconds [direct]
49 - can recursively preserve mode and modification time [direct] Success 0.111
System.out »
expecting success: 
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$TESTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$TESTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$TESTDIR/dir1")" &&
    HASHES=($(ipfs add -qr --preserve-mode --preserve-mtime "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_MODE_AND_MTIME[*]}"
  
ok 49 - can recursively preserve mode and modification time [direct]
50 - can recursively set directory mode [direct] Success 0.092
System.out »
expecting success: 
    HASHES=($(ipfs add -qr --mode=0753 "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_CUSTOM_MODE[*]}"
  
ok 50 - can recursively set directory mode [direct]
51 - can recursively set directory mtime [direct] Success 0.089
System.out »
expecting success: 
    HASHES=($(ipfs add -qr --mtime=$CUSTOM_MTIME "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_CUSTOM_MTIME[*]}"
  
ok 51 - can recursively set directory mtime [direct]
52 - can recursively restore mode and mtime [direct] Success 0.104
System.out »
expecting success: 
    ipfs get -o "$OUTDIR" $HASH_DIR_ROOT &&
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$OUTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$OUTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$OUTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$OUTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$OUTDIR/dir1")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_dir_direct_fVnm49
ok 52 - can recursively restore mode and mtime [direct]
System.err »
 0 B / 588 B    0.00%
 588 B / 588 B  100.00% 0s
53 - can recursively preserve and restore mode and mtime with CIDv1 [direct] Success 0.211
System.out »
expecting success: 
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$TESTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$TESTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$TESTDIR/dir1")" &&
    CIDV1DIR=$(ipfs add -Qr --preserve-mode --preserve-mtime --cid-version 1 "$TESTDIR") &&
    OUTDIRV1=$(mk_dir cidv1roundtrip$1) &&
    ipfs get -o "$OUTDIRV1" $CIDV1DIR &&
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$OUTDIRV1")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$OUTDIRV1/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir1")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_dir_cidv1roundtrip_eTzxzG
ok 53 - can recursively preserve and restore mode and mtime with CIDv1 [direct]
System.err »
 0 B / 606 B    0.00%
 606 B / 606 B  100.00% 0s
54 - can change directory mode [direct] Success 0.244
System.out »
expecting success: 
    NAME=$(mk_name) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files chmod 0710 /$NAME &&
    test $(ipfs files stat --format="<mode>" /$NAME) = "drwx--x---"
  
ok 54 - can change directory mode [direct]
System.err »
tr: write error: Broken pipe
55 - can change directory modification time [direct] Success 0.241
System.out »
expecting success: 
    NAME=$(mk_name) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files touch --mtime=$CUSTOM_MTIME /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $CUSTOM_MTIME
  
ok 55 - can change directory modification time [direct]
System.err »
tr: write error: Broken pipe
56 - can change directory modification time nanoseconds [direct] Success 0.304
System.out »
expecting success: 
    NAME=$(mk_name) &&
    MTIME=$(date --date="yesterday" +%s) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files touch --mtime=$MTIME --mtime-nsecs=94783 /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $MTIME &&
    test $(ipfs files stat --format="<mtime-nsecs>" /$NAME) -eq 94783
  
ok 56 - can change directory modification time nanoseconds [direct]
System.err »
tr: write error: Broken pipe
57 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 57 - 'ipfs daemon' succeeds
58 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 58 - api file shows up
59 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 59 - set up address variables
60 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 60 - 'ipfs daemon' is ready
61 - can stat file string mode [daemon] Success 0.138
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 61 - can stat file string mode [daemon]
62 - can stat file octal mode [daemon] Success 0.142
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 62 - can stat file octal mode [daemon]
63 - can stat file modification time string [daemon] Success 0.136
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 63 - can stat file modification time string [daemon]
64 - can stat file modification time seconds [daemon] Success 0.119
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 64 - can stat file modification time seconds [daemon]
65 - can stat file modification time nanoseconds [daemon] Success 0.125
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 65 - can stat file modification time nanoseconds [daemon]
66 - can stat directory string mode [daemon] Success 0.124
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 66 - can stat directory string mode [daemon]
67 - can stat directory octal mode [daemon] Success 0.118
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 67 - can stat directory octal mode [daemon]
68 - can stat directory modification time string [daemon] Success 0.131
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 68 - can stat directory modification time string [daemon]
69 - can stat directory modification time seconds [daemon] Success 0.117
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 69 - can stat directory modification time seconds [daemon]
70 - can stat directory modification time nanoseconds [daemon] Success 0.134
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 70 - can stat directory modification time nanoseconds [daemon]
71 - can stat link string mode [daemon] Success 0.112
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_STRING"
  
ok 71 - can stat link string mode [daemon]
72 - can stat link octal mode [daemon] Success 0.122
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mode="$STAT_MODE_OCTAL" "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "$STAT_MODE_OCTAL"
  
ok 72 - can stat link octal mode [daemon]
73 - can stat link modification time string [daemon] Success 0.112
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC"
  
ok 73 - can stat link modification time string [daemon]
74 - can stat link modification time seconds [daemon] Success 0.124
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-secs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME
  
ok 74 - can stat link modification time seconds [daemon]
75 - can stat link modification time nanoseconds [daemon] Success 0.116
System.out »
expecting success: 
    touch "$STAT_TARGET" &&
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime-nsecs>" /ipfs/$HASH) &&
    test $ACTUAL -eq $CUSTOM_MTIME_NSECS
  
ok 75 - can stat link modification time nanoseconds [daemon]
76 - can chain stat template [daemon] Success 0.116
System.out »
expecting success: 
    HASH=$(ipfs add -q --mode=0644 --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$STAT_TARGET") &&
    ACTUAL=$(ipfs files stat --format="<mtime> <mtime-secs> <mtime-nsecs> <mode> <mode-octal>" /ipfs/$HASH) &&
    test "$ACTUAL" = "24 Oct 2020, 11:42:00 UTC 1603539720 54321 -rw-r--r-- 0644"
  
ok 76 - can chain stat template [daemon]
77 - feature on file has no effect when not used [daemon] Success 0.061
System.out »
expecting success: 
    touch "$TESTFILE" &&
    HASH=$(ipfs add -q "$TESTFILE") &&
    test "$HASH_NO_PRESERVE" = "$HASH"
  
ok 77 - feature on file has no effect when not used [daemon]
78 - can preserve file mode [daemon] Success 0.064
System.out »
expecting success: 
    touch "$TESTFILE" &&
    chmod $PRESERVE_MODE "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mode "$TESTFILE") &&
    test "$HASH_PRESERVE_MODE" = "$HASH"
  
ok 78 - can preserve file mode [daemon]
79 - can preserve file modification time [daemon] Success 0.066
System.out »
expecting success: 
    touch -m -d @$PRESERVE_MTIME "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mtime "$TESTFILE") &&
    test "$HASH_PRESERVE_MTIME" = "$HASH"
  
ok 79 - can preserve file modification time [daemon]
80 - can preserve file mode and modification time [daemon] Success 0.063
System.out »
expecting success: 
    touch -m -d @$PRESERVE_MTIME "$TESTFILE" &&
    chmod $PRESERVE_MODE "$TESTFILE" &&
    HASH=$(ipfs add -q --preserve-mode --preserve-mtime "$TESTFILE") &&
    test "$HASH_PRESERVE_MODE_AND_MTIME" = "$HASH"
  
ok 80 - can preserve file mode and modification time [daemon]
81 - can preserve symlink modification time [daemon] Success 0.066
System.out »
expecting success: 
    touch -h -m -d @$PRESERVE_MTIME "$TESTLINK" &&
    HASH=$(ipfs add -q --preserve-mtime "$TESTLINK") &&
    test "$HASH_PRESERVE_LINK_MTIME" = "$HASH"
  
ok 81 - can preserve symlink modification time [daemon]
82 - can set file mode [daemon] Success 0.079
System.out »
expecting success: 
    touch "$TESTFILE" &&
    chmod 0600 "$TESTFILE" &&
    HASH=$(ipfs add -q --mode=$CUSTOM_MODE "$TESTFILE") &&
    test "$HASH_CUSTOM_MODE" = "$HASH"
  
ok 82 - can set file mode [daemon]
83 - can set file modification time [daemon] Success 0.074
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME "$TESTFILE") &&
    test "$HASH_CUSTOM_MTIME" = "$HASH"
  
ok 83 - can set file modification time [daemon]
84 - can set file modification time nanoseconds [daemon] Success 0.072
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTFILE") &&
    test "$HASH_CUSTOM_MTIME_NSECS" = "$HASH"
  
ok 84 - can set file modification time nanoseconds [daemon]
85 - can set file mode and modification time [daemon] Success 0.078
System.out »
expecting success: 
    touch -m -t 202011021234.42 "$TESTFILE" &&
    chmod 0600 "$TESTFILE" &&
    HASH=$(ipfs add -q --mode=$CUSTOM_MODE --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTFILE") &&
    test "$HASH_CUSTOM_MODE_AND_MTIME" = "$HASH"
  
ok 85 - can set file mode and modification time [daemon]
86 - can set symlink modification time [daemon] Success 0.084
System.out »
expecting success: 
    touch -h -m -t 202011021234.42 "$TESTLINK" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME "$TESTLINK") &&
    test "$HASH_CUSTOM_LINK_MTIME" = "$HASH"
  
ok 86 - can set symlink modification time [daemon]
87 - cannot set mode on symbolic link Success 0.176
System.out »
expecting success: 
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mode=$CUSTOM_MODE "$TESTLINK") &&
    ACTUAL=$(ipfs files stat --format="<mode>" /ipfs/$HASH) &&
    test "$ACTUAL" = "lrwxrwxrwx"
  
ok 87 - cannot set mode on symbolic link
88 - can set symlink modification time nanoseconds [daemon] Success 0.124
System.out »
expecting success: 
    touch -h -m -t 202011021234.42 "$TESTLINK" &&
    HASH=$(ipfs add -q --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTLINK") &&
    test "$HASH_CUSTOM_LINK_MTIME_NSECS" = "$HASH"
  
ok 88 - can set symlink modification time nanoseconds [daemon]
89 - can get preserved mode and modification time [daemon] Success 0.112
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_PRESERVE_MODE_AND_MTIME)" &&
    ipfs get -o "$OUTFILE" $HASH_PRESERVE_MODE_AND_MTIME &&
    test "$PRESERVE_MODE:$PRESERVE_MTIME" = "$(stat -c "0%a:%Y" "$OUTFILE")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmYkvboLsvLFcSYmqVJRxvBdYRQLroLv9kELf3LRiCqBri_VKx9gO
ok 89 - can get preserved mode and modification time [daemon]
System.err »
 0 B / ? 
 0 B / ?  0s
90 - can get custom mode and modification time [daemon] Success 0.106
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_CUSTOM_MODE_AND_MTIME)" &&
    ipfs get -o "$OUTFILE" $HASH_CUSTOM_MODE_AND_MTIME &&
    TIMESTAMP=$(date +%s%N --date="$(stat -c "%y" "$OUTFILE")") &&
    MODETIME=$(stat -c "0%a:$TIMESTAMP" "$OUTFILE") &&
    printf -v EXPECTED "$CUSTOM_MODE:$CUSTOM_MTIME%09d" $CUSTOM_MTIME_NSECS &&
    test "$EXPECTED" = "$MODETIME"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmUkxrtBA8tPjwCYz1HrsoRfDz6NgKut3asVeHVQNH4C8L_HMNCHZ
ok 90 - can get custom mode and modification time [daemon]
System.err »
 0 B / ? 
 0 B / ?  0s
91 - can get custom symlink modification time [daemon] Success 0.121
System.out »
expecting success: 
    OUTFILE="$(mk_file $HASH_CUSTOM_LINK_MTIME_NSECS)" &&
    ipfs get -o "$OUTFILE" $HASH_CUSTOM_LINK_MTIME_NSECS &&
    TIMESTAMP=$(date +%s%N --date="$(stat -c "%y" "$OUTFILE")") &&
    printf -v EXPECTED "$CUSTOM_MTIME%09d" $CUSTOM_MTIME_NSECS &&
    test "$EXPECTED" = "$TIMESTAMP"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_QmPHYCxYvvHj6VxiPNJ3kXxcPsnJLDYUJqsDJWjvytmrmY_ZeDxZV
ok 91 - can get custom symlink modification time [daemon]
System.err »
 0 B / 7 B    0.00%
 7 B / 7 B  100.00% 0s
92 - can change file mode [daemon] Success 0.437
System.out »
expecting success: 
    NAME=$(mk_name) &&
    HASH=$(echo testfile | ipfs add -q --mode=0600) &&
    OUTFILE=$(mk_file "${NAME}") &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files chmod 444 /$NAME &&
    HASH2=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" $HASH2 &&
    test $(stat -c "%a" "$OUTFILE") = 444
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_wm2D2LDljex4tsar_4pzeBH
ok 92 - can change file mode [daemon]
System.err »
tr: write error: Broken pipe

 0 B / 9 B    0.00%
 9 B / 9 B  100.00% 0s
93 - can add file mode to cidv1 raw block [daemon] Success 0.311
System.out »
expecting success: 
    NAME=$(mk_name) &&
    HASH=$(date | ipfs add -q --cid-version 1 --raw-leaves=true) &&
    OUTFILE=$(mk_file "${NAME}") &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files chmod 445 /$NAME &&
    HASH2=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" $HASH2 &&
    test $(stat -c "%a" "$OUTFILE") = 445
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_VHTnfEapZVdH5lpI_gDgL9n
ok 93 - can add file mode to cidv1 raw block [daemon]
System.err »
tr: write error: Broken pipe

 0 B / 29 B    0.00%
 29 B / 29 B  100.00% 0s
94 - can change file modification time [daemon] Success 1.797
System.out »
expecting success: 
    NAME=$(mk_name) &&
    OUTFILE="$(mk_file "$NAME")" &&
    NOW=$(date +%s) &&
    HASH=$(echo testfile | ipfs add -q --mtime=$NOW) &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    sleep 1 &&
    ipfs files touch /$NAME &&
    HASH=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" "$HASH" &&
    test $(stat -c "%Y" "$OUTFILE") -gt $NOW
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_AfJ1NsDFltT0vzGK_C4motV
ok 94 - can change file modification time [daemon]
System.err »
tr: write error: Broken pipe

 0 B / 9 B    0.00%
 9 B / 9 B  100.00% 0s
95 - can add file modification time to cidv1 raw block [daemon] Success 0.885
System.out »
expecting success: 
    NAME=$(mk_name) &&
    OUTFILE="$(mk_file "$NAME")" &&
    EXPECTED="$CUSTOM_MTIME" &&
    HASH=$(date | ipfs add -q --cid-version 1 --raw-leaves=true) &&
    ipfs files cp "/ipfs/$HASH" /$NAME &&
    ipfs files touch --mtime=$EXPECTED /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED &&
    HASH=$(ipfs files stat /$NAME|head -1) &&
    ipfs get -o "$OUTFILE" "$HASH" &&
    test $(stat -c "%Y" "$OUTFILE") -eq $EXPECTED
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_file_SqlehuUVKOKtyuuk_q3kr6x
ok 95 - can add file modification time to cidv1 raw block [daemon]
System.err »
tr: write error: Broken pipe

 0 B / 29 B    0.00%
 29 B / 29 B  100.00% 0s
96 - can change file modification time nanoseconds [daemon] Success 0.532
System.out »
expecting success: 
    NAME=$(mk_name) &&
    echo test|ipfs files write --create /$NAME &&
    EXPECTED=$(date --date="yesterday" +%s) &&
    ipfs files touch --mtime=$EXPECTED --mtime-nsecs=55567 /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $EXPECTED &&
    test $(ipfs files stat --format="<mtime-nsecs>" /$NAME) -eq 55567
  
ok 96 - can change file modification time nanoseconds [daemon]
System.err »
tr: write error: Broken pipe
97 - can change symlink modification time [daemon] Success 0.507
System.out »
expecting success: 
    NAME=$(mk_name) &&
    EXPECTED=$(date +%s) &&
    ipfs files cp "/ipfs/$HASH_PRESERVE_LINK_MTIME" "/$NAME" ||
    ipfs files touch --mtime=$EXPECTED "/$NAME" &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED
  
ok 97 - can change symlink modification time [daemon]
System.err »
tr: write error: Broken pipe
Error: cp: cannot flush the created file /WcCLYnXlTCTMrCJT: symlinks not yet supported
98 - can change symlink modification time nanoseconds [daemon] Success 0.376
System.out »
expecting success: 
    NAME=$(mk_name) &&
    EXPECTED=$(date +%s) &&
    ipfs files cp "/ipfs/$HASH_PRESERVE_LINK_MTIME" "/$NAME" ||
    ipfs files touch --mtime=$EXPECTED --mtime-nsecs=938475 "/$NAME" &&
    test $(ipfs files stat --format="<mtime-secs>" "/$NAME") -eq $EXPECTED &&
    test $(ipfs files stat --format="<mtime-nsecs>" "/$NAME") -eq 938475
  
ok 98 - can change symlink modification time nanoseconds [daemon]
System.err »
tr: write error: Broken pipe
Error: cp: cannot flush the created file /pyMhRp634L9TSLb9: symlinks not yet supported
99 - feature on directory has no effect when not used [daemon] Success 0.223
System.out »
expecting success: 
    HASH=$(ipfs add -qr "$TESTDIR1") &&
    test "$HASH_DIR1_NO_PRESERVE" = "$HASH"
  
ok 99 - feature on directory has no effect when not used [daemon]
100 - can preserve directory mode [daemon] Success 0.176
System.out »
expecting success: 
    HASH=$(ipfs add -qr --preserve-mode "$TESTDIR1") &&
    test "$HASH_DIR1_PRESERVE_MODE" = "$HASH"
  
ok 100 - can preserve directory mode [daemon]
101 - can preserve directory modification time [daemon] Success 0.154
System.out »
expecting success: 
    HASH=$(ipfs add -qr --preserve-mtime "$TESTDIR1") &&
    test "$HASH_DIR1_PRESERVE_MTIME" = "$HASH"
  
ok 101 - can preserve directory modification time [daemon]
102 - can set directory mode [daemon] Success 0.243
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mode=$CUSTOM_DIR_MODE "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MODE" = "$HASH"
  
ok 102 - can set directory mode [daemon]
103 - can set directory modification time [daemon] Success 0.102
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MTIME" = "$HASH"
  
ok 103 - can set directory modification time [daemon]
104 - can set directory modification time nanoseconds [daemon] Success 0.080
System.out »
expecting success: 
    HASH=$(ipfs add -qr --mtime=$CUSTOM_MTIME --mtime-nsecs=$CUSTOM_MTIME_NSECS "$TESTDIR1") &&
    test "$HASH_DIR1_CUSTOM_MTIME_NSECS" = "$HASH"
  
ok 104 - can set directory modification time nanoseconds [daemon]
105 - can recursively preserve mode and modification time [daemon] Success 0.123
System.out »
expecting success: 
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$TESTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$TESTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$TESTDIR/dir1")" &&
    HASHES=($(ipfs add -qr --preserve-mode --preserve-mtime "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_MODE_AND_MTIME[*]}"
  
ok 105 - can recursively preserve mode and modification time [daemon]
106 - can recursively set directory mode [daemon] Success 0.072
System.out »
expecting success: 
    HASHES=($(ipfs add -qr --mode=0753 "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_CUSTOM_MODE[*]}"
  
ok 106 - can recursively set directory mode [daemon]
107 - can recursively set directory mtime [daemon] Success 0.071
System.out »
expecting success: 
    HASHES=($(ipfs add -qr --mtime=$CUSTOM_MTIME "$TESTDIR"|sort)) &&
    test "${HASHES[*]}" = "${HASH_DIR_CUSTOM_MTIME[*]}"
  
ok 107 - can recursively set directory mtime [daemon]
108 - can recursively restore mode and mtime [daemon] Success 0.085
System.out »
expecting success: 
    ipfs get -o "$OUTDIR" $HASH_DIR_ROOT &&
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$OUTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$OUTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$OUTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$OUTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$OUTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$OUTDIR/dir1")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_dir_daemon_C3Mzdn
ok 108 - can recursively restore mode and mtime [daemon]
System.err »
 0 B / 588 B    0.00%
 588 B / 588 B  100.00% 0s
109 - can recursively preserve and restore mode and mtime with CIDv1 [daemon] Success 0.282
System.out »
expecting success: 
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$TESTDIR")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$TESTDIR/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$TESTDIR/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$TESTDIR/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$TESTDIR/dir1")" &&
    CIDV1DIR=$(ipfs add -Qr --preserve-mode --preserve-mtime --cid-version 1 "$TESTDIR") &&
    OUTDIRV1=$(mk_dir cidv1roundtrip$1) &&
    ipfs get -o "$OUTDIRV1" $CIDV1DIR &&
    test "700:$DIR_TIME" = "$(stat -c "%a:%Y" "$OUTDIRV1")" &&
    test "644:$((DIR_TIME+10))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/sub2/file3")" &&
    test "777:$((DIR_TIME+20))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/link1")" &&
    test "755:$((DIR_TIME+30))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1/sub2")" &&
    test "755:$((DIR_TIME+40))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2/sub1")" &&
    test "755:$((DIR_TIME+50))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir2")" &&
    test "644:$((DIR_TIME+60))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir3/file2")" &&
    test "755:$((DIR_TIME+70))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir3")" &&
    test "644:$((DIR_TIME+80))" = "$(stat -c "%a:%Y" "$OUTDIRV1/file1")" &&
    test "755:$((DIR_TIME+90))" = "$(stat -c "%a:%Y" "$OUTDIRV1/dir1")"
  
Saving file(s) to /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0047-add-mode-mtime.sh/mk_dir_cidv1roundtrip_5m5EAx
ok 109 - can recursively preserve and restore mode and mtime with CIDv1 [daemon]
System.err »
 0 B / 606 B    0.00%
 606 B / 606 B  100.00% 0s
110 - can change directory mode [daemon] Success 0.243
System.out »
expecting success: 
    NAME=$(mk_name) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files chmod 0710 /$NAME &&
    test $(ipfs files stat --format="<mode>" /$NAME) = "drwx--x---"
  
ok 110 - can change directory mode [daemon]
System.err »
tr: write error: Broken pipe
111 - can change directory modification time [daemon] Success 0.232
System.out »
expecting success: 
    NAME=$(mk_name) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files touch --mtime=$CUSTOM_MTIME /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $CUSTOM_MTIME
  
ok 111 - can change directory modification time [daemon]
System.err »
tr: write error: Broken pipe
112 - can change directory modification time nanoseconds [daemon] Success 0.268
System.out »
expecting success: 
    NAME=$(mk_name) &&
    MTIME=$(date --date="yesterday" +%s) &&
    ipfs files cp "/ipfs/$HASH_DIR_SUB1" /$NAME &&
    ipfs files touch --mtime=$MTIME --mtime-nsecs=94783 /$NAME &&
    test $(ipfs files stat --format="<mtime-secs>" /$NAME) -eq $MTIME &&
    test $(ipfs files stat --format="<mtime-nsecs>" /$NAME) -eq 94783
  
ok 112 - can change directory modification time nanoseconds [daemon]
System.err »
tr: write error: Broken pipe
113 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 113 - 'ipfs daemon' is still running
114 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 114 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - set Import defaults to ensure deterministic cids for mod and mtime tests
ok 5 - can stat file string mode [direct]
ok 6 - can stat file octal mode [direct]
ok 7 - can stat file modification time string [direct]
ok 8 - can stat file modification time seconds [direct]
ok 9 - can stat file modification time nanoseconds [direct]
ok 10 - can stat directory string mode [direct]
ok 11 - can stat directory octal mode [direct]
ok 12 - can stat directory modification time string [direct]
ok 13 - can stat directory modification time seconds [direct]
ok 14 - can stat directory modification time nanoseconds [direct]
ok 15 - can stat link string mode [direct]
ok 16 - can stat link octal mode [direct]
ok 17 - can stat link modification time string [direct]
ok 18 - can stat link modification time seconds [direct]
ok 19 - can stat link modification time nanoseconds [direct]
ok 20 - can chain stat template [direct]
ok 21 - feature on file has no effect when not used [direct]
ok 22 - can preserve file mode [direct]
ok 23 - can preserve file modification time [direct]
ok 24 - can preserve file mode and modification time [direct]
ok 25 - can preserve symlink modification time [direct]
ok 26 - can set file mode [direct]
ok 27 - can set file modification time [direct]
ok 28 - can set file modification time nanoseconds [direct]
ok 29 - can set file mode and modification time [direct]
ok 30 - can set symlink modification time [direct]
ok 31 - cannot set mode on symbolic link
ok 32 - can set symlink modification time nanoseconds [direct]
ok 33 - can get preserved mode and modification time [direct]
ok 34 - can get custom mode and modification time [direct]
ok 35 - can get custom symlink modification time [direct]
ok 36 - can change file mode [direct]
ok 37 - can add file mode to cidv1 raw block [direct]
ok 38 - can change file modification time [direct]
ok 39 - can add file modification time to cidv1 raw block [direct]
ok 40 - can change file modification time nanoseconds [direct]
ok 41 - can change symlink modification time [direct]
ok 42 - can change symlink modification time nanoseconds [direct]
ok 43 - feature on directory has no effect when not used [direct]
ok 44 - can preserve directory mode [direct]
ok 45 - can preserve directory modification time [direct]
ok 46 - can set directory mode [direct]
ok 47 - can set directory modification time [direct]
ok 48 - can set directory modification time nanoseconds [direct]
ok 49 - can recursively preserve mode and modification time [direct]
ok 50 - can recursively set directory mode [direct]
ok 51 - can recursively set directory mtime [direct]
ok 52 - can recursively restore mode and mtime [direct]
ok 53 - can recursively preserve and restore mode and mtime with CIDv1 [direct]
ok 54 - can change directory mode [direct]
ok 55 - can change directory modification time [direct]
ok 56 - can change directory modification time nanoseconds [direct]
ok 57 - 'ipfs daemon' succeeds
ok 58 - api file shows up
ok 59 - set up address variables
ok 60 - 'ipfs daemon' is ready
ok 61 - can stat file string mode [daemon]
ok 62 - can stat file octal mode [daemon]
ok 63 - can stat file modification time string [daemon]
ok 64 - can stat file modification time seconds [daemon]
ok 65 - can stat file modification time nanoseconds [daemon]
ok 66 - can stat directory string mode [daemon]
ok 67 - can stat directory octal mode [daemon]
ok 68 - can stat directory modification time string [daemon]
ok 69 - can stat directory modification time seconds [daemon]
ok 70 - can stat directory modification time nanoseconds [daemon]
ok 71 - can stat link string mode [daemon]
ok 72 - can stat link octal mode [daemon]
ok 73 - can stat link modification time string [daemon]
ok 74 - can stat link modification time seconds [daemon]
ok 75 - can stat link modification time nanoseconds [daemon]
ok 76 - can chain stat template [daemon]
ok 77 - feature on file has no effect when not used [daemon]
ok 78 - can preserve file mode [daemon]
ok 79 - can preserve file modification time [daemon]
ok 80 - can preserve file mode and modification time [daemon]
ok 81 - can preserve symlink modification time [daemon]
ok 82 - can set file mode [daemon]
ok 83 - can set file modification time [daemon]
ok 84 - can set file modification time nanoseconds [daemon]
ok 85 - can set file mode and modification time [daemon]
ok 86 - can set symlink modification time [daemon]
ok 87 - cannot set mode on symbolic link
ok 88 - can set symlink modification time nanoseconds [daemon]
ok 89 - can get preserved mode and modification time [daemon]
ok 90 - can get custom mode and modification time [daemon]
ok 91 - can get custom symlink modification time [daemon]
ok 92 - can change file mode [daemon]
ok 93 - can add file mode to cidv1 raw block [daemon]
ok 94 - can change file modification time [daemon]
ok 95 - can add file modification time to cidv1 raw block [daemon]
ok 96 - can change file modification time nanoseconds [daemon]
ok 97 - can change symlink modification time [daemon]
ok 98 - can change symlink modification time nanoseconds [daemon]
ok 99 - feature on directory has no effect when not used [daemon]
ok 100 - can preserve directory mode [daemon]
ok 101 - can preserve directory modification time [daemon]
ok 102 - can set directory mode [daemon]
ok 103 - can set directory modification time [daemon]
ok 104 - can set directory modification time nanoseconds [daemon]
ok 105 - can recursively preserve mode and modification time [daemon]
ok 106 - can recursively set directory mode [daemon]
ok 107 - can recursively set directory mtime [daemon]
ok 108 - can recursively restore mode and mtime [daemon]
ok 109 - can recursively preserve and restore mode and mtime with CIDv1 [daemon]
ok 110 - can change directory mode [daemon]
ok 111 - can change directory modification time [daemon]
ok 112 - can change directory modification time nanoseconds [daemon]
ok 113 - 'ipfs daemon' is still running
ok 114 - 'ipfs daemon' can be killed

Back to top

TestCase t0050-block

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.105
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.153
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.489
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0050-block.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0050-block.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0050-block.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs block put' succeeds Success 0.091
System.out »
expecting success: 
  echo "Hello Mars!" >expected_in &&
  ipfs block put <expected_in | tee actual_out

bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
ok 4 - 'ipfs block put' succeeds
5 - 'ipfs block put' output looks good Success 0.005
System.out »
expecting success: 
  echo "$HASH" >expected_out &&
  test_cmp expected_out actual_out

ok 5 - 'ipfs block put' output looks good
6 - 'ipfs block put' with 2 files succeeds Success 0.091
System.out »
expecting success: 
  echo "Hello Mars!" > a &&
  echo "Hello Venus!" > b &&
  ipfs block put a b | tee actual_out

bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
bafkreihfsphazrk2ilejpekyltjeh5k4yvwgjuwg26ueafohqioeo3sdca
ok 6 - 'ipfs block put' with 2 files succeeds
7 - 'ipfs block put' output looks good Success 0.005
System.out »
expecting success: 
  echo "$HASH" >expected_out &&
  echo "$HASHB" >>expected_out &&
  test_cmp expected_out actual_out

ok 7 - 'ipfs block put' output looks good
8 - can set cid codec on block put Success 0.083
System.out »
expecting success: 
  CODEC_HASH=$(ipfs block put --cid-codec=dag-pb ../t0050-block-data/testPut.pb)

ok 8 - can set cid codec on block put
9 - block get output looks right Success 0.080
System.out »
expecting success: 
  ipfs block get $CODEC_HASH > pb_block_out &&
  test_cmp pb_block_out ../t0050-block-data/testPut.pb

ok 9 - block get output looks right
10 - 'ipfs block get' succeeds Success 0.092
System.out »
expecting success: 
  ipfs block get $HASH >actual_in

ok 10 - 'ipfs block get' succeeds
11 - 'ipfs block get' output looks good Success 0.006
System.out »
expecting success: 
  test_cmp expected_in actual_in

ok 11 - 'ipfs block get' output looks good
12 - 'ipfs block stat' succeeds Success 0.088
System.out »
expecting success: 
  ipfs block stat $HASH >actual_stat

ok 12 - 'ipfs block stat' succeeds
13 - 'ipfs block stat' output looks good Success 0.006
System.out »
expecting success: 
  echo "Key: $HASH" >expected_stat &&
  echo "Size: 12" >>expected_stat &&
  test_cmp expected_stat actual_stat

ok 13 - 'ipfs block stat' output looks good
14 - 'ipfs block rm' succeeds Success 0.087
System.out »
expecting success: 
  ipfs block rm $HASH >actual_rm

ok 14 - 'ipfs block rm' succeeds
15 - 'ipfs block rm' output looks good Success 0.005
System.out »
expecting success: 
  echo "removed $HASH" > expected_rm &&
  test_cmp expected_rm actual_rm

ok 15 - 'ipfs block rm' output looks good
16 - 'ipfs block rm' block actually removed Success 0.079
System.out »
expecting success: 
  test_must_fail ipfs block stat $HASH

ok 16 - 'ipfs block rm' block actually removed
System.err »
Error: block was not found locally (offline): ipld: could not find bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
17 - add and pin directory Success 0.285
System.out »
expecting success: 
  echo "test" | ipfs add --pin=false &&
  mkdir adir &&
  echo "file1" > adir/file1 &&
  echo "file2" > adir/file2 &&
  echo "file3" > adir/file3 &&
  ipfs add -r adir
  ipfs pin add -r $DIRHASH

added QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH
added Qmae3RedM7SNkWGsdzYzsr6svmsFdsva4WoTvYYsWhUSVz adir/file1
added QmUtkGLvPf63NwVzLPKPUYgwhn8ZYPWF6vKWN3fZ2amfJF adir/file2
added Qmesmmf1EEG1orJb6XdK6DabxexsseJnCfw8pqWgonbkoj adir/file3
added QmdWmVmM6W2abTgkEfpbtA1CJyTWS2rhuUB9uP1xV8Uwtf adir
pinned QmdWmVmM6W2abTgkEfpbtA1CJyTWS2rhuUB9uP1xV8Uwtf recursively
ok 17 - add and pin directory
System.err »
 5 B / ? 

 5 B / ? 
 5 B / 5 B  100.00%
 6 B / 18 B   33.33%

 6 B / 18 B   33.33%
 12 B / 18 B   66.67%

 12 B / 18 B   66.67%
 18 B / 18 B  100.00%

 18 B / 18 B  100.00%

 18 B / 18 B  100.00%
18 - can't remove pinned block Success 0.098
System.out »
expecting success: 
  test_must_fail ipfs block rm $DIRHASH 2> block_rm_err

ok 18 - can't remove pinned block
19 - can't remove pinned block: output looks good Success 0.007
System.out »
expecting success: 
  grep -q "$DIRHASH: pinned: recursive" block_rm_err

ok 19 - can't remove pinned block: output looks good
20 - can't remove indirectly pinned block Success 0.091
System.out »
expecting success: 
  test_must_fail ipfs block rm $FILE1HASH 2> block_rm_err

ok 20 - can't remove indirectly pinned block
21 - can't remove indirectly pinned block: output looks good Success 0.005
System.out »
expecting success: 
  grep -q "$FILE1HASH: pinned via $DIRHASH" block_rm_err

ok 21 - can't remove indirectly pinned block: output looks good
22 - remove pin Success 0.092
System.out »
expecting success: 
  ipfs pin rm -r $DIRHASH

unpinned QmdWmVmM6W2abTgkEfpbtA1CJyTWS2rhuUB9uP1xV8Uwtf
ok 22 - remove pin
23 - multi-block 'ipfs block rm' succeeds Success 0.089
System.out »
expecting success: 
  ipfs block rm $FILE1HASH $FILE2HASH $FILE3HASH > actual_rm

ok 23 - multi-block 'ipfs block rm' succeeds
24 - multi-block 'ipfs block rm' output looks good Success 0.008
System.out »
expecting success: 
  grep -F -q "removed $FILE1HASH" actual_rm &&
  grep -F -q "removed $FILE2HASH" actual_rm &&
  grep -F -q "removed $FILE3HASH" actual_rm

ok 24 - multi-block 'ipfs block rm' output looks good
25 - multi-block 'ipfs block rm <invalid> <valid> <invalid>' Success 0.091
System.out »
expecting success: 
  test_must_fail ipfs block rm $RANDOMHASH $TESTHASH $RANDOMHASH &> actual_mixed_rm

ok 25 - multi-block 'ipfs block rm <invalid> <valid> <invalid>'
26 - multi-block 'ipfs block rm <invalid> <valid> <invalid>' output looks good Success 0.006
System.out »
expecting success: 
  echo "cannot remove $RANDOMHASH: ipld: could not find $RANDOMHASH" >> expect_mixed_rm &&
  echo "removed $TESTHASH" >> expect_mixed_rm &&
  echo "cannot remove $RANDOMHASH: ipld: could not find $RANDOMHASH" >> expect_mixed_rm &&
  echo "Error: some blocks not removed" >> expect_mixed_rm
  test_cmp actual_mixed_rm expect_mixed_rm

ok 26 - multi-block 'ipfs block rm <invalid> <valid> <invalid>' output looks good
27 - 'add some blocks' succeeds Success 0.163
System.out »
expecting success: 
  echo "Hello Mars!" | ipfs block put &&
  echo "Hello Venus!" | ipfs block put

bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
bafkreihfsphazrk2ilejpekyltjeh5k4yvwgjuwg26ueafohqioeo3sdca
ok 27 - 'add some blocks' succeeds
28 - add and pin directory Success 0.196
System.out »
expecting success: 
  ipfs add -r adir
  ipfs pin add -r $DIRHASH

added Qmae3RedM7SNkWGsdzYzsr6svmsFdsva4WoTvYYsWhUSVz adir/file1
added QmUtkGLvPf63NwVzLPKPUYgwhn8ZYPWF6vKWN3fZ2amfJF adir/file2
added Qmesmmf1EEG1orJb6XdK6DabxexsseJnCfw8pqWgonbkoj adir/file3
added QmdWmVmM6W2abTgkEfpbtA1CJyTWS2rhuUB9uP1xV8Uwtf adir
pinned QmdWmVmM6W2abTgkEfpbtA1CJyTWS2rhuUB9uP1xV8Uwtf recursively
ok 28 - add and pin directory
System.err »
 6 B / 18 B   33.33%

 6 B / 18 B   33.33%
 12 B / 18 B   66.67%

 12 B / 18 B   66.67%
 18 B / 18 B  100.00%

 18 B / 18 B  100.00%

 18 B / 18 B  100.00%
29 - multi-block 'ipfs block rm' mixed Success 0.102
System.out »
expecting success: 
  test_must_fail ipfs block rm $FILE1HASH $DIRHASH $HASH $FILE3HASH $RANDOMHASH $HASH2 2> block_rm_err

removed QmRKqGMAM6EZngbpjSqrvYzq5Qd8b1bSWymjSUY9zQSNDk
removed QmdnpnsaEj69isdw5sNzp3h3HkaDz7xKq7BmvFFBzNr5e7
ok 29 - multi-block 'ipfs block rm' mixed
30 - pinned block not removed Success 0.209
System.out »
expecting success: 
  ipfs block stat $FILE1HASH &&
  ipfs block stat $FILE3HASH

Key: Qmae3RedM7SNkWGsdzYzsr6svmsFdsva4WoTvYYsWhUSVz
Size: 14
Key: Qmesmmf1EEG1orJb6XdK6DabxexsseJnCfw8pqWgonbkoj
Size: 14
ok 30 - pinned block not removed
31 - non-pinned blocks removed Success 0.184
System.out »
expecting success: 
  test_must_fail ipfs block stat $HASH &&
  test_must_fail ipfs block stat $HASH2

ok 31 - non-pinned blocks removed
System.err »
Error: block was not found locally (offline): ipld: could not find QmRKqGMAM6EZngbpjSqrvYzq5Qd8b1bSWymjSUY9zQSNDk
Error: block was not found locally (offline): ipld: could not find QmdnpnsaEj69isdw5sNzp3h3HkaDz7xKq7BmvFFBzNr5e7
32 - error reported on removing non-existent block Success 0.006
System.out »
expecting success: 
  grep -q "cannot remove $RANDOMHASH" block_rm_err

ok 32 - error reported on removing non-existent block
33 - 'add some blocks' succeeds Success 0.169
System.out »
expecting success: 
  echo "Hello Mars!" | ipfs block put &&
  echo "Hello Venus!" | ipfs block put

bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
bafkreihfsphazrk2ilejpekyltjeh5k4yvwgjuwg26ueafohqioeo3sdca
ok 33 - 'add some blocks' succeeds
34 - multi-block 'ipfs block rm -f' with non existent blocks succeed Success 0.089
System.out »
expecting success: 
  ipfs block rm -f $HASH $RANDOMHASH $HASH2

removed QmRKqGMAM6EZngbpjSqrvYzq5Qd8b1bSWymjSUY9zQSNDk
removed QmRKqGMAM6EbngbZjSqrvYzq5Qd8b1bSWymjSUY9zQSNDq
removed QmdnpnsaEj69isdw5sNzp3h3HkaDz7xKq7BmvFFBzNr5e7
ok 34 - multi-block 'ipfs block rm -f' with non existent blocks succeed
35 - existent blocks removed Success 0.170
System.out »
expecting success: 
  test_must_fail ipfs block stat $HASH &&
  test_must_fail ipfs block stat $HASH2

ok 35 - existent blocks removed
System.err »
Error: block was not found locally (offline): ipld: could not find QmRKqGMAM6EZngbpjSqrvYzq5Qd8b1bSWymjSUY9zQSNDk
Error: block was not found locally (offline): ipld: could not find QmdnpnsaEj69isdw5sNzp3h3HkaDz7xKq7BmvFFBzNr5e7
36 - 'add some blocks' succeeds Success 0.161
System.out »
expecting success: 
  echo "Hello Mars!" | ipfs block put &&
  echo "Hello Venus!" | ipfs block put

bafkreibmlvvgdyihetgocpof6xk64kjjzdeq2e4c7hqs3krdheosk4tgj4
bafkreihfsphazrk2ilejpekyltjeh5k4yvwgjuwg26ueafohqioeo3sdca
ok 36 - 'add some blocks' succeeds
37 - multi-block 'ipfs block rm -q' produces no output Success 0.090
System.out »
expecting success: 
  ipfs block rm -q $HASH $HASH2 > block_rm_out &&
  test ! -s block_rm_out

ok 37 - multi-block 'ipfs block rm -q' produces no output
38 - can set deprecated --format=protobuf on block put Success 0.086
System.out »
expecting success: 
  HASH=$(ipfs block put --format=protobuf ../t0050-block-data/testPut.pb)

ok 38 - can set deprecated --format=protobuf on block put
39 - created an object correctly! Success 0.128
System.out »
expecting success: 
  ipfs dag get $HASH > obj_out &&
  echo -n "{\"Data\":{\"/\":{\"bytes\":\"dGVzdCBqc29uIGZvciBzaGFybmVzcyB0ZXN0\"}},\"Links\":[]}" > obj_exp &&
  test_cmp obj_out obj_exp

ok 39 - created an object correctly!
40 - block get output looks right Success 0.143
System.out »
expecting success: 
  ipfs block get $HASH > pb_block_out &&
  test_cmp pb_block_out ../t0050-block-data/testPut.pb

ok 40 - block get output looks right
41 - can set --cid-codec=dag-pb on block put Success 0.231
System.out »
expecting success: 
  HASH=$(ipfs block put --cid-codec=dag-pb ../t0050-block-data/testPut.pb)

ok 41 - can set --cid-codec=dag-pb on block put
42 - created an object correctly! Success 0.180
System.out »
expecting success: 
  ipfs dag get $HASH > obj_out &&
  echo -n "{\"Data\":{\"/\":{\"bytes\":\"dGVzdCBqc29uIGZvciBzaGFybmVzcyB0ZXN0\"}},\"Links\":[]}" > obj_exp &&
  test_cmp obj_out obj_exp

ok 42 - created an object correctly!
43 - block get output looks right Success 0.285
System.out »
expecting success: 
  ipfs block get $HASH > pb_block_out &&
  test_cmp pb_block_out ../t0050-block-data/testPut.pb

ok 43 - block get output looks right
44 - can set multihash type and length on block put with --format=raw (deprecated) Success 0.179
System.out »
expecting success: 
  HASH=$(echo "foooo" | ipfs block put --format=raw --mhtype=sha3 --mhlen=20)

ok 44 - can set multihash type and length on block put with --format=raw (deprecated)
45 - output looks good Success 0.003
System.out »
expecting success: 
  test "bafkrifctrq4xazzixy2v4ezymjcvzpskqdwlxra" = "$HASH"

ok 45 - output looks good
46 - can't use both legacy format and custom cid-codec at the same time Success 0.174
System.out »
expecting success: 
  test_expect_code 1 ipfs block put --format=dag-cbor --cid-codec=dag-json < ../t0050-block-data/testPut.pb 2> output &&
  test_should_contain "unable to use \"format\" (deprecated) and a custom \"cid-codec\" at the same time" output

ok 46 - can't use both legacy format and custom cid-codec at the same time
47 - can read block with different hash Success 0.254
System.out »
expecting success: 
  ipfs block get $HASH > blk_get_out &&
  echo "foooo" > blk_get_exp &&
  test_cmp blk_get_exp blk_get_out

ok 47 - can read block with different hash
48 - 'ipfs block stat' with nothing from stdin doesn't crash Success 0.081
System.out »
expecting success: 
  test_expect_code 1 ipfs block stat < /dev/null 2> stat_out

ok 48 - 'ipfs block stat' with nothing from stdin doesn't crash
49 - no panic in output Success 0.007
System.out »
expecting success: 
  test_expect_code 1 grep "panic" stat_out

ok 49 - no panic in output
50 - can set multihash type and length on block put without format or cid-codec Success 0.216
System.out »
expecting success: 
  HASH=$(echo "foooo" | ipfs block put --mhtype=sha3 --mhlen=20)

ok 50 - can set multihash type and length on block put without format or cid-codec
51 - output looks good Success 0.005
System.out »
expecting success: 
  test "bafkrifctrq4xazzixy2v4ezymjcvzpskqdwlxra" = "$HASH"

ok 51 - output looks good
52 - can set multihash type and length on block put with cid-codec=dag-pb Success 0.211
System.out »
expecting success: 
  HASH=$(echo "foooo" | ipfs block put --mhtype=sha3 --mhlen=20 --cid-codec=dag-pb)

ok 52 - can set multihash type and length on block put with cid-codec=dag-pb
53 - output looks good Success 0.005
System.out »
expecting success: 
  test "bafybifctrq4xazzixy2v4ezymjcvzpskqdwlxra" = "$HASH"

ok 53 - output looks good
54 - put with sha3 and cidv0 fails Success 0.217
System.out »
expecting success: 
  echo "foooo" | test_must_fail ipfs block put --mhtype=sha3 --mhlen=20 --format=v0

ok 54 - put with sha3 and cidv0 fails
System.err »
Error: only sha2-255-32 is allowed with CIDv0
55 - 'ipfs block put' check block size Success 0.236
System.out »
expecting success: 
    dd if=/dev/zero bs=2097153 count=1 > over-2MiB-file &&
    test_expect_code 1 ipfs block put over-2MiB-file >block_put_out 2>&1
  
ok 55 - 'ipfs block put' check block size
System.err »
1+0 records in
1+0 records out
2097153 bytes (2.1 MB, 2.0 MiB) copied, 0.00220203 s, 952 MB/s
56 - ipfs block put output has the correct error Success 0.005
System.out »
expecting success: 
    grep "produced block is over 2MiB" block_put_out
  
Error: produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 56 - ipfs block put output has the correct error
57 - ipfs block put --allow-big-block=true works Success 0.347
System.out »
expecting success: 
    test_expect_code 0 ipfs block put over-2MiB-file --allow-big-block=true &&
    rm over-2MiB-file
  
bafkreihjucm4oxxyg7bixsiwqo7ocj7emp5a5yimch6yc34nfvbiydlbby
ok 57 - ipfs block put --allow-big-block=true works
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs block put' succeeds
ok 5 - 'ipfs block put' output looks good
ok 6 - 'ipfs block put' with 2 files succeeds
ok 7 - 'ipfs block put' output looks good
ok 8 - can set cid codec on block put
ok 9 - block get output looks right
ok 10 - 'ipfs block get' succeeds
ok 11 - 'ipfs block get' output looks good
ok 12 - 'ipfs block stat' succeeds
ok 13 - 'ipfs block stat' output looks good
ok 14 - 'ipfs block rm' succeeds
ok 15 - 'ipfs block rm' output looks good
ok 16 - 'ipfs block rm' block actually removed
ok 17 - add and pin directory
ok 18 - can't remove pinned block
ok 19 - can't remove pinned block: output looks good
ok 20 - can't remove indirectly pinned block
ok 21 - can't remove indirectly pinned block: output looks good
ok 22 - remove pin
ok 23 - multi-block 'ipfs block rm' succeeds
ok 24 - multi-block 'ipfs block rm' output looks good
ok 25 - multi-block 'ipfs block rm <invalid> <valid> <invalid>'
ok 26 - multi-block 'ipfs block rm <invalid> <valid> <invalid>' output looks good
ok 27 - 'add some blocks' succeeds
ok 28 - add and pin directory
ok 29 - multi-block 'ipfs block rm' mixed
ok 30 - pinned block not removed
ok 31 - non-pinned blocks removed
ok 32 - error reported on removing non-existent block
ok 33 - 'add some blocks' succeeds
ok 34 - multi-block 'ipfs block rm -f' with non existent blocks succeed
ok 35 - existent blocks removed
ok 36 - 'add some blocks' succeeds
ok 37 - multi-block 'ipfs block rm -q' produces no output
ok 38 - can set deprecated --format=protobuf on block put
ok 39 - created an object correctly!
ok 40 - block get output looks right
ok 41 - can set --cid-codec=dag-pb on block put
ok 42 - created an object correctly!
ok 43 - block get output looks right
ok 44 - can set multihash type and length on block put with --format=raw (deprecated)
ok 45 - output looks good
ok 46 - can't use both legacy format and custom cid-codec at the same time
ok 47 - can read block with different hash
ok 48 - 'ipfs block stat' with nothing from stdin doesn't crash
ok 49 - no panic in output
ok 50 - can set multihash type and length on block put without format or cid-codec
ok 51 - output looks good
ok 52 - can set multihash type and length on block put with cid-codec=dag-pb
ok 53 - output looks good
ok 54 - put with sha3 and cidv0 fails
ok 55 - 'ipfs block put' check block size
ok 56 - ipfs block put output has the correct error
ok 57 - ipfs block put --allow-big-block=true works

Back to top

TestCase t0051-object

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.105
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.165
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.473
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0051-object.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0051-object.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0051-object.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs object patch' should work (no unixfs-dir) Success 0.172
System.out »
expecting success: 
    OUTPUT=$(ipfs object patch $EMPTY_DIR add-link foo $EMPTY_DIR) &&
    ipfs dag stat $OUTPUT
  

CID                                                        	Blocks         	Size
bafybeih6f4qlrrtgtfsw3byos7l4wjsxlq4nf7e3fcmstoxqeyvz4ig76m	2              	47

Summary
Total Size: 47 (47 B)
Unique Blocks: 2
Shared Size: 0 (0 B)
Ratio: 1.000000


ok 4 - 'ipfs object patch' should work (no unixfs-dir)
5 - 'ipfs object patch' should work Success 0.176
System.out »
expecting success: 
    OUTPUT=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo $EMPTY_UNIXFS_DIR) &&
    ipfs dag stat $OUTPUT
  

CID                                                        	Blocks         	Size
bafybeihq3jzl4nhqcgnfihioisw5qvwf3ebadvwclmiinxbzj7ryzvxuve	2              	55

Summary
Total Size: 55 (55 B)
Unique Blocks: 2
Shared Size: 0 (0 B)
Ratio: 1.000000


ok 5 - 'ipfs object patch' should work
6 - 'ipfs object patch' check output block size Success 1.333
System.out »
expecting success: 
    DIR=$EMPTY_UNIXFS_DIR
    for i in {1..14}
    do
       DIR=$(ipfs object patch "$DIR" add-link "$DIR.jpg" "$DIR")
    done
    # Fail when new block goes over the BS limit of 2MiB, but allow manual override
    test_expect_code 1 ipfs object patch "$DIR" add-link "$DIR.jpg" "$DIR"  >patch_out 2>&1
  
ok 6 - 'ipfs object patch' check output block size
7 - ipfs object patch add-link output has the correct error Success 0.006
System.out »
expecting success: 
    grep "produced block is over 2MiB" patch_out
  
Error: produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 7 - ipfs object patch add-link output has the correct error
8 - ipfs object patch --allow-big-block=true add-link works Success 0.087
System.out »
expecting success: 
    test_expect_code 0 ipfs object patch --allow-big-block=true "$DIR" add-link "$DIR.jpg" "$DIR"
  
bafybeigieyqquvauihyz3lidxeise6slb6kcw56udpya32itddixkacgoq
ok 8 - ipfs object patch --allow-big-block=true add-link works
9 - 'ipfs object patch add-link' should work with paths Success 0.517
System.out »
expecting success: 
    N1=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link baz $EMPTY_UNIXFS_DIR) &&
    N2=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link bar $N1) &&
    N3=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo /ipfs/$N2/bar) &&
    ipfs dag stat /ipfs/$N3 > /dev/null &&
    ipfs dag stat $N3/foo > /dev/null &&
    ipfs dag stat /ipfs/$N3/foo/baz > /dev/null
  
ok 9 - 'ipfs object patch add-link' should work with paths
10 - 'ipfs object patch add-link' allow linking IPLD objects Success 0.575
System.out »
expecting success: 
    OBJ=$(echo "123" | ipfs dag put) &&
    N1=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo $OBJ) &&

    ipfs dag stat /ipfs/$N1 > /dev/null &&
    ipfs resolve /ipfs/$N1/foo > actual  &&
    echo /ipfs/$OBJ > expected &&

    test_cmp expected actual
  
ok 10 - 'ipfs object patch add-link' allow linking IPLD objects
11 - object patch creation looks right Success 0.006
System.out »
expecting success: 
    echo "bafybeiakusqwohnt7bs75kx6jhmt4oi47l634bmudxfv4qxhpco6xuvgna" > hash_exp &&
    echo $N3 > hash_actual &&
    test_cmp hash_exp hash_actual
  
ok 11 - object patch creation looks right
12 - multilayer ipfs patch works Success 0.926
System.out »
expecting success: 
    echo "hello world" > hwfile &&
    FILE=$(ipfs add -q hwfile) &&
    EMPTY=$EMPTY_UNIXFS_DIR &&
    ONE=$(ipfs object patch $EMPTY add-link b $EMPTY) &&
    TWO=$(ipfs object patch $EMPTY add-link a $ONE) &&
    ipfs object patch $TWO add-link a/b/c $FILE > multi_patch
  
ok 12 - multilayer ipfs patch works
13 - output looks good Success 0.268
System.out »
expecting success: 
    ipfs cat $(cat multi_patch)/a/b/c > hwfile_out &&
    test_cmp hwfile hwfile_out
  
ok 13 - output looks good
14 - can remove the directory Success 0.304
System.out »
expecting success: 
    ipfs object patch $OUTPUT rm-link foo > rmlink_output
  
ok 14 - can remove the directory
15 - output should be empty Success 0.020
System.out »
expecting success: 
    echo bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 > rmlink_exp &&
    test_cmp rmlink_exp rmlink_output
  
ok 15 - output should be empty
16 - multilayer rm-link should work Success 0.274
System.out »
expecting success: 
    ipfs object patch $(cat multi_patch) rm-link a/b/c > multi_link_rm_out
  
ok 16 - multilayer rm-link should work
17 - output looks good Success 0.006
System.out »
expecting success: 
    echo "bafybeicourxysmtbe5hacxqico4d5hyvh7gqkrwlmqa4ew7zufn3pj3juu" > multi_link_rm_exp &&
    test_cmp multi_link_rm_exp multi_link_rm_out
  
ok 17 - output looks good
18 - object patch --create works Success 0.299
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 18 - object patch --create works
19 - output looks good Success 0.531
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 19 - output looks good
20 - object patch --create works Success 0.330
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 20 - object patch --create works
21 - output looks good Success 0.575
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 21 - output looks good
22 - object patch --create works Success 0.356
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 22 - object patch --create works
23 - output looks good Success 0.378
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 23 - output looks good
24 - can create blank object Success 0.004
System.out »
expecting success: 
    BLANK=$EMPTY_DIR
  
ok 24 - can create blank object
25 - object patch --create works Success 0.307
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 25 - object patch --create works
26 - output looks good Success 0.471
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 26 - output looks good
27 - create bad path fails Success 0.197
System.out »
expecting success: 
    test_must_fail ipfs object patch $EMPTY add-link --create / $FILE
  
ok 27 - create bad path fails
System.err »
Error: cannot create link with no name
28 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 28 - 'ipfs daemon' succeeds
29 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 29 - api file shows up
30 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 30 - set up address variables
31 - get swarm addresses Success 0.073
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 31 - get swarm addresses
32 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 32 - set swarm address vars
33 - 'ipfs daemon' is ready Success 0.012
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 33 - 'ipfs daemon' is ready
34 - 'ipfs object patch' should work (no unixfs-dir) Success 0.185
System.out »
expecting success: 
    OUTPUT=$(ipfs object patch $EMPTY_DIR add-link foo $EMPTY_DIR) &&
    ipfs dag stat $OUTPUT
  

CID                                                        	Blocks         	Size
bafybeih6f4qlrrtgtfsw3byos7l4wjsxlq4nf7e3fcmstoxqeyvz4ig76m	2              	47

Summary
Total Size: 47 (47 B)
Unique Blocks: 2
Shared Size: 0 (0 B)
Ratio: 1.000000


ok 34 - 'ipfs object patch' should work (no unixfs-dir)
35 - 'ipfs object patch' should work Success 0.197
System.out »
expecting success: 
    OUTPUT=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo $EMPTY_UNIXFS_DIR) &&
    ipfs dag stat $OUTPUT
  

CID                                                        	Blocks         	Size
bafybeihq3jzl4nhqcgnfihioisw5qvwf3ebadvwclmiinxbzj7ryzvxuve	2              	55

Summary
Total Size: 55 (55 B)
Unique Blocks: 2
Shared Size: 0 (0 B)
Ratio: 1.000000


ok 35 - 'ipfs object patch' should work
36 - 'ipfs object patch' check output block size Success 1.238
System.out »
expecting success: 
    DIR=$EMPTY_UNIXFS_DIR
    for i in {1..14}
    do
       DIR=$(ipfs object patch "$DIR" add-link "$DIR.jpg" "$DIR")
    done
    # Fail when new block goes over the BS limit of 2MiB, but allow manual override
    test_expect_code 1 ipfs object patch "$DIR" add-link "$DIR.jpg" "$DIR"  >patch_out 2>&1
  
ok 36 - 'ipfs object patch' check output block size
37 - ipfs object patch add-link output has the correct error Success 0.006
System.out »
expecting success: 
    grep "produced block is over 2MiB" patch_out
  
Error: produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 37 - ipfs object patch add-link output has the correct error
38 - ipfs object patch --allow-big-block=true add-link works Success 0.059
System.out »
expecting success: 
    test_expect_code 0 ipfs object patch --allow-big-block=true "$DIR" add-link "$DIR.jpg" "$DIR"
  
bafybeigieyqquvauihyz3lidxeise6slb6kcw56udpya32itddixkacgoq
ok 38 - ipfs object patch --allow-big-block=true add-link works
39 - 'ipfs object patch add-link' should work with paths Success 0.356
System.out »
expecting success: 
    N1=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link baz $EMPTY_UNIXFS_DIR) &&
    N2=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link bar $N1) &&
    N3=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo /ipfs/$N2/bar) &&
    ipfs dag stat /ipfs/$N3 > /dev/null &&
    ipfs dag stat $N3/foo > /dev/null &&
    ipfs dag stat /ipfs/$N3/foo/baz > /dev/null
  
ok 39 - 'ipfs object patch add-link' should work with paths
40 - 'ipfs object patch add-link' allow linking IPLD objects Success 0.253
System.out »
expecting success: 
    OBJ=$(echo "123" | ipfs dag put) &&
    N1=$(ipfs object patch $EMPTY_UNIXFS_DIR add-link foo $OBJ) &&

    ipfs dag stat /ipfs/$N1 > /dev/null &&
    ipfs resolve /ipfs/$N1/foo > actual  &&
    echo /ipfs/$OBJ > expected &&

    test_cmp expected actual
  
ok 40 - 'ipfs object patch add-link' allow linking IPLD objects
41 - object patch creation looks right Success 0.006
System.out »
expecting success: 
    echo "bafybeiakusqwohnt7bs75kx6jhmt4oi47l634bmudxfv4qxhpco6xuvgna" > hash_exp &&
    echo $N3 > hash_actual &&
    test_cmp hash_exp hash_actual
  
ok 41 - object patch creation looks right
42 - multilayer ipfs patch works Success 0.246
System.out »
expecting success: 
    echo "hello world" > hwfile &&
    FILE=$(ipfs add -q hwfile) &&
    EMPTY=$EMPTY_UNIXFS_DIR &&
    ONE=$(ipfs object patch $EMPTY add-link b $EMPTY) &&
    TWO=$(ipfs object patch $EMPTY add-link a $ONE) &&
    ipfs object patch $TWO add-link a/b/c $FILE > multi_patch
  
ok 42 - multilayer ipfs patch works
43 - output looks good Success 0.061
System.out »
expecting success: 
    ipfs cat $(cat multi_patch)/a/b/c > hwfile_out &&
    test_cmp hwfile hwfile_out
  
ok 43 - output looks good
44 - can remove the directory Success 0.069
System.out »
expecting success: 
    ipfs object patch $OUTPUT rm-link foo > rmlink_output
  
ok 44 - can remove the directory
45 - output should be empty Success 0.005
System.out »
expecting success: 
    echo bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 > rmlink_exp &&
    test_cmp rmlink_exp rmlink_output
  
ok 45 - output should be empty
46 - multilayer rm-link should work Success 0.065
System.out »
expecting success: 
    ipfs object patch $(cat multi_patch) rm-link a/b/c > multi_link_rm_out
  
ok 46 - multilayer rm-link should work
47 - output looks good Success 0.009
System.out »
expecting success: 
    echo "bafybeicourxysmtbe5hacxqico4d5hyvh7gqkrwlmqa4ew7zufn3pj3juu" > multi_link_rm_exp &&
    test_cmp multi_link_rm_exp multi_link_rm_out
  
ok 47 - output looks good
48 - object patch --create works Success 0.066
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 48 - object patch --create works
49 - output looks good Success 0.120
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 49 - output looks good
50 - object patch --create works Success 0.057
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 50 - object patch --create works
51 - output looks good Success 0.126
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 51 - output looks good
52 - object patch --create works Success 0.063
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 52 - object patch --create works
53 - output looks good Success 0.124
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 53 - output looks good
54 - can create blank object Success 0.004
System.out »
expecting success: 
    BLANK=$EMPTY_DIR
  
ok 54 - can create blank object
55 - object patch --create works Success 0.064
System.out »
expecting success: 
    PCOUT=$(ipfs object patch $root add-link --create $name $target)
  
ok 55 - object patch --create works
56 - output looks good Success 0.125
System.out »
expecting success: 
    ipfs cat "$PCOUT/$name" >tpcp_out &&
    ipfs cat "$target" >tpcp_exp &&
    test_cmp tpcp_exp tpcp_out
  
ok 56 - output looks good
57 - create bad path fails Success 0.065
System.out »
expecting success: 
    test_must_fail ipfs object patch $EMPTY add-link --create / $FILE
  
ok 57 - create bad path fails
System.err »
Error: cannot create link with no name
58 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 58 - 'ipfs daemon' is still running
59 - 'ipfs daemon' can be killed Success 0.255
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 59 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs object patch' should work (no unixfs-dir)
ok 5 - 'ipfs object patch' should work
ok 6 - 'ipfs object patch' check output block size
ok 7 - ipfs object patch add-link output has the correct error
ok 8 - ipfs object patch --allow-big-block=true add-link works
ok 9 - 'ipfs object patch add-link' should work with paths
ok 10 - 'ipfs object patch add-link' allow linking IPLD objects
ok 11 - object patch creation looks right
ok 12 - multilayer ipfs patch works
ok 13 - output looks good
ok 14 - can remove the directory
ok 15 - output should be empty
ok 16 - multilayer rm-link should work
ok 17 - output looks good
ok 18 - object patch --create works
ok 19 - output looks good
ok 20 - object patch --create works
ok 21 - output looks good
ok 22 - object patch --create works
ok 23 - output looks good
ok 24 - can create blank object
ok 25 - object patch --create works
ok 26 - output looks good
ok 27 - create bad path fails
ok 28 - 'ipfs daemon' succeeds
ok 29 - api file shows up
ok 30 - set up address variables
ok 31 - get swarm addresses
ok 32 - set swarm address vars
ok 33 - 'ipfs daemon' is ready
ok 34 - 'ipfs object patch' should work (no unixfs-dir)
ok 35 - 'ipfs object patch' should work
ok 36 - 'ipfs object patch' check output block size
ok 37 - ipfs object patch add-link output has the correct error
ok 38 - ipfs object patch --allow-big-block=true add-link works
ok 39 - 'ipfs object patch add-link' should work with paths
ok 40 - 'ipfs object patch add-link' allow linking IPLD objects
ok 41 - object patch creation looks right
ok 42 - multilayer ipfs patch works
ok 43 - output looks good
ok 44 - can remove the directory
ok 45 - output should be empty
ok 46 - multilayer rm-link should work
ok 47 - output looks good
ok 48 - object patch --create works
ok 49 - output looks good
ok 50 - object patch --create works
ok 51 - output looks good
ok 52 - object patch --create works
ok 53 - output looks good
ok 54 - can create blank object
ok 55 - object patch --create works
ok 56 - output looks good
ok 57 - create bad path fails
ok 58 - 'ipfs daemon' is still running
ok 59 - 'ipfs daemon' can be killed

Back to top

TestCase t0052-object-diff

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.107
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.176
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.492
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0052-object-diff.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0052-object-diff.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0052-object-diff.sh/mfs"
ok 3 - prepare config -- mounting
4 - create some objects for testing diffs Success 1.242
System.out »
expecting success: 
  mkdir foo &&
  echo "stuff" > foo/bar &&
  mkdir foo/baz &&
  A=$(ipfs add -r -Q foo) &&
  AR=$(ipfs add --raw-leaves -r -Q foo) &&
  echo "more things" > foo/cat &&
  B=$(ipfs add -r -Q foo) &&
  BR=$(ipfs add --raw-leaves -r -Q foo) &&
  echo "nested" > foo/baz/dog &&
  C=$(ipfs add -r -Q foo)
  CR=$(ipfs add --raw-leaves -r -Q foo)
  echo "changed" > foo/bar &&
  D=$(ipfs add -r -Q foo) &&
  DR=$(ipfs add --raw-leaves -r -Q foo) &&
  echo "" > single_file &&
  SINGLE_FILE=$(ipfs add -r -Q single_file) &&
  SINGLE_FILE_RAW=$(ipfs add --raw-leaves -r -Q single_file) &&
  mkdir empty_dir
  EMPTY_DIR=$(ipfs add -r -Q empty_dir)
  EMPTY_DIR_RAW=$(ipfs add --raw-leaves -r -Q empty_dir)

ok 4 - create some objects for testing diffs
5 - diff against self is empty Success 0.087
System.out »
expecting success: 
  ipfs object diff $A $A > diff_out

ok 5 - diff against self is empty
6 - identity diff output looks good Success 0.004
System.out »
expecting success: 
  printf "" > diff_exp &&
  test_cmp diff_exp diff_out

ok 6 - identity diff output looks good
7 - diff (raw-leaves) against self is empty Success 0.089
System.out »
expecting success: 
  ipfs object diff $AR $AR > diff_raw_out

ok 7 - diff (raw-leaves) against self is empty
8 - identity diff (raw-leaves) output looks good Success 0.005
System.out »
expecting success: 
  printf "" > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 8 - identity diff (raw-leaves) output looks good
9 - diff against self (single file) is empty Success 0.096
System.out »
expecting success: 
  ipfs object diff $SINGLE_FILE $SINGLE_FILE > diff_out &&
  printf "" > diff_exp &&
  test_cmp diff_exp diff_out

ok 9 - diff against self (single file) is empty
10 - diff (raw-leaves) against self (single file) is empty Success 0.092
System.out »
expecting success: 
  ipfs object diff $SINGLE_FILE_RAW $SINGLE_FILE_RAW > diff_raw_out &&
  printf "" > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 10 - diff (raw-leaves) against self (single file) is empty
11 - diff against self (empty dir) is empty Success 0.097
System.out »
expecting success: 
  ipfs object diff $EMPTY_DIR $EMPTY_DIR > diff_out &&
  printf "" > diff_exp &&
  test_cmp diff_exp diff_out

ok 11 - diff against self (empty dir) is empty
12 - diff (raw-leaves) against self (empty dir) is empty Success 0.103
System.out »
expecting success: 
  ipfs object diff $EMPTY_DIR_RAW $EMPTY_DIR_RAW > diff_raw_out &&
  printf "" > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 12 - diff (raw-leaves) against self (empty dir) is empty
13 - diff added link works Success 0.099
System.out »
expecting success: 
  ipfs object diff $A $B > diff_out

ok 13 - diff added link works
14 - diff added link looks right Success 0.006
System.out »
expecting success: 
  echo + QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A \"cat\" > diff_exp &&
  test_cmp diff_exp diff_out

ok 14 - diff added link looks right
15 - diff (raw-leaves) added link works Success 0.112
System.out »
expecting success: 
  ipfs object diff $AR $BR > diff_raw_out

ok 15 - diff (raw-leaves) added link works
16 - diff (raw-leaves) added link looks right Success 0.007
System.out »
expecting success: 
  echo + bafkreig43bpnc6sjo6izaiqzzq5esapazosa3f3wt6jsflwiu3x7ydhq2u \"cat\" > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 16 - diff (raw-leaves) added link looks right
17 - verbose diff added link works Success 0.123
System.out »
expecting success: 
  ipfs object diff -v $A $B > diff_out

ok 17 - verbose diff added link works
18 - verbose diff added link looks right Success 0.006
System.out »
expecting success: 
  echo Added new link \"cat\" pointing to QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A. > diff_exp &&
  test_cmp diff_exp diff_out

ok 18 - verbose diff added link looks right
19 - verbose diff (raw-leaves) added link works Success 0.179
System.out »
expecting success: 
  ipfs object diff -v $AR $BR > diff_raw_out

ok 19 - verbose diff (raw-leaves) added link works
20 - verbose diff (raw-leaves) added link looks right Success 0.005
System.out »
expecting success: 
  echo Added new link \"cat\" pointing to bafkreig43bpnc6sjo6izaiqzzq5esapazosa3f3wt6jsflwiu3x7ydhq2u. > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 20 - verbose diff (raw-leaves) added link looks right
21 - diff removed link works Success 0.161
System.out »
expecting success: 
  ipfs object diff -v $B $A > diff_out

ok 21 - diff removed link works
22 - diff removed link looks right Success 0.010
System.out »
expecting success: 
  echo Removed link \"cat\" \(was QmUSvcqzhdfYM1KLDbM76eLPdS9ANFtkJvFuPYeZt73d7A\). > diff_exp &&
  test_cmp diff_exp diff_out

ok 22 - diff removed link looks right
23 - diff (raw-leaves) removed link works Success 0.223
System.out »
expecting success: 
  ipfs object diff -v $BR $AR > diff_raw_out

ok 23 - diff (raw-leaves) removed link works
24 - diff (raw-leaves) removed link looks right Success 0.017
System.out »
expecting success: 
  echo Removed link \"cat\" \(was bafkreig43bpnc6sjo6izaiqzzq5esapazosa3f3wt6jsflwiu3x7ydhq2u\). > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 24 - diff (raw-leaves) removed link looks right
25 - diff nested add works Success 0.287
System.out »
expecting success: 
  ipfs object diff -v $B $C > diff_out

ok 25 - diff nested add works
26 - diff looks right Success 0.011
System.out »
expecting success: 
  echo Added new link \"baz/dog\" pointing to QmdNJQUTZuDpsUcec7YDuCfRfvw1w4J13DCm7YcU4VMZdS. > diff_exp &&
  test_cmp diff_exp diff_out

ok 26 - diff looks right
27 - diff (raw-leaves) nested add works Success 0.230
System.out »
expecting success: 
  ipfs object diff -v $BR $CR > diff_raw_out

ok 27 - diff (raw-leaves) nested add works
28 - diff (raw-leaves) looks right Success 0.010
System.out »
expecting success: 
  echo Added new link \"baz/dog\" pointing to bafkreibxbkgajofglo2esqtv53bcp4nwstnqjr3nu2ylrlui5unldf4qum. > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 28 - diff (raw-leaves) looks right
29 - diff changed link works Success 0.293
System.out »
expecting success: 
  ipfs object diff -v $C $D > diff_out

ok 29 - diff changed link works
30 - diff looks right Success 0.016
System.out »
expecting success: 
  echo Changed \"bar\" from QmNgd5cz2jNftnAHBhcRUGdtiaMzb5Rhjqd4etondHHST8 to QmRfFVsjSXkhFxrfWnLpMae2M4GBVsry6VAuYYcji5MiZb. > diff_exp &&
  test_cmp diff_exp diff_out

ok 30 - diff looks right
31 - diff (raw-leaves) changed link works Success 0.223
System.out »
expecting success: 
  ipfs object diff -v $CR $DR > diff_raw_out

ok 31 - diff (raw-leaves) changed link works
32 - diff(raw-leaves) looks right Success 0.023
System.out »
expecting success: 
  echo Changed \"bar\" from bafkreidfn2oemjv5ns2fnc4ukgbjwt6bq5gdd4ciz4mpnehqi2dvwxfbde to bafkreid7rmo7yrtlmje7a3f6kxerotpsk6hhovg2pe755use55olukry6e. > diff_raw_exp &&
  test_cmp diff_raw_exp diff_raw_out

ok 32 - diff(raw-leaves) looks right
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create some objects for testing diffs
ok 5 - diff against self is empty
ok 6 - identity diff output looks good
ok 7 - diff (raw-leaves) against self is empty
ok 8 - identity diff (raw-leaves) output looks good
ok 9 - diff against self (single file) is empty
ok 10 - diff (raw-leaves) against self (single file) is empty
ok 11 - diff against self (empty dir) is empty
ok 12 - diff (raw-leaves) against self (empty dir) is empty
ok 13 - diff added link works
ok 14 - diff added link looks right
ok 15 - diff (raw-leaves) added link works
ok 16 - diff (raw-leaves) added link looks right
ok 17 - verbose diff added link works
ok 18 - verbose diff added link looks right
ok 19 - verbose diff (raw-leaves) added link works
ok 20 - verbose diff (raw-leaves) added link looks right
ok 21 - diff removed link works
ok 22 - diff removed link looks right
ok 23 - diff (raw-leaves) removed link works
ok 24 - diff (raw-leaves) removed link looks right
ok 25 - diff nested add works
ok 26 - diff looks right
ok 27 - diff (raw-leaves) nested add works
ok 28 - diff (raw-leaves) looks right
ok 29 - diff changed link works
ok 30 - diff looks right
ok 31 - diff (raw-leaves) changed link works
ok 32 - diff(raw-leaves) looks right

Back to top

TestCase t0053-dag

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.290
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.546
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 1.626
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0053-dag.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0053-dag.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0053-dag.sh/mfs"
ok 3 - prepare config -- mounting
4 - make a few test files Success 1.131
System.out »
expecting success: 
  echo "foo" > file1 &&
  echo "bar" > file2 &&
  echo "baz" > file3 &&
  echo "qux" > file4 &&
  HASH1=$(ipfs add --pin=false -q file1) &&
  HASH2=$(ipfs add --pin=false -q file2) &&
  HASH3=$(ipfs add --pin=false -q file3) &&
  HASH4=$(ipfs add --pin=false -q file4)

ok 4 - make a few test files
5 - make an ipld object in dag-json Success 0.014
System.out »
expecting success: 
  printf "{\"hello\":\"world\",\"cats\":[{\"/\":\"%s\"},{\"water\":{\"/\":\"%s\"}}],\"magic\":{\"/\":\"%s\"},\"sub\":{\"dict\":\"ionary\",\"beep\":[0,\"bop\"]}}" $HASH1 $HASH2 $HASH3 > ipld_object

ok 5 - make an ipld object in dag-json
6 - make the same ipld object in dag-cbor, dag-json and dag-pb Success 0.055
System.out »
expecting success: 
  echo "omREYXRhRQABAgMEZUxpbmtzgA==" | base64 -d > ipld_object_dagcbor
  echo "CgUAAQIDBA==" | base64 -d > ipld_object_dagpb
  echo "{\"Data\":{\"/\":{\"bytes\":\"AAECAwQ\"}},\"Links\":[]}" > ipld_object_dagjson

ok 6 - make the same ipld object in dag-cbor, dag-json and dag-pb
7 - can add an ipld object using defaults (dag-json to dag-cbor) Success 0.259
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put)
  
ok 7 - can add an ipld object using defaults (dag-json to dag-cbor)
8 - CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde"
    test $EXPHASH = $IPLDHASH
  
ok 8 - CID looks correct
9 - 'ipfs dag put' check block size Success 0.260
System.out »
expecting success: 
    dd if=/dev/zero bs=2097153 count=1 > over-2MiB-file &&
    test_expect_code 1 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file >dag_put_out 2>&1
  
ok 9 - 'ipfs dag put' check block size
System.err »
1+0 records in
1+0 records out
2097153 bytes (2.1 MB, 2.0 MiB) copied, 0.00198421 s, 1.1 GB/s
10 - ipfs dag put output has the correct error Success 0.005
System.out »
expecting success: 
    grep "produced block is over 2MiB" dag_put_out
  
Error: produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 10 - ipfs dag put output has the correct error
11 - ipfs dag put --allow-big-block=true works Success 0.255
System.out »
expecting success: 
    test_expect_code 0 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file --allow-big-block=true &&
    rm over-2MiB-file
  
bafkreihjucm4oxxyg7bixsiwqo7ocj7emp5a5yimch6yc34nfvbiydlbby
ok 11 - ipfs dag put --allow-big-block=true works
12 - can add an ipld object using dag-json to dag-json Success 0.188
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-json)
  
ok 12 - can add an ipld object using dag-json to dag-json
13 - CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="baguqeera6gviseelmbzn2ugoddo5vulxlshqs3kw5ymgsb6w4cabnoh4ldpa"
    test $EXPHASH = $IPLDHASH
  
ok 13 - CID looks correct
14 - can add an ipld object using dag-json to dag-cbor Success 0.220
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-cbor)
  
ok 14 - can add an ipld object using dag-json to dag-cbor
15 - CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde"
    test $EXPHASH = $IPLDHASH
  
ok 15 - CID looks correct
16 - can add an ipld object using cid-base=base58btc Success 0.239
System.out »
expecting success: 
    IPLDb58HASH=$(cat ipld_object | ipfs dag put -cid-base=base58btc)
  
ok 16 - can add an ipld object using cid-base=base58btc
17 - CID looks correct Success 0.003
System.out »
expecting success: 
    EXPHASH="zdpuAoN1XJ3GsrxEzMuCbRKZzRUVJekJUCbPVgCgE4D9yYqVi"
    test $EXPHASH = $IPLDb58HASH
  
ok 17 - CID looks correct
18 - can add a dag-cbor input block stored as dag-cbor Success 0.313
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-cbor)
  
ok 18 - can add a dag-cbor input block stored as dag-cbor
19 - dag-cbor CID looks correct Success 0.003
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 19 - dag-cbor CID looks correct
20 - can add a dag-cbor input block stored as dag-pb Success 0.190
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-pb)
  
ok 20 - can add a dag-cbor input block stored as dag-pb
21 - dag-pb CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 21 - dag-pb CID looks correct
22 - can add a dag-cbor input block stored as dag-json Success 0.102
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-json)
  
ok 22 - can add a dag-cbor input block stored as dag-json
23 - dag-json CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 23 - dag-json CID looks correct
24 - can add a dag-json input block stored as dag-cbor Success 0.264
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-cbor)
  
ok 24 - can add a dag-json input block stored as dag-cbor
25 - dag-cbor CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 25 - dag-cbor CID looks correct
26 - can add a dag-json input block stored as dag-pb Success 0.096
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-pb)
  
ok 26 - can add a dag-json input block stored as dag-pb
27 - dag-pb CID looks correct Success 0.005
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 27 - dag-pb CID looks correct
28 - can add a dag-json input block stored as dag-json Success 0.082
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-json)
  
ok 28 - can add a dag-json input block stored as dag-json
29 - dag-json CID looks correct Success 0.005
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 29 - dag-json CID looks correct
30 - can add a dag-pb input block stored as dag-cbor Success 0.082
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-cbor)
  
ok 30 - can add a dag-pb input block stored as dag-cbor
31 - dag-cbor CID looks correct Success 0.003
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 31 - dag-cbor CID looks correct
32 - can add a dag-pb input block stored as dag-pb Success 0.075
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-pb)
  
ok 32 - can add a dag-pb input block stored as dag-pb
33 - dag-pb CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 33 - dag-pb CID looks correct
34 - can add a dag-pb input block stored as dag-json Success 0.086
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-json)
  
ok 34 - can add a dag-pb input block stored as dag-json
35 - dag-json CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 35 - dag-json CID looks correct
36 - can get dag-cbor, dag-json, dag-pb blocks as dag-json Success 0.232
System.out »
expecting success: 
    ipfs dag get $IPLDCBORHASH >& dag-get-cbor &&
    ipfs dag get $IPLDJSONHASH >& dag-get-json &&
    ipfs dag get $IPLDPBHASH >& dag-get-pb
  
ok 36 - can get dag-cbor, dag-json, dag-pb blocks as dag-json
37 - can get dag-pb block transcoded as dag-cbor Success 0.082
System.out »
expecting success: 
    ipfs dag get --output-codec=dag-cbor $IPLDPBHASH >& dag-get-dagpb-transcoded-to-dagcbor &&
    echo "122082a2e4c892e7dcf1d491b30d68aa73ba76bec94f87d4e1a887596ce0730a534a" >sha2_dagpb_to_dagcbor_expected &&
    multihash -a=sha2-256 -e=hex dag-get-dagpb-transcoded-to-dagcbor >sha2_dagpb_to_dagcbor_actual &&
    test_cmp sha2_dagpb_to_dagcbor_expected sha2_dagpb_to_dagcbor_actual
  
ok 37 - can get dag-pb block transcoded as dag-cbor
38 - dag put and dag get transcodings match Success 0.078
System.out »
expecting success: 
    ROUNDTRIPDAGCBOR=$(ipfs dag put --input-codec=dag-cbor --store-codec=dag-cbor dag-get-dagpb-transcoded-to-dagcbor) &&
    test $ROUNDTRIPDAGCBOR = $IPLDCBORHASH
  
ok 38 - dag put and dag get transcodings match
39 - outputs are the same Success 0.007
System.out »
expecting success: 
    test_cmp dag-get-cbor dag-get-json &&
    test_cmp dag-get-cbor dag-get-pb
  
ok 39 - outputs are the same
40 - various path traversals work Success 0.233
System.out »
expecting success: 
    ipfs cat $IPLDHASH/cats/0 > out1 &&
    ipfs cat $IPLDHASH/cats/1/water > out2 &&
    ipfs cat $IPLDHASH/magic > out3
  
ok 40 - various path traversals work
41 - outputs look correct Success 0.008
System.out »
expecting success: 
    test_cmp file1 out1 &&
    test_cmp file2 out2 &&
    test_cmp file3 out3
  
ok 41 - outputs look correct
42 - resolving sub-objects works Success 0.386
System.out »
expecting success: 
    ipfs dag get $IPLDHASH/hello > sub1 &&
    ipfs dag get $IPLDHASH/sub > sub2 &&
    ipfs dag get $IPLDHASH/sub/beep > sub3 &&
    ipfs dag get $IPLDHASH/sub/beep/0 > sub4 &&
    ipfs dag get $IPLDHASH/sub/beep/1 > sub5
  
ok 42 - resolving sub-objects works
43 - sub-objects look right Success 0.011
System.out »
expecting success: 
    echo -n "\"world\"" > sub1_exp &&
    test_cmp sub1_exp sub1 &&
    echo -n "{\"beep\":[0,\"bop\"],\"dict\":\"ionary\"}" > sub2_exp &&
    test_cmp sub2_exp sub2 &&
    echo -n "[0,\"bop\"]" > sub3_exp &&
    test_cmp sub3_exp sub3 &&
    echo -n "0" > sub4_exp &&
    test_cmp sub4_exp sub4 &&
    echo -n "\"bop\"" > sub5_exp &&
    test_cmp sub5_exp sub5
  
ok 43 - sub-objects look right
44 - traversals using /ipld/ work Success 0.080
System.out »
expecting success: 
    ipfs dag get /ipld/$IPLDPBHASH/Data > ipld_path_Data_actual
  
ok 44 - traversals using /ipld/ work
45 - retrieved node looks right Success 0.007
System.out »
expecting success: 
    echo -n "{\"/\":{\"bytes\":\"AAECAwQ\"}}" > ipld_path_Data_expected
    test_cmp ipld_path_Data_actual ipld_path_Data_expected
  
ok 45 - retrieved node looks right
46 - can pin ipld object Success 0.084
System.out »
expecting success: 
    ipfs pin add $IPLDHASH
  
pinned bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde recursively
ok 46 - can pin ipld object
47 - can pin dag-pb object Success 0.083
System.out »
expecting success: 
    ipfs pin add $IPLDPBHASH
  
pinned bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom recursively
ok 47 - can pin dag-pb object
48 - can pin dag-cbor object Success 0.085
System.out »
expecting success: 
    ipfs pin add $IPLDCBORHASH
  
pinned bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji recursively
ok 48 - can pin dag-cbor object
49 - can pin dag-json object Success 0.086
System.out »
expecting success: 
    ipfs pin add $IPLDJSONHASH
  
pinned baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq recursively
ok 49 - can pin dag-json object
50 - after gc, objects still accessible Success 0.156
System.out »
expecting success: 
    ipfs repo gc > /dev/null &&
    ipfs refs -r --timeout=2s $IPLDJSONHASH > /dev/null
  
ok 50 - after gc, objects still accessible
51 - can get object Success 0.082
System.out »
expecting success: 
    ipfs dag get $IPLDHASH > ipld_obj_out
  
ok 51 - can get object
52 - object links look right Success 0.006
System.out »
expecting success: 
    grep "{\"/\":\"" ipld_obj_out > /dev/null
  
ok 52 - object links look right
53 - retrieved object hashes back correctly Success 0.081
System.out »
expecting success: 
    IPLDHASH2=$(cat ipld_obj_out | ipfs dag put --input-codec dag-json --store-codec dag-cbor) &&
    test "$IPLDHASH" = "$IPLDHASH2"
  
ok 53 - retrieved object hashes back correctly
54 - add a normal file Success 0.089
System.out »
expecting success: 
    HASH=$(echo "foobar" | ipfs add -q)
  
ok 54 - add a normal file
55 - can view protobuf object with dag get Success 0.082
System.out »
expecting success: 
    ipfs dag get $HASH > dag_get_pb_out
  
ok 55 - can view protobuf object with dag get
56 - output looks correct Success 0.005
System.out »
expecting success: 
    echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISB2Zvb2JhcgoYBw\"}},\"Links\":[]}" > dag_get_pb_exp &&
    test_cmp dag_get_pb_exp dag_get_pb_out
  
ok 56 - output looks correct
57 - can call dag get with a path Success 0.088
System.out »
expecting success: 
    ipfs dag get $IPLDHASH/cats/0 > cat_out
  
ok 57 - can call dag get with a path
58 - output looks correct Success 0.009
System.out »
expecting success: 
    echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISBGZvbwoYBA\"}},\"Links\":[]}" > cat_exp &&
    test_cmp cat_exp cat_out
  
ok 58 - output looks correct
59 - non-canonical dag-cbor input is normalized Success 0.091
System.out »
expecting success: 
    HASH=$(cat ../t0053-dag-data/non-canon.cbor | ipfs dag put --store-codec dag-cbor --input-codec dag-cbor) &&
    test $HASH = "bafyreiawx7ona7oa2ptcoh6vwq4q6bmd7x2ibtkykld327bgb7t73ayrqm" ||
    test_fsh echo $HASH
  
ok 59 - non-canonical dag-cbor input is normalized
60 - cbor input can be fetched Success 0.073
System.out »
expecting success: 
    EXPARR=$(ipfs dag get $HASH/arr)
    test $EXPARR = "[]"
  
ok 60 - cbor input can be fetched
61 - add an ipld with pin Success 0.080
System.out »
expecting success: 
    PINHASH=$(printf {\"foo\":\"bar\"} | ipfs dag put --input-codec dag-json --pin=true)
  
ok 61 - add an ipld with pin
62 - after gc, objects still accessible Success 0.147
System.out »
expecting success: 
    ipfs repo gc > /dev/null &&
    ipfs refs -r --timeout=2s $PINHASH > /dev/null
  
ok 62 - after gc, objects still accessible
63 - can add an ipld object with sha3-512 hash Success 0.078
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --hash sha3-512)
  
ok 63 - can add an ipld object with sha3-512 hash
64 - output looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyriqforjma7y7akqz7nhuu73r6liggj5zhkbfiqgicywe3fgkna2ijlhod2af3ue7doj56tlzt5hh6iu5esafc4msr3sd53jol5m2o25ucy"
    test $EXPHASH = $IPLDHASH
  
ok 64 - output looks correct
65 - prepare dag-pb object Success 0.115
System.out »
expecting success: 
    echo foo > test_file &&
    HASH=$(ipfs add -wQ test_file | ipfs cid base32)
  
ok 65 - prepare dag-pb object
66 - dag put with json dag-pb works Success 0.151
System.out »
expecting success: 
    ipfs dag get $HASH > pbjson &&
    cat pbjson | ipfs dag put --store-codec=dag-pb --input-codec=dag-json > dag_put_out
  
ok 66 - dag put with json dag-pb works
67 - dag put with dag-pb works output looks good Success 0.005
System.out »
expecting success: 
    echo $HASH > dag_put_exp &&
    test_cmp dag_put_exp dag_put_out
  
ok 67 - dag put with dag-pb works output looks good
68 - dag put with raw dag-pb works Success 0.140
System.out »
expecting success: 
    ipfs block get $HASH > pbraw &&
    cat pbraw | ipfs dag put --store-codec=dag-pb --input-codec=dag-pb > dag_put_out
  
ok 68 - dag put with raw dag-pb works
69 - dag put with dag-pb works output looks good Success 0.005
System.out »
expecting success: 
    echo $HASH > dag_put_exp &&
    test_cmp dag_put_exp dag_put_out
  
ok 69 - dag put with dag-pb works output looks good
70 - dag put with raw node works Success 0.143
System.out »
expecting success: 
    echo "foo bar" > raw_node_in &&
    HASH=$(ipfs dag put --store-codec=raw --input-codec=raw -- raw_node_in) &&
    ipfs block get "$HASH" > raw_node_out &&
    test_cmp raw_node_in raw_node_out
ok 70 - dag put with raw node works
71 - dag put multiple files Success 0.075
System.out »
expecting success: 
    printf {\"foo\":\"bar\"} > a.json &&
    printf {\"foo\":\"baz\"} > b.json &&
    ipfs dag put a.json b.json > dag_put_out
  
ok 71 - dag put multiple files
72 - dag put multiple files output looks good Success 0.006
System.out »
expecting success: 
    echo bafyreiblaotetvwobe7cu2uqvnddr6ew2q3cu75qsoweulzku2egca4dxq > dag_put_exp &&
    echo bafyreibqp7zvp6dvrqhtkbwuzzk7jhtmfmngtiqjajqpm6gtw55o7kqzfi >> dag_put_exp &&

    test_cmp dag_put_exp dag_put_out
  
ok 72 - dag put multiple files output looks good
73 - prepare data for dag resolve Success 0.136
System.out »
expecting success: 
    NESTED_HASH=$(echo "{\"data\":123}" | ipfs dag put) &&
    HASH=$(echo "{\"obj\":{\"/\":\"${NESTED_HASH}\"}}" | ipfs dag put)
  
ok 73 - prepare data for dag resolve
74 - dag resolve some things Success 0.204
System.out »
expecting success: 
    ipfs dag resolve $HASH > resolve_hash &&
    ipfs dag resolve ${HASH}/obj > resolve_obj &&
    ipfs dag resolve ${HASH}/obj/data > resolve_data
  
ok 74 - dag resolve some things
75 - dag resolve output looks good Success 0.008
System.out »
expecting success: 
    printf $HASH > resolve_hash_exp &&
    printf $NESTED_HASH > resolve_obj_exp &&
    printf $NESTED_HASH/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 75 - dag resolve output looks good
76 - get base32 version of hashes for testing Success 0.097
System.out »
expecting success: 
    HASHb32=$(ipfs cid base32 $HASH) &&
    NESTED_HASHb32=$(ipfs cid base32 $NESTED_HASH)
  
ok 76 - get base32 version of hashes for testing
77 - dag resolve some things with --cid-base=base32 Success 0.193
System.out »
expecting success: 
    ipfs dag resolve $HASH --cid-base=base32 > resolve_hash &&
    ipfs dag resolve ${HASH}/obj --cid-base=base32 > resolve_obj &&
    ipfs dag resolve ${HASH}/obj/data --cid-base=base32 > resolve_data
  
ok 77 - dag resolve some things with --cid-base=base32
78 - dag resolve output looks good with --cid-base=base32 Success 0.007
System.out »
expecting success: 
    printf $HASHb32 > resolve_hash_exp &&
    printf $NESTED_HASHb32 > resolve_obj_exp &&
    printf $NESTED_HASHb32/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 78 - dag resolve output looks good with --cid-base=base32
79 - dag resolve some things with base32 hash Success 0.227
System.out »
expecting success: 
    ipfs dag resolve $HASHb32 > resolve_hash &&
    ipfs dag resolve ${HASHb32}/obj  > resolve_obj &&
    ipfs dag resolve ${HASHb32}/obj/data > resolve_data
  
ok 79 - dag resolve some things with base32 hash
80 - dag resolve output looks good with base32 hash Success 0.007
System.out »
expecting success: 
    printf $HASHb32 > resolve_hash_exp &&
    printf $NESTED_HASHb32 > resolve_obj_exp &&
    printf $NESTED_HASHb32/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 80 - dag resolve output looks good with base32 hash
81 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 81 - 'ipfs daemon' succeeds
82 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 82 - api file shows up
83 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 83 - set up address variables
84 - get swarm addresses Success 0.071
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 84 - get swarm addresses
85 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 85 - set swarm address vars
86 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 86 - 'ipfs daemon' is ready
87 - can add an ipld object using defaults (dag-json to dag-cbor) Success 0.083
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put)
  
ok 87 - can add an ipld object using defaults (dag-json to dag-cbor)
88 - CID looks correct Success 0.007
System.out »
expecting success: 
    EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde"
    test $EXPHASH = $IPLDHASH
  
ok 88 - CID looks correct
89 - 'ipfs dag put' check block size Success 0.143
System.out »
expecting success: 
    dd if=/dev/zero bs=2097153 count=1 > over-2MiB-file &&
    test_expect_code 1 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file >dag_put_out 2>&1
  
ok 89 - 'ipfs dag put' check block size
System.err »
1+0 records in
1+0 records out
2097153 bytes (2.1 MB, 2.0 MiB) copied, 0.00680032 s, 308 MB/s
90 - ipfs dag put output has the correct error Success 0.008
System.out »
expecting success: 
    grep "produced block is over 2MiB" dag_put_out
  
Error: produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 90 - ipfs dag put output has the correct error
91 - ipfs dag put --allow-big-block=true works Success 0.127
System.out »
expecting success: 
    test_expect_code 0 ipfs dag put --input-codec=raw --store-codec=raw over-2MiB-file --allow-big-block=true &&
    rm over-2MiB-file
  
bafkreihjucm4oxxyg7bixsiwqo7ocj7emp5a5yimch6yc34nfvbiydlbby
ok 91 - ipfs dag put --allow-big-block=true works
92 - can add an ipld object using dag-json to dag-json Success 0.118
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-json)
  
ok 92 - can add an ipld object using dag-json to dag-json
93 - CID looks correct Success 0.007
System.out »
expecting success: 
    EXPHASH="baguqeera6gviseelmbzn2ugoddo5vulxlshqs3kw5ymgsb6w4cabnoh4ldpa"
    test $EXPHASH = $IPLDHASH
  
ok 93 - CID looks correct
94 - can add an ipld object using dag-json to dag-cbor Success 0.100
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --input-codec dag-json --store-codec dag-cbor)
  
ok 94 - can add an ipld object using dag-json to dag-cbor
95 - CID looks correct Success 0.007
System.out »
expecting success: 
    EXPHASH="bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde"
    test $EXPHASH = $IPLDHASH
  
ok 95 - CID looks correct
96 - can add an ipld object using cid-base=base58btc Success 0.090
System.out »
expecting success: 
    IPLDb58HASH=$(cat ipld_object | ipfs dag put -cid-base=base58btc)
  
ok 96 - can add an ipld object using cid-base=base58btc
97 - CID looks correct Success 0.005
System.out »
expecting success: 
    EXPHASH="zdpuAoN1XJ3GsrxEzMuCbRKZzRUVJekJUCbPVgCgE4D9yYqVi"
    test $EXPHASH = $IPLDb58HASH
  
ok 97 - CID looks correct
98 - can add a dag-cbor input block stored as dag-cbor Success 0.073
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-cbor)
  
ok 98 - can add a dag-cbor input block stored as dag-cbor
99 - dag-cbor CID looks correct Success 0.005
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 99 - dag-cbor CID looks correct
100 - can add a dag-cbor input block stored as dag-pb Success 0.068
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-pb)
  
ok 100 - can add a dag-cbor input block stored as dag-pb
101 - dag-pb CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 101 - dag-pb CID looks correct
102 - can add a dag-cbor input block stored as dag-json Success 0.066
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagcbor | ipfs dag put --input-codec dag-cbor --store-codec dag-json)
  
ok 102 - can add a dag-cbor input block stored as dag-json
103 - dag-json CID looks correct Success 0.003
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 103 - dag-json CID looks correct
104 - can add a dag-json input block stored as dag-cbor Success 0.068
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-cbor)
  
ok 104 - can add a dag-json input block stored as dag-cbor
105 - dag-cbor CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 105 - dag-cbor CID looks correct
106 - can add a dag-json input block stored as dag-pb Success 0.074
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-pb)
  
ok 106 - can add a dag-json input block stored as dag-pb
107 - dag-pb CID looks correct Success 0.003
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 107 - dag-pb CID looks correct
108 - can add a dag-json input block stored as dag-json Success 0.142
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagjson | ipfs dag put --input-codec dag-json --store-codec dag-json)
  
ok 108 - can add a dag-json input block stored as dag-json
109 - dag-json CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 109 - dag-json CID looks correct
110 - can add a dag-pb input block stored as dag-cbor Success 0.140
System.out »
expecting success: 
    IPLDCBORHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-cbor)
  
ok 110 - can add a dag-pb input block stored as dag-cbor
111 - dag-cbor CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji"
    test $EXPHASH = $IPLDCBORHASH
  
ok 111 - dag-cbor CID looks correct
112 - can add a dag-pb input block stored as dag-pb Success 0.213
System.out »
expecting success: 
    IPLDPBHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-pb)
  
ok 112 - can add a dag-pb input block stored as dag-pb
113 - dag-pb CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom"
    test $EXPHASH = $IPLDPBHASH
  
ok 113 - dag-pb CID looks correct
114 - can add a dag-pb input block stored as dag-json Success 0.173
System.out »
expecting success: 
    IPLDJSONHASH=$(cat ipld_object_dagpb | ipfs dag put --input-codec dag-pb --store-codec dag-json)
  
ok 114 - can add a dag-pb input block stored as dag-json
115 - dag-json CID looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq"
    test $EXPHASH = $IPLDJSONHASH
  
ok 115 - dag-json CID looks correct
116 - can get dag-cbor, dag-json, dag-pb blocks as dag-json Success 0.508
System.out »
expecting success: 
    ipfs dag get $IPLDCBORHASH >& dag-get-cbor &&
    ipfs dag get $IPLDJSONHASH >& dag-get-json &&
    ipfs dag get $IPLDPBHASH >& dag-get-pb
  
ok 116 - can get dag-cbor, dag-json, dag-pb blocks as dag-json
117 - can get dag-pb block transcoded as dag-cbor Success 0.158
System.out »
expecting success: 
    ipfs dag get --output-codec=dag-cbor $IPLDPBHASH >& dag-get-dagpb-transcoded-to-dagcbor &&
    echo "122082a2e4c892e7dcf1d491b30d68aa73ba76bec94f87d4e1a887596ce0730a534a" >sha2_dagpb_to_dagcbor_expected &&
    multihash -a=sha2-256 -e=hex dag-get-dagpb-transcoded-to-dagcbor >sha2_dagpb_to_dagcbor_actual &&
    test_cmp sha2_dagpb_to_dagcbor_expected sha2_dagpb_to_dagcbor_actual
  
ok 117 - can get dag-pb block transcoded as dag-cbor
118 - dag put and dag get transcodings match Success 0.094
System.out »
expecting success: 
    ROUNDTRIPDAGCBOR=$(ipfs dag put --input-codec=dag-cbor --store-codec=dag-cbor dag-get-dagpb-transcoded-to-dagcbor) &&
    test $ROUNDTRIPDAGCBOR = $IPLDCBORHASH
  
ok 118 - dag put and dag get transcodings match
119 - outputs are the same Success 0.007
System.out »
expecting success: 
    test_cmp dag-get-cbor dag-get-json &&
    test_cmp dag-get-cbor dag-get-pb
  
ok 119 - outputs are the same
120 - various path traversals work Success 0.682
System.out »
expecting success: 
    ipfs cat $IPLDHASH/cats/0 > out1 &&
    ipfs cat $IPLDHASH/cats/1/water > out2 &&
    ipfs cat $IPLDHASH/magic > out3
  
ok 120 - various path traversals work
121 - outputs look correct Success 0.008
System.out »
expecting success: 
    test_cmp file1 out1 &&
    test_cmp file2 out2 &&
    test_cmp file3 out3
  
ok 121 - outputs look correct
122 - resolving sub-objects works Success 0.871
System.out »
expecting success: 
    ipfs dag get $IPLDHASH/hello > sub1 &&
    ipfs dag get $IPLDHASH/sub > sub2 &&
    ipfs dag get $IPLDHASH/sub/beep > sub3 &&
    ipfs dag get $IPLDHASH/sub/beep/0 > sub4 &&
    ipfs dag get $IPLDHASH/sub/beep/1 > sub5
  
ok 122 - resolving sub-objects works
123 - sub-objects look right Success 0.041
System.out »
expecting success: 
    echo -n "\"world\"" > sub1_exp &&
    test_cmp sub1_exp sub1 &&
    echo -n "{\"beep\":[0,\"bop\"],\"dict\":\"ionary\"}" > sub2_exp &&
    test_cmp sub2_exp sub2 &&
    echo -n "[0,\"bop\"]" > sub3_exp &&
    test_cmp sub3_exp sub3 &&
    echo -n "0" > sub4_exp &&
    test_cmp sub4_exp sub4 &&
    echo -n "\"bop\"" > sub5_exp &&
    test_cmp sub5_exp sub5
  
ok 123 - sub-objects look right
124 - traversals using /ipld/ work Success 0.092
System.out »
expecting success: 
    ipfs dag get /ipld/$IPLDPBHASH/Data > ipld_path_Data_actual
  
ok 124 - traversals using /ipld/ work
125 - retrieved node looks right Success 0.010
System.out »
expecting success: 
    echo -n "{\"/\":{\"bytes\":\"AAECAwQ\"}}" > ipld_path_Data_expected
    test_cmp ipld_path_Data_actual ipld_path_Data_expected
  
ok 125 - retrieved node looks right
126 - can pin ipld object Success 0.203
System.out »
expecting success: 
    ipfs pin add $IPLDHASH
  
pinned bafyreiblwimnjbqcdoeafiobk6q27jcw64ew7n2fmmhdpldd63edmjecde recursively
ok 126 - can pin ipld object
127 - can pin dag-pb object Success 0.169
System.out »
expecting success: 
    ipfs pin add $IPLDPBHASH
  
pinned bafybeibazl2z4vqp2tmwcfag6wirmtpnomxknqcgrauj7m2yisrz3qjbom recursively
ok 127 - can pin dag-pb object
128 - can pin dag-cbor object Success 0.183
System.out »
expecting success: 
    ipfs pin add $IPLDCBORHASH
  
pinned bafyreieculsmrexh3ty5jentbvuku452o27mst4h2tq2rb2zntqhgcstji recursively
ok 128 - can pin dag-cbor object
129 - can pin dag-json object Success 0.154
System.out »
expecting success: 
    ipfs pin add $IPLDJSONHASH
  
pinned baguqeerajwksxu3lxpomdwxvosl542zl3xknhjgxtq3277gafrhl6vdw5tcq recursively
ok 129 - can pin dag-json object
130 - after gc, objects still accessible Success 0.196
System.out »
expecting success: 
    ipfs repo gc > /dev/null &&
    ipfs refs -r --timeout=2s $IPLDJSONHASH > /dev/null
  
ok 130 - after gc, objects still accessible
131 - can get object Success 0.076
System.out »
expecting success: 
    ipfs dag get $IPLDHASH > ipld_obj_out
  
ok 131 - can get object
132 - object links look right Success 0.007
System.out »
expecting success: 
    grep "{\"/\":\"" ipld_obj_out > /dev/null
  
ok 132 - object links look right
133 - retrieved object hashes back correctly Success 0.060
System.out »
expecting success: 
    IPLDHASH2=$(cat ipld_obj_out | ipfs dag put --input-codec dag-json --store-codec dag-cbor) &&
    test "$IPLDHASH" = "$IPLDHASH2"
  
ok 133 - retrieved object hashes back correctly
134 - add a normal file Success 0.111
System.out »
expecting success: 
    HASH=$(echo "foobar" | ipfs add -q)
  
ok 134 - add a normal file
135 - can view protobuf object with dag get Success 0.067
System.out »
expecting success: 
    ipfs dag get $HASH > dag_get_pb_out
  
ok 135 - can view protobuf object with dag get
136 - output looks correct Success 0.005
System.out »
expecting success: 
    echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISB2Zvb2JhcgoYBw\"}},\"Links\":[]}" > dag_get_pb_exp &&
    test_cmp dag_get_pb_exp dag_get_pb_out
  
ok 136 - output looks correct
137 - can call dag get with a path Success 0.066
System.out »
expecting success: 
    ipfs dag get $IPLDHASH/cats/0 > cat_out
  
ok 137 - can call dag get with a path
138 - output looks correct Success 0.006
System.out »
expecting success: 
    echo -n "{\"Data\":{\"/\":{\"bytes\":\"CAISBGZvbwoYBA\"}},\"Links\":[]}" > cat_exp &&
    test_cmp cat_exp cat_out
  
ok 138 - output looks correct
139 - non-canonical dag-cbor input is normalized Success 0.058
System.out »
expecting success: 
    HASH=$(cat ../t0053-dag-data/non-canon.cbor | ipfs dag put --store-codec dag-cbor --input-codec dag-cbor) &&
    test $HASH = "bafyreiawx7ona7oa2ptcoh6vwq4q6bmd7x2ibtkykld327bgb7t73ayrqm" ||
    test_fsh echo $HASH
  
ok 139 - non-canonical dag-cbor input is normalized
140 - cbor input can be fetched Success 0.070
System.out »
expecting success: 
    EXPARR=$(ipfs dag get $HASH/arr)
    test $EXPARR = "[]"
  
ok 140 - cbor input can be fetched
141 - add an ipld with pin Success 0.144
System.out »
expecting success: 
    PINHASH=$(printf {\"foo\":\"bar\"} | ipfs dag put --input-codec dag-json --pin=true)
  
ok 141 - add an ipld with pin
142 - after gc, objects still accessible Success 0.132
System.out »
expecting success: 
    ipfs repo gc > /dev/null &&
    ipfs refs -r --timeout=2s $PINHASH > /dev/null
  
ok 142 - after gc, objects still accessible
143 - can add an ipld object with sha3-512 hash Success 0.082
System.out »
expecting success: 
    IPLDHASH=$(cat ipld_object | ipfs dag put --hash sha3-512)
  
ok 143 - can add an ipld object with sha3-512 hash
144 - output looks correct Success 0.004
System.out »
expecting success: 
    EXPHASH="bafyriqforjma7y7akqz7nhuu73r6liggj5zhkbfiqgicywe3fgkna2ijlhod2af3ue7doj56tlzt5hh6iu5esafc4msr3sd53jol5m2o25ucy"
    test $EXPHASH = $IPLDHASH
  
ok 144 - output looks correct
145 - prepare dag-pb object Success 0.172
System.out »
expecting success: 
    echo foo > test_file &&
    HASH=$(ipfs add -wQ test_file | ipfs cid base32)
  
ok 145 - prepare dag-pb object
146 - dag put with json dag-pb works Success 0.153
System.out »
expecting success: 
    ipfs dag get $HASH > pbjson &&
    cat pbjson | ipfs dag put --store-codec=dag-pb --input-codec=dag-json > dag_put_out
  
ok 146 - dag put with json dag-pb works
147 - dag put with dag-pb works output looks good Success 0.006
System.out »
expecting success: 
    echo $HASH > dag_put_exp &&
    test_cmp dag_put_exp dag_put_out
  
ok 147 - dag put with dag-pb works output looks good
148 - dag put with raw dag-pb works Success 0.172
System.out »
expecting success: 
    ipfs block get $HASH > pbraw &&
    cat pbraw | ipfs dag put --store-codec=dag-pb --input-codec=dag-pb > dag_put_out
  
ok 148 - dag put with raw dag-pb works
149 - dag put with dag-pb works output looks good Success 0.005
System.out »
expecting success: 
    echo $HASH > dag_put_exp &&
    test_cmp dag_put_exp dag_put_out
  
ok 149 - dag put with dag-pb works output looks good
150 - dag put with raw node works Success 0.166
System.out »
expecting success: 
    echo "foo bar" > raw_node_in &&
    HASH=$(ipfs dag put --store-codec=raw --input-codec=raw -- raw_node_in) &&
    ipfs block get "$HASH" > raw_node_out &&
    test_cmp raw_node_in raw_node_out
ok 150 - dag put with raw node works
151 - dag put multiple files Success 0.093
System.out »
expecting success: 
    printf {\"foo\":\"bar\"} > a.json &&
    printf {\"foo\":\"baz\"} > b.json &&
    ipfs dag put a.json b.json > dag_put_out
  
ok 151 - dag put multiple files
152 - dag put multiple files output looks good Success 0.006
System.out »
expecting success: 
    echo bafyreiblaotetvwobe7cu2uqvnddr6ew2q3cu75qsoweulzku2egca4dxq > dag_put_exp &&
    echo bafyreibqp7zvp6dvrqhtkbwuzzk7jhtmfmngtiqjajqpm6gtw55o7kqzfi >> dag_put_exp &&

    test_cmp dag_put_exp dag_put_out
  
ok 152 - dag put multiple files output looks good
153 - prepare data for dag resolve Success 0.214
System.out »
expecting success: 
    NESTED_HASH=$(echo "{\"data\":123}" | ipfs dag put) &&
    HASH=$(echo "{\"obj\":{\"/\":\"${NESTED_HASH}\"}}" | ipfs dag put)
  
ok 153 - prepare data for dag resolve
154 - dag resolve some things Success 0.482
System.out »
expecting success: 
    ipfs dag resolve $HASH > resolve_hash &&
    ipfs dag resolve ${HASH}/obj > resolve_obj &&
    ipfs dag resolve ${HASH}/obj/data > resolve_data
  
ok 154 - dag resolve some things
155 - dag resolve output looks good Success 0.036
System.out »
expecting success: 
    printf $HASH > resolve_hash_exp &&
    printf $NESTED_HASH > resolve_obj_exp &&
    printf $NESTED_HASH/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 155 - dag resolve output looks good
156 - get base32 version of hashes for testing Success 0.134
System.out »
expecting success: 
    HASHb32=$(ipfs cid base32 $HASH) &&
    NESTED_HASHb32=$(ipfs cid base32 $NESTED_HASH)
  
ok 156 - get base32 version of hashes for testing
157 - dag resolve some things with --cid-base=base32 Success 0.199
System.out »
expecting success: 
    ipfs dag resolve $HASH --cid-base=base32 > resolve_hash &&
    ipfs dag resolve ${HASH}/obj --cid-base=base32 > resolve_obj &&
    ipfs dag resolve ${HASH}/obj/data --cid-base=base32 > resolve_data
  
ok 157 - dag resolve some things with --cid-base=base32
158 - dag resolve output looks good with --cid-base=base32 Success 0.012
System.out »
expecting success: 
    printf $HASHb32 > resolve_hash_exp &&
    printf $NESTED_HASHb32 > resolve_obj_exp &&
    printf $NESTED_HASHb32/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 158 - dag resolve output looks good with --cid-base=base32
159 - dag resolve some things with base32 hash Success 0.310
System.out »
expecting success: 
    ipfs dag resolve $HASHb32 > resolve_hash &&
    ipfs dag resolve ${HASHb32}/obj  > resolve_obj &&
    ipfs dag resolve ${HASHb32}/obj/data > resolve_data
  
ok 159 - dag resolve some things with base32 hash
160 - dag resolve output looks good with base32 hash Success 0.011
System.out »
expecting success: 
    printf $HASHb32 > resolve_hash_exp &&
    printf $NESTED_HASHb32 > resolve_obj_exp &&
    printf $NESTED_HASHb32/data > resolve_data_exp &&

    test_cmp resolve_hash_exp resolve_hash &&
    test_cmp resolve_obj_exp resolve_obj &&
    test_cmp resolve_data_exp resolve_data
  
ok 160 - dag resolve output looks good with base32 hash
161 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 161 - 'ipfs daemon' is still running
162 - 'ipfs daemon' can be killed Success 0.271
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 162 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - make a few test files
ok 5 - make an ipld object in dag-json
ok 6 - make the same ipld object in dag-cbor, dag-json and dag-pb
ok 7 - can add an ipld object using defaults (dag-json to dag-cbor)
ok 8 - CID looks correct
ok 9 - 'ipfs dag put' check block size
ok 10 - ipfs dag put output has the correct error
ok 11 - ipfs dag put --allow-big-block=true works
ok 12 - can add an ipld object using dag-json to dag-json
ok 13 - CID looks correct
ok 14 - can add an ipld object using dag-json to dag-cbor
ok 15 - CID looks correct
ok 16 - can add an ipld object using cid-base=base58btc
ok 17 - CID looks correct
ok 18 - can add a dag-cbor input block stored as dag-cbor
ok 19 - dag-cbor CID looks correct
ok 20 - can add a dag-cbor input block stored as dag-pb
ok 21 - dag-pb CID looks correct
ok 22 - can add a dag-cbor input block stored as dag-json
ok 23 - dag-json CID looks correct
ok 24 - can add a dag-json input block stored as dag-cbor
ok 25 - dag-cbor CID looks correct
ok 26 - can add a dag-json input block stored as dag-pb
ok 27 - dag-pb CID looks correct
ok 28 - can add a dag-json input block stored as dag-json
ok 29 - dag-json CID looks correct
ok 30 - can add a dag-pb input block stored as dag-cbor
ok 31 - dag-cbor CID looks correct
ok 32 - can add a dag-pb input block stored as dag-pb
ok 33 - dag-pb CID looks correct
ok 34 - can add a dag-pb input block stored as dag-json
ok 35 - dag-json CID looks correct
ok 36 - can get dag-cbor, dag-json, dag-pb blocks as dag-json
ok 37 - can get dag-pb block transcoded as dag-cbor
ok 38 - dag put and dag get transcodings match
ok 39 - outputs are the same
ok 40 - various path traversals work
ok 41 - outputs look correct
ok 42 - resolving sub-objects works
ok 43 - sub-objects look right
ok 44 - traversals using /ipld/ work
ok 45 - retrieved node looks right
ok 46 - can pin ipld object
ok 47 - can pin dag-pb object
ok 48 - can pin dag-cbor object
ok 49 - can pin dag-json object
ok 50 - after gc, objects still accessible
ok 51 - can get object
ok 52 - object links look right
ok 53 - retrieved object hashes back correctly
ok 54 - add a normal file
ok 55 - can view protobuf object with dag get
ok 56 - output looks correct
ok 57 - can call dag get with a path
ok 58 - output looks correct
ok 59 - non-canonical dag-cbor input is normalized
ok 60 - cbor input can be fetched
ok 61 - add an ipld with pin
ok 62 - after gc, objects still accessible
ok 63 - can add an ipld object with sha3-512 hash
ok 64 - output looks correct
ok 65 - prepare dag-pb object
ok 66 - dag put with json dag-pb works
ok 67 - dag put with dag-pb works output looks good
ok 68 - dag put with raw dag-pb works
ok 69 - dag put with dag-pb works output looks good
ok 70 - dag put with raw node works
ok 71 - dag put multiple files
ok 72 - dag put multiple files output looks good
ok 73 - prepare data for dag resolve
ok 74 - dag resolve some things
ok 75 - dag resolve output looks good
ok 76 - get base32 version of hashes for testing
ok 77 - dag resolve some things with --cid-base=base32
ok 78 - dag resolve output looks good with --cid-base=base32
ok 79 - dag resolve some things with base32 hash
ok 80 - dag resolve output looks good with base32 hash
ok 81 - 'ipfs daemon' succeeds
ok 82 - api file shows up
ok 83 - set up address variables
ok 84 - get swarm addresses
ok 85 - set swarm address vars
ok 86 - 'ipfs daemon' is ready
ok 87 - can add an ipld object using defaults (dag-json to dag-cbor)
ok 88 - CID looks correct
ok 89 - 'ipfs dag put' check block size
ok 90 - ipfs dag put output has the correct error
ok 91 - ipfs dag put --allow-big-block=true works
ok 92 - can add an ipld object using dag-json to dag-json
ok 93 - CID looks correct
ok 94 - can add an ipld object using dag-json to dag-cbor
ok 95 - CID looks correct
ok 96 - can add an ipld object using cid-base=base58btc
ok 97 - CID looks correct
ok 98 - can add a dag-cbor input block stored as dag-cbor
ok 99 - dag-cbor CID looks correct
ok 100 - can add a dag-cbor input block stored as dag-pb
ok 101 - dag-pb CID looks correct
ok 102 - can add a dag-cbor input block stored as dag-json
ok 103 - dag-json CID looks correct
ok 104 - can add a dag-json input block stored as dag-cbor
ok 105 - dag-cbor CID looks correct
ok 106 - can add a dag-json input block stored as dag-pb
ok 107 - dag-pb CID looks correct
ok 108 - can add a dag-json input block stored as dag-json
ok 109 - dag-json CID looks correct
ok 110 - can add a dag-pb input block stored as dag-cbor
ok 111 - dag-cbor CID looks correct
ok 112 - can add a dag-pb input block stored as dag-pb
ok 113 - dag-pb CID looks correct
ok 114 - can add a dag-pb input block stored as dag-json
ok 115 - dag-json CID looks correct
ok 116 - can get dag-cbor, dag-json, dag-pb blocks as dag-json
ok 117 - can get dag-pb block transcoded as dag-cbor
ok 118 - dag put and dag get transcodings match
ok 119 - outputs are the same
ok 120 - various path traversals work
ok 121 - outputs look correct
ok 122 - resolving sub-objects works
ok 123 - sub-objects look right
ok 124 - traversals using /ipld/ work
ok 125 - retrieved node looks right
ok 126 - can pin ipld object
ok 127 - can pin dag-pb object
ok 128 - can pin dag-cbor object
ok 129 - can pin dag-json object
ok 130 - after gc, objects still accessible
ok 131 - can get object
ok 132 - object links look right
ok 133 - retrieved object hashes back correctly
ok 134 - add a normal file
ok 135 - can view protobuf object with dag get
ok 136 - output looks correct
ok 137 - can call dag get with a path
ok 138 - output looks correct
ok 139 - non-canonical dag-cbor input is normalized
ok 140 - cbor input can be fetched
ok 141 - add an ipld with pin
ok 142 - after gc, objects still accessible
ok 143 - can add an ipld object with sha3-512 hash
ok 144 - output looks correct
ok 145 - prepare dag-pb object
ok 146 - dag put with json dag-pb works
ok 147 - dag put with dag-pb works output looks good
ok 148 - dag put with raw dag-pb works
ok 149 - dag put with dag-pb works output looks good
ok 150 - dag put with raw node works
ok 151 - dag put multiple files
ok 152 - dag put multiple files output looks good
ok 153 - prepare data for dag resolve
ok 154 - dag resolve some things
ok 155 - dag resolve output looks good
ok 156 - get base32 version of hashes for testing
ok 157 - dag resolve some things with --cid-base=base32
ok 158 - dag resolve output looks good with --cid-base=base32
ok 159 - dag resolve some things with base32 hash
ok 160 - dag resolve output looks good with base32 hash
ok 161 - 'ipfs daemon' is still running
ok 162 - 'ipfs daemon' can be killed

Back to top

TestCase t0054-dag-car-import-export

Name Status Type Time(s)
1 - set up testbed Success 0.746
System.out »
expecting success: 
   iptb testbed create -type localipfs -count 2 -force -init

ok 1 - set up testbed
2 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.354
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
3 - start up nodes Success 0.424
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 3 - start up nodes
4 - connect nodes to each other Success 0.194
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 4 - connect nodes to each other
5 - node 0 is connected Success 0.158
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 5 - node 0 is connected
6 - node 1 is connected Success 0.122
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 1 is connected
7 - pinlist empty Success 0.078
System.out »
expecting success: 
    [[ -z "$( ipfsi $node pin ls )" ]]
  
ok 7 - pinlist empty
8 - nothing left to gc Success 0.097
System.out »
expecting success: 
    [[ -z "$( ipfsi $node repo gc )" ]]
  
ok 8 - nothing left to gc
9 - pinlist empty Success 0.101
System.out »
expecting success: 
    [[ -z "$( ipfsi $node pin ls )" ]]
  
ok 9 - pinlist empty
10 - nothing left to gc Success 0.097
System.out »
expecting success: 
    [[ -z "$( ipfsi $node repo gc )" ]]
  
ok 10 - nothing left to gc
11 - basic import Success 1.231
System.out »
expecting success: 
    do_import 0 \
      ../t0054-dag-car-import-export-data/combined_naked_roots_genesis_and_128.car \
      ../t0054-dag-car-import-export-data/lotus_testnet_export_128_shuffled_nulroot.car \
      ../t0054-dag-car-import-export-data/lotus_devnet_genesis_shuffled_nulroot.car \
    > basic_import_actual
  
ok 11 - basic import
12 - basic import output as expected Success 0.013
System.out »
expecting success: 
    test_cmp_sorted basic_import_expected basic_import_actual
  
ok 12 - basic import output as expected
13 - basic import with --stats Success 0.537
System.out »
expecting success: 
    do_import 0 --stats \
      ../t0054-dag-car-import-export-data/combined_naked_roots_genesis_and_128.car \
      ../t0054-dag-car-import-export-data/lotus_testnet_export_128_shuffled_nulroot.car \
      ../t0054-dag-car-import-export-data/lotus_devnet_genesis_shuffled_nulroot.car \
    > basic_import_actual
  
ok 13 - basic import with --stats
14 - basic import output with --stats as expected Success 0.011
System.out »
expecting success: 
    test_cmp_sorted basic_import_stats_expected basic_import_actual
  
ok 14 - basic import output with --stats as expected
15 - basic fetch+export 1 Success 28.565
System.out »
expecting success: 
    ipfsi 1 dag export bafy2bzaced4ueelaegfs5fqu4tzsh6ywbbpfk3cxppupmxfdhbpbhzawfw5oy > reexported_testnet_128.car
  
ok 15 - basic fetch+export 1
16 - export of shuffled testnet export identical to canonical original Success 0.013
System.out »
expecting success: 
    test_cmp reexported_testnet_128.car ../t0054-dag-car-import-export-data/lotus_testnet_export_128.car
  
ok 16 - export of shuffled testnet export identical to canonical original
17 - basic fetch+export 2 Success 0.698
System.out »
expecting success: 
    ipfsi 1 dag export bafy2bzaceaxm23epjsmh75yvzcecsrbavlmkcxnva66bkdebdcnyw3bjrc74u > reexported_devnet_genesis.car
  
ok 17 - basic fetch+export 2
18 - export of shuffled devnet export identical to canonical original Success 0.017
System.out »
expecting success: 
    test_cmp reexported_devnet_genesis.car ../t0054-dag-car-import-export-data/lotus_devnet_genesis.car
  
ok 18 - export of shuffled devnet export identical to canonical original
19 - pinlist on node1 still empty Success 0.355
System.out »
expecting success: 
    [[ -z "$( ipfsi 1 pin ls )" ]]
  
ok 19 - pinlist on node1 still empty
20 - import/pin naked roots only, relying on local blockstore having all the data Success 1.118
System.out »
expecting success: 
    ipfsi 1 dag import --stats --enc=json ../t0054-dag-car-import-export-data/combined_naked_roots_genesis_and_128.car \
      > naked_import_result_json_actual
  
ok 20 - import/pin naked roots only, relying on local blockstore having all the data
21 - naked import output as expected Success 0.040
System.out »
expecting success: 
    test_cmp_sorted naked_root_import_json_expected naked_import_result_json_actual
  
ok 21 - naked import output as expected
22 - pinlist empty Success 0.679
System.out »
expecting success: 
    [[ -z "$( ipfsi $node pin ls )" ]]
  
ok 22 - pinlist empty
23 - nothing left to gc Success 0.721
System.out »
expecting success: 
    [[ -z "$( ipfsi $node repo gc )" ]]
  
ok 23 - nothing left to gc
24 - pinlist empty Success 1.159
System.out »
expecting success: 
    [[ -z "$( ipfsi $node pin ls )" ]]
  
ok 24 - pinlist empty
25 - nothing left to gc Success 0.405
System.out »
expecting success: 
    [[ -z "$( ipfsi $node repo gc )" ]]
  
ok 25 - nothing left to gc
26 - fifo import Success 2.242
System.out »
expecting success: 
    (
        cat ../t0054-dag-car-import-export-data/lotus_testnet_export_128_shuffled_nulroot.car > pipe_testnet &
        cat ../t0054-dag-car-import-export-data/lotus_devnet_genesis_shuffled_nulroot.car > pipe_devnet &

        do_import 0 --stats \
          pipe_testnet \
          pipe_devnet \
          ../t0054-dag-car-import-export-data/combined_naked_roots_genesis_and_128.car \
        > basic_fifo_import_actual
        result=$?

        wait || true	# work around possible trigger of a bash bug on overloaded circleci
        exit "$result"
    )
  
ok 26 - fifo import
27 - remove fifos Success 0.012
System.out »
expecting success: 
    rm pipe_testnet pipe_devnet
  
ok 27 - remove fifos
28 - fifo-import output as expected Success 0.044
System.out »
expecting success: 
    test_cmp_sorted basic_import_stats_expected basic_fifo_import_actual
  
ok 28 - fifo-import output as expected
29 - shut down nodes Success 0.751
System.out »
expecting success: 
  iptb stop && iptb_wait_stop

node[0] exit 0


node[1] exit 0


ok 29 - shut down nodes
30 - ipfs init succeeds Success 0.671
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 30 - ipfs init succeeds
31 - disable telemetry Success 1.078
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 31 - disable telemetry
32 - prepare config -- mounting Success 4.651
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0054-dag-car-import-export.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0054-dag-car-import-export.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0054-dag-car-import-export.sh/mfs"
ok 32 - prepare config -- mounting
33 - basic offline export of 'getting started' dag works Success 0.359
System.out »
expecting success: 
  ipfs dag export "$HASH_WELCOME_DOCS" >/dev/null

ok 33 - basic offline export of 'getting started' dag works
34 - basic offline export of nonexistent cid Success 0.243
System.out »
expecting success: 
  ! ipfs dag export QmYwAPJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2> offline_fetch_error_actual >/dev/null

ok 34 - basic offline export of nonexistent cid
35 - correct error Success 0.015
System.out »
expecting success: 
  test_should_contain "Error: block was not found locally (offline): ipld: could not find QmYwAPJXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" offline_fetch_error_actual

ok 35 - correct error
36 - multiroot import works (--enc=json) Success 1.005
System.out »
expecting success: 
  ipfs dag import --enc=json ../t0054-dag-car-import-export-data/lotus_testnet_export_256_multiroot.car > multiroot_import_json_actual

ok 36 - multiroot import works (--enc=json)
37 - multiroot import expected output Success 0.009
System.out »
expecting success: 
  test_cmp_sorted multiroot_import_json_expected multiroot_import_json_actual

ok 37 - multiroot import expected output
38 - multiroot import works with --stats Success 0.775
System.out »
expecting success: 
  ipfs dag import --stats --enc=json ../t0054-dag-car-import-export-data/lotus_testnet_export_256_multiroot.car > multiroot_import_json_actual

ok 38 - multiroot import works with --stats
39 - multiroot import expected output Success 0.012
System.out »
expecting success: 
  test_cmp_sorted multiroot_import_json_stats_expected multiroot_import_json_actual

ok 39 - multiroot import expected output
40 - pin-less import works Success 0.255
System.out »
expecting success: 
  ipfs dag import --stats --enc=json --pin-roots=false \
  ../t0054-dag-car-import-export-data/lotus_devnet_genesis.car \
  ../t0054-dag-car-import-export-data/lotus_testnet_export_128.car \
    > no-pin_import_actual

ok 40 - pin-less import works
41 - expected no pins on --pin-roots=false Success 0.006
System.out »
expecting success: 
  test_cmp pin_import_expected no-pin_import_actual

ok 41 - expected no pins on --pin-roots=false
42 - naked root import works Success 0.167
System.out »
expecting success: 
  ipfs dag import --stats --enc=json ../t0054-dag-car-import-export-data/combined_naked_roots_genesis_and_128.car \
    > naked_root_import_json_actual

ok 42 - naked root import works
43 - naked root import expected output Success 0.010
System.out »
expecting success: 
   test_cmp_sorted naked_root_import_json_expected naked_root_import_json_actual

ok 43 - naked root import expected output
44 - 'ipfs dag import' check block size Success 0.311
System.out »
expecting success: 
    BIG_CID=$(dd if=/dev/zero bs=2097153 count=1 | ipfs dag put --input-codec=raw --store-codec=raw --allow-big-block) &&
    ipfs dag export $BIG_CID > over-2MiB-block.car &&
    test_expect_code 1 ipfs dag import over-2MiB-block.car >dag_import_out 2>&1

ok 44 - 'ipfs dag import' check block size
System.err »
1+0 records in
1+0 records out
2097153 bytes (2.1 MB, 2.0 MiB) copied, 0.0537332 s, 39.0 MB/s
45 - ipfs dag import output has the correct error Success 0.006
System.out »
expecting success: 
    grep "block is over 2MiB" dag_import_out

Error: import failed at block "bafkreihjucm4oxxyg7bixsiwqo7ocj7emp5a5yimch6yc34nfvbiydlbby": produced block is over 2MiB: big blocks can't be exchanged with other peers. consider using UnixFS for automatic chunking of bigger files, or pass --allow-big-block to override
ok 45 - ipfs dag import output has the correct error
46 - ipfs dag import --allow-big-block works Success 0.118
System.out »
expecting success: 
    test_expect_code 0 ipfs dag import --allow-big-block over-2MiB-block.car

Pinned root	bafkreihjucm4oxxyg7bixsiwqo7ocj7emp5a5yimch6yc34nfvbiydlbby	success
ok 46 - ipfs dag import --allow-big-block works
47 - version 2 import Success 0.278
System.out »
expecting success: 
  ipfs dag import --stats --enc=json \
    ../t0054-dag-car-import-export-data/lotus_testnet_export_128_v2.car \
    ../t0054-dag-car-import-export-data/lotus_devnet_genesis_v2.car \
  > version_2_import_actual

ok 47 - version 2 import
48 - version 2 import output as expected Success 0.010
System.out »
expecting success: 
  test_cmp_sorted version_2_import_expected version_2_import_actual

ok 48 - version 2 import output as expected
49 - 'ipfs dag import' decode IPLD 'dag-json' codec works Success 0.258
System.out »
expecting success: 
  NEW_HASH=$(echo "{ \"test\": \"dag-json\" }" | ipfs dag put --store-codec dag-json) &&
  ipfs dag export $NEW_HASH > dag-json.car &&
  ipfs dag import dag-json.car &&
  rm dag-json.car

Pinned root	baguqeerajcsqeypsucipdeoqqk5v2ib5lptt5sygn5hn4mglv7ajjt5hgegq	success
ok 49 - 'ipfs dag import' decode IPLD 'dag-json' codec works
50 - 'ipfs dag import' decode IPLD 'dag-cbor' codec works Success 0.242
System.out »
expecting success: 
  NEW_HASH=$(echo "{ \"test\": \"dag-cbor\" }" | ipfs dag put --store-codec dag-cbor) &&
  ipfs dag export $NEW_HASH > dag-cbor.car &&
  ipfs dag import dag-cbor.car &&
  rm dag-cbor.car

Pinned root	bafyreid4vv4xzftzzaeijxmegofdcscc7o73k6aruzjs7auv5yoollxygu	success
ok 50 - 'ipfs dag import' decode IPLD 'dag-cbor' codec works
51 - 'ipfs dag import' decode IPLD 'json' codec works Success 0.251
System.out »
expecting success: 
  NEW_HASH=$(echo "{ \"test\": \"json\" }" | ipfs dag put --store-codec json) &&
  ipfs dag export $NEW_HASH > json.car &&
  ipfs dag import json.car &&
  rm json.car

Pinned root	bagaaieram6bb6nvid6tb7xknfiurvu2sebwj36gewrd3fvadleonlrivjqnq	success
ok 51 - 'ipfs dag import' decode IPLD 'json' codec works
52 - 'ipfs dag import' decode IPLD 'cbor' codec works Success 0.245
System.out »
expecting success: 
  NEW_HASH=$(echo "{ \"test\": \"cbor\" }" | ipfs dag put --store-codec cbor) &&
  ipfs dag export $NEW_HASH > cbor.car &&
  ipfs dag import cbor.car &&
  rm cbor.car

Pinned root	bafireieyyboktxnjurqk3e6lfkx2ytuoekitzfr7rxklp3precgaca42si	success
ok 52 - 'ipfs dag import' decode IPLD 'cbor' codec works
53 - 'ipfs dag import' without pinning works fine with incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402) Success 0.088
System.out »
expecting success: 
    ipfs dag import --stats --enc=json --pin-roots=false ../t0054-dag-car-import-export-data/partial-dag-scope-entity.car >partial_nopin_import_out 2>&1 &&
    test_cmp partial_nopin_import_expected partial_nopin_import_out

ok 53 - 'ipfs dag import' without pinning works fine with incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402)
54 - 'ipfs dag import' with pinning errors due to incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402) Success 0.092
System.out »
expecting success: 
    ipfs dag import --stats --enc=json --pin-roots=true ../t0054-dag-car-import-export-data/partial-dag-scope-entity.car >partial_pin_import_out 2>&1 &&
    test_should_contain "\"PinErrorMsg\":\"block was not found locally" partial_pin_import_out

ok 54 - 'ipfs dag import' with pinning errors due to incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402)
55 - 'ipfs dag import' pin error in default CLI mode produces exit code 1 (unixfs dir exported as dag-scope=entity from IPIP-402) Success 0.081
System.out »
expecting success: 
    test_expect_code 1 ipfs dag import ../t0054-dag-car-import-export-data/partial-dag-scope-entity.car >partial_pin_import_out 2>&1 &&
    test_should_contain "Error: pinning root \"QmPDC11yLAbVw3dX5jMeEuSdk4BiVjSd9X87zaYRdVjzW3\" FAILED: block was not found locally" partial_pin_import_out

ok 55 - 'ipfs dag import' pin error in default CLI mode produces exit code 1 (unixfs dir exported as dag-scope=entity from IPIP-402)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.FinderInfo'
ok 1 - set up testbed
ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
ok 3 - start up nodes
ok 4 - connect nodes to each other
ok 5 - node 0 is connected
ok 6 - node 1 is connected
ok 7 - pinlist empty
ok 8 - nothing left to gc
ok 9 - pinlist empty
ok 10 - nothing left to gc
ok 11 - basic import
ok 12 - basic import output as expected
ok 13 - basic import with --stats
ok 14 - basic import output with --stats as expected
ok 15 - basic fetch+export 1
ok 16 - export of shuffled testnet export identical to canonical original
ok 17 - basic fetch+export 2
ok 18 - export of shuffled devnet export identical to canonical original
ok 19 - pinlist on node1 still empty
ok 20 - import/pin naked roots only, relying on local blockstore having all the data
ok 21 - naked import output as expected
ok 22 - pinlist empty
ok 23 - nothing left to gc
ok 24 - pinlist empty
ok 25 - nothing left to gc
ok 26 - fifo import
ok 27 - remove fifos
ok 28 - fifo-import output as expected
ok 29 - shut down nodes
ok 30 - ipfs init succeeds
ok 31 - disable telemetry
ok 32 - prepare config -- mounting
ok 33 - basic offline export of 'getting started' dag works
ok 34 - basic offline export of nonexistent cid
ok 35 - correct error
ok 36 - multiroot import works (--enc=json)
ok 37 - multiroot import expected output
ok 38 - multiroot import works with --stats
ok 39 - multiroot import expected output
ok 40 - pin-less import works
ok 41 - expected no pins on --pin-roots=false
ok 42 - naked root import works
ok 43 - naked root import expected output
ok 44 - 'ipfs dag import' check block size
ok 45 - ipfs dag import output has the correct error
ok 46 - ipfs dag import --allow-big-block works
ok 47 - version 2 import
ok 48 - version 2 import output as expected
ok 49 - 'ipfs dag import' decode IPLD 'dag-json' codec works
ok 50 - 'ipfs dag import' decode IPLD 'dag-cbor' codec works
ok 51 - 'ipfs dag import' decode IPLD 'json' codec works
ok 52 - 'ipfs dag import' decode IPLD 'cbor' codec works
ok 53 - 'ipfs dag import' without pinning works fine with incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402)
ok 54 - 'ipfs dag import' with pinning errors due to incomplete DAG (unixfs dir exported as dag-scope=entity from IPIP-402)
ok 55 - 'ipfs dag import' pin error in default CLI mode produces exit code 1 (unixfs dir exported as dag-scope=entity from IPIP-402)
System.err »
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.xattr.com.apple.FinderInfo'

Back to top

TestCase t0055-dag-put-json-new-line

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.414
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.327
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 1.399
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0055-dag-put-json-new-line.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0055-dag-put-json-new-line.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0055-dag-put-json-new-line.sh/mfs"
ok 3 - prepare config -- mounting
4 - create test JSON files Success 0.004
System.out »
expecting success: 
  WANT_JSON="{\"data\":1234}"
  WANT_HASH="bafyreidbm2zncsc3j25zn7lofgd4woeh6eygdy73thfosuni2rwr3bhcvu"
  printf "${WANT_JSON}\n" > with_newline.json &&
  printf "${WANT_JSON}" > without_newline.json

ok 4 - create test JSON files
5 - puts as CBOR work Success 0.379
System.out »
expecting success: 
  GOT_HASH_WITHOUT_NEWLINE="$(cat without_newline.json | ipfs dag put --store-codec dag-cbor)"
  GOT_HASH_WITH_NEWLINE="$(cat with_newline.json | ipfs dag put --store-codec dag-cbor)"

ok 5 - puts as CBOR work
6 - put hashes with or without newline are equal Success 0.003
System.out »
expecting success: 
  test "${GOT_HASH_WITH_NEWLINE}" = "${GOT_HASH_WITHOUT_NEWLINE}"

ok 6 - put hashes with or without newline are equal
7 - hashes are of expected value Success 0.004
System.out »
expecting success: 
  test "${WANT_HASH}" = "${GOT_HASH_WITH_NEWLINE}"
  test "${WANT_HASH}" = "${GOT_HASH_WITHOUT_NEWLINE}"

ok 7 - hashes are of expected value
8 - retrieval by hash does not have new line Success 0.341
System.out »
expecting success: 
  ipfs dag get "${WANT_HASH}" > got.json
  test_cmp without_newline.json got.json

ok 8 - retrieval by hash does not have new line
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create test JSON files
ok 5 - puts as CBOR work
ok 6 - put hashes with or without newline are equal
ok 7 - hashes are of expected value
ok 8 - retrieval by hash does not have new line

Back to top

TestCase t0060-daemon

Name Status Type Time(s)
1 - create pebble config Success 0.465
System.out »
expecting success: 
  ipfs init --profile=pebbleds,test > /dev/null &&
  cp "$IPFS_PATH/config" init-config

ok 1 - create pebble config
2 - cleanup repo Success 0.016
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 2 - cleanup repo
3 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 3 - 'ipfs daemon' succeeds
4 - api file shows up Success 0.818
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 4 - api file shows up
5 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 5 - set up address variables
6 - get swarm addresses Success 0.082
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 6 - get swarm addresses
7 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 7 - set swarm address vars
8 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 8 - 'ipfs daemon' is ready
9 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 9 - 'ipfs daemon' is still running
10 - 'ipfs daemon' can be killed Success 0.339
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 10 - 'ipfs daemon' can be killed
11 - daemon initialization with existing config works Success 0.362
System.out »
expecting success: 
  ipfs config "Datastore.Spec.path" >actual &&
  test $(cat actual) = "pebbleds" &&
  ipfs config Addresses > orig_addrs

ok 11 - daemon initialization with existing config works
12 - cleanup repo Success 0.005
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 12 - cleanup repo
13 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 13 - 'ipfs daemon' succeeds
14 - api file shows up Success 0.619
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 14 - api file shows up
15 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 15 - set up address variables
16 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 16 - get swarm addresses
17 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 17 - set swarm address vars
18 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 18 - 'ipfs daemon' is ready
19 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 19 - 'ipfs daemon' is still running
20 - 'ipfs daemon' can be killed Success 0.260
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 20 - 'ipfs daemon' can be killed
21 - daemon initialization with existing config + profiles works Success 0.076
System.out »
expecting success: 
  ipfs config Addresses >new_addrs &&
  test_expect_code 1 diff -q new_addrs orig_addrs

Files new_addrs and orig_addrs differ
ok 21 - daemon initialization with existing config + profiles works
22 - cleanup repo Success 0.006
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 22 - cleanup repo
23 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 23 - ipfs init succeeds
24 - disable telemetry Success 0.147
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 24 - disable telemetry
25 - prepare config -- mounting Success 0.444
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0060-daemon.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0060-daemon.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0060-daemon.sh/mfs"
ok 25 - prepare config -- mounting
26 - set Resource Manager variables showed at startup Success 0.154
System.out »
expecting success: 
    ipfs config --json Swarm.ResourceMgr.MaxFileDescriptors 1024 &&
    ipfs config Swarm.ResourceMgr.MaxMemory 4GB

ok 26 - set Resource Manager variables showed at startup
27 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 27 - 'ipfs daemon' succeeds
28 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 28 - api file shows up
29 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 29 - set up address variables
30 - get swarm addresses Success 0.062
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 30 - get swarm addresses
31 - set swarm address vars Success 0.012
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 31 - set swarm address vars
32 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 32 - 'ipfs daemon' is ready
33 - 'ipfs config Identity.PeerID' works Success 0.066
System.out »
expecting success: 
  PEERID=$(ipfs config Identity.PeerID)

ok 33 - 'ipfs config Identity.PeerID' works
34 - 'ipfs swarm addrs local' works Success 0.066
System.out »
expecting success: 
  ipfs swarm addrs local >local_addrs

ok 34 - 'ipfs swarm addrs local' works
35 - ipfs swarm addrs listen; works Success 0.062
System.out »
expecting success: 
  ipfs swarm addrs listen >listen_addrs

ok 35 - ipfs swarm addrs listen; works
36 - ipfs peer id looks good Success 0.007
System.out »
expecting success: 
  test_check_peerid "$PEERID"

ok 36 - ipfs peer id looks good
37 - ipfs API works with the correct allowed origin port Success 0.010
System.out »
expecting success: 
  curl -s -X POST -H "Origin:http://localhost:$API_PORT" -I "http://$API_ADDR/api/v0/version"

HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Access-Control-Allow-Origin: http://localhost:39549
Access-Control-Expose-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Content-Type: application/json
Server: kubo/0.41.0-dev
Trailer: X-Stream-Error
Vary: Origin
Date: Fri, 27 Feb 2026 18:12:38 GMT
Transfer-Encoding: chunked

ok 37 - ipfs API works with the correct allowed origin port
38 - ipfs gateway works with the correct allowed origin port Success 0.013
System.out »
expecting success: 
  curl -s -X POST -H "Origin:http://localhost:$GWAY_PORT" -I "http://$GWAY_ADDR/api/v0/version"

HTTP/1.1 404 Not Found
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Headers: Range
Access-Control-Allow-Headers: User-Agent
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Methods: GET
Access-Control-Allow-Methods: HEAD
Access-Control-Allow-Methods: OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: Content-Length
Access-Control-Expose-Headers: Content-Range
Access-Control-Expose-Headers: X-Chunked-Output
Access-Control-Expose-Headers: X-Ipfs-Path
Access-Control-Expose-Headers: X-Ipfs-Roots
Access-Control-Expose-Headers: X-Stream-Output
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Fri, 27 Feb 2026 18:12:38 GMT
Content-Length: 19

ok 38 - ipfs gateway works with the correct allowed origin port
39 - ipfs daemon output includes looks good Success 0.138
System.out »
expecting success: 
  test_should_contain "Initializing daemon..." actual_daemon &&
  test_should_contain "$(ipfs version --all)" actual_daemon &&
  test_should_contain "PeerID: $(ipfs config Identity.PeerID)" actual_daemon &&
  test_should_contain "Swarm listening on 127.0.0.1:" actual_daemon &&
  test_should_contain "RPC API server listening on /ip4/127.0.0.1/tcp/39549" actual_daemon &&
  test_should_contain "WebUI: http://127.0.0.1:39549/webui" actual_daemon &&
  test_should_contain "Gateway server listening on /ip4/127.0.0.1/tcp/34723" actual_daemon &&
  test_should_contain "Daemon is ready" actual_daemon &&
  cat actual_daemon

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWMcoJsBehdjqqkSuYMieLxMBh1HY1fNcHKFMXBFZRWNMV
Swarm listening on 127.0.0.1:40211 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.
RPC API server listening on /ip4/127.0.0.1/tcp/39549
WebUI: http://127.0.0.1:39549/webui
Gateway server listening on /ip4/127.0.0.1/tcp/34723
Routing V1 API exposed at http://127.0.0.1:34723/routing/v1
Daemon is ready
ok 39 - ipfs daemon output includes looks good
40 - .ipfs/ has been created Success 0.004
System.out »
expecting success: 
  test -d ".ipfs" &&
  test -f ".ipfs/config" &&
  test -d ".ipfs/datastore" &&
  test -d ".ipfs/blocks" ||
  test_fsh ls -al .ipfs

ok 40 - .ipfs/ has been created
41 - ipfs version succeeds Success 0.060
System.out »
expecting success: 
  ipfs version >version.txt

ok 41 - ipfs version succeeds
42 - ipfs version output looks good Success 0.006
System.out »
expecting success: 
  egrep "^ipfs version [0-9]+\.[0-9]+\.[0-9]" version.txt >/dev/null ||
  test_fsh cat version.txt

ok 42 - ipfs version output looks good
43 - ipfs version deps succeeds Success 0.080
System.out »
expecting success: 
  ipfs version deps >deps.txt

ok 43 - ipfs version deps succeeds
44 - ipfs version deps output looks good ( set $GOIPFSTEST_SKIP_LOCAL_DEVTREE_DEPS_CHECK to skip this test ) Success 0.010
System.out »
expecting success: 
  head -1 deps.txt | grep "go-ipfs@(devel)" &&
  [[ "$GOIPFSTEST_SKIP_LOCAL_DEVTREE_DEPS_CHECK" == "1" ]] ||
  [[ $(tail -n +2 deps.txt | egrep -v -c "^[^ @]+@v[^ @]+( => [^ @]+@v[^ @]+)?$") -eq 0 ]] ||
  test_fsh cat deps.txt

ok 44 - ipfs version deps output looks good ( set $GOIPFSTEST_SKIP_LOCAL_DEVTREE_DEPS_CHECK to skip this test )
45 - ipfs help succeeds Success 0.060
System.out »
expecting success: 
  ipfs help >help.txt

ok 45 - ipfs help succeeds
46 - ipfs help output looks good Success 0.008
System.out »
expecting success: 
  egrep -i "^Usage" help.txt >/dev/null &&
  egrep "ipfs .* <command>" help.txt >/dev/null ||
  test_fsh cat help.txt

ok 46 - ipfs help output looks good
47 - default transport should support encryption (TLS, needs socat ) Success 0.010
System.out »
expecting success: 
  socat -s - tcp:localhost:$SWARM_PORT,connect-timeout=1 > swarmnc < ../t0060-data/mss-tls &&
  grep -q "/tls" swarmnc &&
  test_must_fail grep -q "na" swarmnc ||
  test_fsh cat swarmnc

ok 47 - default transport should support encryption (TLS, needs socat )
System.err »
2026/02/27 18:12:39 socat[123307] E read(9, 0x63a6d1260000, 8192): Connection reset by peer
48 - default transport should support encryption (Noise, needs socat ) Success 0.009
System.out »
expecting success: 
  socat -s - tcp:localhost:$SWARM_PORT,connect-timeout=1 > swarmnc < ../t0060-data/mss-noise &&
  grep -q "/noise" swarmnc &&
  test_must_fail grep -q "na" swarmnc ||
  test_fsh cat swarmnc

ok 48 - default transport should support encryption (Noise, needs socat )
System.err »
2026/02/27 18:12:39 socat[123389] E read(9, 0x5dcb36cdf000, 8192): Connection reset by peer
49 - default transport should not support plaintext (needs socat ) Success 0.009
System.out »
expecting success: 
  socat -s - tcp:localhost:$SWARM_PORT,connect-timeout=1 > swarmnc < ../t0060-data/mss-plaintext &&
  grep -q "na" swarmnc &&
  test_must_fail grep -q "/plaintext" swarmnc ||
  test_fsh cat swarmnc

ok 49 - default transport should not support plaintext (needs socat )
System.err »
2026/02/27 18:12:39 socat[123475] E read(9, 0x6248d62c3000, 8192): Connection reset by peer
50 - output from streaming commands works Success 5.067
System.out »
expecting success: 
  test_expect_code 28 curl -X POST -m 5 http://localhost:$API_PORT/api/v0/stats/bw\?poll=true > statsout

ok 50 - output from streaming commands works
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   100    0   100    0     0     99      0 --:--:--  0:00:01 --:--:--    99
100   150    0   150    0     0     74      0 --:--:--  0:00:02 --:--:--    74
100   150    0   150    0     0     49      0 --:--:--  0:00:03 --:--:--    49
100   250    0   250    0     0     62      0 --:--:--  0:00:04 --:--:--    62
100   250    0   250    0     0     49      0 --:--:--  0:00:05 --:--:--    49
curl: (28) Operation timed out after 5002 milliseconds with 250 bytes received
51 - output looks good Success 0.033
System.out »
expecting success: 
  grep TotalIn statsout > /dev/null &&
  grep TotalOut statsout > /dev/null &&
  grep RateIn statsout > /dev/null &&
  grep RateOut statsout >/dev/null

ok 51 - output looks good
52 - daemon is still running Success 0.004
System.out »
expecting success: 
  kill -0 $IPFS_PID

ok 52 - daemon is still running
53 - 'ipfs daemon' can be killed Success 0.239
System.out »
expecting success: 
  test_kill_repeat_10_sec $IPFS_PID

ok 53 - 'ipfs daemon' can be killed
55 - set up address variables Success 0.077
System.out »
expecting success: 
  yes | ipfs daemon >stdin_daemon_out 2>stdin_daemon_err &
  DAEMON_PID=$!
  test_wait_for_file 20 100ms "$IPFS_PATH/api" &&
  test_set_address_vars stdin_daemon_out

expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 55 - set up address variables
ok 55 - set up address variables
56 - get swarm addresses Success 0.183
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 56 - get swarm addresses
57 - 'ipfs daemon' should be able to run with a pipe attached to stdin (issue #861) Success 0.035
System.out »
ok 57 - 'ipfs daemon' should be able to run with a pipe attached to stdin (issue #861)
58 - daemon with pipe eventually becomes live Success 0.282
System.out »
expecting success: 
  pollEndpoint -host=/ip4/127.0.0.1/tcp/45175 -v -tout=1s -tries=10 >stdin_poll_apiout 2>stdin_poll_apierr &&
  test_kill_repeat_10_sec $DAEMON_PID ||
  test_fsh cat stdin_daemon_out || test_fsh cat stdin_daemon_err || test_fsh cat stdin_poll_apiout || test_fsh cat stdin_poll_apierr

ok 58 - daemon with pipe eventually becomes live
59 - 'ipfs daemon' cleans up when it fails to start Success 0.235
System.out »
expecting success: 
  test_must_fail ipfs daemon --routing=foobar &&
  test ! -e "$IPFS_PATH/repo.lock"

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWMcoJsBehdjqqkSuYMieLxMBh1HY1fNcHKFMXBFZRWNMV

ok 59 - 'ipfs daemon' cleans up when it fails to start
System.err »
Error: unrecognized routing option: foobar
60 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 60 - 'ipfs daemon' succeeds
61 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 61 - api file shows up
62 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 62 - set up address variables
63 - get swarm addresses Success 0.131
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 63 - get swarm addresses
64 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 64 - set swarm address vars
65 - 'ipfs daemon' is ready Success 0.029
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 65 - 'ipfs daemon' is ready
66 - daemon raised its fd limit Success 0.006
System.out »
expecting success: 
  test_should_not_contain "setting file descriptor limit" actual_daemon

ok 66 - daemon raised its fd limit
67 - daemon actually can handle 2048 file descriptors Success 4.428
System.out »
expecting success: 
  hang-fds -hold=2s 2000 /ip4/127.0.0.1/tcp/39235 > /dev/null

ok 67 - daemon actually can handle 2048 file descriptors
68 - daemon didn't throw any errors Success 0.005
System.out »
expecting success: 
  test_expect_code 1 grep "too many open files" daemon_err

ok 68 - daemon didn't throw any errors
69 - 'ipfs daemon' is still running Success 0.003
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 69 - 'ipfs daemon' is still running
70 - 'ipfs daemon' can be killed Success 0.238
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 70 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - create pebble config
ok 2 - cleanup repo
ok 3 - 'ipfs daemon' succeeds
ok 4 - api file shows up
ok 5 - set up address variables
ok 6 - get swarm addresses
ok 7 - set swarm address vars
ok 8 - 'ipfs daemon' is ready
ok 9 - 'ipfs daemon' is still running
ok 10 - 'ipfs daemon' can be killed
ok 11 - daemon initialization with existing config works
ok 12 - cleanup repo
ok 13 - 'ipfs daemon' succeeds
ok 14 - api file shows up
ok 15 - set up address variables
ok 16 - get swarm addresses
ok 17 - set swarm address vars
ok 18 - 'ipfs daemon' is ready
ok 19 - 'ipfs daemon' is still running
ok 20 - 'ipfs daemon' can be killed
ok 21 - daemon initialization with existing config + profiles works
ok 22 - cleanup repo
ok 23 - ipfs init succeeds
ok 24 - disable telemetry
ok 25 - prepare config -- mounting
ok 26 - set Resource Manager variables showed at startup
ok 27 - 'ipfs daemon' succeeds
ok 28 - api file shows up
ok 29 - set up address variables
ok 30 - get swarm addresses
ok 31 - set swarm address vars
ok 32 - 'ipfs daemon' is ready
ok 33 - 'ipfs config Identity.PeerID' works
ok 34 - 'ipfs swarm addrs local' works
ok 35 - ipfs swarm addrs listen; works
ok 36 - ipfs peer id looks good
ok 37 - ipfs API works with the correct allowed origin port
ok 38 - ipfs gateway works with the correct allowed origin port
ok 39 - ipfs daemon output includes looks good
ok 40 - .ipfs/ has been created
ok 41 - ipfs version succeeds
ok 42 - ipfs version output looks good
ok 43 - ipfs version deps succeeds
ok 44 - ipfs version deps output looks good ( set $GOIPFSTEST_SKIP_LOCAL_DEVTREE_DEPS_CHECK to skip this test )
ok 45 - ipfs help succeeds
ok 46 - ipfs help output looks good
ok 47 - default transport should support encryption (TLS, needs socat )
ok 48 - default transport should support encryption (Noise, needs socat )
ok 49 - default transport should not support plaintext (needs socat )
ok 50 - output from streaming commands works
ok 51 - output looks good
ok 52 - daemon is still running
ok 53 - 'ipfs daemon' can be killed
ok 57 - 'ipfs daemon' should be able to run with a pipe attached to stdin (issue #861)
ok 58 - daemon with pipe eventually becomes live
ok 59 - 'ipfs daemon' cleans up when it fails to start
ok 60 - 'ipfs daemon' succeeds
ok 61 - api file shows up
ok 62 - set up address variables
ok 63 - get swarm addresses
ok 64 - set swarm address vars
ok 65 - 'ipfs daemon' is ready
ok 66 - daemon raised its fd limit
ok 67 - daemon actually can handle 2048 file descriptors
ok 68 - daemon didn't throw any errors
ok 69 - 'ipfs daemon' is still running
ok 70 - 'ipfs daemon' can be killed

Back to top

TestCase t0061-daemon-opts

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.246
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.162
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.437
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0061-daemon-opts.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0061-daemon-opts.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0061-daemon-opts.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.062
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - transport should be unencrypted ( needs socat ) Success 0.010
System.out »
expecting success: 
  socat -s - tcp:localhost:$SWARM_PORT,connect-timeout=1 > swarmnc < ../t0060-data/mss-plaintext &&
  grep -q "/plaintext" swarmnc &&
  test_must_fail grep -q "na" swarmnc ||
  test_fsh cat swarmnc

ok 10 - transport should be unencrypted ( needs socat )
System.err »
2026/02/27 18:12:37 socat[115710] E read(9, 0x5ab06f647000, 8192): Connection reset by peer
11 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 11 - 'ipfs daemon' is still running
12 - 'ipfs daemon' can be killed Success 0.259
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 12 - 'ipfs daemon' can be killed
13 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 13 - 'ipfs daemon' succeeds
14 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 14 - api file shows up
15 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 15 - set up address variables
16 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 16 - 'ipfs daemon' is ready
17 - gateway should work in offline mode Success 0.084
System.out »
expecting success: 
  echo "hello mars :$gwyaddr :$apiaddr" >expected &&
  HASH=$(ipfs add -q expected) &&
  curl -sfo actual1 "http://$gwyaddr/ipfs/$HASH" &&
  test_cmp expected actual1

ok 17 - gateway should work in offline mode
18 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.258
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
20 - daemon should not start with bad dht opt Success 0.077
System.out »
expecting success: 
  test_must_fail ipfs daemon --routing=fdsfdsfds > daemon_output 2>&1

ok 20 - daemon should not start with bad dht opt
21 - output contains info about dht option Success 0.005
System.out »
expecting success: 
  grep "unrecognized routing option:" daemon_output ||
  test_fsh cat daemon_output

Error: unrecognized routing option: fdsfdsfds
ok 21 - output contains info about dht option
22 - daemon should not start with supernode dht opt Success 0.074
System.out »
expecting success: 
  test_must_fail ipfs daemon --routing=supernode > daemon_output2 2>&1

ok 22 - daemon should not start with supernode dht opt
23 - output contains info about supernode dht option Success 0.016
System.out »
expecting success: 
  grep "supernode routing was never fully implemented" daemon_output2 ||
  test_fsh cat daemon_output2

Error: supernode routing was never fully implemented and has been removed
ok 23 - output contains info about supernode dht option
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - transport should be unencrypted ( needs socat )
ok 11 - 'ipfs daemon' is still running
ok 12 - 'ipfs daemon' can be killed
ok 13 - 'ipfs daemon' succeeds
ok 14 - api file shows up
ok 15 - set up address variables
ok 16 - 'ipfs daemon' is ready
ok 17 - gateway should work in offline mode
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed
ok 20 - daemon should not start with bad dht opt
ok 21 - output contains info about dht option
ok 22 - daemon should not start with supernode dht opt
ok 23 - output contains info about supernode dht option

Back to top

TestCase t0062-daemon-api

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.154
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.421
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0062-daemon-api.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0062-daemon-api.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0062-daemon-api.sh/mfs"
ok 3 - prepare config -- mounting
4 - config setup Success 0.068
System.out »
expecting success: 
  peerid=$(ipfs config Identity.PeerID) &&
  test_check_peerid "$peerid"

ok 4 - config setup
5 - client must work properly (daemon off, no --api, no /api file) Success 0.072
System.out »
expecting success: 
    printf "$peerid" >expected &&
    ipfs id -f="<id>" $opts >actual &&
    test_cmp expected actual
  
ok 5 - client must work properly (daemon off, no --api, no /api file)
6 - client should fail (daemon off, no --api, no /api file) Success 0.055
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 6 - client should fail (daemon off, no --api, no /api file)
7 - client should fail (daemon off, no --api, no /api file) Success 0.057
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 7 - client should fail (daemon off, no --api, no /api file)
8 - client should fail (daemon off, no --api, no /api file) Success 0.054
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 8 - client should fail (daemon off, no --api, no /api file)
9 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 9 - 'ipfs daemon' succeeds
10 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 10 - api file shows up
11 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 11 - set up address variables
12 - get swarm addresses Success 0.055
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 12 - get swarm addresses
13 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 13 - set swarm address vars
14 - 'ipfs daemon' is ready Success 0.007
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 14 - 'ipfs daemon' is ready
15 - 'ipfs daemon' creates api file Success 0.004
System.out »
expecting success: 
  test -f ".ipfs/api"

ok 15 - 'ipfs daemon' creates api file
16 - client must work properly (daemon on, no --api, /api file from cfg) Success 0.057
System.out »
expecting success: 
    printf "$peerid" >expected &&
    ipfs id -f="<id>" $opts >actual &&
    test_cmp expected actual
  
ok 16 - client must work properly (daemon on, no --api, /api file from cfg)
17 - client should fail (daemon on, no --api, /api file from cfg) Success 0.066
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 17 - client should fail (daemon on, no --api, /api file from cfg)
18 - client must work properly (daemon on, no --api, /api file from cfg) Success 0.061
System.out »
expecting success: 
    printf "$peerid" >expected &&
    ipfs id -f="<id>" $opts >actual &&
    test_cmp expected actual
  
ok 18 - client must work properly (daemon on, no --api, /api file from cfg)
19 - client should fail (daemon on, no --api, /api file from cfg) Success 0.055
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 19 - client should fail (daemon on, no --api, /api file from cfg)
20 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 20 - 'ipfs daemon' is still running
21 - 'ipfs daemon' can be killed Success 0.244
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 21 - 'ipfs daemon' can be killed
22 - client must work properly (daemon off, no --api, /api file from cfg) Success 0.077
System.out »
expecting success: 
    printf "$peerid" >expected &&
    ipfs id -f="<id>" $opts >actual &&
    test_cmp expected actual
  
ok 22 - client must work properly (daemon off, no --api, /api file from cfg)
23 - client should fail (daemon off, no --api, /api file from cfg) Success 0.054
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 23 - client should fail (daemon off, no --api, /api file from cfg)
24 - client should fail (daemon off, no --api, /api file from cfg) Success 0.056
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 24 - client should fail (daemon off, no --api, /api file from cfg)
25 - client should fail (daemon off, no --api, /api file from cfg) Success 0.061
System.out »
expecting success: 
    echo "Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in \`\$IPFS_PATH/api\`" >expected_err &&
    test_must_fail ipfs id -f="<id>" $opts >actual 2>actual_err &&
    test_cmp expected_err actual_err
  
ok 25 - client should fail (daemon off, no --api, /api file from cfg)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - config setup
OPTS = 
ok 5 - client must work properly (daemon off, no --api, no /api file)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 6 - client should fail (daemon off, no --api, no /api file)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 7 - client should fail (daemon off, no --api, no /api file)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 8 - client should fail (daemon off, no --api, no /api file)
ok 9 - 'ipfs daemon' succeeds
ok 10 - api file shows up
ok 11 - set up address variables
ok 12 - get swarm addresses
ok 13 - set swarm address vars
ok 14 - 'ipfs daemon' is ready
ok 15 - 'ipfs daemon' creates api file
OPTS = 
ok 16 - client must work properly (daemon on, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 17 - client should fail (daemon on, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/35437
ok 18 - client must work properly (daemon on, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 19 - client should fail (daemon on, no --api, /api file from cfg)
ok 20 - 'ipfs daemon' is still running
ok 21 - 'ipfs daemon' can be killed
OPTS = 
ok 22 - client must work properly (daemon off, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 23 - client should fail (daemon off, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/35437
ok 24 - client should fail (daemon off, no --api, /api file from cfg)
OPTS =  --api /ip4/127.0.0.1/tcp/1
ok 25 - client should fail (daemon off, no --api, /api file from cfg)

Back to top

TestCase t0063-daemon-init

Name Status Type Time(s)
1 - remove $IPFS_PATH dir Success 0.005
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 1 - remove $IPFS_PATH dir
2 - 'ipfs daemon --init' succeeds Success 2.006
System.out »
expecting success: 
    ipfs daemon --init --init-profile=test >actual_daemon 2>daemon_err &
    IPFS_PID=$!
    sleep 2 &&
    if ! kill -0 $IPFS_PID; then cat daemon_err; return 1; fi
  
ok 2 - 'ipfs daemon --init' succeeds
3 - 'ipfs daemon' can be killed Success 0.245
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 3 - 'ipfs daemon' can be killed
4 - create empty $IPFS_PATH dir Success 0.012
System.out »
expecting success: 
  rm -rf "$IPFS_PATH" &&
  mkdir "$IPFS_PATH"

ok 4 - create empty $IPFS_PATH dir
5 - 'ipfs daemon --init' succeeds Success 2.006
System.out »
expecting success: 
    ipfs daemon --init --init-profile=test >actual_daemon 2>daemon_err &
    IPFS_PID=$!
    sleep 2 &&
    if ! kill -0 $IPFS_PID; then cat daemon_err; return 1; fi
  
ok 5 - 'ipfs daemon --init' succeeds
6 - 'ipfs daemon' can be killed Success 0.233
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 6 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - remove $IPFS_PATH dir
ok 2 - 'ipfs daemon --init' succeeds
ok 3 - 'ipfs daemon' can be killed
ok 4 - create empty $IPFS_PATH dir
ok 5 - 'ipfs daemon --init' succeeds
ok 6 - 'ipfs daemon' can be killed

Back to top

TestCase t0063-external

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.156
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.243
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.690
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0063-external.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0063-external.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0063-external.sh/mfs"
ok 3 - prepare config -- mounting
4 - create fake ipfs-update bin Success 0.007
System.out »
expecting success: 
  mkdir bin &&
  echo "#!/bin/sh" > bin/ipfs-update &&
  echo "pwd" >> bin/ipfs-update &&
  echo "test -e \"$IPFS_PATH/repo.lock\" || echo \"repo not locked\" " >> bin/ipfs-update &&
  chmod +x bin/ipfs-update &&
  mkdir just_for_test

ok 4 - create fake ipfs-update bin
5 - external command runs from current user directory and doesn't lock repo Success 0.062
System.out »
expecting success: 
  (cd just_for_test && ipfs update) > actual

ok 5 - external command runs from current user directory and doesn't lock repo
6 - output looks good Success 0.006
System.out »
expecting success: 
  echo `pwd`/just_for_test > exp &&
  echo "repo not locked" >> exp &&
  test_cmp exp actual

ok 6 - output looks good
7 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 7 - 'ipfs daemon' succeeds
8 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 8 - api file shows up
9 - set up address variables Success 0.030
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 9 - set up address variables
10 - get swarm addresses Success 0.130
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 10 - get swarm addresses
11 - set swarm address vars Success 0.030
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 11 - set swarm address vars
12 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 12 - 'ipfs daemon' is ready
13 - external command runs from current user directory when daemon is running Success 0.173
System.out »
expecting success: 
  (cd just_for_test && ipfs update) > actual

ok 13 - external command runs from current user directory when daemon is running
14 - output looks good Success 0.043
System.out »
expecting success: 
  echo `pwd`/just_for_test > exp &&
  test_cmp exp actual

ok 14 - output looks good
15 - 'ipfs daemon' is still running Success 0.003
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 15 - 'ipfs daemon' is still running
16 - 'ipfs daemon' can be killed Success 0.239
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 16 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create fake ipfs-update bin
ok 5 - external command runs from current user directory and doesn't lock repo
ok 6 - output looks good
ok 7 - 'ipfs daemon' succeeds
ok 8 - api file shows up
ok 9 - set up address variables
ok 10 - get swarm addresses
ok 11 - set swarm address vars
ok 12 - 'ipfs daemon' is ready
ok 13 - external command runs from current user directory when daemon is running
ok 14 - output looks good
ok 15 - 'ipfs daemon' is still running
ok 16 - 'ipfs daemon' can be killed

Back to top

TestCase t0064-api-file

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.335
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.369
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 1.589
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.411
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.114
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 10 - 'ipfs daemon' is still running
11 - 'ipfs daemon' can be killed Success 0.237
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 11 - 'ipfs daemon' can be killed
12 - version always works Success 0.100
System.out »
expecting success: 
  ipfs version >/dev/null

ok 12 - version always works
13 - swarm peers fails when offline Success 0.281
System.out »
expecting success: 
  test_must_fail ipfs swarm peers >/dev/null

ok 13 - swarm peers fails when offline
System.err »
Error: this action must be run in online mode, try running 'ipfs daemon' first
14 - swarm peers fails when offline and API specified Success 0.065
System.out »
expecting success: 
  test_must_fail ipfs swarm peers --api="$API_MADDR" >/dev/null

ok 14 - swarm peers fails when offline and API specified
System.err »
Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in `$IPFS_PATH/api`
15 - pin ls succeeds when offline Success 0.120
System.out »
expecting success: 
  ipfs pin ls >/dev/null

ok 15 - pin ls succeeds when offline
16 - pin ls fails when offline and API specified Success 0.062
System.out »
expecting success: 
  test_must_fail ipfs pin ls --api="$API_MADDR" >/dev/null

ok 16 - pin ls fails when offline and API specified
System.err »
Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in `$IPFS_PATH/api`
17 - id succeeds when offline Success 0.070
System.out »
expecting success: 
  ipfs id >/dev/null

ok 17 - id succeeds when offline
18 - id fails when offline API specified Success 0.056
System.out »
expecting success: 
  test_must_fail ipfs id --api="$API_MADDR" >/dev/null

ok 18 - id fails when offline API specified
System.err »
Error: cannot connect to the api. Is the daemon running? To run as a standalone CLI command remove the api file in `$IPFS_PATH/api`
19 - create API file Success 0.004
System.out »
expecting success: 
  echo "$API_MADDR" > "$IPFS_PATH/api"

ok 19 - create API file
20 - version always works Success 0.053
System.out »
expecting success: 
  ipfs version >/dev/null

ok 20 - version always works
21 - id succeeds when offline and API file exists Success 0.185
System.out »
expecting success: 
  ipfs id >/dev/null

ok 21 - id succeeds when offline and API file exists
22 - pin ls succeeds when offline and API file exists Success 0.172
System.out »
expecting success: 
  ipfs pin ls >/dev/null

ok 22 - pin ls succeeds when offline and API file exists
23 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 23 - 'ipfs daemon' succeeds
24 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 24 - api file shows up
25 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 25 - set up address variables
26 - get swarm addresses Success 0.075
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 26 - get swarm addresses
27 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 27 - set swarm address vars
28 - 'ipfs daemon' is ready Success 0.013
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 28 - 'ipfs daemon' is ready
29 - version always works Success 0.090
System.out »
expecting success: 
  ipfs version >/dev/null

ok 29 - version always works
30 - id succeeds when online Success 0.072
System.out »
expecting success: 
  ipfs id >/dev/null

ok 30 - id succeeds when online
31 - swarm peers succeeds when online Success 0.060
System.out »
expecting success: 
  ipfs swarm peers >/dev/null

ok 31 - swarm peers succeeds when online
32 - pin ls succeeds when online Success 0.083
System.out »
expecting success: 
  ipfs pin ls >/dev/null

ok 32 - pin ls succeeds when online
33 - remove API file when daemon is running Success 0.008
System.out »
expecting success: 
  rm "$IPFS_PATH/api"

ok 33 - remove API file when daemon is running
34 - version always works Success 0.076
System.out »
expecting success: 
  ipfs version >/dev/null

ok 34 - version always works
35 - swarm peers fails when the API file is missing Success 0.069
System.out »
expecting success: 
  test_must_fail ipfs swarm peers >/dev/null

ok 35 - swarm peers fails when the API file is missing
System.err »
Error: lock /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/.ipfs/repo.lock: someone else has the lock
36 - id fails when daemon is running but API file is missing (locks repo) Success 0.101
System.out »
expecting success: 
  test_must_fail ipfs pin ls >/dev/null

ok 36 - id fails when daemon is running but API file is missing (locks repo)
System.err »
Error: lock /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/.ipfs/repo.lock: someone else has the lock
37 - pin ls fails when daemon is running but API file is missing (locks repo) Success 0.091
System.out »
expecting success: 
  test_must_fail ipfs pin ls >/dev/null

ok 37 - pin ls fails when daemon is running but API file is missing (locks repo)
System.err »
Error: lock /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0064-api-file.sh/.ipfs/repo.lock: someone else has the lock
38 - 'ipfs daemon' is still running Success 0.003
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 38 - 'ipfs daemon' is still running
39 - 'ipfs daemon' can be killed Success 0.233
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 39 - 'ipfs daemon' can be killed
41 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
  ipfs config Addresses.API /ip4/0.0.0.0/tcp/$APIPORT &&
  test_launch_ipfs_daemon &&
  cat "$IPFS_PATH/api" > api_file_actual &&
  echo -n "/ip4/127.0.0.1/tcp/$APIPORT" > api_file_expected &&
  test_cmp api_file_expected api_file_actual

expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 41 - 'ipfs daemon' succeeds
ok 41 - 'ipfs daemon' succeeds
42 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 42 - api file shows up
43 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 43 - set up address variables
44 - get swarm addresses Success 0.120
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 44 - get swarm addresses
45 - set swarm address vars Success 0.014
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 45 - set swarm address vars
46 - Verify gateway file diallable while on unspecified Success 0.065
System.out »
ok 46 - Verify gateway file diallable while on unspecified
47 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 47 - 'ipfs daemon' is still running
48 - 'ipfs daemon' can be killed Success 0.262
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 48 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - 'ipfs daemon' is still running
ok 11 - 'ipfs daemon' can be killed
ok 12 - version always works
ok 13 - swarm peers fails when offline
ok 14 - swarm peers fails when offline and API specified
ok 15 - pin ls succeeds when offline
ok 16 - pin ls fails when offline and API specified
ok 17 - id succeeds when offline
ok 18 - id fails when offline API specified
ok 19 - create API file
ok 20 - version always works
ok 21 - id succeeds when offline and API file exists
ok 22 - pin ls succeeds when offline and API file exists
ok 23 - 'ipfs daemon' succeeds
ok 24 - api file shows up
ok 25 - set up address variables
ok 26 - get swarm addresses
ok 27 - set swarm address vars
ok 28 - 'ipfs daemon' is ready
ok 29 - version always works
ok 30 - id succeeds when online
ok 31 - swarm peers succeeds when online
ok 32 - pin ls succeeds when online
ok 33 - remove API file when daemon is running
ok 34 - version always works
ok 35 - swarm peers fails when the API file is missing
ok 36 - id fails when daemon is running but API file is missing (locks repo)
ok 37 - pin ls fails when daemon is running but API file is missing (locks repo)
ok 38 - 'ipfs daemon' is still running
ok 39 - 'ipfs daemon' can be killed
ok 46 - Verify gateway file diallable while on unspecified
ok 47 - 'ipfs daemon' is still running
ok 48 - 'ipfs daemon' can be killed

Back to top

TestCase t0065-active-requests

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.408
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.517
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 1.560
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0065-active-requests.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0065-active-requests.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0065-active-requests.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.025
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.106
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.015
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - command works Success 0.130
System.out »
expecting success: 
  ipfs diag cmds > cmd_out

ok 10 - command works
11 - invoc shows up in output Success 0.007
System.out »
expecting success: 
  grep "diag/cmds" cmd_out > /dev/null

ok 11 - invoc shows up in output
12 - start longer running command Success 0.107
System.out »
expecting success: 
  ipfs log tail &
  LOGPID=$!
  go-sleep 100ms

ok 12 - start longer running command
13 - long running command shows up Success 0.090
System.out »
expecting success: 
  ipfs diag cmds > cmd_out2

ok 13 - long running command shows up
14 - output looks good Success 0.006
System.out »
expecting success: 
  grep "log/tail" cmd_out2 | grep "true" > /dev/null

ok 14 - output looks good
15 - kill log cmd Success 0.509
System.out »
expecting success: 
  kill $LOGPID
  go-sleep 0.5s
  kill $LOGPID

  wait $LOGPID || true

ok 15 - kill log cmd
System.err »
sharness.sh: line 440: kill: (141787) - No such process
16 - long running command inactive Success 0.099
System.out »
expecting success: 
  ipfs diag cmds > cmd_out3

ok 16 - long running command inactive
17 - command shows up as inactive Success 0.004
System.out »
expecting success: 
  grep "log/tail" cmd_out3 | grep "false"

log/tail   false   Feb 27 18:12:49  246.476118ms
ok 17 - command shows up as inactive
18 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.241
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - command works
ok 11 - invoc shows up in output
ok 12 - start longer running command
ok 13 - long running command shows up
ok 14 - output looks good
ok 15 - kill log cmd
ok 16 - long running command inactive
ok 17 - command shows up as inactive
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed

Back to top

TestCase t0066-migration

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.276
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.359
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.905
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/mfs"
ok 3 - prepare config -- mounting
4 - setup mock migrations Success 0.047
System.out »
expecting success: 
  gen_mock_migrations &&
  find bin -name "fs-repo-*-to-*" | wc -l > mock_count &&
  echo $((IPFS_REPO_VER-MIGRATION_START)) > expect_mock_count &&
  export PATH="$(pwd)/bin":$PATH &&
  test_cmp mock_count expect_mock_count

ok 4 - setup mock migrations
5 - manually reset repo version to 7 Success 0.006
System.out »
expecting success: 
  echo "$MIGRATION_START" > "$IPFS_PATH"/version

ok 5 - manually reset repo version to 7
6 - ipfs daemon --migrate=false fails Success 0.153
System.out »
expecting success: 
  test_expect_code 1 ipfs daemon --migrate=false > false_out 2>&1

ok 6 - ipfs daemon --migrate=false fails
7 - output looks good Success 0.006
System.out »
expecting success: 
  grep "Kubo repository at .* has version .* and needs to be migrated to version" false_out &&
  grep "Error: fs-repo requires migration" false_out

Kubo repository at /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs has version 7 and needs to be migrated to version 18.
Error: fs-repo requires migration
ok 7 - output looks good
8 - ipfs daemon --migrate=true runs migration Success 3.075
System.out »
expecting success: 
  ipfs daemon --migrate=true > true_out 2>&1 &
  DAEMON_PID=$!
  # Wait for daemon to be ready then shutdown gracefully
  sleep 3 && ipfs shutdown 2>/dev/null || kill $DAEMON_PID 2>/dev/null || true
  wait $DAEMON_PID 2>/dev/null || true

ok 8 - ipfs daemon --migrate=true runs migration
9 - output looks good Success 0.017
System.out »
expecting success: 
  check_migration_output true_out &&
  (grep "Success: fs-repo migrated to version $IPFS_REPO_VER" true_out > /dev/null ||
   grep "Hybrid migration completed successfully: v$MIGRATION_START → v$IPFS_REPO_VER" true_out > /dev/null)

ok 9 - output looks good
10 - reset repo version for auto-migration test Success 0.004
System.out »
expecting success: 
  echo "$MIGRATION_START" > "$IPFS_PATH"/version

ok 10 - reset repo version for auto-migration test
11 - 'ipfs daemon' prompts to auto migrate Success 0.067
System.out »
expecting success: 
  test_expect_code 1 ipfs daemon > daemon_out 2>&1

ok 11 - 'ipfs daemon' prompts to auto migrate
12 - output looks good Success 0.008
System.out »
expecting success: 
  grep "Kubo repository at .* has version .* and needs to be migrated to version" daemon_out > /dev/null &&
  grep "Run migrations now?" daemon_out > /dev/null &&
  grep "Error: fs-repo requires migration" daemon_out > /dev/null

ok 12 - output looks good
13 - ipfs repo migrate succeed Success 0.079
System.out »
expecting success: 
  test_expect_code 0 ipfs repo migrate > migrate_out

ok 13 - ipfs repo migrate succeed
14 - output looks good Success 0.007
System.out »
expecting success: 
  grep "Migrating repository from version" migrate_out > /dev/null &&
  (grep "Success: fs-repo migrated to version $IPFS_REPO_VER" migrate_out > /dev/null ||
   grep "Hybrid migration completed successfully: v$MIGRATION_START → v$IPFS_REPO_VER" migrate_out > /dev/null)

ok 14 - output looks good
15 - manually reset repo version to latest Success 0.005
System.out »
expecting success: 
  echo "$IPFS_REPO_VER" > "$IPFS_PATH"/version

ok 15 - manually reset repo version to latest
16 - detect repo does not need migration Success 0.065
System.out »
expecting success: 
  test_expect_code 0 ipfs repo migrate > migrate_out

ok 16 - detect repo does not need migration
17 - output looks good Success 0.006
System.out »
expecting success: 
  grep "Repository is already at version" migrate_out > /dev/null

ok 17 - output looks good
18 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 18 - 'ipfs daemon' succeeds
19 - api file shows up Success 1.242
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 19 - api file shows up
20 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 20 - set up address variables
21 - get swarm addresses Success 0.067
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 21 - get swarm addresses
22 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 22 - set swarm address vars
23 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 23 - 'ipfs daemon' is ready
24 - manually reset repo version to 7 Success 0.005
System.out »
expecting success: 
  echo "$MIGRATION_START" > "$IPFS_PATH"/version

ok 24 - manually reset repo version to 7
25 - ipfs repo migrate fails Success 0.081
System.out »
expecting success: 
  test_expect_code 1 ipfs repo migrate 2> migrate_out

Migrating repository from version 7 to 18...
Starting hybrid migration from version 7 to 18
Using hybrid migration strategy: external to v16, then embedded
Phase 1: External migration from v7 to v16
Running migration fs-repo-7-to-8 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-7-to-8
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-7-to-8 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 7-to-8 repo migration
Running migration fs-repo-8-to-9 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-8-to-9
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-8-to-9 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 8-to-9 repo migration
Running migration fs-repo-9-to-10 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-9-to-10
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-9-to-10 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 9-to-10 repo migration
Running migration fs-repo-10-to-11 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-10-to-11
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-10-to-11 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 10-to-11 repo migration
Running migration fs-repo-11-to-12 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-11-to-12
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-11-to-12 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 11-to-12 repo migration
Running migration fs-repo-12-to-13 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-12-to-13
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-12-to-13 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 12-to-13 repo migration
Running migration fs-repo-13-to-14 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-13-to-14
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-13-to-14 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 13-to-14 repo migration
Running migration fs-repo-14-to-15 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-14-to-15
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-14-to-15 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 14-to-15 repo migration
Running migration fs-repo-15-to-16 using binary from PATH: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-15-to-16
  => Running: /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/bin/fs-repo-15-to-16 -path=/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs -verbose=true
fake applying 15-to-16 repo migration
Phase 2: Embedded migration from v16 to v18
Repository migration failed:
  embedded migration phase failed: failed to acquire repo lock: lock /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0066-migration.sh/.ipfs/repo.lock: someone else has the lock
If you think this is a bug, please file an issue and include this whole log output.
  https://github.com/ipfs/kubo
ok 25 - ipfs repo migrate fails
26 - output looks good Success 0.007
System.out »
expecting success: 
  grep "repo.lock" migrate_out > /dev/null

ok 26 - output looks good
27 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 27 - 'ipfs daemon' is still running
28 - 'ipfs daemon' can be killed Success 1.394
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 28 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - setup mock migrations
ok 5 - manually reset repo version to 7
ok 6 - ipfs daemon --migrate=false fails
ok 7 - output looks good
ok 8 - ipfs daemon --migrate=true runs migration
ok 9 - output looks good
ok 10 - reset repo version for auto-migration test
ok 11 - 'ipfs daemon' prompts to auto migrate
ok 12 - output looks good
ok 13 - ipfs repo migrate succeed
ok 14 - output looks good
ok 15 - manually reset repo version to latest
ok 16 - detect repo does not need migration
ok 17 - output looks good
ok 18 - 'ipfs daemon' succeeds
ok 19 - api file shows up
ok 20 - set up address variables
ok 21 - get swarm addresses
ok 22 - set swarm address vars
ok 23 - 'ipfs daemon' is ready
ok 24 - manually reset repo version to 7
ok 25 - ipfs repo migrate fails
ok 26 - output looks good
ok 27 - 'ipfs daemon' is still running
ok 28 - 'ipfs daemon' can be killed

Back to top

TestCase t0067-unix-api

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.247
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.578
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.676
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0067-unix-api.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0067-unix-api.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0067-unix-api.sh/mfs"
ok 3 - prepare config -- mounting
4 - configure Success 0.241
System.out »
expecting success: 
  peerid=$(ipfs config Identity.PeerID) &&
  ipfs config Addresses.API "/unix/$SOCKDIR/sock"

ok 4 - configure
5 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.081
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - client works Success 0.064
System.out »
expecting success: 
  printf "$peerid" >expected &&
  ipfs --api="/unix/$SOCKDIR/sock" id -f="<id>" >actual &&
  test_cmp expected actual

ok 11 - client works
12 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 12 - 'ipfs daemon' is still running
13 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 13 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - configure
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - client works
ok 12 - 'ipfs daemon' is still running
ok 13 - 'ipfs daemon' can be killed

Back to top

TestCase t0070-user-config

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.456
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.165
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.640
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0070-user-config.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0070-user-config.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0070-user-config.sh/mfs"
ok 3 - prepare config -- mounting
4 - bootstrap doesn't overwrite user-provided config keys (top-level) Success 0.368
System.out »
expecting success: 
  ipfs config Identity.PeerID >previous &&
  ipfs config Identity.PeerID foo &&
  ipfs bootstrap rm --all &&
  echo "foo" >expected &&
  ipfs config Identity.PeerID >actual &&
  ipfs config Identity.PeerID $(cat previous) &&
  test_cmp expected actual

ok 4 - bootstrap doesn't overwrite user-provided config keys (top-level)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - bootstrap doesn't overwrite user-provided config keys (top-level)

Back to top

TestCase t0080-repo

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.160
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.137
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.496
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0080-repo.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0080-repo.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0080-repo.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 7 - 'ipfs daemon' is ready
8 - 'ipfs repo gc' succeeds Success 0.243
System.out »
expecting success: 
  ipfs repo gc >gc_out_actual

ok 8 - 'ipfs repo gc' succeeds
9 - 'ipfs add afile' succeeds Success 0.095
System.out »
expecting success: 
  echo "some text" >afile &&
  HASH=`ipfs add -q afile`

ok 9 - 'ipfs add afile' succeeds
10 - added file was pinned Success 0.104
System.out »
expecting success: 
  ipfs pin ls --type=recursive >actual &&
  grep "$HASH" actual

QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1 recursive
ok 10 - added file was pinned
11 - 'ipfs repo gc' succeeds Success 0.077
System.out »
expecting success: 
  ipfs repo gc >gc_out_actual

ok 11 - 'ipfs repo gc' succeeds
12 - 'ipfs repo gc' looks good (patch root) Success 0.005
System.out »
expecting success: 
  test_should_not_contain "removed $HASH" gc_out_actual

ok 12 - 'ipfs repo gc' looks good (patch root)
13 - 'ipfs repo gc' doesn't remove file Success 0.061
System.out »
expecting success: 
  ipfs cat "$HASH" >out &&
  test_cmp out afile

ok 13 - 'ipfs repo gc' doesn't remove file
14 - 'ipfs pin rm' succeeds Success 0.060
System.out »
expecting success: 
  ipfs pin rm -r "$HASH" >actual1

ok 14 - 'ipfs pin rm' succeeds
15 - 'ipfs pin rm' output looks good Success 0.005
System.out »
expecting success: 
  echo "unpinned $HASH" >expected1 &&
  test_cmp expected1 actual1

ok 15 - 'ipfs pin rm' output looks good
16 - ipfs repo gc fully reverse ipfs add (part 1) Success 0.237
System.out »
expecting success: 
  ipfs repo gc &&
  random-data -size=100000 -seed=41 >gcfile &&
  find "$IPFS_PATH/blocks" -type f -name "*.data" | sort -u > expected_blocks &&
  hash=$(ipfs add -q gcfile) &&
  ipfs pin rm -r $hash &&
  ipfs repo gc

removed bafkreigqwyhfp7rjgv7xdtlcq4enrxt7hk7vnw6ftfskbj6kukykfrjvya
unpinned QmYGtzPusoXnBtZXGrz7TgcscDzYMUj5AyyykGosbGn2W9
removed bafkreiett2yyjyxugabovcmfwh5bohmg7dwjt22eqavox4mdk4cspmyyoy
removed bafkreigzjemulhu5pbj2tutfx2znenuc5elpahglrwxdzfjtckv2y42rre
ok 16 - ipfs repo gc fully reverse ipfs add (part 1)
17 - 'ipfs repo gc --silent' succeeds (no output) Success 0.323
System.out »
expecting success: 
  echo "should be empty" >bfile &&
  HASH2=`ipfs add -q bfile` &&
  ipfs cat "$HASH2" >expected11 &&
  test_cmp expected11 bfile &&
  ipfs pin rm -r "$HASH2" &&
  ipfs repo gc --silent >gc_out_empty &&
  test_cmp /dev/null gc_out_empty &&
  test_must_fail ipfs cat "$HASH2" 2>err_expected1 &&
  grep "Error: block was not found locally (offline): ipld: could not find $HASH2" err_expected1

unpinned QmWUHrd6CrLAeKLZMVZkEXaZmmL53qgn9CwrwXuRfcURxV
Error: block was not found locally (offline): ipld: could not find QmWUHrd6CrLAeKLZMVZkEXaZmmL53qgn9CwrwXuRfcURxV
ok 17 - 'ipfs repo gc --silent' succeeds (no output)
18 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
20 - ipfs repo gc fully reverse ipfs add (part 2) Success 0.008
System.out »
expecting success: 
  find "$IPFS_PATH/blocks" -type f -name "*.data" | sort -u > actual_blocks &&
  test_cmp expected_blocks actual_blocks

ok 20 - ipfs repo gc fully reverse ipfs add (part 2)
21 - 'ipfs daemon' succeeds Success 0.015
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 21 - 'ipfs daemon' succeeds
22 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 22 - api file shows up
23 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 23 - set up address variables
24 - 'ipfs daemon' is ready Success 0.020
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 24 - 'ipfs daemon' is ready
25 - file no longer pinned Success 0.094
System.out »
expecting success: 
  ipfs pin ls --type=recursive --quiet >actual2 &&
  test_expect_code 1 grep $HASH actual2

ok 25 - file no longer pinned
26 - recursively pin afile(default action) Success 0.195
System.out »
expecting success: 
  HASH=`ipfs add -q afile` &&
  ipfs pin add "$HASH"

pinned QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1 recursively
ok 26 - recursively pin afile(default action)
27 - recursively pin rm afile (default action) Success 0.080
System.out »
expecting success: 
  ipfs pin rm "$HASH"

unpinned QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1
ok 27 - recursively pin rm afile (default action)
28 - recursively pin afile Success 0.071
System.out »
expecting success: 
  ipfs pin add -r "$HASH"

pinned QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1 recursively
ok 28 - recursively pin afile
29 - pinning directly should fail now Success 0.071
System.out »
expecting success: 
  echo "Error: pin: $HASH already pinned recursively" >expected3 &&
  test_must_fail ipfs pin add -r=false "$HASH" 2>actual3 &&
  test_cmp expected3 actual3

ok 29 - pinning directly should fail now
30 - 'ipfs pin rm -r=false <hash>' should fail Success 0.068
System.out »
expecting success: 
  echo "Error: $HASH is pinned recursively" >expected4
  test_must_fail ipfs pin rm -r=false "$HASH" 2>actual4 &&
  test_cmp expected4 actual4

ok 30 - 'ipfs pin rm -r=false <hash>' should fail
31 - remove recursive pin, add direct Success 0.387
System.out »
expecting success: 
  echo "unpinned $HASH" >expected5 &&
  ipfs pin rm -r "$HASH" >actual5 &&
  test_cmp expected5 actual5 &&
  ipfs pin add -r=false "$HASH"

pinned QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1 directly
ok 31 - remove recursive pin, add direct
32 - remove direct pin Success 0.512
System.out »
expecting success: 
  echo "unpinned $HASH" >expected6 &&
  ipfs pin rm "$HASH" >actual6 &&
  test_cmp expected6 actual6

ok 32 - remove direct pin
33 - 'ipfs repo gc' removes file Success 0.605
System.out »
expecting success: 
  ipfs block stat $HASH &&
  ipfs repo gc &&
  test_must_fail ipfs block stat $HASH

Key: QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1
Size: 18
removed bafkreihwztrmnmwp5iteywd2tlfgc27hhqpdebbqjulvssz42jpk2ckblm
removed bafkreigqwyhfp7rjgv7xdtlcq4enrxt7hk7vnw6ftfskbj6kukykfrjvya
ok 33 - 'ipfs repo gc' removes file
System.err »
Error: block was not found locally (offline): ipld: could not find QmcPNXE5zjkWkM24xQ7Bi3VAm8fRxiaNp88jFsij7kSQF1
34 - 'ipfs refs local' no longer shows file Success 0.263
System.out »
expecting success: 
  EMPTY_DIR=QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn &&
  HASH_MH=`cid-fmt -b base32 "%M" "$HASH"` &&
  HARDCODED_HASH_MH=`cid-fmt -b base32 "%M" "QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y"` &&
  EMPTY_DIR_MH=`cid-fmt -b base32 "%M" "$EMPTY_DIR"` &&
  HASH_WELCOME_DOCS_MH=`cid-fmt -b base32 "%M" "$HASH_WELCOME_DOCS"` &&
  ipfs refs local | cid-fmt -b base32 --filter "%M" >actual8 &&
  grep "$HARDCODED_HASH_MH" actual8 &&
  grep "$EMPTY_DIR_MH" actual8 &&
  grep "$HASH_WELCOME_DOCS_MH" actual8 &&
  test_must_fail grep "$HASH_MH" actual8

ciqjfgrqhq45vcqlm7ajnf2gf5uhuagghc6llah6vydeklqmd4qlily
ciqftfeehedf6klbt32bfaglxezl4uwfnwm4lftlmxqbcerz6cmlx3y
ciqb4655yd5glbb7wweuahco6qonu5icbonaa5jepbioeivz5rxtiyy
ok 34 - 'ipfs refs local' no longer shows file
35 - adding multiblock random file succeeds Success 0.151
System.out »
expecting success: 
  random-data -size=1000000 >multiblock &&
  MBLOCKHASH=`ipfs add -q multiblock`

ok 35 - adding multiblock random file succeeds
36 - 'ipfs pin ls --type=indirect' is correct Success 0.586
System.out »
expecting success: 
  ipfs refs "$MBLOCKHASH" >refsout &&
  ipfs refs -r "$HASH_WELCOME_DOCS" >>refsout &&
  sed -i"~" "s/\(.*\)/\1 indirect/g" refsout &&
  ipfs pin ls --type=indirect >indirectpins &&
  test_sort_cmp refsout indirectpins

ok 36 - 'ipfs pin ls --type=indirect' is correct
37 - pin something directly Success 1.613
System.out »
expecting success: 
  echo "ipfs is so awesome" >awesome &&
  DIRECTPIN=`ipfs add -q awesome` &&
  echo "unpinned $DIRECTPIN" >expected9 &&
  ipfs pin rm -r "$DIRECTPIN" >actual9 &&
  test_cmp expected9 actual9  &&

  echo "pinned $DIRECTPIN directly" >expected10 &&
  ipfs pin add -r=false "$DIRECTPIN" >actual10 &&
  test_cmp expected10 actual10

ok 37 - pin something directly
38 - 'ipfs pin ls --type=direct' is correct Success 0.860
System.out »
expecting success: 
  echo "$DIRECTPIN direct" >directpinexpected &&
  ipfs pin ls --type=direct >directpinout &&
  test_sort_cmp directpinexpected directpinout

ok 38 - 'ipfs pin ls --type=direct' is correct
39 - 'ipfs pin ls --type=recursive' is correct Success 1.077
System.out »
expecting success: 
  echo "$MBLOCKHASH" >rp_expected &&
  echo "$HASH_WELCOME_DOCS" >>rp_expected &&
  echo "$EMPTY_DIR" >>rp_expected &&
  sed -i"~" "s/\(.*\)/\1 recursive/g" rp_expected &&
  ipfs pin ls --type=recursive >rp_actual &&
  test_sort_cmp rp_expected rp_actual

ok 39 - 'ipfs pin ls --type=recursive' is correct
40 - 'ipfs pin ls --type=all --quiet' is correct Success 1.402
System.out »
expecting success: 
  cat directpinout >allpins &&
  cat rp_actual >>allpins &&
  cat indirectpins >>allpins &&
  cut -f1 -d " " allpins | sort | uniq >> allpins_uniq_hashes &&
  ipfs pin ls --type=all --quiet >actual_allpins &&
  test_sort_cmp allpins_uniq_hashes actual_allpins

ok 40 - 'ipfs pin ls --type=all --quiet' is correct
41 - 'ipfs refs --unique' is correct Success 2.084
System.out »
expecting success: 
  mkdir -p uniques &&
  echo "content1" > uniques/file1 &&
  echo "content1" > uniques/file2 &&
  ROOT=$(ipfs add -r -Q uniques) &&
  ipfs refs --unique $ROOT >expected &&
  ipfs add -q uniques/file1 >unique_hash &&
  test_cmp expected unique_hash

ok 41 - 'ipfs refs --unique' is correct
42 - 'ipfs refs --unique --recursive' is correct Success 1.407
System.out »
expecting success: 
  mkdir -p a/b/c &&
  echo "c1" > a/f1 &&
  echo "c1" > a/b/f1 &&
  echo "c1" > a/b/c/f1 &&
  echo "c2" > a/b/c/f2 &&
  ROOT=$(ipfs add -r -Q a) &&
  ipfs refs --unique --recursive $ROOT >refs_output &&
  wc -l refs_output | sed "s/^ *//g" >line_count &&
  echo "4 refs_output" >expected &&
  test_cmp expected line_count || test_fsh cat refs_output

ok 42 - 'ipfs refs --unique --recursive' is correct
43 - 'ipfs refs --recursive (bigger)' Success 0.991
System.out »
expecting success: 
  mkdir -p b/c/d/e &&
  echo "content1" >b/f &&
  echo "content1" >b/c/f1 &&
  echo "content1" >b/c/d/f2 &&
  echo "content2" >b/c/f2 &&
  echo "content2" >b/c/d/f1 &&
  echo "content2" >b/c/d/e/f &&
  cp -r b b2 && mv b2 b/b2 &&
  cp -r b b3 && mv b3 b/b3 &&
  cp -r b b4 && mv b4 b/b4 &&
  hash=$(ipfs add -r -Q b) &&
  ipfs refs -r "$hash" >refs_output &&
  wc -l refs_output | sed "s/^ *//g" >actual &&
  echo "79 refs_output" >expected &&
  test_cmp expected actual || test_fsh cat refs_output

ok 43 - 'ipfs refs --recursive (bigger)'
44 - 'ipfs refs --unique --recursive (bigger)' Success 0.962
System.out »
expecting success: 
  ipfs refs -r "$hash" >refs_output &&
  sort refs_output | uniq >expected &&
  ipfs refs -r -u "$hash" >actual &&
  test_sort_cmp expected actual || test_fsh cat refs_output

ok 44 - 'ipfs refs --unique --recursive (bigger)'
45 - 'ipfs repo stat' succeeds Success 0.450
System.out »
expecting success: 
  ipfs repo stat > repo-stats

ok 45 - 'ipfs repo stat' succeeds
46 - repo stats came out correct Success 0.488
System.out »
expecting success: 
  grep "RepoPath" repo-stats &&
  grep "RepoSize" repo-stats &&
  grep "NumObjects" repo-stats &&
  grep "Version" repo-stats &&
  grep "StorageMax" repo-stats

RepoPath:   /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0080-repo.sh/.ipfs
RepoSize:   1196960
NumObjects: 33
Version:    fs-repo@18
StorageMax: 10000000000
ok 46 - repo stats came out correct
47 - 'ipfs repo stat --human' succeeds Success 0.087
System.out »
expecting success: 
  ipfs repo stat --human > repo-stats-human

ok 47 - 'ipfs repo stat --human' succeeds
48 - repo stats --human came out correct Success 0.135
System.out »
expecting success: 
  grep "RepoPath" repo-stats-human &&
  grep -E "RepoSize:\s*([0-9]*[.])?[0-9]+\s+?(B|kB|MB|GB|TB|PB|EB)" repo-stats-human &&
  grep "NumObjects" repo-stats-human &&
  grep "Version" repo-stats-human &&
  grep -E "StorageMax:\s*([0-9]*[.])?[0-9]+\s+?(B|kB|MB|GB|TB|PB|EB)" repo-stats-human ||
  test_fsh cat repo-stats-human

RepoPath:   /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0080-repo.sh/.ipfs
RepoSize:   1.2 MB
NumObjects: 33
Version:    fs-repo@18
StorageMax: 10 GB
ok 48 - repo stats --human came out correct
49 - 'ipfs repo stat' after adding a file Success 1.167
System.out »
expecting success: 
  ipfs add repo-stats &&
  ipfs repo stat > repo-stats-2

added QmW5PSB5MjFpito7Xxwk1sGjbLs5Vg5jfJ7LtBA1EPzqNr repo-stats
ok 49 - 'ipfs repo stat' after adding a file
System.err »
 177 B / ? 

 177 B / 177 B  100.00%
50 - repo stats are updated correctly Success 0.033
System.out »
expecting success: 
  test $(get_field_num "RepoSize" repo-stats-2) -ge $(get_field_num "RepoSize" repo-stats)

ok 50 - repo stats are updated correctly
51 - 'ipfs repo stat --size-only' succeeds Success 0.202
System.out »
expecting success: 
  ipfs repo stat --size-only > repo-stats-size-only

ok 51 - 'ipfs repo stat --size-only' succeeds
52 - repo stats came out correct for --size-only Success 0.035
System.out »
expecting success: 
  test_should_contain "RepoSize" repo-stats-size-only &&
  test_should_contain "StorageMax" repo-stats-size-only &&
  test_should_not_contain "RepoPath" repo-stats-size-only &&
  test_should_not_contain "NumObjects" repo-stats-size-only &&
  test_should_not_contain "Version" repo-stats-size-only

ok 52 - repo stats came out correct for --size-only
53 - 'ipfs repo version' succeeds Success 0.116
System.out »
expecting success: 
  ipfs repo version > repo-version

ok 53 - 'ipfs repo version' succeeds
54 - repo version came out correct Success 0.010
System.out »
expecting success: 
  egrep "^ipfs repo version fs-repo@[0-9]+" repo-version >/dev/null

ok 54 - repo version came out correct
55 - 'ipfs repo version -q' succeeds Success 0.312
System.out »
expecting success: 
  ipfs repo version -q > repo-version-q

ok 55 - 'ipfs repo version -q' succeeds
56 - repo version came out correct Success 0.008
System.out »
expecting success: 
  egrep "^fs-repo@[0-9]+" repo-version-q >/dev/null

ok 56 - repo version came out correct
57 - 'ipfs daemon' is still running Success 0.044
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 57 - 'ipfs daemon' is still running
58 - 'ipfs daemon' can be killed Success 1.790
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 58 - 'ipfs daemon' can be killed
59 - remove Datastore.StorageMax from config Success 0.793
System.out »
expecting success: 
  ipfs config Datastore.StorageMax ""

ok 59 - remove Datastore.StorageMax from config
60 - 'ipfs repo stat' still succeeds Success 1.515
System.out »
expecting success: 
  ipfs repo stat > repo-stats

ok 60 - 'ipfs repo stat' still succeeds
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - 'ipfs daemon' is ready
ok 8 - 'ipfs repo gc' succeeds
ok 9 - 'ipfs add afile' succeeds
ok 10 - added file was pinned
ok 11 - 'ipfs repo gc' succeeds
ok 12 - 'ipfs repo gc' looks good (patch root)
ok 13 - 'ipfs repo gc' doesn't remove file
ok 14 - 'ipfs pin rm' succeeds
ok 15 - 'ipfs pin rm' output looks good
ok 16 - ipfs repo gc fully reverse ipfs add (part 1)
ok 17 - 'ipfs repo gc --silent' succeeds (no output)
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed
ok 20 - ipfs repo gc fully reverse ipfs add (part 2)
ok 21 - 'ipfs daemon' succeeds
ok 22 - api file shows up
ok 23 - set up address variables
ok 24 - 'ipfs daemon' is ready
ok 25 - file no longer pinned
ok 26 - recursively pin afile(default action)
ok 27 - recursively pin rm afile (default action)
ok 28 - recursively pin afile
ok 29 - pinning directly should fail now
ok 30 - 'ipfs pin rm -r=false <hash>' should fail
ok 31 - remove recursive pin, add direct
ok 32 - remove direct pin
ok 33 - 'ipfs repo gc' removes file
ok 34 - 'ipfs refs local' no longer shows file
ok 35 - adding multiblock random file succeeds
ok 36 - 'ipfs pin ls --type=indirect' is correct
ok 37 - pin something directly
ok 38 - 'ipfs pin ls --type=direct' is correct
ok 39 - 'ipfs pin ls --type=recursive' is correct
ok 40 - 'ipfs pin ls --type=all --quiet' is correct
ok 41 - 'ipfs refs --unique' is correct
ok 42 - 'ipfs refs --unique --recursive' is correct
ok 43 - 'ipfs refs --recursive (bigger)'
ok 44 - 'ipfs refs --unique --recursive (bigger)'
ok 45 - 'ipfs repo stat' succeeds
ok 46 - repo stats came out correct
ok 47 - 'ipfs repo stat --human' succeeds
ok 48 - repo stats --human came out correct
ok 49 - 'ipfs repo stat' after adding a file
ok 50 - repo stats are updated correctly
ok 51 - 'ipfs repo stat --size-only' succeeds
ok 52 - repo stats came out correct for --size-only
ok 53 - 'ipfs repo version' succeeds
ok 54 - repo version came out correct
ok 55 - 'ipfs repo version -q' succeeds
ok 56 - repo version came out correct
ok 57 - 'ipfs daemon' is still running
ok 58 - 'ipfs daemon' can be killed
ok 59 - remove Datastore.StorageMax from config
ok 60 - 'ipfs repo stat' still succeeds

Back to top

TestCase t0081-repo-pinning

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.098
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.154
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.501
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0081-repo-pinning.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0081-repo-pinning.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0081-repo-pinning.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs add dir' succeeds Success 0.273
System.out »
expecting success: 
  mkdir dir1 &&
  mkdir dir1/dir2 &&
  mkdir dir1/dir2/dir4 &&
  mkdir dir1/dir3 &&
  echo "some text 1" >dir1/file1 &&
  echo "some text 2" >dir1/file2 &&
  echo "some text 3" >dir1/file3 &&
  echo "some text 1" >dir1/dir2/file1 &&
  echo "some text 4" >dir1/dir2/file4 &&
  echo "some text 1" >dir1/dir2/dir4/file1 &&
  echo "some text 2" >dir1/dir2/dir4/file2 &&
  echo "some text 6" >dir1/dir2/dir4/file6 &&
  echo "some text 2" >dir1/dir3/file2 &&
  echo "some text 5" >dir1/dir3/file5 &&
  ipfs add -Q -r dir1 >actual &&
  echo "$HASH_DIR1" >expected &&
  ipfs repo gc && # remove the patch chaff
  test_cmp expected actual

ok 4 - 'ipfs add dir' succeeds
5 - objects are there Success 1.101
System.out »
expecting success: 
  ipfs cat "$HASH_FILE6" >FILE6_a &&
  ipfs cat "$HASH_FILE5" >FILE5_a &&
  ipfs cat "$HASH_FILE4" >FILE4_a &&
  ipfs cat "$HASH_FILE3" >FILE3_a &&
  ipfs cat "$HASH_FILE2" >FILE2_a &&
  ipfs cat "$HASH_FILE1" >FILE1_a &&
  ipfs ls "$HASH_DIR3"   >DIR3_a &&
  ipfs ls "$HASH_DIR4"   >DIR4_a &&
  ipfs ls "$HASH_DIR2"   >DIR2_a &&
  ipfs ls "$HASH_DIR1"   >DIR1_a

ok 5 - objects are there
6 - ipfs dag get QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY works Success 0.290
System.out »
expecting success: 
  ipfs dag get $HASH_DIR1 | jq -r ".Links[] | .Hash | .[\"/\"]" > DIR1_objlink

ok 6 - ipfs dag get QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY works
7 - added dir was pinned recursively Success 0.302
System.out »
expecting success: 
  test_pin_flag $HASH_DIR1 recursive true

test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY recursive true
ok 7 - added dir was pinned recursively
8 - rest were pinned indirectly Success 2.873
System.out »
expecting success: 
  test_pin_flag "$HASH_FILE6" indirect true
  test_pin_flag "$HASH_FILE5" indirect true
  test_pin_flag "$HASH_FILE4" indirect true
  test_pin_flag "$HASH_FILE3" indirect true
  test_pin_flag "$HASH_FILE2" indirect true
  test_pin_flag "$HASH_FILE1" indirect true
  test_pin_flag "$HASH_DIR3" indirect true
  test_pin_flag "$HASH_DIR4" indirect true
  test_pin_flag "$HASH_DIR2" indirect true

test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U indirect true
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf indirect true
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH indirect true
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 indirect true
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP indirect true
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 indirect true
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H indirect true
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd indirect true
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC indirect true
ok 8 - rest were pinned indirectly
9 - added dir was NOT pinned indirectly Success 0.368
System.out »
expecting success: 
  test_pin_flag "$HASH_DIR1" indirect false

test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY indirect false
ok 9 - added dir was NOT pinned indirectly
System.err »
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
10 - nothing is pinned directly Success 0.812
System.out »
expecting success: 
  ipfs pin ls --type=direct >actual4 &&
  test_must_be_empty actual4

ok 10 - nothing is pinned directly
11 - 'ipfs repo gc' succeeds Success 0.646
System.out »
expecting success: 
  ipfs repo gc >gc_out_actual

ok 11 - 'ipfs repo gc' succeeds
12 - objects are still there Success 6.829
System.out »
expecting success: 
  cat FILE6_a FILE5_a FILE4_a FILE3_a FILE2_a FILE1_a >expected45 &&
  cat DIR3_a DIR4_a DIR2_a DIR1_a >>expected45 &&
  ipfs cat "$HASH_FILE6"  >actual45 &&
  ipfs cat "$HASH_FILE5" >>actual45 &&
  ipfs cat "$HASH_FILE4" >>actual45 &&
  ipfs cat "$HASH_FILE3" >>actual45 &&
  ipfs cat "$HASH_FILE2" >>actual45 &&
  ipfs cat "$HASH_FILE1" >>actual45 &&
  ipfs ls "$HASH_DIR3"   >>actual45 &&
  ipfs ls "$HASH_DIR4"   >>actual45 &&
  ipfs ls "$HASH_DIR2"   >>actual45 &&
  ipfs ls "$HASH_DIR1"   >>actual45 &&
  test_cmp expected45 actual45

ok 12 - objects are still there
13 - remove dir recursive pin succeeds Success 0.402
System.out »
expecting success: 
  echo "unpinned $HASH_DIR1" >expected5 &&
  ipfs pin rm -r "$HASH_DIR1" >actual5 &&
  test_cmp expected5 actual5

ok 13 - remove dir recursive pin succeeds
14 - none are pinned any more Success 17.363
System.out »
expecting success: 
  test_pin "$HASH_FILE6" &&
  test_pin "$HASH_FILE5" &&
  test_pin "$HASH_FILE4" &&
  test_pin "$HASH_FILE3" &&
  test_pin "$HASH_FILE2" &&
  test_pin "$HASH_FILE1" &&
  test_pin "$HASH_DIR3"  &&
  test_pin "$HASH_DIR4"  &&
  test_pin "$HASH_DIR2"  &&
  test_pin "$HASH_DIR1"

test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U recursive false
test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U indirect false
test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U direct false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf recursive false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf indirect false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf direct false
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH recursive false
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH indirect false
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH direct false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 recursive false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 indirect false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 direct false
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP recursive false
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP indirect false
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP direct false
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 recursive false
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 indirect false
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 direct false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H recursive false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H indirect false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H direct false
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd recursive false
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd indirect false
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd direct false
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC recursive false
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC indirect false
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC direct false
test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY recursive false
test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY indirect false
test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY direct false
ok 14 - none are pinned any more
System.err »
Error: path 'QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U' is not pinned
Error: path 'QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U' is not pinned
Error: path 'QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH' is not pinned
Error: path 'QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH' is not pinned
Error: path 'QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP' is not pinned
Error: path 'QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP' is not pinned
Error: path 'QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP' is not pinned
Error: path 'QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4' is not pinned
Error: path 'QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4' is not pinned
Error: path 'QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd' is not pinned
Error: path 'QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd' is not pinned
Error: path 'QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd' is not pinned
Error: path 'QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC' is not pinned
Error: path 'QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC' is not pinned
Error: path 'QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC' is not pinned
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
15 - pin some directly and indirectly Success 0.492
System.out »
expecting success: 
  ipfs pin add -r=false  "$HASH_DIR1"  >actual7 &&
  ipfs pin add -r=true  "$HASH_DIR2"  >>actual7 &&
  ipfs pin add -r=false  "$HASH_FILE1" >>actual7 &&
  echo "pinned $HASH_DIR1 directly"     >expected7 &&
  echo "pinned $HASH_DIR2 recursively" >>expected7 &&
  echo "pinned $HASH_FILE1 directly"   >>expected7 &&
  test_cmp expected7 actual7

ok 15 - pin some directly and indirectly
16 - pin lists look good Success 2.861
System.out »
expecting success: 
  test_pin $HASH_DIR1  direct &&
  test_pin $HASH_DIR2  recursive &&
  test_pin $HASH_DIR3  &&
  test_pin $HASH_DIR4  indirect &&
  test_pin $HASH_FILE1 indirect direct &&
  test_pin $HASH_FILE2 indirect &&
  test_pin $HASH_FILE3 &&
  test_pin $HASH_FILE4 indirect &&
  test_pin $HASH_FILE5 &&
  test_pin $HASH_FILE6 indirect

test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY recursive false
test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY indirect false
test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY direct true
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC recursive true
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC indirect false
test_pin_flag QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC direct false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H recursive false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H indirect false
test_pin_flag QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H direct false
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd recursive false
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd indirect true
test_pin_flag QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd direct false
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 recursive false
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 indirect true
test_pin_flag QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4 direct true
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP recursive false
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP indirect true
test_pin_flag QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP direct false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 recursive false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 indirect false
test_pin_flag QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7 direct false
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH recursive false
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH indirect true
test_pin_flag QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH direct false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf recursive false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf indirect false
test_pin_flag QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf direct false
test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U recursive false
test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U indirect true
test_pin_flag QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U direct false
ok 16 - pin lists look good
System.err »
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
Error: path 'QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY' is not pinned
Error: path 'QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC' is not pinned
Error: path 'QmTUTQAgeVfughDSFukMZLbfGvetDJY7Ef5cDXkKK4abKC' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H' is not pinned
Error: path 'QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd' is not pinned
Error: path 'QmW98gV71Ns4bX7QbgWAqLiGF3SDC1JpveZSgBh4ExaSAd' is not pinned
Error: path 'QmbgX4aXhSSY88GHmPQ4roizD8wFwPX8jzTLjc8VAp89x4' is not pinned
Error: path 'QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP' is not pinned
Error: path 'QmSkjTornLY72QhmK9NvAz26815pTaoAL42rF8Qi3w2WBP' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7' is not pinned
Error: path 'QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH' is not pinned
Error: path 'QmV1aiVgpDknKQugrK59uBUbMrPnsQM1F9FXbFcfgEvUvH' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf' is not pinned
Error: path 'QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U' is not pinned
Error: path 'QmRsBC3Y2G6VRPYGAVpZczx1W7Xw54MtM1NcLKTkn6rx3U' is not pinned
17 - 'ipfs repo gc' succeeds Success 0.307
System.out »
expecting success: 
  ipfs repo gc &&
  test_must_fail ipfs block stat $HASH_FILE3 &&
  test_must_fail ipfs block stat $HASH_FILE5 &&
  test_must_fail ipfs block stat $HASH_DIR3

removed bafkreiflftiff7qlpfmqflxyiqsnfjighbwpjc5e3opxnur6wqaem3zr3y
removed bafkreibum2ceib265monopmstqoxrbf5xwntqfknp7fmwd425layn2b6qa
removed bafkreifsu542byju2jocqoardtbe35jh43jo6fpoly2bbkcpip2d6oyapa
ok 17 - 'ipfs repo gc' succeeds
System.err »
Error: block was not found locally (offline): ipld: could not find QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7
Error: block was not found locally (offline): ipld: could not find QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf
Error: block was not found locally (offline): ipld: could not find QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H
18 - some objects are still there Success 0.564
System.out »
expecting success: 
  cat FILE6_a FILE4_a FILE2_a FILE1_a >expected8 &&
  cat DIR4_a DIR2_a DIR1_objlink >>expected8 &&
  ipfs cat "$HASH_FILE6"  >actual8 &&
  ipfs cat "$HASH_FILE4" >>actual8 &&
  ipfs cat "$HASH_FILE2" >>actual8 &&
  ipfs cat "$HASH_FILE1" >>actual8 &&
  ipfs ls "$HASH_DIR4"   >>actual8 &&
  ipfs ls "$HASH_DIR2"   >>actual8 &&
  ipfs dag get "$HASH_DIR1" | jq -r ".Links[] | .Hash | .[\"/\"]" >>actual8 &&
  test_cmp expected8 actual8

ok 18 - some objects are still there
19 - some are no longer there Success 0.238
System.out »
expecting success: 
  test_must_fail ipfs cat "$HASH_FILE5" &&
  test_must_fail ipfs cat "$HASH_FILE3" &&
  test_must_fail ipfs ls "$HASH_DIR3"

ok 19 - some are no longer there
System.err »
Error: block was not found locally (offline): ipld: could not find QmaN3PtyP8DcVGHi3Q2Fcp7CfAFVcVXKddWbHoNvaA41zf
Error: block was not found locally (offline): ipld: could not find QmZrr4Pzqp3NnMzMfbMhNe7LghfoUFHVx7c9Po9GZrhKZ7
Error: block was not found locally (offline): ipld: could not find QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H
20 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 20 - 'ipfs daemon' succeeds
21 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 21 - api file shows up
22 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 22 - set up address variables
23 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 23 - 'ipfs daemon' is ready
24 - recursive pin fails without objects Success 0.064
System.out »
expecting success: 
  test_must_fail ipfs pin add -r "$HASH_DIR1" 2>err_expected8 &&
  grep "ipld: could not find" err_expected8 ||
  test_fsh cat err_expected8

Error: pin: block was not found locally (offline): ipld: could not find QmRsCaNBMkweZ9vHT5PJRd2TT9rtNKEKyuognCEVxZxF1H
ok 24 - recursive pin fails without objects
25 - failed recursive pin does not remove direct pin Success 0.066
System.out »
expecting success: 
  test_pin_flag "$HASH_DIR1" direct true

test_pin_flag QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY direct true
ok 25 - failed recursive pin does not remove direct pin
26 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 26 - 'ipfs daemon' is still running
27 - 'ipfs daemon' can be killed Success 0.274
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 27 - 'ipfs daemon' can be killed
28 - test add nopin file Success 0.323
System.out »
expecting success: 
  echo "test nopin data" > test_nopin_data &&
  NOPINHASH=$(ipfs add -q --pin=false test_nopin_data) &&
  test_pin_flag "$NOPINHASH" direct false &&
  test_pin_flag "$NOPINHASH" indirect false &&
  test_pin_flag "$NOPINHASH" recursive false

test_pin_flag QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um direct false
test_pin_flag QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um indirect false
test_pin_flag QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um recursive false
ok 28 - test add nopin file
System.err »
Error: path 'QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um' is not pinned
Error: path 'QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um' is not pinned
Error: path 'QmbGwP1q8poRpB9fE4sh5jrVhRCtSqgNaSVfd7EwHxG1um' is not pinned
29 - test add nopin dir Success 0.805
System.out »
expecting success: 
  mkdir nopin_dir1 &&
  echo "some nopin text 1" >nopin_dir1/file1 &&
  echo "some nopin text 2" >nopin_dir1/file2 &&
  ipfs add -Q -r --pin=false nopin_dir1 >actual &&
  echo "$HASH_NOPINDIR" >expected &&
  test_cmp actual expected &&
  test_pin_flag "$HASH_NOPINDIR" direct false &&
  test_pin_flag "$HASH_NOPINDIR" indirect false &&
  test_pin_flag "$HASH_NOPINDIR" recursive false &&
  test_pin_flag "$HASH_NOPIN_FILE1" direct false &&
  test_pin_flag "$HASH_NOPIN_FILE1" indirect false &&
  test_pin_flag "$HASH_NOPIN_FILE1" recursive false &&
  test_pin_flag "$HASH_NOPIN_FILE2" direct false &&
  test_pin_flag "$HASH_NOPIN_FILE2" indirect false &&
  test_pin_flag "$HASH_NOPIN_FILE2" recursive false


test_pin_flag QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU direct false
test_pin_flag QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU indirect false
test_pin_flag QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU recursive false
test_pin_flag QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx direct false
test_pin_flag QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx indirect false
test_pin_flag QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx recursive false
test_pin_flag QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT direct false
test_pin_flag QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT indirect false
test_pin_flag QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT recursive false
ok 29 - test add nopin dir
System.err »
Error: path 'QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU' is not pinned
Error: path 'QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU' is not pinned
Error: path 'QmWHjrRJYSfYKz5V9dWWSKu47GdY7NewyRhyTiroXgWcDU' is not pinned
Error: path 'QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx' is not pinned
Error: path 'QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx' is not pinned
Error: path 'QmUJT3GQi1dxQyTZbkaWeer9GkCn1d3W3HHRLSDr6PTcpx' is not pinned
Error: path 'QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT' is not pinned
Error: path 'QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT' is not pinned
Error: path 'QmarR7m9JT7qHEGhuFNZUEMAnoZ8E9QAfsthHCQ9Y2GfoT' is not pinned
30 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 30 - 'ipfs daemon' succeeds
31 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 31 - api file shows up
32 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 32 - set up address variables
33 - get swarm addresses Success 0.067
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 33 - get swarm addresses
34 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 34 - set swarm address vars
35 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 35 - 'ipfs daemon' is ready
36 - test unpinning a hash that's not pinned Success 4.233
System.out »
expecting success: 
  test_expect_code 1 ipfs pin rm QmXV4f9v8a56MxWKBhP3ETsz4EaafudU1cKfPaaJnenc48 --timeout=2s
  test_expect_code 1 ipfs pin rm QmXV4f9v8a56MxWKBhP3ETsz4EaafudU1cKfPaaJnenc48/a --timeout=2s
  test_expect_code 1 ipfs pin rm QmXV4f9v8a56MxWKBhP3ETsz4EaafudU1cKfPaaJnenc48/a/b --timeout=2s

ok 36 - test unpinning a hash that's not pinned
System.err »
Error: not pinned or pinned indirectly
Error: context deadline exceeded
Error: context deadline exceeded
37 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 37 - 'ipfs daemon' is still running
38 - 'ipfs daemon' can be killed Success 0.273
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 38 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs add dir' succeeds
ok 5 - objects are there
ok 6 - ipfs dag get QmNyZVFbgvmzguS2jVMRb8PQMNcCMJrn9E3doDhBbcPNTY works
ok 7 - added dir was pinned recursively
ok 8 - rest were pinned indirectly
ok 9 - added dir was NOT pinned indirectly
ok 10 - nothing is pinned directly
ok 11 - 'ipfs repo gc' succeeds
ok 12 - objects are still there
ok 13 - remove dir recursive pin succeeds
ok 14 - none are pinned any more
ok 15 - pin some directly and indirectly
ok 16 - pin lists look good
ok 17 - 'ipfs repo gc' succeeds
ok 18 - some objects are still there
ok 19 - some are no longer there
ok 20 - 'ipfs daemon' succeeds
ok 21 - api file shows up
ok 22 - set up address variables
ok 23 - 'ipfs daemon' is ready
ok 24 - recursive pin fails without objects
ok 25 - failed recursive pin does not remove direct pin
ok 26 - 'ipfs daemon' is still running
ok 27 - 'ipfs daemon' can be killed
ok 28 - test add nopin file
ok 29 - test add nopin dir
ok 30 - 'ipfs daemon' succeeds
ok 31 - api file shows up
ok 32 - set up address variables
ok 33 - get swarm addresses
ok 34 - set swarm address vars
ok 35 - 'ipfs daemon' is ready
ok 36 - test unpinning a hash that's not pinned
ok 37 - 'ipfs daemon' is still running
ok 38 - 'ipfs daemon' can be killed

Back to top

TestCase t0082-repo-gc-auto

Name Status Type Time(s)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=

Back to top

TestCase t0084-repo-read-rehash

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.101
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.160
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.494
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0084-repo-read-rehash.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0084-repo-read-rehash.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0084-repo-read-rehash.sh/mfs"
ok 3 - prepare config -- mounting
4 - blocks are swapped Success 0.299
System.out »
expecting success: 
  ipfs cat $H_BLOCK2 > noswap &&
  cp -f "$IPFS_PATH/blocks/$BS_BLOCK1" "$IPFS_PATH/blocks/$BS_BLOCK2" &&
  ipfs cat $H_BLOCK2 > swap &&
  test_must_fail test_cmp noswap swap

> diff -u noswap swap
--- noswap	2026-02-27 18:12:56.812489748 +0000
+++ swap	2026-02-27 18:12:56.919489635 +0000
@@ -1 +1 @@
-Block 2
+Block 1

ok 4 - blocks are swapped
5 - getting modified block fails Success 0.090
System.out »
expecting success: 
    (test_must_fail ipfs cat $H_BLOCK2 2> err_msg) &&
    grep "block in storage has different hash than requested" err_msg
  
Error: block in storage has different hash than requested
ok 5 - getting modified block fails
6 - block shows up in repo verify Success 0.086
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify | cid-fmt --filter -b base32 "%M" > verify_out &&
    H_BLOCK2_MH=`cid-fmt -b base32 "%M" $H_BLOCK2` &&
    grep "$H_BLOCK2_MH" verify_out
  
1 blocks processed.
2 blocks processed.
block ciqnywbokhy7tcy7fuobxkvj66yrmardt3kc7ppy6uwwpzr4ya67ckq was corrupt (block in storage has different hash than requested)
ok 6 - block shows up in repo verify
System.err »
Error: verify complete, 1 blocks corrupt
7 - can add and cat a raw-leaf file Success 0.203
System.out »
expecting success: 
  HASH=$(echo "stuff" | ipfs add -q --raw-leaves) &&
  ipfs cat $HASH > /dev/null

ok 7 - can add and cat a raw-leaf file
8 - 'ipfs daemon' succeeds Success 0.009
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 8 - 'ipfs daemon' succeeds
9 - api file shows up Success 0.237
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 9 - api file shows up
10 - set up address variables Success 0.100
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 10 - set up address variables
11 - get swarm addresses Success 0.332
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 11 - get swarm addresses
12 - set swarm address vars Success 0.017
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 12 - set swarm address vars
13 - 'ipfs daemon' is ready Success 0.047
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 13 - 'ipfs daemon' is ready
14 - getting modified block fails Success 0.218
System.out »
expecting success: 
    (test_must_fail ipfs cat $H_BLOCK2 2> err_msg) &&
    grep "block in storage has different hash than requested" err_msg
  
Error: block in storage has different hash than requested
ok 14 - getting modified block fails
15 - block shows up in repo verify Success 0.144
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify | cid-fmt --filter -b base32 "%M" > verify_out &&
    H_BLOCK2_MH=`cid-fmt -b base32 "%M" $H_BLOCK2` &&
    grep "$H_BLOCK2_MH" verify_out
  
block ciqnywbokhy7tcy7fuobxkvj66yrmardt3kc7ppy6uwwpzr4ya67ckq was corrupt (block in storage has different hash than requested)
ok 15 - block shows up in repo verify
System.err »
Error: verify complete, 1 blocks corrupt
16 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 16 - 'ipfs daemon' is still running
17 - 'ipfs daemon' can be killed Success 0.580
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 17 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - blocks are swapped
ok 5 - getting modified block fails
ok 6 - block shows up in repo verify
ok 7 - can add and cat a raw-leaf file
ok 8 - 'ipfs daemon' succeeds
ok 9 - api file shows up
ok 10 - set up address variables
ok 11 - get swarm addresses
ok 12 - set swarm address vars
ok 13 - 'ipfs daemon' is ready
ok 14 - getting modified block fails
ok 15 - block shows up in repo verify
ok 16 - 'ipfs daemon' is still running
ok 17 - 'ipfs daemon' can be killed

Back to top

TestCase t0086-repo-verify

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.132
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.219
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.605
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0086-repo-verify.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0086-repo-verify.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0086-repo-verify.sh/mfs"
ok 3 - prepare config -- mounting
4 - create some files Success 0.017
System.out »
expecting success: 
  random-files -depth=3 -dirs=4 -files=10 foobar > /dev/null

ok 4 - create some files
5 - add them all Success 0.213
System.out »
expecting success: 
  ipfs add -r -q foobar > /dev/null

ok 5 - add them all
6 - back up file and overwrite it Success 0.010
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 6 - back up file and overwrite it
7 - repo verify detects failure Success 0.427
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
block bafkreicy2ymsi2luh5xlysizdrhghnaqcmqjxrsynlqapczybulqhyqepi was corrupt (block in storage has different hash than requested)
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 7 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
8 - replace the object Success 0.010
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 8 - replace the object
9 - ipfs repo verify passes just fine now Success 0.462
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 9 - ipfs repo verify passes just fine now
10 - back up file and overwrite it Success 0.018
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 10 - back up file and overwrite it
11 - repo verify detects failure Success 0.239
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
block bafkreigoppx43sv4ccejyasq3onzq6464gzpz45tmxprjx5cgulnlxu4qm was corrupt (block in storage has different hash than requested)
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 11 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
12 - replace the object Success 0.006
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 12 - replace the object
13 - ipfs repo verify passes just fine now Success 0.137
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 13 - ipfs repo verify passes just fine now
14 - back up file and overwrite it Success 0.032
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 14 - back up file and overwrite it
15 - repo verify detects failure Success 0.269
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
block bafkreihnritdkc6lcm2gaqx4zarjdiabycpohkzmkeirwxi3el46f36kt4 was corrupt (block in storage has different hash than requested)
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 15 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
16 - replace the object Success 0.018
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 16 - replace the object
17 - ipfs repo verify passes just fine now Success 0.506
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 17 - ipfs repo verify passes just fine now
18 - back up file and overwrite it Success 0.014
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 18 - back up file and overwrite it
19 - repo verify detects failure Success 0.321
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
block bafkreifhnafxol32eg6asdshvish74jp7oo3l23opopkzioq3wl5twupie was corrupt (block in storage has different hash than requested)
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 19 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
20 - replace the object Success 0.030
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 20 - replace the object
21 - ipfs repo verify passes just fine now Success 0.594
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 21 - ipfs repo verify passes just fine now
22 - back up file and overwrite it Success 0.024
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 22 - back up file and overwrite it
23 - repo verify detects failure Success 0.694
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
block bafkreibzczj4bmnuzguyqb5u2q2hrhnvfj3ygvc2li6xwwjb5lpbit2w5q was corrupt (block in storage has different hash than requested)
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 23 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
24 - replace the object Success 0.023
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 24 - replace the object
25 - ipfs repo verify passes just fine now Success 0.833
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 25 - ipfs repo verify passes just fine now
26 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 26 - back up file and overwrite it
27 - repo verify detects failure Success 0.499
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
block bafkreiflhpqpd4fgyicexl6o4cx5i5yonmhfkqs6gkrxczwmsx2bhwitwm was corrupt (block in storage has different hash than requested)
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 27 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
28 - replace the object Success 0.008
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 28 - replace the object
29 - ipfs repo verify passes just fine now Success 1.501
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 29 - ipfs repo verify passes just fine now
30 - back up file and overwrite it Success 0.075
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 30 - back up file and overwrite it
31 - repo verify detects failure Success 0.927
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
block bafkreif4uwdwfyn5a4vhimsgzpqnu7q2q7nmtqva22vh3fruexhbun7unm was corrupt (block in storage has different hash than requested)
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 31 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
32 - replace the object Success 0.089
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 32 - replace the object
33 - ipfs repo verify passes just fine now Success 0.397
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 33 - ipfs repo verify passes just fine now
34 - back up file and overwrite it Success 0.012
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 34 - back up file and overwrite it
35 - repo verify detects failure Success 0.308
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
block bafkreifrjckuz5w2vmx7orwsv6kolpgae2rcbgptjoxki66schzdccvvx4 was corrupt (block in storage has different hash than requested)
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 35 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
36 - replace the object Success 0.270
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 36 - replace the object
37 - ipfs repo verify passes just fine now Success 0.650
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 37 - ipfs repo verify passes just fine now
38 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 38 - back up file and overwrite it
39 - repo verify detects failure Success 0.739
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
block bafkreib5gufs5qa2hga6zqqjbn6xdnpd42ffoyf4jyomx4v3sdiv4qs254 was corrupt (block in storage has different hash than requested)
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 39 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
40 - replace the object Success 0.007
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 40 - replace the object
41 - ipfs repo verify passes just fine now Success 0.770
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 41 - ipfs repo verify passes just fine now
42 - back up file and overwrite it Success 0.007
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 42 - back up file and overwrite it
43 - repo verify detects failure Success 0.525
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
block bafkreibxt4ml7gthu7gch4vpffx34zguzye42kssdfqsyosh2dgq3uyc5u was corrupt (block in storage has different hash than requested)
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 43 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
44 - replace the object Success 0.046
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 44 - replace the object
45 - ipfs repo verify passes just fine now Success 0.416
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 45 - ipfs repo verify passes just fine now
46 - back up file and overwrite it Success 0.205
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 46 - back up file and overwrite it
47 - repo verify detects failure Success 1.035
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
block bafkreih2omoqx2nlvzviikkchfimq24vopr6bklccfsedvpv22bvdwehsu was corrupt (block in storage has different hash than requested)
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 47 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
48 - replace the object Success 0.009
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 48 - replace the object
49 - ipfs repo verify passes just fine now Success 0.850
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 49 - ipfs repo verify passes just fine now
50 - back up file and overwrite it Success 0.559
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 50 - back up file and overwrite it
51 - repo verify detects failure Success 0.802
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
block bafkreiacfmnibztbikjkr4dyjtk2jzfbvknt3c7pzr73bakewcriny5pv4 was corrupt (block in storage has different hash than requested)
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 51 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
52 - replace the object Success 0.115
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 52 - replace the object
53 - ipfs repo verify passes just fine now Success 0.657
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 53 - ipfs repo verify passes just fine now
54 - back up file and overwrite it Success 0.189
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 54 - back up file and overwrite it
55 - repo verify detects failure Success 0.309
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
block bafkreifysauxbh5rij3l4hjpo2ybvpgpksfg3trahyw2xavgnwuborhft4 was corrupt (block in storage has different hash than requested)
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 55 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
56 - replace the object Success 0.019
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 56 - replace the object
57 - ipfs repo verify passes just fine now Success 0.351
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 57 - ipfs repo verify passes just fine now
58 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 58 - back up file and overwrite it
59 - repo verify detects failure Success 0.182
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
block bafkreihjstwqj3qmgqyrgzc4vxl6cp2nz7c5gnbls6euugzt6ionp73osi was corrupt (block in storage has different hash than requested)
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 59 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
60 - replace the object Success 0.007
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 60 - replace the object
61 - ipfs repo verify passes just fine now Success 0.125
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 61 - ipfs repo verify passes just fine now
62 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 62 - back up file and overwrite it
63 - repo verify detects failure Success 0.127
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
block bafkreiadp43ipvvwmdhtm64bxt7aiq5rrii7z7bdbz6hyil75qhu22472q was corrupt (block in storage has different hash than requested)
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 63 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
64 - replace the object Success 0.008
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 64 - replace the object
65 - ipfs repo verify passes just fine now Success 0.124
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 65 - ipfs repo verify passes just fine now
66 - back up file and overwrite it Success 0.005
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 66 - back up file and overwrite it
67 - repo verify detects failure Success 0.097
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
block bafkreign3yz4lgcfxq2kxsupsk7vaub43x475nmhnpxr2fbclo7rzth4oy was corrupt (block in storage has different hash than requested)
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 67 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
68 - replace the object Success 0.007
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 68 - replace the object
69 - ipfs repo verify passes just fine now Success 0.119
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 69 - ipfs repo verify passes just fine now
70 - back up file and overwrite it Success 0.007
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 70 - back up file and overwrite it
71 - repo verify detects failure Success 0.103
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
block bafkreigqyscwnsmq3p64sflakkgfdadglikhlln7xsz74wkp35fto5t3zy was corrupt (block in storage has different hash than requested)
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 71 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
72 - replace the object Success 0.006
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 72 - replace the object
73 - ipfs repo verify passes just fine now Success 0.098
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 73 - ipfs repo verify passes just fine now
74 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 74 - back up file and overwrite it
75 - repo verify detects failure Success 0.083
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
block bafkreiful6lzhq54qcm7umnmre3iivqgircw3tdvytcw22qthuoctze2ba was corrupt (block in storage has different hash than requested)
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 75 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
76 - replace the object Success 0.006
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 76 - replace the object
77 - ipfs repo verify passes just fine now Success 0.095
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 77 - ipfs repo verify passes just fine now
78 - back up file and overwrite it Success 0.023
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 78 - back up file and overwrite it
79 - repo verify detects failure Success 0.088
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
block bafkreiacf2f3wepyly5nku2yrrrw7ncvjg64sasbckzfesdicx5ul26vuq was corrupt (block in storage has different hash than requested)
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 79 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
80 - replace the object Success 0.006
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 80 - replace the object
81 - ipfs repo verify passes just fine now Success 0.102
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 81 - ipfs repo verify passes just fine now
82 - back up file and overwrite it Success 0.008
System.out »
expecting success: 
    cp "$to_break" backup_file &&
    echo "this is super broken" > "$to_break"
  
ok 82 - back up file and overwrite it
83 - repo verify detects failure Success 0.091
System.out »
expecting success: 
    test_expect_code 1 ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
block bafkreidi5awnigakib277timzpyozgqyuc3taktf5wo3xgozhango5f7ce was corrupt (block in storage has different hash than requested)
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
ok 83 - repo verify detects failure
System.err »
Error: verify complete, 1 blocks corrupt
84 - replace the object Success 0.007
System.out »
expecting success: 
    cp backup_file "$to_break"
  
ok 84 - replace the object
85 - ipfs repo verify passes just fine now Success 0.088
System.out »
expecting success: 
    ipfs repo verify
  
1 blocks processed.
2 blocks processed.
3 blocks processed.
4 blocks processed.
5 blocks processed.
6 blocks processed.
7 blocks processed.
8 blocks processed.
9 blocks processed.
10 blocks processed.
11 blocks processed.
12 blocks processed.
13 blocks processed.
14 blocks processed.
15 blocks processed.
16 blocks processed.
17 blocks processed.
18 blocks processed.
19 blocks processed.
20 blocks processed.
21 blocks processed.
22 blocks processed.
23 blocks processed.
24 blocks processed.
25 blocks processed.
26 blocks processed.
27 blocks processed.
28 blocks processed.
29 blocks processed.
30 blocks processed.
31 blocks processed.
32 blocks processed.
33 blocks processed.
34 blocks processed.
35 blocks processed.
36 blocks processed.
37 blocks processed.
38 blocks processed.
39 blocks processed.
40 blocks processed.
41 blocks processed.
42 blocks processed.
43 blocks processed.
44 blocks processed.
45 blocks processed.
46 blocks processed.
47 blocks processed.
48 blocks processed.
49 blocks processed.
50 blocks processed.
51 blocks processed.
52 blocks processed.
53 blocks processed.
54 blocks processed.
55 blocks processed.
56 blocks processed.
57 blocks processed.
58 blocks processed.
59 blocks processed.
60 blocks processed.
61 blocks processed.
62 blocks processed.
63 blocks processed.
64 blocks processed.
65 blocks processed.
66 blocks processed.
67 blocks processed.
68 blocks processed.
69 blocks processed.
70 blocks processed.
71 blocks processed.
72 blocks processed.
73 blocks processed.
74 blocks processed.
75 blocks processed.
76 blocks processed.
77 blocks processed.
78 blocks processed.
79 blocks processed.
80 blocks processed.
81 blocks processed.
82 blocks processed.
83 blocks processed.
84 blocks processed.
85 blocks processed.
86 blocks processed.
87 blocks processed.
88 blocks processed.
89 blocks processed.
90 blocks processed.
91 blocks processed.
92 blocks processed.
93 blocks processed.
94 blocks processed.
95 blocks processed.
96 blocks processed.
97 blocks processed.
98 blocks processed.
99 blocks processed.
100 blocks processed.
101 blocks processed.
102 blocks processed.
103 blocks processed.
104 blocks processed.
105 blocks processed.
106 blocks processed.
107 blocks processed.
108 blocks processed.
109 blocks processed.
110 blocks processed.
111 blocks processed.
112 blocks processed.
113 blocks processed.
114 blocks processed.
115 blocks processed.
116 blocks processed.
117 blocks processed.
118 blocks processed.
119 blocks processed.
120 blocks processed.
121 blocks processed.
122 blocks processed.
123 blocks processed.
124 blocks processed.
125 blocks processed.
126 blocks processed.
127 blocks processed.
128 blocks processed.
129 blocks processed.
130 blocks processed.
131 blocks processed.
132 blocks processed.
133 blocks processed.
134 blocks processed.
135 blocks processed.
136 blocks processed.
137 blocks processed.
138 blocks processed.
139 blocks processed.
140 blocks processed.
141 blocks processed.
142 blocks processed.
143 blocks processed.
144 blocks processed.
145 blocks processed.
146 blocks processed.
147 blocks processed.
148 blocks processed.
149 blocks processed.
150 blocks processed.
151 blocks processed.
152 blocks processed.
153 blocks processed.
154 blocks processed.
155 blocks processed.
156 blocks processed.
157 blocks processed.
158 blocks processed.
159 blocks processed.
160 blocks processed.
161 blocks processed.
162 blocks processed.
163 blocks processed.
164 blocks processed.
165 blocks processed.
166 blocks processed.
167 blocks processed.
168 blocks processed.
169 blocks processed.
170 blocks processed.
171 blocks processed.
172 blocks processed.
173 blocks processed.
174 blocks processed.
175 blocks processed.
176 blocks processed.
177 blocks processed.
178 blocks processed.
179 blocks processed.
180 blocks processed.
181 blocks processed.
182 blocks processed.
183 blocks processed.
184 blocks processed.
185 blocks processed.
186 blocks processed.
187 blocks processed.
188 blocks processed.
189 blocks processed.
190 blocks processed.
191 blocks processed.
192 blocks processed.
193 blocks processed.
194 blocks processed.
195 blocks processed.
196 blocks processed.
197 blocks processed.
198 blocks processed.
199 blocks processed.
200 blocks processed.
201 blocks processed.
202 blocks processed.
203 blocks processed.
204 blocks processed.
205 blocks processed.
206 blocks processed.
207 blocks processed.
208 blocks processed.
209 blocks processed.
210 blocks processed.
211 blocks processed.
212 blocks processed.
213 blocks processed.
214 blocks processed.
215 blocks processed.
216 blocks processed.
217 blocks processed.
218 blocks processed.
219 blocks processed.
220 blocks processed.
221 blocks processed.
222 blocks processed.
223 blocks processed.
224 blocks processed.
225 blocks processed.
226 blocks processed.
227 blocks processed.
228 blocks processed.
229 blocks processed.
230 blocks processed.
231 blocks processed.
232 blocks processed.
verify complete, all blocks validated.
ok 85 - ipfs repo verify passes just fine now
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create some files
ok 5 - add them all
ok 6 - back up file and overwrite it
ok 7 - repo verify detects failure
ok 8 - replace the object
ok 9 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 10 - back up file and overwrite it
ok 11 - repo verify detects failure
ok 12 - replace the object
ok 13 - ipfs repo verify passes just fine now
ok 14 - back up file and overwrite it
ok 15 - repo verify detects failure
ok 16 - replace the object
ok 17 - ipfs repo verify passes just fine now
ok 18 - back up file and overwrite it
ok 19 - repo verify detects failure
ok 20 - replace the object
ok 21 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 22 - back up file and overwrite it
ok 23 - repo verify detects failure
ok 24 - replace the object
ok 25 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 26 - back up file and overwrite it
ok 27 - repo verify detects failure
ok 28 - replace the object
ok 29 - ipfs repo verify passes just fine now
ok 30 - back up file and overwrite it
ok 31 - repo verify detects failure
ok 32 - replace the object
ok 33 - ipfs repo verify passes just fine now
ok 34 - back up file and overwrite it
ok 35 - repo verify detects failure
ok 36 - replace the object
ok 37 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 38 - back up file and overwrite it
ok 39 - repo verify detects failure
ok 40 - replace the object
ok 41 - ipfs repo verify passes just fine now
ok 42 - back up file and overwrite it
ok 43 - repo verify detects failure
ok 44 - replace the object
ok 45 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 46 - back up file and overwrite it
ok 47 - repo verify detects failure
ok 48 - replace the object
ok 49 - ipfs repo verify passes just fine now
ok 50 - back up file and overwrite it
ok 51 - repo verify detects failure
ok 52 - replace the object
ok 53 - ipfs repo verify passes just fine now
ok 54 - back up file and overwrite it
ok 55 - repo verify detects failure
ok 56 - replace the object
ok 57 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 58 - back up file and overwrite it
ok 59 - repo verify detects failure
ok 60 - replace the object
ok 61 - ipfs repo verify passes just fine now
ok 62 - back up file and overwrite it
ok 63 - repo verify detects failure
ok 64 - replace the object
ok 65 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 66 - back up file and overwrite it
ok 67 - repo verify detects failure
ok 68 - replace the object
ok 69 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 70 - back up file and overwrite it
ok 71 - repo verify detects failure
ok 72 - replace the object
ok 73 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 74 - back up file and overwrite it
ok 75 - repo verify detects failure
ok 76 - replace the object
ok 77 - ipfs repo verify passes just fine now
sort: write failed: 'standard output': Broken pipe
sort: write error
ok 78 - back up file and overwrite it
ok 79 - repo verify detects failure
ok 80 - replace the object
ok 81 - ipfs repo verify passes just fine now
ok 82 - back up file and overwrite it
ok 83 - repo verify detects failure
ok 84 - replace the object
ok 85 - ipfs repo verify passes just fine now
System.err »
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error
sort: write failed: 'standard output': Broken pipe
sort: write error

Back to top

TestCase t0087-repo-robust-gc

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.116
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.196
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.630
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/mfs"
ok 3 - prepare config -- mounting
4 - add a 1MB file with --raw-leaves Success 0.182
System.out »
expecting success: 
    random-data -size=1048576 -seed=56 > afile &&
    HASH1=`ipfs add --raw-leaves -q --cid-version 1 afile` &&
    REFS=`ipfs refs -r $HASH1` &&
    read LEAF1 LEAF2 LEAF3 LEAF4 < <(echo $REFS)
  
ok 4 - add a 1MB file with --raw-leaves
5 - find data blocks for added file Success 0.020
System.out »
expecting success: 
    HASH1MH=`cid-fmt -b base32 "%M" $HASH1` &&
    LEAF1MH=`cid-fmt -b base32 "%M" $LEAF1` &&
    LEAF2MH=`cid-fmt -b base32 "%M" $LEAF2` &&
    HASH1FILE=`find .ipfs/blocks -type f | grep -i $HASH1MH` &&
    LEAF1FILE=`find .ipfs/blocks -type f | grep -i $LEAF1MH` &&
    LEAF2FILE=`find .ipfs/blocks -type f | grep -i $LEAF2MH`
  
ok 5 - find data blocks for added file
6 - remove a leaf node from the repo manually Success 0.005
System.out »
expecting success: 
    rm "$LEAF1FILE"
  
ok 6 - remove a leaf node from the repo manually
7 - check that the node is removed Success 0.117
System.out »
expecting success: 
   test_must_fail ipfs cat $HASH1
 
ok 7 - check that the node is removed
System.err »
Error: failed to fetch all nodes
8 - 'ipfs repo gc' should still be fine Success 0.480
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreiben3q7rordwfkq5ddu3p5iyptjtcgunjwwjomc6vuwtppk6cze6y
ok 8 - 'ipfs repo gc' should still be fine
9 - corrupt the root node of 1MB file Success 0.015
System.out »
expecting success: 
    test -e "$HASH1FILE" &&
    dd if=/dev/zero of="$HASH1FILE" count=1 bs=100 conv=notrunc
  
ok 9 - corrupt the root node of 1MB file
System.err »
1+0 records in
1+0 records out
100 bytes copied, 4.1329e-05 s, 2.4 MB/s
10 - 'ipfs repo gc' should abort without removing anything Success 0.488
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee gc_err &&
    grep -q "could not retrieve links for $HASH1" gc_err &&
    grep -q "aborted" gc_err
  
Error: could not retrieve links for bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a: proto: invalid field number; garbage collection aborted: could not retrieve some links
ok 10 - 'ipfs repo gc' should abort without removing anything
11 - leaf nodes were not removed after gc Success 0.487
System.out »
expecting success: 
    ipfs cat $LEAF3 > /dev/null &&
    ipfs cat $LEAF4 > /dev/null
  
ok 11 - leaf nodes were not removed after gc
12 - unpin the 1MB file Success 0.156
System.out »
expecting success: 
    ipfs pin rm $HASH1
  
unpinned bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
ok 12 - unpin the 1MB file
13 - create a permission problem Success 0.206
System.out »
expecting success: 
    chmod 500 `dirname "$LEAF2FILE"` &&
    test_must_fail ipfs block rm $LEAF2 2>&1 | tee block_rm_err &&
    grep -q "permission denied" block_rm_err
  
cannot remove bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq: remove /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/.ipfs/blocks/QF/CIQHV4VPMAGFTNIELRC63U2DPLFSAZ5EN7PHS74D43QOBUNAY4MKQFA.data: permission denied
Error: some blocks not removed
ok 13 - create a permission problem
14 - 'ipfs repo gc' should still run and remove as much as possible Success 1.031
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not remove $LEAF2" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF3)" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF4)" repo_gc_out &&
    test_must_fail ipfs block stat $HASH1
  
removed bafkreidfwozfuiz6hl5vgzeoxhoccjgy6kis3du2ymrlpbkgr7icum7wre
removed bafkreibqnsc66tqshbe23av245ozb4x7gyzvfmxmuy7t64furrqmxwmuom
removed bafkreiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
Error: could not remove bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq: remove /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/.ipfs/blocks/QF/CIQHV4VPMAGFTNIELRC63U2DPLFSAZ5EN7PHS74D43QOBUNAY4MKQFA.data: permission denied; garbage collection incomplete: could not delete some blocks
ok 14 - 'ipfs repo gc' should still run and remove as much as possible
System.err »
Error: block was not found locally (offline): ipld: could not find bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
15 - fix the permission problem Success 0.017
System.out »
expecting success: 
    chmod 700 `dirname "$LEAF2FILE"`
  
ok 15 - fix the permission problem
16 - 'ipfs repo gc' should be ok now Success 0.555
System.out »
expecting success: 
    ipfs repo gc | tee repo_gc_out
    grep -q "removed $(to_raw_cid $LEAF2)" repo_gc_out
  
removed bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq
ok 16 - 'ipfs repo gc' should be ok now
17 - add 1MB file normally (i.e., without raw leaves) Success 0.451
System.out »
expecting success: 
    random-data -size=1048576 -seed=56 > afile &&
    HASH2=`ipfs add -q afile`
  
ok 17 - add 1MB file normally (i.e., without raw leaves)
18 - add some additional unpinned content Success 1.177
System.out »
expecting success: 
    random-data -size=1000 -seed=3 > junk1 &&
    random-data -size=1000 -seed=4 > junk2 &&
    JUNK1=`ipfs add --pin=false -q junk1` &&
    JUNK2=`ipfs add --pin=false -q junk2`
  
ok 18 - add some additional unpinned content
19 - remove a leaf node from the repo manually Success 0.007
System.out »
expecting success: 
    rm "$LEAF1FILE"
  
ok 19 - remove a leaf node from the repo manually
20 - 'ipfs repo gc' should abort Success 0.635
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "aborted" repo_gc_out
  
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c; garbage collection aborted: could not retrieve some links
ok 20 - 'ipfs repo gc' should abort
21 - test that garbage collector really aborted Success 1.500
System.out »
expecting success: 
    ipfs cat $JUNK1 > /dev/null &&
    ipfs cat $JUNK2 > /dev/null 
  
ok 21 - test that garbage collector really aborted
22 - corrupt a key Success 0.204
System.out »
expecting success: 
    test -e "$LEAF2FILE" &&
    dd if=/dev/zero of="$LEAF2FILE" count=1 bs=100 conv=notrunc
  
ok 22 - corrupt a key
System.err »
1+0 records in
1+0 records out
100 bytes copied, 0.152018 s, 0.7 kB/s
23 - 'ipfs repo gc' should abort with two errors Success 0.697
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "could not retrieve links for $LEAF2" repo_gc_out &&
    grep -q "aborted" repo_gc_out
  
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c; could not retrieve links for QmPvtiBLgwuwF2wyf9VL8PaYgSt1XwGJ2Yu4AscRGEQvqR: proto: invalid field number; garbage collection aborted: could not retrieve some links
ok 23 - 'ipfs repo gc' should abort with two errors
24 - 'ipfs repo gc --stream-errors' should abort and report each error separately Success 0.963
System.out »
expecting success: 
    test_must_fail ipfs repo gc --stream-errors 2>&1 | tee repo_gc_out &&
    grep -q "Error: could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "Error: could not retrieve links for $LEAF2" repo_gc_out &&
    grep -q "Error: garbage collection aborted" repo_gc_out
  
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c
Error: could not retrieve links for QmPvtiBLgwuwF2wyf9VL8PaYgSt1XwGJ2Yu4AscRGEQvqR: proto: invalid field number
Error: garbage collection aborted: could not retrieve some links
Error: encountered errors during gc run
ok 24 - 'ipfs repo gc --stream-errors' should abort and report each error separately
25 - unpin 1MB file Success 0.461
System.out »
expecting success: 
    ipfs pin rm $HASH2
  
unpinned QmZY24xjsqiNTnPmrsLjjboDvKgthqFVH4eyJtftSnbZFJ
ok 25 - unpin 1MB file
26 - 'ipfs repo gc' should be fine now Success 1.847
System.out »
expecting success: 
    ipfs repo gc | tee repo_gc_out &&
    grep -q "removed $(to_raw_cid $HASH2)" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF2)" repo_gc_out
  
removed bafkreiaxufcajqupzud24iye4qfclc5d5nh33nqpvrchq7gcsv7uanbiwq
removed bafkreiawgizm3nb7wgnvopkjxatm55pfoslj35vatbf6gc653flfp3kcqy
removed bafkreigop5inketcgj5ywpeurfgi7ynft2rfi63kzipldfs4glmp4hi4sq
removed bafkreibjt7swxpfaivfkfbtyu2rbftlnoahiljvjmnoirxfvjuhtt5bhpu
removed bafkreievaliwd45bdugybeuzkbaacewn77r6ghsa5wivprjrmpytub66ie
removed bafkreifglimk76oyrmuywemcmsz5gexrrzeubffxyey3rfbnx53yczd4hu
removed bafkreibbxqw6jmdt6qznwko7cqeoszggauzgklqqb3p5ch7lzdsaoqm6wi
removed bafkreigugrmsk2y65u23d3g7v6cuwq6tsjfize4f5dwz7wdoeecpjumena
removed bafkreiefz6tgo776qz47u5ec5wfwiokhaaia5v6l7iouixe7cytcnb5q3i
ok 26 - 'ipfs repo gc' should be fine now
27 - 'ipfs daemon' succeeds Success 0.010
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 27 - 'ipfs daemon' succeeds
28 - api file shows up Success 0.416
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 28 - api file shows up
29 - set up address variables Success 0.326
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 29 - set up address variables
30 - 'ipfs daemon' is ready Success 0.017
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 30 - 'ipfs daemon' is ready
31 - add a 1MB file with --raw-leaves Success 0.530
System.out »
expecting success: 
    random-data -size=1048576 -seed=56 > afile &&
    HASH1=`ipfs add --raw-leaves -q --cid-version 1 afile` &&
    REFS=`ipfs refs -r $HASH1` &&
    read LEAF1 LEAF2 LEAF3 LEAF4 < <(echo $REFS)
  
ok 31 - add a 1MB file with --raw-leaves
32 - find data blocks for added file Success 0.281
System.out »
expecting success: 
    HASH1MH=`cid-fmt -b base32 "%M" $HASH1` &&
    LEAF1MH=`cid-fmt -b base32 "%M" $LEAF1` &&
    LEAF2MH=`cid-fmt -b base32 "%M" $LEAF2` &&
    HASH1FILE=`find .ipfs/blocks -type f | grep -i $HASH1MH` &&
    LEAF1FILE=`find .ipfs/blocks -type f | grep -i $LEAF1MH` &&
    LEAF2FILE=`find .ipfs/blocks -type f | grep -i $LEAF2MH`
  
ok 32 - find data blocks for added file
33 - remove a leaf node from the repo manually Success 0.073
System.out »
expecting success: 
    rm "$LEAF1FILE"
  
ok 33 - remove a leaf node from the repo manually
34 - check that the node is removed Success 0.123
System.out »
expecting success: 
   test_must_fail ipfs cat $HASH1
 
ok 34 - check that the node is removed
System.err »
Error: failed to fetch all nodes
35 - 'ipfs repo gc' should still be fine Success 0.399
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreiben3q7rordwfkq5ddu3p5iyptjtcgunjwwjomc6vuwtppk6cze6y
ok 35 - 'ipfs repo gc' should still be fine
36 - corrupt the root node of 1MB file Success 0.066
System.out »
expecting success: 
    test -e "$HASH1FILE" &&
    dd if=/dev/zero of="$HASH1FILE" count=1 bs=100 conv=notrunc
  
ok 36 - corrupt the root node of 1MB file
System.err »
1+0 records in
1+0 records out
100 bytes copied, 0.0431483 s, 2.3 kB/s
37 - 'ipfs repo gc' should abort without removing anything Success 1.522
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee gc_err &&
    grep -q "could not retrieve links for $HASH1" gc_err &&
    grep -q "aborted" gc_err
  
Error: could not retrieve links for bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a: proto: invalid field number; garbage collection aborted: could not retrieve some links
ok 37 - 'ipfs repo gc' should abort without removing anything
38 - leaf nodes were not removed after gc Success 1.027
System.out »
expecting success: 
    ipfs cat $LEAF3 > /dev/null &&
    ipfs cat $LEAF4 > /dev/null
  
ok 38 - leaf nodes were not removed after gc
39 - unpin the 1MB file Success 0.990
System.out »
expecting success: 
    ipfs pin rm $HASH1
  
unpinned bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
ok 39 - unpin the 1MB file
40 - create a permission problem Success 0.345
System.out »
expecting success: 
    chmod 500 `dirname "$LEAF2FILE"` &&
    test_must_fail ipfs block rm $LEAF2 2>&1 | tee block_rm_err &&
    grep -q "permission denied" block_rm_err
  
cannot remove bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq: remove /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/.ipfs/blocks/QF/CIQHV4VPMAGFTNIELRC63U2DPLFSAZ5EN7PHS74D43QOBUNAY4MKQFA.data: permission denied
Error: some blocks not removed
ok 40 - create a permission problem
41 - 'ipfs repo gc' should still run and remove as much as possible Success 1.574
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not remove $LEAF2" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF3)" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF4)" repo_gc_out &&
    test_must_fail ipfs block stat $HASH1
  
removed bafkreidfwozfuiz6hl5vgzeoxhoccjgy6kis3du2ymrlpbkgr7icum7wre
removed bafkreibqnsc66tqshbe23av245ozb4x7gyzvfmxmuy7t64furrqmxwmuom
removed bafkreiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
Error: could not remove bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq: remove /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0087-repo-robust-gc.sh/.ipfs/blocks/QF/CIQHV4VPMAGFTNIELRC63U2DPLFSAZ5EN7PHS74D43QOBUNAY4MKQFA.data: permission denied; garbage collection incomplete: could not delete some blocks
ok 41 - 'ipfs repo gc' should still run and remove as much as possible
System.err »
Error: block was not found locally (offline): ipld: could not find bafybeiezjfwfuqh3ycxnprbpeyllhiqgtigociuzdtri74gyngdybndw6a
42 - fix the permission problem Success 0.061
System.out »
expecting success: 
    chmod 700 `dirname "$LEAF2FILE"`
  
ok 42 - fix the permission problem
43 - 'ipfs repo gc' should be ok now Success 0.343
System.out »
expecting success: 
    ipfs repo gc | tee repo_gc_out
    grep -q "removed $(to_raw_cid $LEAF2)" repo_gc_out
  
removed bafkreid26kxwadczwucfyrpn2nbxvszam6sg7xtzp6b6nyha2gqmogficq
ok 43 - 'ipfs repo gc' should be ok now
44 - add 1MB file normally (i.e., without raw leaves) Success 0.160
System.out »
expecting success: 
    random-data -size=1048576 -seed=56 > afile &&
    HASH2=`ipfs add -q afile`
  
ok 44 - add 1MB file normally (i.e., without raw leaves)
45 - add some additional unpinned content Success 0.283
System.out »
expecting success: 
    random-data -size=1000 -seed=3 > junk1 &&
    random-data -size=1000 -seed=4 > junk2 &&
    JUNK1=`ipfs add --pin=false -q junk1` &&
    JUNK2=`ipfs add --pin=false -q junk2`
  
ok 45 - add some additional unpinned content
46 - remove a leaf node from the repo manually Success 0.006
System.out »
expecting success: 
    rm "$LEAF1FILE"
  
ok 46 - remove a leaf node from the repo manually
47 - 'ipfs repo gc' should abort Success 0.085
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "aborted" repo_gc_out
  
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c; garbage collection aborted: could not retrieve some links
ok 47 - 'ipfs repo gc' should abort
48 - test that garbage collector really aborted Success 0.175
System.out »
expecting success: 
    ipfs cat $JUNK1 > /dev/null &&
    ipfs cat $JUNK2 > /dev/null 
  
ok 48 - test that garbage collector really aborted
49 - corrupt a key Success 0.006
System.out »
expecting success: 
    test -e "$LEAF2FILE" &&
    dd if=/dev/zero of="$LEAF2FILE" count=1 bs=100 conv=notrunc
  
ok 49 - corrupt a key
System.err »
1+0 records in
1+0 records out
100 bytes copied, 2.9293e-05 s, 3.4 MB/s
50 - 'ipfs repo gc' should abort with two errors Success 0.092
System.out »
expecting success: 
    test_must_fail ipfs repo gc 2>&1 | tee repo_gc_out &&
    grep -q "could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "could not retrieve links for $LEAF2" repo_gc_out &&
    grep -q "aborted" repo_gc_out
  
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c; could not retrieve links for QmPvtiBLgwuwF2wyf9VL8PaYgSt1XwGJ2Yu4AscRGEQvqR: proto: invalid field number; garbage collection aborted: could not retrieve some links
ok 50 - 'ipfs repo gc' should abort with two errors
51 - 'ipfs repo gc --stream-errors' should abort and report each error separately Success 0.078
System.out »
expecting success: 
    test_must_fail ipfs repo gc --stream-errors 2>&1 | tee repo_gc_out &&
    grep -q "Error: could not retrieve links for $LEAF1" repo_gc_out &&
    grep -q "Error: could not retrieve links for $LEAF2" repo_gc_out &&
    grep -q "Error: garbage collection aborted" repo_gc_out
  
Error: could not retrieve links for QmPvtiBLgwuwF2wyf9VL8PaYgSt1XwGJ2Yu4AscRGEQvqR: proto: invalid field number
Error: could not retrieve links for QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c: block was not found locally (offline): ipld: could not find QmcNNR6JSCUhJ9nyoVQgBhABPgcgdsuYJgdSB1f2g6BF5c
Error: garbage collection aborted: could not retrieve some links
Error: encountered errors during gc run
ok 51 - 'ipfs repo gc --stream-errors' should abort and report each error separately
52 - unpin 1MB file Success 0.082
System.out »
expecting success: 
    ipfs pin rm $HASH2
  
unpinned QmZY24xjsqiNTnPmrsLjjboDvKgthqFVH4eyJtftSnbZFJ
ok 52 - unpin 1MB file
53 - 'ipfs repo gc' should be fine now Success 0.211
System.out »
expecting success: 
    ipfs repo gc | tee repo_gc_out &&
    grep -q "removed $(to_raw_cid $HASH2)" repo_gc_out &&
    grep -q "removed $(to_raw_cid $LEAF2)" repo_gc_out
  
removed bafkreiaxufcajqupzud24iye4qfclc5d5nh33nqpvrchq7gcsv7uanbiwq
removed bafkreiawgizm3nb7wgnvopkjxatm55pfoslj35vatbf6gc653flfp3kcqy
removed bafkreigop5inketcgj5ywpeurfgi7ynft2rfi63kzipldfs4glmp4hi4sq
removed bafkreibjt7swxpfaivfkfbtyu2rbftlnoahiljvjmnoirxfvjuhtt5bhpu
removed bafkreievaliwd45bdugybeuzkbaacewn77r6ghsa5wivprjrmpytub66ie
removed bafkreifglimk76oyrmuywemcmsz5gexrrzeubffxyey3rfbnx53yczd4hu
removed bafkreibbxqw6jmdt6qznwko7cqeoszggauzgklqqb3p5ch7lzdsaoqm6wi
removed bafkreigugrmsk2y65u23d3g7v6cuwq6tsjfize4f5dwz7wdoeecpjumena
removed bafkreiefz6tgo776qz47u5ec5wfwiokhaaia5v6l7iouixe7cytcnb5q3i
ok 53 - 'ipfs repo gc' should be fine now
54 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 54 - 'ipfs daemon' is still running
55 - 'ipfs daemon' can be killed Success 0.287
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 55 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - add a 1MB file with --raw-leaves
ok 5 - find data blocks for added file
ok 6 - remove a leaf node from the repo manually
ok 7 - check that the node is removed
ok 8 - 'ipfs repo gc' should still be fine
ok 9 - corrupt the root node of 1MB file
ok 10 - 'ipfs repo gc' should abort without removing anything
ok 11 - leaf nodes were not removed after gc
ok 12 - unpin the 1MB file
ok 13 - create a permission problem
ok 14 - 'ipfs repo gc' should still run and remove as much as possible
ok 15 - fix the permission problem
ok 16 - 'ipfs repo gc' should be ok now
ok 17 - add 1MB file normally (i.e., without raw leaves)
ok 18 - add some additional unpinned content
ok 19 - remove a leaf node from the repo manually
ok 20 - 'ipfs repo gc' should abort
ok 21 - test that garbage collector really aborted
ok 22 - corrupt a key
ok 23 - 'ipfs repo gc' should abort with two errors
ok 24 - 'ipfs repo gc --stream-errors' should abort and report each error separately
ok 25 - unpin 1MB file
ok 26 - 'ipfs repo gc' should be fine now
ok 27 - 'ipfs daemon' succeeds
ok 28 - api file shows up
ok 29 - set up address variables
ok 30 - 'ipfs daemon' is ready
ok 31 - add a 1MB file with --raw-leaves
ok 32 - find data blocks for added file
ok 33 - remove a leaf node from the repo manually
ok 34 - check that the node is removed
ok 35 - 'ipfs repo gc' should still be fine
ok 36 - corrupt the root node of 1MB file
ok 37 - 'ipfs repo gc' should abort without removing anything
ok 38 - leaf nodes were not removed after gc
ok 39 - unpin the 1MB file
ok 40 - create a permission problem
ok 41 - 'ipfs repo gc' should still run and remove as much as possible
ok 42 - fix the permission problem
ok 43 - 'ipfs repo gc' should be ok now
ok 44 - add 1MB file normally (i.e., without raw leaves)
ok 45 - add some additional unpinned content
ok 46 - remove a leaf node from the repo manually
ok 47 - 'ipfs repo gc' should abort
ok 48 - test that garbage collector really aborted
ok 49 - corrupt a key
ok 50 - 'ipfs repo gc' should abort with two errors
ok 51 - 'ipfs repo gc --stream-errors' should abort and report each error separately
ok 52 - unpin 1MB file
ok 53 - 'ipfs repo gc' should be fine now
ok 54 - 'ipfs daemon' is still running
ok 55 - 'ipfs daemon' can be killed

Back to top

TestCase t0088-repo-stat-symlink

Name Status Type Time(s)
1 - create symbolic link for IPFS_PATH Success 0.042
System.out »
expecting success: 
  mkdir sym_link_target &&
  ln -s sym_link_target .ipfs

ok 1 - create symbolic link for IPFS_PATH
2 - ipfs init succeeds Success 0.745
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 1.354
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 3.070
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0088-repo-stat-symlink.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0088-repo-stat-symlink.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0088-repo-stat-symlink.sh/mfs"
ok 4 - prepare config -- mounting
5 - 'ipfs repo stat' RepoSize is correct with sym link Success 1.154
System.out »
expecting success: 
  reposize_symlink=$(ipfs repo stat | grep RepoSize | awk '{ print $2 }') &&
  symlink_size=$(file_size .ipfs) &&
  test "${reposize_symlink}" -gt "${symlink_size}"

ok 5 - 'ipfs repo stat' RepoSize is correct with sym link
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - create symbolic link for IPFS_PATH
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - 'ipfs repo stat' RepoSize is correct with sym link

Back to top

TestCase t0090-get

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.538
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 1.291
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 5.129
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0090-get.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0090-get.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0090-get.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs get --help' succeeds Success 0.446
System.out »
expecting success: 
    ipfs get --help >actual
  
ok 4 - 'ipfs get --help' succeeds
5 - 'ipfs get --help' output looks good Success 0.009
System.out »
expecting success: 
    egrep "ipfs get.*<ipfs-path>" actual >/dev/null ||
    test_fsh cat actual
  
ok 5 - 'ipfs get --help' output looks good
6 - ipfs get succeeds Success 0.553
System.out »
expecting success: 
    echo "Hello Worlds!" >data &&
    HASH=`ipfs add -q data` &&
    ipfs get "$HASH" >actual
  
ok 6 - ipfs get succeeds
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
7 - ipfs get output looks good Success 0.009
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH" >expected &&
    test_cmp expected actual
  
ok 7 - ipfs get output looks good
8 - ipfs get file output looks good Success 0.006
System.out »
expecting success: 
    test_cmp "$HASH" data
  
ok 8 - ipfs get file output looks good
9 - ipfs get DOES NOT error when trying to overwrite a file Success 0.912
System.out »
expecting success: 
    ipfs get "$HASH" >actual &&
    rm "$HASH"
  
ok 9 - ipfs get DOES NOT error when trying to overwrite a file
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
10 - ipfs get works with raw leaves Success 2.004
System.out »
expecting success: 
  HASH2=$(ipfs add --raw-leaves -q data) &&
    ipfs get "$HASH2" >actual2
  
ok 10 - ipfs get works with raw leaves
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
11 - ipfs get output looks good Success 0.152
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH2" >expected2 &&
    test_cmp expected2 actual2
  
ok 11 - ipfs get output looks good
12 - ipfs get file output looks good Success 0.090
System.out »
expecting success: 
    test_cmp "$HASH2" data
  
ok 12 - ipfs get file output looks good
13 - ipfs get -a succeeds Success 0.395
System.out »
expecting success: 
    ipfs get "$HASH" -a >actual
  
ok 13 - ipfs get -a succeeds
System.err »
 0 B / 14 B    0.00%

 2.00 KiB / 14 B  14628.57% 0s
14 - ipfs get -a output looks good Success 0.008
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 14 - ipfs get -a output looks good
15 - ipfs get -a archive output is valid Success 0.013
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 15 - ipfs get -a archive output is valid
16 - ipfs get -a -C succeeds Success 0.664
System.out »
expecting success: 
    ipfs get "$HASH" -a -C >actual
  
ok 16 - ipfs get -a -C succeeds
System.err »
 0 B / 14 B    0.00%

 156 B / 14 B  1114.29% 0s
17 - ipfs get -a -C output looks good Success 0.054
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 17 - ipfs get -a -C output looks good
18 - ipfs get -a -C archive output is valid Success 0.011
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 18 - ipfs get -a -C archive output is valid
19 - ipfs get -a -C -l 9 succeeds Success 0.694
System.out »
expecting success: 
    ipfs get "$HASH" -a -C -l 9 >actual
  
ok 19 - ipfs get -a -C -l 9 succeeds
System.err »
 0 B / 14 B    0.00%

 155 B / 14 B  1107.14% 0s
20 - ipfs get -a -C -l 9 output looks good Success 0.008
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 20 - ipfs get -a -C -l 9 output looks good
21 - ipfs get -a -C -l 9 archive output is valid Success 0.111
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 21 - ipfs get -a -C -l 9 archive output is valid
22 - ipfs get succeeds (directory) Success 1.575
System.out »
expecting success: 
    mkdir -p dir &&
    touch dir/a &&
    mkdir -p dir/b &&
    echo "Hello, Worlds!" >dir/b/c &&
    HASH2=`ipfs add -r -Q dir` &&
    ipfs get "$HASH2" >actual
  
ok 22 - ipfs get succeeds (directory)
System.err »
 0 B / 166 B    0.00%
 166 B / 166 B  100.00% 0s
23 - ipfs get output looks good (directory) Success 0.084
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH2" >expected &&
    test_cmp expected actual
  
ok 23 - ipfs get output looks good (directory)
24 - ipfs get output is valid (directory) Success 0.085
System.out »
expecting success: 
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
ok 24 - ipfs get output is valid (directory)
25 - ipfs get with slash (directory) Success 0.977
System.out »
expecting success: 
    ipfs get "$HASH2/" &&
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
Saving file(s) to QmbiZReo9jpGMrVtNKNuNpLA5cLX3vj5F24wp3xemdzCAn
ok 25 - ipfs get with slash (directory)
System.err »
 0 B / 166 B    0.00%
 166 B / 166 B  100.00% 0s
26 - ipfs get -a -C succeeds (directory) Success 0.845
System.out »
expecting success: 
    ipfs get "$HASH2" -a -C >actual
  
ok 26 - ipfs get -a -C succeeds (directory)
System.err »
 0 B / 166 B    0.00%

 219 B / 166 B  131.93% 0s
27 - ipfs get -a -C output looks good (directory) Success 0.178
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH2.tar.gz" >expected &&
    test_cmp expected actual
  
ok 27 - ipfs get -a -C output looks good (directory)
28 - gzipped tar archive output is valid (directory) Success 0.045
System.out »
expecting success: 
    tar -zxf "$HASH2".tar.gz &&
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
ok 28 - gzipped tar archive output is valid (directory)
29 - ipfs get ../.. should fail Success 0.469
System.out »
expecting success: 
    test_must_fail ipfs get ../.. 2>actual &&
    test_should_contain "Error: invalid path \"../..\"" actual
  
ok 29 - ipfs get ../.. should fail
30 - create small file Success 0.320
System.out »
expecting success: 
    echo "foo" > small &&
    ipfs add -q small > hash_small
  
ok 30 - create small file
31 - get small file Success 0.131
System.out »
expecting success: 
    ipfs get -o out_small $(cat hash_small) &&
    test_cmp small out_small
  
Saving file(s) to out_small
ok 31 - get small file
System.err »
 0 B / 4 B    0.00%
 4 B / 4 B  100.00% 0s
32 - create medium file Success 0.202
System.out »
expecting success: 
    head -c 16000 > medium &&
    ipfs add -q medium > hash_medium
  
ok 32 - create medium file
33 - get medium file Success 0.132
System.out »
expecting success: 
    ipfs get -o out_medium $(cat hash_medium) &&
    test_cmp medium out_medium
  
Saving file(s) to out_medium
ok 33 - get medium file
System.err »
 0 B / ? 
 0 B / ?  0s
34 - create an object that has unresolvable links Success 0.114
System.out »
expecting success: 
    cat <<-\EOF >bad_object &&
{"Data":{"/":{"bytes":"CAE"}},"Links":[{"Hash":{"/":"Qmd4mG6pDFDmDTn6p3hX1srP8qTbkyXKj5yjpEsiHDX3u8"},"Name":"bar","Tsize":56},{"Hash":{"/":"QmUTjwRnG28dSrFFVTYgbr6LiDLsBmRr2SaUSTGheK2YqG"},"Name":"baz","Tsize":24266},{"Hash":{"/":"QmZzaC6ydNXiR65W8VjGA73ET9MZ6VFAqUT1ngYMXcpihn"},"Name":"foo","Tsize":1897}]}
EOF
    cat bad_object | ipfs dag put --store-codec dag-pb > put_out
  
ok 34 - create an object that has unresolvable links
35 - output looks good Success 0.011
System.out »
expecting success: 
    echo "bafybeifrjjol3gixedca6etdwccnvwfvhurc4wb3i5mnk2rvwvyfcgwxd4" > put_exp &&
    test_cmp put_exp put_out
  
ok 35 - output looks good
36 - ipfs get fails Success 0.104
System.out »
expecting success: 
    test_expect_code 1 ipfs get QmaGidyrnX8FMbWJoxp8HVwZ1uRKwCyxBJzABnR1S2FVUr
  
Saving file(s) to QmaGidyrnX8FMbWJoxp8HVwZ1uRKwCyxBJzABnR1S2FVUr
ok 36 - ipfs get fails
System.err »
 0 B / 25.74 KiB    0.00%
 25.74 KiB / 25.74 KiB  100.00% 0s
Error: block was not found locally (offline): ipld: could not find Qmd4mG6pDFDmDTn6p3hX1srP8qTbkyXKj5yjpEsiHDX3u8
37 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 37 - 'ipfs daemon' succeeds
38 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 38 - api file shows up
39 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 39 - set up address variables
40 - get swarm addresses Success 0.077
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 40 - get swarm addresses
41 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 41 - set swarm address vars
42 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 42 - 'ipfs daemon' is ready
43 - 'ipfs get --help' succeeds Success 0.078
System.out »
expecting success: 
    ipfs get --help >actual
  
ok 43 - 'ipfs get --help' succeeds
44 - 'ipfs get --help' output looks good Success 0.007
System.out »
expecting success: 
    egrep "ipfs get.*<ipfs-path>" actual >/dev/null ||
    test_fsh cat actual
  
ok 44 - 'ipfs get --help' output looks good
45 - ipfs get succeeds Success 0.143
System.out »
expecting success: 
    echo "Hello Worlds!" >data &&
    HASH=`ipfs add -q data` &&
    ipfs get "$HASH" >actual
  
ok 45 - ipfs get succeeds
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
46 - ipfs get output looks good Success 0.005
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH" >expected &&
    test_cmp expected actual
  
ok 46 - ipfs get output looks good
47 - ipfs get file output looks good Success 0.006
System.out »
expecting success: 
    test_cmp "$HASH" data
  
ok 47 - ipfs get file output looks good
48 - ipfs get DOES NOT error when trying to overwrite a file Success 0.078
System.out »
expecting success: 
    ipfs get "$HASH" >actual &&
    rm "$HASH"
  
ok 48 - ipfs get DOES NOT error when trying to overwrite a file
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
49 - ipfs get works with raw leaves Success 0.208
System.out »
expecting success: 
  HASH2=$(ipfs add --raw-leaves -q data) &&
    ipfs get "$HASH2" >actual2
  
ok 49 - ipfs get works with raw leaves
System.err »
 0 B / 14 B    0.00%
 14 B / 14 B  100.00% 0s
50 - ipfs get output looks good Success 0.006
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH2" >expected2 &&
    test_cmp expected2 actual2
  
ok 50 - ipfs get output looks good
51 - ipfs get file output looks good Success 0.006
System.out »
expecting success: 
    test_cmp "$HASH2" data
  
ok 51 - ipfs get file output looks good
52 - ipfs get -a succeeds Success 0.089
System.out »
expecting success: 
    ipfs get "$HASH" -a >actual
  
ok 52 - ipfs get -a succeeds
System.err »
 0 B / 14 B    0.00%

 2.00 KiB / 14 B  14628.57% 0s
53 - ipfs get -a output looks good Success 0.006
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 53 - ipfs get -a output looks good
54 - ipfs get -a archive output is valid Success 0.009
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 54 - ipfs get -a archive output is valid
55 - ipfs get -a -C succeeds Success 0.072
System.out »
expecting success: 
    ipfs get "$HASH" -a -C >actual
  
ok 55 - ipfs get -a -C succeeds
System.err »
 0 B / 14 B    0.00%

 158 B / 14 B  1128.57% 0s
56 - ipfs get -a -C output looks good Success 0.008
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 56 - ipfs get -a -C output looks good
57 - ipfs get -a -C archive output is valid Success 0.011
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 57 - ipfs get -a -C archive output is valid
System.err »
tar: QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH: time stamp 2026-02-27 18:13:33 is 0.350106478 s in the future
58 - ipfs get -a -C -l 9 succeeds Success 0.085
System.out »
expecting success: 
    ipfs get "$HASH" -a -C -l 9 >actual
  
ok 58 - ipfs get -a -C -l 9 succeeds
System.err »
 0 B / 14 B    0.00%

 155 B / 14 B  1107.14% 0s
59 - ipfs get -a -C -l 9 output looks good Success 0.007
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH$ext" >expected &&
    test_cmp expected actual
  
ok 59 - ipfs get -a -C -l 9 output looks good
60 - ipfs get -a -C -l 9 archive output is valid Success 0.010
System.out »
expecting success: 
    tar "$tar_flag" "$HASH$ext" &&
    test_cmp "$HASH" data &&
    rm "$HASH$ext" &&
    rm "$HASH"
  
ok 60 - ipfs get -a -C -l 9 archive output is valid
System.err »
tar: QmVr26fY1tKyspEJBniVhqxQeEjhF78XerGiqWAwraVLQH: time stamp 2026-02-27 18:13:33 is 0.160914601 s in the future
61 - ipfs get succeeds (directory) Success 0.156
System.out »
expecting success: 
    mkdir -p dir &&
    touch dir/a &&
    mkdir -p dir/b &&
    echo "Hello, Worlds!" >dir/b/c &&
    HASH2=`ipfs add -r -Q dir` &&
    ipfs get "$HASH2" >actual
  
ok 61 - ipfs get succeeds (directory)
System.err »
 0 B / 166 B    0.00%
 166 B / 166 B  100.00% 0s
62 - ipfs get output looks good (directory) Success 0.008
System.out »
expecting success: 
    printf "%s\n" "Saving file(s) to $HASH2" >expected &&
    test_cmp expected actual
  
ok 62 - ipfs get output looks good (directory)
63 - ipfs get output is valid (directory) Success 0.008
System.out »
expecting success: 
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
ok 63 - ipfs get output is valid (directory)
64 - ipfs get with slash (directory) Success 0.071
System.out »
expecting success: 
    ipfs get "$HASH2/" &&
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
Saving file(s) to QmbiZReo9jpGMrVtNKNuNpLA5cLX3vj5F24wp3xemdzCAn
ok 64 - ipfs get with slash (directory)
System.err »
 0 B / 166 B    0.00%
 166 B / 166 B  100.00% 0s
65 - ipfs get -a -C succeeds (directory) Success 0.069
System.out »
expecting success: 
    ipfs get "$HASH2" -a -C >actual
  
ok 65 - ipfs get -a -C succeeds (directory)
System.err »
 0 B / 166 B    0.00%

 218 B / 166 B  131.33% 0s
66 - ipfs get -a -C output looks good (directory) Success 0.006
System.out »
expecting success: 
    printf "%s\n" "Saving archive to $HASH2.tar.gz" >expected &&
    test_cmp expected actual
  
ok 66 - ipfs get -a -C output looks good (directory)
67 - gzipped tar archive output is valid (directory) Success 0.011
System.out »
expecting success: 
    tar -zxf "$HASH2".tar.gz &&
    test_cmp dir/a "$HASH2"/a &&
    test_cmp dir/b/c "$HASH2"/b/c &&
    rm -r "$HASH2"
  
ok 67 - gzipped tar archive output is valid (directory)
68 - ipfs get ../.. should fail Success 0.073
System.out »
expecting success: 
    test_must_fail ipfs get ../.. 2>actual &&
    test_should_contain "Error: invalid path \"../..\"" actual
  
ok 68 - ipfs get ../.. should fail
69 - create small file Success 0.073
System.out »
expecting success: 
    echo "foo" > small &&
    ipfs add -q small > hash_small
  
ok 69 - create small file
70 - get small file Success 0.065
System.out »
expecting success: 
    ipfs get -o out_small $(cat hash_small) &&
    test_cmp small out_small
  
Saving file(s) to out_small
ok 70 - get small file
System.err »
 0 B / 4 B    0.00%
 4 B / 4 B  100.00% 0s
71 - create medium file Success 0.083
System.out »
expecting success: 
    head -c 16000 > medium &&
    ipfs add -q medium > hash_medium
  
ok 71 - create medium file
72 - get medium file Success 0.069
System.out »
expecting success: 
    ipfs get -o out_medium $(cat hash_medium) &&
    test_cmp medium out_medium
  
Saving file(s) to out_medium
ok 72 - get medium file
System.err »
 0 B / ? 
 0 B / ?  0s
73 - empty request to get doesn't panic and returns error Success 0.014
System.out »
expecting success: 
  curl -X POST "http://$API_ADDR/api/v0/get" > curl_out || true &&
    grep "argument \"ipfs-path\" is required" curl_out

argument "ipfs-path" is required
ok 73 - empty request to get doesn't panic and returns error
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    33  100    33    0     0  51083      0 --:--:-- --:--:-- --:--:-- 33000
74 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 74 - 'ipfs daemon' is still running
75 - 'ipfs daemon' can be killed Success 0.259
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 75 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs get --help' succeeds
ok 5 - 'ipfs get --help' output looks good
ok 6 - ipfs get succeeds
ok 7 - ipfs get output looks good
ok 8 - ipfs get file output looks good
ok 9 - ipfs get DOES NOT error when trying to overwrite a file
ok 10 - ipfs get works with raw leaves
ok 11 - ipfs get output looks good
ok 12 - ipfs get file output looks good
ok 13 - ipfs get -a succeeds
ok 14 - ipfs get -a output looks good
ok 15 - ipfs get -a archive output is valid
ok 16 - ipfs get -a -C succeeds
ok 17 - ipfs get -a -C output looks good
ok 18 - ipfs get -a -C archive output is valid
ok 19 - ipfs get -a -C -l 9 succeeds
ok 20 - ipfs get -a -C -l 9 output looks good
ok 21 - ipfs get -a -C -l 9 archive output is valid
ok 22 - ipfs get succeeds (directory)
ok 23 - ipfs get output looks good (directory)
ok 24 - ipfs get output is valid (directory)
ok 25 - ipfs get with slash (directory)
ok 26 - ipfs get -a -C succeeds (directory)
ok 27 - ipfs get -a -C output looks good (directory)
ok 28 - gzipped tar archive output is valid (directory)
ok 29 - ipfs get ../.. should fail
ok 30 - create small file
ok 31 - get small file
ok 32 - create medium file
ok 33 - get medium file
ok 34 - create an object that has unresolvable links
ok 35 - output looks good
ok 36 - ipfs get fails
ok 37 - 'ipfs daemon' succeeds
ok 38 - api file shows up
ok 39 - set up address variables
ok 40 - get swarm addresses
ok 41 - set swarm address vars
ok 42 - 'ipfs daemon' is ready
ok 43 - 'ipfs get --help' succeeds
ok 44 - 'ipfs get --help' output looks good
ok 45 - ipfs get succeeds
ok 46 - ipfs get output looks good
ok 47 - ipfs get file output looks good
ok 48 - ipfs get DOES NOT error when trying to overwrite a file
ok 49 - ipfs get works with raw leaves
ok 50 - ipfs get output looks good
ok 51 - ipfs get file output looks good
ok 52 - ipfs get -a succeeds
ok 53 - ipfs get -a output looks good
ok 54 - ipfs get -a archive output is valid
ok 55 - ipfs get -a -C succeeds
ok 56 - ipfs get -a -C output looks good
ok 57 - ipfs get -a -C archive output is valid
ok 58 - ipfs get -a -C -l 9 succeeds
ok 59 - ipfs get -a -C -l 9 output looks good
ok 60 - ipfs get -a -C -l 9 archive output is valid
ok 61 - ipfs get succeeds (directory)
ok 62 - ipfs get output looks good (directory)
ok 63 - ipfs get output is valid (directory)
ok 64 - ipfs get with slash (directory)
ok 65 - ipfs get -a -C succeeds (directory)
ok 66 - ipfs get -a -C output looks good (directory)
ok 67 - gzipped tar archive output is valid (directory)
ok 68 - ipfs get ../.. should fail
ok 69 - create small file
ok 70 - get small file
ok 71 - create medium file
ok 72 - get medium file
ok 73 - empty request to get doesn't panic and returns error
ok 74 - 'ipfs daemon' is still running
ok 75 - 'ipfs daemon' can be killed

Back to top

TestCase t0095-refs

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.765
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 1.056
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 4.486
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0095-refs.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0095-refs.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0095-refs.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.164
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.006
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.031
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 7 - 'ipfs daemon' is ready
8 - create and add folders for refs Success 0.229
System.out »
expecting success: 
    mkdir -p A/B/D A/C/B/D A/D
    echo "1" > A/1.txt
    echo "1" > A/B/1.txt
    echo "1" > A/C/B/1.txt
    echo "2" > A/B/D/2.txt
    echo "2" > A/C/B/D/2.txt
    echo "2" > A/D/2.txt
    root=$(ipfs add -r -Q A)
    [[ "$root" == "$refsroot" ]]

ok 8 - create and add folders for refs
9 - ipfs refs -r Success 0.748
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF

    ipfs refs $ARGS -r $refsroot > refsr.txt
    test_cmp expected.txt refsr.txt
  
ok 9 - ipfs refs  -r
10 - ipfs refs -r --unique Success 0.443
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
EOF

    ipfs refs $ARGS -r --unique $refsroot > refsr.txt
    test_cmp expected.txt refsr.txt
  
ok 10 - ipfs refs  -r --unique
11 - ipfs refs Success 1.053
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
EOF
    ipfs refs $ARGS $refsroot > refs.txt
    test_cmp expected.txt refs.txt
  
ok 11 - ipfs refs 
12 - ipfs refs -r --max-depth=0 Success 0.559
System.out »
expecting success: 
    cat <<EOF > expected.txt
EOF
    ipfs refs $ARGS -r --max-depth=0 $refsroot > refs.txt
    test_cmp expected.txt refs.txt
  
ok 12 - ipfs refs  -r --max-depth=0
13 - ipfs refs -r --max-depth=1 Success 1.910
System.out »
expecting success: 
    ipfs refs $ARGS -r --max-depth=1 $refsroot > refsr.txt
    ipfs refs $ARGS $refsroot > refs.txt
    test_cmp refsr.txt refs.txt
  
ok 13 - ipfs refs  -r --max-depth=1
14 - ipfs refs -r --max-depth=2 Success 1.269
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF
    ipfs refs $ARGS -r --max-depth=2 $refsroot > refsr.txt
    test_cmp refsr.txt expected.txt
  
ok 14 - ipfs refs  -r --max-depth=2
15 - ipfs refs -r --unique --max-depth=2 Success 0.371
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF
    ipfs refs $ARGS -r --unique --max-depth=2 $refsroot > refsr.txt
    test_cmp refsr.txt expected.txt
  
ok 15 - ipfs refs  -r --unique --max-depth=2
16 - ipfs refs --cid-base=base32 -r Success 0.635
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF

    ipfs refs $ARGS -r $refsroot > refsr.txt
    test_cmp expected.txt refsr.txt
  
ok 16 - ipfs refs --cid-base=base32 -r
17 - ipfs refs --cid-base=base32 -r --unique Success 0.414
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
EOF

    ipfs refs $ARGS -r --unique $refsroot > refsr.txt
    test_cmp expected.txt refsr.txt
  
ok 17 - ipfs refs --cid-base=base32 -r --unique
18 - ipfs refs --cid-base=base32 Success 0.398
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
EOF
    ipfs refs $ARGS $refsroot > refs.txt
    test_cmp expected.txt refs.txt
  
ok 18 - ipfs refs --cid-base=base32
19 - ipfs refs --cid-base=base32 -r --max-depth=0 Success 0.152
System.out »
expecting success: 
    cat <<EOF > expected.txt
EOF
    ipfs refs $ARGS -r --max-depth=0 $refsroot > refs.txt
    test_cmp expected.txt refs.txt
  
ok 19 - ipfs refs --cid-base=base32 -r --max-depth=0
20 - ipfs refs --cid-base=base32 -r --max-depth=1 Success 0.274
System.out »
expecting success: 
    ipfs refs $ARGS -r --max-depth=1 $refsroot > refsr.txt
    ipfs refs $ARGS $refsroot > refs.txt
    test_cmp refsr.txt refs.txt
  
ok 20 - ipfs refs --cid-base=base32 -r --max-depth=1
21 - ipfs refs --cid-base=base32 -r --max-depth=2 Success 0.173
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF
    ipfs refs $ARGS -r --max-depth=2 $refsroot > refsr.txt
    test_cmp refsr.txt expected.txt
  
ok 21 - ipfs refs --cid-base=base32 -r --max-depth=2
22 - ipfs refs --cid-base=base32 -r --unique --max-depth=2 Success 0.184
System.out »
expecting success: 
    cat <<EOF | $FILTER > expected.txt
QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
QmNkQvpiyAEtbeLviC7kqfifYoK1GXPcsSxTpP1yS3ykLa
QmSanP5DpxpqfDdS4yekHY1MqrVge47gtxQcp2e2yZ4UwS
QmXXazTjeNCKFnpW1D65vTKsTs8fbgkCWTv8Em4pdK2coH
QmSFxnK675wQ9Kc1uqWKyJUaNxvSc2BP5DbXCD3x93oq61
EOF
    ipfs refs $ARGS -r --unique --max-depth=2 $refsroot > refsr.txt
    test_cmp refsr.txt expected.txt
  
ok 22 - ipfs refs --cid-base=base32 -r --unique --max-depth=2
23 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 23 - 'ipfs daemon' is still running
24 - 'ipfs daemon' can be killed Success 0.271
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 24 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - 'ipfs daemon' is ready
ok 8 - create and add folders for refs
ok 9 - ipfs refs  -r
ok 10 - ipfs refs  -r --unique
ok 11 - ipfs refs 
ok 12 - ipfs refs  -r --max-depth=0
ok 13 - ipfs refs  -r --max-depth=1
ok 14 - ipfs refs  -r --max-depth=2
ok 15 - ipfs refs  -r --unique --max-depth=2
ok 16 - ipfs refs --cid-base=base32 -r
ok 17 - ipfs refs --cid-base=base32 -r --unique
ok 18 - ipfs refs --cid-base=base32
ok 19 - ipfs refs --cid-base=base32 -r --max-depth=0
ok 20 - ipfs refs --cid-base=base32 -r --max-depth=1
ok 21 - ipfs refs --cid-base=base32 -r --max-depth=2
ok 22 - ipfs refs --cid-base=base32 -r --unique --max-depth=2
ok 23 - 'ipfs daemon' is still running
ok 24 - 'ipfs daemon' can be killed

Back to top

TestCase t0101-iptb-name

Name Status Type Time(s)
1 - set up an iptb cluster Success 1.228
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $num_nodes -force -init

ok 1 - set up an iptb cluster
2 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.253
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
3 - start up nodes Success 0.461
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 3 - start up nodes
4 - connect nodes to each other Success 0.453
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 4 - connect nodes to each other
5 - node 0 is connected Success 0.076
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 5 - node 0 is connected
6 - node 1 is connected Success 0.076
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 1 is connected
7 - node 2 is connected Success 0.075
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 7 - node 2 is connected
8 - node 3 is connected Success 0.073
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 8 - node 3 is connected
9 - add an object on one node Success 0.070
System.out »
expecting success: 
  echo "ipns is super fun" > file &&
  HASH_FILE=$(ipfsi 1 add -q file)

ok 9 - add an object on one node
10 - publish that object as an ipns entry Success 0.082
System.out »
expecting success: 
  ipfsi 1 name publish $HASH_FILE

Published to k51qzi5uqu5dkoz9t4gevar4wt4c0c5zdhxjbfhv0jrm141g3yn5g8p2coimcr: /ipfs/QmRff6wJYmESAqgpUDVqKwYNNft17KeenXP9egojg1papb
ok 10 - publish that object as an ipns entry
11 - add an entry on another node pointing to that one Success 0.181
System.out »
expecting success: 
  NODE1_ID=$(iptb attr get 1 id) &&
  ipfsi 2 name publish /ipns/$NODE1_ID

Published to k51qzi5uqu5dh9lvey7jc6kkxglmrnzywmef7r85bxyb1celkabp2zlwa6zttw: /ipns/12D3KooWMzrULqHd5PyAsZpqzJ5FgQWTPdvBUNZpk9jzTBK22GGr
ok 11 - add an entry on another node pointing to that one
12 - cat that entry on a third node Success 0.095
System.out »
expecting success: 
  NODE2_ID=$(iptb attr get 2 id) &&
  ipfsi 3 cat /ipns/$NODE2_ID > output

ok 12 - cat that entry on a third node
13 - ensure output was the same Success 0.005
System.out »
expecting success: 
  test_cmp file output

ok 13 - ensure output was the same
14 - shut down iptb Success 0.025
System.out »
expecting success: 
  iptb stop

ok 14 - shut down iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - set up an iptb cluster
ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
ok 3 - start up nodes
ok 4 - connect nodes to each other
ok 5 - node 0 is connected
ok 6 - node 1 is connected
ok 7 - node 2 is connected
ok 8 - node 3 is connected
ok 9 - add an object on one node
ok 10 - publish that object as an ipns entry
ok 11 - add an entry on another node pointing to that one
ok 12 - cat that entry on a third node
ok 13 - ensure output was the same
ok 14 - shut down iptb

Back to top

TestCase t0109-gateway-web-_redirects

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.193
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.171
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.479
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0109-gateway-web-_redirects.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0109-gateway-web-_redirects.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0109-gateway-web-_redirects.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.025
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.066
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - Add the _redirects file test directory Success 0.087
System.out »
expecting success: 
  ipfs dag import --pin-roots ../t0109-gateway-web-_redirects-data/redirects.car

Pinned root	QmQyqMY5vUBSbSxyitJqthgwZunCQjDVtNd8ggVCxzuPQ4	success
ok 10 - Add the _redirects file test directory
11 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file Success 0.014
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/redirect-one" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /one.html" response

ok 11 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
12 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/301-redirect-one redirects with 301, per _redirects file Success 0.013
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/301-redirect-one" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /one.html" response

ok 12 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/301-redirect-one redirects with 301, per _redirects file
13 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/302-redirect-two redirects with 302, per _redirects file Success 0.015
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/302-redirect-two" > response &&
  test_should_contain "302 Found" response &&
  test_should_contain "Location: /two.html" response

ok 13 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/302-redirect-two redirects with 302, per _redirects file
14 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/200-index returns 200, per _redirects file Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/200-index" > response &&
  test_should_contain "my index" response &&
  test_should_contain "200 OK" response

ok 14 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/200-index returns 200, per _redirects file
15 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/posts/:year/:month/:day/:title redirects with 301 and placeholders, per _redirects file Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/posts/2022/01/01/hello-world" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /articles/2022/01/01/hello-world" response

ok 15 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/posts/:year/:month/:day/:title redirects with 301 and placeholders, per _redirects file
16 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/splat/one.html redirects with 301 and splat placeholder, per _redirects file Success 0.017
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/splat/one.html" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /redirected-splat/one.html" response

ok 16 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/splat/one.html redirects with 301 and splat placeholder, per _redirects file
17 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/not-found/has-no-redirects-entry returns custom 404, per _redirects file Success 0.019
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/not-found/has-no-redirects-entry" > response &&
  test_should_contain "404 Not Found" response &&
  test_should_contain "Cache-Control: public, max-age=29030400, immutable" response &&
  test_should_contain "Etag: \"$CUSTOM_4XX_CID\"" response &&
  test_should_contain "my 404" response

ok 17 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/not-found/has-no-redirects-entry returns custom 404, per _redirects file
18 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/gone/has-no-redirects-entry returns custom 410, per _redirects file Success 0.018
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/gone/has-no-redirects-entry" > response &&
  test_should_contain "410 Gone" response &&
  test_should_contain "Cache-Control: public, max-age=29030400, immutable" response &&
  test_should_contain "Etag: \"$CUSTOM_4XX_CID\"" response &&
  test_should_contain "my 410" response

ok 18 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/gone/has-no-redirects-entry returns custom 410, per _redirects file
19 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/unavail/has-no-redirects-entry returns custom 451, per _redirects file Success 0.019
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/unavail/has-no-redirects-entry" > response &&
  test_should_contain "451 Unavailable For Legal Reasons" response &&
  test_should_contain "Cache-Control: public, max-age=29030400, immutable" response &&
  test_should_contain "Etag: \"$CUSTOM_4XX_CID\"" response &&
  test_should_contain "my 451" response

ok 19 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/unavail/has-no-redirects-entry returns custom 451, per _redirects file
20 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/catch-all returns 200, per _redirects file Success 0.017
System.out »
expecting success: 
  curl -sD - --resolve $REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$REDIRECTS_DIR_HOSTNAME/catch-all" > response &&
  test_should_contain "200 OK" response &&
  test_should_contain "my index" response

ok 20 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/catch-all returns 200, per _redirects file
21 - request for http://127.0.0.1:33189/ipfs/QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj/301-redirect-one returns generic 404 (no custom 404 from _redirects since no origin isolation) Success 0.016
System.out »
expecting success: 
  curl -sD - "http://127.0.0.1:$GWAY_PORT/ipfs/$REDIRECTS_DIR_CID/301-redirect-one" > response &&
  test_should_contain "404 Not Found" response &&
  test_should_not_contain "my 404" response

ok 21 - request for http://127.0.0.1:33189/ipfs/QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj/301-redirect-one returns generic 404 (no custom 404 from _redirects since no origin isolation)
22 - newline: _redirects has CRLF line terminators Success 0.090
System.out »
expecting success: 
  ipfs cat /ipfs/$NEWLINE_REDIRECTS_DIR_CID/_redirects | file - > response &&
  test_should_contain "with CRLF line terminators" response

ok 22 - newline: _redirects has CRLF line terminators
23 - newline: request for QmYzMrtPyBv7LKiEAGLLRPtvqm3SjQYLWxwWQ2vnpxQwRd.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $NEWLINE_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$NEWLINE_REDIRECTS_DIR_HOSTNAME/redirect-one" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /one.html" response

ok 23 - newline: request for QmYzMrtPyBv7LKiEAGLLRPtvqm3SjQYLWxwWQ2vnpxQwRd.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
24 - good codes: request for QmWHn2TunA1g7gQ7q9rwAoWuot2hMpojZ6cZ9ERsNKm5gE.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file Success 0.015
System.out »
expecting success: 
  curl -sD - --resolve $GOOD_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$GOOD_REDIRECTS_DIR_HOSTNAME/a301" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /b301" response

ok 24 - good codes: request for QmWHn2TunA1g7gQ7q9rwAoWuot2hMpojZ6cZ9ERsNKm5gE.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
25 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/not-found returns error about bad code Success 0.021
System.out »
expecting success: 
  curl -sD - --resolve $BAD_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$BAD_REDIRECTS_DIR_HOSTNAME/not-found" > response &&
  test_should_contain "500" response &&
  test_should_contain "status code 999 is not supported" response

ok 25 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/not-found returns error about bad code
26 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/found.html doesn't return error about bad code Success 0.017
System.out »
expecting success: 
  curl -sD - --resolve $BAD_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$BAD_REDIRECTS_DIR_HOSTNAME/found.html" > response &&
  test_should_contain "200" response &&
  test_should_contain "my found" response &&
  test_should_not_contain "unsupported redirect status" response

ok 26 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/found.html doesn't return error about bad code
27 - invalid file: request for QmRgpzYQESidTtTojN8zRWjiNs9Cy6o7KHRxh7kDpJm3KH.ipfs.localhost:33189/not-found returns error about invalid redirects file Success 0.015
System.out »
expecting success: 
  curl -sD - --resolve $INVALID_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$INVALID_REDIRECTS_DIR_HOSTNAME/not-found" > response &&
  test_should_contain "500" response &&
  test_should_contain "could not parse _redirects:" response

ok 27 - invalid file: request for QmRgpzYQESidTtTojN8zRWjiNs9Cy6o7KHRxh7kDpJm3KH.ipfs.localhost:33189/not-found returns error about invalid redirects file
28 - invalid file: request for QmU7ysGXwAtiV7aBarZASJsxKoKyKmd9Xrz2FFamSCbg8S.ipfs.localhost:33189/not-found returns error about invalid redirects file Success 0.013
System.out »
expecting success: 
  curl -sD - --resolve $INVALID_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$INVALID_REDIRECTS_DIR_HOSTNAME/not-found" > response &&
  test_should_contain "500" response &&
  test_should_contain "could not parse _redirects:" response &&
  test_should_contain "forced redirects (or \"shadowing\") are not supported" response

ok 28 - invalid file: request for QmU7ysGXwAtiV7aBarZASJsxKoKyKmd9Xrz2FFamSCbg8S.ipfs.localhost:33189/not-found returns error about invalid redirects file
29 - invalid file: request for QmQTfvjGmvTfxFpUcZNLdTLuKV227KJkGiN6xooHVeVZAS.ipfs.localhost:33189/not-found returns error about too large redirects file Success 0.020
System.out »
expecting success: 
  curl -sD - --resolve $TOO_LARGE_REDIRECTS_DIR_HOSTNAME:127.0.0.1 "http://$TOO_LARGE_REDIRECTS_DIR_HOSTNAME/not-found" > response &&
  test_should_contain "500" response &&
  test_should_contain "could not parse _redirects:" response &&
  test_should_contain "redirects file size cannot exceed" response

ok 29 - invalid file: request for QmQTfvjGmvTfxFpUcZNLdTLuKV227KJkGiN6xooHVeVZAS.ipfs.localhost:33189/not-found returns error about too large redirects file
30 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 30 - 'ipfs daemon' is still running
31 - 'ipfs daemon' can be killed Success 0.265
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 31 - 'ipfs daemon' can be killed
32 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 32 - 'ipfs daemon' succeeds
33 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 33 - api file shows up
34 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 34 - set up address variables
35 - get swarm addresses Success 0.068
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 35 - get swarm addresses
36 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 36 - set swarm address vars
37 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 37 - 'ipfs daemon' is ready
38 - spoofed DNSLink record resolves in cli Success 0.131
System.out »
expecting success: 
  ipfs resolve /ipns/dnslink-enabled-on-fqdn.example.org > result &&
  test_should_contain "QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj" result &&
  ipfs cat /ipns/dnslink-enabled-on-fqdn.example.org/_redirects > result &&
  test_should_contain "index.html" result

ok 38 - spoofed DNSLink record resolves in cli
39 - request for dnslink-enabled-on-fqdn.example.org/redirect-one redirects with default of 301, per _redirects file Success 0.015
System.out »
expecting success: 
  curl -sD - --resolve $DNSLINK_FQDN:$GWAY_PORT:127.0.0.1 "http://$DNSLINK_FQDN:$GWAY_PORT/redirect-one" > response &&
  test_should_contain "301 Moved Permanently" response &&
  test_should_contain "Location: /one.html" response

ok 39 - request for dnslink-enabled-on-fqdn.example.org/redirect-one redirects with default of 301, per _redirects file
40 - request for dnslink-enabled-on-fqdn.example.org/en/has-no-redirects-entry returns custom 404, per _redirects file Success 0.019
System.out »
expecting success: 
  curl -sD - --resolve $DNSLINK_FQDN:$GWAY_PORT:127.0.0.1 "http://$DNSLINK_FQDN:$GWAY_PORT/not-found/has-no-redirects-entry" > response &&
  test_should_contain "404 Not Found" response &&
  test_should_contain "Etag: \"Qmd9GD7Bauh6N2ZLfNnYS3b7QVAijbud83b8GE8LPMNBBP\"" response &&
  test_should_not_contain "Cache-Control: public, max-age=29030400, immutable" response &&
  test_should_not_contain "immutable" response &&
  test_should_contain "Date: " response &&
  test_should_contain "my 404" response

ok 40 - request for dnslink-enabled-on-fqdn.example.org/en/has-no-redirects-entry returns custom 404, per _redirects file
41 - request for dnslink-disabled-on-fqdn.example.com/redirect-one does not redirect, since DNSLink is disabled Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $NO_DNSLINK_FQDN:$GWAY_PORT:127.0.0.1 "http://$NO_DNSLINK_FQDN:$GWAY_PORT/redirect-one" > response &&
  test_should_not_contain "one.html" response &&
  test_should_not_contain "301 Moved Permanently" response &&
  test_should_not_contain "Location:" response

ok 41 - request for dnslink-disabled-on-fqdn.example.com/redirect-one does not redirect, since DNSLink is disabled
42 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 42 - 'ipfs daemon' is still running
43 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 43 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - Add the _redirects file test directory
ok 11 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
ok 12 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/301-redirect-one redirects with 301, per _redirects file
ok 13 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/302-redirect-two redirects with 302, per _redirects file
ok 14 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/200-index returns 200, per _redirects file
ok 15 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/posts/:year/:month/:day/:title redirects with 301 and placeholders, per _redirects file
ok 16 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/splat/one.html redirects with 301 and splat placeholder, per _redirects file
ok 17 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/not-found/has-no-redirects-entry returns custom 404, per _redirects file
ok 18 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/gone/has-no-redirects-entry returns custom 410, per _redirects file
ok 19 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/unavail/has-no-redirects-entry returns custom 451, per _redirects file
ok 20 - request for QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj.ipfs.localhost:33189/catch-all returns 200, per _redirects file
ok 21 - request for http://127.0.0.1:33189/ipfs/QmYBhLYDwVFvxos9h8CGU2ibaY66QNgv8hpfewxaQrPiZj/301-redirect-one returns generic 404 (no custom 404 from _redirects since no origin isolation)
ok 22 - newline: _redirects has CRLF line terminators
ok 23 - newline: request for QmYzMrtPyBv7LKiEAGLLRPtvqm3SjQYLWxwWQ2vnpxQwRd.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
ok 24 - good codes: request for QmWHn2TunA1g7gQ7q9rwAoWuot2hMpojZ6cZ9ERsNKm5gE.ipfs.localhost:33189/redirect-one redirects with default of 301, per _redirects file
ok 25 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/not-found returns error about bad code
ok 26 - bad codes: request for QmcBcFnKKqgpCVMxxGsriw9ByTVF6uDdKDMuEBq3m6f1bm.ipfs.localhost:33189/found.html doesn't return error about bad code
ok 27 - invalid file: request for QmRgpzYQESidTtTojN8zRWjiNs9Cy6o7KHRxh7kDpJm3KH.ipfs.localhost:33189/not-found returns error about invalid redirects file
ok 28 - invalid file: request for QmU7ysGXwAtiV7aBarZASJsxKoKyKmd9Xrz2FFamSCbg8S.ipfs.localhost:33189/not-found returns error about invalid redirects file
ok 29 - invalid file: request for QmQTfvjGmvTfxFpUcZNLdTLuKV227KJkGiN6xooHVeVZAS.ipfs.localhost:33189/not-found returns error about too large redirects file
ok 30 - 'ipfs daemon' is still running
ok 31 - 'ipfs daemon' can be killed
ok 32 - 'ipfs daemon' succeeds
ok 33 - api file shows up
ok 34 - set up address variables
ok 35 - get swarm addresses
ok 36 - set swarm address vars
ok 37 - 'ipfs daemon' is ready
ok 38 - spoofed DNSLink record resolves in cli
ok 39 - request for dnslink-enabled-on-fqdn.example.org/redirect-one redirects with default of 301, per _redirects file
ok 40 - request for dnslink-enabled-on-fqdn.example.org/en/has-no-redirects-entry returns custom 404, per _redirects file
ok 41 - request for dnslink-disabled-on-fqdn.example.com/redirect-one does not redirect, since DNSLink is disabled
ok 42 - 'ipfs daemon' is still running
ok 43 - 'ipfs daemon' can be killed

Back to top

TestCase t0112-gateway-cors

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.102
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.175
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.501
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0112-gateway-cors.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0112-gateway-cors.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0112-gateway-cors.sh/mfs"
ok 3 - prepare config -- mounting
4 - Default Gateway.HTTPHeaders is empty (implicit CORS values from boxo/gateway) Success 0.083
System.out »
expecting success: 
cat <<EOF > expected
{}
EOF
    ipfs config --json Gateway.HTTPHeaders > actual &&
    test_cmp expected actual

ok 4 - Default Gateway.HTTPHeaders is empty (implicit CORS values from boxo/gateway)
5 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.072
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - GET to Gateway succeeds Success 0.016
System.out »
expecting success: 
  curl -svX GET -H "Origin: https://example.com" "http://127.0.0.1:$GWAY_PORT/ipfs/$thash" >/dev/null 2>curl_output &&
  cat curl_output

*   Trying 127.0.0.1:38693...
* Connected to 127.0.0.1 (127.0.0.1) port 38693
> GET /ipfs/bafkqabtimvwgy3yk HTTP/1.1
> Host: 127.0.0.1:38693
> User-Agent: curl/8.5.0
> Accept: */*
> Origin: https://example.com
> 
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Cache-Control: public, max-age=29030400, immutable
< Content-Length: 6
< Content-Type: text/plain; charset=utf-8
< Etag: "bafkqabtimvwgy3yk"
< X-Ipfs-Path: /ipfs/bafkqabtimvwgy3yk
< X-Ipfs-Roots: bafkqabtimvwgy3yk
< Date: Fri, 27 Feb 2026 18:13:33 GMT
< 
{ [6 bytes data]
* Connection #0 to host 127.0.0.1 left intact
ok 11 - GET to Gateway succeeds
12 - GET response for Gateway resource looks good Success 0.023
System.out »
expecting success: 
  test_should_contain "< Access-Control-Allow-Origin: \*" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: GET" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: HEAD" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: OPTIONS" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: Content-Type" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: Range" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: User-Agent" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: X-Requested-With" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Range" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Length" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Chunked-Output" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Stream-Output" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output

ok 12 - GET response for Gateway resource looks good
13 - OPTIONS to Gateway succeeds Success 0.013
System.out »
expecting success: 
  curl -svX OPTIONS -H "Origin: https://example.com" "http://127.0.0.1:$GWAY_PORT/ipfs/$thash" 2>curl_output &&
  cat curl_output

*   Trying 127.0.0.1:38693...
* Connected to 127.0.0.1 (127.0.0.1) port 38693
> OPTIONS /ipfs/bafkqabtimvwgy3yk HTTP/1.1
> Host: 127.0.0.1:38693
> User-Agent: curl/8.5.0
> Accept: */*
> Origin: https://example.com
> 
< HTTP/1.1 200 OK
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Date: Fri, 27 Feb 2026 18:13:34 GMT
< Content-Length: 0
< 
* Connection #0 to host 127.0.0.1 left intact
ok 13 - OPTIONS to Gateway succeeds
14 - OPTIONS response for Gateway resource looks good Success 0.024
System.out »
expecting success: 
  test_should_contain "< Access-Control-Allow-Origin: \*" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: GET" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: HEAD" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: OPTIONS" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: Content-Type" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: Range" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: User-Agent" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: X-Requested-With" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Range" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Length" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Chunked-Output" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Stream-Output" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output

ok 14 - OPTIONS response for Gateway resource looks good
15 - OPTIONS to Gateway succeeds Success 0.015
System.out »
expecting success: 
  curl -svX OPTIONS -H "Origin: https://example.com" "http://localhost:$GWAY_PORT/ipfs/$thash" 2>curl_output &&
  cat curl_output

* Host localhost:38693 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:38693...
* connect to ::1 port 38693 from ::1 port 42812 failed: Connection refused
*   Trying 127.0.0.1:38693...
* Connected to localhost (127.0.0.1) port 38693
> OPTIONS /ipfs/bafkqabtimvwgy3yk HTTP/1.1
> Host: localhost:38693
> User-Agent: curl/8.5.0
> Accept: */*
> Origin: https://example.com
> 
< HTTP/1.1 301 Moved Permanently
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Location: http://bafkqabtimvwgy3yk.ipfs.localhost:38693/
< Date: Fri, 27 Feb 2026 18:13:34 GMT
< Content-Length: 0
< 
* Connection #0 to host localhost left intact
ok 15 - OPTIONS to Gateway succeeds
16 - OPTIONS response for subdomain redirect looks good Success 0.009
System.out »
expecting success: 
  test_should_contain "HTTP/1.1 301 Moved Permanently" curl_output &&
  test_should_contain "Location" curl_output &&
  test_should_contain "< Access-Control-Allow-Origin: \*" curl_output &&
  test_should_contain "< Access-Control-Allow-Methods: GET" curl_output

ok 16 - OPTIONS response for subdomain redirect looks good
17 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 17 - 'ipfs daemon' is still running
18 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 18 - 'ipfs daemon' can be killed
19 - Can configure gateway headers Success 0.230
System.out »
expecting success: 
  ipfs config --json Gateway.HTTPHeaders.Access-Control-Allow-Headers "[\"X-Custom1\"]" &&
  ipfs config --json Gateway.HTTPHeaders.Access-Control-Expose-Headers "[\"X-Custom2\"]" &&
  ipfs config --json Gateway.HTTPHeaders.Access-Control-Allow-Origin "[\"localhost\"]"

ok 19 - Can configure gateway headers
20 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 20 - 'ipfs daemon' succeeds
21 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 21 - api file shows up
22 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 22 - set up address variables
23 - get swarm addresses Success 0.074
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 23 - get swarm addresses
24 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 24 - set swarm address vars
25 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 25 - 'ipfs daemon' is ready
26 - OPTIONS to Gateway without custom headers succeeds Success 0.014
System.out »
expecting success: 
  curl -svX OPTIONS -H "Origin: https://example.com" "http://127.0.0.1:$GWAY_PORT/ipfs/$thash" 2>curl_output &&
  cat curl_output

*   Trying 127.0.0.1:38775...
* Connected to 127.0.0.1 (127.0.0.1) port 38775
> OPTIONS /ipfs/bafkqabtimvwgy3yk HTTP/1.1
> Host: 127.0.0.1:38775
> User-Agent: curl/8.5.0
> Accept: */*
> Origin: https://example.com
> 
< HTTP/1.1 200 OK
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Custom1
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: localhost
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Custom2
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Date: Fri, 27 Feb 2026 18:13:35 GMT
< Content-Length: 0
< 
* Connection #0 to host 127.0.0.1 left intact
ok 26 - OPTIONS to Gateway without custom headers succeeds
27 - Access-Control-Allow-Headers extends the implicit list Success 0.015
System.out »
expecting success: 
  test_should_contain "< Access-Control-Allow-Headers: Range" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: X-Custom1" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Range" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Length" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Path" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Ipfs-Roots" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Custom2" curl_output

ok 27 - Access-Control-Allow-Headers extends the implicit list
28 - OPTIONS to Gateway with a custom header succeeds Success 0.014
System.out »
expecting success: 
  curl -svX OPTIONS -H "Origin: https://example.com" -H "Access-Control-Request-Headers: X-Unexpected-Custom" "http://127.0.0.1:$GWAY_PORT/ipfs/$thash" 2>curl_output &&
  cat curl_output

*   Trying 127.0.0.1:38775...
* Connected to 127.0.0.1 (127.0.0.1) port 38775
> OPTIONS /ipfs/bafkqabtimvwgy3yk HTTP/1.1
> Host: 127.0.0.1:38775
> User-Agent: curl/8.5.0
> Accept: */*
> Origin: https://example.com
> Access-Control-Request-Headers: X-Unexpected-Custom
> 
< HTTP/1.1 200 OK
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Custom1
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: localhost
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Custom2
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Date: Fri, 27 Feb 2026 18:13:35 GMT
< Content-Length: 0
< 
* Connection #0 to host 127.0.0.1 left intact
ok 28 - OPTIONS to Gateway with a custom header succeeds
29 - Access-Control-Allow-Headers extends the implicit list Success 0.011
System.out »
expecting success: 
  test_should_not_contain "< Access-Control-Allow-Headers: X-Unexpected-Custom" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: Range" curl_output &&
  test_should_contain "< Access-Control-Allow-Headers: X-Custom1" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: Content-Range" curl_output &&
  test_should_contain "< Access-Control-Expose-Headers: X-Custom2" curl_output

ok 29 - Access-Control-Allow-Headers extends the implicit list
30 - Access-Control-Allow-Origin replaces the implicit list Success 0.006
System.out »
expecting success: 
  test_should_contain "< Access-Control-Allow-Origin: localhost" curl_output

ok 30 - Access-Control-Allow-Origin replaces the implicit list
31 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 31 - 'ipfs daemon' is still running
32 - 'ipfs daemon' can be killed Success 0.264
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 32 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - Default Gateway.HTTPHeaders is empty (implicit CORS values from boxo/gateway)
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - GET to Gateway succeeds
ok 12 - GET response for Gateway resource looks good
ok 13 - OPTIONS to Gateway succeeds
ok 14 - OPTIONS response for Gateway resource looks good
ok 15 - OPTIONS to Gateway succeeds
ok 16 - OPTIONS response for subdomain redirect looks good
ok 17 - 'ipfs daemon' is still running
ok 18 - 'ipfs daemon' can be killed
ok 19 - Can configure gateway headers
ok 20 - 'ipfs daemon' succeeds
ok 21 - api file shows up
ok 22 - set up address variables
ok 23 - get swarm addresses
ok 24 - set swarm address vars
ok 25 - 'ipfs daemon' is ready
ok 26 - OPTIONS to Gateway without custom headers succeeds
ok 27 - Access-Control-Allow-Headers extends the implicit list
ok 28 - OPTIONS to Gateway with a custom header succeeds
ok 29 - Access-Control-Allow-Headers extends the implicit list
ok 30 - Access-Control-Allow-Origin replaces the implicit list
ok 31 - 'ipfs daemon' is still running
ok 32 - 'ipfs daemon' can be killed

Back to top

TestCase t0114-gateway-subdomains

Name Status Type Time(s)
1 - ipfs init Success 0.137
System.out »
expecting success: 
  export IPFS_PATH="$(pwd)/.ipfs" &&
  ipfs init --profile=test > /dev/null

ok 1 - ipfs init
2 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 2 - 'ipfs daemon' succeeds
3 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 3 - api file shows up
4 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 4 - set up address variables
5 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 5 - 'ipfs daemon' is ready
6 - Add the test fixtures Success 0.188
System.out »
expecting success: 
  ipfs dag import --pin-roots ../t0114-gateway-subdomains/fixtures.car &&
  ipfs routing put --allow-offline /ipns/${RSA_KEY} ../t0114-gateway-subdomains/${RSA_KEY}.ipns-record &&
  ipfs routing put --allow-offline /ipns/${ED25519_KEY} ../t0114-gateway-subdomains/${ED25519_KEY}.ipns-record

Pinned root	QmVdhJY1a5XoPmaCgNTpPyArdgoUe36PbTAzp5W7x55iWg	success
QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3
12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d
ok 6 - Add the test fixtures
8 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
  test_kill_ipfs_daemon &&
  ipfs config --json Gateway.PublicGateways "{}" &&
  test_launch_ipfs_daemon_without_network

expecting success: 
    kill -0 $IPFS_PID
  
ok 8 - 'ipfs daemon' is still running
ok 8 - 'ipfs daemon' is still running
9 - 'ipfs daemon' can be killed Success 0.264
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 9 - 'ipfs daemon' can be killed
10 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 10 - 'ipfs daemon' succeeds
11 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 11 - api file shows up
12 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 12 - set up address variables
13 - start daemon with empty config for Gateway.PublicGateways Success 0.036
System.out »
ok 13 - start daemon with empty config for Gateway.PublicGateways
14 - request for 127.0.0.1/ipfs/{CID} stays on path (direct HTTP) Success 0.015
System.out »
expecting success: 
    curl -H "Host: 127.0.0.1:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 14 - request for 127.0.0.1/ipfs/{CID} stays on path (direct HTTP)
15 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy) Success 0.016
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve 127.0.0.1:35445:127.0.0.1 -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 15 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy)
16 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve 127.0.0.1:35445:127.0.0.1 -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 16 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy 1.0)
17 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: 127.0.0.1:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 17 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy tunneling)
18 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (direct HTTP) Success 0.013
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 18 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (direct HTTP)
19 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 19 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy)
20 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy 1.0) Success 0.015
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 20 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy 1.0)
21 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 21 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy tunneling)
22 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (direct HTTP) Success 0.013
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/" response
  
ok 22 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (direct HTTP)
23 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/" response
  
ok 23 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy)
24 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/" response
  
ok 24 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0)
25 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/" response
  
ok 25 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling)
26 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (direct HTTP) Success 0.015
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 26 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (direct HTTP)
27 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 27 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy)
28 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 28 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy 1.0)
29 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe" > response &&
    test_should_contain "301 Moved Permanently" response
  
ok 29 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy tunneling)
30 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe/" > response &&
    test_should_contain "Location: http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/" response
  
ok 30 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (direct HTTP)
31 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe/" > response &&
    test_should_contain "Location: http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/" response
  
ok 31 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy)
32 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe/" > response &&
    test_should_contain "Location: http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/" response
  
ok 32 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0)
33 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe/" > response &&
    test_should_contain "Location: http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/" response
  
ok 33 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling)
34 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (direct HTTP) Success 0.012
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain ">Moved Permanently</a>" response
  
ok 34 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (direct HTTP)
35 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain ">Moved Permanently</a>" response
  
ok 35 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy)
36 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy 1.0) Success 0.012
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain ">Moved Permanently</a>" response
  
ok 36 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy 1.0)
37 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy tunneling) Success 0.017
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain ">Moved Permanently</a>" response
  
ok 37 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy tunneling)
38 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "Location: http://bafybeiffndsajwhk3lwjewwdxqntmjm4b5wxaaanokonsggenkbw6slwk4.ipfs.localhost:35445/" response
  
ok 38 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (direct HTTP)
39 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy) Success 0.012
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "Location: http://bafybeiffndsajwhk3lwjewwdxqntmjm4b5wxaaanokonsggenkbw6slwk4.ipfs.localhost:35445/" response
  
ok 39 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy)
40 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy 1.0) Success 0.015
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "Location: http://bafybeiffndsajwhk3lwjewwdxqntmjm4b5wxaaanokonsggenkbw6slwk4.ipfs.localhost:35445/" response
  
ok 40 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy 1.0)
41 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "Location: http://bafybeiffndsajwhk3lwjewwdxqntmjm4b5wxaaanokonsggenkbw6slwk4.ipfs.localhost:35445/" response
  
ok 41 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy tunneling)
42 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP) Success 0.013
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 42 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP)
43 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 43 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy)
44 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 44 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0)
45 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 45 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling)
46 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP) Success 0.017
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 46 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP)
47 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 47 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy)
48 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0) Success 0.017
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 48 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0)
49 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling) Success 0.012
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 49 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling)
50 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en.wikipedia-on-ipfs.org.ipns.localhost:35445/wiki" response
  
ok 50 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (direct HTTP)
51 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en.wikipedia-on-ipfs.org.ipns.localhost:35445/wiki" response
  
ok 51 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy)
52 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve localhost:35445:127.0.0.1 -sD - "http://localhost:35445/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en.wikipedia-on-ipfs.org.ipns.localhost:35445/wiki" response
  
ok 52 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy 1.0)
53 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy tunneling) Success 0.013
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: localhost:35445" -sD - "http://127.0.0.1:35445/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en.wikipedia-on-ipfs.org.ipns.localhost:35445/wiki" response
  
ok 53 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy tunneling)
54 - request for {CID}.ipfs.localhost should return expected payload (direct HTTP) Success 0.019
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 54 - request for {CID}.ipfs.localhost should return expected payload (direct HTTP)
55 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 55 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy)
56 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 56 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy 1.0)
57 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy tunneling) Success 0.013
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 57 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy tunneling)
58 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (direct HTTP) Success 0.016
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 58 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (direct HTTP)
59 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 59 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy)
60 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 60 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy 1.0)
61 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy tunneling) Success 0.013
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 61 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy tunneling)
62 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (direct HTTP) Success 0.012
System.out »
expecting success: 
    curl -H "Host: bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/file.txt" > response &&
    test_should_contain "I am a txt file" response
  
ok 62 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (direct HTTP)
63 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/ipfs/file.txt" > response &&
    test_should_contain "I am a txt file" response
  
ok 63 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy)
64 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445:127.0.0.1 -sD - "http://bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445/ipfs/file.txt" > response &&
    test_should_contain "I am a txt file" response
  
ok 64 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy 1.0)
65 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: bafybeiht6dtwk3les7vqm6ibpvz6qpohidvlshsfyr7l5mpysdw2vmbbhe.ipfs.localhost:35445" -sD - "http://127.0.0.1:35445/ipfs/file.txt" > response &&
    test_should_contain "I am a txt file" response
  
ok 65 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy tunneling)
66 - valid file and subdirectory paths in directory listing at {cid}.ipfs.localhost Success 0.017
System.out »
expecting success: 
  curl -s --resolve $DIR_HOSTNAME:127.0.0.1 "http://$DIR_HOSTNAME" > list_response &&
  test_should_contain "<a href=\"/hello\">hello</a>" list_response &&
  test_should_contain "<a href=\"/ipfs\">ipfs</a>" list_response

ok 66 - valid file and subdirectory paths in directory listing at {cid}.ipfs.localhost
67 - valid parent directory path in directory listing at {cid}.ipfs.localhost/sub/dir Success 0.017
System.out »
expecting success: 
  curl -s --resolve $DIR_HOSTNAME:127.0.0.1 "http://$DIR_HOSTNAME/ipfs/ipns/" > list_response &&
  test_should_contain "<a href=\"/ipfs/ipns/..\">..</a>" list_response &&
  test_should_contain "<a href=\"/ipfs/ipns/bar\">bar</a>" list_response

ok 67 - valid parent directory path in directory listing at {cid}.ipfs.localhost/sub/dir
68 - request for deep path resource at {cid}.ipfs.localhost/sub/dir/file Success 0.016
System.out »
expecting success: 
  curl -s --resolve $DIR_HOSTNAME:127.0.0.1 "http://$DIR_HOSTNAME/ipfs/ipns/bar" > list_response &&
  test_should_contain "text-file-content" list_response

ok 68 - request for deep path resource at {cid}.ipfs.localhost/sub/dir/file
69 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP) Success 0.013
System.out »
expecting success: 
    curl -H "Host: k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 69 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP)
70 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445:127.0.0.1 -sD - "http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 70 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy)
71 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0) Success 0.018
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445:127.0.0.1 -sD - "http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 71 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0)
72 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling) Success 0.013
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 72 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling)
73 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP) Success 0.016
System.out »
expecting success: 
    curl -H "Host: k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 73 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP)
74 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy) Success 0.016
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445:127.0.0.1 -sD - "http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 74 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy)
75 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0) Success 0.015
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445:127.0.0.1 -sD - "http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445" > response &&
    test_should_contain "hello" response
  
ok 75 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0)
76 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "hello" response
  
ok 76 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling)
77 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 77 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP)
78 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445:127.0.0.1 -sD - "http://k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 78 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy)
79 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445:127.0.0.1 -sD - "http://k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 79 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0)
80 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling) Success 0.016
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.localhost:35445/" response
  
ok 80 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling)
81 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP) Success 0.015
System.out »
expecting success: 
    curl -H "Host: k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 81 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP)
82 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy) Success 0.016
System.out »
expecting success: 
    curl -x http://127.0.0.1:35445 --resolve k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445:127.0.0.1 -sD - "http://k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 82 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy)
83 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35445 --resolve k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445:127.0.0.1 -sD - "http://k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 83 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0)
84 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35445 -H "Host: k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.localhost:35445" -sD - "http://127.0.0.1:35445" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:35445/" response
  
ok 84 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling)
85 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 85 - 'ipfs daemon' is still running
86 - 'ipfs daemon' can be killed Success 0.255
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 86 - 'ipfs daemon' can be killed
87 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 87 - 'ipfs daemon' succeeds
88 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 88 - api file shows up
89 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 89 - set up address variables
90 - get swarm addresses Success 0.084
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 90 - get swarm addresses
91 - set swarm address vars Success 0.014
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 91 - set swarm address vars
92 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 92 - 'ipfs daemon' is ready
93 - request for {dnslink}.ipns.localhost returns expected payload (direct HTTP) Success 0.023
System.out »
expecting success: 
    curl -H "Host: dnslink-test.example.com.ipns.localhost:41371" -sD - "http://127.0.0.1:41371" > response &&
    test_should_contain "hello" response
  
ok 93 - request for {dnslink}.ipns.localhost returns expected payload (direct HTTP)
94 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:41371 --resolve dnslink-test.example.com.ipns.localhost:41371:127.0.0.1 -sD - "http://dnslink-test.example.com.ipns.localhost:41371" > response &&
    test_should_contain "hello" response
  
ok 94 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy)
95 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:41371 --resolve dnslink-test.example.com.ipns.localhost:41371:127.0.0.1 -sD - "http://dnslink-test.example.com.ipns.localhost:41371" > response &&
    test_should_contain "hello" response
  
ok 95 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy 1.0)
96 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:41371 -H "Host: dnslink-test.example.com.ipns.localhost:41371" -sD - "http://127.0.0.1:41371" > response &&
    test_should_contain "hello" response
  
ok 96 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy tunneling)
97 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 97 - 'ipfs daemon' is still running
98 - 'ipfs daemon' can be killed Success 0.277
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 98 - 'ipfs daemon' can be killed
99 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 99 - 'ipfs daemon' succeeds
100 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 100 - api file shows up
101 - set up address variables Success 0.025
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 101 - set up address variables
102 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 102 - 'ipfs daemon' is ready
103 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (direct HTTP) Success 0.070
System.out »
expecting success: 
    curl -H "Host: localhost:40597" -sD - "http://127.0.0.1:40597/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en-wikipedia--on--ipfs-org.ipns.localhost:40597/wiki" response
  
ok 103 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (direct HTTP)
104 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy) Success 0.014
System.out »
expecting success: 
    curl -x http://127.0.0.1:40597 --resolve localhost:40597:127.0.0.1 -sD - "http://localhost:40597/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en-wikipedia--on--ipfs-org.ipns.localhost:40597/wiki" response
  
ok 104 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy)
105 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:40597 --resolve localhost:40597:127.0.0.1 -sD - "http://localhost:40597/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en-wikipedia--on--ipfs-org.ipns.localhost:40597/wiki" response
  
ok 105 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy 1.0)
106 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:40597 -H "Host: localhost:40597" -sD - "http://127.0.0.1:40597/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en-wikipedia--on--ipfs-org.ipns.localhost:40597/wiki" response
  
ok 106 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy tunneling)
107 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining Success 0.015
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:40597/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en-wikipedia--on--ipfs-org.ipns.example.com/wiki" response
  
ok 107 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining
108 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 108 - 'ipfs daemon' is still running
109 - 'ipfs daemon' can be killed Success 0.272
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 109 - 'ipfs daemon' can be killed
110 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 110 - 'ipfs daemon' succeeds
111 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 111 - api file shows up
112 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 112 - set up address variables
113 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 113 - 'ipfs daemon' is ready
114 - request for example.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.example.com Success 0.012
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com/" response
  
ok 114 - request for example.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.example.com
115 - request for example.com/ipfs/{InvalidCID} produces useful error before redirect Success 0.011
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipfs/QmInvalidCID" > response &&
    test_should_contain "invalid path \"/ipfs/QmInvalidCID\"" response
  
ok 115 - request for example.com/ipfs/{InvalidCID} produces useful error before redirect
116 - request for example.com/ipfs/{CIDv0} produces redirect to {CIDv1}.ipfs.example.com Success 0.011
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "Location: http://bafybeiffndsajwhk3lwjewwdxqntmjm4b5wxaaanokonsggenkbw6slwk4.ipfs.example.com/" response
  
ok 116 - request for example.com/ipfs/{CIDv0} produces redirect to {CIDv1}.ipfs.example.com
117 - request for http://example.com/ipfs/{CID} with X-Forwarded-Proto: https produces redirect to HTTPS URL Success 0.011
System.out »
expecting success: 
  curl -H "X-Forwarded-Proto: https" -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
  test_should_contain "Location: https://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com/" response

ok 117 - request for http://example.com/ipfs/{CID} with X-Forwarded-Proto: https produces redirect to HTTPS URL
118 - request for example.com/ipfs/?uri=ipfs%3A%2F%2F.. produces redirect to /ipfs/.. content path Success 0.011
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipfs/?uri=ipfs%3A%2F%2FQmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco%2Fwiki%2FDiego_Maradona.html" > response &&
    test_should_contain "Location: /ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Diego_Maradona.html" response
  
ok 118 - request for example.com/ipfs/?uri=ipfs%3A%2F%2F.. produces redirect to /ipfs/.. content path
119 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain Success 0.012
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.example.com/" response
  
ok 119 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain
120 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain Success 0.013
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.example.com/" response
  
ok 120 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain
121 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain Success 0.012
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
    test_should_contain "Location: http://en.wikipedia-on-ipfs.org.ipns.example.com/wiki" response
  
ok 121 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain
122 - request for example.com/ipns/{fqdn} with X-Forwarded-Proto redirects to TLS-safe label in subdomain Success 0.017
System.out »
expecting success: 
  curl -H "Host: example.com" -H "X-Forwarded-Proto: https" -sD - "http://127.0.0.1:39779/ipns/en.wikipedia-on-ipfs.org/wiki" > response &&
  test_should_contain "Location: https://en-wikipedia--on--ipfs-org.ipns.example.com/wiki" response
  
ok 122 - request for example.com/ipns/{fqdn} with X-Forwarded-Proto redirects to TLS-safe label in subdomain
123 - request for example.com/ipns/?uri=ipns%3A%2F%2F.. produces redirect to /ipns/.. content path Success 0.017
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:39779/ipns/?uri=ipns%3A%2F%2Fen.wikipedia-on-ipfs.org" > response &&
    test_should_contain "Location: /ipns/en.wikipedia-on-ipfs.org" response
  
ok 123 - request for example.com/ipns/?uri=ipns%3A%2F%2F.. produces redirect to /ipns/.. content path
124 - request for {CID}.ipfs.example.com should return expected payload Success 0.019
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com" -sD - "http://127.0.0.1:39779/" > response &&
    test_should_contain "hello" response
  
ok 124 - request for {CID}.ipfs.example.com should return expected payload
125 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404 Success 0.013
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com" -sD - "http://127.0.0.1:39779/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 125 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404
126 - valid file and directory paths in directory listing at {cid}.ipfs.example.com Success 0.018
System.out »
expecting success: 
  curl -s -H "Host: $DIR_FQDN" http://127.0.0.1:$GWAY_PORT > list_response &&
  test_should_contain "<a href=\"/hello\">hello</a>" list_response &&
  test_should_contain "<a href=\"/ipfs\">ipfs</a>" list_response

ok 126 - valid file and directory paths in directory listing at {cid}.ipfs.example.com
127 - valid parent directory path in directory listing at {cid}.ipfs.example.com/sub/dir Success 0.018
System.out »
expecting success: 
  curl -s -H "Host: $DIR_FQDN" http://127.0.0.1:$GWAY_PORT/ipfs/ipns/ > list_response &&
  test_should_contain "<a href=\"/ipfs/ipns/..\">..</a>" list_response &&
  test_should_contain "<a href=\"/ipfs/ipns/bar\">bar</a>" list_response

ok 127 - valid parent directory path in directory listing at {cid}.ipfs.example.com/sub/dir
128 - valid breadcrumb links in the header of directory listing at {cid}.ipfs.example.com/sub/dir Success 0.019
System.out »
expecting success: 
  curl -s -H "Host: $DIR_FQDN" http://127.0.0.1:$GWAY_PORT/ipfs/ipns/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_contain "/ipfs/<a href=\"//example.com/ipfs/${DIR_CID}\">${DIR_CID}</a>/<a href=\"//example.com/ipfs/${DIR_CID}/ipfs\">ipfs</a>/<a href=\"//example.com/ipfs/${DIR_CID}/ipfs/ipns\">ipns</a>" list_response

ok 128 - valid breadcrumb links in the header of directory listing at {cid}.ipfs.example.com/sub/dir
129 - request for deep path resource {cid}.ipfs.example.com/sub/dir/file Success 0.015
System.out »
expecting success: 
  curl -s -H "Host: $DIR_FQDN" http://127.0.0.1:$GWAY_PORT/ipfs/ipns/bar > list_response &&
  test_should_contain "text-file-content" list_response

ok 129 - request for deep path resource {cid}.ipfs.example.com/sub/dir/file
130 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload Success 0.021
System.out »
expecting success: 
    curl -H "Host: k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.example.com" -sD - "http://127.0.0.1:39779" > response &&
    test_should_contain "hello" response
  
ok 130 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload
131 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload Success 0.025
System.out »
expecting success: 
    curl -H "Host: k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.example.com" -sD - "http://127.0.0.1:39779" > response &&
    test_should_contain "hello" response
  
ok 131 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload
132 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec Success 0.025
System.out »
expecting success: 
    curl -H "Host: k2jmtxu61bnhrtj301lw7zizknztocdbeqhxgv76l2q9t36fn9jbzipo.ipns.example.com" -sD - "http://127.0.0.1:39779" > response &&
    test_should_contain "Location: http://k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.example.com/" response
  
ok 132 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec
133 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec Success 0.014
System.out »
expecting success: 
    curl -H "Host: k50rm9yjlt0jey4fqg6wafvqprktgbkpgkqdg27tpqje6iimzxewnhvtin9hhq.ipns.example.com" -sD - "http://127.0.0.1:39779" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.example.com/" response
  
ok 133 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec
134 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 134 - 'ipfs daemon' is still running
135 - 'ipfs daemon' can be killed Success 0.250
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 135 - 'ipfs daemon' can be killed
136 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 136 - 'ipfs daemon' succeeds
137 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 137 - api file shows up
138 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 138 - set up address variables
139 - get swarm addresses Success 0.069
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 139 - get swarm addresses
140 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 140 - set swarm address vars
141 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 141 - 'ipfs daemon' is ready
142 - request for {dnslink}.ipns.example.com returns expected payload Success 0.018
System.out »
expecting success: 
    curl -H "Host: dnslink-subdomain-gw-test.example.org.ipns.example.com" -sD - "http://127.0.0.1:38143" > response &&
    test_should_contain "hello" response
  
ok 142 - request for {dnslink}.ipns.example.com returns expected payload
143 - request for {single-label-dnslink}.ipns.example.com with X-Forwarded-Proto returns expected payload Success 0.016
System.out »
expecting success: 
  curl -H "Host: dnslink--subdomain--gw--test-example-org.ipns.example.com" -H "X-Forwarded-Proto: https" -sD - "http://127.0.0.1:38143" > response &&
  test_should_contain "hello" response
  
ok 143 - request for {single-label-dnslink}.ipns.example.com with X-Forwarded-Proto returns expected payload
144 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:38143/" response
  
ok 144 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (direct HTTP)
145 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:38143/" response
  
ok 145 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy)
146 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy 1.0) Success 0.017
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:38143/" response
  
ok 146 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy 1.0)
147 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy tunneling) Success 0.014
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:38143 -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.localhost:38143/" response
  
ok 147 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy tunneling)
148 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (direct HTTP) Success 0.015
System.out »
expecting success: 
    curl -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "CID incompatible with DNS label length limit of 63" response
  
ok 148 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (direct HTTP)
149 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "CID incompatible with DNS label length limit of 63" response
  
ok 149 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy)
150 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy 1.0) Success 0.013
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "CID incompatible with DNS label length limit of 63" response
  
ok 150 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy 1.0)
151 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy tunneling) Success 0.015
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:38143 -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "CID incompatible with DNS label length limit of 63" response
  
ok 151 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy tunneling)
152 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (direct HTTP) Success 0.017
System.out »
expecting success: 
    curl -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "400 Bad Request" response
  
ok 152 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (direct HTTP)
153 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "400 Bad Request" response
  
ok 153 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy)
154 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy 1.0) Success 0.017
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:38143 --resolve localhost:38143:127.0.0.1 -sD - "http://localhost:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "400 Bad Request" response
  
ok 154 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy 1.0)
155 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy tunneling) Success 0.020
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:38143 -H "Host: localhost:38143" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "400 Bad Request" response
  
ok 155 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy tunneling)
156 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (direct HTTP) Success 0.014
System.out »
expecting success: 
    curl -H "Host: bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143" -sD - "http://127.0.0.1:38143" > response &&
    test_should_contain "400 Bad Request" response
  
ok 156 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (direct HTTP)
157 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy) Success 0.015
System.out »
expecting success: 
    curl -x http://127.0.0.1:38143 --resolve bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143:127.0.0.1 -sD - "http://bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143" > response &&
    test_should_contain "400 Bad Request" response
  
ok 157 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy)
158 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy 1.0) Success 0.014
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:38143 --resolve bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143:127.0.0.1 -sD - "http://bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143" > response &&
    test_should_contain "400 Bad Request" response
  
ok 158 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy 1.0)
159 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy tunneling) Success 0.013
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:38143 -H "Host: bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.localhost:38143" -sD - "http://127.0.0.1:38143" > response &&
    test_should_contain "400 Bad Request" response
  
ok 159 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy tunneling)
160 - request for a ED25519 libp2p-key at example.com/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers Success 0.015
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38143/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "Location: http://k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.example.com" response
  
ok 160 - request for a ED25519 libp2p-key at example.com/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers
161 - request for a too long CID at example.com/ipfs/{CIDv1} returns human readable error Success 0.015
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "CID incompatible with DNS label length limit of 63" response
  
ok 161 - request for a too long CID at example.com/ipfs/{CIDv1} returns human readable error
162 - request for a too long CID at example.com/ipfs/{CIDv1} returns HTTP Error 400 Bad Request Success 0.016
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38143/ipfs/bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs" > response &&
    test_should_contain "400 Bad Request" response
  
ok 162 - request for a too long CID at example.com/ipfs/{CIDv1} returns HTTP Error 400 Bad Request
163 - request for a too long CID at {CIDv1}.ipfs.example.com returns HTTP Error 400 Bad Request Success 0.014
System.out »
expecting success: 
    curl -H "Host: bafkrgqhhyivzstcz3hhswshfjgy6ertgmnqeleynhwt4dlfsthi4hn7zgh4uvlsb5xncykzapi3ocd4lzogukir6ksdy6wzrnz6ohnv4aglcs.ipfs.example.com" -sD - "http://127.0.0.1:38143/" > response &&
    test_should_contain "400 Bad Request" response
  
ok 163 - request for a too long CID at {CIDv1}.ipfs.example.com returns HTTP Error 400 Bad Request
164 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 164 - 'ipfs daemon' is still running
165 - 'ipfs daemon' can be killed Success 0.300
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 165 - 'ipfs daemon' can be killed
166 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 166 - 'ipfs daemon' succeeds
167 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 167 - api file shows up
168 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 168 - set up address variables
169 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 169 - 'ipfs daemon' is ready
170 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist Success 0.013
System.out »
expecting success: 
    curl -H "Host: k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w.ipns.example.com" -sD - "http://127.0.0.1:37429" > response &&
    test_should_contain "404 Not Found" response
  
ok 170 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist
171 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist Success 0.014
System.out »
expecting success: 
    curl -H "Host: k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam.ipns.example.com" -sD - "http://127.0.0.1:37429" > response &&
    test_should_contain "404 Not Found" response
  
ok 171 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist
172 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 172 - 'ipfs daemon' is still running
173 - 'ipfs daemon' can be killed Success 0.274
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 173 - 'ipfs daemon' can be killed
174 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 174 - 'ipfs daemon' succeeds
175 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 175 - api file shows up
176 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 176 - set up address variables
177 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 177 - 'ipfs daemon' is ready
178 - request for example.com/ipfs/{CIDv1} returns expected payload Success 0.015
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38359/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 178 - request for example.com/ipfs/{CIDv1} returns expected payload
179 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404 Not Found Success 0.013
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com" -sD - "http://127.0.0.1:38359/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "404 Not Found" response
  
ok 179 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404 Not Found
180 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist Success 0.023
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38359/ipns/k2k4r8m7xvggw5pxxk3abrkwyer625hg01hfyggrai7lk1m63fuihi7w" > response &&
    test_should_contain "404 Not Found" response
  
ok 180 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist
181 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist Success 0.029
System.out »
expecting success: 
    curl -H "Host: example.com" -sD - "http://127.0.0.1:38359/ipns/k51qzi5uqu5dk3v4rmjber23h16xnr23bsggmqqil9z2gduiis5se8dht36dam" > response &&
    test_should_contain "404 Not Found" response
  
ok 181 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist
182 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 182 - 'ipfs daemon' is still running
183 - 'ipfs daemon' can be killed Success 0.277
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 183 - 'ipfs daemon' can be killed
184 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 184 - 'ipfs daemon' succeeds
185 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 185 - api file shows up
186 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 186 - set up address variables
187 - get swarm addresses Success 0.071
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 187 - get swarm addresses
188 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 188 - set swarm address vars
189 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 189 - 'ipfs daemon' is ready
190 - spoofed DNSLink record resolves in cli Success 0.148
System.out »
expecting success: 
  ipfs resolve /ipns/dnslink-enabled-on-fqdn.example.org > result &&
  test_should_contain "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" result &&
  ipfs cat /ipns/dnslink-enabled-on-fqdn.example.org > result &&
  test_should_contain "hello" result

ok 190 - spoofed DNSLink record resolves in cli
191 - request for http://{dnslink-fqdn}/ PublicGateway returns expected payload Success 0.015
System.out »
expecting success: 
    curl -H "Host: dnslink-enabled-on-fqdn.example.org" -sD - "http://127.0.0.1:33261/" > response &&
    test_should_contain "hello" response
  
ok 191 - request for http://{dnslink-fqdn}/ PublicGateway returns expected payload
192 - request for {dnslink-fqdn}/ipfs/{cid} returns expected payload when /ipfs is on Paths whitelist Success 0.012
System.out »
expecting success: 
    curl -H "Host: dnslink-enabled-on-fqdn.example.org" -sD - "http://127.0.0.1:33261/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 192 - request for {dnslink-fqdn}/ipfs/{cid} returns expected payload when /ipfs is on Paths whitelist
193 - request for {dnslink-fqdn}/ipfs/file.txt returns data from content root when /ipfs in not on Paths whitelist Success 0.014
System.out »
expecting success: 
    curl -H "Host: only-dnslink-enabled-on-fqdn.example.org" -sD - "http://127.0.0.1:33261/ipfs/file.txt" > response &&
    test_should_contain "I am a txt file" response
  
ok 193 - request for {dnslink-fqdn}/ipfs/file.txt returns data from content root when /ipfs in not on Paths whitelist
194 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted Success 0.013
System.out »
expecting success: 
    curl -H "Host: dnslink-enabled-on-fqdn.example.org" -sD - "http://127.0.0.1:33261/ipns/QmVujd5Vb7moysJj8itnGufN7MEtPRCNHkKpNuA4onsRa3" > response &&
    test_should_contain "404 Not Found" response
  
ok 194 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted
195 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted Success 0.015
System.out »
expecting success: 
    curl -H "Host: dnslink-enabled-on-fqdn.example.org" -sD - "http://127.0.0.1:33261/ipns/12D3KooWLQzUv2FHWGVPXTXSZpdHs7oHbXub2G5WC8Tx4NQhyd2d" > response &&
    test_should_contain "404 Not Found" response
  
ok 195 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted
196 - request for http://{dnslink-fqdn}/ returns 404 when NoDNSLink=true Success 0.016
System.out »
expecting success: 
    curl -H "Host: dnslink-disabled-on-fqdn.example.com" -sD - "http://127.0.0.1:33261/" > response &&
    test_should_contain "404 Not Found" response
  
ok 196 - request for http://{dnslink-fqdn}/ returns 404 when NoDNSLink=true
197 - request for {dnslink-fqdn}/ipfs/{cid} returns 404 when path is not whitelisted Success 0.015
System.out »
expecting success: 
    curl -H "Host: dnslink-disabled-on-fqdn.example.com" -sD - "http://127.0.0.1:33261/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN" > response &&
    test_should_contain "404 Not Found" response
  
ok 197 - request for {dnslink-fqdn}/ipfs/{cid} returns 404 when path is not whitelisted
198 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 198 - 'ipfs daemon' is still running
199 - 'ipfs daemon' can be killed Success 0.304
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 199 - 'ipfs daemon' can be killed
200 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 200 - 'ipfs daemon' succeeds
201 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 201 - api file shows up
202 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 202 - set up address variables
203 - get swarm addresses Success 0.065
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 203 - get swarm addresses
204 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 204 - set swarm address vars
205 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 205 - 'ipfs daemon' is ready
206 - spoofed DNSLink record resolves in cli Success 0.128
System.out »
expecting success: 
  ipfs resolve /ipns/wildcard-dnslink-not-in-config.example.com > result &&
  test_should_contain "bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" result &&
  ipfs cat /ipns/wildcard-dnslink-not-in-config.example.com > result &&
  test_should_contain "hello" result

ok 206 - spoofed DNSLink record resolves in cli
207 - request for http://{dnslink-fqdn}/ (wildcard) returns expected payload Success 0.017
System.out »
expecting success: 
    curl -H "Host: wildcard-dnslink-not-in-config.example.com" -sD - "http://127.0.0.1:43081/" > response &&
    test_should_contain "hello" response
  
ok 207 - request for http://{dnslink-fqdn}/ (wildcard) returns expected payload
208 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 208 - 'ipfs daemon' is still running
209 - 'ipfs daemon' can be killed Success 0.259
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 209 - 'ipfs daemon' can be killed
210 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 210 - 'ipfs daemon' succeeds
211 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 211 - api file shows up
212 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 212 - set up address variables
213 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 213 - 'ipfs daemon' is ready
214 - request for http://fake.domain.com/ipfs/{CID} doesn't match the example.com gateway Success 0.025
System.out »
expecting success: 
  curl -H "Host: fake.domain.com" -sD - "http://127.0.0.1:39033/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
  test_should_contain "200 OK" response

ok 214 - request for http://fake.domain.com/ipfs/{CID} doesn't match the example.com gateway
215 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com match the example.com gateway Success 0.013
System.out »
expecting success: 
  curl -H "Host: fake.domain.com" -H "X-Forwarded-Host: example.com" -sD - "http://127.0.0.1:39033/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
  test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com/" response

ok 215 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com match the example.com gateway
216 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com and X-Forwarded-Proto: https match the example.com gateway, redirect with https Success 0.014
System.out »
expecting success: 
  curl -H "Host: fake.domain.com" -H "X-Forwarded-Host: example.com" -H "X-Forwarded-Proto: https" -sD - "http://127.0.0.1:39033/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
  test_should_contain "Location: https://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.example.com/" response

ok 216 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com and X-Forwarded-Proto: https match the example.com gateway, redirect with https
217 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 217 - 'ipfs daemon' is still running
218 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 218 - 'ipfs daemon' can be killed
219 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 219 - 'ipfs daemon' succeeds
220 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 220 - api file shows up
221 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 221 - set up address variables
222 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 222 - 'ipfs daemon' is ready
223 - request for foo.example1.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.example1.com Success 0.018
System.out »
expecting success: 
    curl -H "Host: foo.example1.com" -sD - "http://127.0.0.1:45571/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.example1.com/" response
  
ok 223 - request for foo.example1.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.example1.com
224 - request for {CID}.ipfs.foo.example1.com should return expected payload Success 0.017
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.example1.com" -sD - "http://127.0.0.1:45571/" > response &&
    test_should_contain "hello" response
  
ok 224 - request for {CID}.ipfs.foo.example1.com should return expected payload
225 - request for foo.bar.example2.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example2.com Success 0.022
System.out »
expecting success: 
    curl -H "Host: foo.bar.example2.com" -sD - "http://127.0.0.1:45571/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar.example2.com/" response
  
ok 225 - request for foo.bar.example2.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example2.com
226 - request for {CID}.ipfs.foo.bar.example2.com should return expected payload Success 0.018
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar.example2.com" -sD - "http://127.0.0.1:45571/" > response &&
    test_should_contain "hello" response
  
ok 226 - request for {CID}.ipfs.foo.bar.example2.com should return expected payload
227 - request for foo.bar.example3.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example3.com Success 0.016
System.out »
expecting success: 
    curl -H "Host: foo.bar.example3.com" -sD - "http://127.0.0.1:45571/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar.example3.com/" response
  
ok 227 - request for foo.bar.example3.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example3.com
228 - request for {CID}.ipfs.foo.bar.example3.com should return expected payload Success 0.016
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar.example3.com" -sD - "http://127.0.0.1:45571/" > response &&
    test_should_contain "hello" response
  
ok 228 - request for {CID}.ipfs.foo.bar.example3.com should return expected payload
229 - request for foo.bar-dev-boo.example4.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar-dev-boo.example4.com Success 0.015
System.out »
expecting success: 
    curl -H "Host: foo.bar-dev-boo.example4.com" -sD - "http://127.0.0.1:45571/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "Location: http://bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar-dev-boo.example4.com/" response
  
ok 229 - request for foo.bar-dev-boo.example4.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar-dev-boo.example4.com
230 - request for {CID}.ipfs.foo.bar-dev-boo.example4.com should return expected payload Success 0.015
System.out »
expecting success: 
    curl -H "Host: bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am.ipfs.foo.bar-dev-boo.example4.com" -sD - "http://127.0.0.1:45571/" > response &&
    test_should_contain "hello" response
  
ok 230 - request for {CID}.ipfs.foo.bar-dev-boo.example4.com should return expected payload
231 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 231 - 'ipfs daemon' is still running
232 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 232 - 'ipfs daemon' can be killed
233 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 233 - 'ipfs daemon' succeeds
234 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 234 - api file shows up
235 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 235 - set up address variables
236 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 236 - 'ipfs daemon' is ready
237 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (direct HTTP) Success 0.020
System.out »
expecting success: 
    curl -H "Host: localhost:35175" -sD - "http://127.0.0.1:35175/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 237 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (direct HTTP)
238 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy) Success 0.013
System.out »
expecting success: 
    curl -x http://127.0.0.1:35175 --resolve localhost:35175:127.0.0.1 -sD - "http://localhost:35175/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 238 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy)
239 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy 1.0) Success 0.015
System.out »
expecting success: 
    curl --proxy1.0 http://127.0.0.1:35175 --resolve localhost:35175:127.0.0.1 -sD - "http://localhost:35175/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 239 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy 1.0)
240 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy tunneling) Success 0.016
System.out »
expecting success: 
    curl --proxytunnel -x http://127.0.0.1:35175 -H "Host: localhost:35175" -sD - "http://127.0.0.1:35175/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am" > response &&
    test_should_contain "hello" response
  
ok 240 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy tunneling)
241 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 241 - 'ipfs daemon' is still running
242 - 'ipfs daemon' can be killed Success 0.270
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 242 - 'ipfs daemon' can be killed
243 - clean up ipfs dir Success 0.007
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 243 - clean up ipfs dir
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init
ok 2 - 'ipfs daemon' succeeds
ok 3 - api file shows up
ok 4 - set up address variables
ok 5 - 'ipfs daemon' is ready
ok 6 - Add the test fixtures
ok 13 - start daemon with empty config for Gateway.PublicGateways
ok 14 - request for 127.0.0.1/ipfs/{CID} stays on path (direct HTTP)
ok 15 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy)
ok 16 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy 1.0)
ok 17 - request for 127.0.0.1/ipfs/{CID} stays on path (HTTP proxy tunneling)
ok 18 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (direct HTTP)
ok 19 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy)
ok 20 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy 1.0)
ok 21 - request for localhost/ipfs/{CIDv1} returns HTTP 301 Moved Permanently (HTTP proxy tunneling)
ok 22 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (direct HTTP)
ok 23 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy)
ok 24 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0)
ok 25 - request for localhost/ipfs/{CIDv1} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling)
ok 26 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (direct HTTP)
ok 27 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy)
ok 28 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy 1.0)
ok 29 - request for localhost/ipfs/{DIR_CID} returns HTTP 301 Moved Permanently (HTTP proxy tunneling)
ok 30 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (direct HTTP)
ok 31 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy)
ok 32 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy 1.0)
ok 33 - request for localhost/ipfs/{DIR_CID} returns Location HTTP header for subdomain redirect in browsers (HTTP proxy tunneling)
ok 34 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (direct HTTP)
ok 35 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy)
ok 36 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy 1.0)
ok 37 - request for localhost/ipfs/{CIDv1} includes human-readable link and redirect info in HTTP 301 body (HTTP proxy tunneling)
ok 38 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (direct HTTP)
ok 39 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy)
ok 40 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy 1.0)
ok 41 - request for localhost/ipfs/{CIDv0} redirects to CIDv1 representation in subdomain (HTTP proxy tunneling)
ok 42 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP)
ok 43 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy)
ok 44 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0)
ok 45 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling)
ok 46 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (direct HTTP)
ok 47 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy)
ok 48 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy 1.0)
ok 49 - request for localhost/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain (HTTP proxy tunneling)
ok 50 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (direct HTTP)
ok 51 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy)
ok 52 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy 1.0)
ok 53 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain (HTTP proxy tunneling)
ok 54 - request for {CID}.ipfs.localhost should return expected payload (direct HTTP)
ok 55 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy)
ok 56 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy 1.0)
ok 57 - request for {CID}.ipfs.localhost should return expected payload (HTTP proxy tunneling)
ok 58 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (direct HTTP)
ok 59 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy)
ok 60 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy 1.0)
ok 61 - request for {CID}.ipfs.localhost/ipfs/{CID} should return HTTP 404 (HTTP proxy tunneling)
ok 62 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (direct HTTP)
ok 63 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy)
ok 64 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy 1.0)
ok 65 - request for {CID}.ipfs.localhost/ipfs/file.txt should return data from a file in CID content root (HTTP proxy tunneling)
ok 66 - valid file and subdirectory paths in directory listing at {cid}.ipfs.localhost
ok 67 - valid parent directory path in directory listing at {cid}.ipfs.localhost/sub/dir
ok 68 - request for deep path resource at {cid}.ipfs.localhost/sub/dir/file
ok 69 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP)
ok 70 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy)
ok 71 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0)
ok 72 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling)
ok 73 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (direct HTTP)
ok 74 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy)
ok 75 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy 1.0)
ok 76 - request for {CIDv1-libp2p-key}.ipns.localhost returns expected payload (HTTP proxy tunneling)
ok 77 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP)
ok 78 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy)
ok 79 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0)
ok 80 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling)
ok 81 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (direct HTTP)
ok 82 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy)
ok 83 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy 1.0)
ok 84 - localhost request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec (HTTP proxy tunneling)
ok 85 - 'ipfs daemon' is still running
ok 86 - 'ipfs daemon' can be killed
ok 87 - 'ipfs daemon' succeeds
ok 88 - api file shows up
ok 89 - set up address variables
ok 90 - get swarm addresses
ok 91 - set swarm address vars
ok 92 - 'ipfs daemon' is ready
ok 93 - request for {dnslink}.ipns.localhost returns expected payload (direct HTTP)
ok 94 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy)
ok 95 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy 1.0)
ok 96 - request for {dnslink}.ipns.localhost returns expected payload (HTTP proxy tunneling)
ok 97 - 'ipfs daemon' is still running
ok 98 - 'ipfs daemon' can be killed
ok 99 - 'ipfs daemon' succeeds
ok 100 - api file shows up
ok 101 - set up address variables
ok 102 - 'ipfs daemon' is ready
ok 103 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (direct HTTP)
ok 104 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy)
ok 105 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy 1.0)
ok 106 - request for localhost/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining (HTTP proxy tunneling)
ok 107 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain with DNS inlining
ok 108 - 'ipfs daemon' is still running
ok 109 - 'ipfs daemon' can be killed
ok 110 - 'ipfs daemon' succeeds
ok 111 - api file shows up
ok 112 - set up address variables
ok 113 - 'ipfs daemon' is ready
ok 114 - request for example.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.example.com
ok 115 - request for example.com/ipfs/{InvalidCID} produces useful error before redirect
ok 116 - request for example.com/ipfs/{CIDv0} produces redirect to {CIDv1}.ipfs.example.com
ok 117 - request for http://example.com/ipfs/{CID} with X-Forwarded-Proto: https produces redirect to HTTPS URL
ok 118 - request for example.com/ipfs/?uri=ipfs%3A%2F%2F.. produces redirect to /ipfs/.. content path
ok 119 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain
ok 120 - request for example.com/ipns/{CIDv0} redirects to CIDv1 with libp2p-key multicodec in subdomain
ok 121 - request for example.com/ipns/{fqdn} redirects to DNSLink in subdomain
ok 122 - request for example.com/ipns/{fqdn} with X-Forwarded-Proto redirects to TLS-safe label in subdomain
ok 123 - request for example.com/ipns/?uri=ipns%3A%2F%2F.. produces redirect to /ipns/.. content path
ok 124 - request for {CID}.ipfs.example.com should return expected payload
ok 125 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404
ok 126 - valid file and directory paths in directory listing at {cid}.ipfs.example.com
ok 127 - valid parent directory path in directory listing at {cid}.ipfs.example.com/sub/dir
ok 128 - valid breadcrumb links in the header of directory listing at {cid}.ipfs.example.com/sub/dir
ok 129 - request for deep path resource {cid}.ipfs.example.com/sub/dir/file
ok 130 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload
ok 131 - request for {CIDv1-libp2p-key}.ipns.example.com returns expected payload
ok 132 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec
ok 133 - hostname request for {CIDv1-dag-pb}.ipns.localhost redirects to CID with libp2p-key multicodec
ok 134 - 'ipfs daemon' is still running
ok 135 - 'ipfs daemon' can be killed
ok 136 - 'ipfs daemon' succeeds
ok 137 - api file shows up
ok 138 - set up address variables
ok 139 - get swarm addresses
ok 140 - set swarm address vars
ok 141 - 'ipfs daemon' is ready
ok 142 - request for {dnslink}.ipns.example.com returns expected payload
ok 143 - request for {single-label-dnslink}.ipns.example.com with X-Forwarded-Proto returns expected payload
ok 144 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (direct HTTP)
ok 145 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy)
ok 146 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy 1.0)
ok 147 - request for a ED25519 libp2p-key at localhost/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers (HTTP proxy tunneling)
ok 148 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (direct HTTP)
ok 149 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy)
ok 150 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy 1.0)
ok 151 - request for a too long CID at localhost/ipfs/{CIDv1} returns human readable error (HTTP proxy tunneling)
ok 152 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (direct HTTP)
ok 153 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy)
ok 154 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy 1.0)
ok 155 - request for a too long CID at localhost/ipfs/{CIDv1} returns HTTP Error 400 Bad Request (HTTP proxy tunneling)
ok 156 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (direct HTTP)
ok 157 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy)
ok 158 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy 1.0)
ok 159 - request for a too long CID at {CIDv1}.ipfs.localhost returns expected payload (HTTP proxy tunneling)
ok 160 - request for a ED25519 libp2p-key at example.com/ipns/{b58mh} returns Location HTTP header for DNS-safe subdomain redirect in browsers
ok 161 - request for a too long CID at example.com/ipfs/{CIDv1} returns human readable error
ok 162 - request for a too long CID at example.com/ipfs/{CIDv1} returns HTTP Error 400 Bad Request
ok 163 - request for a too long CID at {CIDv1}.ipfs.example.com returns HTTP Error 400 Bad Request
ok 164 - 'ipfs daemon' is still running
ok 165 - 'ipfs daemon' can be killed
ok 166 - 'ipfs daemon' succeeds
ok 167 - api file shows up
ok 168 - set up address variables
ok 169 - 'ipfs daemon' is ready
ok 170 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist
ok 171 - request for *.ipns.example.com returns HTTP 404 Not Found when /ipns is not on Paths whitelist
ok 172 - 'ipfs daemon' is still running
ok 173 - 'ipfs daemon' can be killed
ok 174 - 'ipfs daemon' succeeds
ok 175 - api file shows up
ok 176 - set up address variables
ok 177 - 'ipfs daemon' is ready
ok 178 - request for example.com/ipfs/{CIDv1} returns expected payload
ok 179 - request for {CID}.ipfs.example.com/ipfs/{CID} should return HTTP 404 Not Found
ok 180 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist
ok 181 - request for example.com/ipns/ returns HTTP 404 Not Found when /ipns is not on Paths whitelist
ok 182 - 'ipfs daemon' is still running
ok 183 - 'ipfs daemon' can be killed
ok 184 - 'ipfs daemon' succeeds
ok 185 - api file shows up
ok 186 - set up address variables
ok 187 - get swarm addresses
ok 188 - set swarm address vars
ok 189 - 'ipfs daemon' is ready
ok 190 - spoofed DNSLink record resolves in cli
ok 191 - request for http://{dnslink-fqdn}/ PublicGateway returns expected payload
ok 192 - request for {dnslink-fqdn}/ipfs/{cid} returns expected payload when /ipfs is on Paths whitelist
ok 193 - request for {dnslink-fqdn}/ipfs/file.txt returns data from content root when /ipfs in not on Paths whitelist
ok 194 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted
ok 195 - request for {dnslink-fqdn}/ipns/{peerid} returns 404 when path is not whitelisted
ok 196 - request for http://{dnslink-fqdn}/ returns 404 when NoDNSLink=true
ok 197 - request for {dnslink-fqdn}/ipfs/{cid} returns 404 when path is not whitelisted
ok 198 - 'ipfs daemon' is still running
ok 199 - 'ipfs daemon' can be killed
ok 200 - 'ipfs daemon' succeeds
ok 201 - api file shows up
ok 202 - set up address variables
ok 203 - get swarm addresses
ok 204 - set swarm address vars
ok 205 - 'ipfs daemon' is ready
ok 206 - spoofed DNSLink record resolves in cli
ok 207 - request for http://{dnslink-fqdn}/ (wildcard) returns expected payload
ok 208 - 'ipfs daemon' is still running
ok 209 - 'ipfs daemon' can be killed
ok 210 - 'ipfs daemon' succeeds
ok 211 - api file shows up
ok 212 - set up address variables
ok 213 - 'ipfs daemon' is ready
ok 214 - request for http://fake.domain.com/ipfs/{CID} doesn't match the example.com gateway
ok 215 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com match the example.com gateway
ok 216 - request for http://fake.domain.com/ipfs/{CID} with X-Forwarded-Host: example.com and X-Forwarded-Proto: https match the example.com gateway, redirect with https
ok 217 - 'ipfs daemon' is still running
ok 218 - 'ipfs daemon' can be killed
ok 219 - 'ipfs daemon' succeeds
ok 220 - api file shows up
ok 221 - set up address variables
ok 222 - 'ipfs daemon' is ready
ok 223 - request for foo.example1.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.example1.com
ok 224 - request for {CID}.ipfs.foo.example1.com should return expected payload
ok 225 - request for foo.bar.example2.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example2.com
ok 226 - request for {CID}.ipfs.foo.bar.example2.com should return expected payload
ok 227 - request for foo.bar.example3.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar.example3.com
ok 228 - request for {CID}.ipfs.foo.bar.example3.com should return expected payload
ok 229 - request for foo.bar-dev-boo.example4.com/ipfs/{CIDv1} produces redirect to {CIDv1}.ipfs.foo.bar-dev-boo.example4.com
ok 230 - request for {CID}.ipfs.foo.bar-dev-boo.example4.com should return expected payload
ok 231 - 'ipfs daemon' is still running
ok 232 - 'ipfs daemon' can be killed
ok 233 - 'ipfs daemon' succeeds
ok 234 - api file shows up
ok 235 - set up address variables
ok 236 - 'ipfs daemon' is ready
ok 237 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (direct HTTP)
ok 238 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy)
ok 239 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy 1.0)
ok 240 - request for localhost/ipfs/{CID} stays on path when subdomain gw is explicitly disabled (HTTP proxy tunneling)
ok 241 - 'ipfs daemon' is still running
ok 242 - 'ipfs daemon' can be killed
ok 243 - clean up ipfs dir

Back to top

TestCase t0115-gateway-dir-listing

Name Status Type Time(s)
1 - ipfs init Success 0.100
System.out »
expecting success: 
  export IPFS_PATH="$(pwd)/.ipfs" &&
  ipfs init --profile=test > /dev/null

ok 1 - ipfs init
2 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 2 - 'ipfs daemon' succeeds
3 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 3 - api file shows up
4 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 4 - set up address variables
5 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 5 - 'ipfs daemon' is ready
6 - Add the test directory Success 0.073
System.out »
expecting success: 
  ipfs dag import --pin-roots ../t0115-gateway-dir-listing/fixtures.car

Pinned root	bafybeig6ka5mlwkl4subqhaiatalkcleo4jgnr3hqwvpmsqfca27cijp3i	success
ok 6 - Add the test directory
7 - path gw: backlink on root CID should be hidden Success 0.019
System.out »
expecting success: 
  curl -sD - http://127.0.0.1:$GWAY_PORT/ipfs/${DIR_CID}/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_not_contain "<a href=\"/ipfs/$DIR_CID/\">..</a>" list_response

ok 7 - path gw: backlink on root CID should be hidden
8 - path gw: redirect dir listing to URL with trailing slash Success 0.017
System.out »
expecting success: 
  curl -sD - http://127.0.0.1:$GWAY_PORT/ipfs/${DIR_CID}/ą/ę > list_response &&
  test_should_contain "HTTP/1.1 301 Moved Permanently" list_response &&
  test_should_contain "Location: /ipfs/${DIR_CID}/%C4%85/%C4%99/" list_response

ok 8 - path gw: redirect dir listing to URL with trailing slash
9 - path gw: Etag should be present Success 0.016
System.out »
expecting success: 
  curl -sD - http://127.0.0.1:$GWAY_PORT/ipfs/${DIR_CID}/ą/ę/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_contain "Etag: \"DirIndex-" list_response

ok 9 - path gw: Etag should be present
10 - path gw: breadcrumbs should point at /ipfs namespace mounted at Origin root Success 0.006
System.out »
expecting success: 
  test_should_contain "/ipfs/<a href=\"/ipfs/$DIR_CID\">$DIR_CID</a>/<a href=\"/ipfs/$DIR_CID/%C4%85\">ą</a>/<a href=\"/ipfs/$DIR_CID/%C4%85/%C4%99\">ę</a>" list_response

ok 10 - path gw: breadcrumbs should point at /ipfs namespace mounted at Origin root
11 - path gw: backlink on subdirectory should point at parent directory Success 0.006
System.out »
expecting success: 
  test_should_contain "<a href=\"/ipfs/$DIR_CID/%C4%85/%C4%99/..\">..</a>" list_response

ok 11 - path gw: backlink on subdirectory should point at parent directory
12 - path gw: name column should be a link to its content path Success 0.006
System.out »
expecting success: 
  test_should_contain "<a href=\"/ipfs/$DIR_CID/%C4%85/%C4%99/file-%C5%BA%C5%82.txt\">file-źł.txt</a>" list_response

ok 12 - path gw: name column should be a link to its content path
13 - path gw: hash column should be a CID link with filename param Success 0.006
System.out »
expecting success: 
  test_should_contain "<a class=\"ipfs-hash\" translate=\"no\" href=\"/ipfs/$FILE_CID?filename=file-%25C5%25BA%25C5%2582.txt\">" list_response

ok 13 - path gw: hash column should be a CID link with filename param
14 - subdomain gw: backlink on root CID should be hidden Success 0.017
System.out »
expecting success: 
  curl -sD - --resolve $DIR_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DIR_HOSTNAME:$GWAY_PORT/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_not_contain "<a href=\"/\">..</a>" list_response

ok 14 - subdomain gw: backlink on root CID should be hidden
15 - subdomain gw: redirect dir listing to URL with trailing slash Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $DIR_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DIR_HOSTNAME:$GWAY_PORT/ą/ę > list_response &&
  test_should_contain "HTTP/1.1 301 Moved Permanently" list_response &&
  test_should_contain "Location: /%C4%85/%C4%99/" list_response

ok 15 - subdomain gw: redirect dir listing to URL with trailing slash
16 - subdomain gw: Etag should be present Success 0.019
System.out »
expecting success: 
  curl -sD - --resolve $DIR_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DIR_HOSTNAME:$GWAY_PORT/ą/ę/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_contain "Etag: \"DirIndex-" list_response

ok 16 - subdomain gw: Etag should be present
17 - subdomain gw: backlink on subdirectory should point at parent directory Success 0.006
System.out »
expecting success: 
  test_should_contain "<a href=\"/%C4%85/%C4%99/..\">..</a>" list_response

ok 17 - subdomain gw: backlink on subdirectory should point at parent directory
18 - subdomain gw: breadcrumbs should leverage path-based router mounted on the parent domain Success 0.006
System.out »
expecting success: 
  test_should_contain "/ipfs/<a href=\"//localhost:$GWAY_PORT/ipfs/$DIR_CID\">$DIR_CID</a>/<a href=\"//localhost:$GWAY_PORT/ipfs/$DIR_CID/%C4%85\">ą</a>/<a href=\"//localhost:$GWAY_PORT/ipfs/$DIR_CID/%C4%85/%C4%99\">ę</a>" list_response

ok 18 - subdomain gw: breadcrumbs should leverage path-based router mounted on the parent domain
19 - subdomain gw: name column should be a link to content root mounted at subdomain origin Success 0.005
System.out »
expecting success: 
  test_should_contain "<a href=\"/%C4%85/%C4%99/file-%C5%BA%C5%82.txt\">file-źł.txt</a>" list_response

ok 19 - subdomain gw: name column should be a link to content root mounted at subdomain origin
20 - subdomain gw: hash column should be a CID link to path router with filename param Success 0.006
System.out »
expecting success: 
  test_should_contain "<a class=\"ipfs-hash\" translate=\"no\" href=\"//localhost:$GWAY_PORT/ipfs/$FILE_CID?filename=file-%25C5%25BA%25C5%2582.txt\">" list_response

ok 20 - subdomain gw: hash column should be a CID link to path router with filename param
21 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 21 - 'ipfs daemon' is still running
22 - 'ipfs daemon' can be killed Success 0.267
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 22 - 'ipfs daemon' can be killed
23 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 23 - 'ipfs daemon' succeeds
24 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 24 - api file shows up
25 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 25 - set up address variables
26 - get swarm addresses Success 0.078
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 26 - get swarm addresses
27 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 27 - set swarm address vars
28 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 28 - 'ipfs daemon' is ready
29 - dnslink gw: backlink on root CID should be hidden Success 0.017
System.out »
expecting success: 
  curl -v -sD - --resolve $DNSLINK_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DNSLINK_HOSTNAME:$GWAY_PORT/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_not_contain "<a href=\"/\">..</a>" list_response

ok 29 - dnslink gw: backlink on root CID should be hidden
System.err »
* Added website.example.com:45779:127.0.0.1 to DNS cache
* Hostname website.example.com was found in DNS cache
*   Trying 127.0.0.1:45779...
* Connected to website.example.com (127.0.0.1) port 45779
> GET / HTTP/1.1
> Host: website.example.com:45779
> User-Agent: curl/8.5.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Access-Control-Allow-Headers: Content-Type
< Access-Control-Allow-Headers: Range
< Access-Control-Allow-Headers: User-Agent
< Access-Control-Allow-Headers: X-Requested-With
< Access-Control-Allow-Methods: GET
< Access-Control-Allow-Methods: HEAD
< Access-Control-Allow-Methods: OPTIONS
< Access-Control-Allow-Origin: *
< Access-Control-Expose-Headers: Content-Length
< Access-Control-Expose-Headers: Content-Range
< Access-Control-Expose-Headers: X-Chunked-Output
< Access-Control-Expose-Headers: X-Ipfs-Path
< Access-Control-Expose-Headers: X-Ipfs-Roots
< Access-Control-Expose-Headers: X-Stream-Output
< Content-Type: text/html
< Etag: "DirIndex-ck924ob197ble_CID-bafybeig6ka5mlwkl4subqhaiatalkcleo4jgnr3hqwvpmsqfca27cijp3i"
< X-Ipfs-Path: /ipns/website.example.com/
< X-Ipfs-Roots: bafybeig6ka5mlwkl4subqhaiatalkcleo4jgnr3hqwvpmsqfca27cijp3i
< Date: Fri, 27 Feb 2026 18:13:35 GMT
< Transfer-Encoding: chunked
< 
{ [2048 bytes data]
* Connection #0 to host website.example.com left intact
30 - dnslink gw: redirect dir listing to URL with trailing slash Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $DNSLINK_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DNSLINK_HOSTNAME:$GWAY_PORT/ą/ę > list_response &&
  test_should_contain "HTTP/1.1 301 Moved Permanently" list_response &&
  test_should_contain "Location: /%C4%85/%C4%99/" list_response

ok 30 - dnslink gw: redirect dir listing to URL with trailing slash
31 - dnslink gw: Etag should be present Success 0.016
System.out »
expecting success: 
  curl -sD - --resolve $DNSLINK_HOSTNAME:$GWAY_PORT:127.0.0.1 http://$DNSLINK_HOSTNAME:$GWAY_PORT/ą/ę/ > list_response &&
  test_should_contain "Index of" list_response &&
  test_should_contain "Etag: \"DirIndex-" list_response

ok 31 - dnslink gw: Etag should be present
32 - dnslink gw: backlink on subdirectory should point at parent directory Success 0.006
System.out »
expecting success: 
  test_should_contain "<a href=\"/%C4%85/%C4%99/..\">..</a>" list_response

ok 32 - dnslink gw: backlink on subdirectory should point at parent directory
33 - dnslink gw: breadcrumbs should point at content root mounted at dnslink origin Success 0.006
System.out »
expecting success: 
  test_should_contain "/ipns/<a href=\"//$DNSLINK_HOSTNAME:$GWAY_PORT/\">website.example.com</a>/<a href=\"//$DNSLINK_HOSTNAME:$GWAY_PORT/%C4%85\">ą</a>/<a href=\"//$DNSLINK_HOSTNAME:$GWAY_PORT/%C4%85/%C4%99\">ę</a>" list_response

ok 33 - dnslink gw: breadcrumbs should point at content root mounted at dnslink origin
34 - dnslink gw: name column should be a link to content root mounted at dnslink origin Success 0.007
System.out »
expecting success: 
  test_should_contain "<a href=\"/%C4%85/%C4%99/file-%C5%BA%C5%82.txt\">file-źł.txt</a>" list_response

ok 34 - dnslink gw: name column should be a link to content root mounted at dnslink origin
35 - dnslink gw: hash column should be a CID link to cid.ipfs.tech Success 0.007
System.out »
expecting success: 
  test_should_contain "<a class=\"ipfs-hash\" translate=\"no\" href=\"https://cid.ipfs.tech/#$FILE_CID\" target=\"_blank\" rel=\"noreferrer noopener\">" list_response

ok 35 - dnslink gw: hash column should be a CID link to cid.ipfs.tech
36 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 36 - 'ipfs daemon' is still running
37 - 'ipfs daemon' can be killed Success 0.266
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 37 - 'ipfs daemon' can be killed
38 - clean up ipfs dir Success 0.007
System.out »
expecting success: 
  rm -rf "$IPFS_PATH"

ok 38 - clean up ipfs dir
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init
ok 2 - 'ipfs daemon' succeeds
ok 3 - api file shows up
ok 4 - set up address variables
ok 5 - 'ipfs daemon' is ready
ok 6 - Add the test directory
ok 7 - path gw: backlink on root CID should be hidden
ok 8 - path gw: redirect dir listing to URL with trailing slash
ok 9 - path gw: Etag should be present
ok 10 - path gw: breadcrumbs should point at /ipfs namespace mounted at Origin root
ok 11 - path gw: backlink on subdirectory should point at parent directory
ok 12 - path gw: name column should be a link to its content path
ok 13 - path gw: hash column should be a CID link with filename param
ok 14 - subdomain gw: backlink on root CID should be hidden
ok 15 - subdomain gw: redirect dir listing to URL with trailing slash
ok 16 - subdomain gw: Etag should be present
ok 17 - subdomain gw: backlink on subdirectory should point at parent directory
ok 18 - subdomain gw: breadcrumbs should leverage path-based router mounted on the parent domain
ok 19 - subdomain gw: name column should be a link to content root mounted at subdomain origin
ok 20 - subdomain gw: hash column should be a CID link to path router with filename param
ok 21 - 'ipfs daemon' is still running
ok 22 - 'ipfs daemon' can be killed
ok 23 - 'ipfs daemon' succeeds
ok 24 - api file shows up
ok 25 - set up address variables
ok 26 - get swarm addresses
ok 27 - set swarm address vars
ok 28 - 'ipfs daemon' is ready
ok 29 - dnslink gw: backlink on root CID should be hidden
ok 30 - dnslink gw: redirect dir listing to URL with trailing slash
ok 31 - dnslink gw: Etag should be present
ok 32 - dnslink gw: backlink on subdirectory should point at parent directory
ok 33 - dnslink gw: breadcrumbs should point at content root mounted at dnslink origin
ok 34 - dnslink gw: name column should be a link to content root mounted at dnslink origin
ok 35 - dnslink gw: hash column should be a CID link to cid.ipfs.tech
ok 36 - 'ipfs daemon' is still running
ok 37 - 'ipfs daemon' can be killed
ok 38 - clean up ipfs dir

Back to top

TestCase t0116-gateway-cache

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.178
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.451
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0116-gateway-cache.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0116-gateway-cache.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0116-gateway-cache.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.024
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 7 - 'ipfs daemon' is ready
8 - Add the test directory Success 0.140
System.out »
expecting success: 
  ipfs dag import --pin-roots ../t0116-gateway-cache/fixtures.car
  ipfs routing put --allow-offline /ipns/${TEST_IPNS_ID} ../t0116-gateway-cache/${TEST_IPNS_ID}.ipns-record

Pinned root	bafybeib3ffl2teiqdncv3mkz4r23b5ctrwkzrrhctdbne6iboayxuxk5ui	success
12D3KooWRL2ppK37M2ih6xGfufWVa15jqAcgeQ8ZvoAUJFAfbueZ
ok 8 - Add the test directory
9 - GET for /ipfs/ unixfs dir listing succeeds Success 0.013
System.out »
expecting success: 
      curl -svX GET "http://127.0.0.1:$GWAY_PORT/ipfs/$ROOT1_CID/root2/root3/" >/dev/null 2>curl_ipfs_dir_listing_output
    
ok 9 - GET for /ipfs/ unixfs dir listing succeeds
10 - GET for /ipns/ unixfs dir listing succeeds Success 0.017
System.out »
expecting success: 
      curl -svX GET "http://127.0.0.1:$GWAY_PORT/ipns/$TEST_IPNS_ID/root2/root3/" >/dev/null 2>curl_ipns_dir_listing_output
    
ok 10 - GET for /ipns/ unixfs dir listing succeeds
11 - GET /ipfs/ dir response has special Etag for generated dir listing Success 0.008
System.out »
expecting success: 
    test_should_contain "< Etag: \"DirIndex" curl_ipfs_dir_listing_output &&
    grep -E "< Etag: \"DirIndex-.+_CID-${ROOT3_CID}\"" curl_ipfs_dir_listing_output
    
< Etag: "DirIndex-ck924ob197ble_CID-bafybeiawdvhmjcz65x5egzx4iukxc72hg4woks6v6fvgyupiyt3oczk5ja"
ok 11 - GET /ipfs/ dir response has special Etag for generated dir listing
12 - GET /ipns/ dir response has special Etag for generated dir listing Success 0.007
System.out »
expecting success: 
    test_should_contain "< Etag: \"DirIndex" curl_ipns_dir_listing_output &&
    grep -E "< Etag: \"DirIndex-.+_CID-${ROOT3_CID}\"" curl_ipns_dir_listing_output
    
< Etag: "DirIndex-ck924ob197ble_CID-bafybeiawdvhmjcz65x5egzx4iukxc72hg4woks6v6fvgyupiyt3oczk5ja"
ok 12 - GET /ipns/ dir response has special Etag for generated dir listing
13 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 13 - 'ipfs daemon' is still running
14 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 14 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - 'ipfs daemon' is ready
ok 8 - Add the test directory
ok 9 - GET for /ipfs/ unixfs dir listing succeeds
ok 10 - GET for /ipns/ unixfs dir listing succeeds
ok 11 - GET /ipfs/ dir response has special Etag for generated dir listing
ok 12 - GET /ipns/ dir response has special Etag for generated dir listing
ok 13 - 'ipfs daemon' is still running
ok 14 - 'ipfs daemon' can be killed

Back to top

TestCase t0119-prometheus

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.177
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.469
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0119-prometheus.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0119-prometheus.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0119-prometheus.sh/mfs"
ok 3 - prepare config -- mounting
4 - enable ResourceMgr in the config Success 0.082
System.out »
expecting success: 
  ipfs config --json Swarm.ResourceMgr.Enabled false

ok 4 - enable ResourceMgr in the config
5 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.080
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.011
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - collect metrics Success 0.016
System.out »
expecting success: 
  curl "$API_ADDR/debug/metrics/prometheus" > raw_metrics

ok 11 - collect metrics
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  112k    0  112k    0     0  21.3M      0 --:--:-- --:--:-- --:--:-- 21.9M
12 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 12 - 'ipfs daemon' is still running
13 - 'ipfs daemon' can be killed Success 0.257
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 13 - 'ipfs daemon' can be killed
14 - filter metrics Success 0.024
System.out »
expecting success: 
  sed -ne "s/^\([a-z0-9_]\+\).*/\1/p" raw_metrics | LC_ALL=C sort | uniq > filtered_metrics

ok 14 - filter metrics
15 - make sure metrics haven't changed Success 0.006
System.out »
expecting success: 
  diff -u ../t0119-prometheus-data/prometheus_metrics filtered_metrics

ok 15 - make sure metrics haven't changed
16 - enable ResourceMgr in the config Success 0.087
System.out »
expecting success: 
  ipfs config --json Swarm.ResourceMgr.Enabled true

ok 16 - enable ResourceMgr in the config
17 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 17 - 'ipfs daemon' succeeds
18 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 18 - api file shows up
19 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 19 - set up address variables
20 - get swarm addresses Success 0.065
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 20 - get swarm addresses
21 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 21 - set swarm address vars
22 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 22 - 'ipfs daemon' is ready
23 - collect metrics Success 0.016
System.out »
expecting success: 
  curl "$API_ADDR/debug/metrics/prometheus" > raw_metrics

ok 23 - collect metrics
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  113k    0  113k    0     0  29.5M      0 --:--:-- --:--:-- --:--:-- 37.0M
24 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 24 - 'ipfs daemon' is still running
25 - 'ipfs daemon' can be killed Success 0.301
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 25 - 'ipfs daemon' can be killed
26 - filter metrics and find ones added by enabling ResourceMgr Success 0.035
System.out »
expecting success: 
  sed -ne "s/^\([a-z0-9_]\+\).*/\1/p" raw_metrics | LC_ALL=C sort > filtered_metrics &&
  grep -v -x -f ../t0119-prometheus-data/prometheus_metrics filtered_metrics | LC_ALL=C sort | uniq > rcmgr_metrics

ok 26 - filter metrics and find ones added by enabling ResourceMgr
27 - make sure initial metrics added by setting ResourceMgr.Enabled haven't changed Success 0.006
System.out »
expecting success: 
  diff -u ../t0119-prometheus-data/prometheus_metrics_added_by_enabling_rcmgr rcmgr_metrics

ok 27 - make sure initial metrics added by setting ResourceMgr.Enabled haven't changed
28 - remove ipfs directory Success 0.005
System.out »
expecting success: 
  rm -rf .ipfs mountdir ipfs ipns

ok 28 - remove ipfs directory
29 - ipfs init succeeds Success 0.094
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test,flatfs-measure > /dev/null
  
ok 29 - ipfs init succeeds
30 - disable telemetry Success 0.190
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 30 - disable telemetry
31 - prepare config -- mounting Success 0.282
System.out »
expecting success: 
    mkdir mountdir ipfs ipns &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0119-prometheus.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0119-prometheus.sh/ipns"
ok 31 - prepare config -- mounting
32 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 32 - 'ipfs daemon' succeeds
33 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 33 - api file shows up
34 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 34 - set up address variables
35 - get swarm addresses Success 0.065
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 35 - get swarm addresses
36 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 36 - set swarm address vars
37 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 37 - 'ipfs daemon' is ready
38 - collect metrics Success 0.015
System.out »
expecting success: 
  curl "$API_ADDR/debug/metrics/prometheus" > raw_metrics

ok 38 - collect metrics
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  142k    0  142k    0     0  44.0M      0 --:--:-- --:--:-- --:--:-- 46.3M
39 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 39 - 'ipfs daemon' is still running
40 - 'ipfs daemon' can be killed Success 0.263
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 40 - 'ipfs daemon' can be killed
41 - filter metrics and find ones added by enabling flatfs-measure profile Success 0.024
System.out »
expecting success: 
  sed -ne "s/^\([a-z0-9_]\+\).*/\1/p" raw_metrics | LC_ALL=C sort > filtered_metrics &&
  grep -v -x -f ../t0119-prometheus-data/prometheus_metrics filtered_metrics | LC_ALL=C sort | uniq > measure_metrics

ok 41 - filter metrics and find ones added by enabling flatfs-measure profile
42 - make sure initial metrics added by initializing with flatfs-measure profile haven't changed Success 0.006
System.out »
expecting success: 
  diff -u ../t0119-prometheus-data/prometheus_metrics_added_by_measure_profile measure_metrics

ok 42 - make sure initial metrics added by initializing with flatfs-measure profile haven't changed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - enable ResourceMgr in the config
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - collect metrics
ok 12 - 'ipfs daemon' is still running
ok 13 - 'ipfs daemon' can be killed
ok 14 - filter metrics
ok 15 - make sure metrics haven't changed
ok 16 - enable ResourceMgr in the config
ok 17 - 'ipfs daemon' succeeds
ok 18 - api file shows up
ok 19 - set up address variables
ok 20 - get swarm addresses
ok 21 - set swarm address vars
ok 22 - 'ipfs daemon' is ready
ok 23 - collect metrics
ok 24 - 'ipfs daemon' is still running
ok 25 - 'ipfs daemon' can be killed
ok 26 - filter metrics and find ones added by enabling ResourceMgr
ok 27 - make sure initial metrics added by setting ResourceMgr.Enabled haven't changed
ok 28 - remove ipfs directory
ok 29 - ipfs init succeeds
ok 30 - disable telemetry
ok 31 - prepare config -- mounting
ok 32 - 'ipfs daemon' succeeds
ok 33 - api file shows up
ok 34 - set up address variables
ok 35 - get swarm addresses
ok 36 - set swarm address vars
ok 37 - 'ipfs daemon' is ready
ok 38 - collect metrics
ok 39 - 'ipfs daemon' is still running
ok 40 - 'ipfs daemon' can be killed
ok 41 - filter metrics and find ones added by enabling flatfs-measure profile
ok 42 - make sure initial metrics added by initializing with flatfs-measure profile haven't changed

Back to top

TestCase t0120-bootstrap

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.168
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.463
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0120-bootstrap.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0120-bootstrap.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0120-bootstrap.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs bootstrap' succeeds Success 0.074
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 4 - 'ipfs bootstrap' succeeds
5 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 5 - 'ipfs bootstrap' output looks good
6 - 'ipfs bootstrap list' succeeds Success 0.066
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 6 - 'ipfs bootstrap list' succeeds
7 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 7 - 'ipfs bootstrap list' output looks good
8 - 'ipfs bootstrap add' succeeds Success 0.069
System.out »
expecting success: 
    ipfs bootstrap add "$BP1" "$BP2" "$BP3" >add_actual
  
ok 8 - 'ipfs bootstrap add' succeeds
9 - 'ipfs bootstrap add' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BP1" >add_expected &&
    echo "added $BP2" >>add_expected &&
    echo "added $BP3" >>add_expected &&
    test_cmp add_expected add_actual
  
ok 9 - 'ipfs bootstrap add' output looks good
10 - 'ipfs bootstrap' succeeds Success 0.079
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 10 - 'ipfs bootstrap' succeeds
11 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 11 - 'ipfs bootstrap' output looks good
12 - 'ipfs bootstrap list' succeeds Success 0.082
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 12 - 'ipfs bootstrap list' succeeds
13 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 13 - 'ipfs bootstrap list' output looks good
14 - 'ipfs bootstrap rm' succeeds Success 0.088
System.out »
expecting success: 
    ipfs bootstrap rm "$BP1" "$BP3" >rm_actual
  
ok 14 - 'ipfs bootstrap rm' succeeds
15 - 'ipfs bootstrap rm' output looks good Success 0.006
System.out »
expecting success: 
    echo "removed $BP1" >rm_expected &&
    echo "removed $BP3" >>rm_expected &&
    test_cmp rm_expected rm_actual
  
ok 15 - 'ipfs bootstrap rm' output looks good
16 - 'ipfs bootstrap rm' fails on bad peers Success 0.075
System.out »
expecting success: 
    test_expect_code 1 ipfs bootstrap rm "foo/bar"
  
ok 16 - 'ipfs bootstrap rm' fails on bad peers
System.err »
Error: failed to parse multiaddr "foo/bar": must begin with /
17 - 'ipfs bootstrap' succeeds Success 0.111
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 17 - 'ipfs bootstrap' succeeds
18 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 18 - 'ipfs bootstrap' output looks good
19 - 'ipfs bootstrap list' succeeds Success 0.076
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 19 - 'ipfs bootstrap list' succeeds
20 - 'ipfs bootstrap list' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 20 - 'ipfs bootstrap list' output looks good
21 - 'ipfs bootstrap rm --all' succeeds Success 0.098
System.out »
expecting success: 
    ipfs bootstrap rm --all >rm2_actual
  
ok 21 - 'ipfs bootstrap rm --all' succeeds
22 - 'ipfs bootstrap rm' output looks good Success 0.006
System.out »
expecting success: 
    echo "removed $BP2" >rm2_expected &&
    test_cmp rm2_expected rm2_actual
  
ok 22 - 'ipfs bootstrap rm' output looks good
23 - 'ipfs bootstrap' succeeds Success 0.071
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 23 - 'ipfs bootstrap' succeeds
24 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 24 - 'ipfs bootstrap' output looks good
25 - 'ipfs bootstrap list' succeeds Success 0.070
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 25 - 'ipfs bootstrap list' succeeds
26 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 26 - 'ipfs bootstrap list' output looks good
27 - 'ipfs bootstrap add' accepts args from stdin Success 0.069
System.out »
expecting success: 
  echo $BP1 > bpeers &&
  echo $BP2 >> bpeers &&
  echo $BP3 >> bpeers &&
  echo $BP4 >> bpeers &&
  cat bpeers | ipfs bootstrap add > add_stdin_actual
  
ok 27 - 'ipfs bootstrap add' accepts args from stdin
28 - output looks good Success 0.005
System.out »
expecting success: 
  echo "added $BP1" > bpeers_add_exp &&
  echo "added $BP2" >> bpeers_add_exp &&
  echo "added $BP3" >> bpeers_add_exp &&
  echo "added $BP4" >> bpeers_add_exp &&
  test_cmp add_stdin_actual bpeers_add_exp
  
ok 28 - output looks good
29 - 'ipfs bootstrap' succeeds Success 0.078
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 29 - 'ipfs bootstrap' succeeds
30 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 30 - 'ipfs bootstrap' output looks good
31 - 'ipfs bootstrap list' succeeds Success 0.075
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 31 - 'ipfs bootstrap list' succeeds
32 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 32 - 'ipfs bootstrap list' output looks good
33 - 'ipfs bootstrap rm' accepts args from stdin Success 0.081
System.out »
expecting success: 
  cat bpeers | ipfs bootstrap rm > rm_stdin_actual
  
ok 33 - 'ipfs bootstrap rm' accepts args from stdin
34 - output looks good Success 0.007
System.out »
expecting success: 
  echo "removed $BP1" > bpeers_rm_exp &&
  echo "removed $BP2" >> bpeers_rm_exp &&
  echo "removed $BP3" >> bpeers_rm_exp &&
  echo "removed $BP4" >> bpeers_rm_exp &&
  test_cmp rm_stdin_actual bpeers_rm_exp
  
ok 34 - output looks good
35 - 'ipfs bootstrap' succeeds Success 0.072
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 35 - 'ipfs bootstrap' succeeds
36 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 36 - 'ipfs bootstrap' output looks good
37 - 'ipfs bootstrap list' succeeds Success 0.080
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 37 - 'ipfs bootstrap list' succeeds
38 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 38 - 'ipfs bootstrap list' output looks good
39 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 39 - 'ipfs daemon' succeeds
40 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 40 - api file shows up
41 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 41 - set up address variables
42 - get swarm addresses Success 0.058
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 42 - get swarm addresses
43 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 43 - set swarm address vars
44 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 44 - 'ipfs daemon' is ready
45 - 'ipfs bootstrap' succeeds Success 0.061
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 45 - 'ipfs bootstrap' succeeds
46 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 46 - 'ipfs bootstrap' output looks good
47 - 'ipfs bootstrap list' succeeds Success 0.058
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 47 - 'ipfs bootstrap list' succeeds
48 - 'ipfs bootstrap list' output looks good Success 0.004
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 48 - 'ipfs bootstrap list' output looks good
49 - 'ipfs bootstrap add' succeeds Success 0.059
System.out »
expecting success: 
    ipfs bootstrap add "$BP1" "$BP2" "$BP3" >add_actual
  
ok 49 - 'ipfs bootstrap add' succeeds
50 - 'ipfs bootstrap add' output looks good Success 0.006
System.out »
expecting success: 
    echo "added $BP1" >add_expected &&
    echo "added $BP2" >>add_expected &&
    echo "added $BP3" >>add_expected &&
    test_cmp add_expected add_actual
  
ok 50 - 'ipfs bootstrap add' output looks good
51 - 'ipfs bootstrap' succeeds Success 0.076
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 51 - 'ipfs bootstrap' succeeds
52 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 52 - 'ipfs bootstrap' output looks good
53 - 'ipfs bootstrap list' succeeds Success 0.088
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 53 - 'ipfs bootstrap list' succeeds
54 - 'ipfs bootstrap list' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 54 - 'ipfs bootstrap list' output looks good
55 - 'ipfs bootstrap rm' succeeds Success 0.086
System.out »
expecting success: 
    ipfs bootstrap rm "$BP1" "$BP3" >rm_actual
  
ok 55 - 'ipfs bootstrap rm' succeeds
56 - 'ipfs bootstrap rm' output looks good Success 0.006
System.out »
expecting success: 
    echo "removed $BP1" >rm_expected &&
    echo "removed $BP3" >>rm_expected &&
    test_cmp rm_expected rm_actual
  
ok 56 - 'ipfs bootstrap rm' output looks good
57 - 'ipfs bootstrap rm' fails on bad peers Success 0.079
System.out »
expecting success: 
    test_expect_code 1 ipfs bootstrap rm "foo/bar"
  
ok 57 - 'ipfs bootstrap rm' fails on bad peers
System.err »
Error: failed to parse multiaddr "foo/bar": must begin with /
58 - 'ipfs bootstrap' succeeds Success 0.088
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 58 - 'ipfs bootstrap' succeeds
59 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 59 - 'ipfs bootstrap' output looks good
60 - 'ipfs bootstrap list' succeeds Success 0.139
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 60 - 'ipfs bootstrap list' succeeds
61 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 61 - 'ipfs bootstrap list' output looks good
62 - 'ipfs bootstrap rm --all' succeeds Success 0.094
System.out »
expecting success: 
    ipfs bootstrap rm --all >rm2_actual
  
ok 62 - 'ipfs bootstrap rm --all' succeeds
System.err »
ipfs: Reading from /dev/stdin; send Ctrl-d to stop.
63 - 'ipfs bootstrap rm' output looks good Success 0.007
System.out »
expecting success: 
    echo "removed $BP2" >rm2_expected &&
    test_cmp rm2_expected rm2_actual
  
ok 63 - 'ipfs bootstrap rm' output looks good
64 - 'ipfs bootstrap' succeeds Success 0.055
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 64 - 'ipfs bootstrap' succeeds
65 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 65 - 'ipfs bootstrap' output looks good
66 - 'ipfs bootstrap list' succeeds Success 0.069
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 66 - 'ipfs bootstrap list' succeeds
67 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 67 - 'ipfs bootstrap list' output looks good
68 - 'ipfs bootstrap add' accepts args from stdin Success 0.078
System.out »
expecting success: 
  echo $BP1 > bpeers &&
  echo $BP2 >> bpeers &&
  echo $BP3 >> bpeers &&
  echo $BP4 >> bpeers &&
  cat bpeers | ipfs bootstrap add > add_stdin_actual
  
ok 68 - 'ipfs bootstrap add' accepts args from stdin
69 - output looks good Success 0.005
System.out »
expecting success: 
  echo "added $BP1" > bpeers_add_exp &&
  echo "added $BP2" >> bpeers_add_exp &&
  echo "added $BP3" >> bpeers_add_exp &&
  echo "added $BP4" >> bpeers_add_exp &&
  test_cmp add_stdin_actual bpeers_add_exp
  
ok 69 - output looks good
70 - 'ipfs bootstrap' succeeds Success 0.077
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 70 - 'ipfs bootstrap' succeeds
71 - 'ipfs bootstrap' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 71 - 'ipfs bootstrap' output looks good
72 - 'ipfs bootstrap list' succeeds Success 0.085
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 72 - 'ipfs bootstrap list' succeeds
73 - 'ipfs bootstrap list' output looks good Success 0.007
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 73 - 'ipfs bootstrap list' output looks good
74 - 'ipfs bootstrap rm' accepts args from stdin Success 0.063
System.out »
expecting success: 
  cat bpeers | ipfs bootstrap rm > rm_stdin_actual
  
ok 74 - 'ipfs bootstrap rm' accepts args from stdin
75 - output looks good Success 0.006
System.out »
expecting success: 
  echo "removed $BP1" > bpeers_rm_exp &&
  echo "removed $BP2" >> bpeers_rm_exp &&
  echo "removed $BP3" >> bpeers_rm_exp &&
  echo "removed $BP4" >> bpeers_rm_exp &&
  test_cmp rm_stdin_actual bpeers_rm_exp
  
ok 75 - output looks good
76 - 'ipfs bootstrap' succeeds Success 0.064
System.out »
expecting success: 
    ipfs bootstrap >list_actual
  
ok 76 - 'ipfs bootstrap' succeeds
77 - 'ipfs bootstrap' output looks good Success 0.006
System.out »
expecting success: 
    test_cmp list_expected list_actual
  
ok 77 - 'ipfs bootstrap' output looks good
78 - 'ipfs bootstrap list' succeeds Success 0.077
System.out »
expecting success: 
    ipfs bootstrap list >list2_actual
  
ok 78 - 'ipfs bootstrap list' succeeds
79 - 'ipfs bootstrap list' output looks good Success 0.005
System.out »
expecting success: 
    test_cmp list_expected list2_actual
  
ok 79 - 'ipfs bootstrap list' output looks good
80 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 80 - 'ipfs daemon' is still running
81 - 'ipfs daemon' can be killed Success 0.270
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 81 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs bootstrap' succeeds
ok 5 - 'ipfs bootstrap' output looks good
ok 6 - 'ipfs bootstrap list' succeeds
ok 7 - 'ipfs bootstrap list' output looks good
ok 8 - 'ipfs bootstrap add' succeeds
ok 9 - 'ipfs bootstrap add' output looks good
ok 10 - 'ipfs bootstrap' succeeds
ok 11 - 'ipfs bootstrap' output looks good
ok 12 - 'ipfs bootstrap list' succeeds
ok 13 - 'ipfs bootstrap list' output looks good
ok 14 - 'ipfs bootstrap rm' succeeds
ok 15 - 'ipfs bootstrap rm' output looks good
ok 16 - 'ipfs bootstrap rm' fails on bad peers
ok 17 - 'ipfs bootstrap' succeeds
ok 18 - 'ipfs bootstrap' output looks good
ok 19 - 'ipfs bootstrap list' succeeds
ok 20 - 'ipfs bootstrap list' output looks good
ok 21 - 'ipfs bootstrap rm --all' succeeds
ok 22 - 'ipfs bootstrap rm' output looks good
ok 23 - 'ipfs bootstrap' succeeds
ok 24 - 'ipfs bootstrap' output looks good
ok 25 - 'ipfs bootstrap list' succeeds
ok 26 - 'ipfs bootstrap list' output looks good
ok 27 - 'ipfs bootstrap add' accepts args from stdin
ok 28 - output looks good
ok 29 - 'ipfs bootstrap' succeeds
ok 30 - 'ipfs bootstrap' output looks good
ok 31 - 'ipfs bootstrap list' succeeds
ok 32 - 'ipfs bootstrap list' output looks good
ok 33 - 'ipfs bootstrap rm' accepts args from stdin
ok 34 - output looks good
ok 35 - 'ipfs bootstrap' succeeds
ok 36 - 'ipfs bootstrap' output looks good
ok 37 - 'ipfs bootstrap list' succeeds
ok 38 - 'ipfs bootstrap list' output looks good
ok 39 - 'ipfs daemon' succeeds
ok 40 - api file shows up
ok 41 - set up address variables
ok 42 - get swarm addresses
ok 43 - set swarm address vars
ok 44 - 'ipfs daemon' is ready
ok 45 - 'ipfs bootstrap' succeeds
ok 46 - 'ipfs bootstrap' output looks good
ok 47 - 'ipfs bootstrap list' succeeds
ok 48 - 'ipfs bootstrap list' output looks good
ok 49 - 'ipfs bootstrap add' succeeds
ok 50 - 'ipfs bootstrap add' output looks good
ok 51 - 'ipfs bootstrap' succeeds
ok 52 - 'ipfs bootstrap' output looks good
ok 53 - 'ipfs bootstrap list' succeeds
ok 54 - 'ipfs bootstrap list' output looks good
ok 55 - 'ipfs bootstrap rm' succeeds
ok 56 - 'ipfs bootstrap rm' output looks good
ok 57 - 'ipfs bootstrap rm' fails on bad peers
ok 58 - 'ipfs bootstrap' succeeds
ok 59 - 'ipfs bootstrap' output looks good
ok 60 - 'ipfs bootstrap list' succeeds
ok 61 - 'ipfs bootstrap list' output looks good
ok 62 - 'ipfs bootstrap rm --all' succeeds
ok 63 - 'ipfs bootstrap rm' output looks good
ok 64 - 'ipfs bootstrap' succeeds
ok 65 - 'ipfs bootstrap' output looks good
ok 66 - 'ipfs bootstrap list' succeeds
ok 67 - 'ipfs bootstrap list' output looks good
ok 68 - 'ipfs bootstrap add' accepts args from stdin
ok 69 - output looks good
ok 70 - 'ipfs bootstrap' succeeds
ok 71 - 'ipfs bootstrap' output looks good
ok 72 - 'ipfs bootstrap list' succeeds
ok 73 - 'ipfs bootstrap list' output looks good
ok 74 - 'ipfs bootstrap rm' accepts args from stdin
ok 75 - output looks good
ok 76 - 'ipfs bootstrap' succeeds
ok 77 - 'ipfs bootstrap' output looks good
ok 78 - 'ipfs bootstrap list' succeeds
ok 79 - 'ipfs bootstrap list' output looks good
ok 80 - 'ipfs daemon' is still running
ok 81 - 'ipfs daemon' can be killed

Back to top

TestCase t0121-bootstrap-iptb

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.102
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.165
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.482
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0121-bootstrap-iptb.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0121-bootstrap-iptb.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0121-bootstrap-iptb.sh/mfs"
ok 3 - prepare config -- mounting
4 - disable mdns Success 0.083
System.out »
expecting success: 
  ipfs config Discovery.MDNS.Enabled false --json

ok 4 - disable mdns
5 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.059
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - setup iptb nodes Success 0.548
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 5 -force -init

ok 11 - setup iptb nodes
12 - start up iptb nodes Success 0.424
System.out »
expecting success: 
  iptb start -wait

ok 12 - start up iptb nodes
13 - check peers works Success 0.060
System.out »
expecting success: 
  ipfs swarm peers >peers_out

ok 13 - check peers works
14 - correct number of peers Success 0.006
System.out »
expecting success: 
  test -z "`cat peers_out`"

ok 14 - correct number of peers
15 - bring down iptb nodes Success 0.085
System.out »
expecting success: 
  PID0=$(cat "$IPTB_ROOT/testbeds/default/0/daemon.pid") &&
  PID1=$(cat "$IPTB_ROOT/testbeds/default/1/daemon.pid") &&
  PID2=$(cat "$IPTB_ROOT/testbeds/default/2/daemon.pid") &&
  PID3=$(cat "$IPTB_ROOT/testbeds/default/3/daemon.pid") &&
  PID4=$(cat "$IPTB_ROOT/testbeds/default/4/daemon.pid") &&
  iptb stop && # TODO: add --wait flag to iptb stop
  betterwait $PID0
  betterwait $PID1
  betterwait $PID2
  betterwait $PID3
  betterwait $PID4

ok 15 - bring down iptb nodes
System.err »
./t0121-bootstrap-iptb.sh: line 37: kill: (219479) - No such process
./t0121-bootstrap-iptb.sh: line 37: kill: (219480) - No such process
./t0121-bootstrap-iptb.sh: line 37: kill: (219477) - No such process
./t0121-bootstrap-iptb.sh: line 37: kill: (219478) - No such process
./t0121-bootstrap-iptb.sh: line 37: kill: (219476) - No such process
16 - reset iptb nodes Success 0.488
System.out »
expecting success: 
  # the api does not seem to get cleaned up in sharness tests for some reason
  iptb testbed create -type localipfs -count 5 -force -init

ok 16 - reset iptb nodes
17 - set bootstrap addrs Success 0.406
System.out »
expecting success: 
  bsn_peer_id=$(ipfs id -f "<id>") &&
  BADDR="/ip4/127.0.0.1/tcp/$SWARM_PORT/p2p/$bsn_peer_id" &&
  ipfsi 0 bootstrap add $BADDR &&
  ipfsi 1 bootstrap add $BADDR &&
  ipfsi 2 bootstrap add $BADDR &&
  ipfsi 3 bootstrap add $BADDR &&
  ipfsi 4 bootstrap add $BADDR

added /ip4/127.0.0.1/tcp/37619/p2p/12D3KooWAEwr1usagJv2jaVdHzPjBSrLYFEKfuKho6iEpiFhLoMF
added /ip4/127.0.0.1/tcp/37619/p2p/12D3KooWAEwr1usagJv2jaVdHzPjBSrLYFEKfuKho6iEpiFhLoMF
added /ip4/127.0.0.1/tcp/37619/p2p/12D3KooWAEwr1usagJv2jaVdHzPjBSrLYFEKfuKho6iEpiFhLoMF
added /ip4/127.0.0.1/tcp/37619/p2p/12D3KooWAEwr1usagJv2jaVdHzPjBSrLYFEKfuKho6iEpiFhLoMF
added /ip4/127.0.0.1/tcp/37619/p2p/12D3KooWAEwr1usagJv2jaVdHzPjBSrLYFEKfuKho6iEpiFhLoMF
ok 17 - set bootstrap addrs
18 - start up iptb nodes Success 0.427
System.out »
expecting success: 
  iptb start -wait

ok 18 - start up iptb nodes
19 - check peers works Success 0.055
System.out »
expecting success: 
  ipfs swarm peers > peers_out

ok 19 - check peers works
20 - correct number of peers Success 0.006
System.out »
expecting success: 
  test `cat peers_out | wc -l` = 5

ok 20 - correct number of peers
21 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 21 - 'ipfs daemon' is still running
22 - 'ipfs daemon' can be killed Success 0.256
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 22 - 'ipfs daemon' can be killed
23 - bring down iptb nodes Success 0.021
System.out »
expecting success: 
  iptb stop

ok 23 - bring down iptb nodes
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - disable mdns
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - setup iptb nodes
ok 12 - start up iptb nodes
ok 13 - check peers works
ok 14 - correct number of peers
ok 15 - bring down iptb nodes
ok 16 - reset iptb nodes
ok 17 - set bootstrap addrs
ok 18 - start up iptb nodes
ok 19 - check peers works
ok 20 - correct number of peers
ok 21 - 'ipfs daemon' is still running
ok 22 - 'ipfs daemon' can be killed
ok 23 - bring down iptb nodes

Back to top

TestCase t0131-multinode-client-routing

Name Status Type Time(s)
1 - set up testbed Success 1.064
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $NNODES -force -init &&
  iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


node[5] exit 0


node[6] exit 0


node[7] exit 0


node[8] exit 0


node[9] exit 0


ok 1 - set up testbed
2 - start up nodes Success 0.852
System.out »
expecting success: 
  iptb start -wait [0-7] &&
  iptb start -wait [8-9] -- --routing=dhtclient

ok 2 - start up nodes
3 - connect up nodes Success 1.098
System.out »
expecting success: 
  iptb connect [1-9] 0

ok 3 - connect up nodes
4 - add a file on a node in client mode Success 0.127
System.out »
expecting success: 
  random-data -size=1000000 > filea &&
  FILE_HASH=$(ipfsi 8 add -q filea)

ok 4 - add a file on a node in client mode
6 - can fetch file Success 1.227
System.out »
expecting success: 
  check_file_fetch 9 $FILE_HASH filea

expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 6 - can fetch file
ok 6 - can fetch file
7 - retrieve that file on a node in client mode Success 0.031
System.out »
ok 7 - retrieve that file on a node in client mode
8 - add a file on node1 Success 0.091
System.out »
expecting success: 
    random-data -size=1000000 > filea &&
    FILEA_HASH=$(ipfsi 1 add -q filea)
  
ok 8 - add a file on node1
9 - can fetch file Success 0.109
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 9 - can fetch file
10 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 10 - file looks good
11 - can fetch file Success 0.107
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 11 - can fetch file
12 - file looks good Success 0.007
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 12 - file looks good
13 - can fetch file Success 0.101
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 13 - can fetch file
14 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 14 - file looks good
15 - can fetch file Success 0.114
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 15 - can fetch file
16 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 16 - file looks good
17 - can fetch file Success 0.093
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 17 - can fetch file
18 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 18 - file looks good
19 - can fetch file Success 0.104
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 19 - can fetch file
20 - file looks good Success 0.008
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 20 - file looks good
21 - can fetch file Success 0.097
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 21 - can fetch file
22 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 22 - file looks good
23 - can fetch file Success 0.097
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 23 - can fetch file
24 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 24 - file looks good
25 - can fetch file Success 0.083
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 25 - can fetch file
26 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 26 - file looks good
27 - can fetch file Success 0.115
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 27 - can fetch file
28 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 28 - file looks good
29 - shut down nodes Success 0.027
System.out »
expecting success: 
  iptb stop

ok 29 - shut down nodes
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - set up testbed
ok 2 - start up nodes
ok 3 - connect up nodes
ok 4 - add a file on a node in client mode
ok 7 - retrieve that file on a node in client mode
ok 8 - add a file on node1
ok 9 - can fetch file
ok 10 - file looks good
ok 11 - can fetch file
ok 12 - file looks good
ok 13 - can fetch file
ok 14 - file looks good
ok 15 - can fetch file
ok 16 - file looks good
ok 17 - can fetch file
ok 18 - file looks good
ok 19 - can fetch file
ok 20 - file looks good
ok 21 - can fetch file
ok 22 - file looks good
ok 23 - can fetch file
ok 24 - file looks good
ok 25 - can fetch file
ok 26 - file looks good
ok 27 - can fetch file
ok 28 - file looks good
ok 29 - shut down nodes

Back to top

TestCase t0140-swarm

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.091
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.162
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.446
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0140-swarm.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0140-swarm.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0140-swarm.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.211
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.090
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - disconnected: peers is empty Success 0.058
System.out »
expecting success: 
  ipfs swarm peers >actual &&
  test_must_be_empty actual

ok 10 - disconnected: peers is empty
11 - disconnected: addrs local has localhost Success 0.079
System.out »
expecting success: 
  ipfs swarm addrs local >actual &&
  grep "/ip4/127.0.0.1" actual

/ip4/127.0.0.1/tcp/43917
ok 11 - disconnected: addrs local has localhost
12 - disconnected: addrs local matches ipfs id Success 0.142
System.out »
expecting success: 
  ipfs id -f="<addrs>\\n" | sort >expected &&
  ipfs swarm addrs local --id | sort >actual &&
  test_cmp expected actual

ok 12 - disconnected: addrs local matches ipfs id
13 - ipfs id self works Success 0.114
System.out »
expecting success: 
  myid=$(ipfs id -f="<id>") &&
  ipfs id --timeout=1s $myid > output

ok 13 - ipfs id self works
14 - output looks good Success 0.006
System.out »
expecting success: 
  grep $myid output &&
  grep PublicKey output

	"ID": "12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi",
		"/ip4/127.0.0.1/tcp/43917/p2p/12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi"
	"PublicKey": "CAESIK4PukOxl0JUrRqrY6LGGCKqKNrIPvUIL0P4S7KCKD3F",
ok 14 - output looks good
15 - can't trigger a dial backoff with swarm connect Success 0.170
System.out »
expecting success: 
  test_expect_code 1 ipfs swarm connect $addr 2> connect_out
  test_expect_code 1 ipfs swarm connect $addr 2>> connect_out
  test_expect_code 1 ipfs swarm connect $addr 2>> connect_out
  test_expect_code 1 grep "backoff" connect_out

ok 15 - can't trigger a dial backoff with swarm connect
16 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 16 - 'ipfs daemon' is still running
17 - 'ipfs daemon' can be killed Success 0.256
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 17 - 'ipfs daemon' can be killed
18 - test_config_set succeeds Success 0.081
System.out »
expecting success: 
  ipfs config --json Addresses.Announce '["/ip4/127.0.0.1/tcp/4001", "/ip4/1.2.3.4/tcp/1234"]'

ok 18 - test_config_set succeeds
19 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 19 - 'ipfs daemon' succeeds
20 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 20 - api file shows up
21 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 21 - set up address variables
22 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 22 - get swarm addresses
23 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 23 - set swarm address vars
24 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 24 - 'ipfs daemon' is ready
25 - Addresses.Announce affects addresses Success 0.123
System.out »
expecting success: 
  ipfs swarm addrs local >actual &&
  test_should_contain "/ip4/1.2.3.4/tcp/1234" actual &&
  ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
  test_should_contain "/ip4/1.2.3.4/tcp/1234" actual

ok 25 - Addresses.Announce affects addresses
26 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 26 - 'ipfs daemon' is still running
27 - 'ipfs daemon' can be killed Success 0.259
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 27 - 'ipfs daemon' can be killed
28 - test_config_set succeeds Success 0.080
System.out »
expecting success: 
  ipfs config --json Addresses.Announce '["/ip4/127.0.0.1/tcp/4001", "/ip4/1.2.3.4/tcp/1234"]'

ok 28 - test_config_set succeeds
29 - test_config_set Announce and AppendAnnounce succeeds Success 0.215
System.out »
expecting success: 
  ipfs config --json Addresses.Announce '["/ip4/127.0.0.1/tcp/4001", "/ip4/1.2.3.4/tcp/1234"]' &&
  ipfs config --json Addresses.AppendAnnounce '["/dnsaddr/dynamic.example.com", "/ip4/10.20.30.40/tcp/4321", "/ip4/1.2.3.4/tcp/1234"]'

ok 29 - test_config_set Announce and AppendAnnounce succeeds
30 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 30 - 'ipfs daemon' succeeds
31 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 31 - api file shows up
32 - set up address variables Success 0.028
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 32 - set up address variables
33 - get swarm addresses Success 0.139
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 33 - get swarm addresses
34 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 34 - set swarm address vars
35 - 'ipfs daemon' is ready Success 0.022
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 35 - 'ipfs daemon' is ready
36 - Addresses.AppendAnnounce is applied on top of Announce Success 0.149
System.out »
expecting success: 
  ipfs swarm addrs local >actual &&
  test_should_contain "/ip4/1.2.3.4/tcp/1234" actual &&
  test_should_contain "/dnsaddr/dynamic.example.com" actual &&
  test_should_contain "/ip4/10.20.30.40/tcp/4321" actual &&
  ipfs id -f"<addrs>" | xargs -n1 echo | tee actual &&
  test_should_contain "/ip4/1.2.3.4/tcp/1234/p2p" actual &&
  test_should_contain "/dnsaddr/dynamic.example.com/p2p/" actual &&
  test_should_contain "/ip4/10.20.30.40/tcp/4321/p2p/" actual

/dnsaddr/dynamic.example.com/p2p/12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi
/ip4/1.2.3.4/tcp/1234/p2p/12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi
/ip4/10.20.30.40/tcp/4321/p2p/12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi
/ip4/127.0.0.1/tcp/4001/p2p/12D3KooWMXq1z5uTcY4d6C23MKca6TshNm7JxqCRJ1KvEVYKeihi
ok 36 - Addresses.AppendAnnounce is applied on top of Announce
37 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 37 - 'ipfs daemon' is still running
38 - 'ipfs daemon' can be killed Success 0.266
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 38 - 'ipfs daemon' can be killed
39 - test_config_set succeeds Success 0.073
System.out »
expecting success: 
  ipfs config --json Addresses.NoAnnounce '["/ip4/1.2.3.4/tcp/1234", "/ip4/10.20.30.40/tcp/4321"]'

ok 39 - test_config_set succeeds
40 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 40 - 'ipfs daemon' succeeds
41 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 41 - api file shows up
42 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 42 - set up address variables
43 - get swarm addresses Success 0.078
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 43 - get swarm addresses
44 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 44 - set swarm address vars
45 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 45 - 'ipfs daemon' is ready
46 - Addresses.NoAnnounce affects addresses from Announce and AppendAnnounce Success 0.143
System.out »
expecting success: 
  ipfs swarm addrs local >actual &&
  test_should_not_contain "/ip4/1.2.3.4/tcp/1234" actual &&
  test_should_not_contain "/ip4/10.20.30.40/tcp/4321" actual &&
  ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
  test_should_not_contain "/ip4/1.2.3.4/tcp/1234" actual &&
  test_should_not_contain "/ip4/10.20.30.40/tcp/4321" actual

ok 46 - Addresses.NoAnnounce affects addresses from Announce and AppendAnnounce
47 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 47 - 'ipfs daemon' is still running
48 - 'ipfs daemon' can be killed Success 0.271
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 48 - 'ipfs daemon' can be killed
49 - test_config_set succeeds Success 0.082
System.out »
expecting success: 
  ipfs config --json Addresses.NoAnnounce '["/ip4/1.2.3.4/ipcidr/16"]'

ok 49 - test_config_set succeeds
50 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 50 - 'ipfs daemon' succeeds
51 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 51 - api file shows up
52 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 52 - set up address variables
53 - get swarm addresses Success 0.062
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 53 - get swarm addresses
54 - set swarm address vars Success 0.011
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 54 - set swarm address vars
55 - 'ipfs daemon' is ready Success 0.011
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 55 - 'ipfs daemon' is ready
56 - Addresses.NoAnnounce with /ipcidr affects addresses Success 0.142
System.out »
expecting success: 
  ipfs swarm addrs local >actual &&
  test_should_not_contain "/ip4/1.2.3.4/tcp/1234" actual &&
  ipfs id -f"<addrs>" | xargs -n1 echo >actual &&
  test_should_not_contain "/ip4/1.2.3.4/tcp/1234" actual

ok 56 - Addresses.NoAnnounce with /ipcidr affects addresses
57 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 57 - 'ipfs daemon' is still running
58 - 'ipfs daemon' can be killed Success 0.269
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 58 - 'ipfs daemon' can be killed
59 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 59 - 'ipfs daemon' succeeds
60 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 60 - api file shows up
61 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 61 - set up address variables
62 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 62 - get swarm addresses
63 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 63 - set swarm address vars
64 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 64 - 'ipfs daemon' is ready
65 - 'ipfs swarm peering ls' lists peerings Success 0.064
System.out »
expecting success: 
  ipfs swarm peering ls

ok 65 - 'ipfs swarm peering ls' lists peerings
66 - 'ipfs swarm peering add' adds a peering Success 0.137
System.out »
expecting success: 
  ipfs swarm peering ls > peeringls &&
  ! test_should_contain ${peeringID} peeringls &&
  ! test_should_contain ${peeringID2} peeringls &&
  ipfs swarm peering add ${peeringAddr} ${peeringAddr2}

'peeringls' does not contain 'QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N', it contains:
'peeringls' does not contain 'QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5K', it contains:
add QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N success
add QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5K success
ok 66 - 'ipfs swarm peering add' adds a peering
67 - a peering is added Success 0.077
System.out »
expecting success: 
  ipfs swarm peering ls > peeringadd &&
  test_should_contain ${peeringID} peeringadd &&
  test_should_contain ${peeringID2} peeringadd

ok 67 - a peering is added
68 - 'swarm peering rm' removes a peering Success 0.066
System.out »
expecting success: 
  ipfs swarm peering rm ${peeringID}

remove QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N success
ok 68 - 'swarm peering rm' removes a peering
69 - peering is removed Success 0.085
System.out »
expecting success: 
  ipfs swarm peering ls > peeringrm &&
  ! test_should_contain ${peeringID} peeringrm

'peeringrm' does not contain 'QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5N', it contains:
QmYyQSo1c1Ym7orWxLYvCrM2EmxFTANf8wXmmE7DWjhx5K
	/ip4/1.2.3.4/tcp/1234
ok 69 - peering is removed
70 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 70 - 'ipfs daemon' is still running
71 - 'ipfs daemon' can be killed Success 0.259
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 71 - 'ipfs daemon' can be killed
72 - set up tcp testbed Success 0.227
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -force -init

ok 72 - set up tcp testbed
73 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.131
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 73 - set Routing.LoopbackAddressesOnLanDHT to true
74 - start up nodes Success 0.432
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 74 - start up nodes
75 - connect nodes to each other Success 0.184
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 75 - connect nodes to each other
76 - node 0 is connected Success 0.093
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 76 - node 0 is connected
77 - node 1 is connected Success 0.082
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 77 - node 1 is connected
78 - disconnect work without specifying a transport address Success 0.205
System.out »
expecting success: 
  [ $(ipfsi 0 swarm peers | wc -l) -eq 1 ] &&
  ipfsi 0 swarm disconnect "/p2p/$(iptb attr get 1 id)" &&
  [ $(ipfsi 0 swarm peers | wc -l) -eq 0 ]

disconnect 12D3KooWJLPuunP1yXE5BXzt5GdfY1GteF8Mh9kc8f1WyNHn93Er success
ok 78 - disconnect work without specifying a transport address
79 - connect work without specifying a transport address Success 0.226
System.out »
expecting success: 
  [ $(ipfsi 0 swarm peers | wc -l) -eq 0 ] &&
  ipfsi 0 swarm connect "/p2p/$(iptb attr get 1 id)" &&
  [ $(ipfsi 0 swarm peers | wc -l) -eq 1 ]

connect 12D3KooWJLPuunP1yXE5BXzt5GdfY1GteF8Mh9kc8f1WyNHn93Er success
ok 79 - connect work without specifying a transport address
80 - /p2p addresses work Success 0.346
System.out »
expecting success: 
  [ $(ipfsi 0 swarm peers | wc -l) -eq 1 ] &&
  ipfsi 0 swarm disconnect "/p2p/$(iptb attr get 1 id)" &&
  [ $(ipfsi 0 swarm peers | wc -l) -eq 0 ] &&
  ipfsi 0 swarm connect "/p2p/$(iptb attr get 1 id)" &&
  [ $(ipfsi 0 swarm peers | wc -l) -eq 1 ]

disconnect 12D3KooWJLPuunP1yXE5BXzt5GdfY1GteF8Mh9kc8f1WyNHn93Er success
connect 12D3KooWJLPuunP1yXE5BXzt5GdfY1GteF8Mh9kc8f1WyNHn93Er success
ok 80 - /p2p addresses work
81 - ipfs id is consistent for node 0 Success 0.134
System.out »
expecting success: 
  ipfsi 1 id "$(iptb attr get 0 id)" > 1see0 &&
  ipfsi 0 id > 0see0 &&
  test_cmp 1see0 0see0

ok 81 - ipfs id is consistent for node 0
82 - ipfs id is consistent for node 1 Success 0.144
System.out »
expecting success: 
  ipfsi 0 id "$(iptb attr get 1 id)" > 0see1 &&
  ipfsi 1 id > 1see1 &&
  test_cmp 0see1 1see1

ok 82 - ipfs id is consistent for node 1
83 - addresses contain /p2p/... Success 0.080
System.out »
expecting success: 
  test_should_contain "/p2p/$(iptb attr get 1 id)\"" 0see1 &&
  test_should_contain "/p2p/$(iptb attr get 1 id)\"" 1see1 &&
  test_should_contain "/p2p/$(iptb attr get 0 id)\"" 1see0 &&
  test_should_contain "/p2p/$(iptb attr get 0 id)\"" 0see0

ok 83 - addresses contain /p2p/...
84 - stopping cluster Success 0.024
System.out »
expecting success: 
  iptb stop

ok 84 - stopping cluster
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - disconnected: peers is empty
ok 11 - disconnected: addrs local has localhost
ok 12 - disconnected: addrs local matches ipfs id
ok 13 - ipfs id self works
ok 14 - output looks good
ok 15 - can't trigger a dial backoff with swarm connect
ok 16 - 'ipfs daemon' is still running
ok 17 - 'ipfs daemon' can be killed
ok 18 - test_config_set succeeds
ok 19 - 'ipfs daemon' succeeds
ok 20 - api file shows up
ok 21 - set up address variables
ok 22 - get swarm addresses
ok 23 - set swarm address vars
ok 24 - 'ipfs daemon' is ready
ok 25 - Addresses.Announce affects addresses
ok 26 - 'ipfs daemon' is still running
ok 27 - 'ipfs daemon' can be killed
ok 28 - test_config_set succeeds
ok 29 - test_config_set Announce and AppendAnnounce succeeds
ok 30 - 'ipfs daemon' succeeds
ok 31 - api file shows up
ok 32 - set up address variables
ok 33 - get swarm addresses
ok 34 - set swarm address vars
ok 35 - 'ipfs daemon' is ready
ok 36 - Addresses.AppendAnnounce is applied on top of Announce
ok 37 - 'ipfs daemon' is still running
ok 38 - 'ipfs daemon' can be killed
ok 39 - test_config_set succeeds
ok 40 - 'ipfs daemon' succeeds
ok 41 - api file shows up
ok 42 - set up address variables
ok 43 - get swarm addresses
ok 44 - set swarm address vars
ok 45 - 'ipfs daemon' is ready
ok 46 - Addresses.NoAnnounce affects addresses from Announce and AppendAnnounce
ok 47 - 'ipfs daemon' is still running
ok 48 - 'ipfs daemon' can be killed
ok 49 - test_config_set succeeds
ok 50 - 'ipfs daemon' succeeds
ok 51 - api file shows up
ok 52 - set up address variables
ok 53 - get swarm addresses
ok 54 - set swarm address vars
ok 55 - 'ipfs daemon' is ready
ok 56 - Addresses.NoAnnounce with /ipcidr affects addresses
ok 57 - 'ipfs daemon' is still running
ok 58 - 'ipfs daemon' can be killed
ok 59 - 'ipfs daemon' succeeds
ok 60 - api file shows up
ok 61 - set up address variables
ok 62 - get swarm addresses
ok 63 - set swarm address vars
ok 64 - 'ipfs daemon' is ready
ok 65 - 'ipfs swarm peering ls' lists peerings
ok 66 - 'ipfs swarm peering add' adds a peering
ok 67 - a peering is added
ok 68 - 'swarm peering rm' removes a peering
ok 69 - peering is removed
ok 70 - 'ipfs daemon' is still running
ok 71 - 'ipfs daemon' can be killed
ok 72 - set up tcp testbed
ok 73 - set Routing.LoopbackAddressesOnLanDHT to true
ok 74 - start up nodes
ok 75 - connect nodes to each other
ok 76 - node 0 is connected
ok 77 - node 1 is connected
ok 78 - disconnect work without specifying a transport address
ok 79 - connect work without specifying a transport address
ok 80 - /p2p addresses work
ok 81 - ipfs id is consistent for node 0
ok 82 - ipfs id is consistent for node 1
ok 83 - addresses contain /p2p/...
ok 84 - stopping cluster

Back to top

TestCase t0141-addfilter

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.139
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.195
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.810
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0141-addfilter.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0141-addfilter.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0141-addfilter.sh/mfs"
ok 3 - prepare config -- mounting
4 - init without any filters Success 0.088
System.out »
expecting success: 
  echo "null" >expected &&
  ipfs config Swarm.AddrFilters >actual &&
  test_cmp expected actual

ok 4 - init without any filters
5 - adding addresses to the config to filter succeeds Success 0.094
System.out »
expecting success: 
  ipfs config --json Swarm.AddrFilters "[\"$AF1\", \"$AF4\"]"

ok 5 - adding addresses to the config to filter succeeds
6 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 6 - 'ipfs daemon' succeeds
7 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 7 - api file shows up
8 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 8 - set up address variables
9 - get swarm addresses Success 0.067
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 9 - get swarm addresses
10 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 10 - set swarm address vars
11 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 11 - 'ipfs daemon' is ready
12 - 'ipfs swarm filters' succeeds Success 0.068
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 12 - 'ipfs swarm filters' succeeds
13 - 'ipfs swarm filters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 13 - 'ipfs swarm filters' output looks good
14 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.070
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 14 - 'ipfs config Swarm.AddrFilters' succeeds
15 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.009
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 15 - 'ipfs config Swarm.AddrFilters' output looks good
16 - 'ipfs swarm filters' succeeds Success 0.074
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 16 - 'ipfs swarm filters' succeeds
17 - 'ipfs swarm filters' output looks good Success 0.009
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 17 - 'ipfs swarm filters' output looks good
18 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.075
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 18 - 'ipfs config Swarm.AddrFilters' succeeds
19 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 19 - 'ipfs config Swarm.AddrFilters' output looks good
20 - 'ipfs swarm filter add' succeeds Success 0.063
System.out »
expecting success: 
    ipfs swarm filters add $AF1 $AF2 $AF3
  
/ip4/192.168.0.0/ipcidr/16
/ip4/127.0.0.0/ipcidr/8
/ip6/2008:bcd::/ipcidr/32
ok 20 - 'ipfs swarm filter add' succeeds
21 - 'ipfs swarm filters' succeeds Success 0.068
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 21 - 'ipfs swarm filters' succeeds
22 - 'ipfs swarm filters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 22 - 'ipfs swarm filters' output looks good
23 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.099
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 23 - 'ipfs config Swarm.AddrFilters' succeeds
24 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.013
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 24 - 'ipfs config Swarm.AddrFilters' output looks good
25 - 'ipfs swarm filter rm' succeeds Success 0.076
System.out »
expecting success: 
    ipfs swarm filters rm $AF2 $AF3
  
/ip4/127.0.0.0/ipcidr/8
/ip6/2008:bcd::/ipcidr/32
ok 25 - 'ipfs swarm filter rm' succeeds
26 - 'ipfs swarm filters' succeeds Success 0.070
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 26 - 'ipfs swarm filters' succeeds
27 - 'ipfs swarm filters' output looks good Success 0.009
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 27 - 'ipfs swarm filters' output looks good
28 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.070
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 28 - 'ipfs config Swarm.AddrFilters' succeeds
29 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 29 - 'ipfs config Swarm.AddrFilters' output looks good
30 - 'ipfs swarm filter add' succeeds Success 0.066
System.out »
expecting success: 
    ipfs swarm filters add $AF4 $AF2
  
/ip4/172.16.0.0/ipcidr/12
/ip4/127.0.0.0/ipcidr/8
ok 30 - 'ipfs swarm filter add' succeeds
31 - 'ipfs swarm filters' succeeds Success 0.077
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 31 - 'ipfs swarm filters' succeeds
32 - 'ipfs swarm filters' output looks good Success 0.013
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 32 - 'ipfs swarm filters' output looks good
33 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.065
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 33 - 'ipfs config Swarm.AddrFilters' succeeds
34 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 34 - 'ipfs config Swarm.AddrFilters' output looks good
35 - 'ipfs swarm filter rm' succeeds Success 0.060
System.out »
expecting success: 
    ipfs swarm filters rm $AF1 $AF2 $AF4
  
/ip4/172.16.0.0/ipcidr/12
/ip4/127.0.0.0/ipcidr/8
/ip4/192.168.0.0/ipcidr/16
ok 35 - 'ipfs swarm filter rm' succeeds
36 - 'ipfs swarm filters' succeeds Success 0.068
System.out »
expecting success: 
    ipfs swarm filters > list_actual
  
ok 36 - 'ipfs swarm filters' succeeds
37 - 'ipfs swarm filters' output looks good Success 0.010
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual
  
ok 37 - 'ipfs swarm filters' output looks good
38 - 'ipfs config Swarm.AddrFilters' succeeds Success 0.070
System.out »
expecting success: 
    ipfs config Swarm.AddrFilters > list_actual
  
ok 38 - 'ipfs config Swarm.AddrFilters' succeeds
39 - 'ipfs config Swarm.AddrFilters' output looks good Success 0.009
System.out »
expecting success: 
    test_sort_cmp list_expected list_actual_cleaned
  
ok 39 - 'ipfs config Swarm.AddrFilters' output looks good
40 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 40 - 'ipfs daemon' is still running
41 - 'ipfs daemon' can be killed Success 0.263
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 41 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - init without any filters
ok 5 - adding addresses to the config to filter succeeds
ok 6 - 'ipfs daemon' succeeds
ok 7 - api file shows up
ok 8 - set up address variables
ok 9 - get swarm addresses
ok 10 - set swarm address vars
ok 11 - 'ipfs daemon' is ready
ok 12 - 'ipfs swarm filters' succeeds
ok 13 - 'ipfs swarm filters' output looks good
ok 14 - 'ipfs config Swarm.AddrFilters' succeeds
ok 15 - 'ipfs config Swarm.AddrFilters' output looks good
/ip4/192.168.0.0/ipcidr/16
/ip4/172.16.0.0/ipcidr/12
ok 16 - 'ipfs swarm filters' succeeds
ok 17 - 'ipfs swarm filters' output looks good
ok 18 - 'ipfs config Swarm.AddrFilters' succeeds
ok 19 - 'ipfs config Swarm.AddrFilters' output looks good
ok 20 - 'ipfs swarm filter add' succeeds
ok 21 - 'ipfs swarm filters' succeeds
ok 22 - 'ipfs swarm filters' output looks good
ok 23 - 'ipfs config Swarm.AddrFilters' succeeds
ok 24 - 'ipfs config Swarm.AddrFilters' output looks good
ok 25 - 'ipfs swarm filter rm' succeeds
ok 26 - 'ipfs swarm filters' succeeds
ok 27 - 'ipfs swarm filters' output looks good
ok 28 - 'ipfs config Swarm.AddrFilters' succeeds
ok 29 - 'ipfs config Swarm.AddrFilters' output looks good
ok 30 - 'ipfs swarm filter add' succeeds
ok 31 - 'ipfs swarm filters' succeeds
ok 32 - 'ipfs swarm filters' output looks good
ok 33 - 'ipfs config Swarm.AddrFilters' succeeds
ok 34 - 'ipfs config Swarm.AddrFilters' output looks good
ok 35 - 'ipfs swarm filter rm' succeeds
ok 36 - 'ipfs swarm filters' succeeds
ok 37 - 'ipfs swarm filters' output looks good
ok 38 - 'ipfs config Swarm.AddrFilters' succeeds
ok 39 - 'ipfs config Swarm.AddrFilters' output looks good
ok 40 - 'ipfs daemon' is still running
ok 41 - 'ipfs daemon' can be killed

Back to top

TestCase t0142-testfilter

Name Status Type Time(s)
1 - set up testbed Success 0.826
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $NUM_NODES -force -init &&
  iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true

node[0] exit 0


node[1] exit 0


node[2] exit 0


ok 1 - set up testbed
2 - filter 127.0.0.0/24 on node 1 Success 0.080
System.out »
expecting success: 
  ipfsi 1 config --json Swarm.AddrFilters "[\"$AF\"]"

ok 2 - filter 127.0.0.0/24 on node 1
3 - change IP for node 0 Success 0.075
System.out »
expecting success: 
    ipfsi $i config --json "Addresses.Swarm" \
      "[\"/ip4/127.0.$i.1/tcp/0\",\"/ip4/127.0.$i.1/udp/0/quic\",\"/ip4/127.0.$i.1/tcp/0/ws\"]"
  
ok 3 - change IP for node 0
4 - change IP for node 1 Success 0.089
System.out »
expecting success: 
    ipfsi $i config --json "Addresses.Swarm" \
      "[\"/ip4/127.0.$i.1/tcp/0\",\"/ip4/127.0.$i.1/udp/0/quic\",\"/ip4/127.0.$i.1/tcp/0/ws\"]"
  
ok 4 - change IP for node 1
5 - change IP for node 2 Success 0.085
System.out »
expecting success: 
    ipfsi $i config --json "Addresses.Swarm" \
      "[\"/ip4/127.0.$i.1/tcp/0\",\"/ip4/127.0.$i.1/udp/0/quic\",\"/ip4/127.0.$i.1/tcp/0/ws\"]"
  
ok 5 - change IP for node 2
6 - start cluster Success 0.432
System.out »
expecting success: 
  iptb start --wait

ok 6 - start cluster
7 - connecting 1 to 0 fails Success 0.178
System.out »
expecting success: 
  test_must_fail iptb connect 1 0

> command iptb logs
node[0] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp
Swarm listening on 127.0.0.1:34169 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 207724c3-91f6-4bb9-a610-2ed02fdf8f11

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/44307
WebUI: http://127.0.0.1:44307/webui
Daemon is ready

node[1] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWNWwYAJkTSQ9yyWQqGhFPdmacHrnWa8GrhmszxomxM9np
Swarm listening on 127.0.1.1:38689 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 0b8114f7-23a5-493c-83a6-c806621d2949

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/34803
WebUI: http://127.0.0.1:34803/webui
Daemon is ready

node[2] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWEaRTLKZhRQthxrrXS89aWe7mknwZw1TUQP1GfQS6iTAy
Swarm listening on 127.0.2.1:39601 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 92aac131-a5cc-4494-947a-a149fc217352

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/43697
WebUI: http://127.0.0.1:43697/webui
Daemon is ready


ok 7 - connecting 1 to 0 fails
System.err »
node[1] => node[0]: Error: connect 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp failure: failed to dial: failed to dial 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp: no good addresses
  * [/ip4/127.0.0.1/tcp/34169] gater disallows connection to peer
8 - connecting 0 to 1 fails Success 0.169
System.out »
expecting success: 
  test_must_fail iptb connect 1 0

> command iptb logs
node[0] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp
Swarm listening on 127.0.0.1:34169 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 207724c3-91f6-4bb9-a610-2ed02fdf8f11

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/44307
WebUI: http://127.0.0.1:44307/webui
Daemon is ready

node[1] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWNWwYAJkTSQ9yyWQqGhFPdmacHrnWa8GrhmszxomxM9np
Swarm listening on 127.0.1.1:38689 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 0b8114f7-23a5-493c-83a6-c806621d2949

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/34803
WebUI: http://127.0.0.1:34803/webui
Daemon is ready

node[2] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWEaRTLKZhRQthxrrXS89aWe7mknwZw1TUQP1GfQS6iTAy
Swarm listening on 127.0.2.1:39601 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 92aac131-a5cc-4494-947a-a149fc217352

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/43697
WebUI: http://127.0.0.1:43697/webui
Daemon is ready


ok 8 - connecting 0 to 1 fails
System.err »
node[1] => node[0]: Error: connect 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp failure: failed to dial: failed to dial 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp: no good addresses
  * [/ip4/127.0.0.1/tcp/34169] gater disallows connection to peer
9 - connecting 2 to 0 succeeds Success 0.152
System.out »
expecting success: 
  iptb connect 2 0

ok 9 - connecting 2 to 0 succeeds
10 - connecting 1 to 0 with dns addrs fails Success 0.132
System.out »
expecting success: 
  ipfsi 0 id -f "<addrs>" | sed "s|^/ip4/127.0.0.1/|/dns4/localhost/|" > addrs &&
  test_must_fail ipfsi 1 swarm connect $(cat addrs)

ok 10 - connecting 1 to 0 with dns addrs fails
System.err »
Error: connect 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp failure: failed to dial: failed to dial 12D3KooWLLWTi2Z4JqY7Gh7Qip9EUsvaC1aAUNmK643MDreW3MCp: no good addresses
  * [/ip4/127.0.0.1/tcp/34169] gater disallows connection to peer
11 - stopping cluster Success 0.034
System.out »
expecting success: 
  iptb stop

ok 11 - stopping cluster
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - set up testbed
ok 2 - filter 127.0.0.0/24 on node 1
ok 3 - change IP for node 0
ok 4 - change IP for node 1
ok 5 - change IP for node 2
ok 6 - start cluster
ok 7 - connecting 1 to 0 fails
ok 8 - connecting 0 to 1 fails
ok 9 - connecting 2 to 0 succeeds
ok 10 - connecting 1 to 0 with dns addrs fails
ok 11 - stopping cluster

Back to top

TestCase t0150-clisuggest

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.111
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.160
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.482
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0150-clisuggest.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0150-clisuggest.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0150-clisuggest.sh/mfs"
ok 3 - prepare config -- mounting
4 - test command fails Success 0.066
System.out »
expecting success: 
    test_must_fail ipfs kog 2>actual
  
ok 4 - test command fails
5 - test one command is suggested Success 0.008
System.out »
expecting success: 
    grep "Did you mean this?" actual &&
    grep "log" actual ||
    test_fsh cat actual
  
Did you mean this?
	log
ok 5 - test one command is suggested
6 - test command fails Success 0.069
System.out »
expecting success: 
    test_must_fail ipfs li 2>actual
  
ok 6 - test command fails
7 - test multiple commands are suggested Success 0.008
System.out »
expecting success: 
    grep "Did you mean any of these?" actual &&
    grep "ls" actual &&
    grep "log" actual ||
    test_fsh cat actual
  
Did you mean any of these?
	ls
	log
ok 7 - test multiple commands are suggested
8 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 8 - 'ipfs daemon' succeeds
9 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 9 - api file shows up
10 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 10 - set up address variables
11 - get swarm addresses Success 0.063
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 11 - get swarm addresses
12 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 12 - set swarm address vars
13 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 13 - 'ipfs daemon' is ready
14 - test command fails Success 0.070
System.out »
expecting success: 
    test_must_fail ipfs kog 2>actual
  
ok 14 - test command fails
15 - test one command is suggested Success 0.007
System.out »
expecting success: 
    grep "Did you mean this?" actual &&
    grep "log" actual ||
    test_fsh cat actual
  
Did you mean this?
	log
ok 15 - test one command is suggested
16 - test command fails Success 0.085
System.out »
expecting success: 
    test_must_fail ipfs li 2>actual
  
ok 16 - test command fails
17 - test multiple commands are suggested Success 0.010
System.out »
expecting success: 
    grep "Did you mean any of these?" actual &&
    grep "ls" actual &&
    grep "log" actual ||
    test_fsh cat actual
  
Did you mean any of these?
	ls
	log
ok 17 - test multiple commands are suggested
18 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.249
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - test command fails
ok 5 - test one command is suggested
ok 6 - test command fails
ok 7 - test multiple commands are suggested
ok 8 - 'ipfs daemon' succeeds
ok 9 - api file shows up
ok 10 - set up address variables
ok 11 - get swarm addresses
ok 12 - set swarm address vars
ok 13 - 'ipfs daemon' is ready
ok 14 - test command fails
ok 15 - test one command is suggested
ok 16 - test command fails
ok 17 - test multiple commands are suggested
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed

Back to top

TestCase t0151-sysdiag

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.094
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.167
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.439
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/mfs"
ok 3 - prepare config -- mounting
4 - ipfs diag sys succeeds Success 0.098
System.out »
expecting success: 
  ipfs diag sys > output

ok 4 - ipfs diag sys succeeds
5 - output contains some expected keys Success 0.010
System.out »
expecting success: 
  grep "virt" output &&
  grep "interface_addresses" output &&
  grep "arch" output &&
  grep "online" output

{"diskinfo":{"free_space":85614571520,"fstype":"61267","total_space":85597794304},"environment":{"GOPATH":"/home/runner/go","IPFS_PATH":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/.ipfs"},"ipfs_commit":"","ipfs_version":"0.41.0-dev","memory":{"swap":0,"virt":2272024000},"net":{"interface_addresses":["/ip4/127.0.0.1","/ip4/10.0.102.120","/ip4/172.17.0.1","/ip6/::1","/ip6/2600:1f18:7bd2:1301:c81c:7354:1076:4838","/ip6/fe80::c3d:f3ff:fe37:4d5f","/ip6/fe80::ecca:13ff:fe43:a314","/ip6/fe80::d068:ecff:fe80:ff3d","/ip6/fe80::acda:d4ff:fec5:de2c"],"online":false},"runtime":{"arch":"amd64","compiler":"gc","gomaxprocs":16,"numcpu":16,"numgoroutines":14,"os":"linux","version":"go1.25.0"}}
{"diskinfo":{"free_space":85614571520,"fstype":"61267","total_space":85597794304},"environment":{"GOPATH":"/home/runner/go","IPFS_PATH":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/.ipfs"},"ipfs_commit":"","ipfs_version":"0.41.0-dev","memory":{"swap":0,"virt":2272024000},"net":{"interface_addresses":["/ip4/127.0.0.1","/ip4/10.0.102.120","/ip4/172.17.0.1","/ip6/::1","/ip6/2600:1f18:7bd2:1301:c81c:7354:1076:4838","/ip6/fe80::c3d:f3ff:fe37:4d5f","/ip6/fe80::ecca:13ff:fe43:a314","/ip6/fe80::d068:ecff:fe80:ff3d","/ip6/fe80::acda:d4ff:fec5:de2c"],"online":false},"runtime":{"arch":"amd64","compiler":"gc","gomaxprocs":16,"numcpu":16,"numgoroutines":14,"os":"linux","version":"go1.25.0"}}
{"diskinfo":{"free_space":85614571520,"fstype":"61267","total_space":85597794304},"environment":{"GOPATH":"/home/runner/go","IPFS_PATH":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/.ipfs"},"ipfs_commit":"","ipfs_version":"0.41.0-dev","memory":{"swap":0,"virt":2272024000},"net":{"interface_addresses":["/ip4/127.0.0.1","/ip4/10.0.102.120","/ip4/172.17.0.1","/ip6/::1","/ip6/2600:1f18:7bd2:1301:c81c:7354:1076:4838","/ip6/fe80::c3d:f3ff:fe37:4d5f","/ip6/fe80::ecca:13ff:fe43:a314","/ip6/fe80::d068:ecff:fe80:ff3d","/ip6/fe80::acda:d4ff:fec5:de2c"],"online":false},"runtime":{"arch":"amd64","compiler":"gc","gomaxprocs":16,"numcpu":16,"numgoroutines":14,"os":"linux","version":"go1.25.0"}}
{"diskinfo":{"free_space":85614571520,"fstype":"61267","total_space":85597794304},"environment":{"GOPATH":"/home/runner/go","IPFS_PATH":"/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0151-sysdiag.sh/.ipfs"},"ipfs_commit":"","ipfs_version":"0.41.0-dev","memory":{"swap":0,"virt":2272024000},"net":{"interface_addresses":["/ip4/127.0.0.1","/ip4/10.0.102.120","/ip4/172.17.0.1","/ip6/::1","/ip6/2600:1f18:7bd2:1301:c81c:7354:1076:4838","/ip6/fe80::c3d:f3ff:fe37:4d5f","/ip6/fe80::ecca:13ff:fe43:a314","/ip6/fe80::d068:ecff:fe80:ff3d","/ip6/fe80::acda:d4ff:fec5:de2c"],"online":false},"runtime":{"arch":"amd64","compiler":"gc","gomaxprocs":16,"numcpu":16,"numgoroutines":14,"os":"linux","version":"go1.25.0"}}
ok 5 - output contains some expected keys
6 - uname succeeds Success 0.007
System.out »
expecting success: 
  UOUT=$(uname)

ok 6 - uname succeeds
7 - output is similar to uname Success 0.019
System.out »
expecting success: 
  case $UOUT in
  Linux)
    grep linux output > /dev/null
    ;;
  Darwin)
    grep darwin output > /dev/null
    ;;
  FreeBSD)
    grep freebsd output > /dev/null
    ;;
  CYGWIN*)
    grep windows output > /dev/null
    ;;
  *)
    test_fsh echo system check for $UOUT failed, unsupported system?
    ;;
  esac

ok 7 - output is similar to uname
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - ipfs diag sys succeeds
ok 5 - output contains some expected keys
ok 6 - uname succeeds
ok 7 - output is similar to uname

Back to top

TestCase t0152-profile

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.089
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.178
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.474
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0152-profile.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0152-profile.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0152-profile.sh/mfs"
ok 3 - prepare config -- mounting
4 - profiling requires a running daemon Success 0.066
System.out »
expecting success: 
  test_must_fail ipfs diag profile

ok 4 - profiling requires a running daemon
System.err »
Error: command must be run on the daemon: [diag profile]
5 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - test profiling (without sampling) Success 4.847
System.out »
expecting success: 
  ipfs diag profile --profile-time=0 > cmd_out

ok 11 - test profiling (without sampling)
12 - filename shows up in output Success 0.006
System.out »
expecting success: 
  grep -q "ipfs-profile" cmd_out > /dev/null

ok 12 - filename shows up in output
13 - profile file created Success 0.006
System.out »
expecting success: 
  test -e "$(sed -n -e "s/.*\(ipfs-profile.*\.zip\)/\1/p" cmd_out)"

ok 13 - profile file created
14 - test profiling with -o Success 4.781
System.out »
expecting success: 
  ipfs diag profile --profile-time=1s -o test-profile.zip

Wrote profiles to: test-profile.zip
ok 14 - test profiling with -o
15 - test that test-profile.zip exists Success 0.004
System.out »
expecting success: 
  test -e test-profile.zip

ok 15 - test that test-profile.zip exists
16 - test profiling with specific collectors Success 0.077
System.out »
expecting success: 
  ipfs diag profile --collectors version,goroutines-stack -o test-profile-small.zip

Wrote profiles to: test-profile-small.zip
ok 16 - test profiling with specific collectors
17 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 17 - 'ipfs daemon' is still running
18 - 'ipfs daemon' can be killed Success 0.260
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 18 - 'ipfs daemon' can be killed
19 - unpack profiles Success 1.064
System.out »
expecting success: 
  unzip -d profiles test-profile.zip &&
  unzip -d profiles-small test-profile-small.zip

Archive:  test-profile.zip
  inflating: profiles/version.json   
  inflating: profiles/goroutines.stacks  
  inflating: profiles/allocs.pprof   
  inflating: profiles/goroutines.pprof  
  inflating: profiles/heap.pprof     
  inflating: profiles/ipfs           
  inflating: profiles/mutex.pprof    
  inflating: profiles/block.pprof    
  inflating: profiles/trace          
  inflating: profiles/cpu.pprof      
Archive:  test-profile-small.zip
  inflating: profiles-small/version.json  
  inflating: profiles-small/goroutines.stacks  
ok 19 - unpack profiles
20 - cpu profile is valid Success 12.310
System.out »
expecting success: 
  go tool pprof -top profiles/ipfs "profiles/cpu.pprof" | grep -q "Type: cpu"

ok 20 - cpu profile is valid
21 - heap profile is valid Success 0.133
System.out »
expecting success: 
  go tool pprof -top profiles/ipfs "profiles/heap.pprof" | grep -q "Type: inuse_space"

ok 21 - heap profile is valid
22 - goroutines profile is valid Success 0.120
System.out »
expecting success: 
  go tool pprof -top profiles/ipfs "profiles/goroutines.pprof" | grep -q "Type: goroutine"

ok 22 - goroutines profile is valid
23 - mutex profile is valid Success 0.481
System.out »
expecting success: 
  go tool pprof -top profiles/ipfs "profiles/mutex.pprof" | grep -q "Type: delay"

ok 23 - mutex profile is valid
24 - block profile is valid Success 0.465
System.out »
expecting success: 
  go tool pprof -top profiles/ipfs "profiles/block.pprof" | grep -q "Type: delay"

ok 24 - block profile is valid
25 - goroutines stacktrace is valid Success 0.007
System.out »
expecting success: 
  grep -q "goroutine" "profiles/goroutines.stacks"

ok 25 - goroutines stacktrace is valid
26 - the small profile only contains the requested data Success 0.010
System.out »
expecting success: 
  find profiles-small -type f | sort > actual &&
  echo -e "profiles-small/goroutines.stacks\nprofiles-small/version.json" > expected &&
  test_cmp expected actual

ok 26 - the small profile only contains the requested data
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - profiling requires a running daemon
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - test profiling (without sampling)
ok 12 - filename shows up in output
ok 13 - profile file created
ok 14 - test profiling with -o
ok 15 - test that test-profile.zip exists
ok 16 - test profiling with specific collectors
ok 17 - 'ipfs daemon' is still running
ok 18 - 'ipfs daemon' can be killed
ok 19 - unpack profiles
ok 20 - cpu profile is valid
ok 21 - heap profile is valid
ok 22 - goroutines profile is valid
ok 23 - mutex profile is valid
ok 24 - block profile is valid
ok 25 - goroutines stacktrace is valid
ok 26 - the small profile only contains the requested data

Back to top

TestCase t0160-resolve

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.106
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.162
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.490
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0160-resolve.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0160-resolve.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0160-resolve.sh/mfs"
ok 3 - prepare config -- mounting
4 - resolve: prepare files Success 0.279
System.out »
expecting success: 
  mkdir -p a/b &&
  echo "a/b/c" >a/b/c &&
  a_hash=$(ipfs add -Q -r a) &&
  b_hash=$(ipfs add -Q -r a/b) &&
  c_hash=$(ipfs add -Q -r a/b/c) &&
  a_hash_b32=$(cid-fmt -v 1 -b b %s $a_hash) &&
  b_hash_b32=$(cid-fmt -v 1 -b b %s $b_hash) &&
  c_hash_b32=$(cid-fmt -v 1 -b b %s $c_hash)

ok 4 - resolve: prepare files
5 - resolve: prepare dag Success 0.097
System.out »
expecting success: 
  dag_hash=$(ipfs dag put <<<"{\"i\": {\"j\": {\"k\": \"asdfasdfasdf\"}}}")

ok 5 - resolve: prepare dag
6 - resolve: prepare keys Success 0.376
System.out »
expecting success: 
    self_hash=$(ipfs key list --ipns-base=base36 -l | grep self | cut -d " " -f1) &&
    alt_hash=$(ipfs key gen --ipns-base=base36 -t rsa alt)

ok 6 - resolve: prepare keys
7 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.068
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 7 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
8 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 8 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
9 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b Success 0.083
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 9 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b
10 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 10 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
11 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c Success 0.087
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 11 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c
12 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.008
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 12 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
13 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c Success 0.092
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 13 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c
14 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 14 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
15 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k Success 0.082
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 15 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
16 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 16 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
17 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j Success 0.075
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 17 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
18 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 18 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
19 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i Success 0.098
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 19 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
20 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i Success 0.008
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 20 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
21 - resolve: prepare self Success 0.103
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 21 - resolve: prepare self
22 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.095
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 22 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
23 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 23 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
24 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b Success 0.100
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 24 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
25 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 25 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
26 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c Success 0.078
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 26 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
27 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 27 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
28 - resolve: prepare self Success 0.091
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 28 - resolve: prepare self
29 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.100
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 29 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
30 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 30 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
31 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c Success 0.088
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 31 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
32 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 32 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
33 - resolve: prepare self Success 0.075
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 33 - resolve: prepare self
34 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.085
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 34 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
35 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 35 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
36 - resolve: prepare alt Success 0.081
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 36 - resolve: prepare alt
37 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 Success 0.081
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 37 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10
38 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 38 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
39 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 Success 0.078
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 39 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10
40 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 40 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
41 - resolve: prepare self Success 0.086
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 41 - resolve: prepare self
42 - recursive resolve terminates Success 0.093
System.out »
expecting success: 
    test_expect_code 1 ipfs resolve /ipns/$self_hash 2>recursion_error &&
    grep "recursion limit exceeded" recursion_error
  
Error: could not resolve name (recursion limit exceeded)
ok 42 - recursive resolve terminates
43 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe Success 0.090
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 43 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
44 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe Success 0.007
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 44 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
45 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b Success 0.079
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 45 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b
46 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq Success 0.007
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 46 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
47 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c Success 0.079
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 47 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c
48 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 48 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
49 - resolve succeeds: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c Success 0.073
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 49 - resolve succeeds: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c
50 - resolved correctly: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 50 - resolved correctly: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
51 - resolve: prepare self Success 0.084
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
ok 51 - resolve: prepare self
52 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.082
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 52 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
53 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 53 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
54 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b Success 0.080
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 54 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
55 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 55 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
56 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c Success 0.091
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 56 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
57 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 57 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
58 - resolve: prepare self Success 0.107
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
ok 58 - resolve: prepare self
59 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.099
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 59 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
60 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq Success 0.007
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 60 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
61 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c Success 0.103
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 61 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
62 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau Success 0.007
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 62 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
63 - resolve: prepare self Success 0.086
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 63 - resolve: prepare self
64 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.087
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 64 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
65 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 65 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
66 - resolve of /ipns/{cidv1} with multicodec other than libp2p-key returns a meaningful error Success 0.083
System.out »
expecting success: 
    test_expect_code 1 ipfs resolve /ipns/$self_hash_b32protobuf 2>cidcodec_error &&
    test_should_contain "Error: peer ID represented as CIDv1 require libp2p-key multicodec: retry with /ipns/$self_hash_b32libp2pkey" cidcodec_error
  
ok 66 - resolve of /ipns/{cidv1} with multicodec other than libp2p-key returns a meaningful error
67 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 67 - 'ipfs daemon' succeeds
68 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 68 - api file shows up
69 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 69 - set up address variables
70 - get swarm addresses Success 0.060
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 70 - get swarm addresses
71 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 71 - set swarm address vars
72 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 72 - 'ipfs daemon' is ready
73 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.060
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 73 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
74 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 74 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
75 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b Success 0.059
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 75 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b
76 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 76 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
77 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c Success 0.071
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 77 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c
78 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 78 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
79 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c Success 0.057
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 79 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c
80 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 80 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
81 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm Success 0.077
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 81 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm
82 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 82 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm
83 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k Success 0.060
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 83 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
84 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 84 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
85 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j Success 0.061
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 85 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
86 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 86 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
87 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i Success 0.057
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 87 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
88 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 88 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
89 - resolve: prepare self Success 0.070
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 89 - resolve: prepare self
90 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.056
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 90 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
91 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 91 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
92 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b Success 0.066
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 92 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
93 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.006
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 93 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
94 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c Success 0.072
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 94 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
95 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 95 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
96 - resolve: prepare self Success 0.059
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 96 - resolve: prepare self
97 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.062
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 97 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
98 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5 Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 98 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
99 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c Success 0.061
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 99 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
100 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.007
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 100 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
101 - resolve: prepare self Success 0.066
System.out »
expecting success: 
    ipfs name publish --key="$key" --ttl=0s --allow-offline "$ref"
  
Published to k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz: /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 101 - resolve: prepare self
102 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz Success 0.062
System.out »
expecting success: 
    ipfs resolve $extra "$src" >actual
  
ok 102 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
103 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ Success 0.005
System.out »
expecting success: 
    printf "$dst\n" >expected &&
    test_cmp expected actual
  
ok 103 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
104 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 104 - 'ipfs daemon' is still running
105 - 'ipfs daemon' can be killed Success 0.250
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 105 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - resolve: prepare files
ok 5 - resolve: prepare dag
ok 6 - resolve: prepare keys
-- starting test_resolve_cmd
ok 7 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 8 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 9 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b
ok 10 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 11 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c
ok 12 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 13 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c
ok 14 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 15 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
ok 16 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
ok 17 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
ok 18 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
ok 19 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
ok 20 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
ok 21 - resolve: prepare self
ok 22 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 23 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 24 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
ok 25 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 26 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
ok 27 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 28 - resolve: prepare self
ok 29 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 30 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 31 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
ok 32 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 33 - resolve: prepare self
ok 34 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 35 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 36 - resolve: prepare alt
ok 37 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10
ok 38 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 39 - resolve succeeds: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10
ok 40 - resolved correctly: /ipns/k2k4r8p05gcy9xtr6wzy5xmyqlbxc159nqjuz34qxds6yaes7b1qdx10 -> /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 41 - resolve: prepare self
ok 42 - recursive resolve terminates
-- starting test_resolve_cmd_b32
ok 43 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
ok 44 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
ok 45 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b
ok 46 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
ok 47 - resolve succeeds: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c
ok 48 - resolved correctly: /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 49 - resolve succeeds: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c
ok 50 - resolved correctly: /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 51 - resolve: prepare self
ok 52 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 53 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeigzlr2a7lddudr2mazjuxdhss7vzqvqif2ohplcwcpob66ea4fdwe
ok 54 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
ok 55 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
ok 56 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
ok 57 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 58 - resolve: prepare self
ok 59 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 60 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeidk6vrq4sq6bsa42jeu75wwalysck2q2zjwqbedjwj5bzdewgkljq
ok 61 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
ok 62 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 63 - resolve: prepare self
ok 64 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 65 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/bafybeiajw22volc3j2cpve57q3k4xzxgc652tvbw5bo4ef6xk6d5rllsau
ok 66 - resolve of /ipns/{cidv1} with multicodec other than libp2p-key returns a meaningful error
ok 67 - 'ipfs daemon' succeeds
ok 68 - api file shows up
ok 69 - set up address variables
ok 70 - get swarm addresses
ok 71 - set swarm address vars
ok 72 - 'ipfs daemon' is ready
ok 73 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 74 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 75 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b
ok 76 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 77 - resolve succeeds: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c
ok 78 - resolved correctly: /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 79 - resolve succeeds: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c
ok 80 - resolved correctly: /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 81 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm
ok 82 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm
ok 83 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
ok 84 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j/k
ok 85 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
ok 86 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i/j
ok 87 - resolve succeeds: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
ok 88 - resolved correctly: /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i -> /ipld/bafyreicobm7b77ti4ecfkn322x2homisyao2ofugsgmjouegl3osmeb5bm/i
ok 89 - resolve: prepare self
ok 90 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 91 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/Qmcy8wqBvzewr5VMFPXKtoBuUQjBQ8DCWb9LdLK9KntyWx
ok 92 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b
ok 93 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 94 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c
ok 95 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/b/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 96 - resolve: prepare self
ok 97 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 98 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmVYAwsoDzvgkkma5gEfEyBF9TtjPSPrMfaiqhHwCoPhm5
ok 99 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c
ok 100 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz/c -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 101 - resolve: prepare self
ok 102 - resolve succeeds: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz
ok 103 - resolved correctly: /ipns/k51qzi5uqu5dkra9p0bs5s7fktz26epdqouhghbdshyt10y4cmw40ygpitg3uz -> /ipfs/QmNzZy3Jc5USysqxMazsGhUTJ7sYReimbsDogDHDf3CsLQ
ok 104 - 'ipfs daemon' is still running
ok 105 - 'ipfs daemon' can be killed

Back to top

TestCase t0165-keystore

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.102
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.165
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.468
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0165-keystore.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0165-keystore.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0165-keystore.sh/mfs"
ok 3 - prepare config -- mounting
4 - create an RSA key and test B58MH/B36CID output formats Success 0.388
System.out »
expecting success: 
PEERID=$(ipfs key gen --ipns-base=b58mh --type=rsa --size=2048 key_rsa) &&
test_check_rsa2048_b58mh_peerid $PEERID &&
ipfs key rm key_rsa &&
PEERID=$(ipfs key gen --ipns-base=base36 --type=rsa --size=2048 key_rsa) &&
test_check_rsa2048_base36_peerid $PEERID

key_rsa
ok 4 - create an RSA key and test B58MH/B36CID output formats
5 - test RSA key sk export format Success 0.067
System.out »
expecting success: 
ipfs key export key_rsa &&
test_check_rsa2048_sk key_rsa.key &&
rm key_rsa.key

ok 5 - test RSA key sk export format
6 - test RSA key B58MH/B36CID multihash format Success 0.249
System.out »
expecting success: 
PEERID=$(ipfs key list --ipns-base=b58mh -l | grep key_rsa | head -n 1 | cut -d " " -f1) &&
test_check_rsa2048_b58mh_peerid $PEERID &&
PEERID=$(ipfs key list --ipns-base=base36 -l | grep key_rsa | head -n 1 | cut -d " " -f1) &&
test_check_rsa2048_base36_peerid $PEERID &&
ipfs key rm key_rsa

key_rsa
ok 6 - test RSA key B58MH/B36CID multihash format
7 - create an ED25519 key and test B58MH/B36CID output formats Success 0.228
System.out »
expecting success: 
PEERID=$(ipfs key gen --ipns-base=b58mh --type=ed25519 key_ed25519) &&
test_check_ed25519_b58mh_peerid $PEERID &&
ipfs key rm key_ed25519 &&
PEERID=$(ipfs key gen --ipns-base=base36 --type=ed25519 key_ed25519) &&
test_check_ed25519_base36_peerid $PEERID

key_ed25519
ok 7 - create an ED25519 key and test B58MH/B36CID output formats
8 - test ED25519 key sk export format Success 0.078
System.out »
expecting success: 
ipfs key export key_ed25519 &&
test_check_ed25519_sk key_ed25519.key &&
rm key_ed25519.key

ok 8 - test ED25519 key sk export format
9 - test ED25519 key B58MH/B36CID multihash format Success 0.261
System.out »
expecting success: 
PEERID=$(ipfs key list --ipns-base=b58mh -l | grep key_ed25519 | head -n 1 | cut -d " " -f1) &&
test_check_ed25519_b58mh_peerid $PEERID &&
PEERID=$(ipfs key list --ipns-base=base36 -l | grep key_ed25519 | head -n 1 | cut -d " " -f1) &&
test_check_ed25519_base36_peerid $PEERID &&
ipfs key rm key_ed25519

key_ed25519
ok 9 - test ED25519 key B58MH/B36CID multihash format
10 - create a new rsa key Success 0.136
System.out »
expecting success: 
    rsahash=$(ipfs key gen generated_rsa_key --type=rsa --size=2048)
    echo $rsahash > rsa_key_id
  
ok 10 - create a new rsa key
11 - export and import rsa_key with format pem-pkcs8-cleartext Success 0.250
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_rsa_key
ok 11 - export and import rsa_key with format pem-pkcs8-cleartext
12 - export and import rsa_key with format libp2p-protobuf-cleartext Success 0.269
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_rsa_key
ok 12 - export and import rsa_key with format libp2p-protobuf-cleartext
13 - create a new ed25519 key Success 0.099
System.out »
expecting success: 
    edhash=$(ipfs key gen generated_ed25519_key --type=ed25519)
    echo $edhash > ed25519_key_id
  
ok 13 - create a new ed25519 key
14 - export and import ed25519_key with format pem-pkcs8-cleartext Success 0.214
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_ed25519_key
ok 14 - export and import ed25519_key with format pem-pkcs8-cleartext
15 - export and import ed25519_key with format libp2p-protobuf-cleartext Success 0.224
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_ed25519_key
ok 15 - export and import ed25519_key with format libp2p-protobuf-cleartext
16 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats Success 0.411
System.out »
expecting success: 
    ipfs key import test-openssl -f pem-pkcs8-cleartext $KEY_NAME > /dev/null &&
    ipfs key export test-openssl -f libp2p-protobuf-cleartext -o $KEY_NAME.libp2p.key &&
    ipfs key rm test-openssl &&

    ipfs key import test-openssl -f libp2p-protobuf-cleartext $KEY_NAME.libp2p.key > /dev/null &&
    ipfs key export test-openssl -f pem-pkcs8-cleartext -o $KEY_NAME.ipfs-exported.pem &&
    ipfs key rm test-openssl &&

    test_cmp $KEY_NAME $KEY_NAME.ipfs-exported.pem &&

    rm $KEY_NAME.libp2p.key &&
    rm $KEY_NAME.ipfs-exported.pem
  
test-openssl
test-openssl
ok 16 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats
17 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats Success 0.398
System.out »
expecting success: 
    ipfs key import test-openssl -f pem-pkcs8-cleartext $KEY_NAME > /dev/null &&
    ipfs key export test-openssl -f libp2p-protobuf-cleartext -o $KEY_NAME.libp2p.key &&
    ipfs key rm test-openssl &&

    ipfs key import test-openssl -f libp2p-protobuf-cleartext $KEY_NAME.libp2p.key > /dev/null &&
    ipfs key export test-openssl -f pem-pkcs8-cleartext -o $KEY_NAME.ipfs-exported.pem &&
    ipfs key rm test-openssl &&

    test_cmp $KEY_NAME $KEY_NAME.ipfs-exported.pem &&

    rm $KEY_NAME.libp2p.key &&
    rm $KEY_NAME.ipfs-exported.pem
  
test-openssl
test-openssl
ok 17 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats
18 - import key type we don't generate fails Success 0.069
System.out »
expecting success: 
    test_must_fail ipfs key import restricted-type -f pem-pkcs8-cleartext $INVALID_KEY 2>&1 | tee key_exp_out &&
    grep -q "Error: key type \*crypto.ECDSAPrivateKey is not allowed to be imported" key_exp_out &&
    rm key_exp_out
  
Error: key type *crypto.ECDSAPrivateKey is not allowed to be imported, only RSA or Ed25519; use flag --allow-any-key-type if you are sure of what you're doing
ok 18 - import key type we don't generate fails
19 - import key type we don't generate succeeds with flag Success 0.159
System.out »
expecting success: 
    ipfs key import restricted-type --allow-any-key-type -f pem-pkcs8-cleartext $INVALID_KEY  > /dev/null  &&
    ipfs key rm restricted-type
  
restricted-type
ok 19 - import key type we don't generate succeeds with flag
20 - test export file option Success 0.137
System.out »
expecting success: 
    ipfs key export generated_rsa_key -o=named_rsa_export_file &&
    test_cmp generated_rsa_key.key named_rsa_export_file &&
    ipfs key export generated_ed25519_key -o=named_ed25519_export_file &&
    test_cmp generated_ed25519_key.key named_ed25519_export_file
  
ok 20 - test export file option
21 - key export can't export self Success 0.112
System.out »
expecting success: 
    test_must_fail ipfs key export self 2>&1 | tee key_exp_out &&
    grep -q "Error: cannot export key with name" key_exp_out &&
    test_must_fail ipfs key export self -o=selfexport 2>&1 | tee key_exp_out &&
    grep -q "Error: cannot export key with name" key_exp_out
  
Error: cannot export key with name 'self'
Error: cannot export key with name 'self'
ok 21 - key export can't export self
22 - key import can't import self Success 0.253
System.out »
expecting success: 
    ipfs key gen overwrite_self_import &&
    ipfs key export overwrite_self_import &&
    test_must_fail ipfs key import self overwrite_self_import.key 2>&1 | tee key_imp_out &&
    grep -q "Error: cannot import key with name" key_imp_out &&
    ipfs key rm overwrite_self_import &&
    rm overwrite_self_import.key
  
k51qzi5uqu5dieyu1298h5iiklfzcn5thd8zsq6jajlywds632saaoc9qbxoej
Error: cannot import key with name 'self'
overwrite_self_import
ok 22 - key import can't import self
23 - add a default key Success 0.078
System.out »
expecting success: 
    ipfs key gen quxel
  
k51qzi5uqu5dj9q6je09y5mv2fw7xhpmmt4u6g3r5ksjnwjguit4bvy7vrczch
ok 23 - add a default key
24 - all keys show up in list output Success 0.084
System.out »
expecting success: 
    echo generated_ed25519_key > list_exp &&
    echo generated_rsa_key >> list_exp &&
    echo quxel >> list_exp &&
    echo self >> list_exp
    ipfs key list > list_out &&
    test_sort_cmp list_exp list_out
  
ok 24 - all keys show up in list output
25 - key hashes show up in long list output Success 0.186
System.out »
expecting success: 
    ipfs key list -l | grep $edhash > /dev/null &&
    ipfs key list -l | grep $rsahash > /dev/null
  
ok 25 - key hashes show up in long list output
26 - key list -l contains self key with peerID Success 0.189
System.out »
expecting success: 
    PeerID="$(ipfs config Identity.PeerID)"
    ipfs key list -l --ipns-base=b58mh | grep "$PeerID\s\+self"
  
12D3KooWH9KS1yJ8prPbE7sMpjbhMSnzFVzmY4xPo6SMgj3c9tzp self                  
ok 26 - key list -l contains self key with peerID
27 - key rm remove a key Success 0.166
System.out »
expecting success: 
    ipfs key rm generated_rsa_key
    echo generated_ed25519_key > list_exp &&
    echo quxel >> list_exp &&
    echo self >> list_exp
    ipfs key list > list_out &&
    test_sort_cmp list_exp list_out
  
generated_rsa_key
ok 27 - key rm remove a key
28 - key rm can't remove self Success 0.069
System.out »
expecting success: 
    test_must_fail ipfs key rm self 2>&1 | tee key_rm_out &&
    grep -q "Error: cannot remove key with name" key_rm_out
  
Error: cannot remove key with name 'self'
ok 28 - key rm can't remove self
29 - key rename rename a key Success 0.148
System.out »
expecting success: 
    ipfs key rename generated_ed25519_key fooed
    echo fooed > list_exp &&
    echo quxel >> list_exp &&
    echo self >> list_exp
    ipfs key list > list_out &&
    test_sort_cmp list_exp list_out
  
Key k51qzi5uqu5diolf87n96b01qb02hotu1doagpl2v6a615l8t2gkpvp9pqw8kv renamed to fooed
ok 29 - key rename rename a key
30 - key rename rename key output succeeds Success 0.243
System.out »
expecting success: 
    key_content=$(ipfs key gen key1 --type=rsa --size=2048) &&
    ipfs key rename key1 key2 >rs &&
    echo "Key $key_content renamed to key2" >expect &&
    test_cmp rs expect
  
ok 30 - key rename rename key output succeeds
31 - key rename can't rename self Success 0.090
System.out »
expecting success: 
    test_must_fail ipfs key rename self bar 2>&1 | tee key_rename_out &&
    grep -q "Error: cannot rename key with name" key_rename_out
  
Error: cannot rename key with name 'self'
ok 31 - key rename can't rename self
32 - key rename can't overwrite self, even with force Success 0.079
System.out »
expecting success: 
    test_must_fail ipfs key rename -f fooed self 2>&1 | tee key_rename_out &&
    grep -q "Error: cannot overwrite key with name" key_rename_out
  
Error: cannot overwrite key with name 'self'
ok 32 - key rename can't overwrite self, even with force
33 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 33 - 'ipfs daemon' succeeds
34 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 34 - api file shows up
35 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 35 - set up address variables
36 - get swarm addresses Success 0.059
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 36 - get swarm addresses
37 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 37 - set swarm address vars
38 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 38 - 'ipfs daemon' is ready
39 - online import rsa key Success 0.076
System.out »
expecting success: 
    ipfs key import generated_rsa_key generated_rsa_key.key > roundtrip_rsa_key_id &&
    test_cmp rsa_key_id roundtrip_rsa_key_id
  
ok 39 - online import rsa key
40 - prepare ed25519 key while daemon is running Success 0.065
System.out »
expecting success: 
    edhash=$(ipfs key gen generated_ed25519_key --type=ed25519)
    echo $edhash > ed25519_key_id
  
ok 40 - prepare ed25519 key while daemon is running
41 - export and import ed25519_key with format pem-pkcs8-cleartext Success 0.186
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_ed25519_key
ok 41 - export and import ed25519_key with format pem-pkcs8-cleartext
42 - export and import ed25519_key with format libp2p-protobuf-cleartext Success 0.182
System.out »
expecting success: 
    ipfs key export $ORIG_KEY --format=$FORMAT &&
    ipfs key rm $ORIG_KEY &&
    ipfs key import $ORIG_KEY $ORIG_KEY.$FILE_EXT --format=$FORMAT > imported_key_id &&
    test_cmp ${KEY_NAME}_id imported_key_id
  
generated_ed25519_key
ok 42 - export and import ed25519_key with format libp2p-protobuf-cleartext
43 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats Success 0.336
System.out »
expecting success: 
    ipfs key import test-openssl -f pem-pkcs8-cleartext $KEY_NAME > /dev/null &&
    ipfs key export test-openssl -f libp2p-protobuf-cleartext -o $KEY_NAME.libp2p.key &&
    ipfs key rm test-openssl &&

    ipfs key import test-openssl -f libp2p-protobuf-cleartext $KEY_NAME.libp2p.key > /dev/null &&
    ipfs key export test-openssl -f pem-pkcs8-cleartext -o $KEY_NAME.ipfs-exported.pem &&
    ipfs key rm test-openssl &&

    test_cmp $KEY_NAME $KEY_NAME.ipfs-exported.pem &&

    rm $KEY_NAME.libp2p.key &&
    rm $KEY_NAME.ipfs-exported.pem
  
test-openssl
test-openssl
ok 43 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats
44 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats Success 0.340
System.out »
expecting success: 
    ipfs key import test-openssl -f pem-pkcs8-cleartext $KEY_NAME > /dev/null &&
    ipfs key export test-openssl -f libp2p-protobuf-cleartext -o $KEY_NAME.libp2p.key &&
    ipfs key rm test-openssl &&

    ipfs key import test-openssl -f libp2p-protobuf-cleartext $KEY_NAME.libp2p.key > /dev/null &&
    ipfs key export test-openssl -f pem-pkcs8-cleartext -o $KEY_NAME.ipfs-exported.pem &&
    ipfs key rm test-openssl &&

    test_cmp $KEY_NAME $KEY_NAME.ipfs-exported.pem &&

    rm $KEY_NAME.libp2p.key &&
    rm $KEY_NAME.ipfs-exported.pem
  
test-openssl
test-openssl
ok 44 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats
45 - key export over HTTP /api/v0/key/export is not possible Success 0.069
System.out »
expecting success: 
    ipfs key gen nohttpexporttest_key --type=ed25519 &&
    curl -X POST -sI "http://$API_ADDR/api/v0/key/export&arg=nohttpexporttest_key" | grep -q "^HTTP/1.1 404 Not Found"
  
k51qzi5uqu5dlz1iazjez3xofdtsvp5sancu4qg4jtce3qen5j5oaubdjgw6vk
ok 45 - key export over HTTP /api/v0/key/export is not possible
46 - online rotate rsa key Success 0.063
System.out »
expecting success: 
    test_must_fail ipfs key rotate
  
ok 46 - online rotate rsa key
System.err »
Error: ipfs daemon is running. please stop it to run this command
Use 'ipfs key rotate --help' for information about this command
47 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 47 - 'ipfs daemon' is still running
48 - 'ipfs daemon' can be killed Success 0.244
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 48 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create an RSA key and test B58MH/B36CID output formats
ok 5 - test RSA key sk export format
ok 6 - test RSA key B58MH/B36CID multihash format
ok 7 - create an ED25519 key and test B58MH/B36CID output formats
ok 8 - test ED25519 key sk export format
ok 9 - test ED25519 key B58MH/B36CID multihash format
ok 10 - create a new rsa key
ok 11 - export and import rsa_key with format pem-pkcs8-cleartext
ok 12 - export and import rsa_key with format libp2p-protobuf-cleartext
ok 13 - create a new ed25519 key
ok 14 - export and import ed25519_key with format pem-pkcs8-cleartext
ok 15 - export and import ed25519_key with format libp2p-protobuf-cleartext
ok 16 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats
ok 17 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats
ok 18 - import key type we don't generate fails
ok 19 - import key type we don't generate succeeds with flag
ok 20 - test export file option
ok 21 - key export can't export self
ok 22 - key import can't import self
ok 23 - add a default key
ok 24 - all keys show up in list output
ok 25 - key hashes show up in long list output
ok 26 - key list -l contains self key with peerID
ok 27 - key rm remove a key
ok 28 - key rm can't remove self
ok 29 - key rename rename a key
ok 30 - key rename rename key output succeeds
ok 31 - key rename can't rename self
ok 32 - key rename can't overwrite self, even with force
ok 33 - 'ipfs daemon' succeeds
ok 34 - api file shows up
ok 35 - set up address variables
ok 36 - get swarm addresses
ok 37 - set swarm address vars
ok 38 - 'ipfs daemon' is ready
ok 39 - online import rsa key
ok 40 - prepare ed25519 key while daemon is running
ok 41 - export and import ed25519_key with format pem-pkcs8-cleartext
ok 42 - export and import ed25519_key with format libp2p-protobuf-cleartext
ok 43 - import and export ../t0165-keystore-data/openssl_ed25519.pem with all formats
ok 44 - import and export ../t0165-keystore-data/openssl_rsa.pem with all formats
ok 45 - key export over HTTP /api/v0/key/export is not possible
ok 46 - online rotate rsa key
ok 47 - 'ipfs daemon' is still running
ok 48 - 'ipfs daemon' can be killed

Back to top

TestCase t0180-p2p

Name Status Type Time(s)
1 - init iptb Success 0.279
System.out »
expecting success: 
  iptb testbed create -type localipfs --count 3 --init

ok 1 - init iptb
2 - generate test data Success 0.005
System.out »
expecting success: 
  echo "ABCDEF" > test0.bin &&
  echo "012345" > test1.bin

ok 2 - generate test data
3 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.112
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
4 - start up nodes Success 0.424
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 4 - start up nodes
5 - connect nodes to each other Success 0.297
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 5 - connect nodes to each other
6 - node 0 is connected Success 0.082
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 0 is connected
7 - node 1 is connected Success 0.074
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 7 - node 1 is connected
8 - node 2 is connected Success 0.070
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 8 - node 2 is connected
9 - peer ids Success 0.038
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_1=$(iptb attr get 1 id)

ok 9 - peer ids
10 - test ports are closed Success 0.110
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 10 - test ports are closed
11 - fail without config option being enabled Success 0.074
System.out »
expecting success: 
  test_must_fail ipfsi 0 p2p stream ls

ok 11 - fail without config option being enabled
System.err »
Error: libp2p stream mounting not enabled
12 - enable filestore config setting Success 0.209
System.out »
expecting success: 
  ipfsi 0 config --json Experimental.Libp2pStreamMounting true
  ipfsi 1 config --json Experimental.Libp2pStreamMounting true
  ipfsi 2 config --json Experimental.Libp2pStreamMounting true

ok 12 - enable filestore config setting
13 - start p2p listener Success 0.058
System.out »
expecting success: 
  ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log

ok 13 - start p2p listener
14 - cannot re-register p2p listener Success 0.060
System.out »
expecting success: 
  test_must_fail ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10103 2>&1 > listener-stdouterr.log

Error: listener already registered
ok 14 - cannot re-register p2p listener
15 - S->C Spawn sending server Success 0.110
System.out »
expecting success: 
    ma-pipe-unidir --listen --pidFile=listener.pid send /ip4/127.0.0.1/tcp/10101 < test0.bin &

    test_wait_for_file 30 100ms listener.pid &&
    kill -0 $(cat listener.pid)
  
ok 15 - S->C Spawn sending server
16 - S->C(/p2p/peerID) Setup client side Success 0.085
System.out »
expecting success: 
  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10102 /p2p/${PEERID_0} 2>&1 > dialer-stdouterr.log

ok 16 - S->C(/p2p/peerID) Setup client side
17 - S->C Setup(dnsaddr/addr/p2p/peerID) client side Success 0.069
System.out »
expecting success: 
  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10103 /dnsaddr/bootstrap.libp2p.io/p2p/${PEERID_0}  2>&1 > dialer-stdouterr.log

ok 17 - S->C Setup(dnsaddr/addr/p2p/peerID) client side
18 - S->C Setup(dnsaddr/addr) client side Success 0.138
System.out »
expecting success: 
  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10104 /dnsaddr/example-dnsaddr.multiformats.io 2>&1 > dialer-stdouterr.log

ok 18 - S->C Setup(dnsaddr/addr) client side
19 - S->C Output is empty Success 0.004
System.out »
expecting success: 
  test_must_be_empty dialer-stdouterr.log

ok 19 - S->C Output is empty
20 - 'ipfs p2p ls | grep' succeeds Success 0.076
System.out »
expecting success: 
  ipfsi 1 p2p ls | grep "/x/p2p-test /ip4/127.0.0.1/tcp/10104"

/x/p2p-test /ip4/127.0.0.1/tcp/10104 /p2p/QmcoDFDWqkx8t1zhEqKDw8f79yQDY9sxrgabnUL5Nps9Cn
ok 20 - 'ipfs p2p ls | grep' succeeds
21 - S->C Connect and receive data Success 0.011
System.out »
expecting success: 
    ma-pipe-unidir recv /ip4/127.0.0.1/tcp/10102 > client.out
  
ok 21 - S->C Connect and receive data
22 - S->C Ensure server finished Success 0.004
System.out »
expecting success: 
    test ! -f listener.pid
  
ok 22 - S->C Ensure server finished
23 - S->C Output looks good Success 0.009
System.out »
expecting success: 
    test_cmp client.out test0.bin
  
ok 23 - S->C Output looks good
24 - S->C Connect with dead server Success 0.010
System.out »
expecting success: 
  ma-pipe-unidir recv /ip4/127.0.0.1/tcp/10102 > client.out

ok 24 - S->C Connect with dead server
25 - S->C Output is empty Success 0.005
System.out »
expecting success: 
  test_must_be_empty client.out

ok 25 - S->C Output is empty
26 - S->C Spawn sending server Success 0.110
System.out »
expecting success: 
    ma-pipe-unidir --listen --pidFile=listener.pid send /ip4/127.0.0.1/tcp/10101 < test0.bin &

    test_wait_for_file 30 100ms listener.pid &&
    kill -0 $(cat listener.pid)
  
ok 26 - S->C Spawn sending server
27 - S->C Connect and receive data Success 0.009
System.out »
expecting success: 
    ma-pipe-unidir recv /ip4/127.0.0.1/tcp/10102 > client.out
  
ok 27 - S->C Connect and receive data
28 - S->C Ensure server finished Success 0.004
System.out »
expecting success: 
    test ! -f listener.pid
  
ok 28 - S->C Ensure server finished
29 - S->C Output looks good Success 0.006
System.out »
expecting success: 
    test_cmp client.out test0.bin
  
ok 29 - S->C Output looks good
30 - S->C Close local listener Success 0.074
System.out »
expecting success: 
  ipfsi 1 p2p close -p /x/p2p-test

Closed 3 stream(s)
ok 30 - S->C Close local listener
31 - test ports are closed Success 0.120
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 31 - test ports are closed
32 - C->S Spawn receiving server Success 0.110
System.out »
expecting success: 
  ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 > server.out &

  test_wait_for_file 30 100ms listener.pid &&
  kill -0 $(cat listener.pid)

ok 32 - C->S Spawn receiving server
33 - C->S Setup client side Success 0.069
System.out »
expecting success: 
  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10102 /p2p/${PEERID_0} 2>&1 > dialer-stdouterr.log

ok 33 - C->S Setup client side
34 - C->S Connect and receive data Success 0.008
System.out »
expecting success: 
  ma-pipe-unidir send /ip4/127.0.0.1/tcp/10102 < test1.bin

ok 34 - C->S Connect and receive data
35 - C->S Ensure server finished Success 0.257
System.out »
expecting success: 
  go-sleep 250ms &&
  test ! -f listener.pid

ok 35 - C->S Ensure server finished
36 - C->S Output looks good Success 0.005
System.out »
expecting success: 
  test_cmp server.out test1.bin

ok 36 - C->S Output looks good
37 - C->S Close local listener Success 0.058
System.out »
expecting success: 
  ipfsi 1 p2p close -p /x/p2p-test

Closed 1 stream(s)
ok 37 - C->S Close local listener
38 - test ports are closed Success 0.117
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 38 - test ports are closed
39 - cannot accept 0 port in 'ipfs p2p listen' Success 0.060
System.out »
expecting success: 
  test_must_fail ipfsi 2 p2p listen /x/p2p-test/0 /ip4/127.0.0.1/tcp/0

ok 39 - cannot accept 0 port in 'ipfs p2p listen'
System.err »
Error: port can not be 0
40 - 'ipfs p2p forward' accept 0 port Success 0.069
System.out »
expecting success: 
  ipfsi 2 p2p forward /x/p2p-test/0 /ip4/127.0.0.1/tcp/0 /p2p/$PEERID_0

ok 40 - 'ipfs p2p forward' accept 0 port
41 - 'ipfs p2p ls' output looks good Success 0.129
System.out »
expecting success: 
  echo "true" > forward_0_expected &&
  ipfsi 2 p2p ls | awk '{print $2}' | sed "s/.*\///" | awk -F: '{if($1>0)print"true"}'  > forward_0_actual &&
  ipfsi 2 p2p close -p /x/p2p-test/0 &&
  test_cmp forward_0_expected forward_0_actual

Closed 1 stream(s)
ok 41 - 'ipfs p2p ls' output looks good
42 - 'ipfs p2p ls' succeeds Success 0.063
System.out »
expecting success: 
  echo "/x/p2p-test /p2p/$PEERID_0 /ip4/127.0.0.1/tcp/10101" > expected &&
  ipfsi 0 p2p ls > actual

ok 42 - 'ipfs p2p ls' succeeds
43 - 'ipfs p2p ls' output looks good Success 0.005
System.out »
expecting success: 
  test_cmp expected actual

ok 43 - 'ipfs p2p ls' output looks good
44 - Cannot re-register app handler Success 0.072
System.out »
expecting success: 
  test_must_fail ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10101

ok 44 - Cannot re-register app handler
System.err »
Error: listener already registered
45 - 'ipfs p2p stream ls' output is empty Success 0.058
System.out »
expecting success: 
  ipfsi 0 p2p stream ls > actual &&
  test_must_be_empty actual

ok 45 - 'ipfs p2p stream ls' output is empty
46 - test ports are closed Success 0.100
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 46 - test ports are closed
47 - Setup: Idle stream Success 0.112
System.out »
expecting success: 
  ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &

  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10102 /p2p/$PEERID_0 &&
  ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &

  test_wait_for_file 30 100ms listener.pid &&
  test_wait_for_file 30 100ms client.pid &&
  kill -0 $(cat listener.pid) && kill -0 $(cat client.pid)

ok 47 - Setup: Idle stream
48 - 'ipfs p2p stream ls' succeeds Success 0.072
System.out »
expecting success: 
  echo "3 /x/p2p-test /p2p/$PEERID_1 /ip4/127.0.0.1/tcp/10101" > expected
  ipfsi 0 p2p stream ls > actual

ok 48 - 'ipfs p2p stream ls' succeeds
49 - 'ipfs p2p stream ls' output looks good Success 0.006
System.out »
expecting success: 
  test_cmp expected actual

ok 49 - 'ipfs p2p stream ls' output looks good
50 - 'ipfs p2p stream close' closes stream Success 0.129
System.out »
expecting success: 
  ipfsi 0 p2p stream close 3 &&
  ipfsi 0 p2p stream ls > actual &&
  [ ! -f listener.pid ] && [ ! -f client.pid ] &&
  test_must_be_empty actual

ok 50 - 'ipfs p2p stream close' closes stream
51 - 'ipfs p2p close' closes remote handler Success 0.146
System.out »
expecting success: 
  ipfsi 0 p2p close -p /x/p2p-test &&
  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 51 - 'ipfs p2p close' closes remote handler
52 - 'ipfs p2p close' closes local handler Success 0.144
System.out »
expecting success: 
  ipfsi 1 p2p close -p /x/p2p-test &&
  ipfsi 1 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 52 - 'ipfs p2p close' closes local handler
53 - test ports are closed Success 0.140
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 53 - test ports are closed
54 - Setup: Idle stream(2) Success 0.215
System.out »
expecting success: 
  ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &

  ipfsi 0 p2p listen /x/p2p-test2 /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log &&
  ipfsi 1 p2p forward /x/p2p-test2 /ip4/127.0.0.1/tcp/10102 /p2p/$PEERID_0 2>&1 > dialer-stdouterr.log &&
  ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &

  test_wait_for_file 30 100ms listener.pid &&
  test_wait_for_file 30 100ms client.pid &&
  kill -0 $(cat listener.pid) && kill -0 $(cat client.pid)

ok 54 - Setup: Idle stream(2)
55 - 'ipfs p2p stream ls' succeeds(2) Success 0.067
System.out »
expecting success: 
  echo "4 /x/p2p-test2 /p2p/$PEERID_1 /ip4/127.0.0.1/tcp/10101" > expected
  ipfsi 0 p2p stream ls > actual
  test_cmp expected actual

ok 55 - 'ipfs p2p stream ls' succeeds(2)
56 - 'ipfs p2p close -a' closes remote app handlers Success 0.112
System.out »
expecting success: 
  ipfsi 0 p2p close -a &&
  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 56 - 'ipfs p2p close -a' closes remote app handlers
57 - 'ipfs p2p close -a' closes local app handlers Success 0.109
System.out »
expecting success: 
  ipfsi 1 p2p close -a &&
  ipfsi 1 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 57 - 'ipfs p2p close -a' closes local app handlers
58 - 'ipfs p2p stream close -a' closes streams Success 0.119
System.out »
expecting success: 
  ipfsi 0 p2p stream close -a &&
  ipfsi 0 p2p stream ls > actual &&
  [ ! -f listener.pid ] && [ ! -f client.pid ] &&
  test_must_be_empty actual

ok 58 - 'ipfs p2p stream close -a' closes streams
59 - test ports are closed Success 0.117
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 59 - test ports are closed
60 - 'ipfs p2p close' closes app numeric handlers Success 0.168
System.out »
expecting success: 
  ipfsi 0 p2p listen /x/1234 /ip4/127.0.0.1/tcp/10101 &&
  ipfsi 0 p2p close -p /x/1234 &&
  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 60 - 'ipfs p2p close' closes app numeric handlers
61 - 'ipfs p2p close' closes by target addr Success 0.183
System.out »
expecting success: 
  ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10101 &&
  ipfsi 0 p2p close -t /ip4/127.0.0.1/tcp/10101 &&
  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 61 - 'ipfs p2p close' closes by target addr
62 - 'ipfs p2p close' closes right listeners Success 0.257
System.out »
expecting success: 
  ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10101 &&
  ipfsi 0 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10101 /p2p/$PEERID_1 &&
  echo "/x/p2p-test /p2p/$PEERID_0 /ip4/127.0.0.1/tcp/10101" > expected &&

  ipfsi 0 p2p close -l /ip4/127.0.0.1/tcp/10101 &&
  ipfsi 0 p2p ls > actual &&
  test_cmp expected actual

Closed 1 stream(s)
ok 62 - 'ipfs p2p close' closes right listeners
63 - test ports are closed Success 0.104
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 63 - test ports are closed
64 - 'ipfs p2p close' closes by listen addr Success 0.114
System.out »
expecting success: 
  ipfsi 0 p2p close -l /p2p/$PEERID_0 &&
  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 64 - 'ipfs p2p close' closes by listen addr
65 - start p2p listener reporting peer Success 0.059
System.out »
expecting success: 
  ipfsi 0 p2p listen /x/p2p-test /ip4/127.0.0.1/tcp/10101 --report-peer-id 2>&1 > listener-stdouterr.log

ok 65 - start p2p listener reporting peer
66 - C->S Spawn receiving server Success 0.109
System.out »
expecting success: 
  ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 > server.out &

  test_wait_for_file 30 100ms listener.pid &&
  kill -0 $(cat listener.pid)

ok 66 - C->S Spawn receiving server
67 - C->S Setup client side Success 0.064
System.out »
expecting success: 
  ipfsi 1 p2p forward /x/p2p-test /ip4/127.0.0.1/tcp/10102 /p2p/${PEERID_0} 2>&1 > dialer-stdouterr.log

ok 67 - C->S Setup client side
68 - C->S Connect and receive data Success 0.008
System.out »
expecting success: 
  ma-pipe-unidir send /ip4/127.0.0.1/tcp/10102 < test1.bin

ok 68 - C->S Connect and receive data
69 - C->S Ensure server finished Success 0.257
System.out »
expecting success: 
  go-sleep 250ms &&
  test ! -f listener.pid

ok 69 - C->S Ensure server finished
70 - C->S Output looks good Success 0.007
System.out »
expecting success: 
  echo ${PEERID_1} > expected &&
  cat test1.bin >> expected &&
  test_cmp server.out expected

ok 70 - C->S Output looks good
71 - C->S Close listeners Success 0.237
System.out »
expecting success: 
  ipfsi 1 p2p close -p /x/p2p-test &&
  ipfsi 0 p2p close -p /x/p2p-test &&

  ipfsi 0 p2p ls > actual &&
  test_must_be_empty actual &&

  ipfsi 1 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
Closed 1 stream(s)
ok 71 - C->S Close listeners
72 - non /x/ scoped protocols are not allowed Success 0.068
System.out »
expecting success: 
  test_must_fail ipfsi 0 p2p listen /its/not/a/x/path /ip4/127.0.0.1/tcp/10101 2> actual &&
  echo "Error: protocol name must be within '/x/' namespace" > expected
  test_cmp expected actual

ok 72 - non /x/ scoped protocols are not allowed
73 - test ports are closed Success 0.109
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 73 - test ports are closed
74 - start p2p listener on custom proto Success 0.052
System.out »
expecting success: 
  ipfsi 0 p2p listen --allow-custom-protocol /p2p-test /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log &&
  test_must_be_empty listener-stdouterr.log

ok 74 - start p2p listener on custom proto
75 - S->C Spawn sending server Success 0.110
System.out »
expecting success: 
    ma-pipe-unidir --listen --pidFile=listener.pid send /ip4/127.0.0.1/tcp/10101 < test0.bin &

    test_wait_for_file 30 100ms listener.pid &&
    kill -0 $(cat listener.pid)
  
ok 75 - S->C Spawn sending server
76 - S->C Setup client side (custom proto) Success 0.059
System.out »
expecting success: 
  ipfsi 1 p2p forward --allow-custom-protocol /p2p-test /ip4/127.0.0.1/tcp/10102 /p2p/${PEERID_0} 2>&1 > dialer-stdouterr.log

ok 76 - S->C Setup client side (custom proto)
77 - S->C Connect and receive data Success 0.009
System.out »
expecting success: 
    ma-pipe-unidir recv /ip4/127.0.0.1/tcp/10102 > client.out
  
ok 77 - S->C Connect and receive data
78 - S->C Ensure server finished Success 0.004
System.out »
expecting success: 
    test ! -f listener.pid
  
ok 78 - S->C Ensure server finished
79 - S->C Output looks good Success 0.006
System.out »
expecting success: 
    test_cmp client.out test0.bin
  
ok 79 - S->C Output looks good
80 - C->S Close local listener Success 0.104
System.out »
expecting success: 
  ipfsi 1 p2p close -p /p2p-test
  ipfsi 1 p2p ls > actual &&
  test_must_be_empty actual

Closed 1 stream(s)
ok 80 - C->S Close local listener
81 - test ports are closed Success 0.087
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 81 - test ports are closed
82 - stop iptb Success 0.023
System.out »
expecting success: 
  iptb stop

ok 82 - stop iptb
83 - test ports are closed Success 0.118
System.out »
expecting success: 
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10101 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10102 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10103 ")) &&
    (! (netstat -aln | grep "LISTEN" | grep -E "[.:]10104 "))
  
ok 83 - test ports are closed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - init iptb
ok 2 - generate test data
ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
ok 4 - start up nodes
ok 5 - connect nodes to each other
ok 6 - node 0 is connected
ok 7 - node 1 is connected
ok 8 - node 2 is connected
ok 9 - peer ids
ok 10 - test ports are closed
ok 11 - fail without config option being enabled
ok 12 - enable filestore config setting
ok 13 - start p2p listener
ok 14 - cannot re-register p2p listener
ok 15 - S->C Spawn sending server
ok 16 - S->C(/p2p/peerID) Setup client side
ok 17 - S->C Setup(dnsaddr/addr/p2p/peerID) client side
ok 18 - S->C Setup(dnsaddr/addr) client side
ok 19 - S->C Output is empty
ok 20 - 'ipfs p2p ls | grep' succeeds
ok 21 - S->C Connect and receive data
ok 22 - S->C Ensure server finished
ok 23 - S->C Output looks good
ok 24 - S->C Connect with dead server
ok 25 - S->C Output is empty
ok 26 - S->C Spawn sending server
ok 27 - S->C Connect and receive data
ok 28 - S->C Ensure server finished
ok 29 - S->C Output looks good
ok 30 - S->C Close local listener
ok 31 - test ports are closed
ok 32 - C->S Spawn receiving server
ok 33 - C->S Setup client side
ok 34 - C->S Connect and receive data
ok 35 - C->S Ensure server finished
ok 36 - C->S Output looks good
ok 37 - C->S Close local listener
ok 38 - test ports are closed
ok 39 - cannot accept 0 port in 'ipfs p2p listen'
ok 40 - 'ipfs p2p forward' accept 0 port
ok 41 - 'ipfs p2p ls' output looks good
ok 42 - 'ipfs p2p ls' succeeds
ok 43 - 'ipfs p2p ls' output looks good
ok 44 - Cannot re-register app handler
ok 45 - 'ipfs p2p stream ls' output is empty
ok 46 - test ports are closed
ok 47 - Setup: Idle stream
ok 48 - 'ipfs p2p stream ls' succeeds
ok 49 - 'ipfs p2p stream ls' output looks good
ok 50 - 'ipfs p2p stream close' closes stream
ok 51 - 'ipfs p2p close' closes remote handler
ok 52 - 'ipfs p2p close' closes local handler
ok 53 - test ports are closed
ok 54 - Setup: Idle stream(2)
ok 55 - 'ipfs p2p stream ls' succeeds(2)
ok 56 - 'ipfs p2p close -a' closes remote app handlers
ok 57 - 'ipfs p2p close -a' closes local app handlers
ok 58 - 'ipfs p2p stream close -a' closes streams
ok 59 - test ports are closed
ok 60 - 'ipfs p2p close' closes app numeric handlers
ok 61 - 'ipfs p2p close' closes by target addr
ok 62 - 'ipfs p2p close' closes right listeners
ok 63 - test ports are closed
ok 64 - 'ipfs p2p close' closes by listen addr
ok 65 - start p2p listener reporting peer
ok 66 - C->S Spawn receiving server
ok 67 - C->S Setup client side
ok 68 - C->S Connect and receive data
ok 69 - C->S Ensure server finished
ok 70 - C->S Output looks good
ok 71 - C->S Close listeners
ok 72 - non /x/ scoped protocols are not allowed
ok 73 - test ports are closed
ok 74 - start p2p listener on custom proto
ok 75 - S->C Spawn sending server
ok 76 - S->C Setup client side (custom proto)
ok 77 - S->C Connect and receive data
ok 78 - S->C Ensure server finished
ok 79 - S->C Output looks good
ok 80 - C->S Close local listener
ok 81 - test ports are closed
ok 82 - stop iptb
ok 83 - test ports are closed

Back to top

TestCase t0181-private-network

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.107
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.167
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.441
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0181-private-network.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0181-private-network.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0181-private-network.sh/mfs"
ok 3 - prepare config -- mounting
4 - disable AutoConf for private network tests Success 0.092
System.out »
expecting success: 
  ipfs config --json AutoConf.Enabled false

ok 4 - disable AutoConf for private network tests
5 - daemon won't start with force pnet env but with no key Success 0.104
System.out »
expecting success: 
  test_must_fail go-timeout 5 ipfs daemon > stdout 2>&1

ok 5 - daemon won't start with force pnet env but with no key
6 - daemon output includes info about the reason Success 0.007
System.out »
expecting success: 
  grep "private network was not configured but is enforced by the environment" stdout ||
  test_fsh cat stdout

2026-02-27T18:13:45.534Z	ERROR	p2p-config	fxevent/slog.go:84	error returned	{"system": "fx", "name": "github.com/libp2p/go-libp2p/config.(*Config).NewNode.func3()", "kind": "provide", "error": "received non-nil error from function \"github.com/libp2p/go-libp2p/config\".(*Config).NewNode.func3 (github.com/libp2p/go-libp2p@v0.47.0/config/config.go:521): privnet: private network was not configured but is enforced by the environment"}
2026-02-27T18:13:45.534Z	ERROR	p2p-config	fxevent/slog.go:84	invoke failed	{"system": "fx", "error": "could not build arguments for function \"reflect\".makeFuncStub (reflect/asm_amd64.s:28): failed to build *swarm.Swarm: received non-nil error from function \"github.com/libp2p/go-libp2p/config\".(*Config).NewNode.func3 (github.com/libp2p/go-libp2p@v0.47.0/config/config.go:521): privnet: private network was not configured but is enforced by the environment", "stack": "github.com/libp2p/go-libp2p/config.(*Config).addTransports\n\tgithub.com/libp2p/go-libp2p@v0.47.0/config/config.go:424\ngithub.com/libp2p/go-libp2p/config.(*Config).NewNode\n\tgithub.com/libp2p/go-libp2p@v0.47.0/config/config.go:584\ngithub.com/libp2p/go-libp2p.NewWithoutDefaults\n\tgithub.com/libp2p/go-libp2p@v0.47.0/libp2p.go:67\ngithub.com/libp2p/go-libp2p.New\n\tgithub.com/libp2p/go-libp2p@v0.47.0/libp2p.go:53\ngithub.com/ipfs/kubo/core/node/libp2p.constructPeerHost\n\tgithub.com/ipfs/kubo/core/node/libp2p/hostopt.go:23\ngithub.com/ipfs/kubo/core/node/libp2p.Host\n\tgithub.com/ipfs/kubo/core/node/libp2p/host.go:87\nreflect.Value.call\n\treflect/value.go:581\n", "function": "fx.Annotate(github.com/libp2p/go-libp2p/config.(*Config).addTransports.func10(), fx.ParamTags([\"\" \"group:\\\"transport\\\"\"])"}
2026-02-27T18:13:45.534Z	ERROR	p2p-config	fxevent/slog.go:84	start failed	{"system": "fx", "error": "could not build arguments for function \"reflect\".makeFuncStub (reflect/asm_amd64.s:28): failed to build *swarm.Swarm: received non-nil error from function \"github.com/libp2p/go-libp2p/config\".(*Config).NewNode.func3 (github.com/libp2p/go-libp2p@v0.47.0/config/config.go:521): privnet: private network was not configured but is enforced by the environment"}
2026-02-27T18:13:45.534Z	ERROR	core	core/builder.go:158	constructing the node: could not build arguments for function "github.com/ipfs/kubo/core/node".PeerWith.func1 (github.com/ipfs/kubo/core/node/peering.go:30): failed to build *peering.PeeringService: could not build arguments for function "github.com/ipfs/kubo/core/node".Peering (github.com/ipfs/kubo/core/node/peering.go:14): failed to build host.Host: received non-nil error from function "github.com/ipfs/kubo/core/node/libp2p".Host (github.com/ipfs/kubo/core/node/libp2p/host.go:41): could not build arguments for function "reflect".makeFuncStub (reflect/asm_amd64.s:28): failed to build *swarm.Swarm: received non-nil error from function "github.com/libp2p/go-libp2p/config".(*Config).NewNode.func3 (github.com/libp2p/go-libp2p@v0.47.0/config/config.go:521): privnet: private network was not configured but is enforced by the environment
Error: constructing the node (see log for full detail): privnet: private network was not configured but is enforced by the environment
ok 6 - daemon output includes info about the reason
7 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 7 - 'ipfs daemon' succeeds
8 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 8 - api file shows up
9 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 9 - set up address variables
10 - get swarm addresses Success 0.078
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 10 - get swarm addresses
11 - set swarm address vars Success 0.011
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 11 - set swarm address vars
12 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 12 - 'ipfs daemon' is ready
13 - set up iptb testbed Success 0.964
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 5 -force -init &&
  iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true &&
  iptb run -- ipfs config --json "Swarm.Transports.Network.Websocket" false &&
  iptb run -- ipfs config --json Addresses.Swarm  '["/ip4/127.0.0.1/tcp/0"]' &&
  iptb run -- ipfs config --json AutoConf.Enabled false

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 13 - set up iptb testbed
14 - start nodes Success 0.431
System.out »
expecting success: 
  iptb start -wait [0-4]

ok 14 - start nodes
15 - try connecting node in public network with priv networks Success 2.486
System.out »
expecting success: 
  test_must_fail iptb connect --timeout=2s [1-4] 0

> command iptb logs
node[0] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi
Swarm listening on 127.0.0.1:32835 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 00519e4a-dcfa-4761-b3cd-2ce8dd5b360d

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/44257
WebUI: http://127.0.0.1:44257/webui
Daemon is ready
2026-02-27T18:13:47.259Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	core:constructor	node/groups.go:188	Invalid configuration: AutoTLS.Enabled=true requires Swarm.Transports.Network.Websocket to be true as well. AutoTLS will be disabled.

node[1] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRFRiitfW5pKeGrrg8rwxpb9P6tqzevCZgRzCp5JcfqFo
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: 3ba80a1252338abec866016a7a8a30a1
Swarm listening on 127.0.0.1:44425 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: fadeae4e-400f-498b-8c2e-3df08eb49bd5

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/35001
WebUI: http://127.0.0.1:35001/webui
Daemon is ready
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.260Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[2] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWQTRaVHKkoeCWsGoWFc5B1JN9VjSM1d1SVpoTAQhUcZgQ
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: 3ba80a1252338abec866016a7a8a30a1
Swarm listening on 127.0.0.1:32799 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 6a674d61-94c2-4acc-a35b-bee4a7a7863f

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/40723
WebUI: http://127.0.0.1:40723/webui
Daemon is ready
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.270Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[3] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRwgQNsY79zVrXNAMj5JoP9WdM6DJrzRjPxFu3igWs6kd
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: bbfbc0276bf58a2370cb57beea52cfbd
Swarm listening on 127.0.0.1:35041 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: a53b668e-d0e7-4c4b-81df-2755bba941bc

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/45911
WebUI: http://127.0.0.1:45911/webui
Daemon is ready
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.265Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[4] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRVWHCkh1bHbEa6WnQ2TJ77HEWpNWf8ftvKA6LWprB3Ax
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: bbfbc0276bf58a2370cb57beea52cfbd
Swarm listening on 127.0.0.1:45333 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 99121bcc-36c1-4c14-9eb4-5ec76750bf60

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/39691
WebUI: http://127.0.0.1:39691/webui
Daemon is ready
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.267Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.


ok 15 - try connecting node in public network with priv networks
System.err »
node[1] => node[0]: Error: connect 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi failure: failed to dial: failed to dial 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi: all dials failed
  * [/ip4/127.0.0.1/tcp/32835] failed to negotiate security protocol: privnet: could not read full nonce: read tcp4 127.0.0.1:38580->127.0.0.1:32835: read: connection reset by peer

node[2] => node[0]: Error: connect 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi failure: failed to dial: failed to dial 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi: all dials failed
  * [/ip4/127.0.0.1/tcp/32835] failed to negotiate security protocol: privnet: could not read full nonce: read tcp4 127.0.0.1:45414->127.0.0.1:32835: read: connection reset by peer

node[3] => node[0]: Error: context canceled

node[4] => node[0]: Error: connect 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi failure: failed to dial: failed to dial 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi: all dials failed
  * [/ip4/127.0.0.1/tcp/32835] failed to negotiate security protocol: privnet: could not read full nonce: read tcp4 127.0.0.1:45440->127.0.0.1:32835: read: connection reset by peer
16 - node 0 (public network) swarm is empty Success 0.123
System.out »
expecting success: 
  ipfsi 0 swarm peers &&
  [ $(ipfsi 0 swarm peers | wc -l) -eq 0 ]

ok 16 - node 0 (public network) swarm is empty
17 - try connecting nodes in different private networks Success 5.149
System.out »
expecting success: 
  test_must_fail iptb connect 2 3

> command iptb logs
node[0] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWMbUx4cJV8fU4yUUUYRp1SUMVL8PbaB2NwvbAeLXwauVi
Swarm listening on 127.0.0.1:32835 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 00519e4a-dcfa-4761-b3cd-2ce8dd5b360d

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/44257
WebUI: http://127.0.0.1:44257/webui
Daemon is ready
2026-02-27T18:13:47.259Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	core:constructor	node/groups.go:188	Invalid configuration: AutoTLS.Enabled=true requires Swarm.Transports.Network.Websocket to be true as well. AutoTLS will be disabled.

node[1] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRFRiitfW5pKeGrrg8rwxpb9P6tqzevCZgRzCp5JcfqFo
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: 3ba80a1252338abec866016a7a8a30a1
Swarm listening on 127.0.0.1:44425 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: fadeae4e-400f-498b-8c2e-3df08eb49bd5

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/35001
WebUI: http://127.0.0.1:35001/webui
Daemon is ready
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.260Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.260Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[2] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWQTRaVHKkoeCWsGoWFc5B1JN9VjSM1d1SVpoTAQhUcZgQ
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: 3ba80a1252338abec866016a7a8a30a1
Swarm listening on 127.0.0.1:32799 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 6a674d61-94c2-4acc-a35b-bee4a7a7863f

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/40723
WebUI: http://127.0.0.1:40723/webui
Daemon is ready
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.270Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.270Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[3] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRwgQNsY79zVrXNAMj5JoP9WdM6DJrzRjPxFu3igWs6kd
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: bbfbc0276bf58a2370cb57beea52cfbd
Swarm listening on 127.0.0.1:35041 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: a53b668e-d0e7-4c4b-81df-2755bba941bc

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/45911
WebUI: http://127.0.0.1:45911/webui
Daemon is ready
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.265Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.265Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.

node[4] exit 0

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWRVWHCkh1bHbEa6WnQ2TJ77HEWpNWf8ftvKA6LWprB3Ax
Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: bbfbc0276bf58a2370cb57beea52cfbd
Swarm listening on 127.0.0.1:45333 (TCP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.


ℹ️  Anonymous telemetry will be enabled in 15m0s

Kubo will collect anonymous usage data to help improve the software:
• What:  Feature usage and configuration (no personal data)
         Use GOLOG_LOG_LEVEL="telemetry=debug" to inspect collected data
• When:  First collection in 15m0s, then every 24h
• How:   HTTP POST to https://telemetry.ipshipyard.dev
         Anonymous ID: 99121bcc-36c1-4c14-9eb4-5ec76750bf60

No data sent yet. To opt-out before collection starts:
• Set environment: IPFS_TELEMETRY=off
• Or run: ipfs config Plugins.Plugins.telemetry.Config.Mode off
• Then restart daemon

This message is shown only once.
Learn more: https://github.com/ipfs/kubo/blob/master/docs/telemetry.md


RPC API server listening on /ip4/127.0.0.1/tcp/39691
WebUI: http://127.0.0.1:39691/webui
Daemon is ready
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	DNS.Resolvers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	Routing.DelegatedRouters contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	autoconf	config/autoconf_client.go:116	Ipns.DelegatedPublishers contains 'auto' but AutoConf.Enabled=false
2026-02-27T18:13:47.267Z	ERROR	cmd/ipfs	kubo/daemon.go:460	Private networking (swarm.key / LIBP2P_FORCE_PNET) does not work with public HTTP IPNIs enabled by Routing.Type=auto. Kubo will use Routing.Type=dht instead. Update config to remove this message.
2026-02-27T18:13:47.267Z	ERROR	cmd/ipfs	kubo/daemon.go:474	private networking (swarm.key / LIBP2P_FORCE_PNET) is not compatible with AutoTLS. Set AutoTLS.Enabled=false in config to remove this message.


ok 17 - try connecting nodes in different private networks
System.err »
node[2] => node[3]: Error: connect 12D3KooWRwgQNsY79zVrXNAMj5JoP9WdM6DJrzRjPxFu3igWs6kd failure: failed to dial: failed to dial 12D3KooWRwgQNsY79zVrXNAMj5JoP9WdM6DJrzRjPxFu3igWs6kd: all dials failed
  * [/ip4/127.0.0.1/tcp/35041] failed to negotiate security protocol: context deadline exceeded
18 - node 3 (pnet 2) swarm is empty Success 0.115
System.out »
expecting success: 
  ipfsi 3 swarm peers &&
  [ $(ipfsi 3 swarm peers | wc -l) -eq 0 ]

ok 18 - node 3 (pnet 2) swarm is empty
19 - connect nodes in the same pnet Success 0.286
System.out »
expecting success: 
  iptb connect 1 2 &&
  iptb connect 3 4

ok 19 - connect nodes in the same pnet
20 - nodes 1 and 2 have connected Success 0.150
System.out »
expecting success: 
  ipfsi 2 swarm peers &&
  [ $(ipfsi 2 swarm peers | wc -l) -eq 1 ]

/ip4/127.0.0.1/tcp/32870/p2p/12D3KooWRFRiitfW5pKeGrrg8rwxpb9P6tqzevCZgRzCp5JcfqFo
ok 20 - nodes 1 and 2 have connected
21 - nodes 3 and 4 have connected Success 0.124
System.out »
expecting success: 
  ipfsi 4 swarm peers &&
  [ $(ipfsi 4 swarm peers | wc -l) -eq 1 ]

/ip4/127.0.0.1/tcp/48646/p2p/12D3KooWRwgQNsY79zVrXNAMj5JoP9WdM6DJrzRjPxFu3igWs6kd
ok 21 - nodes 3 and 4 have connected
22 - add a file on node1 Success 0.092
System.out »
expecting success: 
    random-data -size=1000000 > filea &&
    FILEA_HASH=$(ipfsi $node1 add -q filea)
  
ok 22 - add a file on node1
23 - can fetch file Success 0.063
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 23 - can fetch file
24 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 24 - file looks good
25 - can fetch file Success 0.087
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 25 - can fetch file
26 - file looks good Success 0.007
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 26 - file looks good
27 - add a file on node2 Success 0.138
System.out »
expecting success: 
    random-data -size=1000000 > filea &&
    FILEA_HASH=$(ipfsi $node1 add -q filea)
  
ok 27 - add a file on node2
28 - can fetch file Success 0.084
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 28 - can fetch file
29 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 29 - file looks good
30 - can fetch file Success 0.095
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 30 - can fetch file
31 - file looks good Success 0.005
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 31 - file looks good
32 - add a file on node3 Success 0.079
System.out »
expecting success: 
    random-data -size=1000000 > filea &&
    FILEA_HASH=$(ipfsi $node1 add -q filea)
  
ok 32 - add a file on node3
33 - can fetch file Success 0.073
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 33 - can fetch file
34 - file looks good Success 0.005
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 34 - file looks good
35 - can fetch file Success 0.092
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 35 - can fetch file
36 - file looks good Success 0.005
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 36 - file looks good
37 - add a file on node4 Success 0.099
System.out »
expecting success: 
    random-data -size=1000000 > filea &&
    FILEA_HASH=$(ipfsi $node1 add -q filea)
  
ok 37 - add a file on node4
38 - can fetch file Success 0.069
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 38 - can fetch file
39 - file looks good Success 0.005
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 39 - file looks good
40 - can fetch file Success 0.094
System.out »
expecting success: 
    ipfsi $node cat $fhash > fetch_out
  
ok 40 - can fetch file
41 - file looks good Success 0.006
System.out »
expecting success: 
    test_cmp $fname fetch_out
  
ok 41 - file looks good
42 - stop testbed Success 0.023
System.out »
expecting success: 
  iptb stop

ok 42 - stop testbed
43 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 43 - 'ipfs daemon' is still running
44 - 'ipfs daemon' can be killed Success 0.246
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 44 - 'ipfs daemon' can be killed
45 - setup test repo with AutoConf enabled and private network Success 0.168
System.out »
expecting success: 
  export IPFS_PATH="$(pwd)/.ipfs-autoconf-test" &&
  ipfs init --profile=test > /dev/null &&
  ipfs config --json AutoConf.Enabled true &&
  pnet_key > "${IPFS_PATH}/swarm.key"

ok 45 - setup test repo with AutoConf enabled and private network
46 - daemon fails with AutoConf + private network error Success 0.093
System.out »
expecting success: 
  export IPFS_PATH="$(pwd)/.ipfs-autoconf-test" &&
  test_expect_code 1 ipfs daemon > autoconf_stdout 2> autoconf_stderr

ok 46 - daemon fails with AutoConf + private network error
47 - error message mentions AutoConf and private network conflict Success 0.011
System.out »
expecting success: 
  grep "AutoConf cannot use the default mainnet URL" autoconf_stderr > /dev/null &&
  grep "private network.*swarm.key" autoconf_stderr > /dev/null &&
  grep "AutoConf.Enabled=false" autoconf_stderr > /dev/null

ok 47 - error message mentions AutoConf and private network conflict
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - disable AutoConf for private network tests
ok 5 - daemon won't start with force pnet env but with no key
ok 6 - daemon output includes info about the reason
ok 7 - 'ipfs daemon' succeeds
ok 8 - api file shows up
ok 9 - set up address variables
ok 10 - get swarm addresses
ok 11 - set swarm address vars
ok 12 - 'ipfs daemon' is ready
ok 13 - set up iptb testbed
ok 14 - start nodes
ok 15 - try connecting node in public network with priv networks
ok 16 - node 0 (public network) swarm is empty
ok 17 - try connecting nodes in different private networks
ok 18 - node 3 (pnet 2) swarm is empty
ok 19 - connect nodes in the same pnet
ok 20 - nodes 1 and 2 have connected
ok 21 - nodes 3 and 4 have connected
ok 22 - add a file on node1
ok 23 - can fetch file
ok 24 - file looks good
ok 25 - can fetch file
ok 26 - file looks good
ok 27 - add a file on node2
ok 28 - can fetch file
ok 29 - file looks good
ok 30 - can fetch file
ok 31 - file looks good
ok 32 - add a file on node3
ok 33 - can fetch file
ok 34 - file looks good
ok 35 - can fetch file
ok 36 - file looks good
ok 37 - add a file on node4
ok 38 - can fetch file
ok 39 - file looks good
ok 40 - can fetch file
ok 41 - file looks good
ok 42 - stop testbed
ok 43 - 'ipfs daemon' is still running
ok 44 - 'ipfs daemon' can be killed
ok 45 - setup test repo with AutoConf enabled and private network
ok 46 - daemon fails with AutoConf + private network error
ok 47 - error message mentions AutoConf and private network conflict

Back to top

TestCase t0182-circuit-relay

Name Status Type Time(s)
1 - init iptb Success 0.395
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $NUM_NODES -init &&
  iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true

node[0] exit 0


node[1] exit 0


node[2] exit 0


ok 1 - init iptb
2 - start up nodes for configuration Success 0.426
System.out »
expecting success: 
  iptb start -wait -- --routing=none

ok 2 - start up nodes for configuration
3 - peer ids Success 0.078
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_1=$(iptb attr get 1 id) &&
  PEERID_2=$(iptb attr get 2 id)

ok 3 - peer ids
4 - configure the relay node as a static relay for node A Success 0.217
System.out »
expecting success: 
    ipfsi 0 config Internal.Libp2pForceReachability private &&
    ipfsi 0 config --json Swarm.RelayClient.Enabled true &&
    ipfsi 0 config --json Swarm.RelayClient.StaticRelays "$staticrelay"

ok 4 - configure the relay node as a static relay for node A
5 - configure the relay node Success 0.218
System.out »
expecting success: 
  ipfsi 1 config Internal.Libp2pForceReachability public &&
  ipfsi 1 config --json Swarm.RelayService.Enabled true &&
  ipfsi 1 config --json Addresses.Swarm "$relayaddrs"

ok 5 - configure the relay node
6 - configure the node B Success 0.119
System.out »
expecting success: 
    ipfsi 2 config Internal.Libp2pForceReachability private &&
    ipfsi 2 config --json Swarm.RelayClient.Enabled true

ok 6 - configure the node B
7 - restart nodes Success 0.466
System.out »
expecting success: 
  iptb stop &&
  iptb_wait_stop &&
  iptb start -wait -- --routing=none

node[0] exit 0


node[1] exit 0


node[2] exit 0


ok 7 - restart nodes
8 - connect A <-> Relay Success 0.146
System.out »
expecting success: 
  iptb connect 0 1

ok 8 - connect A <-> Relay
9 - connect B <-> Relay Success 0.136
System.out »
expecting success: 
  iptb connect 2 1

ok 9 - connect B <-> Relay
10 - wait until relay is ready to do work Success 0.074
System.out »
expecting success: 
  while ! ipfsi 2 swarm connect /p2p/$PEERID_1/p2p-circuit/p2p/$PEERID_0; do
    iptb stop &&
    iptb_wait_stop &&
    iptb start -wait -- --routing=none &&
    iptb connect 0 1 &&
    iptb connect 2 1 &&
    sleep 5
  done

connect 12D3KooWCMWfKPohsVpWR3CqLdBRjQVWZzeSJ2937NSyCMo8djP1 success
ok 10 - wait until relay is ready to do work
11 - connect A <-Relay-> B Success 0.072
System.out »
expecting success: 
  ipfsi 2 swarm connect /p2p/$PEERID_1/p2p-circuit/p2p/$PEERID_0 > peers_out

ok 11 - connect A <-Relay-> B
12 - output looks good Success 0.005
System.out »
expecting success: 
  echo "connect $PEERID_0 success" > peers_exp &&
  test_cmp peers_exp peers_out

ok 12 - output looks good
13 - peers for A look good Success 0.071
System.out »
expecting success: 
  ipfsi 0 swarm peers > peers_out &&
  test_should_contain "/p2p/$PEERID_1/p2p-circuit/p2p/$PEERID_2$" peers_out

ok 13 - peers for A look good
14 - peers for B look good Success 0.065
System.out »
expecting success: 
  ipfsi 2 swarm peers > peers_out &&
  test_should_contain "/p2p/$PEERID_1/p2p-circuit/p2p/$PEERID_0$" peers_out

ok 14 - peers for B look good
15 - stop iptb Success 0.021
System.out »
expecting success: 
  iptb stop

ok 15 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - init iptb
ok 2 - start up nodes for configuration
ok 3 - peer ids
ok 4 - configure the relay node as a static relay for node A
ok 5 - configure the relay node
ok 6 - configure the node B
ok 7 - restart nodes
ok 8 - connect A <-> Relay
ok 9 - connect B <-> Relay
ok 10 - wait until relay is ready to do work
ok 11 - connect A <-Relay-> B
ok 12 - output looks good
ok 13 - peers for A look good
ok 14 - peers for B look good
ok 15 - stop iptb

Back to top

TestCase t0183-namesys-pubsub

Name Status Type Time(s)
1 - init iptb Success 0.443
System.out »
expecting success: 
    iptb testbed create -type localipfs -count $NUM_NODES -init

ok 1 - init iptb
2 - enable ipns over pubsub Success 0.129
System.out »
expecting success: 
  iptb run -- ipfs config --json Ipns.UsePubsub true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 2 - enable ipns over pubsub
3 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.122
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
4 - start up nodes Success 0.427
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 4 - start up nodes
5 - connect nodes to each other Success 0.482
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 5 - connect nodes to each other
6 - node 0 is connected Success 0.070
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 0 is connected
7 - node 1 is connected Success 0.065
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 7 - node 1 is connected
8 - node 2 is connected Success 0.061
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 8 - node 2 is connected
9 - node 3 is connected Success 0.063
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 3 is connected
10 - node 4 is connected Success 0.068
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 4 is connected
11 - peer ids Success 0.129
System.out »
expecting success: 
        PEERID_0_BASE36=$(ipfsi 0 key list --ipns-base=base36 -l | grep self | head -n 1 | cut -d " " -f1) &&
        PEERID_0_B58MH=$(ipfsi 0 key list --ipns-base=b58mh -l | grep self | head -n 1 | cut -d " " -f1)
    
ok 11 - peer ids
12 - check namesys pubsub state Success 0.207
System.out »
expecting success: 
        echo enabled > expected &&
        ipfsi 0 name pubsub state > state0 &&
        ipfsi 1 name pubsub state > state1 &&
        ipfsi 2 name pubsub state > state2 &&
        test_cmp expected state0 &&
        test_cmp expected state1 &&
        test_cmp expected state2
    
ok 12 - check namesys pubsub state
13 - subscribe nodes to the publisher topic Success 2.118
System.out »
expecting success: 
        ipfsi 1 name resolve /ipns/$PEERID_0_BASE36 --timeout=1s;
        ipfsi 2 name resolve /ipns/$PEERID_0_BASE36 --timeout=1s;
        true
    
ok 13 - subscribe nodes to the publisher topic
System.err »
Error: context deadline exceeded
Error: context deadline exceeded
14 - check subscriptions Success 0.273
System.out »
expecting success: 
        echo /ipns/$PEERID_0_BASE36 > expected_base36 &&
        echo /ipns/$PEERID_0_B58MH > expected_b58mh &&
        ipfsi 1 name pubsub subs > subs1 &&
        ipfsi 2 name pubsub subs > subs2 &&
        ipfsi 1 name pubsub subs --ipns-base=b58mh > subs1_b58mh &&
        ipfsi 2 name pubsub subs --ipns-base=b58mh > subs2_b58mh &&
        test_cmp expected_base36 subs1 &&
        test_cmp expected_base36 subs2 &&
        test_cmp expected_b58mh subs1_b58mh &&
        test_cmp expected_b58mh subs2_b58mh
    
ok 14 - check subscriptions
15 - add an object on publisher node Success 0.075
System.out »
expecting success: 
        echo "ipns is super fun" > file &&
        HASH_FILE=$(ipfsi 0 add -q file)
    
ok 15 - add an object on publisher node
16 - publish that object as an ipns entry Success 0.069
System.out »
expecting success: 
        ipfsi 0 name publish $HASH_FILE
    
Published to k51qzi5uqu5di0ce6tkb8ore0ip78kdci7wbm1d3r2vms6olt3dqbqtf8wwkp0: /ipfs/QmRff6wJYmESAqgpUDVqKwYNNft17KeenXP9egojg1papb
ok 16 - publish that object as an ipns entry
17 - wait for the flood Success 1.005
System.out »
expecting success: 
        sleep 1
    
ok 17 - wait for the flood
18 - resolve name in subscriber nodes Success 0.119
System.out »
expecting success: 
        echo "/ipfs/$HASH_FILE" > expected &&
        ipfsi 1 name resolve /ipns/$PEERID_0_BASE36 > name1 &&
        ipfsi 2 name resolve /ipns/$PEERID_0_BASE36 > name2 &&
        test_cmp expected name1 &&
        test_cmp expected name2
    
ok 18 - resolve name in subscriber nodes
19 - cancel subscriptions to the publisher topic Success 0.109
System.out »
expecting success: 
        ipfsi 1 name pubsub cancel /ipns/$PEERID_0_BASE36 &&
        ipfsi 2 name pubsub cancel /ipns/$PEERID_0_BASE36
    
canceled
canceled
ok 19 - cancel subscriptions to the publisher topic
20 - check subscriptions Success 0.119
System.out »
expecting success: 
        rm -f expected && touch expected &&
        ipfsi 1 name pubsub subs > subs1 &&
        ipfsi 2 name pubsub subs > subs2 &&
        test_cmp expected subs1 &&
        test_cmp expected subs2
    
ok 20 - check subscriptions
21 - shut down iptb Success 0.021
System.out »
expecting success: 
        iptb stop
    
ok 21 - shut down iptb
22 - enable ipns over pubsub Success 0.138
System.out »
expecting success: 
  iptb run -- ipfs config --json Ipns.UsePubsub false

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 22 - enable ipns over pubsub
23 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.119
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 23 - set Routing.LoopbackAddressesOnLanDHT to true
24 - start up nodes with additional args Success 0.426
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-namesys-pubsub
    
ok 24 - start up nodes with additional args
25 - connect nodes to each other Success 0.544
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 25 - connect nodes to each other
26 - node 0 is connected Success 0.065
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 26 - node 0 is connected
27 - node 1 is connected Success 0.062
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 27 - node 1 is connected
28 - node 2 is connected Success 0.056
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 28 - node 2 is connected
29 - node 3 is connected Success 0.056
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 29 - node 3 is connected
30 - node 4 is connected Success 0.068
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 30 - node 4 is connected
31 - peer ids Success 0.117
System.out »
expecting success: 
        PEERID_0_BASE36=$(ipfsi 0 key list --ipns-base=base36 -l | grep self | head -n 1 | cut -d " " -f1) &&
        PEERID_0_B58MH=$(ipfsi 0 key list --ipns-base=b58mh -l | grep self | head -n 1 | cut -d " " -f1)
    
ok 31 - peer ids
32 - check namesys pubsub state Success 0.190
System.out »
expecting success: 
        echo enabled > expected &&
        ipfsi 0 name pubsub state > state0 &&
        ipfsi 1 name pubsub state > state1 &&
        ipfsi 2 name pubsub state > state2 &&
        test_cmp expected state0 &&
        test_cmp expected state1 &&
        test_cmp expected state2
    
ok 32 - check namesys pubsub state
33 - subscribe nodes to the publisher topic Success 0.117
System.out »
expecting success: 
        ipfsi 1 name resolve /ipns/$PEERID_0_BASE36 --timeout=1s;
        ipfsi 2 name resolve /ipns/$PEERID_0_BASE36 --timeout=1s;
        true
    
/ipfs/QmRff6wJYmESAqgpUDVqKwYNNft17KeenXP9egojg1papb
/ipfs/QmRff6wJYmESAqgpUDVqKwYNNft17KeenXP9egojg1papb
ok 33 - subscribe nodes to the publisher topic
34 - check subscriptions Success 0.253
System.out »
expecting success: 
        echo /ipns/$PEERID_0_BASE36 > expected_base36 &&
        echo /ipns/$PEERID_0_B58MH > expected_b58mh &&
        ipfsi 1 name pubsub subs > subs1 &&
        ipfsi 2 name pubsub subs > subs2 &&
        ipfsi 1 name pubsub subs --ipns-base=b58mh > subs1_b58mh &&
        ipfsi 2 name pubsub subs --ipns-base=b58mh > subs2_b58mh &&
        test_cmp expected_base36 subs1 &&
        test_cmp expected_base36 subs2 &&
        test_cmp expected_b58mh subs1_b58mh &&
        test_cmp expected_b58mh subs2_b58mh
    
ok 34 - check subscriptions
35 - add an object on publisher node Success 0.075
System.out »
expecting success: 
        echo "ipns is super fun" > file &&
        HASH_FILE=$(ipfsi 0 add -q file)
    
ok 35 - add an object on publisher node
36 - publish that object as an ipns entry Success 0.096
System.out »
expecting success: 
        ipfsi 0 name publish $HASH_FILE
    
Published to k51qzi5uqu5di0ce6tkb8ore0ip78kdci7wbm1d3r2vms6olt3dqbqtf8wwkp0: /ipfs/QmRff6wJYmESAqgpUDVqKwYNNft17KeenXP9egojg1papb
ok 36 - publish that object as an ipns entry
37 - wait for the flood Success 1.010
System.out »
expecting success: 
        sleep 1
    
ok 37 - wait for the flood
38 - resolve name in subscriber nodes Success 0.297
System.out »
expecting success: 
        echo "/ipfs/$HASH_FILE" > expected &&
        ipfsi 1 name resolve /ipns/$PEERID_0_BASE36 > name1 &&
        ipfsi 2 name resolve /ipns/$PEERID_0_BASE36 > name2 &&
        test_cmp expected name1 &&
        test_cmp expected name2
    
ok 38 - resolve name in subscriber nodes
39 - cancel subscriptions to the publisher topic Success 0.208
System.out »
expecting success: 
        ipfsi 1 name pubsub cancel /ipns/$PEERID_0_BASE36 &&
        ipfsi 2 name pubsub cancel /ipns/$PEERID_0_BASE36
    
canceled
canceled
ok 39 - cancel subscriptions to the publisher topic
40 - check subscriptions Success 0.216
System.out »
expecting success: 
        rm -f expected && touch expected &&
        ipfsi 1 name pubsub subs > subs1 &&
        ipfsi 2 name pubsub subs > subs2 &&
        test_cmp expected subs1 &&
        test_cmp expected subs2
    
ok 40 - check subscriptions
41 - shut down iptb Success 0.055
System.out »
expecting success: 
        iptb stop
    
ok 41 - shut down iptb
42 - enable the pubsub-ipns via config Success 0.161
System.out »
expecting success: 
  iptb run -- ipfs config --json Ipns.UsePubsub true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 42 - enable the pubsub-ipns via config
43 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.160
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 43 - set Routing.LoopbackAddressesOnLanDHT to true
44 - start up nodes with additional args Success 0.446
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-namesys-pubsub=false
    
ok 44 - start up nodes with additional args
45 - connect nodes to each other Success 1.705
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 45 - connect nodes to each other
46 - node 0 is connected Success 0.123
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 46 - node 0 is connected
47 - node 1 is connected Success 0.149
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 47 - node 1 is connected
48 - node 2 is connected Success 0.135
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 48 - node 2 is connected
49 - node 3 is connected Success 0.102
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 49 - node 3 is connected
50 - node 4 is connected Success 0.080
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 50 - node 4 is connected
51 - ipns pubsub cmd fails because it was disabled via cli flag Success 0.068
System.out »
expecting success: 
  test_expect_code 1 ipfsi 1 name pubsub subs 2> pubsubipns_cmd_out

ok 51 - ipns pubsub cmd fails because it was disabled via cli flag
52 - ipns pubsub cmd produces error Success 0.005
System.out »
expecting success: 
  echo -e "Error: IPNS pubsub subsystem is not enabled\nUse 'ipfs name pubsub subs --help' for information about this command" > expected &&
  test_cmp expected pubsubipns_cmd_out

ok 52 - ipns pubsub cmd produces error
53 - stop iptb Success 0.030
System.out »
expecting success: 
  iptb stop

ok 53 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - init iptb
ok 2 - enable ipns over pubsub
ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
ok 4 - start up nodes
ok 5 - connect nodes to each other
ok 6 - node 0 is connected
ok 7 - node 1 is connected
ok 8 - node 2 is connected
ok 9 - node 3 is connected
ok 10 - node 4 is connected
ok 11 - peer ids
ok 12 - check namesys pubsub state
ok 13 - subscribe nodes to the publisher topic
ok 14 - check subscriptions
ok 15 - add an object on publisher node
ok 16 - publish that object as an ipns entry
ok 17 - wait for the flood
ok 18 - resolve name in subscriber nodes
ok 19 - cancel subscriptions to the publisher topic
ok 20 - check subscriptions
ok 21 - shut down iptb
ok 22 - enable ipns over pubsub
ok 23 - set Routing.LoopbackAddressesOnLanDHT to true
ok 24 - start up nodes with additional args
ok 25 - connect nodes to each other
ok 26 - node 0 is connected
ok 27 - node 1 is connected
ok 28 - node 2 is connected
ok 29 - node 3 is connected
ok 30 - node 4 is connected
ok 31 - peer ids
ok 32 - check namesys pubsub state
ok 33 - subscribe nodes to the publisher topic
ok 34 - check subscriptions
ok 35 - add an object on publisher node
ok 36 - publish that object as an ipns entry
ok 37 - wait for the flood
ok 38 - resolve name in subscriber nodes
ok 39 - cancel subscriptions to the publisher topic
ok 40 - check subscriptions
ok 41 - shut down iptb
ok 42 - enable the pubsub-ipns via config
ok 43 - set Routing.LoopbackAddressesOnLanDHT to true
ok 44 - start up nodes with additional args
ok 45 - connect nodes to each other
ok 46 - node 0 is connected
ok 47 - node 1 is connected
ok 48 - node 2 is connected
ok 49 - node 3 is connected
ok 50 - node 4 is connected
ok 51 - ipns pubsub cmd fails because it was disabled via cli flag
ok 52 - ipns pubsub cmd produces error
ok 53 - stop iptb

Back to top

TestCase t0184-http-proxy-over-p2p

Name Status Type Time(s)
1 - configure nodes Success 0.615
System.out »
expecting success: 
    iptb testbed create -type localipfs -count 2 -force -init &&
    iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true &&
    ipfsi 0 config --json Experimental.Libp2pStreamMounting true &&
    ipfsi 1 config --json Experimental.Libp2pStreamMounting true &&
    ipfsi 0 config --json Experimental.P2pHttpProxy true &&
    ipfsi 0 config --json Addresses.Gateway "[\"/ip4/127.0.0.1/tcp/$IPFS_GATEWAY_PORT\"]"

node[0] exit 0


node[1] exit 0


ok 1 - configure nodes
2 - configure a subdomain gateway with /p2p/ path whitelisted Success 0.105
System.out »
expecting success: 
    ipfsi 0 config --json Gateway.PublicGateways '{
        "example.com": {
            "UseSubdomains": true,
            "Paths": ["/p2p/"]
        }
    }'

ok 2 - configure a subdomain gateway with /p2p/ path whitelisted
3 - start and connect nodes Success 0.574
System.out »
expecting success: 
    iptb start -wait && iptb connect 0 1

ok 3 - start and connect nodes
4 - setup p2p listener on the receiver Success 0.109
System.out »
expecting success: 
    ipfsi 1 p2p listen --allow-custom-protocol /http /ip4/127.0.0.1/tcp/$WEB_SERVE_PORT &&
    ipfsi 1 p2p listen /x/custom/http /ip4/127.0.0.1/tcp/$WEB_SERVE_PORT

ok 4 - setup p2p listener on the receiver
5 - setup environment Success 0.127
System.out »
expecting success: 
    RECEIVER_ID=$(ipfsi 1 id -f="<id>" --peerid-base=b58mh)
    RECEIVER_ID_CIDv1=$(ipfsi 1 id -f="<id>" --peerid-base=base36)

ok 5 - setup environment
6 - handle proxy http request sends bad-gateway when remote server not available Success 0.014
System.out »
expecting success: 
    curl_send_proxy_request_and_check_response 502 ""

ok 6 - handle proxy http request sends bad-gateway when remote server not available 
7 - start http server Success 0.012
System.out »
expecting success: 
    start_http_server

ok 7 - start http server
8 - handle proxy http request propagates error response from remote Success 0.016
System.out »
expecting success: 
    serve_content "SORRY GUYS, I LOST IT" "404 Not Found" &&
    curl_send_proxy_request_and_check_response 404 "SORRY GUYS, I LOST IT"

ok 8 - handle proxy http request propagates error response from remote
9 - handle proxy http request Success 0.015
System.out »
expecting success: 
    serve_content "THE WOODS ARE LOVELY DARK AND DEEP" &&
    curl_send_proxy_request_and_check_response 200 "THE WOODS ARE LOVELY DARK AND DEEP"

ok 9 - handle proxy http request 
10 - handle proxy http request invalid request Success 0.012
System.out »
expecting success: 
    curl_check_response_code 400 p2p/DERPDERPDERP

ok 10 - handle proxy http request invalid request
11 - handle proxy http request unknown proxy peer Success 0.013
System.out »
expecting success: 
    UNKNOWN_PEER="k51qzi5uqu5dlmbel1sd8rs4emr3bfosk9bm4eb42514r4lakt4oxw3a3fa2tm" &&
    curl_check_response_code 502 p2p/$UNKNOWN_PEER/http/index.txt

ok 11 - handle proxy http request unknown proxy peer 
12 - handle proxy http request to invalid proxy peer Success 0.014
System.out »
expecting success: 
    curl_check_response_code 400 p2p/invalid_peer/http/index.txt

ok 12 - handle proxy http request to invalid proxy peer 
13 - handle proxy http request to custom protocol Success 0.015
System.out »
expecting success: 
    serve_content "THE WOODS ARE LOVELY DARK AND DEEP" &&
    curl_check_response_code 200 p2p/$RECEIVER_ID/x/custom/http/index.txt

ok 13 - handle proxy http request to custom protocol
14 - handle proxy http request to missing protocol Success 0.014
System.out »
expecting success: 
    serve_content "THE WOODS ARE LOVELY DARK AND DEEP" &&
    curl_check_response_code 502 p2p/$RECEIVER_ID/x/missing/http/index.txt

ok 14 - handle proxy http request to missing protocol
15 - handle proxy http request missing the /http Success 0.012
System.out »
expecting success: 
    curl_check_response_code 400 p2p/$RECEIVER_ID/x/custom/index.txt

ok 15 - handle proxy http request missing the /http
16 - handle multipart/form-data http request Success 0.020
System.out »
expecting success: 
    serve_content "OK" &&
    curl_send_multipart_form_request 200

ok 16 - handle multipart/form-data http request
17 - handle http request to a subdomain gateway Success 0.014
System.out »
expecting success: 
  serve_content "SUBDOMAIN PROVIDES ORIGIN ISOLATION PER RECEIVER_ID" &&
  curl -H "Host: $RECEIVER_ID_CIDv1.p2p.example.com" -sD - $SENDER_GATEWAY/http/index.txt > p2p_response &&
  test_should_contain "SUBDOMAIN PROVIDES ORIGIN ISOLATION PER RECEIVER_ID" p2p_response

ok 17 - handle http request to a subdomain gateway
18 - handle invalid http request to a subdomain gateway Success 0.014
System.out »
expecting success: 
  serve_content "SUBDOMAIN DOES NOT SUPPORT FULL /p2p/ PATH" &&
  curl -H "Host: $RECEIVER_ID_CIDv1.p2p.example.com" -sD - $SENDER_GATEWAY/p2p/$RECEIVER_ID/http/index.txt > p2p_response &&
  test_should_contain "400 Bad Request" p2p_response

ok 18 - handle invalid http request to a subdomain gateway
19 - redirect http path request to subdomain gateway Success 0.013
System.out »
expecting success: 
  serve_content "SUBDOMAIN ROOT REDIRECTS /p2p/ PATH TO SUBDOMAIN" &&
  curl -H "Host: example.com" -sD - $SENDER_GATEWAY/p2p/$RECEIVER_ID/http/index.txt > p2p_response &&
  test_should_contain "Location: http://$RECEIVER_ID_CIDv1.p2p.example.com/http/index.txt" p2p_response

ok 19 - redirect http path request to subdomain gateway
20 - stop http server Success 0.005
System.out »
expecting success: 
    teardown_remote_server

ok 20 - stop http server
21 - stop nodes Success 0.023
System.out »
expecting success: 
    iptb stop

ok 21 - stop nodes
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - configure nodes
ok 2 - configure a subdomain gateway with /p2p/ path whitelisted
ok 3 - start and connect nodes
ok 4 - setup p2p listener on the receiver
ok 5 - setup environment
ok 6 - handle proxy http request sends bad-gateway when remote server not available 
ok 7 - start http server
ok 8 - handle proxy http request propagates error response from remote
ok 9 - handle proxy http request 
ok 10 - handle proxy http request invalid request
ok 11 - handle proxy http request unknown proxy peer 
ok 12 - handle proxy http request to invalid proxy peer 
ok 13 - handle proxy http request to custom protocol
ok 14 - handle proxy http request to missing protocol
ok 15 - handle proxy http request missing the /http
ok 16 - handle multipart/form-data http request
ok 17 - handle http request to a subdomain gateway
ok 18 - handle invalid http request to a subdomain gateway
ok 19 - redirect http path request to subdomain gateway
ok 20 - stop http server
ok 21 - stop nodes

Back to top

TestCase t0185-autonat

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.086
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.147
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.428
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0185-autonat.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0185-autonat.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0185-autonat.sh/mfs"
ok 3 - prepare config -- mounting
4 - enable autonat Success 0.065
System.out »
expecting success: 
  ipfs config AutoNAT.ServiceMode enabled

ok 4 - enable autonat
5 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.070
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 11 - 'ipfs daemon' is still running
12 - 'ipfs daemon' can be killed Success 0.236
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 12 - 'ipfs daemon' can be killed
13 - enable autonat Success 0.073
System.out »
expecting success: 
  ipfs config AutoNAT.ServiceMode disabled

ok 13 - enable autonat
14 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 14 - 'ipfs daemon' succeeds
15 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 15 - api file shows up
16 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 16 - set up address variables
17 - get swarm addresses Success 0.066
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 17 - get swarm addresses
18 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 18 - set swarm address vars
19 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 19 - 'ipfs daemon' is ready
20 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 20 - 'ipfs daemon' is still running
21 - 'ipfs daemon' can be killed Success 0.242
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 21 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - enable autonat
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - 'ipfs daemon' is still running
ok 12 - 'ipfs daemon' can be killed
ok 13 - enable autonat
ok 14 - 'ipfs daemon' succeeds
ok 15 - api file shows up
ok 16 - set up address variables
ok 17 - get swarm addresses
ok 18 - set swarm address vars
ok 19 - 'ipfs daemon' is ready
ok 20 - 'ipfs daemon' is still running
ok 21 - 'ipfs daemon' can be killed

Back to top

TestCase t0190-quic-ping

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.087
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.142
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.431
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0190-quic-ping.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0190-quic-ping.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0190-quic-ping.sh/mfs"
ok 3 - prepare config -- mounting
4 - init iptb Success 0.187
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -init

ok 4 - init iptb
5 - add QUIC swarm addresses Success 0.134
System.out »
expecting success: 
  ipfsi 0 config --json Addresses.Swarm "[\"/ip4/127.0.0.1/udp/0/quic-v1\"]" &&
  ipfsi 1 config --json Addresses.Swarm "[\"/ip4/127.0.0.1/udp/0/quic-v1\"]"

ok 5 - add QUIC swarm addresses
6 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.092
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
7 - start up nodes Success 0.424
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 7 - start up nodes
8 - connect nodes to each other Success 0.152
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 8 - connect nodes to each other
9 - node 0 is connected Success 0.057
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 0 is connected
10 - node 1 is connected Success 0.062
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 1 is connected
11 - peer ids Success 0.042
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_1=$(iptb attr get 1 id)

ok 11 - peer ids
12 - test ping other Success 4.137
System.out »
expecting success: 
  ipfsi 0 ping -n2 -- "$PEERID_1" &&
  ipfsi 1 ping -n2 -- "$PEERID_0"

PING 12D3KooWFH3jYAze1FaiNrwZh9LSjtLdKY4Kg1TKLV7PTM9ApoZJ.
Pong received: time=0.51 ms
Pong received: time=1.20 ms
Average latency: 0.85ms
PING 12D3KooWLgGVoxPBb56f8AZKX85p2Epn61Q94JiZoDZCShD8HeoE.
Pong received: time=0.58 ms
Pong received: time=0.09 ms
Average latency: 0.33ms
ok 12 - test ping other
13 - test ping self Success 0.134
System.out »
expecting success: 
  test_must_fail ipfsi 0 ping -n2 -- "$PEERID_0" &&
  test_must_fail ipfsi 1 ping -n2 -- "$PEERID_1"

ok 13 - test ping self
System.err »
Error: error: can't ping self
Error: error: can't ping self
14 - test ping 0 Success 0.131
System.out »
expecting success: 
  test_must_fail ipfsi 0 ping -n0 -- "$PEERID_1" &&
  test_must_fail ipfsi 1 ping -n0 -- "$PEERID_0"

ok 14 - test ping 0
System.err »
Error: ping count must be greater than 0, was 0
Error: ping count must be greater than 0, was 0
15 - stop iptb Success 0.021
System.out »
expecting success: 
  iptb stop

ok 15 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - init iptb
ok 5 - add QUIC swarm addresses
ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
ok 7 - start up nodes
ok 8 - connect nodes to each other
ok 9 - node 0 is connected
ok 10 - node 1 is connected
ok 11 - peer ids
ok 12 - test ping other
ok 13 - test ping self
ok 14 - test ping 0
ok 15 - stop iptb

Back to top

TestCase t0191-webtransport-ping

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.101
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.150
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.388
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0191-webtransport-ping.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0191-webtransport-ping.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0191-webtransport-ping.sh/mfs"
ok 3 - prepare config -- mounting
4 - init iptb Success 0.187
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -init

ok 4 - init iptb
5 - add WebTransport swarm addresses Success 0.275
System.out »
expecting success: 
  ipfsi 0 config --json Addresses.Swarm "[\"/ip4/127.0.0.1/udp/0/quic-v1/webtransport\"]" &&
  ipfsi 0 config --json Swarm.Transports.Network.WebTransport true &&
  ipfsi 1 config --json Addresses.Swarm "[\"/ip4/127.0.0.1/udp/0/quic-v1/webtransport\"]" &&
  ipfsi 1 config --json Swarm.Transports.Network.WebTransport true

ok 5 - add WebTransport swarm addresses
6 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.101
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
7 - start up nodes Success 0.423
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 7 - start up nodes
8 - connect nodes to each other Success 0.144
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 8 - connect nodes to each other
9 - node 0 is connected Success 0.063
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 0 is connected
10 - node 1 is connected Success 0.083
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 1 is connected
11 - peer ids Success 0.048
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_1=$(iptb attr get 1 id)

ok 11 - peer ids
12 - test ping other Success 4.149
System.out »
expecting success: 
  ipfsi 0 ping -n2 -- "$PEERID_1" &&
  ipfsi 1 ping -n2 -- "$PEERID_0"

PING 12D3KooWCiREoxm2xKdXPjxgMyENUBM1rh4vX5cY2Hh8qheQsm5A.
Pong received: time=0.45 ms
Pong received: time=0.13 ms
Average latency: 0.29ms
PING 12D3KooWRNBoBfpMwB7h2q6fq5ie4MRMjHLLzgap3Ndm73HkS9A8.
Pong received: time=0.37 ms
Pong received: time=0.15 ms
Average latency: 0.26ms
ok 12 - test ping other
13 - test ping self Success 0.232
System.out »
expecting success: 
  test_must_fail ipfsi 0 ping -n2 -- "$PEERID_0" &&
  test_must_fail ipfsi 1 ping -n2 -- "$PEERID_1"

ok 13 - test ping self
System.err »
Error: error: can't ping self
Error: error: can't ping self
14 - test ping 0 Success 0.197
System.out »
expecting success: 
  test_must_fail ipfsi 0 ping -n0 -- "$PEERID_1" &&
  test_must_fail ipfsi 1 ping -n0 -- "$PEERID_0"

ok 14 - test ping 0
System.err »
Error: ping count must be greater than 0, was 0
Error: ping count must be greater than 0, was 0
15 - stop iptb Success 0.042
System.out »
expecting success: 
  iptb stop

ok 15 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - init iptb
ok 5 - add WebTransport swarm addresses
ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
ok 7 - start up nodes
ok 8 - connect nodes to each other
ok 9 - node 0 is connected
ok 10 - node 1 is connected
ok 11 - peer ids
ok 12 - test ping other
ok 13 - test ping self
ok 14 - test ping 0
ok 15 - stop iptb

Back to top

TestCase t0195-noise

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.084
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.152
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.428
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0195-noise.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0195-noise.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0195-noise.sh/mfs"
ok 3 - prepare config -- mounting
4 - init iptb Success 0.344
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 4 -init

ok 4 - init iptb
5 - configure security transports Success 0.267
System.out »
expecting success: 
iptb run <<CMDS
  [0,1] -- ipfs config --json Swarm.Transports.Security.TLS false &&
  2     -- ipfs config --json Swarm.Transports.Security.Noise false &&
        -- ipfs config --json Addresses.Swarm "[\"/ip4/127.0.0.1/tcp/0\"]"
CMDS

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


ok 5 - configure security transports
6 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.093
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
7 - start up nodes Success 0.429
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 7 - start up nodes
8 - connect nodes to each other Success 0.170
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 8 - connect nodes to each other
9 - node 0 is connected Success 0.067
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 0 is connected
10 - node 1 is connected Success 0.085
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 1 is connected
11 - peer ids Success 0.038
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_1=$(iptb attr get 1 id)

ok 11 - peer ids
12 - test ping other Success 4.150
System.out »
expecting success: 
  ipfsi 0 ping -n2 -- "$PEERID_1" &&
  ipfsi 1 ping -n2 -- "$PEERID_0"

PING 12D3KooWAQuiHTKyPkbJjHMNoiNBpzqxb6YnJsTbg3FULk3hQF2B.
Pong received: time=0.34 ms
Pong received: time=0.11 ms
Average latency: 0.22ms
PING 12D3KooWHkAWL16HRgZeyGuiqEDeN6m2X2Z5MGM2rCqZVP2gnDRj.
Pong received: time=0.35 ms
Pong received: time=0.18 ms
Average latency: 0.26ms
ok 12 - test ping other
13 - test tls incompatible Success 2.637
System.out »
expecting success: 
  iptb start --wait 3 &&
  iptb start --wait 2 &&
  iptb connect [0-2] 3 &&
  test_must_fail iptb connect 2 0 > connect_error 2>&1 &&
  test_should_contain "failed to negotiate security protocol" connect_error ||
  test_fsh cat connect_error

ok 13 - test tls incompatible
14 - stop iptb Success 0.090
System.out »
expecting success: 
  iptb stop

ok 14 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - init iptb
ok 5 - configure security transports
ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
ok 7 - start up nodes
ok 8 - connect nodes to each other
ok 9 - node 0 is connected
ok 10 - node 1 is connected
ok 11 - peer ids
ok 12 - test ping other
ok 13 - test tls incompatible
ok 14 - stop iptb

Back to top

TestCase t0220-bitswap

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.080
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.143
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.436
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0220-bitswap.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0220-bitswap.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0220-bitswap.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.061
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - 'ipfs bitswap stat' succeeds Success 0.059
System.out »
expecting success: 
  ipfs bitswap stat >stat_out

ok 10 - 'ipfs bitswap stat' succeeds
11 - 'ipfs bitswap stat' output looks good Success 0.012
System.out »
expecting success: 
  cat <<EOF | unexpand -t2 >expected &&
bitswap status
  blocks received: 0
  blocks sent: 0
  data received: 0
  data sent: 0
  dup blocks received: 0
  dup data received: 0
  wantlist [0 keys]
  partners [0]
EOF
  test_cmp expected stat_out

ok 11 - 'ipfs bitswap stat' output looks good
12 - ipfs peer id looks good Success 0.083
System.out »
expecting success: 
  PEERID=$(ipfs config Identity.PeerID) &&
  test_check_peerid "$PEERID"

ok 12 - ipfs peer id looks good
13 - 'ipfs bitswap wantlist -p' works Success 0.063
System.out »
expecting success: 
  ipfs bitswap wantlist -p "$PEERID" >wantlist_p_out

ok 13 - 'ipfs bitswap wantlist -p' works
14 - 'ipfs bitswap wantlist -p' output looks good Success 0.005
System.out »
expecting success: 
  test_must_be_empty wantlist_p_out

ok 14 - 'ipfs bitswap wantlist -p' output looks good
15 - hash was removed from wantlist Success 0.067
System.out »
expecting success: 
  ipfs bitswap wantlist > wantlist_out &&
  test_must_be_empty wantlist_out

ok 15 - hash was removed from wantlist
16 - 'ipfs bitswap stat' succeeds Success 0.066
System.out »
expecting success: 
  ipfs bitswap stat >stat_out

ok 16 - 'ipfs bitswap stat' succeeds
17 - 'ipfs bitswap stat' output looks good Success 0.007
System.out »
expecting success: 
  cat <<EOF | unexpand -t2 >expected &&
bitswap status
  blocks received: 0
  blocks sent: 0
  data received: 0
  data sent: 0
  dup blocks received: 0
  dup data received: 0
  wantlist [0 keys]
  partners [0]
EOF
  test_cmp expected stat_out

ok 17 - 'ipfs bitswap stat' output looks good
18 - 'ipfs bitswap wantlist -p' works Success 0.060
System.out »
expecting success: 
  ipfs bitswap wantlist -p "$PEERID" >wantlist_p_out

ok 18 - 'ipfs bitswap wantlist -p' works
19 - 'ipfs bitswap wantlist -p' output looks good Success 0.005
System.out »
expecting success: 
  test_cmp wantlist_out wantlist_p_out

ok 19 - 'ipfs bitswap wantlist -p' output looks good
20 - 'ipfs bitswap stat --human' succeeds Success 0.061
System.out »
expecting success: 
  ipfs bitswap stat --human >stat_out_human

ok 20 - 'ipfs bitswap stat --human' succeeds
21 - 'ipfs bitswap stat --human' output looks good Success 0.007
System.out »
expecting success: 
  cat <<EOF | unexpand -t2 >expected &&
bitswap status
  blocks received: 0
  blocks sent: 0
  data received: 0 B
  data sent: 0 B
  dup blocks received: 0
  dup data received: 0 B
  wantlist [0 keys]
  partners [0]
EOF
  test_cmp expected stat_out_human

ok 21 - 'ipfs bitswap stat --human' output looks good
22 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 22 - 'ipfs daemon' is still running
23 - 'ipfs daemon' can be killed Success 0.319
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 23 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - 'ipfs bitswap stat' succeeds
ok 11 - 'ipfs bitswap stat' output looks good
ok 12 - ipfs peer id looks good
ok 13 - 'ipfs bitswap wantlist -p' works
ok 14 - 'ipfs bitswap wantlist -p' output looks good
ok 15 - hash was removed from wantlist
ok 16 - 'ipfs bitswap stat' succeeds
ok 17 - 'ipfs bitswap stat' output looks good
ok 18 - 'ipfs bitswap wantlist -p' works
ok 19 - 'ipfs bitswap wantlist -p' output looks good
ok 20 - 'ipfs bitswap stat --human' succeeds
ok 21 - 'ipfs bitswap stat --human' output looks good
ok 22 - 'ipfs daemon' is still running
ok 23 - 'ipfs daemon' can be killed

Back to top

TestCase t0230-channel-streaming-http-content-type

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.087
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.135
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.434
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0230-channel-streaming-http-content-type.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0230-channel-streaming-http-content-type.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0230-channel-streaming-http-content-type.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.059
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.007
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - Text encoded channel-streaming command succeeds Success 0.066
System.out »
expecting success: 
    mkdir -p testdir &&
    echo "hello test" >testdir/test.txt &&
    ipfs add -r testdir &&
    curl -X POST -i "http://$API_ADDR/api/v0/refs?arg=QmTcJAn3JP8ZMAKS6WS75q8sbTyojWKbxcUHgLYGWur4Ym&stream-channels=true&encoding=text" >actual_output
  
added QmRmPLc1FsPAn8F8F9DQDEYADNX5ER2sgqiokEvqnYknVW testdir/test.txt
added QmTcJAn3JP8ZMAKS6WS75q8sbTyojWKbxcUHgLYGWur4Ym testdir
ok 10 - Text encoded channel-streaming command succeeds
System.err »
 11 B / ? 

 11 B / 11 B  100.00%

 11 B / 11 B  100.00%  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    47    0    47    0     0  50321      0 --:--:-- --:--:-- --:--:-- 47000
11 - Text encoded channel-streaming command output looks good Success 0.070
System.out »
expecting success: 
    printf "HTTP/1.1 200 OK\r\n" >expected_output &&
    printf "Access-Control-Allow-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length\r\n" >>expected_output &&
    printf "Access-Control-Expose-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length\r\n" >>expected_output &&
    printf "Content-Type: text/plain\r\n" >>expected_output &&
    printf "Server: kubo/%s\r\n" $(ipfs version -n) >>expected_output &&
    printf "Trailer: X-Stream-Error\r\n" >>expected_output &&
    printf "Vary: Origin\r\n" >>expected_output &&
    printf "X-Chunked-Output: 1\r\n" >>expected_output &&
    printf "Transfer-Encoding: chunked\r\n" >>expected_output &&
    printf "\r\n" >>expected_output &&
    echo QmRmPLc1FsPAn8F8F9DQDEYADNX5ER2sgqiokEvqnYknVW >>expected_output &&
    cat actual_output | grep -vE Date > cleaned_output &&
    test_cmp expected_output cleaned_output
  
ok 11 - Text encoded channel-streaming command output looks good
12 - JSON encoded channel-streaming command succeeds Success 0.117
System.out »
expecting success: 
    mkdir -p testdir &&
    echo "hello test" >testdir/test.txt &&
    ipfs add -r testdir &&
    curl -X POST -i "http://$API_ADDR/api/v0/refs?arg=QmTcJAn3JP8ZMAKS6WS75q8sbTyojWKbxcUHgLYGWur4Ym&stream-channels=true&encoding=json" >actual_output
  
added QmRmPLc1FsPAn8F8F9DQDEYADNX5ER2sgqiokEvqnYknVW testdir/test.txt
added QmTcJAn3JP8ZMAKS6WS75q8sbTyojWKbxcUHgLYGWur4Ym testdir
ok 12 - JSON encoded channel-streaming command succeeds
System.err »
 11 B / ? 

 11 B / 11 B  100.00%

 11 B / 11 B  100.00%  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    66    0    66    0     0  51764      0 --:--:-- --:--:-- --:--:-- 66000
13 - JSON encoded channel-streaming command output looks good Success 0.066
System.out »
expecting success: 
    printf "HTTP/1.1 200 OK\r\n" >expected_output &&
    printf "Access-Control-Allow-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length\r\n" >>expected_output &&
    printf "Access-Control-Expose-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length\r\n" >>expected_output &&
    printf "Content-Type: application/json\r\n" >>expected_output &&
    printf "Server: kubo/%s\r\n" $(ipfs version -n) >>expected_output &&
    printf "Trailer: X-Stream-Error\r\n" >>expected_output &&
    printf "Vary: Origin\r\n" >>expected_output &&
    printf "X-Chunked-Output: 1\r\n" >>expected_output &&
    printf "Transfer-Encoding: chunked\r\n" >>expected_output &&
    printf "\r\n" >>expected_output &&
    cat <<-\EOF >>expected_output &&
{"Ref":"QmRmPLc1FsPAn8F8F9DQDEYADNX5ER2sgqiokEvqnYknVW","Err":""}
EOF
    printf "\n" >> expected_output &&
    perl -pi -e 'chomp if eof' expected_output &&
    cat actual_output | grep -vE Date > cleaned_output &&
    test_cmp expected_output cleaned_output
  
ok 13 - JSON encoded channel-streaming command output looks good
14 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 14 - 'ipfs daemon' is still running
15 - 'ipfs daemon' can be killed Success 0.258
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 15 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - Text encoded channel-streaming command succeeds
ok 11 - Text encoded channel-streaming command output looks good
ok 12 - JSON encoded channel-streaming command succeeds
ok 13 - JSON encoded channel-streaming command output looks good
ok 14 - 'ipfs daemon' is still running
ok 15 - 'ipfs daemon' can be killed

Back to top

TestCase t0231-channel-streaming

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.082
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.131
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.433
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0231-channel-streaming.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0231-channel-streaming.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0231-channel-streaming.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.066
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - make a file with multiple refs Success 0.101
System.out »
expecting success: 
    HASH=$(random-data -size=1000000 | ipfs add -q)
  
ok 10 - make a file with multiple refs
11 - can get refs through curl Success 0.013
System.out »
expecting success: 
    PORT=$(get_api_port) &&
    curl http://localhost:$PORT/api/v0/refs/$HASH > output
  
ok 11 - can get refs through curl
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    25  100    25    0     0  31847      0 --:--:-- --:--:-- --:--:-- 25000
12 - output looks good Success 0.005
System.out »
expecting success: 
    test_expect_code 1 grep "}{" output > /dev/null
  
ok 12 - output looks good
13 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 13 - 'ipfs daemon' is still running
14 - 'ipfs daemon' can be killed Success 0.251
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 14 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - make a file with multiple refs
ok 11 - can get refs through curl
ok 12 - output looks good
ok 13 - 'ipfs daemon' is still running
ok 14 - 'ipfs daemon' can be killed

Back to top

TestCase t0235-cli-request

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.103
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.144
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.442
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0235-cli-request.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0235-cli-request.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0235-cli-request.sh/mfs"
ok 3 - prepare config -- mounting
4 - start nc Success 0.512
System.out »
expecting success: 
  rm -f nc_out nc_outp nc_inp && mkfifo nc_inp nc_outp

  socat PIPE:nc_inp!!PIPE:nc_outp tcp-listen:5005,fork,max-children=1,bind=127.0.0.1 &
  NCPID=$!

  exec 6>nc_inp 7<nc_outp

  socat /dev/null tcp:127.0.01:5005,retry=10

ok 4 - start nc
5 - can make http request against nc server Success 0.064
System.out »
expecting success: 
  ipfs cat /ipfs/Qmabcdef --api /dns4/localhost/tcp/5005 &
  IPFSPID=$!

  # handle request for /api/v0/version
  while read line; do
    if [[ "$line" == "$(echo -e "\r")" ]]; then
      break
    fi
    echo "$line"
  done <&7 >nc_out &&

  echo -e "HTTP/1.1 200 OK\r" >&6 &&
  echo -e "Content-Type: application/json\r" >&6 &&
  echo -e "Content-Length: 21\r" >&6 &&
  echo -e "\r" >&6 &&
  echo -e "{\"Version\":\"0.23.0\"}\r" >&6 &&
  echo -e "\r" >&6 &&

  # handle request for /api/v0/cat
  while read line; do
    if [[ "$line" == "$(echo -e "\r")" ]]; then
      break
    fi
    echo "$line"
  done <&7 >nc_out &&

  echo -e "HTTP/1.1 200 OK\r" >&6 &&
  echo -e "Content-Type: text/plain\r" >&6 &&
  echo -e "Content-Length: 0\r" >&6 &&
  echo -e "\r" >&6 &&
  exec 6<&- &&

  # Wait for IPFS
  wait $IPFSPID

ok 5 - can make http request against nc server
System.err »
 0 B / ? 

 0 B / ?  0s
6 - stop nc Success 0.003
System.out »
expecting success: 
  kill "$NCPID" && wait "$NCPID" || true

ok 6 - stop nc
7 - output does not contain multipart info Success 0.005
System.out »
expecting success: 
  test_expect_code 1 grep multipart nc_out

ok 7 - output does not contain multipart info
8 - request looks good Success 0.005
System.out »
expecting success: 
  grep "POST /api/v0/cat" nc_out

POST /api/v0/cat?arg=%2Fipfs%2FQmabcdef&encoding=json&progress=true&stream-channels=true HTTP/1.1
ok 8 - request looks good
9 - api flag does not appear in request Success 0.006
System.out »
expecting success: 
  test_expect_code 1 grep "api=/ip4" nc_out

ok 9 - api flag does not appear in request
10 - host has dns name not ip address Success 0.005
System.out »
expecting success: 
  grep "Host: localhost:5005" nc_out

Host: localhost:5005
ok 10 - host has dns name not ip address
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - start nc
ok 5 - can make http request against nc server
ok 6 - stop nc
ok 7 - output does not contain multipart info
ok 8 - request looks good
ok 9 - api flag does not appear in request
ok 10 - host has dns name not ip address

Back to top

TestCase t0236-cli-api-dns-resolve

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.089
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.152
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.830
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0236-cli-api-dns-resolve.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0236-cli-api-dns-resolve.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0236-cli-api-dns-resolve.sh/mfs"
ok 3 - prepare config -- mounting
4 - start nc Success 0.518
System.out »
expecting success: 
  rm -f nc_out nc_outp nc_inp && mkfifo nc_inp nc_outp

  socat PIPE:nc_inp!!PIPE:nc_outp tcp-listen:5006,fork,max-children=1,bind=127.0.0.1 &
  NCPID=$!

  exec 6>nc_inp 7<nc_outp

  socat /dev/null tcp:127.0.01:5006,retry=10

ok 4 - start nc
5 - can make http request against dns resolved nc server Success 0.684
System.out »
expecting success: 
  ipfs cat /ipfs/Qmabcdef --api /dns4/localhost/tcp/5006 &
  IPFSPID=$!

  # handle request for /api/v0/version
  while read line; do
    if [[ "$line" == "$(echo -e "\r")" ]]; then
      break
    fi
    echo "$line"
  done <&7 >nc_out &&

  echo -e "HTTP/1.1 200 OK\r" >&6 &&
  echo -e "Content-Type: application/json\r" >&6 &&
  echo -e "Content-Length: 21\r" >&6 &&
  echo -e "\r" >&6 &&
  echo -e "{\"Version\":\"0.23.0\"}\r" >&6 &&
  echo -e "\r" >&6 &&

  # handle request for /api/v0/cat
  while read line; do
    if [[ "$line" == "$(echo -e "\r")" ]]; then
      break
    fi
    echo "$line"
  done <&7 >nc_out &&

  echo -e "HTTP/1.1 200 OK\r" >&6 &&
  echo -e "Content-Type: text/plain\r" >&6 &&
  echo -e "Content-Length: 0\r" >&6 &&
  echo -e "\r" >&6 &&
  exec 6<&- &&

  # Wait for IPFS
  wait $IPFSPID

ok 5 - can make http request against dns resolved nc server
System.err »
 0 B / ? 

 0 B / ?  0s
6 - stop nc Success 0.019
System.out »
expecting success: 
  kill "$NCPID" && wait "$NCPID" || true

ok 6 - stop nc
7 - request was received by local nc server Success 0.007
System.out »
expecting success: 
  grep "POST /api/v0/cat" nc_out

POST /api/v0/cat?arg=%2Fipfs%2FQmabcdef&encoding=json&progress=true&stream-channels=true HTTP/1.1
ok 7 - request was received by local nc server
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - start nc
ok 5 - can make http request against dns resolved nc server
ok 6 - stop nc
ok 7 - request was received by local nc server

Back to top

TestCase t0240-republisher

Name Status Type Time(s)
1 - iptb init Success 0.678
System.out »
expecting success: 
    iptb testbed create -type localipfs -count $num_nodes -init
  
ok 1 - iptb init
2 - set configs up for node 0 Success 0.236
System.out »
expecting success: 
      ipfsi "$i" config Ipns.RepublishPeriod 40s &&
      ipfsi "$i" config --json Ipns.ResolveCacheSize 0
    
ok 2 - set configs up for node 0
3 - set configs up for node 1 Success 0.299
System.out »
expecting success: 
      ipfsi "$i" config Ipns.RepublishPeriod 40s &&
      ipfsi "$i" config --json Ipns.ResolveCacheSize 0
    
ok 3 - set configs up for node 1
4 - set configs up for node 2 Success 0.201
System.out »
expecting success: 
      ipfsi "$i" config Ipns.RepublishPeriod 40s &&
      ipfsi "$i" config --json Ipns.ResolveCacheSize 0
    
ok 4 - set configs up for node 2
5 - set configs up for node 3 Success 0.230
System.out »
expecting success: 
      ipfsi "$i" config Ipns.RepublishPeriod 40s &&
      ipfsi "$i" config --json Ipns.ResolveCacheSize 0
    
ok 5 - set configs up for node 3
6 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.202
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
7 - start up nodes Success 0.499
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 7 - start up nodes
8 - connect nodes to each other Success 1.239
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 8 - connect nodes to each other
9 - node 0 is connected Success 0.136
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 0 is connected
10 - node 1 is connected Success 0.108
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 1 is connected
11 - node 2 is connected Success 0.141
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 11 - node 2 is connected
12 - node 3 is connected Success 0.091
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 12 - node 3 is connected
13 - publish succeeds Success 0.152
System.out »
expecting success: 
  HASH=$(date +"%FT%T.%N%z" | ipfsi 1 add -q) &&
  ipfsi 1 name publish -t 10s $HASH

Published to k51qzi5uqu5dl1j9utyucgp57ksphz43f2qrg4846uoho55b053ln883dthglk: /ipfs/QmZTqHD94Gw6X7Y5fouQzEVaxuwGVww3NGALGkjBorpiqa
ok 13 - publish succeeds
14 - get id succeeds Success 0.087
System.out »
expecting success: 
  id=$(ipfsi 1 id -f "<id>")

ok 14 - get id succeeds
15 - just after publishing: node 0 can resolve entry Success 0.079
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 15 - just after publishing: node 0 can resolve entry
16 - just after publishing: output for node 0 looks right Success 0.007
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 16 - just after publishing: output for node 0 looks right
17 - just after publishing: node 1 can resolve entry Success 0.081
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 17 - just after publishing: node 1 can resolve entry
18 - just after publishing: output for node 1 looks right Success 0.007
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 18 - just after publishing: output for node 1 looks right
19 - just after publishing: node 2 can resolve entry Success 0.069
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 19 - just after publishing: node 2 can resolve entry
20 - just after publishing: output for node 2 looks right Success 0.005
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 20 - just after publishing: output for node 2 looks right
21 - just after publishing: node 3 can resolve entry Success 0.073
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 21 - just after publishing: node 3 can resolve entry
22 - just after publishing: output for node 3 looks right Success 0.006
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 22 - just after publishing: output for node 3 looks right
23 - after 10 seconds, records are invalid: resolution fails on node 0 Success 0.078
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 23 - after 10 seconds, records are invalid: resolution fails on node 0
System.err »
Error: could not resolve name
24 - after 10 seconds, records are invalid: resolution fails on node 1 Success 0.076
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 24 - after 10 seconds, records are invalid: resolution fails on node 1
System.err »
Error: could not resolve name
25 - after 10 seconds, records are invalid: resolution fails on node 2 Success 0.071
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 25 - after 10 seconds, records are invalid: resolution fails on node 2
System.err »
Error: could not resolve name
26 - after 10 seconds, records are invalid: resolution fails on node 3 Success 0.101
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 26 - after 10 seconds, records are invalid: resolution fails on node 3
System.err »
Error: could not resolve name
27 - republisher fires after 30 seconds: node 0 can resolve entry Success 0.049
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 27 - republisher fires after 30 seconds: node 0 can resolve entry
28 - republisher fires after 30 seconds: output for node 0 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 28 - republisher fires after 30 seconds: output for node 0 looks right
29 - republisher fires after 30 seconds: node 1 can resolve entry Success 0.050
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 29 - republisher fires after 30 seconds: node 1 can resolve entry
30 - republisher fires after 30 seconds: output for node 1 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 30 - republisher fires after 30 seconds: output for node 1 looks right
31 - republisher fires after 30 seconds: node 2 can resolve entry Success 0.050
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 31 - republisher fires after 30 seconds: node 2 can resolve entry
32 - republisher fires after 30 seconds: output for node 2 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 32 - republisher fires after 30 seconds: output for node 2 looks right
33 - republisher fires after 30 seconds: node 3 can resolve entry Success 0.052
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 33 - republisher fires after 30 seconds: node 3 can resolve entry
34 - republisher fires after 30 seconds: output for node 3 looks right Success 0.005
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 34 - republisher fires after 30 seconds: output for node 3 looks right
35 - generate new key Success 0.052
System.out »
expecting success: 
KEY2=`ipfsi 1 key gen beepboop --type ed25519`

ok 35 - generate new key
36 - publish with new key succeeds Success 0.110
System.out »
expecting success: 
  HASH=$(date +"%FT%T.%N%z" | ipfsi 1 add -q) &&
  ipfsi 1 name publish -t 10s -k "$KEY2" $HASH

Published to k51qzi5uqu5dglphiytoiqqcekgh5f79yge7ykvd87bdttw1h6w71xxopb421y: /ipfs/QmNMPUXrH88oReYNcFWQes4VHbv6CANdbMovzK7P79mMTZ
ok 36 - publish with new key succeeds
37 - new key just after publishing: node 0 can resolve entry Success 0.052
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 37 - new key just after publishing: node 0 can resolve entry
38 - new key just after publishing: output for node 0 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 38 - new key just after publishing: output for node 0 looks right
39 - new key just after publishing: node 1 can resolve entry Success 0.052
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 39 - new key just after publishing: node 1 can resolve entry
40 - new key just after publishing: output for node 1 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 40 - new key just after publishing: output for node 1 looks right
41 - new key just after publishing: node 2 can resolve entry Success 0.052
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 41 - new key just after publishing: node 2 can resolve entry
42 - new key just after publishing: output for node 2 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 42 - new key just after publishing: output for node 2 looks right
43 - new key just after publishing: node 3 can resolve entry Success 0.051
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 43 - new key just after publishing: node 3 can resolve entry
44 - new key just after publishing: output for node 3 looks right Success 0.005
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 44 - new key just after publishing: output for node 3 looks right
45 - new key cannot resolve after 10 seconds: resolution fails on node 0 Success 0.049
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 45 - new key cannot resolve after 10 seconds: resolution fails on node 0
System.err »
Error: could not resolve name
46 - new key cannot resolve after 10 seconds: resolution fails on node 1 Success 0.048
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 46 - new key cannot resolve after 10 seconds: resolution fails on node 1
System.err »
Error: could not resolve name
47 - new key cannot resolve after 10 seconds: resolution fails on node 2 Success 0.048
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 47 - new key cannot resolve after 10 seconds: resolution fails on node 2
System.err »
Error: could not resolve name
48 - new key cannot resolve after 10 seconds: resolution fails on node 3 Success 0.050
System.out »
expecting success: 
      test_expect_code 1 ipfsi "$node" name resolve "$name"
    
ok 48 - new key cannot resolve after 10 seconds: resolution fails on node 3
System.err »
Error: could not resolve name
49 - new key can resolve again after republish: node 0 can resolve entry Success 0.049
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 49 - new key can resolve again after republish: node 0 can resolve entry
50 - new key can resolve again after republish: output for node 0 looks right Success 0.005
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 50 - new key can resolve again after republish: output for node 0 looks right
51 - new key can resolve again after republish: node 1 can resolve entry Success 0.051
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 51 - new key can resolve again after republish: node 1 can resolve entry
52 - new key can resolve again after republish: output for node 1 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 52 - new key can resolve again after republish: output for node 1 looks right
53 - new key can resolve again after republish: node 2 can resolve entry Success 0.051
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 53 - new key can resolve again after republish: node 2 can resolve entry
54 - new key can resolve again after republish: output for node 2 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 54 - new key can resolve again after republish: output for node 2 looks right
55 - new key can resolve again after republish: node 3 can resolve entry Success 0.051
System.out »
expecting success: 
      ipfsi "$node" name resolve "$name" > resolve
    
ok 55 - new key can resolve again after republish: node 3 can resolve entry
56 - new key can resolve again after republish: output for node 3 looks right Success 0.004
System.out »
expecting success: 
      printf "/ipfs/$expected\n" > expected &&
      test_cmp expected resolve
    
ok 56 - new key can resolve again after republish: output for node 3 looks right
57 - shut down nodes Success 0.018
System.out »
expecting success: 
    iptb stop
  
ok 57 - shut down nodes
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - iptb init
ok 2 - set configs up for node 0
ok 3 - set configs up for node 1
ok 4 - set configs up for node 2
ok 5 - set configs up for node 3
ok 6 - set Routing.LoopbackAddressesOnLanDHT to true
ok 7 - start up nodes
ok 8 - connect nodes to each other
ok 9 - node 0 is connected
ok 10 - node 1 is connected
ok 11 - node 2 is connected
ok 12 - node 3 is connected
ok 13 - publish succeeds
ok 14 - get id succeeds
ok 15 - just after publishing: node 0 can resolve entry
ok 16 - just after publishing: output for node 0 looks right
ok 17 - just after publishing: node 1 can resolve entry
ok 18 - just after publishing: output for node 1 looks right
ok 19 - just after publishing: node 2 can resolve entry
ok 20 - just after publishing: output for node 2 looks right
ok 21 - just after publishing: node 3 can resolve entry
ok 22 - just after publishing: output for node 3 looks right
ok 23 - after 10 seconds, records are invalid: resolution fails on node 0
ok 24 - after 10 seconds, records are invalid: resolution fails on node 1
ok 25 - after 10 seconds, records are invalid: resolution fails on node 2
ok 26 - after 10 seconds, records are invalid: resolution fails on node 3
ok 27 - republisher fires after 30 seconds: node 0 can resolve entry
ok 28 - republisher fires after 30 seconds: output for node 0 looks right
ok 29 - republisher fires after 30 seconds: node 1 can resolve entry
ok 30 - republisher fires after 30 seconds: output for node 1 looks right
ok 31 - republisher fires after 30 seconds: node 2 can resolve entry
ok 32 - republisher fires after 30 seconds: output for node 2 looks right
ok 33 - republisher fires after 30 seconds: node 3 can resolve entry
ok 34 - republisher fires after 30 seconds: output for node 3 looks right
ok 35 - generate new key
ok 36 - publish with new key succeeds
ok 37 - new key just after publishing: node 0 can resolve entry
ok 38 - new key just after publishing: output for node 0 looks right
ok 39 - new key just after publishing: node 1 can resolve entry
ok 40 - new key just after publishing: output for node 1 looks right
ok 41 - new key just after publishing: node 2 can resolve entry
ok 42 - new key just after publishing: output for node 2 looks right
ok 43 - new key just after publishing: node 3 can resolve entry
ok 44 - new key just after publishing: output for node 3 looks right
ok 45 - new key cannot resolve after 10 seconds: resolution fails on node 0
ok 46 - new key cannot resolve after 10 seconds: resolution fails on node 1
ok 47 - new key cannot resolve after 10 seconds: resolution fails on node 2
ok 48 - new key cannot resolve after 10 seconds: resolution fails on node 3
ok 49 - new key can resolve again after republish: node 0 can resolve entry
ok 50 - new key can resolve again after republish: output for node 0 looks right
ok 51 - new key can resolve again after republish: node 1 can resolve entry
ok 52 - new key can resolve again after republish: output for node 1 looks right
ok 53 - new key can resolve again after republish: node 2 can resolve entry
ok 54 - new key can resolve again after republish: output for node 2 looks right
ok 55 - new key can resolve again after republish: node 3 can resolve entry
ok 56 - new key can resolve again after republish: output for node 3 looks right
ok 57 - shut down nodes

Back to top

TestCase t0250-files-api

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.150
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.288
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.720
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0250-files-api.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0250-files-api.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0250-files-api.sh/mfs"
ok 3 - prepare config -- mounting
4 - can create some files for testing (no-daemon) Success 0.851
System.out »
expecting success: 
    create_files
  
ok 4 - can create some files for testing (no-daemon)
5 - can mkdir in root (no-daemon) Success 0.250
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 5 - can mkdir in root (no-daemon)
6 - 'files ls' lists root by default (no-daemon) Success 0.262
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 6 - 'files ls' lists root by default (no-daemon)
7 - directory was created (no-daemon) Success 0.247
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 7 - directory was created (no-daemon)
9 - can list dir Success 0.188
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 9 - can list dir
ok 9 - can list dir
10 - directory is empty (no-daemon) Success 0.054
System.out »
ok 10 - directory is empty (no-daemon)
11 - stat works (no-daemon) Success 0.139
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 11 - stat works (no-daemon)
12 - hash is first line of stat (no-daemon) Success 0.140
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn - cats/
ok 12 - hash is first line of stat (no-daemon)
13 - stat --hash gives only hash (no-daemon) Success 0.124
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 13 - stat --hash gives only hash (no-daemon)
14 - stat with multiple format options should fail (no-daemon) Success 0.074
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 14 - stat with multiple format options should fail (no-daemon)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
15 - compare hash option with format (no-daemon) Success 0.206
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 15 - compare hash option with format (no-daemon)
16 - compare size option with format (no-daemon) Success 0.185
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 16 - compare size option with format (no-daemon)
17 - check root hash (no-daemon) Success 0.102
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 17 - check root hash (no-daemon)
18 - stat works outside of MFS Success 0.098
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmaNKtyrhM6axXhjuKzXCi7ghiEuAEZE6hcK8CTexxCimw
Size: 0
CumulativeSize: 176
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 18 - stat works outside of MFS
19 - stat compute the locality of a dag Success 0.088
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 19 - stat compute the locality of a dag
20 - cannot mkdir / (no-daemon) Success 0.091
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 20 - cannot mkdir / (no-daemon)
System.err »
Error: cannot create directory '/': Already exists
21 - check root hash was not changed (no-daemon) Success 0.106
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 21 - check root hash was not changed (no-daemon)
22 - can put files into directory (no-daemon) Success 0.096
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 22 - can put files into directory (no-daemon)
24 - can list dir Success 0.085
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 24 - can list dir
ok 24 - can list dir
25 - file shows up in directory (no-daemon) Success 0.036
System.out »
ok 25 - file shows up in directory (no-daemon)
26 - file has correct hash and size in directory (no-daemon) Success 0.083
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 26 - file has correct hash and size in directory (no-daemon)
27 - file has correct hash and size listed with -l Success 0.084
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 27 - file has correct hash and size listed with -l
28 - file has correct hash and size listed with --long Success 0.086
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 28 - file has correct hash and size listed with --long
29 - file has correct hash and size listed with -l --cid-base=base32 Success 0.089
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 29 - file has correct hash and size listed with -l --cid-base=base32
30 - file shows up with the correct name Success 0.094
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 30 - file shows up with the correct name
31 - can stat file (no-daemon) Success 0.082
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 31 - can stat file (no-daemon)
32 - stat output looks good Success 0.008
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 32 - stat output looks good
33 - can stat file with --cid-base=base32 (no-daemon) Success 0.088
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 33 - can stat file with --cid-base=base32 (no-daemon)
34 - stat output looks good with --cid-base=base32 Success 0.010
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 34 - stat output looks good with --cid-base=base32
35 - can read file (no-daemon) Success 0.090
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 35 - can read file (no-daemon)
36 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 36 - output looks good (no-daemon)
37 - can put another file into root (no-daemon) Success 0.102
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 37 - can put another file into root (no-daemon)
39 - can list dir Success 0.106
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 39 - can list dir
ok 39 - can list dir
40 - file shows up in root (no-daemon) Success 0.037
System.out »
ok 40 - file shows up in root (no-daemon)
41 - can read file (no-daemon) Success 0.104
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 41 - can read file (no-daemon)
42 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 42 - output looks good (no-daemon)
43 - can make deep directory (no-daemon) Success 0.101
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 43 - can make deep directory (no-daemon)
45 - can list dir Success 0.090
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 45 - can list dir
ok 45 - can list dir
46 - dir entries look good Success 0.009
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 46 - dir entries look good
47 - can list dir Success 0.091
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 47 - can list dir
48 - dir entries look good Success 0.009
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 48 - dir entries look good
49 - can list dir Success 0.092
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 49 - can list dir
50 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 50 - dir entries look good
51 - can list dir Success 0.083
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 51 - can list dir
52 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 52 - dir entries look good
53 - can list dir Success 0.084
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 53 - can list dir
54 - directory was created correctly (no-daemon) Success 0.033
System.out »
ok 54 - directory was created correctly (no-daemon)
55 - dir has correct name Success 0.157
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 55 - dir has correct name
56 - can copy file into new dir (no-daemon) Success 0.092
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 56 - can copy file into new dir (no-daemon)
57 - can copy file into deep dir using -p flag (no-daemon) Success 0.089
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 57 - can copy file into deep dir using -p flag (no-daemon)
58 - file copied into deep dir exists (no-daemon) Success 0.099
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 58 - file copied into deep dir exists (no-daemon)
59 - cleanup deep cp -p test (no-daemon) Success 0.088
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 59 - cleanup deep cp -p test (no-daemon)
60 - can read file (no-daemon) Success 0.095
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 60 - can read file (no-daemon)
61 - output looks good (no-daemon) Success 0.007
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 61 - output looks good (no-daemon)
63 - can list dir Success 0.095
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 63 - can list dir
ok 63 - can list dir
64 - file shows up in dir (no-daemon) Success 0.032
System.out »
ok 64 - file shows up in dir (no-daemon)
65 - can remove file (no-daemon) Success 0.097
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 65 - can remove file (no-daemon)
67 - can list dir Success 0.091
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 67 - can list dir
ok 67 - can list dir
68 - file no longer appears (no-daemon) Success 0.031
System.out »
ok 68 - file no longer appears (no-daemon)
69 - can remove dir (no-daemon) Success 0.085
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 69 - can remove dir (no-daemon)
71 - can list dir Success 0.091
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 71 - can list dir
ok 71 - can list dir
72 - dir no longer appears (no-daemon) Success 0.032
System.out »
ok 72 - dir no longer appears (no-daemon)
73 - can remove file from root (no-daemon) Success 0.079
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 73 - can remove file from root (no-daemon)
75 - can list dir Success 0.085
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 75 - can list dir
ok 75 - can list dir
76 - file no longer appears (no-daemon) Success 0.036
System.out »
ok 76 - file no longer appears (no-daemon)
77 - check root hash (no-daemon) Success 0.080
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 77 - check root hash (no-daemon)
78 - cannot remove root (no-daemon) Success 0.099
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 78 - cannot remove root (no-daemon)
System.err »
Error: can't remove some files
79 - check root hash was not changed (no-daemon) Success 0.097
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 79 - check root hash was not changed (no-daemon)
80 - read from offset works (no-daemon) Success 0.099
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 80 - read from offset works (no-daemon)
81 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 81 - output looks good (no-daemon)
82 - read with size works (no-daemon) Success 0.098
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 82 - read with size works (no-daemon)
83 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 83 - output looks good (no-daemon)
84 - cannot read from negative offset (no-daemon) Success 0.139
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 84 - cannot read from negative offset (no-daemon)
System.err »
Error: cannot specify negative offset
85 - read from offset 0 works (no-daemon) Success 0.139
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 85 - read from offset 0 works (no-daemon)
86 - output looks good (no-daemon) Success 0.007
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 86 - output looks good (no-daemon)
87 - read last byte works (no-daemon) Success 0.112
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 87 - read last byte works (no-daemon)
88 - output looks good (no-daemon) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 88 - output looks good (no-daemon)
89 - offset past end of file fails (no-daemon) Success 0.078
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 89 - offset past end of file fails (no-daemon)
System.err »
Error: offset was past end of file (5 > 4)
90 - cannot read negative count bytes (no-daemon) Success 0.068
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 90 - cannot read negative count bytes (no-daemon)
System.err »
Error: Unknown Command "read"
91 - reading zero bytes prints nothing (no-daemon) Success 0.082
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 91 - reading zero bytes prints nothing (no-daemon)
92 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 92 - output looks good (no-daemon)
93 - count > len(file) prints entire file (no-daemon) Success 0.076
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 93 - count > len(file) prints entire file (no-daemon)
94 - output looks good (no-daemon) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 94 - output looks good (no-daemon)
95 - can write file (no-daemon) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 95 - can write file (no-daemon)
97 - can list dir Success 0.080
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 97 - can list dir
ok 97 - can list dir
98 - file was created (no-daemon) Success 0.034
System.out »
ok 98 - file was created (no-daemon)
99 - can read file we just wrote (no-daemon) Success 0.073
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 99 - can read file we just wrote (no-daemon)
100 - can write to offset (no-daemon) Success 0.103
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 100 - can write to offset (no-daemon)
101 - file looks correct (no-daemon) Success 0.098
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 101 - file looks correct (no-daemon)
102 - file hash correct (no-daemon) Success 0.102
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 102 - file hash correct (no-daemon)
103 - can't write to negative offset (no-daemon) Success 0.082
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 103 - can't write to negative offset (no-daemon)
System.err »
Error: cannot have negative write offset
104 - verify file was not changed (no-daemon) Success 0.091
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 104 - verify file was not changed (no-daemon)
105 - write new file for testing (no-daemon) Success 0.084
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 105 - write new file for testing (no-daemon)
106 - write to offset past end works (no-daemon) Success 0.085
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 106 - write to offset past end works (no-daemon)
107 - can read file (no-daemon) Success 0.087
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 107 - can read file (no-daemon)
108 - output looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 108 - output looks good (no-daemon)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 3.6818e-05 s, 136 kB/s
109 - cleanup (no-daemon) Success 0.090
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 109 - cleanup (no-daemon)
110 - cannot write to directory (no-daemon) Success 0.159
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 110 - cannot write to directory (no-daemon)
System.err »
Error: /cats was not a file
111 - verify dir was not changed (no-daemon) Success 0.091
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 111 - verify dir was not changed (no-daemon)
112 - cannot write to nonexistent path (no-daemon) Success 0.082
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 112 - cannot write to nonexistent path (no-daemon)
System.err »
Error: file does not exist
114 - can list dir Success 0.085
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 114 - can list dir
ok 114 - can list dir
115 - no new paths were created (no-daemon) Success 0.033
System.out »
ok 115 - no new paths were created (no-daemon)
116 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.004
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 116 - 'ipfs daemon' is running when WITH_DAEMON is set
117 - write 'no-flush' succeeds (no-daemon) Success 0.097
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 117 - write 'no-flush' succeeds (no-daemon)
118 - root hash not bubbled up yet (no-daemon) Success 0.004
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 118 - root hash not bubbled up yet (no-daemon)
119 - changes bubbled up to root on inspection (no-daemon) Success 0.104
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 119 - changes bubbled up to root on inspection (no-daemon)
120 - root hash looks good (no-daemon) Success 0.006
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 120 - root hash looks good (no-daemon)
121 - /cats hash looks good (no-daemon) Success 0.078
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 121 - /cats hash looks good (no-daemon)
122 - flush root succeeds (no-daemon) Success 0.097
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmcwKfTMCT7AaeiD92hWjnZn9b6eh9NxnhfSzN5x2vnDpt"}
ok 122 - flush root succeeds (no-daemon)
123 - can mv dir (no-daemon) Success 0.074
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 123 - can mv dir (no-daemon)
124 - can mv dir and dest dir is / (no-daemon) Success 0.093
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 124 - can mv dir and dest dir is / (no-daemon)
125 - can mv dir and dest dir path has no trailing slash (no-daemon) Success 0.116
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 125 - can mv dir and dest dir path has no trailing slash (no-daemon)
127 - can list dir Success 0.097
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 127 - can list dir
ok 127 - can list dir
128 - dir entries look good Success 0.009
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 128 - dir entries look good
129 - can list dir Success 0.081
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 129 - can list dir
130 - mv worked (no-daemon) Success 0.035
System.out »
ok 130 - mv worked (no-daemon)
131 - cleanup, remove 'cats' (no-daemon) Success 0.090
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 131 - cleanup, remove 'cats' (no-daemon)
133 - can list dir Success 0.090
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 133 - can list dir
ok 133 - can list dir
134 - cleanup looks good (no-daemon) Success 0.045
System.out »
ok 134 - cleanup looks good (no-daemon)
135 - create a new file (no-daemon) Success 0.151
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 135 - create a new file (no-daemon)
136 - truncate and write over that file (no-daemon) Success 0.115
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 136 - truncate and write over that file (no-daemon)
137 - output looks good (no-daemon) Success 0.083
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 137 - output looks good (no-daemon)
138 - file hash correct (no-daemon) Success 0.088
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 138 - file hash correct (no-daemon)
139 - cleanup (no-daemon) Success 0.107
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 139 - cleanup (no-daemon)
140 - mkdir --flush works (no-daemon) Success 0.099
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 140 - mkdir --flush works (no-daemon)
141 - mkdir --flush works a second time (no-daemon) Success 0.103
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 141 - mkdir --flush works a second time (no-daemon)
143 - can list dir Success 0.130
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 143 - can list dir
ok 143 - can list dir
144 - dir looks right (no-daemon) Success 0.046
System.out »
ok 144 - dir looks right (no-daemon)
146 - can list dir Success 0.078
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 146 - can list dir
ok 146 - can list dir
147 - child dir looks right (no-daemon) Success 0.038
System.out »
ok 147 - child dir looks right (no-daemon)
148 - cleanup (no-daemon) Success 0.128
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 148 - cleanup (no-daemon)
150 - can list dir Success 0.147
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 150 - can list dir
ok 150 - can list dir
151 - child dir looks right (no-daemon) Success 0.056
System.out »
ok 151 - child dir looks right (no-daemon)
152 - create and remove dir (no-daemon) Success 0.181
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 152 - create and remove dir (no-daemon)
153 - create test file (no-daemon) Success 0.097
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 153 - create test file (no-daemon)
154 - copy test file onto test dir (no-daemon) Success 0.090
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 154 - copy test file onto test dir (no-daemon)
155 - test /test_dir (no-daemon) Success 0.097
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 155 - test /test_dir (no-daemon)
156 - clean up /test_dir and /test_file (no-daemon) Success 0.167
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 156 - clean up /test_dir and /test_file (no-daemon)
157 - make a directory and a file (no-daemon) Success 0.184
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 157 - make a directory and a file (no-daemon)
158 - copy a file into a directory (no-daemon) Success 0.095
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 158 - copy a file into a directory (no-daemon)
159 - file made it into directory (no-daemon) Success 0.103
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 159 - file made it into directory (no-daemon)
160 - test copy --force overwrites files Success 0.504
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 160 - test copy --force overwrites files
161 - clean up Success 0.217
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 161 - clean up
162 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon) Success 0.102
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 162 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon)
System.err »
Error: file does not exist
163 - can write file and create intermediate directories (no-daemon) Success 0.222
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 163 - can write file and create intermediate directories (no-daemon)
164 - can write file and create intermediate directories with short flags (no-daemon) Success 0.252
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 164 - can write file and create intermediate directories with short flags (no-daemon)
165 - can write another file in the same directory with -e -p (no-daemon) Success 0.182
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 165 - can write another file in the same directory with -e -p (no-daemon)
166 - clean up (no-daemon) Success 0.088
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 166 - clean up (no-daemon)
168 - can list dir Success 0.089
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 168 - can list dir
ok 168 - can list dir
169 - root mfs entry is empty (no-daemon) Success 0.052
System.out »
ok 169 - root mfs entry is empty (no-daemon)
170 - repo gc (no-daemon) Success 0.127
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreiddxzzoljxwk66mcktgdibxv2tmbfdije75imaied6tlri3jdugta
removed bafkreiccd3bw4jwbkh4ynp2dicdj4rbkf5y4sjphd426xyjnat7nxnwuze
removed bafkreiheqtivrdwl6ac4m3xgaywwxzuc2no2fxamht7kannxu5xwpyoeva
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreigucigihe5ldq665xxrt7jkhptczoiuicxbpfvxviguklyemk2syy
removed bafkreiezd3c2wz5cgflebf3zejjusgsy4acqpbrvgjaxviwy754hdcwskq
removed bafkreid4q4ovpejky42u6dlv3b3qgyl64lc3jpx34fuoxo2faelr2ewriy
removed bafkreia4uba2drvobsfj6gk7khmxnlhvm5r5zw2igqgaws2g7mglmvo2e4
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreie6xm2nsh5tmg2p4owod5pcwqrmpj46yphu7kxjkotmkce3e2546m
removed bafkreiflknscvcsn43l4iotgby6lybbw6r73qpq3g3ealimre6fyt6pg7a
removed bafkreignhn7ilfah7yiyvm6uz5epluhcvzgyuclstb3pbmjq4wfr5y3xfm
removed bafkreig4ueyjkam55btnbzbsc76hhh7cplhqp4t3xdug2a3ldsq3hlsor4
removed bafkreigclwvstehpeugtx3ckslar6mmlslg7p4ttttdql76l46dgnxvizm
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreibkfu2ihtzazqni6qar5kvftztutibtwgkjn7zqykh7unp7wf2a64
removed bafkreielwkjucnpc6y7duk6bw4t377lvtebrrmptcynhwzfha6t3oup7uq
removed bafkreig45a45mszimgiohjp2oh7t357n7ej25kxfwlao4lhjxyqojnh5ku
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreidxoazk6d556guisyq52r7fpu5v33fio37tkojhh4jxoydndls3vq
removed bafkreia62swgahz57fe4bdonihf3ccefcj5mmzfxkucchaiev6p2vhyro4
removed bafkreicvgx2erc2paby4vvgwgf3d7gpskks2wn4wvh2uhrk7kfq2m3lqpy
removed bafkreif5k4l36cd5hqqjd2nb5tmue3shwdadyxii4nbdyepcyqnicoxgv4
removed bafkreiagl64okxcqfzdixvtjk4p2aalo7ade46d42xtv3ko7toucxekva4
removed bafkreiga3m2c5b5t4mclnf6n7q2sqr35jntxsfcgqvixhw7zwwna7xpwaq
removed bafkreicj2orpoahxchz3qtifkr654zm4z42n3qw5sna5uegzzkviosxwuy
removed bafkreifjv2vcrdurrz5a2coxvp5rc74igihmsl4e67ngilqyf45vajdzka
removed bafkreiesp2wpqsqwqjt5g63qzhnavyyjotfbpvon4jmrz6jjcvmxb7y3lq
removed bafkreievdpkawdfqw47lwecresdz5habydralwq5w6a4c2bl3ap5hzyjam
removed bafkreic4ko36gl6nqkjsichxwxnahchdnrea7zzqezsyl2a57w4vh2zxuy
removed bafkreidesel2ztzocstkemyt6ixt3gktwcjjih5orkrr37yl2tehjgqpeq
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreiehz72rf7qryuzgsif3qketlc4ralapq6afcawn6sk6f37enchm2u
removed bafkreiakb3k5kz2x4ilh3a74hvcgwegb7loklrumtzhwkff6ur7mtwfzlq
removed bafkreigq2zsg6xmzpjhrcqonyiw7kipprt47yldnng42rgzhoiiz3szadm
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreico5w2wevlcugsmi4l7qd2c3v3mgzff2qmjrycmyun3gxwy6mrr7q
removed bafkreif73vxc5jppvd2gdapzxk3juoe3k2mw3l4fethhit5ugrtwna6ybq
removed bafkreicmibk4sbtlu2vuspggpnvgllicjncagovfazsatugsjdpmfzzyby
removed bafkreifdzjyhihgml6igc5id4czu57jxyutxpmth35zvibyckkk55qczma
removed bafkreie423ad57fvluhzpqqzbfjpoi3zzr3utjebcpmyxhbz2v5stib2om
removed bafkreibvq2iievpi4dm55ganbz6cra7drxzavbtywzf3jv7z2wsc4wqz3u
removed bafkreihxkpo5cw4znpexlrydozxrb7vvcoxdotxozv4mct5vlal6sgie4y
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreihwlkcbhtywiuy3jb3inz3ndvzjs4fp7pg5egezlq2jy46mcb5k6a
removed bafkreiexszui4q4m5gkatga7ykyubdzla6b7bmxyhl4327z6bevk3rnige
removed bafkreihftqh565lu34fh5fdqroqnth2tf773eueg3v56ixu45fpyyovlbm
removed bafkreihtwq5fhnlfqodq6yxsplbfuuhqgissp2bdw33kp2gcwvkmiitl5e
removed bafkreibkvt57lxnnmgktme3tzkahjxpllx3jl7n4w2ach74xelfs7dsxam
removed bafkreidjo5hvibdyormqyggqls474roq6hviyrjhludyonyixmuocxb45a
removed bafkreiagzszzlys3fpmo7tl3ycd4llmkrfy65bs2ppmlqc22ngnf7nd77i
removed bafkreibbvpzv2zbfawajuxawvz72wmzpomo64jra2bck7thzrzbipnjprq
removed bafkreieyutxafkanmlpulb3mmsf4k65awioc3ccwdw7u2wbwkaok23idem
removed bafkreifuju4uk4mz4xcvdhrwjjgzqboddwoambmy5jpz2nvhx7pv3doaeu
removed bafkreickpkn4rgpbjuzgfljzkqxe4n7b5au4fo4kv6lccxcqvviquxzcby
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreigbz3pkezedzj7rqetiyos6xlprr62g2xaz3jypy24smr5zonoore
removed bafkreia647j2cgubw2xcgzyzlxqjano5clom3yhcd4dgk6uhilfdod2wwi
removed bafkreibsp4723rp6omygyx4k7am4nmupskwibelrwdmlvv7fdi7ebaarxi
removed bafkreihy7jbcqsp3nzbxh6ylqrvoawmxvfbbmjmzx2kxnfmzuqs3ckx3je
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreigze7pg7yci3mkp4ibxesmjpazx7dfanpar4vtgkrid7t2drpkbue
removed bafkreiefvdjguawixdgqwfpxpogvpvosoycbd7qkdvehxgnvb7leaz6nf4
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreid6nzj23cmqyoxdrxfsetxvlypot2b6sjeepk2i6a2ecrn4wztgve
removed bafkreiflmj5s7o3k4o6hnguybn63ffcholxskvkden2rtksujlrrhjqgju
removed bafkreiargkvrhqagwnbnxpiilqhl7savmr7jg7zcoukrztc52aylck7vfe
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreidafkv534iye4l22sc7pldsgcr3lct4erb2szlrace5tf67gmwovm
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreigux4s5iz3hixb5ipc2hn6zmd7uwrnwuxsc2jepu4dhiiixipduvu
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreia3dsn2gdjrbvy47blstwir2i7qxo77znm74pk3guuqg2qbol7avu
removed bafkreihqjmjmf3b7bpnqk5ipegnez4gwqoion7fndamwpfcgryhi3hsfou
removed bafkreib75zusnbnusrdfcxrl3ytapwn5htmeeyy6drcoocx45w2qg5gq7y
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreiebyz5wb2ylfbuwgkfbxdcjpjzu557huys26tveab25iue7s4372y
removed bafkreifaoywycsu2w4bngevbsr24b4kn27i6c5u24a3zpvtoumxmyhs7fu
removed bafkreidfsj6ukryu2afxas25nxdrgnqnzaiqskpogzjmhbz4pqyprh6d54
removed bafkreigogatnti72x3xlnndhnqxpv46yvnwvmcvccnvut7pccovqmi6yzy
removed bafkreiagnqseuyg3rqqta5l7pw2njf2x2wbyuiah5vol4ingk5l6eyv6d4
removed bafkreidvxb7iaexn4lyvup7snv5khrv3z5anlypgpaajhme2oo6fzlzy64
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreiawyc6d2notlw4s7zqslzhyxij7hxcdwdbcijdbhe55vziyacxxiy
removed bafkreigblak2rn2wguizmooprpt76l7jd4dbhkywilywc7cxhlshtcu3oi
removed bafkreibcakorlunelsybickeoax365lesqzcpv52v47fpfyas4flsbbjge
removed bafkreifpc5uucyts47m4hqf2z6k7dhgnekp3zprvuocrdcotswhz4htznm
removed bafkreiajwghjki6pnoqylmwkvjrvqhuf6hyvvq2vcjykgo2gzqfo4g7rsi
removed bafkreigu3y27vfxg57tpwqlorylmhtxqltpdgd5euimag7laaqscco7ida
removed bafkreiedw4xss7jqmoisiequgiutysuztshxdpz35pekoaye5qd4a6neke
removed bafkreif3vyo7irk4jcvciev4vj7u35j5qhhpauwnvtieu7nz44v44dur2q
removed bafkreicyoylvnuwfamrciukkqaprggk54id5oricmuh7447t65lsqdxunm
removed bafkreigy4vuqjgwhgodmhvfwk4kpq7a27mnossstcyladfkpx5idmq6aie
ok 170 - repo gc (no-daemon)
172 - can list dir Success 0.203
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 172 - can list dir
ok 172 - can list dir
173 - remove file forcibly Success 0.049
System.out »
ok 173 - remove file forcibly
175 - can list dir Success 0.093
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 175 - can list dir
ok 175 - can list dir
176 - remove multiple files forcibly Success 0.047
System.out »
ok 176 - remove multiple files forcibly
178 - can list dir Success 0.081
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 178 - can list dir
ok 178 - can list dir
179 - remove directory forcibly Success 0.034
System.out »
ok 179 - remove directory forcibly
181 - can list dir Success 0.087
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 181 - can list dir
ok 181 - can list dir
182 - remove multiple directories forcibly Success 0.044
System.out »
ok 182 - remove multiple directories forcibly
183 - remove multiple files Success 0.277
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 183 - remove multiple files
185 - can list dir Success 0.070
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 185 - can list dir
ok 185 - can list dir
186 - remove multiple directories Success 0.051
System.out »
ok 186 - remove multiple directories
187 - remove nonexistent path forcibly Success 0.079
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 187 - remove nonexistent path forcibly
188 - remove deeply nonexistent path forcibly Success 0.099
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 188 - remove deeply nonexistent path forcibly
190 - can list dir Success 0.141
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 190 - can list dir
ok 190 - can list dir
System.err »
Error: can't remove some files
191 - remove multiple files (with nonexistent one) Success 0.100
System.out »
ok 191 - remove multiple files (with nonexistent one)
192 - can create some files for testing with raw-leaves (no-daemon) Success 0.693
System.out »
expecting success: 
    create_files --raw-leaves
  
ok 192 - can create some files for testing with raw-leaves (no-daemon)
193 - can mkdir in root (no-daemon, raw-leaves) Success 0.102
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 193 - can mkdir in root (no-daemon, raw-leaves)
194 - 'files ls' lists root by default (no-daemon, raw-leaves) Success 0.119
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 194 - 'files ls' lists root by default (no-daemon, raw-leaves)
195 - directory was created (no-daemon, raw-leaves) Success 0.077
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 195 - directory was created (no-daemon, raw-leaves)
197 - can list dir Success 0.093
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 197 - can list dir
ok 197 - can list dir
198 - directory is empty (no-daemon, raw-leaves) Success 0.040
System.out »
ok 198 - directory is empty (no-daemon, raw-leaves)
199 - stat works (no-daemon, raw-leaves) Success 0.100
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 199 - stat works (no-daemon, raw-leaves)
200 - hash is first line of stat (no-daemon, raw-leaves) Success 0.229
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn - cats/
ok 200 - hash is first line of stat (no-daemon, raw-leaves)
201 - stat --hash gives only hash (no-daemon, raw-leaves) Success 0.091
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 201 - stat --hash gives only hash (no-daemon, raw-leaves)
202 - stat with multiple format options should fail (no-daemon, raw-leaves) Success 0.061
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 202 - stat with multiple format options should fail (no-daemon, raw-leaves)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
203 - compare hash option with format (no-daemon, raw-leaves) Success 0.151
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 203 - compare hash option with format (no-daemon, raw-leaves)
204 - compare size option with format (no-daemon, raw-leaves) Success 0.164
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 204 - compare size option with format (no-daemon, raw-leaves)
205 - check root hash (no-daemon, raw-leaves) Success 0.082
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 205 - check root hash (no-daemon, raw-leaves)
206 - stat works outside of MFS Success 0.085
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 206 - stat works outside of MFS
207 - stat compute the locality of a dag Success 0.072
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 207 - stat compute the locality of a dag
208 - cannot mkdir / (no-daemon, raw-leaves) Success 0.098
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 208 - cannot mkdir / (no-daemon, raw-leaves)
System.err »
Error: cannot create directory '/': Already exists
209 - check root hash was not changed (no-daemon, raw-leaves) Success 0.123
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 209 - check root hash was not changed (no-daemon, raw-leaves)
210 - can put files into directory (no-daemon, raw-leaves) Success 0.093
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 210 - can put files into directory (no-daemon, raw-leaves)
212 - can list dir Success 0.108
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 212 - can list dir
ok 212 - can list dir
213 - file shows up in directory (no-daemon, raw-leaves) Success 0.039
System.out »
ok 213 - file shows up in directory (no-daemon, raw-leaves)
214 - file has correct hash and size in directory (no-daemon, raw-leaves) Success 0.094
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 214 - file has correct hash and size in directory (no-daemon, raw-leaves)
215 - file has correct hash and size listed with -l Success 0.073
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 215 - file has correct hash and size listed with -l
216 - file has correct hash and size listed with --long Success 0.066
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 216 - file has correct hash and size listed with --long
217 - file has correct hash and size listed with -l --cid-base=base32 Success 0.068
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 217 - file has correct hash and size listed with -l --cid-base=base32
218 - file shows up with the correct name Success 0.070
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 218 - file shows up with the correct name
219 - can stat file (no-daemon, raw-leaves) Success 0.077
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 219 - can stat file (no-daemon, raw-leaves)
220 - stat output looks good Success 0.008
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 220 - stat output looks good
221 - can stat file with --cid-base=base32 (no-daemon, raw-leaves) Success 0.076
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 221 - can stat file with --cid-base=base32 (no-daemon, raw-leaves)
222 - stat output looks good with --cid-base=base32 Success 0.010
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 222 - stat output looks good with --cid-base=base32
223 - can read file (no-daemon, raw-leaves) Success 0.083
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 223 - can read file (no-daemon, raw-leaves)
224 - output looks good (no-daemon, raw-leaves) Success 0.006
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 224 - output looks good (no-daemon, raw-leaves)
225 - can put another file into root (no-daemon, raw-leaves) Success 0.077
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 225 - can put another file into root (no-daemon, raw-leaves)
227 - can list dir Success 0.079
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 227 - can list dir
ok 227 - can list dir
228 - file shows up in root (no-daemon, raw-leaves) Success 0.036
System.out »
ok 228 - file shows up in root (no-daemon, raw-leaves)
229 - can read file (no-daemon, raw-leaves) Success 0.079
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 229 - can read file (no-daemon, raw-leaves)
230 - output looks good (no-daemon, raw-leaves) Success 0.007
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 230 - output looks good (no-daemon, raw-leaves)
231 - can make deep directory (no-daemon, raw-leaves) Success 0.082
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 231 - can make deep directory (no-daemon, raw-leaves)
233 - can list dir Success 0.093
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 233 - can list dir
ok 233 - can list dir
234 - dir entries look good Success 0.009
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 234 - dir entries look good
235 - can list dir Success 0.065
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 235 - can list dir
236 - dir entries look good Success 0.009
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 236 - dir entries look good
237 - can list dir Success 0.067
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 237 - can list dir
238 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 238 - dir entries look good
239 - can list dir Success 0.065
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 239 - can list dir
240 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 240 - dir entries look good
241 - can list dir Success 0.064
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 241 - can list dir
242 - directory was created correctly (no-daemon, raw-leaves) Success 0.030
System.out »
ok 242 - directory was created correctly (no-daemon, raw-leaves)
243 - dir has correct name Success 0.128
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 243 - dir has correct name
244 - can copy file into new dir (no-daemon, raw-leaves) Success 0.067
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 244 - can copy file into new dir (no-daemon, raw-leaves)
245 - can copy file into deep dir using -p flag (no-daemon, raw-leaves) Success 0.069
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 245 - can copy file into deep dir using -p flag (no-daemon, raw-leaves)
246 - file copied into deep dir exists (no-daemon, raw-leaves) Success 0.064
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 246 - file copied into deep dir exists (no-daemon, raw-leaves)
247 - cleanup deep cp -p test (no-daemon, raw-leaves) Success 0.059
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 247 - cleanup deep cp -p test (no-daemon, raw-leaves)
248 - can read file (no-daemon, raw-leaves) Success 0.068
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 248 - can read file (no-daemon, raw-leaves)
249 - output looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 249 - output looks good (no-daemon, raw-leaves)
251 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 251 - can list dir
ok 251 - can list dir
252 - file shows up in dir (no-daemon, raw-leaves) Success 0.027
System.out »
ok 252 - file shows up in dir (no-daemon, raw-leaves)
253 - can remove file (no-daemon, raw-leaves) Success 0.064
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 253 - can remove file (no-daemon, raw-leaves)
255 - can list dir Success 0.059
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 255 - can list dir
ok 255 - can list dir
256 - file no longer appears (no-daemon, raw-leaves) Success 0.029
System.out »
ok 256 - file no longer appears (no-daemon, raw-leaves)
257 - can remove dir (no-daemon, raw-leaves) Success 0.067
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 257 - can remove dir (no-daemon, raw-leaves)
259 - can list dir Success 0.059
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 259 - can list dir
ok 259 - can list dir
260 - dir no longer appears (no-daemon, raw-leaves) Success 0.028
System.out »
ok 260 - dir no longer appears (no-daemon, raw-leaves)
261 - can remove file from root (no-daemon, raw-leaves) Success 0.071
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 261 - can remove file from root (no-daemon, raw-leaves)
263 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 263 - can list dir
ok 263 - can list dir
264 - file no longer appears (no-daemon, raw-leaves) Success 0.028
System.out »
ok 264 - file no longer appears (no-daemon, raw-leaves)
265 - check root hash (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 265 - check root hash (no-daemon, raw-leaves)
266 - cannot remove root (no-daemon, raw-leaves) Success 0.103
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 266 - cannot remove root (no-daemon, raw-leaves)
System.err »
Error: can't remove some files
267 - check root hash was not changed (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 267 - check root hash was not changed (no-daemon, raw-leaves)
268 - read from offset works (no-daemon, raw-leaves) Success 0.071
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 268 - read from offset works (no-daemon, raw-leaves)
269 - output looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 269 - output looks good (no-daemon, raw-leaves)
270 - read with size works (no-daemon, raw-leaves) Success 0.161
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 270 - read with size works (no-daemon, raw-leaves)
271 - output looks good (no-daemon, raw-leaves) Success 0.006
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 271 - output looks good (no-daemon, raw-leaves)
272 - cannot read from negative offset (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 272 - cannot read from negative offset (no-daemon, raw-leaves)
System.err »
Error: cannot specify negative offset
273 - read from offset 0 works (no-daemon, raw-leaves) Success 0.084
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 273 - read from offset 0 works (no-daemon, raw-leaves)
274 - output looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 274 - output looks good (no-daemon, raw-leaves)
275 - read last byte works (no-daemon, raw-leaves) Success 0.089
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 275 - read last byte works (no-daemon, raw-leaves)
276 - output looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 276 - output looks good (no-daemon, raw-leaves)
277 - offset past end of file fails (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 277 - offset past end of file fails (no-daemon, raw-leaves)
System.err »
Error: offset was past end of file (5 > 4)
278 - cannot read negative count bytes (no-daemon, raw-leaves) Success 0.069
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 278 - cannot read negative count bytes (no-daemon, raw-leaves)
System.err »
Error: Unknown Command "read"
279 - reading zero bytes prints nothing (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 279 - reading zero bytes prints nothing (no-daemon, raw-leaves)
280 - output looks good (no-daemon, raw-leaves) Success 0.006
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 280 - output looks good (no-daemon, raw-leaves)
281 - count > len(file) prints entire file (no-daemon, raw-leaves) Success 0.069
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 281 - count > len(file) prints entire file (no-daemon, raw-leaves)
282 - output looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 282 - output looks good (no-daemon, raw-leaves)
283 - can write file (no-daemon, raw-leaves) Success 0.068
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 283 - can write file (no-daemon, raw-leaves)
285 - can list dir Success 0.066
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 285 - can list dir
ok 285 - can list dir
286 - file was created (no-daemon, raw-leaves) Success 0.030
System.out »
ok 286 - file was created (no-daemon, raw-leaves)
287 - can read file we just wrote (no-daemon, raw-leaves) Success 0.064
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 287 - can read file we just wrote (no-daemon, raw-leaves)
288 - can write to offset (no-daemon, raw-leaves) Success 0.098
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 288 - can write to offset (no-daemon, raw-leaves)
289 - file looks correct (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 289 - file looks correct (no-daemon, raw-leaves)
290 - file hash correct (no-daemon, raw-leaves) Success 0.066
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 290 - file hash correct (no-daemon, raw-leaves)
291 - can't write to negative offset (no-daemon, raw-leaves) Success 0.072
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 291 - can't write to negative offset (no-daemon, raw-leaves)
System.err »
Error: cannot have negative write offset
292 - verify file was not changed (no-daemon, raw-leaves) Success 0.064
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 292 - verify file was not changed (no-daemon, raw-leaves)
293 - write new file for testing (no-daemon, raw-leaves) Success 0.074
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 293 - write new file for testing (no-daemon, raw-leaves)
294 - write to offset past end works (no-daemon, raw-leaves) Success 0.067
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 294 - write to offset past end works (no-daemon, raw-leaves)
295 - can read file (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 295 - can read file (no-daemon, raw-leaves)
296 - output looks good (no-daemon, raw-leaves) Success 0.007
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 296 - output looks good (no-daemon, raw-leaves)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.4877e-05 s, 201 kB/s
297 - cleanup (no-daemon, raw-leaves) Success 0.067
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 297 - cleanup (no-daemon, raw-leaves)
298 - cannot write to directory (no-daemon, raw-leaves) Success 0.126
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 298 - cannot write to directory (no-daemon, raw-leaves)
System.err »
Error: /cats was not a file
299 - verify dir was not changed (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 299 - verify dir was not changed (no-daemon, raw-leaves)
300 - cannot write to nonexistent path (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 300 - cannot write to nonexistent path (no-daemon, raw-leaves)
System.err »
Error: file does not exist
302 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 302 - can list dir
ok 302 - can list dir
303 - no new paths were created (no-daemon, raw-leaves) Success 0.027
System.out »
ok 303 - no new paths were created (no-daemon, raw-leaves)
304 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.004
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 304 - 'ipfs daemon' is running when WITH_DAEMON is set
305 - write 'no-flush' succeeds (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 305 - write 'no-flush' succeeds (no-daemon, raw-leaves)
306 - root hash not bubbled up yet (no-daemon, raw-leaves) Success 0.004
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 306 - root hash not bubbled up yet (no-daemon, raw-leaves)
307 - changes bubbled up to root on inspection (no-daemon, raw-leaves) Success 0.070
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 307 - changes bubbled up to root on inspection (no-daemon, raw-leaves)
308 - root hash looks good (no-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 308 - root hash looks good (no-daemon, raw-leaves)
309 - /cats hash looks good (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 309 - /cats hash looks good (no-daemon, raw-leaves)
310 - flush root succeeds (no-daemon, raw-leaves) Success 0.060
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmTHzLiSouBHVTssS8xRzmfWGAvTGhPEjtPdB6pWMQdxJX"}
ok 310 - flush root succeeds (no-daemon, raw-leaves)
311 - can mv dir (no-daemon, raw-leaves) Success 0.059
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 311 - can mv dir (no-daemon, raw-leaves)
312 - can mv dir and dest dir is / (no-daemon, raw-leaves) Success 0.061
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 312 - can mv dir and dest dir is / (no-daemon, raw-leaves)
313 - can mv dir and dest dir path has no trailing slash (no-daemon, raw-leaves) Success 0.060
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 313 - can mv dir and dest dir path has no trailing slash (no-daemon, raw-leaves)
315 - can list dir Success 0.066
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 315 - can list dir
ok 315 - can list dir
316 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 316 - dir entries look good
317 - can list dir Success 0.063
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 317 - can list dir
318 - mv worked (no-daemon, raw-leaves) Success 0.028
System.out »
ok 318 - mv worked (no-daemon, raw-leaves)
319 - cleanup, remove 'cats' (no-daemon, raw-leaves) Success 0.061
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 319 - cleanup, remove 'cats' (no-daemon, raw-leaves)
321 - can list dir Success 0.064
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 321 - can list dir
ok 321 - can list dir
322 - cleanup looks good (no-daemon, raw-leaves) Success 0.028
System.out »
ok 322 - cleanup looks good (no-daemon, raw-leaves)
323 - create a new file (no-daemon, raw-leaves) Success 0.066
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 323 - create a new file (no-daemon, raw-leaves)
324 - truncate and write over that file (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 324 - truncate and write over that file (no-daemon, raw-leaves)
325 - output looks good (no-daemon, raw-leaves) Success 0.063
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 325 - output looks good (no-daemon, raw-leaves)
326 - file hash correct (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 326 - file hash correct (no-daemon, raw-leaves)
327 - cleanup (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 327 - cleanup (no-daemon, raw-leaves)
328 - mkdir --flush works (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 328 - mkdir --flush works (no-daemon, raw-leaves)
329 - mkdir --flush works a second time (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 329 - mkdir --flush works a second time (no-daemon, raw-leaves)
331 - can list dir Success 0.059
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 331 - can list dir
ok 331 - can list dir
332 - dir looks right (no-daemon, raw-leaves) Success 0.027
System.out »
ok 332 - dir looks right (no-daemon, raw-leaves)
334 - can list dir Success 0.069
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 334 - can list dir
ok 334 - can list dir
335 - child dir looks right (no-daemon, raw-leaves) Success 0.028
System.out »
ok 335 - child dir looks right (no-daemon, raw-leaves)
336 - cleanup (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 336 - cleanup (no-daemon, raw-leaves)
338 - can list dir Success 0.073
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 338 - can list dir
ok 338 - can list dir
339 - child dir looks right (no-daemon, raw-leaves) Success 0.027
System.out »
ok 339 - child dir looks right (no-daemon, raw-leaves)
340 - create and remove dir (no-daemon, raw-leaves) Success 0.128
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 340 - create and remove dir (no-daemon, raw-leaves)
341 - create test file (no-daemon, raw-leaves) Success 0.064
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 341 - create test file (no-daemon, raw-leaves)
342 - copy test file onto test dir (no-daemon, raw-leaves) Success 0.065
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 342 - copy test file onto test dir (no-daemon, raw-leaves)
343 - test /test_dir (no-daemon, raw-leaves) Success 0.059
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 343 - test /test_dir (no-daemon, raw-leaves)
344 - clean up /test_dir and /test_file (no-daemon, raw-leaves) Success 0.130
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 344 - clean up /test_dir and /test_file (no-daemon, raw-leaves)
345 - make a directory and a file (no-daemon, raw-leaves) Success 0.136
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 345 - make a directory and a file (no-daemon, raw-leaves)
346 - copy a file into a directory (no-daemon, raw-leaves) Success 0.076
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 346 - copy a file into a directory (no-daemon, raw-leaves)
347 - file made it into directory (no-daemon, raw-leaves) Success 0.074
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 347 - file made it into directory (no-daemon, raw-leaves)
348 - test copy --force overwrites files Success 0.373
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 348 - test copy --force overwrites files
349 - clean up Success 0.115
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 349 - clean up
350 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, raw-leaves) Success 0.069
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 350 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, raw-leaves)
System.err »
Error: file does not exist
351 - can write file and create intermediate directories (no-daemon, raw-leaves) Success 0.145
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 351 - can write file and create intermediate directories (no-daemon, raw-leaves)
352 - can write file and create intermediate directories with short flags (no-daemon, raw-leaves) Success 0.127
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 352 - can write file and create intermediate directories with short flags (no-daemon, raw-leaves)
353 - can write another file in the same directory with -e -p (no-daemon, raw-leaves) Success 0.128
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 353 - can write another file in the same directory with -e -p (no-daemon, raw-leaves)
354 - clean up (no-daemon, raw-leaves) Success 0.062
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 354 - clean up (no-daemon, raw-leaves)
356 - can list dir Success 0.063
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 356 - can list dir
ok 356 - can list dir
357 - root mfs entry is empty (no-daemon, raw-leaves) Success 0.028
System.out »
ok 357 - root mfs entry is empty (no-daemon, raw-leaves)
358 - repo gc (no-daemon, raw-leaves) Success 0.066
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreiddxzzoljxwk66mcktgdibxv2tmbfdije75imaied6tlri3jdugta
removed bafkreidm26ihpfjazdxdsym7albjgs3f3btarunaz6eqqbfiaum2f3rylu
removed bafkreicupg676yp6l5vc7rt4npsupquwztoi4llnzdibivgwgbdm4uy2o4
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreiezd3c2wz5cgflebf3zejjusgsy4acqpbrvgjaxviwy754hdcwskq
removed bafkreid4q4ovpejky42u6dlv3b3qgyl64lc3jpx34fuoxo2faelr2ewriy
removed bafkreiefs4zls44cuccyhvvgp5meesdfaxsqx3tvjpm3k6wdvp4bxfyu6i
removed bafkreia4uba2drvobsfj6gk7khmxnlhvm5r5zw2igqgaws2g7mglmvo2e4
removed bafkreid5ifgj3efk2befabvduh7j76e322xiul235pyfwyqsc5aiar42ey
removed bafkreidrygncmnwsqznj7ey67v7g7gowv72zfmhm3ddp2gqvik2q4skwbq
removed bafkreid6ry7x72pm3ylusmbboelqzxyc6bsivqgtbpgfw5onusqbt7g6bm
removed bafkreibcpf4b6ovqbegmmej74tujmxskc5cjjqajg6qcckeyr7ktuhnh3i
removed bafkreiefzeug5nsg5ryxndkbdmars33772wz6rf5m7v63hl45sxoqpkpua
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreifg2gp5cm5egofktvkxlnfn7i5x5y7f3qw4jib23goto4o3zpenmi
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreib2al3nsfd23khpv4m6bphffdlt6ttcizxohsz6vpflt6ewlsul2m
removed bafkreigclwvstehpeugtx3ckslar6mmlslg7p4ttttdql76l46dgnxvizm
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreiewvj2wnmie7pxpw6a7s6rutypwvlvnr3vw266ubukxkbylqbwwxq
removed bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreigt37jy4wfjlh4qtqkyvbr2s5mxo7p2bmm2k4g4yfz5c2awaaq4qa
removed bafkreiadx3kwtmlc3uywzb6owdqgls2amklu3ukrt4xmvt4guwy33ct7uq
removed bafkreiglzp5gjffvpqevoddcht6sc7h2si6tmdzzdloxgmkkwtwftxlgo4
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreibxz26hpo43ez2mmqmttubatzuenq57tqg2jqcpybwwup7wwl5sze
removed bafkreicfszfnhfhi2q2u5jeqexvytm2b66r2nmwy4f6noekhyyhuje3ztq
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreihoom6pipvtzwutdsfh72tc2x6xwofrrjsst3ftemaj2cazbui3mq
removed bafkreifoybygix7fh3r3g5rqle3wcnhqldgdg4shzf4k3ulyw3gn7mabt4
removed bafkreifd2lzou4ohj5wme2qgpsvtjydqmflfea2rtuvcmetm53lbxmnh7i
removed bafkreiaol6qyc4rxopvjwk2fimjdqdukva4mgfyxnxtis6kdygkng3cdai
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreig75j5ce2yo2hnoyaf632hwog3cqgkgxrt5wmglyr3egra6zng2ku
removed bafkreic4ko36gl6nqkjsichxwxnahchdnrea7zzqezsyl2a57w4vh2zxuy
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreignzuj2hr727brqmlzgkmtrv45t2ipzpntir2u66pn7sr6bkepr3a
removed bafkreig4vobfucc6ndvouzlojnpod2r44ia4bnxzqycznoqjusppdnsx2q
removed bafkreihe6zgmqmeo4s2i2dzradn4sh4kkera4set3dcx47vuhzy3jn3dw4
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreickx2a5pjj5bsulirozelblebe3iuv6ji7vpibmjiybiqryzsgble
removed bafkreie6ykytm4aq7rsfo36hgo4s2uezouc7g3otleggr2rq43x7h4xrcu
removed bafkreidlf2ew32ekmkl5dl6sgeqnuygk5x2oi5kjbyuy5m3p5pooitfsqu
removed bafkreifn2ephslzt2bfgzmqraaobcpf3buhwpht4u2ezmszcmfizfgua5a
removed bafkreidrw67r4sfmqq52nkldpziedeeer2nn4ni7tkpqsgzyqlv5mnbzyy
removed bafkreibbgdql5nhdrpg4ih2pz6pbfhvx2pxi54mwkqi7aedyyi66ft2cdm
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreibjajgyepb7rkio5nyujeqe6556h66hv7wepbz7nro57hvf4xh6b4
removed bafkreiae6rzt7vtfuswsyxibfltzsl7blhxnolgni2o43nj36kvid4chii
removed bafkreigq6rnotwftrllyz3f7kvmiynuhb7gdghnhyvr4ysje4ijjhyomby
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreiaau5gkcnx2yijmvbgncpe2wvcp72265mgodkhbglfch52i5mv2vi
removed bafkreieyutxafkanmlpulb3mmsf4k65awioc3ccwdw7u2wbwkaok23idem
removed bafkreidazjkgsmc26phy4wvwicrcpeksttgo7y4r6xikirz7qatj4iq7ee
removed bafkreic5qs74k4brm2g32izdakjmjdt4e4kfmjzgbzebshkq3uyddcx7ea
removed bafkreib2h2kpccg5sd5oakkbcgfsyh3fsjmmevh3mzv7aifuubt7jocujy
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreigwhb3q36yrm37jv5fo2ap6r6eyohckqrxmlejrenex4xlnuxiy3e
removed bafkreickol7ijgms7pjduc7fvegsn2rn7ryqqwfrepsukyhyyapaev2q2e
removed bafkreialzgmyqqb2zz5thkpzfxvmpwqgifkt4ta3dz7uz6bsxh5r4spq2e
removed bafkreibg4bjfcuvfpx5uwkm5iuus3prv65tzxkmuwcqwercunyvlhbqi7e
removed bafkreibkrazpbejqh3qun7xfnsl7yofl74o4jwhxebpmtrcpavebokuqtm
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreigze7pg7yci3mkp4ibxesmjpazx7dfanpar4vtgkrid7t2drpkbue
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreicbv4ug3qfrolws6hfjgt6se6g6jiizembp7idqq7hke2bopu3s4m
removed bafkreieuesxlezdu5fdhci3jyimqxttkblbyk4rq6mnxn6rmluhxthkl4q
removed bafkreicdi4ukiefhr5lpyg2ythbvsnbw4ynlbrzr5eds3fpjnwzjaic6km
removed bafkreifkofxho3t27zf4lumzzpivzlu2kl557xkbuioqkdn7m5gsiqepp4
removed bafkreidffzv3pi7fxe5uantpa7ilpfrclk73kpvoqdkgixsvsjmcxx2d3y
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreifxcm3xkdhgjqgj66lllivxebpzlo7i325wlqk6424xaheqy2m4wy
removed bafkreigjnznfax4oa5havbmc6dxybgstcoziwj3wkracczz5oyrlixbfpe
removed bafkreieci56kvnoiy2zaof2aiwmhxntapqtw5nvpyrlvkz34nljwr5qdlu
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreig6sjjhlcoxfnkcxcnktusha2rchq5q7ydcxgaf2t7gatke6fqzn4
removed bafkreicjtpr2mt6uppojb4vvdomuqkrgmddtwvixeqri4lxirep5zfd5aq
removed bafkreifwa2wvccjywufrcnptoqxdzsa77pw5g3eqo2u7chgv6fn3bwama4
removed bafkreib2ixtll5rmuuquqggjot5h4pwe5vvuqu5t5n6c76skezmhhhiaxm
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreidfsj6ukryu2afxas25nxdrgnqnzaiqskpogzjmhbz4pqyprh6d54
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiasuypu4fz7woqrybowi4pxi4upoyrrwss7zwlgptxtv6d2hlsnyi
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreicf6iyjzar3x236rrv5a536hk37eahdorwicnzoj3z4vfs3lv7hlu
removed bafkreicpuxevnfqe6r7ctxubsx2q6i6hi6wwka3xnxr7xmvjew4ex3zxly
removed bafkreigblak2rn2wguizmooprpt76l7jd4dbhkywilywc7cxhlshtcu3oi
removed bafkreia4q63he72sgzrn64kpa2uu5it7utmqkdby6t3xck6umy77x7p2ae
removed bafkreieadpu7t6hefr44lz3n4t4dsmvq7ot7efxpt2dva6a4ua7mqpha6e
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreid5ornqwmx3rpuve3ldlfepgpye2dffropimlx275sqt4ghhh664y
removed bafkreigihdj3gr535vziknlja27nro3ad3l53msxkyq4s3gomrutw5xbcm
removed bafkreidp5ewuukicgeeseufgkrl6lndq6ngn7thcigx6tcb7ecgbdeekkm
removed bafkreid2wpo3g4xrlteciii67dlju5vjp3sjgskmexby74bapd3ruswehu
removed bafkreif7d6es5ifhkjzi3mifqv2c2fghiiahm5f3hylm3dq7wn35lr6ehy
removed bafkreihrq7xnnjwcxxqy2ctd67t2swioluy3puqv6f76eeda25sozhba3e
ok 358 - repo gc (no-daemon, raw-leaves)
360 - can list dir Success 0.058
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 360 - can list dir
ok 360 - can list dir
361 - remove file forcibly Success 0.028
System.out »
ok 361 - remove file forcibly
363 - can list dir Success 0.065
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 363 - can list dir
ok 363 - can list dir
364 - remove multiple files forcibly Success 0.029
System.out »
ok 364 - remove multiple files forcibly
366 - can list dir Success 0.062
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 366 - can list dir
ok 366 - can list dir
367 - remove directory forcibly Success 0.030
System.out »
ok 367 - remove directory forcibly
369 - can list dir Success 0.060
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 369 - can list dir
ok 369 - can list dir
370 - remove multiple directories forcibly Success 0.030
System.out »
ok 370 - remove multiple directories forcibly
371 - remove multiple files Success 0.196
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 371 - remove multiple files
373 - can list dir Success 0.062
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 373 - can list dir
ok 373 - can list dir
374 - remove multiple directories Success 0.028
System.out »
ok 374 - remove multiple directories
375 - remove nonexistent path forcibly Success 0.064
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 375 - remove nonexistent path forcibly
376 - remove deeply nonexistent path forcibly Success 0.072
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 376 - remove deeply nonexistent path forcibly
378 - can list dir Success 0.060
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 378 - can list dir
ok 378 - can list dir
System.err »
Error: can't remove some files
379 - remove multiple files (with nonexistent one) Success 0.028
System.out »
ok 379 - remove multiple files (with nonexistent one)
380 - can update root hash to cidv1 Success 0.119
System.out »
expecting success: 
    ipfs files chcid --cid-version=1 / &&
    echo bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 > hash_expect &&
    ipfs files stat --hash / > hash_actual &&
    test_cmp hash_expect hash_actual
  
ok 380 - can update root hash to cidv1
381 - can mkdir in root (no-daemon, cidv1 root) Success 0.065
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 381 - can mkdir in root (no-daemon, cidv1 root)
382 - 'files ls' lists root by default (no-daemon, cidv1 root) Success 0.064
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 382 - 'files ls' lists root by default (no-daemon, cidv1 root)
383 - directory was created (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 383 - directory was created (no-daemon, cidv1 root)
385 - can list dir Success 0.058
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 385 - can list dir
ok 385 - can list dir
386 - directory is empty (no-daemon, cidv1 root) Success 0.030
System.out »
ok 386 - directory is empty (no-daemon, cidv1 root)
387 - stat works (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 387 - stat works (no-daemon, cidv1 root)
388 - hash is first line of stat (no-daemon, cidv1 root) Success 0.063
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 - cats/
ok 388 - hash is first line of stat (no-daemon, cidv1 root)
389 - stat --hash gives only hash (no-daemon, cidv1 root) Success 0.064
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 389 - stat --hash gives only hash (no-daemon, cidv1 root)
390 - stat with multiple format options should fail (no-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 390 - stat with multiple format options should fail (no-daemon, cidv1 root)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
391 - compare hash option with format (no-daemon, cidv1 root) Success 0.124
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 391 - compare hash option with format (no-daemon, cidv1 root)
392 - compare size option with format (no-daemon, cidv1 root) Success 0.126
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 392 - compare size option with format (no-daemon, cidv1 root)
393 - check root hash (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 393 - check root hash (no-daemon, cidv1 root)
394 - stat works outside of MFS Success 0.057
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 394 - stat works outside of MFS
395 - stat compute the locality of a dag Success 0.060
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 395 - stat compute the locality of a dag
396 - cannot mkdir / (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 396 - cannot mkdir / (no-daemon, cidv1 root)
System.err »
Error: cannot create directory '/': Already exists
397 - check root hash was not changed (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 397 - check root hash was not changed (no-daemon, cidv1 root)
398 - can put files into directory (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 398 - can put files into directory (no-daemon, cidv1 root)
400 - can list dir Success 0.063
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 400 - can list dir
ok 400 - can list dir
401 - file shows up in directory (no-daemon, cidv1 root) Success 0.028
System.out »
ok 401 - file shows up in directory (no-daemon, cidv1 root)
402 - file has correct hash and size in directory (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 402 - file has correct hash and size in directory (no-daemon, cidv1 root)
403 - file has correct hash and size listed with -l Success 0.059
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 403 - file has correct hash and size listed with -l
404 - file has correct hash and size listed with --long Success 0.060
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 404 - file has correct hash and size listed with --long
405 - file has correct hash and size listed with -l --cid-base=base32 Success 0.062
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 405 - file has correct hash and size listed with -l --cid-base=base32
406 - file shows up with the correct name Success 0.062
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 406 - file shows up with the correct name
407 - can stat file (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 407 - can stat file (no-daemon, cidv1 root)
408 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 408 - stat output looks good
409 - can stat file with --cid-base=base32 (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 409 - can stat file with --cid-base=base32 (no-daemon, cidv1 root)
410 - stat output looks good with --cid-base=base32 Success 0.009
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 410 - stat output looks good with --cid-base=base32
411 - can read file (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 411 - can read file (no-daemon, cidv1 root)
412 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 412 - output looks good (no-daemon, cidv1 root)
413 - can put another file into root (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 413 - can put another file into root (no-daemon, cidv1 root)
415 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 415 - can list dir
ok 415 - can list dir
416 - file shows up in root (no-daemon, cidv1 root) Success 0.027
System.out »
ok 416 - file shows up in root (no-daemon, cidv1 root)
417 - can read file (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 417 - can read file (no-daemon, cidv1 root)
418 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 418 - output looks good (no-daemon, cidv1 root)
419 - can make deep directory (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 419 - can make deep directory (no-daemon, cidv1 root)
421 - can list dir Success 0.058
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 421 - can list dir
ok 421 - can list dir
422 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 422 - dir entries look good
423 - can list dir Success 0.059
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 423 - can list dir
424 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 424 - dir entries look good
425 - can list dir Success 0.060
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 425 - can list dir
426 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 426 - dir entries look good
427 - can list dir Success 0.058
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 427 - can list dir
428 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 428 - dir entries look good
429 - can list dir Success 0.061
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 429 - can list dir
430 - directory was created correctly (no-daemon, cidv1 root) Success 0.027
System.out »
ok 430 - directory was created correctly (no-daemon, cidv1 root)
431 - dir has correct name Success 0.117
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 431 - dir has correct name
432 - can copy file into new dir (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 432 - can copy file into new dir (no-daemon, cidv1 root)
433 - can copy file into deep dir using -p flag (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 433 - can copy file into deep dir using -p flag (no-daemon, cidv1 root)
434 - file copied into deep dir exists (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 434 - file copied into deep dir exists (no-daemon, cidv1 root)
435 - cleanup deep cp -p test (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 435 - cleanup deep cp -p test (no-daemon, cidv1 root)
436 - can read file (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 436 - can read file (no-daemon, cidv1 root)
437 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 437 - output looks good (no-daemon, cidv1 root)
439 - can list dir Success 0.059
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 439 - can list dir
ok 439 - can list dir
440 - file shows up in dir (no-daemon, cidv1 root) Success 0.027
System.out »
ok 440 - file shows up in dir (no-daemon, cidv1 root)
441 - can remove file (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 441 - can remove file (no-daemon, cidv1 root)
443 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 443 - can list dir
ok 443 - can list dir
444 - file no longer appears (no-daemon, cidv1 root) Success 0.028
System.out »
ok 444 - file no longer appears (no-daemon, cidv1 root)
445 - can remove dir (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 445 - can remove dir (no-daemon, cidv1 root)
447 - can list dir Success 0.062
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 447 - can list dir
ok 447 - can list dir
448 - dir no longer appears (no-daemon, cidv1 root) Success 0.028
System.out »
ok 448 - dir no longer appears (no-daemon, cidv1 root)
449 - can remove file from root (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 449 - can remove file from root (no-daemon, cidv1 root)
451 - can list dir Success 0.063
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 451 - can list dir
ok 451 - can list dir
452 - file no longer appears (no-daemon, cidv1 root) Success 0.027
System.out »
ok 452 - file no longer appears (no-daemon, cidv1 root)
453 - check root hash (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 453 - check root hash (no-daemon, cidv1 root)
454 - cannot remove root (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 454 - cannot remove root (no-daemon, cidv1 root)
System.err »
Error: can't remove some files
455 - check root hash was not changed (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 455 - check root hash was not changed (no-daemon, cidv1 root)
456 - read from offset works (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 456 - read from offset works (no-daemon, cidv1 root)
457 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 457 - output looks good (no-daemon, cidv1 root)
458 - read with size works (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 458 - read with size works (no-daemon, cidv1 root)
459 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 459 - output looks good (no-daemon, cidv1 root)
460 - cannot read from negative offset (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 460 - cannot read from negative offset (no-daemon, cidv1 root)
System.err »
Error: cannot specify negative offset
461 - read from offset 0 works (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 461 - read from offset 0 works (no-daemon, cidv1 root)
462 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 462 - output looks good (no-daemon, cidv1 root)
463 - read last byte works (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 463 - read last byte works (no-daemon, cidv1 root)
464 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 464 - output looks good (no-daemon, cidv1 root)
465 - offset past end of file fails (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 465 - offset past end of file fails (no-daemon, cidv1 root)
System.err »
Error: offset was past end of file (5 > 4)
466 - cannot read negative count bytes (no-daemon, cidv1 root) Success 0.045
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 466 - cannot read negative count bytes (no-daemon, cidv1 root)
System.err »
Error: Unknown Command "read"
467 - reading zero bytes prints nothing (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 467 - reading zero bytes prints nothing (no-daemon, cidv1 root)
468 - output looks good (no-daemon, cidv1 root) Success 0.004
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 468 - output looks good (no-daemon, cidv1 root)
469 - count > len(file) prints entire file (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 469 - count > len(file) prints entire file (no-daemon, cidv1 root)
470 - output looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 470 - output looks good (no-daemon, cidv1 root)
471 - can write file (no-daemon, cidv1 root) Success 0.057
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 471 - can write file (no-daemon, cidv1 root)
473 - can list dir Success 0.062
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 473 - can list dir
ok 473 - can list dir
474 - file was created (no-daemon, cidv1 root) Success 0.027
System.out »
ok 474 - file was created (no-daemon, cidv1 root)
475 - can read file we just wrote (no-daemon, cidv1 root) Success 0.058
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 475 - can read file we just wrote (no-daemon, cidv1 root)
476 - can write to offset (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 476 - can write to offset (no-daemon, cidv1 root)
477 - file looks correct (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 477 - file looks correct (no-daemon, cidv1 root)
478 - file hash correct (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 478 - file hash correct (no-daemon, cidv1 root)
479 - can't write to negative offset (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 479 - can't write to negative offset (no-daemon, cidv1 root)
System.err »
Error: cannot have negative write offset
480 - verify file was not changed (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 480 - verify file was not changed (no-daemon, cidv1 root)
481 - write new file for testing (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 481 - write new file for testing (no-daemon, cidv1 root)
482 - write to offset past end works (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 482 - write to offset past end works (no-daemon, cidv1 root)
483 - can read file (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 483 - can read file (no-daemon, cidv1 root)
484 - output looks good (no-daemon, cidv1 root) Success 0.007
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 484 - output looks good (no-daemon, cidv1 root)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.4279e-05 s, 206 kB/s
485 - cleanup (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 485 - cleanup (no-daemon, cidv1 root)
486 - cannot write to directory (no-daemon, cidv1 root) Success 0.119
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 486 - cannot write to directory (no-daemon, cidv1 root)
System.err »
Error: /cats was not a file
487 - verify dir was not changed (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 487 - verify dir was not changed (no-daemon, cidv1 root)
488 - cannot write to nonexistent path (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 488 - cannot write to nonexistent path (no-daemon, cidv1 root)
System.err »
Error: file does not exist
490 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 490 - can list dir
ok 490 - can list dir
491 - no new paths were created (no-daemon, cidv1 root) Success 0.027
System.out »
ok 491 - no new paths were created (no-daemon, cidv1 root)
492 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.003
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 492 - 'ipfs daemon' is running when WITH_DAEMON is set
493 - write 'no-flush' succeeds (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 493 - write 'no-flush' succeeds (no-daemon, cidv1 root)
494 - root hash not bubbled up yet (no-daemon, cidv1 root) Success 0.004
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 494 - root hash not bubbled up yet (no-daemon, cidv1 root)
495 - changes bubbled up to root on inspection (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 495 - changes bubbled up to root on inspection (no-daemon, cidv1 root)
496 - root hash looks good (no-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 496 - root hash looks good (no-daemon, cidv1 root)
497 - /cats hash looks good (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 497 - /cats hash looks good (no-daemon, cidv1 root)
498 - flush root succeeds (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"bafybeickjecu37qv6ue54ofk3n4rpm4g4abuofz7yc4qn4skffy263kkou"}
ok 498 - flush root succeeds (no-daemon, cidv1 root)
499 - can mv dir (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 499 - can mv dir (no-daemon, cidv1 root)
500 - can mv dir and dest dir is / (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 500 - can mv dir and dest dir is / (no-daemon, cidv1 root)
501 - can mv dir and dest dir path has no trailing slash (no-daemon, cidv1 root) Success 0.063
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 501 - can mv dir and dest dir path has no trailing slash (no-daemon, cidv1 root)
503 - can list dir Success 0.058
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 503 - can list dir
ok 503 - can list dir
504 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 504 - dir entries look good
505 - can list dir Success 0.057
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 505 - can list dir
506 - mv worked (no-daemon, cidv1 root) Success 0.026
System.out »
ok 506 - mv worked (no-daemon, cidv1 root)
507 - cleanup, remove 'cats' (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 507 - cleanup, remove 'cats' (no-daemon, cidv1 root)
509 - can list dir Success 0.059
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 509 - can list dir
ok 509 - can list dir
510 - cleanup looks good (no-daemon, cidv1 root) Success 0.027
System.out »
ok 510 - cleanup looks good (no-daemon, cidv1 root)
511 - create a new file (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 511 - create a new file (no-daemon, cidv1 root)
512 - truncate and write over that file (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 512 - truncate and write over that file (no-daemon, cidv1 root)
513 - output looks good (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 513 - output looks good (no-daemon, cidv1 root)
514 - file hash correct (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 514 - file hash correct (no-daemon, cidv1 root)
515 - cleanup (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 515 - cleanup (no-daemon, cidv1 root)
516 - mkdir --flush works (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 516 - mkdir --flush works (no-daemon, cidv1 root)
517 - mkdir --flush works a second time (no-daemon, cidv1 root) Success 0.058
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 517 - mkdir --flush works a second time (no-daemon, cidv1 root)
519 - can list dir Success 0.058
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 519 - can list dir
ok 519 - can list dir
520 - dir looks right (no-daemon, cidv1 root) Success 0.027
System.out »
ok 520 - dir looks right (no-daemon, cidv1 root)
522 - can list dir Success 0.060
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 522 - can list dir
ok 522 - can list dir
523 - child dir looks right (no-daemon, cidv1 root) Success 0.027
System.out »
ok 523 - child dir looks right (no-daemon, cidv1 root)
524 - cleanup (no-daemon, cidv1 root) Success 0.060
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 524 - cleanup (no-daemon, cidv1 root)
526 - can list dir Success 0.062
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 526 - can list dir
ok 526 - can list dir
527 - child dir looks right (no-daemon, cidv1 root) Success 0.027
System.out »
ok 527 - child dir looks right (no-daemon, cidv1 root)
528 - create and remove dir (no-daemon, cidv1 root) Success 0.115
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 528 - create and remove dir (no-daemon, cidv1 root)
529 - create test file (no-daemon, cidv1 root) Success 0.064
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 529 - create test file (no-daemon, cidv1 root)
530 - copy test file onto test dir (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 530 - copy test file onto test dir (no-daemon, cidv1 root)
531 - test /test_dir (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 531 - test /test_dir (no-daemon, cidv1 root)
532 - clean up /test_dir and /test_file (no-daemon, cidv1 root) Success 0.114
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 532 - clean up /test_dir and /test_file (no-daemon, cidv1 root)
533 - make a directory and a file (no-daemon, cidv1 root) Success 0.119
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 533 - make a directory and a file (no-daemon, cidv1 root)
534 - copy a file into a directory (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 534 - copy a file into a directory (no-daemon, cidv1 root)
535 - file made it into directory (no-daemon, cidv1 root) Success 0.061
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 535 - file made it into directory (no-daemon, cidv1 root)
536 - test copy --force overwrites files Success 0.284
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 536 - test copy --force overwrites files
537 - clean up Success 0.120
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 537 - clean up
538 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, cidv1 root) Success 0.062
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 538 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, cidv1 root)
System.err »
Error: file does not exist
539 - can write file and create intermediate directories (no-daemon, cidv1 root) Success 0.121
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 539 - can write file and create intermediate directories (no-daemon, cidv1 root)
540 - can write file and create intermediate directories with short flags (no-daemon, cidv1 root) Success 0.122
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 540 - can write file and create intermediate directories with short flags (no-daemon, cidv1 root)
541 - can write another file in the same directory with -e -p (no-daemon, cidv1 root) Success 0.117
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 541 - can write another file in the same directory with -e -p (no-daemon, cidv1 root)
542 - clean up (no-daemon, cidv1 root) Success 0.059
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 542 - clean up (no-daemon, cidv1 root)
544 - can list dir Success 0.058
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 544 - can list dir
ok 544 - can list dir
545 - root mfs entry is empty (no-daemon, cidv1 root) Success 0.027
System.out »
ok 545 - root mfs entry is empty (no-daemon, cidv1 root)
546 - repo gc (no-daemon, cidv1 root) Success 0.066
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreidnkdei2vszhyva5osm5cr7yx4kkwu42zbgcd3kbq72wlwmaci4ci
removed bafkreidm26ihpfjazdxdsym7albjgs3f3btarunaz6eqqbfiaum2f3rylu
removed bafkreickjecu37qv6ue54ofk3n4rpm4g4abuofz7yc4qn4skffy263kkou
removed bafkreia5zadkk7i6j3eoq4pzma4burs62tw4r5sexhmhw34txzwezvuxki
removed bafkreih5ch4wc2z23dippmznh4nvfqdl3zpeeoyrqa3btsltbbaa6qeri4
removed bafkreiefs4zls44cuccyhvvgp5meesdfaxsqx3tvjpm3k6wdvp4bxfyu6i
removed bafkreifphwgsag2rer5pgl5ygyiefb7fbflsnkobmznyra7vycr4im6l2q
removed bafkreia2hlmgzjqfha4zt3gvtevlriin2mqovtpziow3dirxarntauawbi
removed bafkreigydxrwciql4ildsp2mueeje4x53fdonxrkendj72po7tlq4hhi7y
removed bafkreici7dp3ipjnqvw746uvjxpdyqajcgkzhrp6u3cpckxqpeihwnrize
removed bafkreiex562jkoyfy5tnkioziwu2tvqqjfibkft7p66hoiyxpmlsl43glq
removed bafkreib3jdutduiwd6b45zccl5zprbfdh2ipvmvyrgr5rmxilm5irgp47u
removed bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
removed bafkreigsyfj5w5alckrrfqiawcozwe6r5fpywof6pjvdz5dq2whv3gix5q
removed bafkreie6hkwps7h3uq2jmpe2sbn7n2fi6chchgu6pj3o5kcavxfa34zqga
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreiadx3kwtmlc3uywzb6owdqgls2amklu3ukrt4xmvt4guwy33ct7uq
removed bafkreieqspyngorj3svynrt24tevcnkn26vw4igselyvzp4siaigum7k7q
removed bafkreibxz26hpo43ez2mmqmttubatzuenq57tqg2jqcpybwwup7wwl5sze
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreidhjv23plc2txhq6w6ds7f4hexwcdoqmhzai4jssww4js3j5gbfdy
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreifoybygix7fh3r3g5rqle3wcnhqldgdg4shzf4k3ulyw3gn7mabt4
removed bafkreihv4w4b4jxknoog4uzbymfgfbfwrrn7trmpaix25vq6gi6v2ju2gq
removed bafkreifd2lzou4ohj5wme2qgpsvtjydqmflfea2rtuvcmetm53lbxmnh7i
removed bafkreifvhusytypac6hxf4337lz67tjtu3ubwnwqbqplt2g3yo42i5ahmu
removed bafkreidhz6lmkmddwb5pd7uftqpzhhkhyijcmsa35rtp7swqqhxapeqwya
removed bafkreievl72w6bfysoxyfhanqyqqptbuc3s7ipkihzdjcxgskdfajbv5cm
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreihdxs322ni6igcntvcbln247nfy4oak6mfquiiwlx32lymysrk4om
removed bafkreib3byswpfv4attepk5gcs5mbpya42cotdgleuicbtqmyjdce2behm
removed bafkreidoybdijxhrmetlgyw4gcgljz62yocfocryjgugilmgbx2ifwecve
removed bafkreigg675mq2uw7jgrkjhrxzulwadtktjtxbdlcin5ggihyg7dqq4cou
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreigfcey4sydmfi7wdh4aavga64u7tbzbl5z6ubr3nzgwtdauzvnidy
removed bafkreieu5xajzkkoqkrl36m2tdic225cnlh77fmn6apfz6igl5jco5gf7q
removed bafkreihk2lofriafirfzkaystqhbd3ak6te5lauzwz2n4q6tzuplr5mlam
removed bafkreifwulhpk2rezh7nbgz2dhstuold7epnsludlkjnnpkj3uzba2tqkm
removed bafkreignzuj2hr727brqmlzgkmtrv45t2ipzpntir2u66pn7sr6bkepr3a
removed bafkreiff3ekaqi3qmpopkssjbho3w634vh7nk7k6ryvmimynh6j3t3myba
removed bafkreib67blkdqpr62odv4vywezjrqp3nudfmsndddbmvwhlsz7h6ngqbq
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreie6ykytm4aq7rsfo36hgo4s2uezouc7g3otleggr2rq43x7h4xrcu
removed bafkreib564qcnchx4gvt53pjfhhmhhhak2lb3zlhtzbezfu4wokhxdazey
removed bafkreicpuphtpxx4e72ptqyiaqvbr7adff3ftjg2tr2lvoynuatnlxbu4y
removed bafkreidpqonaqym6bb4orwyzqvavsuvt6ak7mptbfevt2g6fzqaav2tcqe
removed bafkreia76s4n5orei4haioy4qvhyogcdfijbw7szh6ppvrdijbrallbds4
removed bafkreibz4x7xtqiyfmeesjinig6b6hv7hnjrsh7kgvamfzfv2dwzh54qsy
removed bafkreibjajgyepb7rkio5nyujeqe6556h66hv7wepbz7nro57hvf4xh6b4
removed bafkreiae6rzt7vtfuswsyxibfltzsl7blhxnolgni2o43nj36kvid4chii
removed bafkreie5tdb2q7daqtxgcnlzn4k5fdn346cggri2u4eghbluw4xdp4ovx4
removed bafkreifa4rx4em6cvzhnuce2hbuvntrbtzcn36g3xrm4xtvupqevjggj2m
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreiee7xavzt76jfjzfxwyechipmattu4rigxelary76cuyz67dle5oq
removed bafkreiaau5gkcnx2yijmvbgncpe2wvcp72265mgodkhbglfch52i5mv2vi
removed bafkreidazjkgsmc26phy4wvwicrcpeksttgo7y4r6xikirz7qatj4iq7ee
removed bafkreibridwovtxxdhnalcyhs3ukc5bcmsbou3ro6j4zvk6kmrvmlnc4ny
removed bafkreig24myflgc5gkk5rpkij2f2uj753tdcodet2tmdfp7qniyamc6aeq
removed bafkreihg2fyjzkaywoytarxljskwog5qyyv4plb4nclhvqqskwao7aip3m
removed bafkreib7v7rxyqanctwuu6ihdqon2wuqs3jo2xm5u3uvxe36uyo272q6ra
removed bafkreigwhb3q36yrm37jv5fo2ap6r6eyohckqrxmlejrenex4xlnuxiy3e
removed bafkreickol7ijgms7pjduc7fvegsn2rn7ryqqwfrepsukyhyyapaev2q2e
removed bafkreibkrazpbejqh3qun7xfnsl7yofl74o4jwhxebpmtrcpavebokuqtm
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreicbv4ug3qfrolws6hfjgt6se6g6jiizembp7idqq7hke2bopu3s4m
removed bafkreihsqinttigpskqqj63wgalrny3lifvqv5ml7igrirdhlcf73l3wvm
removed bafkreieuesxlezdu5fdhci3jyimqxttkblbyk4rq6mnxn6rmluhxthkl4q
removed bafkreicdi4ukiefhr5lpyg2ythbvsnbw4ynlbrzr5eds3fpjnwzjaic6km
removed bafkreidffzv3pi7fxe5uantpa7ilpfrclk73kpvoqdkgixsvsjmcxx2d3y
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreigjnznfax4oa5havbmc6dxybgstcoziwj3wkracczz5oyrlixbfpe
removed bafkreiaxxhsg5lbitgkc3gaeyaqfgncms6jngmiqwhztxz3vavwfis3wd4
removed bafkreifizn27sh37ixn32ovbc4zfjjah2ayf6mxr5gi4lh2powojwyl6m4
removed bafkreifv3tzihtebwgwf2mhzvffcrourvqbolylslwgxdflwr4w3szm56q
removed bafkreigualhou4mbga3w3rg2linqt7lv6npkqsnccx3je5japhtuufun64
removed bafkreiguqbofelegug22xzcdolp7gypz4dsq2bfpstvfcwtxmqjtfkddqi
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreid7d2tgynb3lcfgiqdln5vo73dhzw57febadhgu4cqrhm5vltvnbe
removed bafkreigbzvcn3e3z3444gyjzgya3egk3dudqebv55jtxa5cqypf3th35bi
removed bafkreihul57lz5guaj4bmlzbmgcgjwbjwflxazyry4abn7rdkgue7rltfi
removed bafkreia6n7eify4hgxryqb6otv3swe6didtlozfxjtjne3zn6wsqq3nit4
removed bafkreifwa2wvccjywufrcnptoqxdzsa77pw5g3eqo2u7chgv6fn3bwama4
removed bafkreihr4qflvra6woh6yp7x4xrnjvoy6e76kjcp7kfwbhb2xdjngpy6nm
removed bafkreidmuntzjqvwkefbqyjxtva6oei2qcj3vs2wxity5skvuljx3mtu4e
removed bafkreifvfbe3xllmeszp5xjabjmthlmn5rglpnbqt6h7izwex4wuopg3xm
removed bafkreidqgq4opd22ebmgeaamamtsisnbvtciw5isskzohfod5zuiqwgtmm
removed bafkreihfuaeebzuuxjp7ew35spwdrbp5fp4h5ivmymenjjm7saljc3rvoe
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiasuypu4fz7woqrybowi4pxi4upoyrrwss7zwlgptxtv6d2hlsnyi
removed bafkreicdvdlmv6ytpjhl5ab7innkudxp7rqfkj2pzmfq3abe7vahy5zc3m
removed bafkreiacwqi3frf4gn7z3e3ne4c75zivmquisgf6cj6mn7ked6bmv5szum
removed bafkreicf6iyjzar3x236rrv5a536hk37eahdorwicnzoj3z4vfs3lv7hlu
removed bafkreihkmcrozi3rrfrv6dd3ra73oxwctwupj6x7xszycb5j4sp37lv7ke
removed bafkreicftpfcagidajr2r53ocmiopkgtbh7jchbjovznu4zpwwq4uh3r4i
removed bafkreia4q63he72sgzrn64kpa2uu5it7utmqkdby6t3xck6umy77x7p2ae
removed bafkreihjfzkik6iqwrkyfmu65mnerufsbiieeh3papbprhnle32srqokam
removed bafkreictm32bslwxcdm3wg2n6mcywlcvbg2f6qgaxkrk74p4maoa5rrtoe
removed bafkreib6aux45lrojb27j36zztzosbdldtklhvvmatwdbym4pki7jux2f4
removed bafkreieadpu7t6hefr44lz3n4t4dsmvq7ot7efxpt2dva6a4ua7mqpha6e
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreia42dhxxessq54nfxlmcv32dgd25iqqg4pyqoj4o3b72gmh35jbdq
removed bafkreiggqygwfs5k73amce2fcrrhaynnxqql7d7xctgxub7xqh34rjprca
removed bafkreiamvfmsc2jnmdhf4utdkvtv2q35zwkt26xyjauufrdwx33vqip3nq
ok 546 - repo gc (no-daemon, cidv1 root)
548 - can list dir Success 0.061
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 548 - can list dir
ok 548 - can list dir
549 - remove file forcibly Success 0.027
System.out »
ok 549 - remove file forcibly
551 - can list dir Success 0.063
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 551 - can list dir
ok 551 - can list dir
552 - remove multiple files forcibly Success 0.027
System.out »
ok 552 - remove multiple files forcibly
554 - can list dir Success 0.062
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 554 - can list dir
ok 554 - can list dir
555 - remove directory forcibly Success 0.027
System.out »
ok 555 - remove directory forcibly
557 - can list dir Success 0.059
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 557 - can list dir
ok 557 - can list dir
558 - remove multiple directories forcibly Success 0.027
System.out »
ok 558 - remove multiple directories forcibly
559 - remove multiple files Success 0.176
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 559 - remove multiple files
561 - can list dir Success 0.057
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 561 - can list dir
ok 561 - can list dir
562 - remove multiple directories Success 0.027
System.out »
ok 562 - remove multiple directories
563 - remove nonexistent path forcibly Success 0.058
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 563 - remove nonexistent path forcibly
564 - remove deeply nonexistent path forcibly Success 0.058
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 564 - remove deeply nonexistent path forcibly
566 - can list dir Success 0.061
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 566 - can list dir
ok 566 - can list dir
System.err »
Error: can't remove some files
567 - remove multiple files (with nonexistent one) Success 0.027
System.out »
ok 567 - remove multiple files (with nonexistent one)
568 - can update root hash back to cidv0 Success 0.116
System.out »
expecting success: 
    ipfs files chcid / --cid-version=0 &&
    echo QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn > hash_expect &&
    ipfs files stat --hash / > hash_actual &&
    test_cmp hash_expect hash_actual
  
ok 568 - can update root hash back to cidv0
569 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 569 - 'ipfs daemon' succeeds
570 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 570 - api file shows up
571 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 571 - set up address variables
572 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 572 - 'ipfs daemon' is ready
573 - can create some files for testing (with-daemon) Success 0.218
System.out »
expecting success: 
    create_files
  
ok 573 - can create some files for testing (with-daemon)
574 - can mkdir in root (with-daemon) Success 0.046
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 574 - can mkdir in root (with-daemon)
575 - 'files ls' lists root by default (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 575 - 'files ls' lists root by default (with-daemon)
576 - directory was created (with-daemon) Success 0.047
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 576 - directory was created (with-daemon)
578 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 578 - can list dir
ok 578 - can list dir
579 - directory is empty (with-daemon) Success 0.027
System.out »
ok 579 - directory is empty (with-daemon)
580 - stat works (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 580 - stat works (with-daemon)
581 - hash is first line of stat (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn - cats/
ok 581 - hash is first line of stat (with-daemon)
582 - stat --hash gives only hash (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 582 - stat --hash gives only hash (with-daemon)
583 - stat with multiple format options should fail (with-daemon) Success 0.047
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 583 - stat with multiple format options should fail (with-daemon)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
584 - compare hash option with format (with-daemon) Success 0.094
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 584 - compare hash option with format (with-daemon)
585 - compare size option with format (with-daemon) Success 0.094
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 585 - compare size option with format (with-daemon)
586 - check root hash (with-daemon) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 586 - check root hash (with-daemon)
587 - stat works outside of MFS Success 0.050
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmaNKtyrhM6axXhjuKzXCi7ghiEuAEZE6hcK8CTexxCimw
Size: 0
CumulativeSize: 176
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 587 - stat works outside of MFS
588 - stat compute the locality of a dag Success 0.051
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 588 - stat compute the locality of a dag
589 - cannot mkdir / (with-daemon) Success 0.050
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 589 - cannot mkdir / (with-daemon)
System.err »
Error: cannot create directory '/': Already exists
590 - check root hash was not changed (with-daemon) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 590 - check root hash was not changed (with-daemon)
591 - can put files into directory (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 591 - can put files into directory (with-daemon)
593 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 593 - can list dir
ok 593 - can list dir
594 - file shows up in directory (with-daemon) Success 0.027
System.out »
ok 594 - file shows up in directory (with-daemon)
595 - file has correct hash and size in directory (with-daemon) Success 0.049
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 595 - file has correct hash and size in directory (with-daemon)
596 - file has correct hash and size listed with -l Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 596 - file has correct hash and size listed with -l
597 - file has correct hash and size listed with --long Success 0.052
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 597 - file has correct hash and size listed with --long
598 - file has correct hash and size listed with -l --cid-base=base32 Success 0.053
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 598 - file has correct hash and size listed with -l --cid-base=base32
599 - file shows up with the correct name Success 0.051
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 599 - file shows up with the correct name
600 - can stat file (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 600 - can stat file (with-daemon)
601 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 601 - stat output looks good
602 - can stat file with --cid-base=base32 (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 602 - can stat file with --cid-base=base32 (with-daemon)
603 - stat output looks good with --cid-base=base32 Success 0.009
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 603 - stat output looks good with --cid-base=base32
604 - can read file (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 604 - can read file (with-daemon)
605 - output looks good (with-daemon) Success 0.004
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 605 - output looks good (with-daemon)
606 - can put another file into root (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 606 - can put another file into root (with-daemon)
608 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 608 - can list dir
ok 608 - can list dir
609 - file shows up in root (with-daemon) Success 0.027
System.out »
ok 609 - file shows up in root (with-daemon)
610 - can read file (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 610 - can read file (with-daemon)
611 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 611 - output looks good (with-daemon)
612 - can make deep directory (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 612 - can make deep directory (with-daemon)
614 - can list dir Success 0.050
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 614 - can list dir
ok 614 - can list dir
615 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 615 - dir entries look good
616 - can list dir Success 0.051
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 616 - can list dir
617 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 617 - dir entries look good
618 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 618 - can list dir
619 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 619 - dir entries look good
620 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 620 - can list dir
621 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 621 - dir entries look good
622 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 622 - can list dir
623 - directory was created correctly (with-daemon) Success 0.028
System.out »
ok 623 - directory was created correctly (with-daemon)
624 - dir has correct name Success 0.097
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 624 - dir has correct name
625 - can copy file into new dir (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 625 - can copy file into new dir (with-daemon)
626 - can copy file into deep dir using -p flag (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 626 - can copy file into deep dir using -p flag (with-daemon)
627 - file copied into deep dir exists (with-daemon) Success 0.052
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 627 - file copied into deep dir exists (with-daemon)
628 - cleanup deep cp -p test (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 628 - cleanup deep cp -p test (with-daemon)
629 - can read file (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 629 - can read file (with-daemon)
630 - output looks good (with-daemon) Success 0.004
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 630 - output looks good (with-daemon)
632 - can list dir Success 0.051
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 632 - can list dir
ok 632 - can list dir
633 - file shows up in dir (with-daemon) Success 0.028
System.out »
ok 633 - file shows up in dir (with-daemon)
634 - can remove file (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 634 - can remove file (with-daemon)
636 - can list dir Success 0.051
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 636 - can list dir
ok 636 - can list dir
637 - file no longer appears (with-daemon) Success 0.027
System.out »
ok 637 - file no longer appears (with-daemon)
638 - can remove dir (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 638 - can remove dir (with-daemon)
640 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 640 - can list dir
ok 640 - can list dir
641 - dir no longer appears (with-daemon) Success 0.028
System.out »
ok 641 - dir no longer appears (with-daemon)
642 - can remove file from root (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 642 - can remove file from root (with-daemon)
644 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 644 - can list dir
ok 644 - can list dir
645 - file no longer appears (with-daemon) Success 0.027
System.out »
ok 645 - file no longer appears (with-daemon)
646 - check root hash (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 646 - check root hash (with-daemon)
647 - cannot remove root (with-daemon) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 647 - cannot remove root (with-daemon)
System.err »
Error: can't remove some files
648 - check root hash was not changed (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 648 - check root hash was not changed (with-daemon)
649 - read from offset works (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 649 - read from offset works (with-daemon)
650 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 650 - output looks good (with-daemon)
651 - read with size works (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 651 - read with size works (with-daemon)
652 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 652 - output looks good (with-daemon)
653 - cannot read from negative offset (with-daemon) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 653 - cannot read from negative offset (with-daemon)
System.err »
Error: cannot specify negative offset
654 - read from offset 0 works (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 654 - read from offset 0 works (with-daemon)
655 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 655 - output looks good (with-daemon)
656 - read last byte works (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 656 - read last byte works (with-daemon)
657 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 657 - output looks good (with-daemon)
658 - offset past end of file fails (with-daemon) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 658 - offset past end of file fails (with-daemon)
System.err »
Error: offset was past end of file (5 > 4)
659 - cannot read negative count bytes (with-daemon) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 659 - cannot read negative count bytes (with-daemon)
System.err »
Error: Unknown Command "read"
660 - reading zero bytes prints nothing (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 660 - reading zero bytes prints nothing (with-daemon)
661 - output looks good (with-daemon) Success 0.005
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 661 - output looks good (with-daemon)
662 - count > len(file) prints entire file (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 662 - count > len(file) prints entire file (with-daemon)
663 - output looks good (with-daemon) Success 0.004
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 663 - output looks good (with-daemon)
664 - can write file (with-daemon) Success 0.050
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 664 - can write file (with-daemon)
666 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 666 - can list dir
ok 666 - can list dir
667 - file was created (with-daemon) Success 0.027
System.out »
ok 667 - file was created (with-daemon)
668 - can read file we just wrote (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 668 - can read file we just wrote (with-daemon)
669 - can write to offset (with-daemon) Success 0.048
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 669 - can write to offset (with-daemon)
670 - file looks correct (with-daemon) Success 0.052
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 670 - file looks correct (with-daemon)
671 - file hash correct (with-daemon) Success 0.049
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 671 - file hash correct (with-daemon)
672 - can't write to negative offset (with-daemon) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 672 - can't write to negative offset (with-daemon)
System.err »
Error: cannot have negative write offset
673 - verify file was not changed (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 673 - verify file was not changed (with-daemon)
674 - write new file for testing (with-daemon) Success 0.050
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 674 - write new file for testing (with-daemon)
675 - write to offset past end works (with-daemon) Success 0.051
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 675 - write to offset past end works (with-daemon)
676 - can read file (with-daemon) Success 0.049
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 676 - can read file (with-daemon)
677 - output looks good (with-daemon) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 677 - output looks good (with-daemon)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.461e-05 s, 203 kB/s
678 - cleanup (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 678 - cleanup (with-daemon)
679 - cannot write to directory (with-daemon) Success 0.094
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 679 - cannot write to directory (with-daemon)
System.err »
Error: /cats was not a file
680 - verify dir was not changed (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 680 - verify dir was not changed (with-daemon)
681 - cannot write to nonexistent path (with-daemon) Success 0.049
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 681 - cannot write to nonexistent path (with-daemon)
System.err »
Error: file does not exist
683 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 683 - can list dir
ok 683 - can list dir
684 - no new paths were created (with-daemon) Success 0.026
System.out »
ok 684 - no new paths were created (with-daemon)
685 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.007
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 685 - 'ipfs daemon' is running when WITH_DAEMON is set
686 - write 'no-flush' succeeds (with-daemon) Success 0.048
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 686 - write 'no-flush' succeeds (with-daemon)
687 - root hash not bubbled up yet (with-daemon) Success 0.056
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 687 - root hash not bubbled up yet (with-daemon)
688 - changes bubbled up to root on inspection (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 688 - changes bubbled up to root on inspection (with-daemon)
689 - root hash looks good (with-daemon) Success 0.004
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 689 - root hash looks good (with-daemon)
690 - /cats hash looks good (with-daemon) Success 0.051
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 690 - /cats hash looks good (with-daemon)
691 - flush root succeeds (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmcwKfTMCT7AaeiD92hWjnZn9b6eh9NxnhfSzN5x2vnDpt"}
ok 691 - flush root succeeds (with-daemon)
692 - can mv dir (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 692 - can mv dir (with-daemon)
693 - can mv dir and dest dir is / (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 693 - can mv dir and dest dir is / (with-daemon)
694 - can mv dir and dest dir path has no trailing slash (with-daemon) Success 0.050
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 694 - can mv dir and dest dir path has no trailing slash (with-daemon)
696 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 696 - can list dir
ok 696 - can list dir
697 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 697 - dir entries look good
698 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 698 - can list dir
699 - mv worked (with-daemon) Success 0.027
System.out »
ok 699 - mv worked (with-daemon)
700 - cleanup, remove 'cats' (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 700 - cleanup, remove 'cats' (with-daemon)
702 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 702 - can list dir
ok 702 - can list dir
703 - cleanup looks good (with-daemon) Success 0.030
System.out »
ok 703 - cleanup looks good (with-daemon)
704 - create a new file (with-daemon) Success 0.049
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 704 - create a new file (with-daemon)
705 - truncate and write over that file (with-daemon) Success 0.052
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 705 - truncate and write over that file (with-daemon)
706 - output looks good (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 706 - output looks good (with-daemon)
707 - file hash correct (with-daemon) Success 0.051
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 707 - file hash correct (with-daemon)
708 - cleanup (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 708 - cleanup (with-daemon)
709 - mkdir --flush works (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 709 - mkdir --flush works (with-daemon)
710 - mkdir --flush works a second time (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 710 - mkdir --flush works a second time (with-daemon)
712 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 712 - can list dir
ok 712 - can list dir
713 - dir looks right (with-daemon) Success 0.027
System.out »
ok 713 - dir looks right (with-daemon)
715 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 715 - can list dir
ok 715 - can list dir
716 - child dir looks right (with-daemon) Success 0.028
System.out »
ok 716 - child dir looks right (with-daemon)
717 - cleanup (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 717 - cleanup (with-daemon)
719 - can list dir Success 0.047
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 719 - can list dir
ok 719 - can list dir
720 - child dir looks right (with-daemon) Success 0.028
System.out »
ok 720 - child dir looks right (with-daemon)
721 - create and remove dir (with-daemon) Success 0.092
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 721 - create and remove dir (with-daemon)
722 - create test file (with-daemon) Success 0.050
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 722 - create test file (with-daemon)
723 - copy test file onto test dir (with-daemon) Success 0.051
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 723 - copy test file onto test dir (with-daemon)
724 - test /test_dir (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 724 - test /test_dir (with-daemon)
725 - clean up /test_dir and /test_file (with-daemon) Success 0.093
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 725 - clean up /test_dir and /test_file (with-daemon)
726 - make a directory and a file (with-daemon) Success 0.094
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 726 - make a directory and a file (with-daemon)
727 - copy a file into a directory (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 727 - copy a file into a directory (with-daemon)
728 - file made it into directory (with-daemon) Success 0.047
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 728 - file made it into directory (with-daemon)
729 - test copy --force overwrites files Success 0.227
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 729 - test copy --force overwrites files
730 - clean up Success 0.090
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 730 - clean up
731 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon) Success 0.049
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 731 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon)
System.err »
Error: file does not exist
732 - can write file and create intermediate directories (with-daemon) Success 0.092
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 732 - can write file and create intermediate directories (with-daemon)
733 - can write file and create intermediate directories with short flags (with-daemon) Success 0.096
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 733 - can write file and create intermediate directories with short flags (with-daemon)
734 - can write another file in the same directory with -e -p (with-daemon) Success 0.095
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 734 - can write another file in the same directory with -e -p (with-daemon)
735 - clean up (with-daemon) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 735 - clean up (with-daemon)
737 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 737 - can list dir
ok 737 - can list dir
738 - root mfs entry is empty (with-daemon) Success 0.027
System.out »
ok 738 - root mfs entry is empty (with-daemon)
739 - repo gc (with-daemon) Success 0.052
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreiddxzzoljxwk66mcktgdibxv2tmbfdije75imaied6tlri3jdugta
removed bafkreiccd3bw4jwbkh4ynp2dicdj4rbkf5y4sjphd426xyjnat7nxnwuze
removed bafkreiheqtivrdwl6ac4m3xgaywwxzuc2no2fxamht7kannxu5xwpyoeva
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreigucigihe5ldq665xxrt7jkhptczoiuicxbpfvxviguklyemk2syy
removed bafkreid5ubedby5ogjztabucd22534vl2uqqmf5rsrqhy5j5zd6evyyy2m
removed bafkreiezd3c2wz5cgflebf3zejjusgsy4acqpbrvgjaxviwy754hdcwskq
removed bafkreid4q4ovpejky42u6dlv3b3qgyl64lc3jpx34fuoxo2faelr2ewriy
removed bafkreia4uba2drvobsfj6gk7khmxnlhvm5r5zw2igqgaws2g7mglmvo2e4
removed bafkreicnqleufqxpgkzqndqzo6spq6grat7cpyh3bsicrfav74ddawpx44
removed bafkreic5n4nshgoughtgtx4a3362lhxqvvxxhfltzhir75czalpdmjlsae
removed bafkreifw7mea4g6xt2y5dvhlc4vmz2fecscmdyneyut6txtfculjzdw3iq
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreie6xm2nsh5tmg2p4owod5pcwqrmpj46yphu7kxjkotmkce3e2546m
removed bafkreiflknscvcsn43l4iotgby6lybbw6r73qpq3g3ealimre6fyt6pg7a
removed bafkreignhn7ilfah7yiyvm6uz5epluhcvzgyuclstb3pbmjq4wfr5y3xfm
removed bafkreig4ueyjkam55btnbzbsc76hhh7cplhqp4t3xdug2a3ldsq3hlsor4
removed bafkreigclwvstehpeugtx3ckslar6mmlslg7p4ttttdql76l46dgnxvizm
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreibkfu2ihtzazqni6qar5kvftztutibtwgkjn7zqykh7unp7wf2a64
removed bafkreielwkjucnpc6y7duk6bw4t377lvtebrrmptcynhwzfha6t3oup7uq
removed bafkreig45a45mszimgiohjp2oh7t357n7ej25kxfwlao4lhjxyqojnh5ku
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreifbekr2fj6zvs473x5pzeh7uloqzpeq6dx2znhockqcbckymahjji
removed bafkreidxoazk6d556guisyq52r7fpu5v33fio37tkojhh4jxoydndls3vq
removed bafkreia62swgahz57fe4bdonihf3ccefcj5mmzfxkucchaiev6p2vhyro4
removed bafkreicvgx2erc2paby4vvgwgf3d7gpskks2wn4wvh2uhrk7kfq2m3lqpy
removed bafkreif5k4l36cd5hqqjd2nb5tmue3shwdadyxii4nbdyepcyqnicoxgv4
removed bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4
removed bafkreif2jccky34wjh5l7x4mi6wk6pwfrr5rrhsmuxmy6hqqc2asgkqckm
removed bafkreiagl64okxcqfzdixvtjk4p2aalo7ade46d42xtv3ko7toucxekva4
removed bafkreiga3m2c5b5t4mclnf6n7q2sqr35jntxsfcgqvixhw7zwwna7xpwaq
removed bafkreicj2orpoahxchz3qtifkr654zm4z42n3qw5sna5uegzzkviosxwuy
removed bafkreibbgwkqerxbtsqhbtv7hde7d3a6vqe55pg6zplh5xforhhkek2wuu
removed bafkreifjv2vcrdurrz5a2coxvp5rc74igihmsl4e67ngilqyf45vajdzka
removed bafkreiesp2wpqsqwqjt5g63qzhnavyyjotfbpvon4jmrz6jjcvmxb7y3lq
removed bafkreievdpkawdfqw47lwecresdz5habydralwq5w6a4c2bl3ap5hzyjam
removed bafkreia4miqqt6qvhkmlsw3ipfiax3c7ntd2y4rnurvuvbayj3zl63otdq
removed bafkreic4ko36gl6nqkjsichxwxnahchdnrea7zzqezsyl2a57w4vh2zxuy
removed bafkreidesel2ztzocstkemyt6ixt3gktwcjjih5orkrr37yl2tehjgqpeq
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreiehz72rf7qryuzgsif3qketlc4ralapq6afcawn6sk6f37enchm2u
removed bafkreihvunicemjjmpooayx2wv2poqh47ntjeev7nugfxji45dzqlwdr3e
removed bafkreiakb3k5kz2x4ilh3a74hvcgwegb7loklrumtzhwkff6ur7mtwfzlq
removed bafkreigq2zsg6xmzpjhrcqonyiw7kipprt47yldnng42rgzhoiiz3szadm
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreico5w2wevlcugsmi4l7qd2c3v3mgzff2qmjrycmyun3gxwy6mrr7q
removed bafkreif73vxc5jppvd2gdapzxk3juoe3k2mw3l4fethhit5ugrtwna6ybq
removed bafkreicmibk4sbtlu2vuspggpnvgllicjncagovfazsatugsjdpmfzzyby
removed bafkreifdzjyhihgml6igc5id4czu57jxyutxpmth35zvibyckkk55qczma
removed bafkreie423ad57fvluhzpqqzbfjpoi3zzr3utjebcpmyxhbz2v5stib2om
removed bafkreibvq2iievpi4dm55ganbz6cra7drxzavbtywzf3jv7z2wsc4wqz3u
removed bafkreihxkpo5cw4znpexlrydozxrb7vvcoxdotxozv4mct5vlal6sgie4y
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreihwlkcbhtywiuy3jb3inz3ndvzjs4fp7pg5egezlq2jy46mcb5k6a
removed bafkreieytoq2dwftkbup5pilachws455pazc27ade5mdmnmz7g5zzashim
removed bafkreiexszui4q4m5gkatga7ykyubdzla6b7bmxyhl4327z6bevk3rnige
removed bafkreihftqh565lu34fh5fdqroqnth2tf773eueg3v56ixu45fpyyovlbm
removed bafkreihtwq5fhnlfqodq6yxsplbfuuhqgissp2bdw33kp2gcwvkmiitl5e
removed bafkreibkvt57lxnnmgktme3tzkahjxpllx3jl7n4w2ach74xelfs7dsxam
removed bafkreidjo5hvibdyormqyggqls474roq6hviyrjhludyonyixmuocxb45a
removed bafkreiagzszzlys3fpmo7tl3ycd4llmkrfy65bs2ppmlqc22ngnf7nd77i
removed bafkreibbvpzv2zbfawajuxawvz72wmzpomo64jra2bck7thzrzbipnjprq
removed bafkreieyutxafkanmlpulb3mmsf4k65awioc3ccwdw7u2wbwkaok23idem
removed bafkreifuju4uk4mz4xcvdhrwjjgzqboddwoambmy5jpz2nvhx7pv3doaeu
removed bafkreickpkn4rgpbjuzgfljzkqxe4n7b5au4fo4kv6lccxcqvviquxzcby
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreigbz3pkezedzj7rqetiyos6xlprr62g2xaz3jypy24smr5zonoore
removed bafkreia647j2cgubw2xcgzyzlxqjano5clom3yhcd4dgk6uhilfdod2wwi
removed bafkreibsp4723rp6omygyx4k7am4nmupskwibelrwdmlvv7fdi7ebaarxi
removed bafkreihy7jbcqsp3nzbxh6ylqrvoawmxvfbbmjmzx2kxnfmzuqs3ckx3je
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreigze7pg7yci3mkp4ibxesmjpazx7dfanpar4vtgkrid7t2drpkbue
removed bafkreiefvdjguawixdgqwfpxpogvpvosoycbd7qkdvehxgnvb7leaz6nf4
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreid6nzj23cmqyoxdrxfsetxvlypot2b6sjeepk2i6a2ecrn4wztgve
removed bafkreiflmj5s7o3k4o6hnguybn63ffcholxskvkden2rtksujlrrhjqgju
removed bafkreiargkvrhqagwnbnxpiilqhl7savmr7jg7zcoukrztc52aylck7vfe
removed bafkreiakt3a3ermq63osoyctmtwyyngsnyjxon7yh7ribxmfexpt3o5kpe
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreidafkv534iye4l22sc7pldsgcr3lct4erb2szlrace5tf67gmwovm
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreigux4s5iz3hixb5ipc2hn6zmd7uwrnwuxsc2jepu4dhiiixipduvu
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreia3dsn2gdjrbvy47blstwir2i7qxo77znm74pk3guuqg2qbol7avu
removed bafkreihqjmjmf3b7bpnqk5ipegnez4gwqoion7fndamwpfcgryhi3hsfou
removed bafkreib75zusnbnusrdfcxrl3ytapwn5htmeeyy6drcoocx45w2qg5gq7y
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreiebyz5wb2ylfbuwgkfbxdcjpjzu557huys26tveab25iue7s4372y
removed bafkreifaoywycsu2w4bngevbsr24b4kn27i6c5u24a3zpvtoumxmyhs7fu
removed bafkreidfsj6ukryu2afxas25nxdrgnqnzaiqskpogzjmhbz4pqyprh6d54
removed bafkreigogatnti72x3xlnndhnqxpv46yvnwvmcvccnvut7pccovqmi6yzy
removed bafkreiagnqseuyg3rqqta5l7pw2njf2x2wbyuiah5vol4ingk5l6eyv6d4
removed bafkreidvxb7iaexn4lyvup7snv5khrv3z5anlypgpaajhme2oo6fzlzy64
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreiawyc6d2notlw4s7zqslzhyxij7hxcdwdbcijdbhe55vziyacxxiy
removed bafkreigblak2rn2wguizmooprpt76l7jd4dbhkywilywc7cxhlshtcu3oi
removed bafkreibcakorlunelsybickeoax365lesqzcpv52v47fpfyas4flsbbjge
removed bafkreifpc5uucyts47m4hqf2z6k7dhgnekp3zprvuocrdcotswhz4htznm
removed bafkreiajwghjki6pnoqylmwkvjrvqhuf6hyvvq2vcjykgo2gzqfo4g7rsi
removed bafkreigu3y27vfxg57tpwqlorylmhtxqltpdgd5euimag7laaqscco7ida
removed bafkreifa6j2tgaccby2lhmk2ept2w2st77fe5hofz2youbob4x3wx4yfja
removed bafkreiedw4xss7jqmoisiequgiutysuztshxdpz35pekoaye5qd4a6neke
removed bafkreif3vyo7irk4jcvciev4vj7u35j5qhhpauwnvtieu7nz44v44dur2q
removed bafkreicyoylvnuwfamrciukkqaprggk54id5oricmuh7447t65lsqdxunm
removed bafkreigy4vuqjgwhgodmhvfwk4kpq7a27mnossstcyladfkpx5idmq6aie
ok 739 - repo gc (with-daemon)
741 - can list dir Success 0.048
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 741 - can list dir
ok 741 - can list dir
742 - remove file forcibly Success 0.027
System.out »
ok 742 - remove file forcibly
744 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 744 - can list dir
ok 744 - can list dir
745 - remove multiple files forcibly Success 0.027
System.out »
ok 745 - remove multiple files forcibly
747 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 747 - can list dir
ok 747 - can list dir
748 - remove directory forcibly Success 0.027
System.out »
ok 748 - remove directory forcibly
750 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 750 - can list dir
ok 750 - can list dir
751 - remove multiple directories forcibly Success 0.027
System.out »
ok 751 - remove multiple directories forcibly
752 - remove multiple files Success 0.140
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 752 - remove multiple files
754 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 754 - can list dir
ok 754 - can list dir
755 - remove multiple directories Success 0.027
System.out »
ok 755 - remove multiple directories
756 - remove nonexistent path forcibly Success 0.048
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 756 - remove nonexistent path forcibly
757 - remove deeply nonexistent path forcibly Success 0.047
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 757 - remove deeply nonexistent path forcibly
759 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 759 - can list dir
ok 759 - can list dir
System.err »
Error: can't remove some files
760 - remove multiple files (with nonexistent one) Success 0.027
System.out »
ok 760 - remove multiple files (with nonexistent one)
761 - can create some files for testing with raw-leaves (with-daemon) Success 0.216
System.out »
expecting success: 
    create_files --raw-leaves
  
ok 761 - can create some files for testing with raw-leaves (with-daemon)
762 - can mkdir in root (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 762 - can mkdir in root (with-daemon, partial raw-leaves)
763 - 'files ls' lists root by default (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 763 - 'files ls' lists root by default (with-daemon, partial raw-leaves)
764 - directory was created (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 764 - directory was created (with-daemon, partial raw-leaves)
766 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 766 - can list dir
ok 766 - can list dir
767 - directory is empty (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 767 - directory is empty (with-daemon, partial raw-leaves)
768 - stat works (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 768 - stat works (with-daemon, partial raw-leaves)
769 - hash is first line of stat (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn - cats/
ok 769 - hash is first line of stat (with-daemon, partial raw-leaves)
770 - stat --hash gives only hash (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 770 - stat --hash gives only hash (with-daemon, partial raw-leaves)
771 - stat with multiple format options should fail (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 771 - stat with multiple format options should fail (with-daemon, partial raw-leaves)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
772 - compare hash option with format (with-daemon, partial raw-leaves) Success 0.097
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 772 - compare hash option with format (with-daemon, partial raw-leaves)
773 - compare size option with format (with-daemon, partial raw-leaves) Success 0.096
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 773 - compare size option with format (with-daemon, partial raw-leaves)
774 - check root hash (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 774 - check root hash (with-daemon, partial raw-leaves)
775 - stat works outside of MFS Success 0.048
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 775 - stat works outside of MFS
776 - stat compute the locality of a dag Success 0.051
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 776 - stat compute the locality of a dag
777 - cannot mkdir / (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 777 - cannot mkdir / (with-daemon, partial raw-leaves)
System.err »
Error: cannot create directory '/': Already exists
778 - check root hash was not changed (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 778 - check root hash was not changed (with-daemon, partial raw-leaves)
779 - can put files into directory (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 779 - can put files into directory (with-daemon, partial raw-leaves)
781 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 781 - can list dir
ok 781 - can list dir
782 - file shows up in directory (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 782 - file shows up in directory (with-daemon, partial raw-leaves)
783 - file has correct hash and size in directory (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 783 - file has correct hash and size in directory (with-daemon, partial raw-leaves)
784 - file has correct hash and size listed with -l Success 0.049
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 784 - file has correct hash and size listed with -l
785 - file has correct hash and size listed with --long Success 0.050
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 785 - file has correct hash and size listed with --long
786 - file has correct hash and size listed with -l --cid-base=base32 Success 0.054
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 786 - file has correct hash and size listed with -l --cid-base=base32
787 - file shows up with the correct name Success 0.049
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 787 - file shows up with the correct name
788 - can stat file (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 788 - can stat file (with-daemon, partial raw-leaves)
789 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 789 - stat output looks good
790 - can stat file with --cid-base=base32 (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 790 - can stat file with --cid-base=base32 (with-daemon, partial raw-leaves)
791 - stat output looks good with --cid-base=base32 Success 0.008
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 791 - stat output looks good with --cid-base=base32
792 - can read file (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 792 - can read file (with-daemon, partial raw-leaves)
793 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 793 - output looks good (with-daemon, partial raw-leaves)
794 - can put another file into root (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 794 - can put another file into root (with-daemon, partial raw-leaves)
796 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 796 - can list dir
ok 796 - can list dir
797 - file shows up in root (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 797 - file shows up in root (with-daemon, partial raw-leaves)
798 - can read file (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 798 - can read file (with-daemon, partial raw-leaves)
799 - output looks good (with-daemon, partial raw-leaves) Success 0.004
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 799 - output looks good (with-daemon, partial raw-leaves)
800 - can make deep directory (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 800 - can make deep directory (with-daemon, partial raw-leaves)
802 - can list dir Success 0.049
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 802 - can list dir
ok 802 - can list dir
803 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 803 - dir entries look good
804 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 804 - can list dir
805 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 805 - dir entries look good
806 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 806 - can list dir
807 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 807 - dir entries look good
808 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 808 - can list dir
809 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 809 - dir entries look good
810 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 810 - can list dir
811 - directory was created correctly (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 811 - directory was created correctly (with-daemon, partial raw-leaves)
812 - dir has correct name Success 0.093
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 812 - dir has correct name
813 - can copy file into new dir (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 813 - can copy file into new dir (with-daemon, partial raw-leaves)
814 - can copy file into deep dir using -p flag (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 814 - can copy file into deep dir using -p flag (with-daemon, partial raw-leaves)
815 - file copied into deep dir exists (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 815 - file copied into deep dir exists (with-daemon, partial raw-leaves)
816 - cleanup deep cp -p test (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 816 - cleanup deep cp -p test (with-daemon, partial raw-leaves)
817 - can read file (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 817 - can read file (with-daemon, partial raw-leaves)
818 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 818 - output looks good (with-daemon, partial raw-leaves)
820 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 820 - can list dir
ok 820 - can list dir
821 - file shows up in dir (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 821 - file shows up in dir (with-daemon, partial raw-leaves)
822 - can remove file (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 822 - can remove file (with-daemon, partial raw-leaves)
824 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 824 - can list dir
ok 824 - can list dir
825 - file no longer appears (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 825 - file no longer appears (with-daemon, partial raw-leaves)
826 - can remove dir (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 826 - can remove dir (with-daemon, partial raw-leaves)
828 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 828 - can list dir
ok 828 - can list dir
829 - dir no longer appears (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 829 - dir no longer appears (with-daemon, partial raw-leaves)
830 - can remove file from root (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 830 - can remove file from root (with-daemon, partial raw-leaves)
832 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 832 - can list dir
ok 832 - can list dir
833 - file no longer appears (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 833 - file no longer appears (with-daemon, partial raw-leaves)
834 - check root hash (with-daemon, partial raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 834 - check root hash (with-daemon, partial raw-leaves)
835 - cannot remove root (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 835 - cannot remove root (with-daemon, partial raw-leaves)
System.err »
Error: can't remove some files
836 - check root hash was not changed (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 836 - check root hash was not changed (with-daemon, partial raw-leaves)
837 - read from offset works (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 837 - read from offset works (with-daemon, partial raw-leaves)
838 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 838 - output looks good (with-daemon, partial raw-leaves)
839 - read with size works (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 839 - read with size works (with-daemon, partial raw-leaves)
840 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 840 - output looks good (with-daemon, partial raw-leaves)
841 - cannot read from negative offset (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 841 - cannot read from negative offset (with-daemon, partial raw-leaves)
System.err »
Error: cannot specify negative offset
842 - read from offset 0 works (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 842 - read from offset 0 works (with-daemon, partial raw-leaves)
843 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 843 - output looks good (with-daemon, partial raw-leaves)
844 - read last byte works (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 844 - read last byte works (with-daemon, partial raw-leaves)
845 - output looks good (with-daemon, partial raw-leaves) Success 0.004
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 845 - output looks good (with-daemon, partial raw-leaves)
846 - offset past end of file fails (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 846 - offset past end of file fails (with-daemon, partial raw-leaves)
System.err »
Error: offset was past end of file (5 > 4)
847 - cannot read negative count bytes (with-daemon, partial raw-leaves) Success 0.045
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 847 - cannot read negative count bytes (with-daemon, partial raw-leaves)
System.err »
Error: Unknown Command "read"
848 - reading zero bytes prints nothing (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 848 - reading zero bytes prints nothing (with-daemon, partial raw-leaves)
849 - output looks good (with-daemon, partial raw-leaves) Success 0.004
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 849 - output looks good (with-daemon, partial raw-leaves)
850 - count > len(file) prints entire file (with-daemon, partial raw-leaves) Success 0.053
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 850 - count > len(file) prints entire file (with-daemon, partial raw-leaves)
851 - output looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 851 - output looks good (with-daemon, partial raw-leaves)
852 - can write file (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 852 - can write file (with-daemon, partial raw-leaves)
854 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 854 - can list dir
ok 854 - can list dir
855 - file was created (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 855 - file was created (with-daemon, partial raw-leaves)
856 - can read file we just wrote (with-daemon, partial raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 856 - can read file we just wrote (with-daemon, partial raw-leaves)
857 - can write to offset (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 857 - can write to offset (with-daemon, partial raw-leaves)
858 - file looks correct (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 858 - file looks correct (with-daemon, partial raw-leaves)
859 - file hash correct (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 859 - file hash correct (with-daemon, partial raw-leaves)
860 - can't write to negative offset (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 860 - can't write to negative offset (with-daemon, partial raw-leaves)
System.err »
Error: cannot have negative write offset
861 - verify file was not changed (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 861 - verify file was not changed (with-daemon, partial raw-leaves)
862 - write new file for testing (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 862 - write new file for testing (with-daemon, partial raw-leaves)
863 - write to offset past end works (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 863 - write to offset past end works (with-daemon, partial raw-leaves)
864 - can read file (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 864 - can read file (with-daemon, partial raw-leaves)
865 - output looks good (with-daemon, partial raw-leaves) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 865 - output looks good (with-daemon, partial raw-leaves)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.3317e-05 s, 214 kB/s
866 - cleanup (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 866 - cleanup (with-daemon, partial raw-leaves)
867 - cannot write to directory (with-daemon, partial raw-leaves) Success 0.093
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 867 - cannot write to directory (with-daemon, partial raw-leaves)
System.err »
Error: /cats was not a file
868 - verify dir was not changed (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 868 - verify dir was not changed (with-daemon, partial raw-leaves)
869 - cannot write to nonexistent path (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 869 - cannot write to nonexistent path (with-daemon, partial raw-leaves)
System.err »
Error: file does not exist
871 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 871 - can list dir
ok 871 - can list dir
872 - no new paths were created (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 872 - no new paths were created (with-daemon, partial raw-leaves)
873 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.007
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 873 - 'ipfs daemon' is running when WITH_DAEMON is set
874 - write 'no-flush' succeeds (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 874 - write 'no-flush' succeeds (with-daemon, partial raw-leaves)
875 - root hash not bubbled up yet (with-daemon, partial raw-leaves) Success 0.055
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 875 - root hash not bubbled up yet (with-daemon, partial raw-leaves)
876 - changes bubbled up to root on inspection (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 876 - changes bubbled up to root on inspection (with-daemon, partial raw-leaves)
877 - root hash looks good (with-daemon, partial raw-leaves) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 877 - root hash looks good (with-daemon, partial raw-leaves)
878 - /cats hash looks good (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 878 - /cats hash looks good (with-daemon, partial raw-leaves)
879 - flush root succeeds (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmTpKiKcAj4sbeesN6vrs5w3QeVmd4QmGpxRL81hHut4dZ"}
ok 879 - flush root succeeds (with-daemon, partial raw-leaves)
880 - can mv dir (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 880 - can mv dir (with-daemon, partial raw-leaves)
881 - can mv dir and dest dir is / (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 881 - can mv dir and dest dir is / (with-daemon, partial raw-leaves)
882 - can mv dir and dest dir path has no trailing slash (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 882 - can mv dir and dest dir path has no trailing slash (with-daemon, partial raw-leaves)
884 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 884 - can list dir
ok 884 - can list dir
885 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 885 - dir entries look good
886 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 886 - can list dir
887 - mv worked (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 887 - mv worked (with-daemon, partial raw-leaves)
888 - cleanup, remove 'cats' (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 888 - cleanup, remove 'cats' (with-daemon, partial raw-leaves)
890 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 890 - can list dir
ok 890 - can list dir
891 - cleanup looks good (with-daemon, partial raw-leaves) Success 0.028
System.out »
ok 891 - cleanup looks good (with-daemon, partial raw-leaves)
892 - create a new file (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 892 - create a new file (with-daemon, partial raw-leaves)
893 - truncate and write over that file (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 893 - truncate and write over that file (with-daemon, partial raw-leaves)
894 - output looks good (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 894 - output looks good (with-daemon, partial raw-leaves)
895 - file hash correct (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 895 - file hash correct (with-daemon, partial raw-leaves)
896 - cleanup (with-daemon, partial raw-leaves) Success 0.046
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 896 - cleanup (with-daemon, partial raw-leaves)
897 - mkdir --flush works (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 897 - mkdir --flush works (with-daemon, partial raw-leaves)
898 - mkdir --flush works a second time (with-daemon, partial raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 898 - mkdir --flush works a second time (with-daemon, partial raw-leaves)
900 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 900 - can list dir
ok 900 - can list dir
901 - dir looks right (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 901 - dir looks right (with-daemon, partial raw-leaves)
903 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 903 - can list dir
ok 903 - can list dir
904 - child dir looks right (with-daemon, partial raw-leaves) Success 0.028
System.out »
ok 904 - child dir looks right (with-daemon, partial raw-leaves)
905 - cleanup (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 905 - cleanup (with-daemon, partial raw-leaves)
907 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 907 - can list dir
ok 907 - can list dir
908 - child dir looks right (with-daemon, partial raw-leaves) Success 0.027
System.out »
ok 908 - child dir looks right (with-daemon, partial raw-leaves)
909 - create and remove dir (with-daemon, partial raw-leaves) Success 0.090
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 909 - create and remove dir (with-daemon, partial raw-leaves)
910 - create test file (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 910 - create test file (with-daemon, partial raw-leaves)
911 - copy test file onto test dir (with-daemon, partial raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 911 - copy test file onto test dir (with-daemon, partial raw-leaves)
912 - test /test_dir (with-daemon, partial raw-leaves) Success 0.046
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 912 - test /test_dir (with-daemon, partial raw-leaves)
913 - clean up /test_dir and /test_file (with-daemon, partial raw-leaves) Success 0.092
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 913 - clean up /test_dir and /test_file (with-daemon, partial raw-leaves)
914 - make a directory and a file (with-daemon, partial raw-leaves) Success 0.096
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 914 - make a directory and a file (with-daemon, partial raw-leaves)
915 - copy a file into a directory (with-daemon, partial raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 915 - copy a file into a directory (with-daemon, partial raw-leaves)
916 - file made it into directory (with-daemon, partial raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 916 - file made it into directory (with-daemon, partial raw-leaves)
917 - test copy --force overwrites files Success 0.230
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 917 - test copy --force overwrites files
918 - clean up Success 0.093
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 918 - clean up
919 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 919 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, partial raw-leaves)
System.err »
Error: file does not exist
920 - can write file and create intermediate directories (with-daemon, partial raw-leaves) Success 0.092
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 920 - can write file and create intermediate directories (with-daemon, partial raw-leaves)
921 - can write file and create intermediate directories with short flags (with-daemon, partial raw-leaves) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 921 - can write file and create intermediate directories with short flags (with-daemon, partial raw-leaves)
922 - can write another file in the same directory with -e -p (with-daemon, partial raw-leaves) Success 0.095
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 922 - can write another file in the same directory with -e -p (with-daemon, partial raw-leaves)
923 - clean up (with-daemon, partial raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 923 - clean up (with-daemon, partial raw-leaves)
925 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 925 - can list dir
ok 925 - can list dir
926 - root mfs entry is empty (with-daemon, partial raw-leaves) Success 0.028
System.out »
ok 926 - root mfs entry is empty (with-daemon, partial raw-leaves)
927 - repo gc (with-daemon, partial raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreiddxzzoljxwk66mcktgdibxv2tmbfdije75imaied6tlri3jdugta
removed bafkreieqhana5jlahjd566zbgagblf2i6awmydtx255qkkemaawaepigti
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreigucigihe5ldq665xxrt7jkhptczoiuicxbpfvxviguklyemk2syy
removed bafkreiezd3c2wz5cgflebf3zejjusgsy4acqpbrvgjaxviwy754hdcwskq
removed bafkreid4q4ovpejky42u6dlv3b3qgyl64lc3jpx34fuoxo2faelr2ewriy
removed bafkreiepbtszw3quz53yrbblbrjw6dtlo3l4j5hgu76a5yfteojn6gvfnm
removed bafkreia4uba2drvobsfj6gk7khmxnlhvm5r5zw2igqgaws2g7mglmvo2e4
removed bafkreid5ifgj3efk2befabvduh7j76e322xiul235pyfwyqsc5aiar42ey
removed bafkreidrygncmnwsqznj7ey67v7g7gowv72zfmhm3ddp2gqvik2q4skwbq
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreifg2gp5cm5egofktvkxlnfn7i5x5y7f3qw4jib23goto4o3zpenmi
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreiflknscvcsn43l4iotgby6lybbw6r73qpq3g3ealimre6fyt6pg7a
removed bafkreig4ueyjkam55btnbzbsc76hhh7cplhqp4t3xdug2a3ldsq3hlsor4
removed bafkreigclwvstehpeugtx3ckslar6mmlslg7p4ttttdql76l46dgnxvizm
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreiewvj2wnmie7pxpw6a7s6rutypwvlvnr3vw266ubukxkbylqbwwxq
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreibkfu2ihtzazqni6qar5kvftztutibtwgkjn7zqykh7unp7wf2a64
removed bafkreidpsknrpioj5szhb6quycyb7qjememo6haxjg3jvvy3fawjodyqga
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreigt37jy4wfjlh4qtqkyvbr2s5mxo7p2bmm2k4g4yfz5c2awaaq4qa
removed bafkreiglzp5gjffvpqevoddcht6sc7h2si6tmdzzdloxgmkkwtwftxlgo4
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreidxoazk6d556guisyq52r7fpu5v33fio37tkojhh4jxoydndls3vq
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreihoom6pipvtzwutdsfh72tc2x6xwofrrjsst3ftemaj2cazbui3mq
removed bafkreicvgx2erc2paby4vvgwgf3d7gpskks2wn4wvh2uhrk7kfq2m3lqpy
removed bafkreiga3m2c5b5t4mclnf6n7q2sqr35jntxsfcgqvixhw7zwwna7xpwaq
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreicj2orpoahxchz3qtifkr654zm4z42n3qw5sna5uegzzkviosxwuy
removed bafkreiesp2wpqsqwqjt5g63qzhnavyyjotfbpvon4jmrz6jjcvmxb7y3lq
removed bafkreic4ko36gl6nqkjsichxwxnahchdnrea7zzqezsyl2a57w4vh2zxuy
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreig4vobfucc6ndvouzlojnpod2r44ia4bnxzqycznoqjusppdnsx2q
removed bafkreigq2zsg6xmzpjhrcqonyiw7kipprt47yldnng42rgzhoiiz3szadm
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreidlf2ew32ekmkl5dl6sgeqnuygk5x2oi5kjbyuy5m3p5pooitfsqu
removed bafkreif73vxc5jppvd2gdapzxk3juoe3k2mw3l4fethhit5ugrtwna6ybq
removed bafkreicmibk4sbtlu2vuspggpnvgllicjncagovfazsatugsjdpmfzzyby
removed bafkreidrw67r4sfmqq52nkldpziedeeer2nn4ni7tkpqsgzyqlv5mnbzyy
removed bafkreicq2n6s45ecn3ehziwzgfcr5j6hrg4taziszlmyuxl7vir26ht5tq
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreigq6rnotwftrllyz3f7kvmiynuhb7gdghnhyvr4ysje4ijjhyomby
removed bafkreiekoxue4s5jr62ac5vx6a7bx62otmmki5afvahfyza56vt3yraksi
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreihtwq5fhnlfqodq6yxsplbfuuhqgissp2bdw33kp2gcwvkmiitl5e
removed bafkreiagzszzlys3fpmo7tl3ycd4llmkrfy65bs2ppmlqc22ngnf7nd77i
removed bafkreieyutxafkanmlpulb3mmsf4k65awioc3ccwdw7u2wbwkaok23idem
removed bafkreic5qs74k4brm2g32izdakjmjdt4e4kfmjzgbzebshkq3uyddcx7ea
removed bafkreifuju4uk4mz4xcvdhrwjjgzqboddwoambmy5jpz2nvhx7pv3doaeu
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreigbz3pkezedzj7rqetiyos6xlprr62g2xaz3jypy24smr5zonoore
removed bafkreidbrcjjwzcy52hcrywtl3iumh3yezy3zurrwebaipjomnwmbbq4gq
removed bafkreia647j2cgubw2xcgzyzlxqjano5clom3yhcd4dgk6uhilfdod2wwi
removed bafkreibnkcldgayfl7ycyofsoeu2uv3kxbfd24eb4ajoo5lorq7oslaohq
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreihy7jbcqsp3nzbxh6ylqrvoawmxvfbbmjmzx2kxnfmzuqs3ckx3je
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreigze7pg7yci3mkp4ibxesmjpazx7dfanpar4vtgkrid7t2drpkbue
removed bafkreiefvdjguawixdgqwfpxpogvpvosoycbd7qkdvehxgnvb7leaz6nf4
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreiflmj5s7o3k4o6hnguybn63ffcholxskvkden2rtksujlrrhjqgju
removed bafkreifkofxho3t27zf4lumzzpivzlu2kl557xkbuioqkdn7m5gsiqepp4
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreiargkvrhqagwnbnxpiilqhl7savmr7jg7zcoukrztc52aylck7vfe
removed bafkreieci56kvnoiy2zaof2aiwmhxntapqtw5nvpyrlvkz34nljwr5qdlu
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreidg43ehwy6eb45xctt2kmnai6vwfnevthan72n3n7zmq5y4yyj6mu
removed bafkreiaufp43euejbjj7crbfrj5m6wm7otqsjmap67vpc3zuir5xwtrrb4
removed bafkreidafkv534iye4l22sc7pldsgcr3lct4erb2szlrace5tf67gmwovm
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreigux4s5iz3hixb5ipc2hn6zmd7uwrnwuxsc2jepu4dhiiixipduvu
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreia3dsn2gdjrbvy47blstwir2i7qxo77znm74pk3guuqg2qbol7avu
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreihqjmjmf3b7bpnqk5ipegnez4gwqoion7fndamwpfcgryhi3hsfou
removed bafkreib75zusnbnusrdfcxrl3ytapwn5htmeeyy6drcoocx45w2qg5gq7y
removed bafkreicrme35l4o3fm4mht3znywz4yunb2dby7hmzv7bkyp2hsxomzf55q
removed bafkreibrr6zs2eilwc23kzlzvoqohg6mjvghwpgft6wprrchaug62pz2jy
removed bafkreibbsbmdyulgb6ufbx6y6gndr473aoniyefq2ynvw4cvj3ntzoh6nm
removed bafkreib2ixtll5rmuuquqggjot5h4pwe5vvuqu5t5n6c76skezmhhhiaxm
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreifaoywycsu2w4bngevbsr24b4kn27i6c5u24a3zpvtoumxmyhs7fu
removed bafkreidfsj6ukryu2afxas25nxdrgnqnzaiqskpogzjmhbz4pqyprh6d54
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiagnqseuyg3rqqta5l7pw2njf2x2wbyuiah5vol4ingk5l6eyv6d4
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreicpuxevnfqe6r7ctxubsx2q6i6hi6wwka3xnxr7xmvjew4ex3zxly
removed bafkreigblak2rn2wguizmooprpt76l7jd4dbhkywilywc7cxhlshtcu3oi
removed bafkreibcakorlunelsybickeoax365lesqzcpv52v47fpfyas4flsbbjge
removed bafkreiajwghjki6pnoqylmwkvjrvqhuf6hyvvq2vcjykgo2gzqfo4g7rsi
removed bafkreigu3y27vfxg57tpwqlorylmhtxqltpdgd5euimag7laaqscco7ida
removed bafkreidpk5s3equptt377hy6kv4nz7xxnekp4ldn5e4npnfwida2njpxpe
removed bafkreierk7elevoprac5olxhlhbgqtjvbsukomto6pmvtler4en2omxw34
removed bafkreidnypcqqistktq3cyotc3owxfnikktgc7evg3sbgtwiqf7fwqkhsq
removed bafkreif3vyo7irk4jcvciev4vj7u35j5qhhpauwnvtieu7nz44v44dur2q
removed bafkreic5thp6rwmunlxp7lknjzleq7ti5skiudc6l243o4dcthdnvfr5ea
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreigihdj3gr535vziknlja27nro3ad3l53msxkyq4s3gomrutw5xbcm
removed bafkreihrq7xnnjwcxxqy2ctd67t2swioluy3puqv6f76eeda25sozhba3e
ok 927 - repo gc (with-daemon, partial raw-leaves)
929 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 929 - can list dir
ok 929 - can list dir
930 - remove file forcibly Success 0.028
System.out »
ok 930 - remove file forcibly
932 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 932 - can list dir
ok 932 - can list dir
933 - remove multiple files forcibly Success 0.027
System.out »
ok 933 - remove multiple files forcibly
935 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 935 - can list dir
ok 935 - can list dir
936 - remove directory forcibly Success 0.027
System.out »
ok 936 - remove directory forcibly
938 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 938 - can list dir
ok 938 - can list dir
939 - remove multiple directories forcibly Success 0.028
System.out »
ok 939 - remove multiple directories forcibly
940 - remove multiple files Success 0.140
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 940 - remove multiple files
942 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 942 - can list dir
ok 942 - can list dir
943 - remove multiple directories Success 0.028
System.out »
ok 943 - remove multiple directories
944 - remove nonexistent path forcibly Success 0.047
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 944 - remove nonexistent path forcibly
945 - remove deeply nonexistent path forcibly Success 0.049
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 945 - remove deeply nonexistent path forcibly
947 - can list dir Success 0.047
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 947 - can list dir
ok 947 - can list dir
System.err »
Error: can't remove some files
948 - remove multiple files (with nonexistent one) Success 0.028
System.out »
ok 948 - remove multiple files (with nonexistent one)
949 - can mkdir in root (with-daemon, raw-leaves) Success 0.046
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 949 - can mkdir in root (with-daemon, raw-leaves)
950 - 'files ls' lists root by default (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 950 - 'files ls' lists root by default (with-daemon, raw-leaves)
951 - directory was created (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 951 - directory was created (with-daemon, raw-leaves)
953 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 953 - can list dir
ok 953 - can list dir
954 - directory is empty (with-daemon, raw-leaves) Success 0.027
System.out »
ok 954 - directory is empty (with-daemon, raw-leaves)
955 - stat works (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 955 - stat works (with-daemon, raw-leaves)
956 - hash is first line of stat (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn - cats/
ok 956 - hash is first line of stat (with-daemon, raw-leaves)
957 - stat --hash gives only hash (with-daemon, raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 957 - stat --hash gives only hash (with-daemon, raw-leaves)
958 - stat with multiple format options should fail (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 958 - stat with multiple format options should fail (with-daemon, raw-leaves)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
959 - compare hash option with format (with-daemon, raw-leaves) Success 0.097
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 959 - compare hash option with format (with-daemon, raw-leaves)
960 - compare size option with format (with-daemon, raw-leaves) Success 0.095
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 960 - compare size option with format (with-daemon, raw-leaves)
961 - check root hash (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 961 - check root hash (with-daemon, raw-leaves)
962 - stat works outside of MFS Success 0.048
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 962 - stat works outside of MFS
963 - stat compute the locality of a dag Success 0.050
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 963 - stat compute the locality of a dag
964 - cannot mkdir / (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 964 - cannot mkdir / (with-daemon, raw-leaves)
System.err »
Error: cannot create directory '/': Already exists
965 - check root hash was not changed (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 965 - check root hash was not changed (with-daemon, raw-leaves)
966 - can put files into directory (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 966 - can put files into directory (with-daemon, raw-leaves)
968 - can list dir Success 0.051
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 968 - can list dir
ok 968 - can list dir
969 - file shows up in directory (with-daemon, raw-leaves) Success 0.028
System.out »
ok 969 - file shows up in directory (with-daemon, raw-leaves)
970 - file has correct hash and size in directory (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 970 - file has correct hash and size in directory (with-daemon, raw-leaves)
971 - file has correct hash and size listed with -l Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 971 - file has correct hash and size listed with -l
972 - file has correct hash and size listed with --long Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 972 - file has correct hash and size listed with --long
973 - file has correct hash and size listed with -l --cid-base=base32 Success 0.051
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 973 - file has correct hash and size listed with -l --cid-base=base32
974 - file shows up with the correct name Success 0.051
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 974 - file shows up with the correct name
975 - can stat file (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 975 - can stat file (with-daemon, raw-leaves)
976 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 976 - stat output looks good
977 - can stat file with --cid-base=base32 (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 977 - can stat file with --cid-base=base32 (with-daemon, raw-leaves)
978 - stat output looks good with --cid-base=base32 Success 0.009
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 978 - stat output looks good with --cid-base=base32
979 - can read file (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 979 - can read file (with-daemon, raw-leaves)
980 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 980 - output looks good (with-daemon, raw-leaves)
981 - can put another file into root (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 981 - can put another file into root (with-daemon, raw-leaves)
983 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 983 - can list dir
ok 983 - can list dir
984 - file shows up in root (with-daemon, raw-leaves) Success 0.027
System.out »
ok 984 - file shows up in root (with-daemon, raw-leaves)
985 - can read file (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 985 - can read file (with-daemon, raw-leaves)
986 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 986 - output looks good (with-daemon, raw-leaves)
987 - can make deep directory (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 987 - can make deep directory (with-daemon, raw-leaves)
989 - can list dir Success 0.050
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 989 - can list dir
ok 989 - can list dir
990 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 990 - dir entries look good
991 - can list dir Success 0.051
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 991 - can list dir
992 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 992 - dir entries look good
993 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 993 - can list dir
994 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 994 - dir entries look good
995 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 995 - can list dir
996 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 996 - dir entries look good
997 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 997 - can list dir
998 - directory was created correctly (with-daemon, raw-leaves) Success 0.028
System.out »
ok 998 - directory was created correctly (with-daemon, raw-leaves)
999 - dir has correct name Success 0.093
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 999 - dir has correct name
1000 - can copy file into new dir (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 1000 - can copy file into new dir (with-daemon, raw-leaves)
1001 - can copy file into deep dir using -p flag (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 1001 - can copy file into deep dir using -p flag (with-daemon, raw-leaves)
1002 - file copied into deep dir exists (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 1002 - file copied into deep dir exists (with-daemon, raw-leaves)
1003 - cleanup deep cp -p test (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 1003 - cleanup deep cp -p test (with-daemon, raw-leaves)
1004 - can read file (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 1004 - can read file (with-daemon, raw-leaves)
1005 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 1005 - output looks good (with-daemon, raw-leaves)
1007 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1007 - can list dir
ok 1007 - can list dir
1008 - file shows up in dir (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1008 - file shows up in dir (with-daemon, raw-leaves)
1009 - can remove file (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 1009 - can remove file (with-daemon, raw-leaves)
1011 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1011 - can list dir
ok 1011 - can list dir
1012 - file no longer appears (with-daemon, raw-leaves) Success 0.027
System.out »
ok 1012 - file no longer appears (with-daemon, raw-leaves)
1013 - can remove dir (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 1013 - can remove dir (with-daemon, raw-leaves)
1015 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1015 - can list dir
ok 1015 - can list dir
1016 - dir no longer appears (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1016 - dir no longer appears (with-daemon, raw-leaves)
1017 - can remove file from root (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 1017 - can remove file from root (with-daemon, raw-leaves)
1019 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1019 - can list dir
ok 1019 - can list dir
1020 - file no longer appears (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1020 - file no longer appears (with-daemon, raw-leaves)
1021 - check root hash (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1021 - check root hash (with-daemon, raw-leaves)
1022 - cannot remove root (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 1022 - cannot remove root (with-daemon, raw-leaves)
System.err »
Error: can't remove some files
1023 - check root hash was not changed (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1023 - check root hash was not changed (with-daemon, raw-leaves)
1024 - read from offset works (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 1024 - read from offset works (with-daemon, raw-leaves)
1025 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 1025 - output looks good (with-daemon, raw-leaves)
1026 - read with size works (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 1026 - read with size works (with-daemon, raw-leaves)
1027 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 1027 - output looks good (with-daemon, raw-leaves)
1028 - cannot read from negative offset (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 1028 - cannot read from negative offset (with-daemon, raw-leaves)
System.err »
Error: cannot specify negative offset
1029 - read from offset 0 works (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 1029 - read from offset 0 works (with-daemon, raw-leaves)
1030 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1030 - output looks good (with-daemon, raw-leaves)
1031 - read last byte works (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 1031 - read last byte works (with-daemon, raw-leaves)
1032 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 1032 - output looks good (with-daemon, raw-leaves)
1033 - offset past end of file fails (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 1033 - offset past end of file fails (with-daemon, raw-leaves)
System.err »
Error: offset was past end of file (5 > 4)
1034 - cannot read negative count bytes (with-daemon, raw-leaves) Success 0.044
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 1034 - cannot read negative count bytes (with-daemon, raw-leaves)
System.err »
Error: Unknown Command "read"
1035 - reading zero bytes prints nothing (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 1035 - reading zero bytes prints nothing (with-daemon, raw-leaves)
1036 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 1036 - output looks good (with-daemon, raw-leaves)
1037 - count > len(file) prints entire file (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 1037 - count > len(file) prints entire file (with-daemon, raw-leaves)
1038 - output looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1038 - output looks good (with-daemon, raw-leaves)
1039 - can write file (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 1039 - can write file (with-daemon, raw-leaves)
1041 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1041 - can list dir
ok 1041 - can list dir
1042 - file was created (with-daemon, raw-leaves) Success 0.027
System.out »
ok 1042 - file was created (with-daemon, raw-leaves)
1043 - can read file we just wrote (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 1043 - can read file we just wrote (with-daemon, raw-leaves)
1044 - can write to offset (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 1044 - can write to offset (with-daemon, raw-leaves)
1045 - file looks correct (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 1045 - file looks correct (with-daemon, raw-leaves)
1046 - file hash correct (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 1046 - file hash correct (with-daemon, raw-leaves)
1047 - can't write to negative offset (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 1047 - can't write to negative offset (with-daemon, raw-leaves)
System.err »
Error: cannot have negative write offset
1048 - verify file was not changed (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 1048 - verify file was not changed (with-daemon, raw-leaves)
1049 - write new file for testing (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 1049 - write new file for testing (with-daemon, raw-leaves)
1050 - write to offset past end works (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 1050 - write to offset past end works (with-daemon, raw-leaves)
1051 - can read file (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 1051 - can read file (with-daemon, raw-leaves)
1052 - output looks good (with-daemon, raw-leaves) Success 0.007
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 1052 - output looks good (with-daemon, raw-leaves)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.2971e-05 s, 218 kB/s
1053 - cleanup (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 1053 - cleanup (with-daemon, raw-leaves)
1054 - cannot write to directory (with-daemon, raw-leaves) Success 0.094
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 1054 - cannot write to directory (with-daemon, raw-leaves)
System.err »
Error: /cats was not a file
1055 - verify dir was not changed (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 1055 - verify dir was not changed (with-daemon, raw-leaves)
1056 - cannot write to nonexistent path (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 1056 - cannot write to nonexistent path (with-daemon, raw-leaves)
System.err »
Error: file does not exist
1058 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1058 - can list dir
ok 1058 - can list dir
1059 - no new paths were created (with-daemon, raw-leaves) Success 0.027
System.out »
ok 1059 - no new paths were created (with-daemon, raw-leaves)
1060 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.008
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1060 - 'ipfs daemon' is running when WITH_DAEMON is set
1061 - write 'no-flush' succeeds (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 1061 - write 'no-flush' succeeds (with-daemon, raw-leaves)
1062 - root hash not bubbled up yet (with-daemon, raw-leaves) Success 0.056
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 1062 - root hash not bubbled up yet (with-daemon, raw-leaves)
1063 - changes bubbled up to root on inspection (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 1063 - changes bubbled up to root on inspection (with-daemon, raw-leaves)
1064 - root hash looks good (with-daemon, raw-leaves) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 1064 - root hash looks good (with-daemon, raw-leaves)
1065 - /cats hash looks good (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 1065 - /cats hash looks good (with-daemon, raw-leaves)
1066 - flush root succeeds (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmTHzLiSouBHVTssS8xRzmfWGAvTGhPEjtPdB6pWMQdxJX"}
ok 1066 - flush root succeeds (with-daemon, raw-leaves)
1067 - can mv dir (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 1067 - can mv dir (with-daemon, raw-leaves)
1068 - can mv dir and dest dir is / (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 1068 - can mv dir and dest dir is / (with-daemon, raw-leaves)
1069 - can mv dir and dest dir path has no trailing slash (with-daemon, raw-leaves) Success 0.051
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 1069 - can mv dir and dest dir path has no trailing slash (with-daemon, raw-leaves)
1071 - can list dir Success 0.051
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1071 - can list dir
ok 1071 - can list dir
1072 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1072 - dir entries look good
1073 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1073 - can list dir
1074 - mv worked (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1074 - mv worked (with-daemon, raw-leaves)
1075 - cleanup, remove 'cats' (with-daemon, raw-leaves) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 1075 - cleanup, remove 'cats' (with-daemon, raw-leaves)
1077 - can list dir Success 0.052
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1077 - can list dir
ok 1077 - can list dir
1078 - cleanup looks good (with-daemon, raw-leaves) Success 0.029
System.out »
ok 1078 - cleanup looks good (with-daemon, raw-leaves)
1079 - create a new file (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 1079 - create a new file (with-daemon, raw-leaves)
1080 - truncate and write over that file (with-daemon, raw-leaves) Success 0.054
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 1080 - truncate and write over that file (with-daemon, raw-leaves)
1081 - output looks good (with-daemon, raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 1081 - output looks good (with-daemon, raw-leaves)
1082 - file hash correct (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 1082 - file hash correct (with-daemon, raw-leaves)
1083 - cleanup (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 1083 - cleanup (with-daemon, raw-leaves)
1084 - mkdir --flush works (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1084 - mkdir --flush works (with-daemon, raw-leaves)
1085 - mkdir --flush works a second time (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1085 - mkdir --flush works a second time (with-daemon, raw-leaves)
1087 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1087 - can list dir
ok 1087 - can list dir
1088 - dir looks right (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1088 - dir looks right (with-daemon, raw-leaves)
1090 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1090 - can list dir
ok 1090 - can list dir
1091 - child dir looks right (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1091 - child dir looks right (with-daemon, raw-leaves)
1092 - cleanup (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 1092 - cleanup (with-daemon, raw-leaves)
1094 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1094 - can list dir
ok 1094 - can list dir
1095 - child dir looks right (with-daemon, raw-leaves) Success 0.028
System.out »
ok 1095 - child dir looks right (with-daemon, raw-leaves)
1096 - create and remove dir (with-daemon, raw-leaves) Success 0.093
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 1096 - create and remove dir (with-daemon, raw-leaves)
1097 - create test file (with-daemon, raw-leaves) Success 0.050
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 1097 - create test file (with-daemon, raw-leaves)
1098 - copy test file onto test dir (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 1098 - copy test file onto test dir (with-daemon, raw-leaves)
1099 - test /test_dir (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 1099 - test /test_dir (with-daemon, raw-leaves)
1100 - clean up /test_dir and /test_file (with-daemon, raw-leaves) Success 0.091
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 1100 - clean up /test_dir and /test_file (with-daemon, raw-leaves)
1101 - make a directory and a file (with-daemon, raw-leaves) Success 0.093
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 1101 - make a directory and a file (with-daemon, raw-leaves)
1102 - copy a file into a directory (with-daemon, raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 1102 - copy a file into a directory (with-daemon, raw-leaves)
1103 - file made it into directory (with-daemon, raw-leaves) Success 0.047
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 1103 - file made it into directory (with-daemon, raw-leaves)
1104 - test copy --force overwrites files Success 0.228
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 1104 - test copy --force overwrites files
1105 - clean up Success 0.091
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 1105 - clean up
1106 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, raw-leaves) Success 0.049
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 1106 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, raw-leaves)
System.err »
Error: file does not exist
1107 - can write file and create intermediate directories (with-daemon, raw-leaves) Success 0.095
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 1107 - can write file and create intermediate directories (with-daemon, raw-leaves)
1108 - can write file and create intermediate directories with short flags (with-daemon, raw-leaves) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 1108 - can write file and create intermediate directories with short flags (with-daemon, raw-leaves)
1109 - can write another file in the same directory with -e -p (with-daemon, raw-leaves) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 1109 - can write another file in the same directory with -e -p (with-daemon, raw-leaves)
1110 - clean up (with-daemon, raw-leaves) Success 0.046
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 1110 - clean up (with-daemon, raw-leaves)
1112 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1112 - can list dir
ok 1112 - can list dir
1113 - root mfs entry is empty (with-daemon, raw-leaves) Success 0.027
System.out »
ok 1113 - root mfs entry is empty (with-daemon, raw-leaves)
1114 - repo gc (with-daemon, raw-leaves) Success 0.052
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreiddxzzoljxwk66mcktgdibxv2tmbfdije75imaied6tlri3jdugta
removed bafkreidm26ihpfjazdxdsym7albjgs3f3btarunaz6eqqbfiaum2f3rylu
removed bafkreicupg676yp6l5vc7rt4npsupquwztoi4llnzdibivgwgbdm4uy2o4
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreiezd3c2wz5cgflebf3zejjusgsy4acqpbrvgjaxviwy754hdcwskq
removed bafkreid4q4ovpejky42u6dlv3b3qgyl64lc3jpx34fuoxo2faelr2ewriy
removed bafkreiefs4zls44cuccyhvvgp5meesdfaxsqx3tvjpm3k6wdvp4bxfyu6i
removed bafkreia4uba2drvobsfj6gk7khmxnlhvm5r5zw2igqgaws2g7mglmvo2e4
removed bafkreid5ifgj3efk2befabvduh7j76e322xiul235pyfwyqsc5aiar42ey
removed bafkreidrygncmnwsqznj7ey67v7g7gowv72zfmhm3ddp2gqvik2q4skwbq
removed bafkreid6ry7x72pm3ylusmbboelqzxyc6bsivqgtbpgfw5onusqbt7g6bm
removed bafkreibcpf4b6ovqbegmmej74tujmxskc5cjjqajg6qcckeyr7ktuhnh3i
removed bafkreiefzeug5nsg5ryxndkbdmars33772wz6rf5m7v63hl45sxoqpkpua
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreifg2gp5cm5egofktvkxlnfn7i5x5y7f3qw4jib23goto4o3zpenmi
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreib2al3nsfd23khpv4m6bphffdlt6ttcizxohsz6vpflt6ewlsul2m
removed bafkreigclwvstehpeugtx3ckslar6mmlslg7p4ttttdql76l46dgnxvizm
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreigt37jy4wfjlh4qtqkyvbr2s5mxo7p2bmm2k4g4yfz5c2awaaq4qa
removed bafkreiadx3kwtmlc3uywzb6owdqgls2amklu3ukrt4xmvt4guwy33ct7uq
removed bafkreiglzp5gjffvpqevoddcht6sc7h2si6tmdzzdloxgmkkwtwftxlgo4
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreibxz26hpo43ez2mmqmttubatzuenq57tqg2jqcpybwwup7wwl5sze
removed bafkreicfszfnhfhi2q2u5jeqexvytm2b66r2nmwy4f6noekhyyhuje3ztq
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreihoom6pipvtzwutdsfh72tc2x6xwofrrjsst3ftemaj2cazbui3mq
removed bafkreifoybygix7fh3r3g5rqle3wcnhqldgdg4shzf4k3ulyw3gn7mabt4
removed bafkreifd2lzou4ohj5wme2qgpsvtjydqmflfea2rtuvcmetm53lbxmnh7i
removed bafkreiaol6qyc4rxopvjwk2fimjdqdukva4mgfyxnxtis6kdygkng3cdai
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreig75j5ce2yo2hnoyaf632hwog3cqgkgxrt5wmglyr3egra6zng2ku
removed bafkreic4ko36gl6nqkjsichxwxnahchdnrea7zzqezsyl2a57w4vh2zxuy
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreignzuj2hr727brqmlzgkmtrv45t2ipzpntir2u66pn7sr6bkepr3a
removed bafkreig4vobfucc6ndvouzlojnpod2r44ia4bnxzqycznoqjusppdnsx2q
removed bafkreihe6zgmqmeo4s2i2dzradn4sh4kkera4set3dcx47vuhzy3jn3dw4
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreickx2a5pjj5bsulirozelblebe3iuv6ji7vpibmjiybiqryzsgble
removed bafkreie6ykytm4aq7rsfo36hgo4s2uezouc7g3otleggr2rq43x7h4xrcu
removed bafkreidlf2ew32ekmkl5dl6sgeqnuygk5x2oi5kjbyuy5m3p5pooitfsqu
removed bafkreifn2ephslzt2bfgzmqraaobcpf3buhwpht4u2ezmszcmfizfgua5a
removed bafkreibbgdql5nhdrpg4ih2pz6pbfhvx2pxi54mwkqi7aedyyi66ft2cdm
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreibjajgyepb7rkio5nyujeqe6556h66hv7wepbz7nro57hvf4xh6b4
removed bafkreiae6rzt7vtfuswsyxibfltzsl7blhxnolgni2o43nj36kvid4chii
removed bafkreigq6rnotwftrllyz3f7kvmiynuhb7gdghnhyvr4ysje4ijjhyomby
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreiaau5gkcnx2yijmvbgncpe2wvcp72265mgodkhbglfch52i5mv2vi
removed bafkreieyutxafkanmlpulb3mmsf4k65awioc3ccwdw7u2wbwkaok23idem
removed bafkreidazjkgsmc26phy4wvwicrcpeksttgo7y4r6xikirz7qatj4iq7ee
removed bafkreic5qs74k4brm2g32izdakjmjdt4e4kfmjzgbzebshkq3uyddcx7ea
removed bafkreib2h2kpccg5sd5oakkbcgfsyh3fsjmmevh3mzv7aifuubt7jocujy
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreigwhb3q36yrm37jv5fo2ap6r6eyohckqrxmlejrenex4xlnuxiy3e
removed bafkreickol7ijgms7pjduc7fvegsn2rn7ryqqwfrepsukyhyyapaev2q2e
removed bafkreialzgmyqqb2zz5thkpzfxvmpwqgifkt4ta3dz7uz6bsxh5r4spq2e
removed bafkreibg4bjfcuvfpx5uwkm5iuus3prv65tzxkmuwcqwercunyvlhbqi7e
removed bafkreibkrazpbejqh3qun7xfnsl7yofl74o4jwhxebpmtrcpavebokuqtm
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreigze7pg7yci3mkp4ibxesmjpazx7dfanpar4vtgkrid7t2drpkbue
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreicbv4ug3qfrolws6hfjgt6se6g6jiizembp7idqq7hke2bopu3s4m
removed bafkreieuesxlezdu5fdhci3jyimqxttkblbyk4rq6mnxn6rmluhxthkl4q
removed bafkreicdi4ukiefhr5lpyg2ythbvsnbw4ynlbrzr5eds3fpjnwzjaic6km
removed bafkreifkofxho3t27zf4lumzzpivzlu2kl557xkbuioqkdn7m5gsiqepp4
removed bafkreidffzv3pi7fxe5uantpa7ilpfrclk73kpvoqdkgixsvsjmcxx2d3y
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreifxcm3xkdhgjqgj66lllivxebpzlo7i325wlqk6424xaheqy2m4wy
removed bafkreigjnznfax4oa5havbmc6dxybgstcoziwj3wkracczz5oyrlixbfpe
removed bafkreieci56kvnoiy2zaof2aiwmhxntapqtw5nvpyrlvkz34nljwr5qdlu
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreig6sjjhlcoxfnkcxcnktusha2rchq5q7ydcxgaf2t7gatke6fqzn4
removed bafkreicjtpr2mt6uppojb4vvdomuqkrgmddtwvixeqri4lxirep5zfd5aq
removed bafkreifwa2wvccjywufrcnptoqxdzsa77pw5g3eqo2u7chgv6fn3bwama4
removed bafkreib2ixtll5rmuuquqggjot5h4pwe5vvuqu5t5n6c76skezmhhhiaxm
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreidfsj6ukryu2afxas25nxdrgnqnzaiqskpogzjmhbz4pqyprh6d54
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiasuypu4fz7woqrybowi4pxi4upoyrrwss7zwlgptxtv6d2hlsnyi
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreicf6iyjzar3x236rrv5a536hk37eahdorwicnzoj3z4vfs3lv7hlu
removed bafkreicpuxevnfqe6r7ctxubsx2q6i6hi6wwka3xnxr7xmvjew4ex3zxly
removed bafkreigblak2rn2wguizmooprpt76l7jd4dbhkywilywc7cxhlshtcu3oi
removed bafkreia4q63he72sgzrn64kpa2uu5it7utmqkdby6t3xck6umy77x7p2ae
removed bafkreieadpu7t6hefr44lz3n4t4dsmvq7ot7efxpt2dva6a4ua7mqpha6e
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreid5ornqwmx3rpuve3ldlfepgpye2dffropimlx275sqt4ghhh664y
removed bafkreigihdj3gr535vziknlja27nro3ad3l53msxkyq4s3gomrutw5xbcm
removed bafkreidp5ewuukicgeeseufgkrl6lndq6ngn7thcigx6tcb7ecgbdeekkm
removed bafkreid2wpo3g4xrlteciii67dlju5vjp3sjgskmexby74bapd3ruswehu
removed bafkreif7d6es5ifhkjzi3mifqv2c2fghiiahm5f3hylm3dq7wn35lr6ehy
ok 1114 - repo gc (with-daemon, raw-leaves)
1116 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1116 - can list dir
ok 1116 - can list dir
1117 - remove file forcibly Success 0.027
System.out »
ok 1117 - remove file forcibly
1119 - can list dir Success 0.048
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1119 - can list dir
ok 1119 - can list dir
1120 - remove multiple files forcibly Success 0.028
System.out »
ok 1120 - remove multiple files forcibly
1122 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1122 - can list dir
ok 1122 - can list dir
1123 - remove directory forcibly Success 0.028
System.out »
ok 1123 - remove directory forcibly
1125 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1125 - can list dir
ok 1125 - can list dir
1126 - remove multiple directories forcibly Success 0.028
System.out »
ok 1126 - remove multiple directories forcibly
1127 - remove multiple files Success 0.141
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 1127 - remove multiple files
1129 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1129 - can list dir
ok 1129 - can list dir
1130 - remove multiple directories Success 0.028
System.out »
ok 1130 - remove multiple directories
1131 - remove nonexistent path forcibly Success 0.047
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 1131 - remove nonexistent path forcibly
1132 - remove deeply nonexistent path forcibly Success 0.047
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 1132 - remove deeply nonexistent path forcibly
1134 - can list dir Success 0.050
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 1134 - can list dir
ok 1134 - can list dir
System.err »
Error: can't remove some files
1135 - remove multiple files (with nonexistent one) Success 0.028
System.out »
ok 1135 - remove multiple files (with nonexistent one)
1136 - can mkdir in root (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 1136 - can mkdir in root (with-daemon, cidv1)
1137 - 'files ls' lists root by default (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 1137 - 'files ls' lists root by default (with-daemon, cidv1)
1138 - directory was created (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 1138 - directory was created (with-daemon, cidv1)
1140 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1140 - can list dir
ok 1140 - can list dir
1141 - directory is empty (with-daemon, cidv1) Success 0.028
System.out »
ok 1141 - directory is empty (with-daemon, cidv1)
1142 - stat works (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 1142 - stat works (with-daemon, cidv1)
1143 - hash is first line of stat (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 - cats/
ok 1143 - hash is first line of stat (with-daemon, cidv1)
1144 - stat --hash gives only hash (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 1144 - stat --hash gives only hash (with-daemon, cidv1)
1145 - stat with multiple format options should fail (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 1145 - stat with multiple format options should fail (with-daemon, cidv1)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
1146 - compare hash option with format (with-daemon, cidv1) Success 0.095
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 1146 - compare hash option with format (with-daemon, cidv1)
1147 - compare size option with format (with-daemon, cidv1) Success 0.095
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 1147 - compare size option with format (with-daemon, cidv1)
1148 - check root hash (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1148 - check root hash (with-daemon, cidv1)
1149 - stat works outside of MFS Success 0.048
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 1149 - stat works outside of MFS
1150 - stat compute the locality of a dag Success 0.053
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 1150 - stat compute the locality of a dag
1151 - cannot mkdir / (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 1151 - cannot mkdir / (with-daemon, cidv1)
System.err »
Error: cannot create directory '/': Already exists
1152 - check root hash was not changed (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1152 - check root hash was not changed (with-daemon, cidv1)
1153 - can put files into directory (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 1153 - can put files into directory (with-daemon, cidv1)
1155 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1155 - can list dir
ok 1155 - can list dir
1156 - file shows up in directory (with-daemon, cidv1) Success 0.027
System.out »
ok 1156 - file shows up in directory (with-daemon, cidv1)
1157 - file has correct hash and size in directory (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1157 - file has correct hash and size in directory (with-daemon, cidv1)
1158 - file has correct hash and size listed with -l Success 0.050
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1158 - file has correct hash and size listed with -l
1159 - file has correct hash and size listed with --long Success 0.049
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1159 - file has correct hash and size listed with --long
1160 - file has correct hash and size listed with -l --cid-base=base32 Success 0.052
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1160 - file has correct hash and size listed with -l --cid-base=base32
1161 - file shows up with the correct name Success 0.050
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1161 - file shows up with the correct name
1162 - can stat file (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 1162 - can stat file (with-daemon, cidv1)
1163 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1163 - stat output looks good
1164 - can stat file with --cid-base=base32 (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 1164 - can stat file with --cid-base=base32 (with-daemon, cidv1)
1165 - stat output looks good with --cid-base=base32 Success 0.008
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1165 - stat output looks good with --cid-base=base32
1166 - can read file (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 1166 - can read file (with-daemon, cidv1)
1167 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 1167 - output looks good (with-daemon, cidv1)
1168 - can put another file into root (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 1168 - can put another file into root (with-daemon, cidv1)
1170 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1170 - can list dir
ok 1170 - can list dir
1171 - file shows up in root (with-daemon, cidv1) Success 0.027
System.out »
ok 1171 - file shows up in root (with-daemon, cidv1)
1172 - can read file (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 1172 - can read file (with-daemon, cidv1)
1173 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 1173 - output looks good (with-daemon, cidv1)
1174 - can make deep directory (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 1174 - can make deep directory (with-daemon, cidv1)
1176 - can list dir Success 0.049
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1176 - can list dir
ok 1176 - can list dir
1177 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1177 - dir entries look good
1178 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1178 - can list dir
1179 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1179 - dir entries look good
1180 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1180 - can list dir
1181 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1181 - dir entries look good
1182 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1182 - can list dir
1183 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1183 - dir entries look good
1184 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1184 - can list dir
1185 - directory was created correctly (with-daemon, cidv1) Success 0.028
System.out »
ok 1185 - directory was created correctly (with-daemon, cidv1)
1186 - dir has correct name Success 0.092
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 1186 - dir has correct name
1187 - can copy file into new dir (with-daemon, cidv1) Success 0.051
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 1187 - can copy file into new dir (with-daemon, cidv1)
1188 - can copy file into deep dir using -p flag (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 1188 - can copy file into deep dir using -p flag (with-daemon, cidv1)
1189 - file copied into deep dir exists (with-daemon, cidv1) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 1189 - file copied into deep dir exists (with-daemon, cidv1)
1190 - cleanup deep cp -p test (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 1190 - cleanup deep cp -p test (with-daemon, cidv1)
1191 - can read file (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 1191 - can read file (with-daemon, cidv1)
1192 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 1192 - output looks good (with-daemon, cidv1)
1194 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1194 - can list dir
ok 1194 - can list dir
1195 - file shows up in dir (with-daemon, cidv1) Success 0.028
System.out »
ok 1195 - file shows up in dir (with-daemon, cidv1)
1196 - can remove file (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 1196 - can remove file (with-daemon, cidv1)
1198 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1198 - can list dir
ok 1198 - can list dir
1199 - file no longer appears (with-daemon, cidv1) Success 0.027
System.out »
ok 1199 - file no longer appears (with-daemon, cidv1)
1200 - can remove dir (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 1200 - can remove dir (with-daemon, cidv1)
1202 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1202 - can list dir
ok 1202 - can list dir
1203 - dir no longer appears (with-daemon, cidv1) Success 0.027
System.out »
ok 1203 - dir no longer appears (with-daemon, cidv1)
1204 - can remove file from root (with-daemon, cidv1) Success 0.046
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 1204 - can remove file from root (with-daemon, cidv1)
1206 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1206 - can list dir
ok 1206 - can list dir
1207 - file no longer appears (with-daemon, cidv1) Success 0.028
System.out »
ok 1207 - file no longer appears (with-daemon, cidv1)
1208 - check root hash (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1208 - check root hash (with-daemon, cidv1)
1209 - cannot remove root (with-daemon, cidv1) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 1209 - cannot remove root (with-daemon, cidv1)
System.err »
Error: can't remove some files
1210 - check root hash was not changed (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1210 - check root hash was not changed (with-daemon, cidv1)
1211 - read from offset works (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 1211 - read from offset works (with-daemon, cidv1)
1212 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 1212 - output looks good (with-daemon, cidv1)
1213 - read with size works (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 1213 - read with size works (with-daemon, cidv1)
1214 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 1214 - output looks good (with-daemon, cidv1)
1215 - cannot read from negative offset (with-daemon, cidv1) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 1215 - cannot read from negative offset (with-daemon, cidv1)
System.err »
Error: cannot specify negative offset
1216 - read from offset 0 works (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 1216 - read from offset 0 works (with-daemon, cidv1)
1217 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1217 - output looks good (with-daemon, cidv1)
1218 - read last byte works (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 1218 - read last byte works (with-daemon, cidv1)
1219 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 1219 - output looks good (with-daemon, cidv1)
1220 - offset past end of file fails (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 1220 - offset past end of file fails (with-daemon, cidv1)
System.err »
Error: offset was past end of file (5 > 4)
1221 - cannot read negative count bytes (with-daemon, cidv1) Success 0.045
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 1221 - cannot read negative count bytes (with-daemon, cidv1)
System.err »
Error: Unknown Command "read"
1222 - reading zero bytes prints nothing (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 1222 - reading zero bytes prints nothing (with-daemon, cidv1)
1223 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 1223 - output looks good (with-daemon, cidv1)
1224 - count > len(file) prints entire file (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 1224 - count > len(file) prints entire file (with-daemon, cidv1)
1225 - output looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1225 - output looks good (with-daemon, cidv1)
1226 - can write file (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 1226 - can write file (with-daemon, cidv1)
1228 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1228 - can list dir
ok 1228 - can list dir
1229 - file was created (with-daemon, cidv1) Success 0.027
System.out »
ok 1229 - file was created (with-daemon, cidv1)
1230 - can read file we just wrote (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 1230 - can read file we just wrote (with-daemon, cidv1)
1231 - can write to offset (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 1231 - can write to offset (with-daemon, cidv1)
1232 - file looks correct (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 1232 - file looks correct (with-daemon, cidv1)
1233 - file hash correct (with-daemon, cidv1) Success 0.053
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 1233 - file hash correct (with-daemon, cidv1)
1234 - can't write to negative offset (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 1234 - can't write to negative offset (with-daemon, cidv1)
System.err »
Error: cannot have negative write offset
1235 - verify file was not changed (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 1235 - verify file was not changed (with-daemon, cidv1)
1236 - write new file for testing (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 1236 - write new file for testing (with-daemon, cidv1)
1237 - write to offset past end works (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 1237 - write to offset past end works (with-daemon, cidv1)
1238 - can read file (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 1238 - can read file (with-daemon, cidv1)
1239 - output looks good (with-daemon, cidv1) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 1239 - output looks good (with-daemon, cidv1)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.3613e-05 s, 212 kB/s
1240 - cleanup (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 1240 - cleanup (with-daemon, cidv1)
1241 - cannot write to directory (with-daemon, cidv1) Success 0.094
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 1241 - cannot write to directory (with-daemon, cidv1)
System.err »
Error: /cats was not a file
1242 - verify dir was not changed (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 1242 - verify dir was not changed (with-daemon, cidv1)
1243 - cannot write to nonexistent path (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 1243 - cannot write to nonexistent path (with-daemon, cidv1)
System.err »
Error: file does not exist
1245 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1245 - can list dir
ok 1245 - can list dir
1246 - no new paths were created (with-daemon, cidv1) Success 0.027
System.out »
ok 1246 - no new paths were created (with-daemon, cidv1)
1247 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.007
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1247 - 'ipfs daemon' is running when WITH_DAEMON is set
1248 - write 'no-flush' succeeds (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 1248 - write 'no-flush' succeeds (with-daemon, cidv1)
1249 - root hash not bubbled up yet (with-daemon, cidv1) Success 0.056
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 1249 - root hash not bubbled up yet (with-daemon, cidv1)
1250 - changes bubbled up to root on inspection (with-daemon, cidv1) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 1250 - changes bubbled up to root on inspection (with-daemon, cidv1)
1251 - root hash looks good (with-daemon, cidv1) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 1251 - root hash looks good (with-daemon, cidv1)
1252 - /cats hash looks good (with-daemon, cidv1) Success 0.051
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 1252 - /cats hash looks good (with-daemon, cidv1)
1253 - flush root succeeds (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"QmTLdTaZNj8Mvq1cgYup59ZFJFv1KxptouFSZUZKeq7X3z"}
ok 1253 - flush root succeeds (with-daemon, cidv1)
1254 - can mv dir (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 1254 - can mv dir (with-daemon, cidv1)
1255 - can mv dir and dest dir is / (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 1255 - can mv dir and dest dir is / (with-daemon, cidv1)
1256 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 1256 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1)
1258 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1258 - can list dir
ok 1258 - can list dir
1259 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1259 - dir entries look good
1260 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1260 - can list dir
1261 - mv worked (with-daemon, cidv1) Success 0.027
System.out »
ok 1261 - mv worked (with-daemon, cidv1)
1262 - cleanup, remove 'cats' (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 1262 - cleanup, remove 'cats' (with-daemon, cidv1)
1264 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1264 - can list dir
ok 1264 - can list dir
1265 - cleanup looks good (with-daemon, cidv1) Success 0.028
System.out »
ok 1265 - cleanup looks good (with-daemon, cidv1)
1266 - create a new file (with-daemon, cidv1) Success 0.051
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 1266 - create a new file (with-daemon, cidv1)
1267 - truncate and write over that file (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 1267 - truncate and write over that file (with-daemon, cidv1)
1268 - output looks good (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 1268 - output looks good (with-daemon, cidv1)
1269 - file hash correct (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 1269 - file hash correct (with-daemon, cidv1)
1270 - cleanup (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 1270 - cleanup (with-daemon, cidv1)
1271 - mkdir --flush works (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1271 - mkdir --flush works (with-daemon, cidv1)
1272 - mkdir --flush works a second time (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1272 - mkdir --flush works a second time (with-daemon, cidv1)
1274 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1274 - can list dir
ok 1274 - can list dir
1275 - dir looks right (with-daemon, cidv1) Success 0.028
System.out »
ok 1275 - dir looks right (with-daemon, cidv1)
1277 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1277 - can list dir
ok 1277 - can list dir
1278 - child dir looks right (with-daemon, cidv1) Success 0.028
System.out »
ok 1278 - child dir looks right (with-daemon, cidv1)
1279 - cleanup (with-daemon, cidv1) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 1279 - cleanup (with-daemon, cidv1)
1281 - can list dir Success 0.047
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1281 - can list dir
ok 1281 - can list dir
1282 - child dir looks right (with-daemon, cidv1) Success 0.028
System.out »
ok 1282 - child dir looks right (with-daemon, cidv1)
1283 - create and remove dir (with-daemon, cidv1) Success 0.090
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 1283 - create and remove dir (with-daemon, cidv1)
1284 - create test file (with-daemon, cidv1) Success 0.050
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 1284 - create test file (with-daemon, cidv1)
1285 - copy test file onto test dir (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 1285 - copy test file onto test dir (with-daemon, cidv1)
1286 - test /test_dir (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 1286 - test /test_dir (with-daemon, cidv1)
1287 - clean up /test_dir and /test_file (with-daemon, cidv1) Success 0.091
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 1287 - clean up /test_dir and /test_file (with-daemon, cidv1)
1288 - make a directory and a file (with-daemon, cidv1) Success 0.092
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 1288 - make a directory and a file (with-daemon, cidv1)
1289 - copy a file into a directory (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 1289 - copy a file into a directory (with-daemon, cidv1)
1290 - file made it into directory (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 1290 - file made it into directory (with-daemon, cidv1)
1291 - test copy --force overwrites files Success 0.226
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 1291 - test copy --force overwrites files
1292 - clean up Success 0.089
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 1292 - clean up
1293 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1) Success 0.049
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 1293 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1)
System.err »
Error: file does not exist
1294 - can write file and create intermediate directories (with-daemon, cidv1) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 1294 - can write file and create intermediate directories (with-daemon, cidv1)
1295 - can write file and create intermediate directories with short flags (with-daemon, cidv1) Success 0.093
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 1295 - can write file and create intermediate directories with short flags (with-daemon, cidv1)
1296 - can write another file in the same directory with -e -p (with-daemon, cidv1) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 1296 - can write another file in the same directory with -e -p (with-daemon, cidv1)
1297 - clean up (with-daemon, cidv1) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 1297 - clean up (with-daemon, cidv1)
1299 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1299 - can list dir
ok 1299 - can list dir
1300 - root mfs entry is empty (with-daemon, cidv1) Success 0.027
System.out »
ok 1300 - root mfs entry is empty (with-daemon, cidv1)
1301 - repo gc (with-daemon, cidv1) Success 0.052
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreidm26ihpfjazdxdsym7albjgs3f3btarunaz6eqqbfiaum2f3rylu
removed bafkreickjecu37qv6ue54ofk3n4rpm4g4abuofz7yc4qn4skffy263kkou
removed bafkreidrq2sgvaosi3f7ssy6jw4ba2whhj266wz7wdirctwmum2ija6hsi
removed bafkreih2g2bhsw5k3umcsjyynzmbrn5qfax4uztnsjzzwaquiwxeokc6wy
removed bafkreia5zadkk7i6j3eoq4pzma4burs62tw4r5sexhmhw34txzwezvuxki
removed bafkreih5ch4wc2z23dippmznh4nvfqdl3zpeeoyrqa3btsltbbaa6qeri4
removed bafkreiefs4zls44cuccyhvvgp5meesdfaxsqx3tvjpm3k6wdvp4bxfyu6i
removed bafkreifphwgsag2rer5pgl5ygyiefb7fbflsnkobmznyra7vycr4im6l2q
removed bafkreia2hlmgzjqfha4zt3gvtevlriin2mqovtpziow3dirxarntauawbi
removed bafkreieeoerokmfsfcaowcfabdq4t5d6azsffpctylpvhimw2us2bnuqnu
removed bafkreibh7hn2yri7w5x3ezlm2lqe3atcew6xpdjfa3wfgilmy7ulrtmqiy
removed bafkreigydxrwciql4ildsp2mueeje4x53fdonxrkendj72po7tlq4hhi7y
removed bafkreib3jdutduiwd6b45zccl5zprbfdh2ipvmvyrgr5rmxilm5irgp47u
removed bafkreia62jenfhx36btedleqh5mc6mniz4bv5oamd2mv6gb7jmxel3uzha
removed bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
removed bafkreih4zucwzs2bivf6dk3jivezzwhsea6jnylctahq2bkuhw67c53yk4
removed bafkreigsyfj5w5alckrrfqiawcozwe6r5fpywof6pjvdz5dq2whv3gix5q
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreiadx3kwtmlc3uywzb6owdqgls2amklu3ukrt4xmvt4guwy33ct7uq
removed bafkreieqspyngorj3svynrt24tevcnkn26vw4igselyvzp4siaigum7k7q
removed bafkreif2u56wxmgi4bw436lqr3cudxdxphelondip2shei7nuoo7gryjoy
removed bafkreibxz26hpo43ez2mmqmttubatzuenq57tqg2jqcpybwwup7wwl5sze
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreifoybygix7fh3r3g5rqle3wcnhqldgdg4shzf4k3ulyw3gn7mabt4
removed bafkreihv4w4b4jxknoog4uzbymfgfbfwrrn7trmpaix25vq6gi6v2ju2gq
removed bafkreifd2lzou4ohj5wme2qgpsvtjydqmflfea2rtuvcmetm53lbxmnh7i
removed bafkreifvhusytypac6hxf4337lz67tjtu3ubwnwqbqplt2g3yo42i5ahmu
removed bafkreidhz6lmkmddwb5pd7uftqpzhhkhyijcmsa35rtp7swqqhxapeqwya
removed bafkreievl72w6bfysoxyfhanqyqqptbuc3s7ipkihzdjcxgskdfajbv5cm
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreib3byswpfv4attepk5gcs5mbpya42cotdgleuicbtqmyjdce2behm
removed bafkreibynb4s3k2d53ohezbcwlnhxjb3akailfla5gwxu4zy522fnwa2vu
removed bafkreigg675mq2uw7jgrkjhrxzulwadtktjtxbdlcin5ggihyg7dqq4cou
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreihk2lofriafirfzkaystqhbd3ak6te5lauzwz2n4q6tzuplr5mlam
removed bafkreignzuj2hr727brqmlzgkmtrv45t2ipzpntir2u66pn7sr6bkepr3a
removed bafkreiff3ekaqi3qmpopkssjbho3w634vh7nk7k6ryvmimynh6j3t3myba
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreiblefolnlfpyl3ojzw2jm7hyih4pgpskxrgq7dcaflfo6vgf4k56e
removed bafkreie6ykytm4aq7rsfo36hgo4s2uezouc7g3otleggr2rq43x7h4xrcu
removed bafkreib564qcnchx4gvt53pjfhhmhhhak2lb3zlhtzbezfu4wokhxdazey
removed bafkreicpuphtpxx4e72ptqyiaqvbr7adff3ftjg2tr2lvoynuatnlxbu4y
removed bafkreidpqonaqym6bb4orwyzqvavsuvt6ak7mptbfevt2g6fzqaav2tcqe
removed bafkreigstvd3c3qvvx3rrojxiapo3hqg5g4l2capujhtp37zx7ohtjjtsu
removed bafkreia76s4n5orei4haioy4qvhyogcdfijbw7szh6ppvrdijbrallbds4
removed bafkreibz4x7xtqiyfmeesjinig6b6hv7hnjrsh7kgvamfzfv2dwzh54qsy
removed bafkreibjajgyepb7rkio5nyujeqe6556h66hv7wepbz7nro57hvf4xh6b4
removed bafkreiae6rzt7vtfuswsyxibfltzsl7blhxnolgni2o43nj36kvid4chii
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreiaau5gkcnx2yijmvbgncpe2wvcp72265mgodkhbglfch52i5mv2vi
removed bafkreidazjkgsmc26phy4wvwicrcpeksttgo7y4r6xikirz7qatj4iq7ee
removed bafkreihg2fyjzkaywoytarxljskwog5qyyv4plb4nclhvqqskwao7aip3m
removed bafkreihd2g3k3sej2yw6nosafdejnepsujj6x2n5v7fvcd2idd755iy6k4
removed bafkreib7v7rxyqanctwuu6ihdqon2wuqs3jo2xm5u3uvxe36uyo272q6ra
removed bafkreigwhb3q36yrm37jv5fo2ap6r6eyohckqrxmlejrenex4xlnuxiy3e
removed bafkreifwdgbcgxvtqg2gzijl7qc6tbbn5njct6rbnhpnpxv2pb7ciwnsny
removed bafkreickol7ijgms7pjduc7fvegsn2rn7ryqqwfrepsukyhyyapaev2q2e
removed bafkreibkrazpbejqh3qun7xfnsl7yofl74o4jwhxebpmtrcpavebokuqtm
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreigaxrtrbclvyxkjxglxuvhg5jwcss4bdu3ki4segvz3u7uxn4h2lq
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreia3y54cu4hvxoaafhyirytr6qjamhsyui7epye5o55bhhjrmjdrym
removed bafkreicbv4ug3qfrolws6hfjgt6se6g6jiizembp7idqq7hke2bopu3s4m
removed bafkreihsqinttigpskqqj63wgalrny3lifvqv5ml7igrirdhlcf73l3wvm
removed bafkreieuesxlezdu5fdhci3jyimqxttkblbyk4rq6mnxn6rmluhxthkl4q
removed bafkreicdi4ukiefhr5lpyg2ythbvsnbw4ynlbrzr5eds3fpjnwzjaic6km
removed bafkreidffzv3pi7fxe5uantpa7ilpfrclk73kpvoqdkgixsvsjmcxx2d3y
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreigjnznfax4oa5havbmc6dxybgstcoziwj3wkracczz5oyrlixbfpe
removed bafkreiaxxhsg5lbitgkc3gaeyaqfgncms6jngmiqwhztxz3vavwfis3wd4
removed bafkreigpuj5bjriqixj5mtwz4aqtgtrn5vv327gpxyi6xn6biop7i4bwd4
removed bafkreifizn27sh37ixn32ovbc4zfjjah2ayf6mxr5gi4lh2powojwyl6m4
removed bafkreifv3tzihtebwgwf2mhzvffcrourvqbolylslwgxdflwr4w3szm56q
removed bafkreiglstzqvzbbh5xlfcmouzf6zsnlejstijmloak5sd2yajprdmvlke
removed bafkreicwckuty6otpiruui4i7355fd2gbsbihvn3hhs45hwpblyljun3qe
removed bafkreiguqbofelegug22xzcdolp7gypz4dsq2bfpstvfcwtxmqjtfkddqi
removed bafkreidhmnpapcuq5k3pohqey6hxe25kosejrp7rvgydrjotgudgt5pypm
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreieahkv4nhgt3ch366xupscqbhdhyliupzoijogjofpkzpwz7b2ccq
removed bafkreie7milgtiayvgiofoopu3dijd7636fswkriuosjuy2336jg7v7uvu
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreid7d2tgynb3lcfgiqdln5vo73dhzw57febadhgu4cqrhm5vltvnbe
removed bafkreigbzvcn3e3z3444gyjzgya3egk3dudqebv55jtxa5cqypf3th35bi
removed bafkreihul57lz5guaj4bmlzbmgcgjwbjwflxazyry4abn7rdkgue7rltfi
removed bafkreia6n7eify4hgxryqb6otv3swe6didtlozfxjtjne3zn6wsqq3nit4
removed bafkreifwa2wvccjywufrcnptoqxdzsa77pw5g3eqo2u7chgv6fn3bwama4
removed bafkreihr4qflvra6woh6yp7x4xrnjvoy6e76kjcp7kfwbhb2xdjngpy6nm
removed bafkreift2py7ytimxqfkprgfiutyrefbor6vvyxv5o4c4le4kejxe3cqxa
removed bafkreidmuntzjqvwkefbqyjxtva6oei2qcj3vs2wxity5skvuljx3mtu4e
removed bafkreidqgq4opd22ebmgeaamamtsisnbvtciw5isskzohfod5zuiqwgtmm
removed bafkreihfuaeebzuuxjp7ew35spwdrbp5fp4h5ivmymenjjm7saljc3rvoe
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiasuypu4fz7woqrybowi4pxi4upoyrrwss7zwlgptxtv6d2hlsnyi
removed bafkreicdvdlmv6ytpjhl5ab7innkudxp7rqfkj2pzmfq3abe7vahy5zc3m
removed bafkreiga3hijqp5xjwgjmivc24oe3munnzl4j6r57ibgfsy26risqxa5b4
removed bafkreiacwqi3frf4gn7z3e3ne4c75zivmquisgf6cj6mn7ked6bmv5szum
removed bafkreicf6iyjzar3x236rrv5a536hk37eahdorwicnzoj3z4vfs3lv7hlu
removed bafkreiebg6nb66lq2gx6d7gsajcshdv2ehvpgwukvvanccukr44hvbwhmi
removed bafkreif7rwtqefkyv6gukemhn4kauvqpaffepkzz7tlwffwdaxnq7dmjqe
removed bafkreia4q63he72sgzrn64kpa2uu5it7utmqkdby6t3xck6umy77x7p2ae
removed bafkreihjfzkik6iqwrkyfmu65mnerufsbiieeh3papbprhnle32srqokam
removed bafkreictm32bslwxcdm3wg2n6mcywlcvbg2f6qgaxkrk74p4maoa5rrtoe
removed bafkreib6aux45lrojb27j36zztzosbdldtklhvvmatwdbym4pki7jux2f4
removed bafkreieadpu7t6hefr44lz3n4t4dsmvq7ot7efxpt2dva6a4ua7mqpha6e
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreia42dhxxessq54nfxlmcv32dgd25iqqg4pyqoj4o3b72gmh35jbdq
ok 1301 - repo gc (with-daemon, cidv1)
1303 - can list dir Success 0.050
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1303 - can list dir
ok 1303 - can list dir
1304 - remove file forcibly Success 0.028
System.out »
ok 1304 - remove file forcibly
1306 - can list dir Success 0.048
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1306 - can list dir
ok 1306 - can list dir
1307 - remove multiple files forcibly Success 0.028
System.out »
ok 1307 - remove multiple files forcibly
1309 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1309 - can list dir
ok 1309 - can list dir
1310 - remove directory forcibly Success 0.028
System.out »
ok 1310 - remove directory forcibly
1312 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1312 - can list dir
ok 1312 - can list dir
1313 - remove multiple directories forcibly Success 0.028
System.out »
ok 1313 - remove multiple directories forcibly
1314 - remove multiple files Success 0.139
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 1314 - remove multiple files
1316 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1316 - can list dir
ok 1316 - can list dir
1317 - remove multiple directories Success 0.028
System.out »
ok 1317 - remove multiple directories
1318 - remove nonexistent path forcibly Success 0.047
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 1318 - remove nonexistent path forcibly
1319 - remove deeply nonexistent path forcibly Success 0.048
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 1319 - remove deeply nonexistent path forcibly
1321 - can list dir Success 0.050
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 1321 - can list dir
ok 1321 - can list dir
System.err »
Error: can't remove some files
1322 - remove multiple files (with nonexistent one) Success 0.027
System.out »
ok 1322 - remove multiple files (with nonexistent one)
1323 - can update root hash to cidv1 Success 0.098
System.out »
expecting success: 
    ipfs files chcid --cid-version=1 / &&
    echo bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 > hash_expect &&
    ipfs files stat --hash / > hash_actual &&
    test_cmp hash_expect hash_actual
  
ok 1323 - can update root hash to cidv1
1324 - can mkdir in root (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 1324 - can mkdir in root (with-daemon, cidv1 root)
1325 - 'files ls' lists root by default (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 1325 - 'files ls' lists root by default (with-daemon, cidv1 root)
1326 - directory was created (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 1326 - directory was created (with-daemon, cidv1 root)
1328 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1328 - can list dir
ok 1328 - can list dir
1329 - directory is empty (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1329 - directory is empty (with-daemon, cidv1 root)
1330 - stat works (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 1330 - stat works (with-daemon, cidv1 root)
1331 - hash is first line of stat (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
bafybeiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354 - cats/
ok 1331 - hash is first line of stat (with-daemon, cidv1 root)
1332 - stat --hash gives only hash (with-daemon, cidv1 root) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 1332 - stat --hash gives only hash (with-daemon, cidv1 root)
1333 - stat with multiple format options should fail (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 1333 - stat with multiple format options should fail (with-daemon, cidv1 root)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
1334 - compare hash option with format (with-daemon, cidv1 root) Success 0.097
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 1334 - compare hash option with format (with-daemon, cidv1 root)
1335 - compare size option with format (with-daemon, cidv1 root) Success 0.098
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 1335 - compare size option with format (with-daemon, cidv1 root)
1336 - check root hash (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1336 - check root hash (with-daemon, cidv1 root)
1337 - stat works outside of MFS Success 0.047
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 1337 - stat works outside of MFS
1338 - stat compute the locality of a dag Success 0.051
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 1338 - stat compute the locality of a dag
1339 - cannot mkdir / (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 1339 - cannot mkdir / (with-daemon, cidv1 root)
System.err »
Error: cannot create directory '/': Already exists
1340 - check root hash was not changed (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1340 - check root hash was not changed (with-daemon, cidv1 root)
1341 - can put files into directory (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 1341 - can put files into directory (with-daemon, cidv1 root)
1343 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1343 - can list dir
ok 1343 - can list dir
1344 - file shows up in directory (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1344 - file shows up in directory (with-daemon, cidv1 root)
1345 - file has correct hash and size in directory (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1345 - file has correct hash and size in directory (with-daemon, cidv1 root)
1346 - file has correct hash and size listed with -l Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1346 - file has correct hash and size listed with -l
1347 - file has correct hash and size listed with --long Success 0.052
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1347 - file has correct hash and size listed with --long
1348 - file has correct hash and size listed with -l --cid-base=base32 Success 0.053
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1348 - file has correct hash and size listed with -l --cid-base=base32
1349 - file shows up with the correct name Success 0.050
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1349 - file shows up with the correct name
1350 - can stat file (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 1350 - can stat file (with-daemon, cidv1 root)
1351 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1351 - stat output looks good
1352 - can stat file with --cid-base=base32 (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 1352 - can stat file with --cid-base=base32 (with-daemon, cidv1 root)
1353 - stat output looks good with --cid-base=base32 Success 0.009
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1353 - stat output looks good with --cid-base=base32
1354 - can read file (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 1354 - can read file (with-daemon, cidv1 root)
1355 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 1355 - output looks good (with-daemon, cidv1 root)
1356 - can put another file into root (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 1356 - can put another file into root (with-daemon, cidv1 root)
1358 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1358 - can list dir
ok 1358 - can list dir
1359 - file shows up in root (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1359 - file shows up in root (with-daemon, cidv1 root)
1360 - can read file (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 1360 - can read file (with-daemon, cidv1 root)
1361 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 1361 - output looks good (with-daemon, cidv1 root)
1362 - can make deep directory (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 1362 - can make deep directory (with-daemon, cidv1 root)
1364 - can list dir Success 0.052
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1364 - can list dir
ok 1364 - can list dir
1365 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1365 - dir entries look good
1366 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1366 - can list dir
1367 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1367 - dir entries look good
1368 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1368 - can list dir
1369 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1369 - dir entries look good
1370 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1370 - can list dir
1371 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1371 - dir entries look good
1372 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1372 - can list dir
1373 - directory was created correctly (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1373 - directory was created correctly (with-daemon, cidv1 root)
1374 - dir has correct name Success 0.095
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 1374 - dir has correct name
1375 - can copy file into new dir (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 1375 - can copy file into new dir (with-daemon, cidv1 root)
1376 - can copy file into deep dir using -p flag (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 1376 - can copy file into deep dir using -p flag (with-daemon, cidv1 root)
1377 - file copied into deep dir exists (with-daemon, cidv1 root) Success 0.052
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 1377 - file copied into deep dir exists (with-daemon, cidv1 root)
1378 - cleanup deep cp -p test (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 1378 - cleanup deep cp -p test (with-daemon, cidv1 root)
1379 - can read file (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 1379 - can read file (with-daemon, cidv1 root)
1380 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 1380 - output looks good (with-daemon, cidv1 root)
1382 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1382 - can list dir
ok 1382 - can list dir
1383 - file shows up in dir (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1383 - file shows up in dir (with-daemon, cidv1 root)
1384 - can remove file (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 1384 - can remove file (with-daemon, cidv1 root)
1386 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1386 - can list dir
ok 1386 - can list dir
1387 - file no longer appears (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1387 - file no longer appears (with-daemon, cidv1 root)
1388 - can remove dir (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 1388 - can remove dir (with-daemon, cidv1 root)
1390 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1390 - can list dir
ok 1390 - can list dir
1391 - dir no longer appears (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1391 - dir no longer appears (with-daemon, cidv1 root)
1392 - can remove file from root (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 1392 - can remove file from root (with-daemon, cidv1 root)
1394 - can list dir Success 0.051
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1394 - can list dir
ok 1394 - can list dir
1395 - file no longer appears (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1395 - file no longer appears (with-daemon, cidv1 root)
1396 - check root hash (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1396 - check root hash (with-daemon, cidv1 root)
1397 - cannot remove root (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 1397 - cannot remove root (with-daemon, cidv1 root)
System.err »
Error: can't remove some files
1398 - check root hash was not changed (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1398 - check root hash was not changed (with-daemon, cidv1 root)
1399 - read from offset works (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 1399 - read from offset works (with-daemon, cidv1 root)
1400 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 1400 - output looks good (with-daemon, cidv1 root)
1401 - read with size works (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 1401 - read with size works (with-daemon, cidv1 root)
1402 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 1402 - output looks good (with-daemon, cidv1 root)
1403 - cannot read from negative offset (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 1403 - cannot read from negative offset (with-daemon, cidv1 root)
System.err »
Error: cannot specify negative offset
1404 - read from offset 0 works (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 1404 - read from offset 0 works (with-daemon, cidv1 root)
1405 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1405 - output looks good (with-daemon, cidv1 root)
1406 - read last byte works (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 1406 - read last byte works (with-daemon, cidv1 root)
1407 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 1407 - output looks good (with-daemon, cidv1 root)
1408 - offset past end of file fails (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 1408 - offset past end of file fails (with-daemon, cidv1 root)
System.err »
Error: offset was past end of file (5 > 4)
1409 - cannot read negative count bytes (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 1409 - cannot read negative count bytes (with-daemon, cidv1 root)
System.err »
Error: Unknown Command "read"
1410 - reading zero bytes prints nothing (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 1410 - reading zero bytes prints nothing (with-daemon, cidv1 root)
1411 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 1411 - output looks good (with-daemon, cidv1 root)
1412 - count > len(file) prints entire file (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 1412 - count > len(file) prints entire file (with-daemon, cidv1 root)
1413 - output looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1413 - output looks good (with-daemon, cidv1 root)
1414 - can write file (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 1414 - can write file (with-daemon, cidv1 root)
1416 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1416 - can list dir
ok 1416 - can list dir
1417 - file was created (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1417 - file was created (with-daemon, cidv1 root)
1418 - can read file we just wrote (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 1418 - can read file we just wrote (with-daemon, cidv1 root)
1419 - can write to offset (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 1419 - can write to offset (with-daemon, cidv1 root)
1420 - file looks correct (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 1420 - file looks correct (with-daemon, cidv1 root)
1421 - file hash correct (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 1421 - file hash correct (with-daemon, cidv1 root)
1422 - can't write to negative offset (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 1422 - can't write to negative offset (with-daemon, cidv1 root)
System.err »
Error: cannot have negative write offset
1423 - verify file was not changed (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 1423 - verify file was not changed (with-daemon, cidv1 root)
1424 - write new file for testing (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 1424 - write new file for testing (with-daemon, cidv1 root)
1425 - write to offset past end works (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 1425 - write to offset past end works (with-daemon, cidv1 root)
1426 - can read file (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 1426 - can read file (with-daemon, cidv1 root)
1427 - output looks good (with-daemon, cidv1 root) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 1427 - output looks good (with-daemon, cidv1 root)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.308e-05 s, 217 kB/s
1428 - cleanup (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 1428 - cleanup (with-daemon, cidv1 root)
1429 - cannot write to directory (with-daemon, cidv1 root) Success 0.093
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 1429 - cannot write to directory (with-daemon, cidv1 root)
System.err »
Error: /cats was not a file
1430 - verify dir was not changed (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 1430 - verify dir was not changed (with-daemon, cidv1 root)
1431 - cannot write to nonexistent path (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 1431 - cannot write to nonexistent path (with-daemon, cidv1 root)
System.err »
Error: file does not exist
1433 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1433 - can list dir
ok 1433 - can list dir
1434 - no new paths were created (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1434 - no new paths were created (with-daemon, cidv1 root)
1435 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.008
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1435 - 'ipfs daemon' is running when WITH_DAEMON is set
1436 - write 'no-flush' succeeds (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 1436 - write 'no-flush' succeeds (with-daemon, cidv1 root)
1437 - root hash not bubbled up yet (with-daemon, cidv1 root) Success 0.055
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 1437 - root hash not bubbled up yet (with-daemon, cidv1 root)
1438 - changes bubbled up to root on inspection (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 1438 - changes bubbled up to root on inspection (with-daemon, cidv1 root)
1439 - root hash looks good (with-daemon, cidv1 root) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 1439 - root hash looks good (with-daemon, cidv1 root)
1440 - /cats hash looks good (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 1440 - /cats hash looks good (with-daemon, cidv1 root)
1441 - flush root succeeds (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"bafybeickjecu37qv6ue54ofk3n4rpm4g4abuofz7yc4qn4skffy263kkou"}
ok 1441 - flush root succeeds (with-daemon, cidv1 root)
1442 - can mv dir (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 1442 - can mv dir (with-daemon, cidv1 root)
1443 - can mv dir and dest dir is / (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 1443 - can mv dir and dest dir is / (with-daemon, cidv1 root)
1444 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 1444 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1 root)
1446 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1446 - can list dir
ok 1446 - can list dir
1447 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1447 - dir entries look good
1448 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1448 - can list dir
1449 - mv worked (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1449 - mv worked (with-daemon, cidv1 root)
1450 - cleanup, remove 'cats' (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 1450 - cleanup, remove 'cats' (with-daemon, cidv1 root)
1452 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1452 - can list dir
ok 1452 - can list dir
1453 - cleanup looks good (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1453 - cleanup looks good (with-daemon, cidv1 root)
1454 - create a new file (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 1454 - create a new file (with-daemon, cidv1 root)
1455 - truncate and write over that file (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 1455 - truncate and write over that file (with-daemon, cidv1 root)
1456 - output looks good (with-daemon, cidv1 root) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 1456 - output looks good (with-daemon, cidv1 root)
1457 - file hash correct (with-daemon, cidv1 root) Success 0.052
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 1457 - file hash correct (with-daemon, cidv1 root)
1458 - cleanup (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 1458 - cleanup (with-daemon, cidv1 root)
1459 - mkdir --flush works (with-daemon, cidv1 root) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1459 - mkdir --flush works (with-daemon, cidv1 root)
1460 - mkdir --flush works a second time (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1460 - mkdir --flush works a second time (with-daemon, cidv1 root)
1462 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1462 - can list dir
ok 1462 - can list dir
1463 - dir looks right (with-daemon, cidv1 root) Success 0.027
System.out »
ok 1463 - dir looks right (with-daemon, cidv1 root)
1465 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1465 - can list dir
ok 1465 - can list dir
1466 - child dir looks right (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1466 - child dir looks right (with-daemon, cidv1 root)
1467 - cleanup (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 1467 - cleanup (with-daemon, cidv1 root)
1469 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1469 - can list dir
ok 1469 - can list dir
1470 - child dir looks right (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1470 - child dir looks right (with-daemon, cidv1 root)
1471 - create and remove dir (with-daemon, cidv1 root) Success 0.091
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 1471 - create and remove dir (with-daemon, cidv1 root)
1472 - create test file (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 1472 - create test file (with-daemon, cidv1 root)
1473 - copy test file onto test dir (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 1473 - copy test file onto test dir (with-daemon, cidv1 root)
1474 - test /test_dir (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 1474 - test /test_dir (with-daemon, cidv1 root)
1475 - clean up /test_dir and /test_file (with-daemon, cidv1 root) Success 0.091
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 1475 - clean up /test_dir and /test_file (with-daemon, cidv1 root)
1476 - make a directory and a file (with-daemon, cidv1 root) Success 0.094
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 1476 - make a directory and a file (with-daemon, cidv1 root)
1477 - copy a file into a directory (with-daemon, cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 1477 - copy a file into a directory (with-daemon, cidv1 root)
1478 - file made it into directory (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 1478 - file made it into directory (with-daemon, cidv1 root)
1479 - test copy --force overwrites files Success 0.226
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 1479 - test copy --force overwrites files
1480 - clean up Success 0.090
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 1480 - clean up
1481 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1 root) Success 0.050
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 1481 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1 root)
System.err »
Error: file does not exist
1482 - can write file and create intermediate directories (with-daemon, cidv1 root) Success 0.093
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 1482 - can write file and create intermediate directories (with-daemon, cidv1 root)
1483 - can write file and create intermediate directories with short flags (with-daemon, cidv1 root) Success 0.093
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 1483 - can write file and create intermediate directories with short flags (with-daemon, cidv1 root)
1484 - can write another file in the same directory with -e -p (with-daemon, cidv1 root) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 1484 - can write another file in the same directory with -e -p (with-daemon, cidv1 root)
1485 - clean up (with-daemon, cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 1485 - clean up (with-daemon, cidv1 root)
1487 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1487 - can list dir
ok 1487 - can list dir
1488 - root mfs entry is empty (with-daemon, cidv1 root) Success 0.028
System.out »
ok 1488 - root mfs entry is empty (with-daemon, cidv1 root)
1489 - repo gc (with-daemon, cidv1 root) Success 0.052
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreidnkdei2vszhyva5osm5cr7yx4kkwu42zbgcd3kbq72wlwmaci4ci
removed bafkreidm26ihpfjazdxdsym7albjgs3f3btarunaz6eqqbfiaum2f3rylu
removed bafkreickjecu37qv6ue54ofk3n4rpm4g4abuofz7yc4qn4skffy263kkou
removed bafkreia5zadkk7i6j3eoq4pzma4burs62tw4r5sexhmhw34txzwezvuxki
removed bafkreih5ch4wc2z23dippmznh4nvfqdl3zpeeoyrqa3btsltbbaa6qeri4
removed bafkreiefs4zls44cuccyhvvgp5meesdfaxsqx3tvjpm3k6wdvp4bxfyu6i
removed bafkreifphwgsag2rer5pgl5ygyiefb7fbflsnkobmznyra7vycr4im6l2q
removed bafkreia2hlmgzjqfha4zt3gvtevlriin2mqovtpziow3dirxarntauawbi
removed bafkreigydxrwciql4ildsp2mueeje4x53fdonxrkendj72po7tlq4hhi7y
removed bafkreici7dp3ipjnqvw746uvjxpdyqajcgkzhrp6u3cpckxqpeihwnrize
removed bafkreiex562jkoyfy5tnkioziwu2tvqqjfibkft7p66hoiyxpmlsl43glq
removed bafkreib3jdutduiwd6b45zccl5zprbfdh2ipvmvyrgr5rmxilm5irgp47u
removed bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku
removed bafkreigsyfj5w5alckrrfqiawcozwe6r5fpywof6pjvdz5dq2whv3gix5q
removed bafkreie6hkwps7h3uq2jmpe2sbn7n2fi6chchgu6pj3o5kcavxfa34zqga
removed bafkreihu747wmk2johejbv6j55cu2brkz55zzrugqta5zkqzkavg7agepm
removed bafkreiadx3kwtmlc3uywzb6owdqgls2amklu3ukrt4xmvt4guwy33ct7uq
removed bafkreieqspyngorj3svynrt24tevcnkn26vw4igselyvzp4siaigum7k7q
removed bafkreibxz26hpo43ez2mmqmttubatzuenq57tqg2jqcpybwwup7wwl5sze
removed bafkreidmrhao345wknny7j3mpf4fso4y6adyggmlirs4wmidfkcyaz2tqu
removed bafkreidhjv23plc2txhq6w6ds7f4hexwcdoqmhzai4jssww4js3j5gbfdy
removed bafkreifuxrj4bskvnt3nk6q5zfwc2lltkdrjyzbss6pat3m4nkdrcb7rwe
removed bafkreifoybygix7fh3r3g5rqle3wcnhqldgdg4shzf4k3ulyw3gn7mabt4
removed bafkreihv4w4b4jxknoog4uzbymfgfbfwrrn7trmpaix25vq6gi6v2ju2gq
removed bafkreifd2lzou4ohj5wme2qgpsvtjydqmflfea2rtuvcmetm53lbxmnh7i
removed bafkreifvhusytypac6hxf4337lz67tjtu3ubwnwqbqplt2g3yo42i5ahmu
removed bafkreidhz6lmkmddwb5pd7uftqpzhhkhyijcmsa35rtp7swqqhxapeqwya
removed bafkreievl72w6bfysoxyfhanqyqqptbuc3s7ipkihzdjcxgskdfajbv5cm
removed bafkreih4oxaroayjx6usxb6lsr6xbozrz2ed374wkhw4dm6yc32qucudte
removed bafkreihdxs322ni6igcntvcbln247nfy4oak6mfquiiwlx32lymysrk4om
removed bafkreib3byswpfv4attepk5gcs5mbpya42cotdgleuicbtqmyjdce2behm
removed bafkreidoybdijxhrmetlgyw4gcgljz62yocfocryjgugilmgbx2ifwecve
removed bafkreigg675mq2uw7jgrkjhrxzulwadtktjtxbdlcin5ggihyg7dqq4cou
removed bafkreifxct3zke5jwgjchauzvnatnehx4glmtcmgov2eqfsldvkjcqwfkq
removed bafkreigfcey4sydmfi7wdh4aavga64u7tbzbl5z6ubr3nzgwtdauzvnidy
removed bafkreieu5xajzkkoqkrl36m2tdic225cnlh77fmn6apfz6igl5jco5gf7q
removed bafkreihk2lofriafirfzkaystqhbd3ak6te5lauzwz2n4q6tzuplr5mlam
removed bafkreifwulhpk2rezh7nbgz2dhstuold7epnsludlkjnnpkj3uzba2tqkm
removed bafkreignzuj2hr727brqmlzgkmtrv45t2ipzpntir2u66pn7sr6bkepr3a
removed bafkreiff3ekaqi3qmpopkssjbho3w634vh7nk7k6ryvmimynh6j3t3myba
removed bafkreib67blkdqpr62odv4vywezjrqp3nudfmsndddbmvwhlsz7h6ngqbq
removed bafkreid2ak6bz2vvs6wf534sy3o4fjnwioyuvp27hrazzr3zeviiaikn6i
removed bafkreie6ykytm4aq7rsfo36hgo4s2uezouc7g3otleggr2rq43x7h4xrcu
removed bafkreib564qcnchx4gvt53pjfhhmhhhak2lb3zlhtzbezfu4wokhxdazey
removed bafkreicpuphtpxx4e72ptqyiaqvbr7adff3ftjg2tr2lvoynuatnlxbu4y
removed bafkreidpqonaqym6bb4orwyzqvavsuvt6ak7mptbfevt2g6fzqaav2tcqe
removed bafkreia76s4n5orei4haioy4qvhyogcdfijbw7szh6ppvrdijbrallbds4
removed bafkreibz4x7xtqiyfmeesjinig6b6hv7hnjrsh7kgvamfzfv2dwzh54qsy
removed bafkreibjajgyepb7rkio5nyujeqe6556h66hv7wepbz7nro57hvf4xh6b4
removed bafkreiae6rzt7vtfuswsyxibfltzsl7blhxnolgni2o43nj36kvid4chii
removed bafkreie5tdb2q7daqtxgcnlzn4k5fdn346cggri2u4eghbluw4xdp4ovx4
removed bafkreifa4rx4em6cvzhnuce2hbuvntrbtzcn36g3xrm4xtvupqevjggj2m
removed bafkreia77lg33ipxkfwoscdvhhqkw76ytaiskd5gl2o6e5kbaa6e2xtxw4
removed bafkreiee7xavzt76jfjzfxwyechipmattu4rigxelary76cuyz67dle5oq
removed bafkreiaau5gkcnx2yijmvbgncpe2wvcp72265mgodkhbglfch52i5mv2vi
removed bafkreidazjkgsmc26phy4wvwicrcpeksttgo7y4r6xikirz7qatj4iq7ee
removed bafkreibridwovtxxdhnalcyhs3ukc5bcmsbou3ro6j4zvk6kmrvmlnc4ny
removed bafkreig24myflgc5gkk5rpkij2f2uj753tdcodet2tmdfp7qniyamc6aeq
removed bafkreihg2fyjzkaywoytarxljskwog5qyyv4plb4nclhvqqskwao7aip3m
removed bafkreib7v7rxyqanctwuu6ihdqon2wuqs3jo2xm5u3uvxe36uyo272q6ra
removed bafkreigwhb3q36yrm37jv5fo2ap6r6eyohckqrxmlejrenex4xlnuxiy3e
removed bafkreickol7ijgms7pjduc7fvegsn2rn7ryqqwfrepsukyhyyapaev2q2e
removed bafkreibkrazpbejqh3qun7xfnsl7yofl74o4jwhxebpmtrcpavebokuqtm
removed bafkreiflpfysjprymp2kggemvulnsej4mmxxtegmhjrbbmgchezjgafp7u
removed bafkreihyds55wjsjesfbk2ulql5kkj2adut5alseykuwud5zbnuejwg5fu
removed bafkreicbv4ug3qfrolws6hfjgt6se6g6jiizembp7idqq7hke2bopu3s4m
removed bafkreihsqinttigpskqqj63wgalrny3lifvqv5ml7igrirdhlcf73l3wvm
removed bafkreieuesxlezdu5fdhci3jyimqxttkblbyk4rq6mnxn6rmluhxthkl4q
removed bafkreicdi4ukiefhr5lpyg2ythbvsnbw4ynlbrzr5eds3fpjnwzjaic6km
removed bafkreidffzv3pi7fxe5uantpa7ilpfrclk73kpvoqdkgixsvsjmcxx2d3y
removed bafkreicr7edyvb4hawwr56x5brk4vwvwz2e7ovaiua6qgfsqnf3ocmpnyq
removed bafkreigjnznfax4oa5havbmc6dxybgstcoziwj3wkracczz5oyrlixbfpe
removed bafkreiaxxhsg5lbitgkc3gaeyaqfgncms6jngmiqwhztxz3vavwfis3wd4
removed bafkreifizn27sh37ixn32ovbc4zfjjah2ayf6mxr5gi4lh2powojwyl6m4
removed bafkreifv3tzihtebwgwf2mhzvffcrourvqbolylslwgxdflwr4w3szm56q
removed bafkreigualhou4mbga3w3rg2linqt7lv6npkqsnccx3je5japhtuufun64
removed bafkreiguqbofelegug22xzcdolp7gypz4dsq2bfpstvfcwtxmqjtfkddqi
removed bafkreicagfstvpkvcha2piy4dzzpsyvveowjntxgtby5pirt2i5h4aa6cy
removed bafkreidnubsombkovzdjtuk6nh7hs4rhlctqw435fo2qymiam6bnfa5ni4
removed bafkreic36ofljoc6lqmihj4wf3a4xpltil27ge3fgklfp7vh5wvogge5iy
removed bafkreid7d2tgynb3lcfgiqdln5vo73dhzw57febadhgu4cqrhm5vltvnbe
removed bafkreigbzvcn3e3z3444gyjzgya3egk3dudqebv55jtxa5cqypf3th35bi
removed bafkreihul57lz5guaj4bmlzbmgcgjwbjwflxazyry4abn7rdkgue7rltfi
removed bafkreia6n7eify4hgxryqb6otv3swe6didtlozfxjtjne3zn6wsqq3nit4
removed bafkreifwa2wvccjywufrcnptoqxdzsa77pw5g3eqo2u7chgv6fn3bwama4
removed bafkreihr4qflvra6woh6yp7x4xrnjvoy6e76kjcp7kfwbhb2xdjngpy6nm
removed bafkreidmuntzjqvwkefbqyjxtva6oei2qcj3vs2wxity5skvuljx3mtu4e
removed bafkreifvfbe3xllmeszp5xjabjmthlmn5rglpnbqt6h7izwex4wuopg3xm
removed bafkreidqgq4opd22ebmgeaamamtsisnbvtciw5isskzohfod5zuiqwgtmm
removed bafkreihfuaeebzuuxjp7ew35spwdrbp5fp4h5ivmymenjjm7saljc3rvoe
removed bafkreibf22eiarognent7hfhd3jfsfhrpjc4pdqw56mrradk72amvyyouu
removed bafkreiasuypu4fz7woqrybowi4pxi4upoyrrwss7zwlgptxtv6d2hlsnyi
removed bafkreicdvdlmv6ytpjhl5ab7innkudxp7rqfkj2pzmfq3abe7vahy5zc3m
removed bafkreiacwqi3frf4gn7z3e3ne4c75zivmquisgf6cj6mn7ked6bmv5szum
removed bafkreicf6iyjzar3x236rrv5a536hk37eahdorwicnzoj3z4vfs3lv7hlu
removed bafkreihkmcrozi3rrfrv6dd3ra73oxwctwupj6x7xszycb5j4sp37lv7ke
removed bafkreicftpfcagidajr2r53ocmiopkgtbh7jchbjovznu4zpwwq4uh3r4i
removed bafkreia4q63he72sgzrn64kpa2uu5it7utmqkdby6t3xck6umy77x7p2ae
removed bafkreihjfzkik6iqwrkyfmu65mnerufsbiieeh3papbprhnle32srqokam
removed bafkreictm32bslwxcdm3wg2n6mcywlcvbg2f6qgaxkrk74p4maoa5rrtoe
removed bafkreib6aux45lrojb27j36zztzosbdldtklhvvmatwdbym4pki7jux2f4
removed bafkreieadpu7t6hefr44lz3n4t4dsmvq7ot7efxpt2dva6a4ua7mqpha6e
removed bafkreigtfr2ukmfl7lvfyqlisivypnbpuu7zqhfwsy4ffccoodsgenkvbm
removed bafkreia42dhxxessq54nfxlmcv32dgd25iqqg4pyqoj4o3b72gmh35jbdq
removed bafkreiggqygwfs5k73amce2fcrrhaynnxqql7d7xctgxub7xqh34rjprca
removed bafkreiamvfmsc2jnmdhf4utdkvtv2q35zwkt26xyjauufrdwx33vqip3nq
ok 1489 - repo gc (with-daemon, cidv1 root)
1491 - can list dir Success 0.048
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1491 - can list dir
ok 1491 - can list dir
1492 - remove file forcibly Success 0.027
System.out »
ok 1492 - remove file forcibly
1494 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1494 - can list dir
ok 1494 - can list dir
1495 - remove multiple files forcibly Success 0.027
System.out »
ok 1495 - remove multiple files forcibly
1497 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1497 - can list dir
ok 1497 - can list dir
1498 - remove directory forcibly Success 0.028
System.out »
ok 1498 - remove directory forcibly
1500 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1500 - can list dir
ok 1500 - can list dir
1501 - remove multiple directories forcibly Success 0.028
System.out »
ok 1501 - remove multiple directories forcibly
1502 - remove multiple files Success 0.139
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 1502 - remove multiple files
1504 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1504 - can list dir
ok 1504 - can list dir
1505 - remove multiple directories Success 0.028
System.out »
ok 1505 - remove multiple directories
1506 - remove nonexistent path forcibly Success 0.048
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 1506 - remove nonexistent path forcibly
1507 - remove deeply nonexistent path forcibly Success 0.048
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 1507 - remove deeply nonexistent path forcibly
1509 - can list dir Success 0.050
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 1509 - can list dir
ok 1509 - can list dir
System.err »
Error: can't remove some files
1510 - remove multiple files (with nonexistent one) Success 0.028
System.out »
ok 1510 - remove multiple files (with nonexistent one)
1511 - can update root hash to blake2b-256 Success 0.096
System.out »
expecting success: 
    ipfs files chcid --hash=blake2b-256 / &&
      echo bafykbzacebugfutjir6qie7apo5shpry32ruwfi762uytd5g3u2gk7tpscndq > hash_expect &&
      ipfs files stat --hash / > hash_actual &&
      test_cmp hash_expect hash_actual
    
ok 1511 - can update root hash to blake2b-256
1512 - can mkdir in root (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS /cats
  
ok 1512 - can mkdir in root (with-daemon, blake2b-256 root)
1513 - 'files ls' lists root by default (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files ls >actual &&
    echo "cats" >expected &&
    test_cmp expected actual
  
ok 1513 - 'files ls' lists root by default (with-daemon, blake2b-256 root)
1514 - directory was created (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    verify_path_exists /cats
  
ok 1514 - directory was created (with-daemon, blake2b-256 root)
1516 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1516 - can list dir
ok 1516 - can list dir
1517 - directory is empty (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1517 - directory is empty (with-daemon, blake2b-256 root)
1518 - stat works (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat / >stat
  
ok 1518 - stat works (with-daemon, blake2b-256 root)
1519 - hash is first line of stat (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs ls $(head -1 stat) | grep "cats"
  
bafykbzacebugfutjir6qie7apo5shpry32ruwfi762uytd5g3u2gk7tpscndq - cats/
ok 1519 - hash is first line of stat (with-daemon, blake2b-256 root)
1520 - stat --hash gives only hash (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / >actual &&
    head -n1 stat >expected &&
    test_cmp expected actual
  
ok 1520 - stat --hash gives only hash (with-daemon, blake2b-256 root)
1521 - stat with multiple format options should fail (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    test_must_fail ipfs files stat --hash --size /
  
ok 1521 - stat with multiple format options should fail (with-daemon, blake2b-256 root)
System.err »
Error: invalid parameters: format was set by multiple options. Only one format option is allowed
Use 'ipfs files stat --help' for information about this command
1522 - compare hash option with format (with-daemon, blake2b-256 root) Success 0.095
System.out »
expecting success: 
    ipfs files stat --hash / >expected &&
    ipfs files stat --format='<hash>' / >actual &&
    test_cmp expected actual
  
ok 1522 - compare hash option with format (with-daemon, blake2b-256 root)
1523 - compare size option with format (with-daemon, blake2b-256 root) Success 0.094
System.out »
expecting success: 
    ipfs files stat --size / >expected &&
    ipfs files stat --format='<cumulsize>' / >actual &&
    test_cmp expected actual
  
ok 1523 - compare size option with format (with-daemon, blake2b-256 root)
1524 - check root hash (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1524 - check root hash (with-daemon, blake2b-256 root)
1525 - stat works outside of MFS Success 0.048
System.out »
expecting success: 
    ipfs files stat /ipfs/$DIR1
  
QmYSGUQQpNUijyksf1M9jYfKyVABwkRoYGAwXMKHjxgF5T
Size: 0
CumulativeSize: 158
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set
ok 1525 - stat works outside of MFS
1526 - stat compute the locality of a dag Success 0.051
System.out »
expecting success: 
    ipfs files stat --with-local /ipfs/$DIR1 > output
    grep -q "(100.00%)" output
  
ok 1526 - stat compute the locality of a dag
1527 - cannot mkdir / (with-daemon, blake2b-256 root) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs files mkdir $ARGS /
  
ok 1527 - cannot mkdir / (with-daemon, blake2b-256 root)
System.err »
Error: cannot create directory '/': Already exists
1528 - check root hash was not changed (with-daemon, blake2b-256 root) Success 0.052
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1528 - check root hash was not changed (with-daemon, blake2b-256 root)
1529 - can put files into directory (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /cats/file1
  
ok 1529 - can put files into directory (with-daemon, blake2b-256 root)
1531 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1531 - can list dir
ok 1531 - can list dir
1532 - file shows up in directory (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1532 - file shows up in directory (with-daemon, blake2b-256 root)
1533 - file has correct hash and size in directory (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1533 - file has correct hash and size in directory (with-daemon, blake2b-256 root)
1534 - file has correct hash and size listed with -l Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1534 - file has correct hash and size listed with -l
1535 - file has correct hash and size listed with --long Success 0.051
System.out »
expecting success: 
    echo "file1	$FILE1	4" > ls_l_expected &&
    ipfs files ls --long /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1535 - file has correct hash and size listed with --long
1536 - file has correct hash and size listed with -l --cid-base=base32 Success 0.052
System.out »
expecting success: 
    echo "file1	`cid-fmt -v 1 -b base32 %s $FILE1`	4" > ls_l_expected &&
    ipfs files ls --cid-base=base32 -l /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1536 - file has correct hash and size listed with -l --cid-base=base32
1537 - file shows up with the correct name Success 0.050
System.out »
expecting success: 
    echo "file1" > ls_l_expected &&
    ipfs files ls /cats/file1 > ls_l_actual &&
    test_cmp ls_l_expected ls_l_actual
  
ok 1537 - file shows up with the correct name
1538 - can stat file (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat /cats/file1 > file1stat_orig
  
ok 1538 - can stat file (with-daemon, blake2b-256 root)
1539 - stat output looks good Success 0.006
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo "$FILE1" > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1539 - stat output looks good
1540 - can stat file with --cid-base=base32 (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --cid-base=base32 /cats/file1 > file1stat_orig
  
ok 1540 - can stat file with --cid-base=base32 (with-daemon, blake2b-256 root)
1541 - stat output looks good with --cid-base=base32 Success 0.008
System.out »
expecting success: 
    grep -v CumulativeSize: file1stat_orig > file1stat_actual &&
    echo `cid-fmt -v 1 -b base32 %s $FILE1` > file1stat_expect &&
    echo "Size: 4" >> file1stat_expect &&
    echo "ChildBlocks: 0" >> file1stat_expect &&
    echo "Type: file" >> file1stat_expect &&
    echo "Mode: not set (not set)" >> file1stat_expect &&
    echo "Mtime: not set" >> file1stat_expect &&
    test_cmp file1stat_expect file1stat_actual
  
ok 1541 - stat output looks good with --cid-base=base32
1542 - can read file (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files read /cats/file1 > file1out
  
ok 1542 - can read file (with-daemon, blake2b-256 root)
1543 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected file1out
  
ok 1543 - output looks good (with-daemon, blake2b-256 root)
1544 - can put another file into root (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE2 /file2
  
ok 1544 - can put another file into root (with-daemon, blake2b-256 root)
1546 - can list dir Success 0.047
System.out »
expecting success: 
    verify_dir_contents / file2 cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1546 - can list dir
ok 1546 - can list dir
1547 - file shows up in root (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1547 - file shows up in root (with-daemon, blake2b-256 root)
1548 - can read file (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read /file2 > file2out
  
ok 1548 - can read file (with-daemon, blake2b-256 root)
1549 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo bar > expected &&
    test_cmp expected file2out
  
ok 1549 - output looks good (with-daemon, blake2b-256 root)
1550 - can make deep directory (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS -p /cats/this/is/a/dir
  
ok 1550 - can make deep directory (with-daemon, blake2b-256 root)
1552 - can list dir Success 0.049
System.out »
expecting success: 
    verify_path_exists /cats/this/is/a/dir &&
    verify_dir_contents /cats this file1 &&
    verify_dir_contents /cats/this is &&
    verify_dir_contents /cats/this/is a &&
    verify_dir_contents /cats/this/is/a dir &&
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1552 - can list dir
ok 1552 - can list dir
1553 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1553 - dir entries look good
1554 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1554 - can list dir
1555 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1555 - dir entries look good
1556 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1556 - can list dir
1557 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1557 - dir entries look good
1558 - can list dir Success 0.050
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1558 - can list dir
1559 - dir entries look good Success 0.008
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1559 - dir entries look good
1560 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1560 - can list dir
1561 - directory was created correctly (with-daemon, blake2b-256 root) Success 0.028
System.out »
ok 1561 - directory was created correctly (with-daemon, blake2b-256 root)
1562 - dir has correct name Success 0.095
System.out »
expecting success: 
    DIR_HASH=$(ipfs files stat /cats/this --hash) &&
    echo "this/	$DIR_HASH	0" > ls_dir_expected &&
    ipfs files ls -l /cats | grep this/ > ls_dir_actual &&
    test_cmp ls_dir_expected ls_dir_actual
  
ok 1562 - dir has correct name
1563 - can copy file into new dir (with-daemon, blake2b-256 root) Success 0.052
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE3 /cats/this/is/a/dir/file3
  
ok 1563 - can copy file into new dir (with-daemon, blake2b-256 root)
1564 - can copy file into deep dir using -p flag (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp -p /ipfs/$FILE3 /cats/some/other/dir/file3
  
ok 1564 - can copy file into deep dir using -p flag (with-daemon, blake2b-256 root)
1565 - file copied into deep dir exists (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats/some/other/dir/file3 > file_out &&
    echo "baz" > file_exp &&
    test_cmp file_out file_exp
  
ok 1565 - file copied into deep dir exists (with-daemon, blake2b-256 root)
1566 - cleanup deep cp -p test (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats/some
  
ok 1566 - cleanup deep cp -p test (with-daemon, blake2b-256 root)
1567 - can read file (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    ipfs files read /cats/this/is/a/dir/file3 > output
  
ok 1567 - can read file (with-daemon, blake2b-256 root)
1568 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo baz > expected &&
    test_cmp expected output
  
ok 1568 - output looks good (with-daemon, blake2b-256 root)
1570 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir file3
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1570 - can list dir
ok 1570 - can list dir
1571 - file shows up in dir (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1571 - file shows up in dir (with-daemon, blake2b-256 root)
1572 - can remove file (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm /cats/this/is/a/dir/file3
  
ok 1572 - can remove file (with-daemon, blake2b-256 root)
1574 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a/dir
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1574 - can list dir
ok 1574 - can list dir
1575 - file no longer appears (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1575 - file no longer appears (with-daemon, blake2b-256 root)
1576 - can remove dir (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /cats/this/is/a/dir
  
ok 1576 - can remove dir (with-daemon, blake2b-256 root)
1578 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats/this/is/a
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1578 - can list dir
ok 1578 - can list dir
1579 - dir no longer appears (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1579 - dir no longer appears (with-daemon, blake2b-256 root)
1580 - can remove file from root (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files rm /file2
  
ok 1580 - can remove file from root (with-daemon, blake2b-256 root)
1582 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / cats
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1582 - can list dir
ok 1582 - can list dir
1583 - file no longer appears (with-daemon, blake2b-256 root) Success 0.028
System.out »
ok 1583 - file no longer appears (with-daemon, blake2b-256 root)
1584 - check root hash (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > roothash
  
ok 1584 - check root hash (with-daemon, blake2b-256 root)
1585 - cannot remove root (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files rm -r /
  
"/: cannot delete root"
ok 1585 - cannot remove root (with-daemon, blake2b-256 root)
System.err »
Error: can't remove some files
1586 - check root hash was not changed (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash / > roothashafter &&
    test_cmp roothash roothashafter
  
ok 1586 - check root hash was not changed (with-daemon, blake2b-256 root)
1587 - read from offset works (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read -o 1 /cats/file1 > output
  
ok 1587 - read from offset works (with-daemon, blake2b-256 root)
1588 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo oo > expected &&
    test_cmp expected output
  
ok 1588 - output looks good (with-daemon, blake2b-256 root)
1589 - read with size works (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read -n 2 /cats/file1 > output
  
ok 1589 - read with size works (with-daemon, blake2b-256 root)
1590 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    printf fo > expected &&
    test_cmp expected output
  
ok 1590 - output looks good (with-daemon, blake2b-256 root)
1591 - cannot read from negative offset (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset -3 /cats/file1
  
ok 1591 - cannot read from negative offset (with-daemon, blake2b-256 root)
System.err »
Error: cannot specify negative offset
1592 - read from offset 0 works (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files read --offset 0 /cats/file1 > output
  
ok 1592 - read from offset 0 works (with-daemon, blake2b-256 root)
1593 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1593 - output looks good (with-daemon, blake2b-256 root)
1594 - read last byte works (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read --offset 2 /cats/file1 > output
  
ok 1594 - read last byte works (with-daemon, blake2b-256 root)
1595 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    echo o > expected &&
    test_cmp expected output
  
ok 1595 - output looks good (with-daemon, blake2b-256 root)
1596 - offset past end of file fails (with-daemon, blake2b-256 root) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs files read --offset 5 /cats/file1
  
ok 1596 - offset past end of file fails (with-daemon, blake2b-256 root)
System.err »
Error: offset was past end of file (5 > 4)
1597 - cannot read negative count bytes (with-daemon, blake2b-256 root) Success 0.045
System.out »
expecting success: 
    test_expect_code 1 ipfs read --count -1 /cats/file1
  
ok 1597 - cannot read negative count bytes (with-daemon, blake2b-256 root)
System.err »
Error: Unknown Command "read"
1598 - reading zero bytes prints nothing (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files read --count 0 /cats/file1 > output
  
ok 1598 - reading zero bytes prints nothing (with-daemon, blake2b-256 root)
1599 - output looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    printf "" > expected &&
    test_cmp expected output
  
ok 1599 - output looks good (with-daemon, blake2b-256 root)
1600 - count > len(file) prints entire file (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files read --count 200 /cats/file1 > output
  
ok 1600 - count > len(file) prints entire file (with-daemon, blake2b-256 root)
1601 - output looks good (with-daemon, blake2b-256 root) Success 0.004
System.out »
expecting success: 
    echo foo > expected &&
    test_cmp expected output
  
ok 1601 - output looks good (with-daemon, blake2b-256 root)
1602 - can write file (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    echo "ipfs rocks" > tmpfile &&
    cat tmpfile | ipfs files write $ARGS $RAW_LEAVES --create /cats/ipfs
  
ok 1602 - can write file (with-daemon, blake2b-256 root)
1604 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats ipfs file1 this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1604 - can list dir
ok 1604 - can list dir
1605 - file was created (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1605 - file was created (with-daemon, blake2b-256 root)
1606 - can read file we just wrote (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats/ipfs > output
  
ok 1606 - can read file we just wrote (with-daemon, blake2b-256 root)
1607 - can write to offset (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    echo "is super cool" | ipfs files write $ARGS $RAW_LEAVES -o 5 /cats/ipfs
  
ok 1607 - can write to offset (with-daemon, blake2b-256 root)
1608 - file looks correct (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    echo "ipfs is super cool" > expected &&
    ipfs files read /cats/ipfs > output &&
    test_cmp expected output
  
ok 1608 - file looks correct (with-daemon, blake2b-256 root)
1609 - file hash correct (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    echo $FILE_HASH > filehash_expected &&
    ipfs files stat --hash /cats/ipfs > filehash &&
    test_cmp filehash_expected filehash
  
ok 1609 - file hash correct (with-daemon, blake2b-256 root)
1610 - can't write to negative offset (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES --offset -1 /cats/ipfs < output
  
ok 1610 - can't write to negative offset (with-daemon, blake2b-256 root)
System.err »
Error: cannot have negative write offset
1611 - verify file was not changed (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /cats/ipfs > afterhash &&
    test_cmp filehash afterhash
  
ok 1611 - verify file was not changed (with-daemon, blake2b-256 root)
1612 - write new file for testing (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    echo foobar | ipfs files write $ARGS $RAW_LEAVES --create /fun
  
ok 1612 - write new file for testing (with-daemon, blake2b-256 root)
1613 - write to offset past end works (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    echo blah | ipfs files write $ARGS $RAW_LEAVES --offset 50 /fun
  
ok 1613 - write to offset past end works (with-daemon, blake2b-256 root)
1614 - can read file (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files read /fun > sparse_output
  
ok 1614 - can read file (with-daemon, blake2b-256 root)
1615 - output looks good (with-daemon, blake2b-256 root) Success 0.006
System.out »
expecting success: 
    echo foobar > sparse_expected &&
    echo blah | dd of=sparse_expected bs=50 seek=1 &&
    test_cmp sparse_expected sparse_output
  
ok 1615 - output looks good (with-daemon, blake2b-256 root)
System.err »
0+1 records in
0+1 records out
5 bytes copied, 2.4146e-05 s, 207 kB/s
1616 - cleanup (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm /fun
  
ok 1616 - cleanup (with-daemon, blake2b-256 root)
1617 - cannot write to directory (with-daemon, blake2b-256 root) Success 0.093
System.out »
expecting success: 
    ipfs files stat --hash /cats > dirhash &&
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats < output
  
ok 1617 - cannot write to directory (with-daemon, blake2b-256 root)
System.err »
Error: /cats was not a file
1618 - verify dir was not changed (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files stat --hash /cats > afterdirhash &&
    test_cmp dirhash afterdirhash
  
ok 1618 - verify dir was not changed (with-daemon, blake2b-256 root)
1619 - cannot write to nonexistent path (with-daemon, blake2b-256 root) Success 0.046
System.out »
expecting success: 
    test_expect_code 1 ipfs files write $ARGS $RAW_LEAVES /cats/bar/ < output
  
ok 1619 - cannot write to nonexistent path (with-daemon, blake2b-256 root)
System.err »
Error: file does not exist
1621 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1621 - can list dir
ok 1621 - can list dir
1622 - no new paths were created (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1622 - no new paths were created (with-daemon, blake2b-256 root)
1623 - 'ipfs daemon' is running when WITH_DAEMON is set Success 0.007
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=3 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1623 - 'ipfs daemon' is running when WITH_DAEMON is set
1624 - write 'no-flush' succeeds (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    echo "testing" | ipfs files write $ARGS $RAW_LEAVES -f=false -e /cats/walrus
  
ok 1624 - write 'no-flush' succeeds (with-daemon, blake2b-256 root)
1625 - root hash not bubbled up yet (with-daemon, blake2b-256 root) Success 0.055
System.out »
expecting success: 
    test -z "$WITH_DAEMON" ||
    (ipfs refs local > refsout &&
    test_expect_code 1 grep $ROOT_HASH refsout)
  
ok 1625 - root hash not bubbled up yet (with-daemon, blake2b-256 root)
1626 - changes bubbled up to root on inspection (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash / > root_hash
  
ok 1626 - changes bubbled up to root on inspection (with-daemon, blake2b-256 root)
1627 - root hash looks good (with-daemon, blake2b-256 root) Success 0.005
System.out »
expecting success: 
    export EXP_ROOT_HASH="$ROOT_HASH" &&
    echo $EXP_ROOT_HASH > root_hash_exp &&
    test_cmp root_hash_exp root_hash
  
ok 1627 - root hash looks good (with-daemon, blake2b-256 root)
1628 - /cats hash looks good (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    export EXP_CATS_HASH="$CATS_HASH" &&
    echo $EXP_CATS_HASH > cats_hash_exp &&
    ipfs files stat --hash /cats > cats_hash
    test_cmp cats_hash_exp cats_hash
  
ok 1628 - /cats hash looks good (with-daemon, blake2b-256 root)
1629 - flush root succeeds (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files flush /
  
{"Cid":"bafykbzaceaebvwrjdw5rfhqqh5miaq3g42yybnrw3kxxxx43ggyttm6xn2zek"}
ok 1629 - flush root succeeds (with-daemon, blake2b-256 root)
1630 - can mv dir (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    ipfs files mv /cats/this/is /cats/
  
ok 1630 - can mv dir (with-daemon, blake2b-256 root)
1631 - can mv dir and dest dir is / (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files mv /cats/is /
  
ok 1631 - can mv dir and dest dir is / (with-daemon, blake2b-256 root)
1632 - can mv dir and dest dir path has no trailing slash (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    ipfs files mv /is /cats
  
ok 1632 - can mv dir and dest dir path has no trailing slash (with-daemon, blake2b-256 root)
1634 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /cats file1 ipfs this is walrus &&
    verify_dir_contents /cats/this
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1634 - can list dir
ok 1634 - can list dir
1635 - dir entries look good Success 0.007
System.out »
expecting success: 
    test_sort_cmp output expected
  
ok 1635 - dir entries look good
1636 - can list dir Success 0.049
System.out »
expecting success: 
    ipfs files ls $dir > output
  
ok 1636 - can list dir
1637 - mv worked (with-daemon, blake2b-256 root) Success 0.028
System.out »
ok 1637 - mv worked (with-daemon, blake2b-256 root)
1638 - cleanup, remove 'cats' (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /cats
  
ok 1638 - cleanup, remove 'cats' (with-daemon, blake2b-256 root)
1640 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1640 - can list dir
ok 1640 - can list dir
1641 - cleanup looks good (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1641 - cleanup looks good (with-daemon, blake2b-256 root)
1642 - create a new file (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    echo "some content" | ipfs files write $ARGS $RAW_LEAVES --create /cats
  
ok 1642 - create a new file (with-daemon, blake2b-256 root)
1643 - truncate and write over that file (with-daemon, blake2b-256 root) Success 0.049
System.out »
expecting success: 
    echo "fish" | ipfs files write $ARGS $RAW_LEAVES --truncate /cats
  
ok 1643 - truncate and write over that file (with-daemon, blake2b-256 root)
1644 - output looks good (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files read /cats > file_out &&
    echo "fish" > file_exp &&
    test_cmp file_out file_exp
  
ok 1644 - output looks good (with-daemon, blake2b-256 root)
1645 - file hash correct (with-daemon, blake2b-256 root) Success 0.051
System.out »
expecting success: 
    echo $TRUNC_HASH > filehash_expected &&
    ipfs files stat --hash /cats > filehash &&
    test_cmp filehash_expected filehash
  
ok 1645 - file hash correct (with-daemon, blake2b-256 root)
1646 - cleanup (with-daemon, blake2b-256 root) Success 0.046
System.out »
expecting success: 
    ipfs files rm /cats
  
ok 1646 - cleanup (with-daemon, blake2b-256 root)
1647 - mkdir --flush works (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1647 - mkdir --flush works (with-daemon, blake2b-256 root)
1648 - mkdir --flush works a second time (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS --flush --parents /flushed/deep
  
ok 1648 - mkdir --flush works a second time (with-daemon, blake2b-256 root)
1650 - can list dir Success 0.050
System.out »
expecting success: 
    verify_dir_contents / flushed
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1650 - can list dir
ok 1650 - can list dir
1651 - dir looks right (with-daemon, blake2b-256 root) Success 0.028
System.out »
ok 1651 - dir looks right (with-daemon, blake2b-256 root)
1653 - can list dir Success 0.048
System.out »
expecting success: 
    verify_dir_contents /flushed deep
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1653 - can list dir
ok 1653 - can list dir
1654 - child dir looks right (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1654 - child dir looks right (with-daemon, blake2b-256 root)
1655 - cleanup (with-daemon, blake2b-256 root) Success 0.046
System.out »
expecting success: 
    ipfs files rm -r /flushed
  
ok 1655 - cleanup (with-daemon, blake2b-256 root)
1657 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1657 - can list dir
ok 1657 - can list dir
1658 - child dir looks right (with-daemon, blake2b-256 root) Success 0.028
System.out »
ok 1658 - child dir looks right (with-daemon, blake2b-256 root)
1659 - create and remove dir (with-daemon, blake2b-256 root) Success 0.091
System.out »
expecting success: 
    ipfs files mkdir $ARGS /test_dir &&
    ipfs files rm -r "/test_dir"
  
ok 1659 - create and remove dir (with-daemon, blake2b-256 root)
1660 - create test file (with-daemon, blake2b-256 root) Success 0.052
System.out »
expecting success: 
    echo "content" | ipfs files write $ARGS $RAW_LEAVES -e "/test_file"
  
ok 1660 - create test file (with-daemon, blake2b-256 root)
1661 - copy test file onto test dir (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp "/test_file" "/test_dir"
  
ok 1661 - copy test file onto test dir (with-daemon, blake2b-256 root)
1662 - test /test_dir (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files stat "/test_dir" | grep -q "^Type: file"
  
ok 1662 - test /test_dir (with-daemon, blake2b-256 root)
1663 - clean up /test_dir and /test_file (with-daemon, blake2b-256 root) Success 0.092
System.out »
expecting success: 
    ipfs files rm -r /test_dir &&
    ipfs files rm -r /test_file
  
ok 1663 - clean up /test_dir and /test_file (with-daemon, blake2b-256 root)
1664 - make a directory and a file (with-daemon, blake2b-256 root) Success 0.096
System.out »
expecting success: 
    ipfs files mkdir $ARGS /adir &&
    echo "blah" | ipfs files write $ARGS $RAW_LEAVES --create /foobar
  
ok 1664 - make a directory and a file (with-daemon, blake2b-256 root)
1665 - copy a file into a directory (with-daemon, blake2b-256 root) Success 0.050
System.out »
expecting success: 
    ipfs files cp /foobar /adir/
  
ok 1665 - copy a file into a directory (with-daemon, blake2b-256 root)
1666 - file made it into directory (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    ipfs files ls /adir | grep foobar
  
foobar
ok 1666 - file made it into directory (with-daemon, blake2b-256 root)
1667 - test copy --force overwrites files Success 0.227
System.out »
expecting success: 
    ipfs files cp /ipfs/$FILE1 /file1 &&
    ipfs files cp /ipfs/$FILE2 /file2 &&
    ipfs files cp --force /file1 /file2 &&
    test "`ipfs files read /file1`" = "`ipfs files read /file2`"
  
ok 1667 - test copy --force overwrites files
1668 - clean up Success 0.089
System.out »
expecting success: 
    ipfs files rm /file1 &&
    ipfs files rm /file2
  
ok 1668 - clean up
1669 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, blake2b-256 root) Success 0.047
System.out »
expecting success: 
    echo "ipfs rocks" | test_must_fail ipfs files write --create /parents/foo/ipfs.txt
  
ok 1669 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, blake2b-256 root)
System.err »
Error: file does not exist
1670 - can write file and create intermediate directories (with-daemon, blake2b-256 root) Success 0.093
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write --create --parents /parents/foo/bar/baz/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/ipfs.txt" | grep -q "^Type: file"
  
ok 1670 - can write file and create intermediate directories (with-daemon, blake2b-256 root)
1671 - can write file and create intermediate directories with short flags (with-daemon, blake2b-256 root) Success 0.096
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs.txt" | grep -q "^Type: file"
  
ok 1671 - can write file and create intermediate directories with short flags (with-daemon, blake2b-256 root)
1672 - can write another file in the same directory with -e -p (with-daemon, blake2b-256 root) Success 0.094
System.out »
expecting success: 
    echo "ipfs rocks" | ipfs files write -e -p /parents/foo/bar/baz/qux/quux/garply/ipfs2.txt &&
    ipfs files stat "/parents/foo/bar/baz/qux/quux/garply/ipfs2.txt" | grep -q "^Type: file"
  
ok 1672 - can write another file in the same directory with -e -p (with-daemon, blake2b-256 root)
1673 - clean up (with-daemon, blake2b-256 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /foobar /adir /parents
  
ok 1673 - clean up (with-daemon, blake2b-256 root)
1675 - can list dir Success 0.049
System.out »
expecting success: 
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1675 - can list dir
ok 1675 - can list dir
1676 - root mfs entry is empty (with-daemon, blake2b-256 root) Success 0.027
System.out »
ok 1676 - root mfs entry is empty (with-daemon, blake2b-256 root)
1677 - repo gc (with-daemon, blake2b-256 root) Success 0.054
System.out »
expecting success: 
    ipfs repo gc
  
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafk2bzacecpbehd5h3ogubbl72scbeem7tq5xd5kl355qbc2vizi3pgyo3cw4
removed bafk2bzacecyucyw45bopsgabl5sqa74m6zywi5ico2hmwt2zby3ymkwx5dcy2
removed bafkreid5ubedby5ogjztabucd22534vl2uqqmf5rsrqhy5j5zd6evyyy2m
removed bafk2bzaceb5vlnp7pfroxrow6lhbhx5ha6joqcbqwdhkcakyyjd2blgbq2hka
removed bafk2bzacebhyzpwr2syggs5cdgnxe6nyxxvww4qjp3rkdgcnky2xrnvqqwndm
removed bafk2bzacebzobpfv7lwcd5wt2ixxor76lxx7ons6duwval2eytoutrpshsb5q
removed bafk2bzacedptxcinl527nslezn2t2d6d3wtiw6ysopg6ikkb6u644yuwci2es
removed bafkreicnqleufqxpgkzqndqzo6spq6grat7cpyh3bsicrfav74ddawpx44
removed bafk2bzacebqorwtgootqpd2ya472676p575h3kur7dnus5iunwmidaddqbb2a
removed bafk2bzacecwneh5jwqkawo4pnhc543f5gio65og7w645oyfxqzf24c7w5boqq
removed bafkreic5n4nshgoughtgtx4a3362lhxqvvxxhfltzhir75czalpdmjlsae
removed bafkreifw7mea4g6xt2y5dvhlc4vmz2fecscmdyneyut6txtfculjzdw3iq
removed bafk2bzacecpmfsiozbimzunzesagarxkz2g5g4yommnnr23tykfxrk52snrde
removed bafk2bzacedwjskkrugk7kyhqjlovdcvq7atkyvh7tjmwqauziksprfcm2e6nq
removed bafk2bzacebir4jlvkw5qf54oyr4rfay3z4wnh22knalfdxigcu4s4w76xq32c
removed bafk2bzacecqsgggnv7chyxgosa6xd3qmikvw6smhrlkv3sd4b4myz3hwimlcw
removed bafk2bzacecu23bq6srffr7g5i3aiwjxoyjcu4hcgl3gw5uxwnef63u5fgcyzk
removed bafk2bzacebnpk5u3swtrck2622oobj3l3pe3kuo4dq4dhz7pq5p55y6yh5v4c
removed bafk2bzacealgilrgubl2sgb62nsd4ixmg7agoc5lfab6m5ormty66o4lax47s
removed bafk2bzaceaqvpxs3dfl7su6744jgyvifbusow2tfixdy646chasdwyz2boagc
removed bafk2bzacecjdzef3tdbiynelzp7icdjzxqinrff4dtlh2k6vagdywxgs6nv2m
removed bafk2bzaced6i34rbq2uqeettoykmq6oshwa34h2tkj443vfmqspq6rbsvkgnm
removed bafk2bzaceajg7wpjg65xsx7xnrn3e3soljeouodk6ksnkhjplbjtaffkhredk
removed bafkreifbekr2fj6zvs473x5pzeh7uloqzpeq6dx2znhockqcbckymahjji
removed bafk2bzaceaavxown4ohdnyj75yqz266muj2hesunwuj3jmuz6rlr436zmq4bi
removed bafk2bzacecnur64xbjsd4dtjmkxbkac3n27tj5fyy2jdljpmxzwe3veturrt6
removed bafk2bzacecpod4c6htk265go5mjgl7jqvv4z5jlubbyq4t27xu2tyth5l7qp2
removed bafk2bzacebbvgipwngjftlgp5wyirel7zf74b43ukyl4y5ozhmiq6ftb53wsk
removed bafkreifjjcie6lypi6ny7amxnfftagclbuxndqonfipmb64f2km2devei4
removed bafkreif2jccky34wjh5l7x4mi6wk6pwfrr5rrhsmuxmy6hqqc2asgkqckm
removed bafk2bzaceb5vkghjlasy6yz7on2zerclsqiobsauz67d3ipxkcqsr6yubxttk
removed bafkreibbgwkqerxbtsqhbtv7hde7d3a6vqe55pg6zplh5xforhhkek2wuu
removed bafk2bzacedm37xanyiss4igune6uov54eddmcz6norvvexkktlgpxrq2nu3hi
removed bafkreia4miqqt6qvhkmlsw3ipfiax3c7ntd2y4rnurvuvbayj3zl63otdq
removed bafk2bzacedzbz2jusad2mwolqy5yxj6qhh4ynuqoelgqpl6md5vl4ywuirrs2
removed bafk2bzacedea6fqhr3qazuhyluygrwk3wadvco6buik7a4nrkjowh4i5tezs6
removed bafk2bzaceahgzu3agifzs35iia47aerohrmj233ur3elwmfolpi5hqrkfyjxw
removed bafk2bzacecmpnhjpzd43wxvhirgzmhcgc52hpy76soj75omspbpe2ma6fxnd2
removed bafk2bzacedr2bxspxoqcgiu3akhwduzrfzdu46giceuq446b6waoowq6pdh5c
removed bafk2bzacedg2ulo2vvhcrohnvs4xv7pwortzphdjvjhdr6kwe2cig3lewvwt2
removed bafkreihvunicemjjmpooayx2wv2poqh47ntjeev7nugfxji45dzqlwdr3e
removed bafk2bzacecvzuahqnomlyidjhsw4dfvrdmpjgwmhesyttcejeg7ih5r3dltwq
removed bafk2bzacedah5xmqbo36hqz73472oynvokc2347pbn4lgxnb4wuvuvh262nfe
removed bafk2bzacedlobq65wptbrmg5iab4kimbvpyuc67zvc4vr6hs3vyctsbp6prlm
removed bafk2bzacebjnwnguakthclrfjtuaylmvtskjqmp7mxckctljuwvkis75bz2ds
removed bafk2bzacebq3a5t4yynvel4azcttxaqelsw7e6knq2fxdoe7quc7u3czukqhe
removed bafk2bzaced24dvnnq63vnyw6vybfl6e6oojsld7o5h2lt7oo53l77lz5k7ze2
removed bafk2bzacea4fhyy6wpnllj5j446y4kf4wwrhgvvbsvhitvumvsrhwpdzlgs46
removed bafk2bzacebws5pyn2fnoqoyav5ecm7ky6qxu3k4xni2okhqbxsojlg6npvfwo
removed bafk2bzacealqjolxxzaddm7gfqcdqfe65icxls53cwyzzgijmhqzxkqwmiemg
removed bafk2bzacedjuohyayzosvzwhbwknt7pogloj7kyck4d22xotyjxx2mpsfkc5u
removed bafk2bzaceckifl4tnkl4g66bxgyxfdvpyemrpkelh4y3d5xn6666n4dj4mpjq
removed bafk2bzaceacbfff3vkru5jkdnqobzqpsztju2j43vgxnga6jr25zar5sj6ty4
removed bafk2bzacean4cp5owkrzlk2plo2cj6rim7l4rhxmlr22y6tmccsjpyfzigple
removed bafk2bzacebxzrjm2y2auijdxokonijvwbf4es5lu2nt54n3pk6o7luls3yqs6
removed bafk2bzaceaebvwrjdw5rfhqqh5miaq3g42yybnrw3kxxxx43ggyttm6xn2zek
removed bafkreieytoq2dwftkbup5pilachws455pazc27ade5mdmnmz7g5zzashim
removed bafk2bzacebzb26aykgh22npnfluhbytaepltlmuujfvrtohzzvz5mp4rrlisk
removed bafk2bzaceca45w2i3o3q3ctqsezdv5koakz7sxsw37ygqjg4w54m2bshzevxy
removed bafk2bzaced2clwwza6ifibbagqch5mkq362lpvz7uswdxno3gukzk2pn7fg6s
removed bafk2bzaced23hqtjaa25hh4emcfqlraaa24xrkrj7r4rspnvwsmd4gaexnyps
removed bafk2bzaceapaf5dlyyv3jbzjcfl6v3ovhbcfj56yakyqcdrid2hswoynwdqya
removed bafk2bzacebvmgyofyilpvbo3psx4k46mysvhyrl5zk36iavfye2tmjejcgcno
removed bafk2bzaced7gmicvhiv7hydhx4fc2sha37i4tpy3az5q34w6libkydru5rlks
removed bafk2bzacec45mm2rxtvcvp2zncjks2f4pyncqep64ia7ly3aq3wjmunzgnaay
removed bafk2bzaceazgxjrtvlqszhi2bgkv6fdgdgtdwmxfea5px7qoby55whn72l6zo
removed bafk2bzacecflz4crnbylhjy5sapeplvonayvhcrtooaggj2x5bev5yo52ew4m
removed bafk2bzacecl7lh5mp7olsda2jmpynsgb6zcpsss724jsokk6elpn46samjwjc
removed bafk2bzacedee337lxzbmgolubvrwevksn2izokosdwugozha2xnfjp76n4jfu
removed bafk2bzaceb2girdgzxr2vshoj2drlld6cnqhnsdwrmdyh75y42hpo7ymnt73a
removed bafk2bzacecd7qh7tzhrbjxvk6i75nradi66mzuy4r7lkcszheiybwp5hveooc
removed bafk2bzacec47iidnl6zgx6oakbspbiwjrxjf7yi47rwtnvzbgvgvuaa2qsgks
removed bafk2bzacedlfbeoqerjqkirp7mc7rqnvlheyq7yigfne5wky7qjkekyfdzinm
removed bafk2bzaceaahtjcdaicmgfcejl2itow3z2oeu5da735psiasps4j2esygtl42
removed bafk2bzacebm47suze7u7si44rzzubncvanmriinpja6vxl43sqqxqbk7rq4my
removed bafk2bzacecjidedogsphokqrdpkbuw6bycg4hhd6y2ylfplufd6yue6z74pyo
removed bafk2bzaceayxtheasf3oxenv7yhq5mjcf2o4vainb4nefuvcp3fdvnssjcunw
removed bafk2bzaceb56efkimsqv2mg32634lt4ych2nzrjpwpazbxol6pphiwgzgdr7g
removed bafkreiakt3a3ermq63osoyctmtwyyngsnyjxon7yh7ribxmfexpt3o5kpe
removed bafk2bzacebrz46zibm5iy5y3b4ozs3mufdy7flwx7vx3scovzmhmmc6ocy56q
removed bafk2bzacecagfrlfq6pc4jovdcelbrexop5tgd7cvytdz2lozw6zzhzjnpj5c
removed bafk2bzacecayu6za5g6mrxvqaolriig6xryxatyyqru4zwprsgvm3akor7eec
removed bafk2bzaceamztigcxxz6tdmdwvp46zoy7malhayzczwuugd5pg42foxlqg7i4
removed bafk2bzaceddauw4ty3oq32n7ewzdyveebdsmowzj2dfvthcnja2qwymxzijns
removed bafk2bzaceadeu7onzmlq7v33ytjpmo37rsqk2q6mzeqf5at55j32zxbcdbwig
removed bafk2bzacedysrn54cbcpldfdzc732keemzvajnekp73qr7cfuyng2ri66xlxm
removed bafk2bzacea6pqucrbdxezesodvbr7fnvqq47636cbuxbhy67dy66ksw66pvdk
removed bafk2bzacebctrhjefqfyapyc3rmahu5tzucdojk45cllnbyle4p2r6mogm2ji
removed bafk2bzacebu662bpaltspgvocyckpahnr7co3dqawaafq2z4fuh4zl7363ym4
removed bafk2bzacebhucxfymr74cvddpojzupkz4cj5apukepuk7myc2hfbxv477fxqg
removed bafk2bzacediptwjgxpogzapa3velveubzayjjbvkvicqolz2dod5tfkksqq4o
removed bafk2bzacebtjtzq3e3p7rxpluginfb7ndtageqdhb5vjheszp5kplducbmujg
removed bafk2bzacedw5k5akmpc5zjtyb6scpahxbhik3l3igsdmfcj2bgm4igjhvb5vq
removed bafk2bzacecia7xv5z5halnmm47xqvaa5noxqeiuz3mrflyl3ixwm44boyknvw
removed bafk2bzaced7tvpyz37htlrbwlzio35xsigp7izwxkdmhy4jwaxfjg23qxura6
removed bafk2bzacedjbycbujzktlgbgvgja444lpngn3dnehrv72khnewtdhsqw55cay
removed bafk2bzacedc3p3ybeqjq4hv3y4kucowltsj273zcnbr4ard4jxdajhmwiqcau
removed bafk2bzacebu7qxk6wi2h6tioax4o56yxuyigajg2wan5azukn4asanmpbkd4u
removed bafk2bzacebk57kx5od5putybc6q77wfvdhbytvdxtqh46nvrzxzbsites3zqo
removed bafk2bzacecnoawovtxrizoosf3r64fn75ruxsgibhrbeu3aeevgoqx6nmmdi6
removed bafkreifa6j2tgaccby2lhmk2ept2w2st77fe5hofz2youbob4x3wx4yfja
removed bafk2bzaceaocyhqq5scrgkzgoafrypypjocd6p34eapndr6gu2yllxsciceka
removed bafk2bzaceahfouoae3suhmxivmxlayez3kq5dzo7i53y654h7kvultprf7r2q
removed bafk2bzacebpxp5gyk5h6vyjhnzti7mfa7w3uyhxak5rtserw7lncmfwh5br2y
removed bafk2bzacebqydxodno5n36n2727zzbztnucj7cz4zs2sfhz7yyneabpl57o4y
removed bafk2bzaceb2akv5mzl6tt4ez4q2guppbqlvqegg5prxykkix5juc6e2fvzxds
removed bafk2bzaceayvbgtvfwc2bu7lxw3tujber4tfo2r4jecow5mqwajxgebp7rnaa
ok 1677 - repo gc (with-daemon, blake2b-256 root)
1679 - can list dir Success 0.049
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly &&
    ipfs files rm --force /forcibly &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1679 - can list dir
ok 1679 - can list dir
1680 - remove file forcibly Success 0.027
System.out »
ok 1680 - remove file forcibly
1682 - can list dir Success 0.050
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /forcibly_one &&
    echo "hello world" | ipfs files write --create /forcibly_two &&
    ipfs files rm --force /forcibly_one /forcibly_two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1682 - can list dir
ok 1682 - can list dir
1683 - remove multiple files forcibly Success 0.028
System.out »
ok 1683 - remove multiple files forcibly
1685 - can list dir Success 0.047
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir &&
    ipfs files rm --force /forcibly-dir &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1685 - can list dir
ok 1685 - can list dir
1686 - remove directory forcibly Success 0.028
System.out »
ok 1686 - remove directory forcibly
1688 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm --force /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1688 - can list dir
ok 1688 - can list dir
1689 - remove multiple directories forcibly Success 0.028
System.out »
ok 1689 - remove multiple directories forcibly
1690 - remove multiple files Success 0.140
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    ipfs files rm /file_one /file_two
  
ok 1690 - remove multiple files
1692 - can list dir Success 0.048
System.out »
expecting success: 
    ipfs files mkdir /forcibly-dir-one &&
    ipfs files mkdir /forcibly-dir-two &&
    ipfs files rm -r /forcibly-dir-one /forcibly-dir-two &&
    verify_dir_contents /
  
expecting success: 
    ipfs files ls $dir > output
  
ok 1692 - can list dir
ok 1692 - can list dir
1693 - remove multiple directories Success 0.027
System.out »
ok 1693 - remove multiple directories
1694 - remove nonexistent path forcibly Success 0.049
System.out »
expecting success: 
    ipfs files rm --force /nonexistent
  
ok 1694 - remove nonexistent path forcibly
1695 - remove deeply nonexistent path forcibly Success 0.048
System.out »
expecting success: 
    ipfs files rm --force /deeply/nonexistent
  
ok 1695 - remove deeply nonexistent path forcibly
1697 - can list dir Success 0.048
System.out »
expecting success: 
    echo "hello world" | ipfs files write --create /file_one &&
    echo "hello world" | ipfs files write --create /file_two &&
    test_expect_code 1 ipfs files rm /file_one /nonexistent /file_two
    verify_dir_contents /
  
"/nonexistent: file does not exist"
expecting success: 
    ipfs files ls $dir > output
  
ok 1697 - can list dir
ok 1697 - can list dir
System.err »
Error: can't remove some files
1698 - remove multiple files (with nonexistent one) Success 0.027
System.out »
ok 1698 - remove multiple files (with nonexistent one)
1699 - can update root hash back to cidv0 Success 0.095
System.out »
expecting success: 
    ipfs files chcid / --cid-version=0 &&
    echo QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn > hash_expect &&
    ipfs files stat --hash / > hash_actual &&
    test_cmp hash_expect hash_actual
  
ok 1699 - can update root hash back to cidv0
1700 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 1700 - 'ipfs daemon' is still running
1701 - 'ipfs daemon' can be killed Success 0.244
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 1701 - 'ipfs daemon' can be killed
1702 - enable sharding in config Success 0.058
System.out »
expecting success: 
  ipfs config --json Import.UnixFSHAMTDirectorySizeThreshold "\"1B\""

ok 1702 - enable sharding in config
1703 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 1703 - 'ipfs daemon' succeeds
1704 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 1704 - api file shows up
1705 - set up address variables Success 0.017
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 1705 - set up address variables
1706 - 'ipfs daemon' is ready Success 0.007
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1706 - 'ipfs daemon' is ready
1707 - make a directory (cidv0) Success 0.047
System.out »
expecting success: 
    ipfs files mkdir $ARGS /foo
  
ok 1707 - make a directory (cidv0)
1708 - can make 100 files in a directory (cidv0) Success 4.680
System.out »
expecting success: 
    printf "" > list_exp_raw
    for i in `seq 100 -1 1`
    do
      echo $i | ipfs files write --create /foo/file$i || return 1
      echo file$i >> list_exp_raw
    done
  
ok 1708 - can make 100 files in a directory (cidv0)
1709 - sorted listing works (cidv0) Success 0.053
System.out »
expecting success: 
    ipfs files ls /foo > list_out &&
    sort list_exp_raw > list_exp &&
    test_cmp list_exp list_out
  
ok 1709 - sorted listing works (cidv0)
1710 - unsorted listing works (cidv0) Success 0.063
System.out »
expecting success: 
    ipfs files ls -U /foo > list_out &&
    sort list_exp_raw > sort_list_not_exp &&
    ! test_cmp sort_list_not_exp list_out
  
> diff -u sort_list_not_exp list_out
--- sort_list_not_exp	2026-02-27 18:16:13.115366757 +0000
+++ list_out	2026-02-27 18:16:13.089366777 +0000
@@ -1,100 +1,100 @@
-file1
-file10
-file100
-file11
-file12
-file13
-file14
-file15
-file16
-file17
-file18
-file19
-file2
-file20
-file21
+file88
+file94
 file22
-file23
-file24
+file2
+file86
+file16
+file58
 file25
-file26
-file27
-file28
+file12
 file29
-file3
-file30
-file31
-file32
-file33
-file34
-file35
-file36
-file37
 file38
+file78
+file85
+file37
+file50
+file35
+file82
+file81
+file92
+file99
+file67
 file39
-file4
-file40
-file41
-file42
-file43
-file44
-file45
-file46
-file47
 file48
-file49
-file5
-file50
+file30
 file51
-file52
-file53
 file54
-file55
-file56
-file57
-file58
+file91
+file19
+file33
+file72
+file47
+file1
+file3
+file23
+file76
+file36
+file75
+file42
+file8
+file15
+file80
+file52
 file59
 file6
-file60
-file61
 file62
-file63
-file64
-file65
-file66
-file67
 file68
-file69
+file56
 file7
+file17
+file95
+file44
+file100
 file70
-file71
-file72
-file73
+file43
+file32
+file9
 file74
-file75
-file76
-file77
-file78
-file79
-file8
-file80
-file81
-file82
-file83
-file84
-file85
-file86
+file21
+file26
 file87
-file88
-file89
-file9
 file90
-file91
-file92
-file93
-file94
-file95
+file13
+file27
+file31
+file49
+file4
+file53
+file14
+file60
+file55
+file71
+file11
+file77
+file20
+file73
+file89
+file98
+file24
+file18
+file10
+file45
+file61
+file57
+file64
+file46
+file66
+file83
+file69
+file65
+file40
 file96
+file28
+file63
+file41
+file84
 file97
-file98
-file99
+file93
+file5
+file34
+file79

ok 1710 - unsorted listing works (cidv0)
1711 - can read a file from sharded directory (cidv0) Success 0.052
System.out »
expecting success: 
    ipfs files read /foo/file65 > file_out &&
    echo "65" > file_exp &&
    test_cmp file_out file_exp
  
ok 1711 - can read a file from sharded directory (cidv0)
1712 - can pin a file from sharded directory (cidv0) Success 0.101
System.out »
expecting success: 
    ipfs files stat --hash /foo/file42 > pin_file_hash &&
    ipfs pin add < pin_file_hash > pin_hash
  
ok 1712 - can pin a file from sharded directory (cidv0)
1713 - can unpin a file from sharded directory (cidv0) Success 0.051
System.out »
expecting success: 
    read -r _ HASH _ < pin_hash &&
    ipfs pin rm $HASH
  
unpinned QmczaHZauSiQCoDULzUyKp2KPhvFvj3qddxi6PN6JBxQ3Y
ok 1713 - can unpin a file from sharded directory (cidv0)
1714 - output object was really sharded and has correct hash (cidv0) Success 0.051
System.out »
expecting success: 
    ipfs files stat --hash /foo > expected_foo_hash &&
    echo $SHARD_HASH > actual_foo_hash &&
    test_cmp expected_foo_hash actual_foo_hash
  
ok 1714 - output object was really sharded and has correct hash (cidv0)
1715 - clean up (cidv0) Success 0.047
System.out »
expecting success: 
    ipfs files rm -r /foo
  
ok 1715 - clean up (cidv0)
1716 - make a directory (cidv1 root) Success 0.049
System.out »
expecting success: 
    ipfs files mkdir $ARGS /foo
  
ok 1716 - make a directory (cidv1 root)
1717 - can make 100 files in a directory (cidv1 root) Success 4.725
System.out »
expecting success: 
    printf "" > list_exp_raw
    for i in `seq 100 -1 1`
    do
      echo $i | ipfs files write --create /foo/file$i || return 1
      echo file$i >> list_exp_raw
    done
  
ok 1717 - can make 100 files in a directory (cidv1 root)
1718 - sorted listing works (cidv1 root) Success 0.055
System.out »
expecting success: 
    ipfs files ls /foo > list_out &&
    sort list_exp_raw > list_exp &&
    test_cmp list_exp list_out
  
ok 1718 - sorted listing works (cidv1 root)
1719 - unsorted listing works (cidv1 root) Success 0.064
System.out »
expecting success: 
    ipfs files ls -U /foo > list_out &&
    sort list_exp_raw > sort_list_not_exp &&
    ! test_cmp sort_list_not_exp list_out
  
> diff -u sort_list_not_exp list_out
--- sort_list_not_exp	2026-02-27 18:16:18.496362585 +0000
+++ list_out	2026-02-27 18:16:18.470362606 +0000
@@ -1,100 +1,100 @@
-file1
-file10
-file100
-file11
-file12
-file13
-file14
-file15
-file16
-file17
-file18
-file19
-file2
-file20
-file21
+file88
+file94
 file22
-file23
-file24
+file2
+file86
+file16
+file58
 file25
-file26
-file27
-file28
+file12
 file29
-file3
-file30
-file31
-file32
-file33
-file34
-file35
-file36
-file37
 file38
+file78
+file85
+file37
+file50
+file35
+file82
+file81
+file92
+file99
+file67
 file39
-file4
-file40
-file41
-file42
-file43
-file44
-file45
-file46
-file47
 file48
-file49
-file5
-file50
+file30
 file51
-file52
-file53
 file54
-file55
-file56
-file57
-file58
+file91
+file19
+file33
+file72
+file47
+file1
+file3
+file23
+file76
+file36
+file75
+file42
+file8
+file15
+file80
+file52
 file59
 file6
-file60
-file61
 file62
-file63
-file64
-file65
-file66
-file67
 file68
-file69
+file56
 file7
+file17
+file95
+file44
+file100
 file70
-file71
-file72
-file73
+file43
+file32
+file9
 file74
-file75
-file76
-file77
-file78
-file79
-file8
-file80
-file81
-file82
-file83
-file84
-file85
-file86
+file21
+file26
 file87
-file88
-file89
-file9
 file90
-file91
-file92
-file93
-file94
-file95
+file13
+file27
+file31
+file49
+file4
+file53
+file14
+file60
+file55
+file71
+file11
+file77
+file20
+file73
+file89
+file98
+file24
+file18
+file10
+file45
+file61
+file57
+file64
+file46
+file66
+file83
+file69
+file65
+file40
 file96
+file28
+file63
+file41
+file84
 file97
-file98
-file99
+file93
+file5
+file34
+file79

ok 1719 - unsorted listing works (cidv1 root)
1720 - can read a file from sharded directory (cidv1 root) Success 0.052
System.out »
expecting success: 
    ipfs files read /foo/file65 > file_out &&
    echo "65" > file_exp &&
    test_cmp file_out file_exp
  
ok 1720 - can read a file from sharded directory (cidv1 root)
1721 - can pin a file from sharded directory (cidv1 root) Success 0.101
System.out »
expecting success: 
    ipfs files stat --hash /foo/file42 > pin_file_hash &&
    ipfs pin add < pin_file_hash > pin_hash
  
ok 1721 - can pin a file from sharded directory (cidv1 root)
1722 - can unpin a file from sharded directory (cidv1 root) Success 0.055
System.out »
expecting success: 
    read -r _ HASH _ < pin_hash &&
    ipfs pin rm $HASH
  
unpinned bafkreiaijr4zzvkr3uoy2xc7tjovsozosmpv4nqsf3s4pe6b2cfbta44ya
ok 1722 - can unpin a file from sharded directory (cidv1 root)
1723 - output object was really sharded and has correct hash (cidv1 root) Success 0.050
System.out »
expecting success: 
    ipfs files stat --hash /foo > expected_foo_hash &&
    echo $SHARD_HASH > actual_foo_hash &&
    test_cmp expected_foo_hash actual_foo_hash
  
ok 1723 - output object was really sharded and has correct hash (cidv1 root)
1724 - clean up (cidv1 root) Success 0.048
System.out »
expecting success: 
    ipfs files rm -r /foo
  
ok 1724 - clean up (cidv1 root)
1725 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 1725 - 'ipfs daemon' is still running
1726 - 'ipfs daemon' can be killed Success 0.241
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 1726 - 'ipfs daemon' can be killed
1727 - set up automatic sharding/unsharding data Success 4.117
System.out »
expecting success: 
  mkdir big_dir
  for i in `seq 5960` # Just above the number of entries that trigger sharding for 256KiB
  do
    echo $i > big_dir/`printf "file%06d" $i` # fixed length of 10 chars
  done

ok 1727 - set up automatic sharding/unsharding data
1728 - reset automatic sharding Success 0.062
System.out »
expecting success: 
  ipfs config --json Import.UnixFSHAMTDirectorySizeThreshold null

ok 1728 - reset automatic sharding
1729 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 1729 - 'ipfs daemon' succeeds
1730 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 1730 - api file shows up
1731 - set up address variables Success 0.018
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 1731 - set up address variables
1732 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 1732 - 'ipfs daemon' is ready
1733 - ipfs add on directory succeeds Success 1.224
System.out »
expecting success: 
    ipfs add -r -Q big_dir > shardbigdir_out &&
    echo "$exphash" > shardbigdir_exp &&
    test_cmp shardbigdir_exp shardbigdir_out
  
ok 1733 - ipfs add on directory succeeds
1734 - can access a path under the dir Success 0.050
System.out »
expecting success: 
    ipfs cat "$exphash/file000030" > file30_out &&
    test_cmp big_dir/file000030 file30_out
  
ok 1734 - can access a path under the dir
1735 - remove a few entries from big_dir/ to trigger unsharding Success 0.458
System.out »
expecting success: 
  ipfs files cp /ipfs/"$LARGE_SHARDED" /big_dir &&
  for i in `seq 5`
  do
    ipfs files rm /big_dir/`printf "file%06d" $i`
  done &&
  ipfs files stat --hash /big_dir > unshard_dir_hash &&
  echo "$LARGE_MINUS_5_UNSHARDED" > unshard_exp &&
  test_cmp unshard_exp unshard_dir_hash

ok 1735 - remove a few entries from big_dir/ to trigger unsharding
1736 - add a few entries to big_dir/ to retrigger sharding Success 0.402
System.out »
expecting success: 
  for i in `seq 5`
  do
    ipfs files cp /ipfs/"$LARGE_SHARDED"/`printf "file%06d" $i` /big_dir/`printf "file%06d" $i`
  done &&
  ipfs files stat --hash /big_dir > shard_dir_hash &&
  echo "$LARGE_SHARDED" > shard_exp &&
  test_cmp shard_exp shard_dir_hash

ok 1736 - add a few entries to big_dir/ to retrigger sharding
1737 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 1737 - 'ipfs daemon' is still running
1738 - 'ipfs daemon' can be killed Success 0.242
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 1738 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - can create some files for testing (no-daemon)
ok 5 - can mkdir in root (no-daemon)
ok 6 - 'files ls' lists root by default (no-daemon)
ok 7 - directory was created (no-daemon)
ok 10 - directory is empty (no-daemon)
ok 11 - stat works (no-daemon)
ok 12 - hash is first line of stat (no-daemon)
ok 13 - stat --hash gives only hash (no-daemon)
ok 14 - stat with multiple format options should fail (no-daemon)
ok 15 - compare hash option with format (no-daemon)
ok 16 - compare size option with format (no-daemon)
ok 17 - check root hash (no-daemon)
ok 18 - stat works outside of MFS
ok 19 - stat compute the locality of a dag
ok 20 - cannot mkdir / (no-daemon)
ok 21 - check root hash was not changed (no-daemon)
ok 22 - can put files into directory (no-daemon)
ok 25 - file shows up in directory (no-daemon)
ok 26 - file has correct hash and size in directory (no-daemon)
ok 27 - file has correct hash and size listed with -l
ok 28 - file has correct hash and size listed with --long
ok 29 - file has correct hash and size listed with -l --cid-base=base32
ok 30 - file shows up with the correct name
ok 31 - can stat file (no-daemon)
ok 32 - stat output looks good
ok 33 - can stat file with --cid-base=base32 (no-daemon)
ok 34 - stat output looks good with --cid-base=base32
ok 35 - can read file (no-daemon)
ok 36 - output looks good (no-daemon)
ok 37 - can put another file into root (no-daemon)
ok 40 - file shows up in root (no-daemon)
ok 41 - can read file (no-daemon)
ok 42 - output looks good (no-daemon)
ok 43 - can make deep directory (no-daemon)
ok 54 - directory was created correctly (no-daemon)
ok 55 - dir has correct name
ok 56 - can copy file into new dir (no-daemon)
ok 57 - can copy file into deep dir using -p flag (no-daemon)
ok 58 - file copied into deep dir exists (no-daemon)
ok 59 - cleanup deep cp -p test (no-daemon)
ok 60 - can read file (no-daemon)
ok 61 - output looks good (no-daemon)
ok 64 - file shows up in dir (no-daemon)
ok 65 - can remove file (no-daemon)
ok 68 - file no longer appears (no-daemon)
ok 69 - can remove dir (no-daemon)
ok 72 - dir no longer appears (no-daemon)
ok 73 - can remove file from root (no-daemon)
ok 76 - file no longer appears (no-daemon)
ok 77 - check root hash (no-daemon)
ok 78 - cannot remove root (no-daemon)
ok 79 - check root hash was not changed (no-daemon)
ok 80 - read from offset works (no-daemon)
ok 81 - output looks good (no-daemon)
ok 82 - read with size works (no-daemon)
ok 83 - output looks good (no-daemon)
ok 84 - cannot read from negative offset (no-daemon)
ok 85 - read from offset 0 works (no-daemon)
ok 86 - output looks good (no-daemon)
ok 87 - read last byte works (no-daemon)
ok 88 - output looks good (no-daemon)
ok 89 - offset past end of file fails (no-daemon)
ok 90 - cannot read negative count bytes (no-daemon)
ok 91 - reading zero bytes prints nothing (no-daemon)
ok 92 - output looks good (no-daemon)
ok 93 - count > len(file) prints entire file (no-daemon)
ok 94 - output looks good (no-daemon)
ok 95 - can write file (no-daemon)
ok 98 - file was created (no-daemon)
ok 99 - can read file we just wrote (no-daemon)
ok 100 - can write to offset (no-daemon)
ok 101 - file looks correct (no-daemon)
ok 102 - file hash correct (no-daemon)
ok 103 - can't write to negative offset (no-daemon)
ok 104 - verify file was not changed (no-daemon)
ok 105 - write new file for testing (no-daemon)
ok 106 - write to offset past end works (no-daemon)
ok 107 - can read file (no-daemon)
ok 108 - output looks good (no-daemon)
ok 109 - cleanup (no-daemon)
ok 110 - cannot write to directory (no-daemon)
ok 111 - verify dir was not changed (no-daemon)
ok 112 - cannot write to nonexistent path (no-daemon)
ok 115 - no new paths were created (no-daemon)
ok 116 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 117 - write 'no-flush' succeeds (no-daemon)
ok 118 - root hash not bubbled up yet (no-daemon)
ok 119 - changes bubbled up to root on inspection (no-daemon)
ok 120 - root hash looks good (no-daemon)
ok 121 - /cats hash looks good (no-daemon)
ok 122 - flush root succeeds (no-daemon)
ok 123 - can mv dir (no-daemon)
ok 124 - can mv dir and dest dir is / (no-daemon)
ok 125 - can mv dir and dest dir path has no trailing slash (no-daemon)
ok 130 - mv worked (no-daemon)
ok 131 - cleanup, remove 'cats' (no-daemon)
ok 134 - cleanup looks good (no-daemon)
ok 135 - create a new file (no-daemon)
ok 136 - truncate and write over that file (no-daemon)
ok 137 - output looks good (no-daemon)
ok 138 - file hash correct (no-daemon)
ok 139 - cleanup (no-daemon)
ok 140 - mkdir --flush works (no-daemon)
ok 141 - mkdir --flush works a second time (no-daemon)
ok 144 - dir looks right (no-daemon)
ok 147 - child dir looks right (no-daemon)
ok 148 - cleanup (no-daemon)
ok 151 - child dir looks right (no-daemon)
ok 152 - create and remove dir (no-daemon)
ok 153 - create test file (no-daemon)
ok 154 - copy test file onto test dir (no-daemon)
ok 155 - test /test_dir (no-daemon)
ok 156 - clean up /test_dir and /test_file (no-daemon)
ok 157 - make a directory and a file (no-daemon)
ok 158 - copy a file into a directory (no-daemon)
ok 159 - file made it into directory (no-daemon)
ok 160 - test copy --force overwrites files
ok 161 - clean up
ok 162 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon)
ok 163 - can write file and create intermediate directories (no-daemon)
ok 164 - can write file and create intermediate directories with short flags (no-daemon)
ok 165 - can write another file in the same directory with -e -p (no-daemon)
ok 166 - clean up (no-daemon)
ok 169 - root mfs entry is empty (no-daemon)
ok 170 - repo gc (no-daemon)
ok 173 - remove file forcibly
ok 176 - remove multiple files forcibly
ok 179 - remove directory forcibly
ok 182 - remove multiple directories forcibly
ok 183 - remove multiple files
ok 186 - remove multiple directories
ok 187 - remove nonexistent path forcibly
ok 188 - remove deeply nonexistent path forcibly
ok 191 - remove multiple files (with nonexistent one)
ok 192 - can create some files for testing with raw-leaves (no-daemon)
ok 193 - can mkdir in root (no-daemon, raw-leaves)
ok 194 - 'files ls' lists root by default (no-daemon, raw-leaves)
ok 195 - directory was created (no-daemon, raw-leaves)
ok 198 - directory is empty (no-daemon, raw-leaves)
ok 199 - stat works (no-daemon, raw-leaves)
ok 200 - hash is first line of stat (no-daemon, raw-leaves)
ok 201 - stat --hash gives only hash (no-daemon, raw-leaves)
ok 202 - stat with multiple format options should fail (no-daemon, raw-leaves)
ok 203 - compare hash option with format (no-daemon, raw-leaves)
ok 204 - compare size option with format (no-daemon, raw-leaves)
ok 205 - check root hash (no-daemon, raw-leaves)
ok 206 - stat works outside of MFS
ok 207 - stat compute the locality of a dag
ok 208 - cannot mkdir / (no-daemon, raw-leaves)
ok 209 - check root hash was not changed (no-daemon, raw-leaves)
ok 210 - can put files into directory (no-daemon, raw-leaves)
ok 213 - file shows up in directory (no-daemon, raw-leaves)
ok 214 - file has correct hash and size in directory (no-daemon, raw-leaves)
ok 215 - file has correct hash and size listed with -l
ok 216 - file has correct hash and size listed with --long
ok 217 - file has correct hash and size listed with -l --cid-base=base32
ok 218 - file shows up with the correct name
ok 219 - can stat file (no-daemon, raw-leaves)
ok 220 - stat output looks good
ok 221 - can stat file with --cid-base=base32 (no-daemon, raw-leaves)
ok 222 - stat output looks good with --cid-base=base32
ok 223 - can read file (no-daemon, raw-leaves)
ok 224 - output looks good (no-daemon, raw-leaves)
ok 225 - can put another file into root (no-daemon, raw-leaves)
ok 228 - file shows up in root (no-daemon, raw-leaves)
ok 229 - can read file (no-daemon, raw-leaves)
ok 230 - output looks good (no-daemon, raw-leaves)
ok 231 - can make deep directory (no-daemon, raw-leaves)
ok 242 - directory was created correctly (no-daemon, raw-leaves)
ok 243 - dir has correct name
ok 244 - can copy file into new dir (no-daemon, raw-leaves)
ok 245 - can copy file into deep dir using -p flag (no-daemon, raw-leaves)
ok 246 - file copied into deep dir exists (no-daemon, raw-leaves)
ok 247 - cleanup deep cp -p test (no-daemon, raw-leaves)
ok 248 - can read file (no-daemon, raw-leaves)
ok 249 - output looks good (no-daemon, raw-leaves)
ok 252 - file shows up in dir (no-daemon, raw-leaves)
ok 253 - can remove file (no-daemon, raw-leaves)
ok 256 - file no longer appears (no-daemon, raw-leaves)
ok 257 - can remove dir (no-daemon, raw-leaves)
ok 260 - dir no longer appears (no-daemon, raw-leaves)
ok 261 - can remove file from root (no-daemon, raw-leaves)
ok 264 - file no longer appears (no-daemon, raw-leaves)
ok 265 - check root hash (no-daemon, raw-leaves)
ok 266 - cannot remove root (no-daemon, raw-leaves)
ok 267 - check root hash was not changed (no-daemon, raw-leaves)
ok 268 - read from offset works (no-daemon, raw-leaves)
ok 269 - output looks good (no-daemon, raw-leaves)
ok 270 - read with size works (no-daemon, raw-leaves)
ok 271 - output looks good (no-daemon, raw-leaves)
ok 272 - cannot read from negative offset (no-daemon, raw-leaves)
ok 273 - read from offset 0 works (no-daemon, raw-leaves)
ok 274 - output looks good (no-daemon, raw-leaves)
ok 275 - read last byte works (no-daemon, raw-leaves)
ok 276 - output looks good (no-daemon, raw-leaves)
ok 277 - offset past end of file fails (no-daemon, raw-leaves)
ok 278 - cannot read negative count bytes (no-daemon, raw-leaves)
ok 279 - reading zero bytes prints nothing (no-daemon, raw-leaves)
ok 280 - output looks good (no-daemon, raw-leaves)
ok 281 - count > len(file) prints entire file (no-daemon, raw-leaves)
ok 282 - output looks good (no-daemon, raw-leaves)
ok 283 - can write file (no-daemon, raw-leaves)
ok 286 - file was created (no-daemon, raw-leaves)
ok 287 - can read file we just wrote (no-daemon, raw-leaves)
ok 288 - can write to offset (no-daemon, raw-leaves)
ok 289 - file looks correct (no-daemon, raw-leaves)
ok 290 - file hash correct (no-daemon, raw-leaves)
ok 291 - can't write to negative offset (no-daemon, raw-leaves)
ok 292 - verify file was not changed (no-daemon, raw-leaves)
ok 293 - write new file for testing (no-daemon, raw-leaves)
ok 294 - write to offset past end works (no-daemon, raw-leaves)
ok 295 - can read file (no-daemon, raw-leaves)
ok 296 - output looks good (no-daemon, raw-leaves)
ok 297 - cleanup (no-daemon, raw-leaves)
ok 298 - cannot write to directory (no-daemon, raw-leaves)
ok 299 - verify dir was not changed (no-daemon, raw-leaves)
ok 300 - cannot write to nonexistent path (no-daemon, raw-leaves)
ok 303 - no new paths were created (no-daemon, raw-leaves)
ok 304 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 305 - write 'no-flush' succeeds (no-daemon, raw-leaves)
ok 306 - root hash not bubbled up yet (no-daemon, raw-leaves)
ok 307 - changes bubbled up to root on inspection (no-daemon, raw-leaves)
ok 308 - root hash looks good (no-daemon, raw-leaves)
ok 309 - /cats hash looks good (no-daemon, raw-leaves)
ok 310 - flush root succeeds (no-daemon, raw-leaves)
ok 311 - can mv dir (no-daemon, raw-leaves)
ok 312 - can mv dir and dest dir is / (no-daemon, raw-leaves)
ok 313 - can mv dir and dest dir path has no trailing slash (no-daemon, raw-leaves)
ok 318 - mv worked (no-daemon, raw-leaves)
ok 319 - cleanup, remove 'cats' (no-daemon, raw-leaves)
ok 322 - cleanup looks good (no-daemon, raw-leaves)
ok 323 - create a new file (no-daemon, raw-leaves)
ok 324 - truncate and write over that file (no-daemon, raw-leaves)
ok 325 - output looks good (no-daemon, raw-leaves)
ok 326 - file hash correct (no-daemon, raw-leaves)
ok 327 - cleanup (no-daemon, raw-leaves)
ok 328 - mkdir --flush works (no-daemon, raw-leaves)
ok 329 - mkdir --flush works a second time (no-daemon, raw-leaves)
ok 332 - dir looks right (no-daemon, raw-leaves)
ok 335 - child dir looks right (no-daemon, raw-leaves)
ok 336 - cleanup (no-daemon, raw-leaves)
ok 339 - child dir looks right (no-daemon, raw-leaves)
ok 340 - create and remove dir (no-daemon, raw-leaves)
ok 341 - create test file (no-daemon, raw-leaves)
ok 342 - copy test file onto test dir (no-daemon, raw-leaves)
ok 343 - test /test_dir (no-daemon, raw-leaves)
ok 344 - clean up /test_dir and /test_file (no-daemon, raw-leaves)
ok 345 - make a directory and a file (no-daemon, raw-leaves)
ok 346 - copy a file into a directory (no-daemon, raw-leaves)
ok 347 - file made it into directory (no-daemon, raw-leaves)
ok 348 - test copy --force overwrites files
ok 349 - clean up
ok 350 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, raw-leaves)
ok 351 - can write file and create intermediate directories (no-daemon, raw-leaves)
ok 352 - can write file and create intermediate directories with short flags (no-daemon, raw-leaves)
ok 353 - can write another file in the same directory with -e -p (no-daemon, raw-leaves)
ok 354 - clean up (no-daemon, raw-leaves)
ok 357 - root mfs entry is empty (no-daemon, raw-leaves)
ok 358 - repo gc (no-daemon, raw-leaves)
ok 361 - remove file forcibly
ok 364 - remove multiple files forcibly
ok 367 - remove directory forcibly
ok 370 - remove multiple directories forcibly
ok 371 - remove multiple files
ok 374 - remove multiple directories
ok 375 - remove nonexistent path forcibly
ok 376 - remove deeply nonexistent path forcibly
ok 379 - remove multiple files (with nonexistent one)
ok 380 - can update root hash to cidv1
ok 381 - can mkdir in root (no-daemon, cidv1 root)
ok 382 - 'files ls' lists root by default (no-daemon, cidv1 root)
ok 383 - directory was created (no-daemon, cidv1 root)
ok 386 - directory is empty (no-daemon, cidv1 root)
ok 387 - stat works (no-daemon, cidv1 root)
ok 388 - hash is first line of stat (no-daemon, cidv1 root)
ok 389 - stat --hash gives only hash (no-daemon, cidv1 root)
ok 390 - stat with multiple format options should fail (no-daemon, cidv1 root)
ok 391 - compare hash option with format (no-daemon, cidv1 root)
ok 392 - compare size option with format (no-daemon, cidv1 root)
ok 393 - check root hash (no-daemon, cidv1 root)
ok 394 - stat works outside of MFS
ok 395 - stat compute the locality of a dag
ok 396 - cannot mkdir / (no-daemon, cidv1 root)
ok 397 - check root hash was not changed (no-daemon, cidv1 root)
ok 398 - can put files into directory (no-daemon, cidv1 root)
ok 401 - file shows up in directory (no-daemon, cidv1 root)
ok 402 - file has correct hash and size in directory (no-daemon, cidv1 root)
ok 403 - file has correct hash and size listed with -l
ok 404 - file has correct hash and size listed with --long
ok 405 - file has correct hash and size listed with -l --cid-base=base32
ok 406 - file shows up with the correct name
ok 407 - can stat file (no-daemon, cidv1 root)
ok 408 - stat output looks good
ok 409 - can stat file with --cid-base=base32 (no-daemon, cidv1 root)
ok 410 - stat output looks good with --cid-base=base32
ok 411 - can read file (no-daemon, cidv1 root)
ok 412 - output looks good (no-daemon, cidv1 root)
ok 413 - can put another file into root (no-daemon, cidv1 root)
ok 416 - file shows up in root (no-daemon, cidv1 root)
ok 417 - can read file (no-daemon, cidv1 root)
ok 418 - output looks good (no-daemon, cidv1 root)
ok 419 - can make deep directory (no-daemon, cidv1 root)
ok 430 - directory was created correctly (no-daemon, cidv1 root)
ok 431 - dir has correct name
ok 432 - can copy file into new dir (no-daemon, cidv1 root)
ok 433 - can copy file into deep dir using -p flag (no-daemon, cidv1 root)
ok 434 - file copied into deep dir exists (no-daemon, cidv1 root)
ok 435 - cleanup deep cp -p test (no-daemon, cidv1 root)
ok 436 - can read file (no-daemon, cidv1 root)
ok 437 - output looks good (no-daemon, cidv1 root)
ok 440 - file shows up in dir (no-daemon, cidv1 root)
ok 441 - can remove file (no-daemon, cidv1 root)
ok 444 - file no longer appears (no-daemon, cidv1 root)
ok 445 - can remove dir (no-daemon, cidv1 root)
ok 448 - dir no longer appears (no-daemon, cidv1 root)
ok 449 - can remove file from root (no-daemon, cidv1 root)
ok 452 - file no longer appears (no-daemon, cidv1 root)
ok 453 - check root hash (no-daemon, cidv1 root)
ok 454 - cannot remove root (no-daemon, cidv1 root)
ok 455 - check root hash was not changed (no-daemon, cidv1 root)
ok 456 - read from offset works (no-daemon, cidv1 root)
ok 457 - output looks good (no-daemon, cidv1 root)
ok 458 - read with size works (no-daemon, cidv1 root)
ok 459 - output looks good (no-daemon, cidv1 root)
ok 460 - cannot read from negative offset (no-daemon, cidv1 root)
ok 461 - read from offset 0 works (no-daemon, cidv1 root)
ok 462 - output looks good (no-daemon, cidv1 root)
ok 463 - read last byte works (no-daemon, cidv1 root)
ok 464 - output looks good (no-daemon, cidv1 root)
ok 465 - offset past end of file fails (no-daemon, cidv1 root)
ok 466 - cannot read negative count bytes (no-daemon, cidv1 root)
ok 467 - reading zero bytes prints nothing (no-daemon, cidv1 root)
ok 468 - output looks good (no-daemon, cidv1 root)
ok 469 - count > len(file) prints entire file (no-daemon, cidv1 root)
ok 470 - output looks good (no-daemon, cidv1 root)
ok 471 - can write file (no-daemon, cidv1 root)
ok 474 - file was created (no-daemon, cidv1 root)
ok 475 - can read file we just wrote (no-daemon, cidv1 root)
ok 476 - can write to offset (no-daemon, cidv1 root)
ok 477 - file looks correct (no-daemon, cidv1 root)
ok 478 - file hash correct (no-daemon, cidv1 root)
ok 479 - can't write to negative offset (no-daemon, cidv1 root)
ok 480 - verify file was not changed (no-daemon, cidv1 root)
ok 481 - write new file for testing (no-daemon, cidv1 root)
ok 482 - write to offset past end works (no-daemon, cidv1 root)
ok 483 - can read file (no-daemon, cidv1 root)
ok 484 - output looks good (no-daemon, cidv1 root)
ok 485 - cleanup (no-daemon, cidv1 root)
ok 486 - cannot write to directory (no-daemon, cidv1 root)
ok 487 - verify dir was not changed (no-daemon, cidv1 root)
ok 488 - cannot write to nonexistent path (no-daemon, cidv1 root)
ok 491 - no new paths were created (no-daemon, cidv1 root)
ok 492 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 493 - write 'no-flush' succeeds (no-daemon, cidv1 root)
ok 494 - root hash not bubbled up yet (no-daemon, cidv1 root)
ok 495 - changes bubbled up to root on inspection (no-daemon, cidv1 root)
ok 496 - root hash looks good (no-daemon, cidv1 root)
ok 497 - /cats hash looks good (no-daemon, cidv1 root)
ok 498 - flush root succeeds (no-daemon, cidv1 root)
ok 499 - can mv dir (no-daemon, cidv1 root)
ok 500 - can mv dir and dest dir is / (no-daemon, cidv1 root)
ok 501 - can mv dir and dest dir path has no trailing slash (no-daemon, cidv1 root)
ok 506 - mv worked (no-daemon, cidv1 root)
ok 507 - cleanup, remove 'cats' (no-daemon, cidv1 root)
ok 510 - cleanup looks good (no-daemon, cidv1 root)
ok 511 - create a new file (no-daemon, cidv1 root)
ok 512 - truncate and write over that file (no-daemon, cidv1 root)
ok 513 - output looks good (no-daemon, cidv1 root)
ok 514 - file hash correct (no-daemon, cidv1 root)
ok 515 - cleanup (no-daemon, cidv1 root)
ok 516 - mkdir --flush works (no-daemon, cidv1 root)
ok 517 - mkdir --flush works a second time (no-daemon, cidv1 root)
ok 520 - dir looks right (no-daemon, cidv1 root)
ok 523 - child dir looks right (no-daemon, cidv1 root)
ok 524 - cleanup (no-daemon, cidv1 root)
ok 527 - child dir looks right (no-daemon, cidv1 root)
ok 528 - create and remove dir (no-daemon, cidv1 root)
ok 529 - create test file (no-daemon, cidv1 root)
ok 530 - copy test file onto test dir (no-daemon, cidv1 root)
ok 531 - test /test_dir (no-daemon, cidv1 root)
ok 532 - clean up /test_dir and /test_file (no-daemon, cidv1 root)
ok 533 - make a directory and a file (no-daemon, cidv1 root)
ok 534 - copy a file into a directory (no-daemon, cidv1 root)
ok 535 - file made it into directory (no-daemon, cidv1 root)
ok 536 - test copy --force overwrites files
ok 537 - clean up
ok 538 - should fail to write file and create intermediate directories with no --parents flag set (no-daemon, cidv1 root)
ok 539 - can write file and create intermediate directories (no-daemon, cidv1 root)
ok 540 - can write file and create intermediate directories with short flags (no-daemon, cidv1 root)
ok 541 - can write another file in the same directory with -e -p (no-daemon, cidv1 root)
ok 542 - clean up (no-daemon, cidv1 root)
ok 545 - root mfs entry is empty (no-daemon, cidv1 root)
ok 546 - repo gc (no-daemon, cidv1 root)
ok 549 - remove file forcibly
ok 552 - remove multiple files forcibly
ok 555 - remove directory forcibly
ok 558 - remove multiple directories forcibly
ok 559 - remove multiple files
ok 562 - remove multiple directories
ok 563 - remove nonexistent path forcibly
ok 564 - remove deeply nonexistent path forcibly
ok 567 - remove multiple files (with nonexistent one)
ok 568 - can update root hash back to cidv0
ok 569 - 'ipfs daemon' succeeds
ok 570 - api file shows up
ok 571 - set up address variables
ok 572 - 'ipfs daemon' is ready
ok 573 - can create some files for testing (with-daemon)
ok 574 - can mkdir in root (with-daemon)
ok 575 - 'files ls' lists root by default (with-daemon)
ok 576 - directory was created (with-daemon)
ok 579 - directory is empty (with-daemon)
ok 580 - stat works (with-daemon)
ok 581 - hash is first line of stat (with-daemon)
ok 582 - stat --hash gives only hash (with-daemon)
ok 583 - stat with multiple format options should fail (with-daemon)
ok 584 - compare hash option with format (with-daemon)
ok 585 - compare size option with format (with-daemon)
ok 586 - check root hash (with-daemon)
ok 587 - stat works outside of MFS
ok 588 - stat compute the locality of a dag
ok 589 - cannot mkdir / (with-daemon)
ok 590 - check root hash was not changed (with-daemon)
ok 591 - can put files into directory (with-daemon)
ok 594 - file shows up in directory (with-daemon)
ok 595 - file has correct hash and size in directory (with-daemon)
ok 596 - file has correct hash and size listed with -l
ok 597 - file has correct hash and size listed with --long
ok 598 - file has correct hash and size listed with -l --cid-base=base32
ok 599 - file shows up with the correct name
ok 600 - can stat file (with-daemon)
ok 601 - stat output looks good
ok 602 - can stat file with --cid-base=base32 (with-daemon)
ok 603 - stat output looks good with --cid-base=base32
ok 604 - can read file (with-daemon)
ok 605 - output looks good (with-daemon)
ok 606 - can put another file into root (with-daemon)
ok 609 - file shows up in root (with-daemon)
ok 610 - can read file (with-daemon)
ok 611 - output looks good (with-daemon)
ok 612 - can make deep directory (with-daemon)
ok 623 - directory was created correctly (with-daemon)
ok 624 - dir has correct name
ok 625 - can copy file into new dir (with-daemon)
ok 626 - can copy file into deep dir using -p flag (with-daemon)
ok 627 - file copied into deep dir exists (with-daemon)
ok 628 - cleanup deep cp -p test (with-daemon)
ok 629 - can read file (with-daemon)
ok 630 - output looks good (with-daemon)
ok 633 - file shows up in dir (with-daemon)
ok 634 - can remove file (with-daemon)
ok 637 - file no longer appears (with-daemon)
ok 638 - can remove dir (with-daemon)
ok 641 - dir no longer appears (with-daemon)
ok 642 - can remove file from root (with-daemon)
ok 645 - file no longer appears (with-daemon)
ok 646 - check root hash (with-daemon)
ok 647 - cannot remove root (with-daemon)
ok 648 - check root hash was not changed (with-daemon)
ok 649 - read from offset works (with-daemon)
ok 650 - output looks good (with-daemon)
ok 651 - read with size works (with-daemon)
ok 652 - output looks good (with-daemon)
ok 653 - cannot read from negative offset (with-daemon)
ok 654 - read from offset 0 works (with-daemon)
ok 655 - output looks good (with-daemon)
ok 656 - read last byte works (with-daemon)
ok 657 - output looks good (with-daemon)
ok 658 - offset past end of file fails (with-daemon)
ok 659 - cannot read negative count bytes (with-daemon)
ok 660 - reading zero bytes prints nothing (with-daemon)
ok 661 - output looks good (with-daemon)
ok 662 - count > len(file) prints entire file (with-daemon)
ok 663 - output looks good (with-daemon)
ok 664 - can write file (with-daemon)
ok 667 - file was created (with-daemon)
ok 668 - can read file we just wrote (with-daemon)
ok 669 - can write to offset (with-daemon)
ok 670 - file looks correct (with-daemon)
ok 671 - file hash correct (with-daemon)
ok 672 - can't write to negative offset (with-daemon)
ok 673 - verify file was not changed (with-daemon)
ok 674 - write new file for testing (with-daemon)
ok 675 - write to offset past end works (with-daemon)
ok 676 - can read file (with-daemon)
ok 677 - output looks good (with-daemon)
ok 678 - cleanup (with-daemon)
ok 679 - cannot write to directory (with-daemon)
ok 680 - verify dir was not changed (with-daemon)
ok 681 - cannot write to nonexistent path (with-daemon)
ok 684 - no new paths were created (with-daemon)
ok 685 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 686 - write 'no-flush' succeeds (with-daemon)
ok 687 - root hash not bubbled up yet (with-daemon)
ok 688 - changes bubbled up to root on inspection (with-daemon)
ok 689 - root hash looks good (with-daemon)
ok 690 - /cats hash looks good (with-daemon)
ok 691 - flush root succeeds (with-daemon)
ok 692 - can mv dir (with-daemon)
ok 693 - can mv dir and dest dir is / (with-daemon)
ok 694 - can mv dir and dest dir path has no trailing slash (with-daemon)
ok 699 - mv worked (with-daemon)
ok 700 - cleanup, remove 'cats' (with-daemon)
ok 703 - cleanup looks good (with-daemon)
ok 704 - create a new file (with-daemon)
ok 705 - truncate and write over that file (with-daemon)
ok 706 - output looks good (with-daemon)
ok 707 - file hash correct (with-daemon)
ok 708 - cleanup (with-daemon)
ok 709 - mkdir --flush works (with-daemon)
ok 710 - mkdir --flush works a second time (with-daemon)
ok 713 - dir looks right (with-daemon)
ok 716 - child dir looks right (with-daemon)
ok 717 - cleanup (with-daemon)
ok 720 - child dir looks right (with-daemon)
ok 721 - create and remove dir (with-daemon)
ok 722 - create test file (with-daemon)
ok 723 - copy test file onto test dir (with-daemon)
ok 724 - test /test_dir (with-daemon)
ok 725 - clean up /test_dir and /test_file (with-daemon)
ok 726 - make a directory and a file (with-daemon)
ok 727 - copy a file into a directory (with-daemon)
ok 728 - file made it into directory (with-daemon)
ok 729 - test copy --force overwrites files
ok 730 - clean up
ok 731 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon)
ok 732 - can write file and create intermediate directories (with-daemon)
ok 733 - can write file and create intermediate directories with short flags (with-daemon)
ok 734 - can write another file in the same directory with -e -p (with-daemon)
ok 735 - clean up (with-daemon)
ok 738 - root mfs entry is empty (with-daemon)
ok 739 - repo gc (with-daemon)
ok 742 - remove file forcibly
ok 745 - remove multiple files forcibly
ok 748 - remove directory forcibly
ok 751 - remove multiple directories forcibly
ok 752 - remove multiple files
ok 755 - remove multiple directories
ok 756 - remove nonexistent path forcibly
ok 757 - remove deeply nonexistent path forcibly
ok 760 - remove multiple files (with nonexistent one)
ok 761 - can create some files for testing with raw-leaves (with-daemon)
ok 762 - can mkdir in root (with-daemon, partial raw-leaves)
ok 763 - 'files ls' lists root by default (with-daemon, partial raw-leaves)
ok 764 - directory was created (with-daemon, partial raw-leaves)
ok 767 - directory is empty (with-daemon, partial raw-leaves)
ok 768 - stat works (with-daemon, partial raw-leaves)
ok 769 - hash is first line of stat (with-daemon, partial raw-leaves)
ok 770 - stat --hash gives only hash (with-daemon, partial raw-leaves)
ok 771 - stat with multiple format options should fail (with-daemon, partial raw-leaves)
ok 772 - compare hash option with format (with-daemon, partial raw-leaves)
ok 773 - compare size option with format (with-daemon, partial raw-leaves)
ok 774 - check root hash (with-daemon, partial raw-leaves)
ok 775 - stat works outside of MFS
ok 776 - stat compute the locality of a dag
ok 777 - cannot mkdir / (with-daemon, partial raw-leaves)
ok 778 - check root hash was not changed (with-daemon, partial raw-leaves)
ok 779 - can put files into directory (with-daemon, partial raw-leaves)
ok 782 - file shows up in directory (with-daemon, partial raw-leaves)
ok 783 - file has correct hash and size in directory (with-daemon, partial raw-leaves)
ok 784 - file has correct hash and size listed with -l
ok 785 - file has correct hash and size listed with --long
ok 786 - file has correct hash and size listed with -l --cid-base=base32
ok 787 - file shows up with the correct name
ok 788 - can stat file (with-daemon, partial raw-leaves)
ok 789 - stat output looks good
ok 790 - can stat file with --cid-base=base32 (with-daemon, partial raw-leaves)
ok 791 - stat output looks good with --cid-base=base32
ok 792 - can read file (with-daemon, partial raw-leaves)
ok 793 - output looks good (with-daemon, partial raw-leaves)
ok 794 - can put another file into root (with-daemon, partial raw-leaves)
ok 797 - file shows up in root (with-daemon, partial raw-leaves)
ok 798 - can read file (with-daemon, partial raw-leaves)
ok 799 - output looks good (with-daemon, partial raw-leaves)
ok 800 - can make deep directory (with-daemon, partial raw-leaves)
ok 811 - directory was created correctly (with-daemon, partial raw-leaves)
ok 812 - dir has correct name
ok 813 - can copy file into new dir (with-daemon, partial raw-leaves)
ok 814 - can copy file into deep dir using -p flag (with-daemon, partial raw-leaves)
ok 815 - file copied into deep dir exists (with-daemon, partial raw-leaves)
ok 816 - cleanup deep cp -p test (with-daemon, partial raw-leaves)
ok 817 - can read file (with-daemon, partial raw-leaves)
ok 818 - output looks good (with-daemon, partial raw-leaves)
ok 821 - file shows up in dir (with-daemon, partial raw-leaves)
ok 822 - can remove file (with-daemon, partial raw-leaves)
ok 825 - file no longer appears (with-daemon, partial raw-leaves)
ok 826 - can remove dir (with-daemon, partial raw-leaves)
ok 829 - dir no longer appears (with-daemon, partial raw-leaves)
ok 830 - can remove file from root (with-daemon, partial raw-leaves)
ok 833 - file no longer appears (with-daemon, partial raw-leaves)
ok 834 - check root hash (with-daemon, partial raw-leaves)
ok 835 - cannot remove root (with-daemon, partial raw-leaves)
ok 836 - check root hash was not changed (with-daemon, partial raw-leaves)
ok 837 - read from offset works (with-daemon, partial raw-leaves)
ok 838 - output looks good (with-daemon, partial raw-leaves)
ok 839 - read with size works (with-daemon, partial raw-leaves)
ok 840 - output looks good (with-daemon, partial raw-leaves)
ok 841 - cannot read from negative offset (with-daemon, partial raw-leaves)
ok 842 - read from offset 0 works (with-daemon, partial raw-leaves)
ok 843 - output looks good (with-daemon, partial raw-leaves)
ok 844 - read last byte works (with-daemon, partial raw-leaves)
ok 845 - output looks good (with-daemon, partial raw-leaves)
ok 846 - offset past end of file fails (with-daemon, partial raw-leaves)
ok 847 - cannot read negative count bytes (with-daemon, partial raw-leaves)
ok 848 - reading zero bytes prints nothing (with-daemon, partial raw-leaves)
ok 849 - output looks good (with-daemon, partial raw-leaves)
ok 850 - count > len(file) prints entire file (with-daemon, partial raw-leaves)
ok 851 - output looks good (with-daemon, partial raw-leaves)
ok 852 - can write file (with-daemon, partial raw-leaves)
ok 855 - file was created (with-daemon, partial raw-leaves)
ok 856 - can read file we just wrote (with-daemon, partial raw-leaves)
ok 857 - can write to offset (with-daemon, partial raw-leaves)
ok 858 - file looks correct (with-daemon, partial raw-leaves)
ok 859 - file hash correct (with-daemon, partial raw-leaves)
ok 860 - can't write to negative offset (with-daemon, partial raw-leaves)
ok 861 - verify file was not changed (with-daemon, partial raw-leaves)
ok 862 - write new file for testing (with-daemon, partial raw-leaves)
ok 863 - write to offset past end works (with-daemon, partial raw-leaves)
ok 864 - can read file (with-daemon, partial raw-leaves)
ok 865 - output looks good (with-daemon, partial raw-leaves)
ok 866 - cleanup (with-daemon, partial raw-leaves)
ok 867 - cannot write to directory (with-daemon, partial raw-leaves)
ok 868 - verify dir was not changed (with-daemon, partial raw-leaves)
ok 869 - cannot write to nonexistent path (with-daemon, partial raw-leaves)
ok 872 - no new paths were created (with-daemon, partial raw-leaves)
ok 873 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 874 - write 'no-flush' succeeds (with-daemon, partial raw-leaves)
ok 875 - root hash not bubbled up yet (with-daemon, partial raw-leaves)
ok 876 - changes bubbled up to root on inspection (with-daemon, partial raw-leaves)
ok 877 - root hash looks good (with-daemon, partial raw-leaves)
ok 878 - /cats hash looks good (with-daemon, partial raw-leaves)
ok 879 - flush root succeeds (with-daemon, partial raw-leaves)
ok 880 - can mv dir (with-daemon, partial raw-leaves)
ok 881 - can mv dir and dest dir is / (with-daemon, partial raw-leaves)
ok 882 - can mv dir and dest dir path has no trailing slash (with-daemon, partial raw-leaves)
ok 887 - mv worked (with-daemon, partial raw-leaves)
ok 888 - cleanup, remove 'cats' (with-daemon, partial raw-leaves)
ok 891 - cleanup looks good (with-daemon, partial raw-leaves)
ok 892 - create a new file (with-daemon, partial raw-leaves)
ok 893 - truncate and write over that file (with-daemon, partial raw-leaves)
ok 894 - output looks good (with-daemon, partial raw-leaves)
ok 895 - file hash correct (with-daemon, partial raw-leaves)
ok 896 - cleanup (with-daemon, partial raw-leaves)
ok 897 - mkdir --flush works (with-daemon, partial raw-leaves)
ok 898 - mkdir --flush works a second time (with-daemon, partial raw-leaves)
ok 901 - dir looks right (with-daemon, partial raw-leaves)
ok 904 - child dir looks right (with-daemon, partial raw-leaves)
ok 905 - cleanup (with-daemon, partial raw-leaves)
ok 908 - child dir looks right (with-daemon, partial raw-leaves)
ok 909 - create and remove dir (with-daemon, partial raw-leaves)
ok 910 - create test file (with-daemon, partial raw-leaves)
ok 911 - copy test file onto test dir (with-daemon, partial raw-leaves)
ok 912 - test /test_dir (with-daemon, partial raw-leaves)
ok 913 - clean up /test_dir and /test_file (with-daemon, partial raw-leaves)
ok 914 - make a directory and a file (with-daemon, partial raw-leaves)
ok 915 - copy a file into a directory (with-daemon, partial raw-leaves)
ok 916 - file made it into directory (with-daemon, partial raw-leaves)
ok 917 - test copy --force overwrites files
ok 918 - clean up
ok 919 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, partial raw-leaves)
ok 920 - can write file and create intermediate directories (with-daemon, partial raw-leaves)
ok 921 - can write file and create intermediate directories with short flags (with-daemon, partial raw-leaves)
ok 922 - can write another file in the same directory with -e -p (with-daemon, partial raw-leaves)
ok 923 - clean up (with-daemon, partial raw-leaves)
ok 926 - root mfs entry is empty (with-daemon, partial raw-leaves)
ok 927 - repo gc (with-daemon, partial raw-leaves)
ok 930 - remove file forcibly
ok 933 - remove multiple files forcibly
ok 936 - remove directory forcibly
ok 939 - remove multiple directories forcibly
ok 940 - remove multiple files
ok 943 - remove multiple directories
ok 944 - remove nonexistent path forcibly
ok 945 - remove deeply nonexistent path forcibly
ok 948 - remove multiple files (with nonexistent one)
ok 949 - can mkdir in root (with-daemon, raw-leaves)
ok 950 - 'files ls' lists root by default (with-daemon, raw-leaves)
ok 951 - directory was created (with-daemon, raw-leaves)
ok 954 - directory is empty (with-daemon, raw-leaves)
ok 955 - stat works (with-daemon, raw-leaves)
ok 956 - hash is first line of stat (with-daemon, raw-leaves)
ok 957 - stat --hash gives only hash (with-daemon, raw-leaves)
ok 958 - stat with multiple format options should fail (with-daemon, raw-leaves)
ok 959 - compare hash option with format (with-daemon, raw-leaves)
ok 960 - compare size option with format (with-daemon, raw-leaves)
ok 961 - check root hash (with-daemon, raw-leaves)
ok 962 - stat works outside of MFS
ok 963 - stat compute the locality of a dag
ok 964 - cannot mkdir / (with-daemon, raw-leaves)
ok 965 - check root hash was not changed (with-daemon, raw-leaves)
ok 966 - can put files into directory (with-daemon, raw-leaves)
ok 969 - file shows up in directory (with-daemon, raw-leaves)
ok 970 - file has correct hash and size in directory (with-daemon, raw-leaves)
ok 971 - file has correct hash and size listed with -l
ok 972 - file has correct hash and size listed with --long
ok 973 - file has correct hash and size listed with -l --cid-base=base32
ok 974 - file shows up with the correct name
ok 975 - can stat file (with-daemon, raw-leaves)
ok 976 - stat output looks good
ok 977 - can stat file with --cid-base=base32 (with-daemon, raw-leaves)
ok 978 - stat output looks good with --cid-base=base32
ok 979 - can read file (with-daemon, raw-leaves)
ok 980 - output looks good (with-daemon, raw-leaves)
ok 981 - can put another file into root (with-daemon, raw-leaves)
ok 984 - file shows up in root (with-daemon, raw-leaves)
ok 985 - can read file (with-daemon, raw-leaves)
ok 986 - output looks good (with-daemon, raw-leaves)
ok 987 - can make deep directory (with-daemon, raw-leaves)
ok 998 - directory was created correctly (with-daemon, raw-leaves)
ok 999 - dir has correct name
ok 1000 - can copy file into new dir (with-daemon, raw-leaves)
ok 1001 - can copy file into deep dir using -p flag (with-daemon, raw-leaves)
ok 1002 - file copied into deep dir exists (with-daemon, raw-leaves)
ok 1003 - cleanup deep cp -p test (with-daemon, raw-leaves)
ok 1004 - can read file (with-daemon, raw-leaves)
ok 1005 - output looks good (with-daemon, raw-leaves)
ok 1008 - file shows up in dir (with-daemon, raw-leaves)
ok 1009 - can remove file (with-daemon, raw-leaves)
ok 1012 - file no longer appears (with-daemon, raw-leaves)
ok 1013 - can remove dir (with-daemon, raw-leaves)
ok 1016 - dir no longer appears (with-daemon, raw-leaves)
ok 1017 - can remove file from root (with-daemon, raw-leaves)
ok 1020 - file no longer appears (with-daemon, raw-leaves)
ok 1021 - check root hash (with-daemon, raw-leaves)
ok 1022 - cannot remove root (with-daemon, raw-leaves)
ok 1023 - check root hash was not changed (with-daemon, raw-leaves)
ok 1024 - read from offset works (with-daemon, raw-leaves)
ok 1025 - output looks good (with-daemon, raw-leaves)
ok 1026 - read with size works (with-daemon, raw-leaves)
ok 1027 - output looks good (with-daemon, raw-leaves)
ok 1028 - cannot read from negative offset (with-daemon, raw-leaves)
ok 1029 - read from offset 0 works (with-daemon, raw-leaves)
ok 1030 - output looks good (with-daemon, raw-leaves)
ok 1031 - read last byte works (with-daemon, raw-leaves)
ok 1032 - output looks good (with-daemon, raw-leaves)
ok 1033 - offset past end of file fails (with-daemon, raw-leaves)
ok 1034 - cannot read negative count bytes (with-daemon, raw-leaves)
ok 1035 - reading zero bytes prints nothing (with-daemon, raw-leaves)
ok 1036 - output looks good (with-daemon, raw-leaves)
ok 1037 - count > len(file) prints entire file (with-daemon, raw-leaves)
ok 1038 - output looks good (with-daemon, raw-leaves)
ok 1039 - can write file (with-daemon, raw-leaves)
ok 1042 - file was created (with-daemon, raw-leaves)
ok 1043 - can read file we just wrote (with-daemon, raw-leaves)
ok 1044 - can write to offset (with-daemon, raw-leaves)
ok 1045 - file looks correct (with-daemon, raw-leaves)
ok 1046 - file hash correct (with-daemon, raw-leaves)
ok 1047 - can't write to negative offset (with-daemon, raw-leaves)
ok 1048 - verify file was not changed (with-daemon, raw-leaves)
ok 1049 - write new file for testing (with-daemon, raw-leaves)
ok 1050 - write to offset past end works (with-daemon, raw-leaves)
ok 1051 - can read file (with-daemon, raw-leaves)
ok 1052 - output looks good (with-daemon, raw-leaves)
ok 1053 - cleanup (with-daemon, raw-leaves)
ok 1054 - cannot write to directory (with-daemon, raw-leaves)
ok 1055 - verify dir was not changed (with-daemon, raw-leaves)
ok 1056 - cannot write to nonexistent path (with-daemon, raw-leaves)
ok 1059 - no new paths were created (with-daemon, raw-leaves)
ok 1060 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 1061 - write 'no-flush' succeeds (with-daemon, raw-leaves)
ok 1062 - root hash not bubbled up yet (with-daemon, raw-leaves)
ok 1063 - changes bubbled up to root on inspection (with-daemon, raw-leaves)
ok 1064 - root hash looks good (with-daemon, raw-leaves)
ok 1065 - /cats hash looks good (with-daemon, raw-leaves)
ok 1066 - flush root succeeds (with-daemon, raw-leaves)
ok 1067 - can mv dir (with-daemon, raw-leaves)
ok 1068 - can mv dir and dest dir is / (with-daemon, raw-leaves)
ok 1069 - can mv dir and dest dir path has no trailing slash (with-daemon, raw-leaves)
ok 1074 - mv worked (with-daemon, raw-leaves)
ok 1075 - cleanup, remove 'cats' (with-daemon, raw-leaves)
ok 1078 - cleanup looks good (with-daemon, raw-leaves)
ok 1079 - create a new file (with-daemon, raw-leaves)
ok 1080 - truncate and write over that file (with-daemon, raw-leaves)
ok 1081 - output looks good (with-daemon, raw-leaves)
ok 1082 - file hash correct (with-daemon, raw-leaves)
ok 1083 - cleanup (with-daemon, raw-leaves)
ok 1084 - mkdir --flush works (with-daemon, raw-leaves)
ok 1085 - mkdir --flush works a second time (with-daemon, raw-leaves)
ok 1088 - dir looks right (with-daemon, raw-leaves)
ok 1091 - child dir looks right (with-daemon, raw-leaves)
ok 1092 - cleanup (with-daemon, raw-leaves)
ok 1095 - child dir looks right (with-daemon, raw-leaves)
ok 1096 - create and remove dir (with-daemon, raw-leaves)
ok 1097 - create test file (with-daemon, raw-leaves)
ok 1098 - copy test file onto test dir (with-daemon, raw-leaves)
ok 1099 - test /test_dir (with-daemon, raw-leaves)
ok 1100 - clean up /test_dir and /test_file (with-daemon, raw-leaves)
ok 1101 - make a directory and a file (with-daemon, raw-leaves)
ok 1102 - copy a file into a directory (with-daemon, raw-leaves)
ok 1103 - file made it into directory (with-daemon, raw-leaves)
ok 1104 - test copy --force overwrites files
ok 1105 - clean up
ok 1106 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, raw-leaves)
ok 1107 - can write file and create intermediate directories (with-daemon, raw-leaves)
ok 1108 - can write file and create intermediate directories with short flags (with-daemon, raw-leaves)
ok 1109 - can write another file in the same directory with -e -p (with-daemon, raw-leaves)
ok 1110 - clean up (with-daemon, raw-leaves)
ok 1113 - root mfs entry is empty (with-daemon, raw-leaves)
ok 1114 - repo gc (with-daemon, raw-leaves)
ok 1117 - remove file forcibly
ok 1120 - remove multiple files forcibly
ok 1123 - remove directory forcibly
ok 1126 - remove multiple directories forcibly
ok 1127 - remove multiple files
ok 1130 - remove multiple directories
ok 1131 - remove nonexistent path forcibly
ok 1132 - remove deeply nonexistent path forcibly
ok 1135 - remove multiple files (with nonexistent one)
ok 1136 - can mkdir in root (with-daemon, cidv1)
ok 1137 - 'files ls' lists root by default (with-daemon, cidv1)
ok 1138 - directory was created (with-daemon, cidv1)
ok 1141 - directory is empty (with-daemon, cidv1)
ok 1142 - stat works (with-daemon, cidv1)
ok 1143 - hash is first line of stat (with-daemon, cidv1)
ok 1144 - stat --hash gives only hash (with-daemon, cidv1)
ok 1145 - stat with multiple format options should fail (with-daemon, cidv1)
ok 1146 - compare hash option with format (with-daemon, cidv1)
ok 1147 - compare size option with format (with-daemon, cidv1)
ok 1148 - check root hash (with-daemon, cidv1)
ok 1149 - stat works outside of MFS
ok 1150 - stat compute the locality of a dag
ok 1151 - cannot mkdir / (with-daemon, cidv1)
ok 1152 - check root hash was not changed (with-daemon, cidv1)
ok 1153 - can put files into directory (with-daemon, cidv1)
ok 1156 - file shows up in directory (with-daemon, cidv1)
ok 1157 - file has correct hash and size in directory (with-daemon, cidv1)
ok 1158 - file has correct hash and size listed with -l
ok 1159 - file has correct hash and size listed with --long
ok 1160 - file has correct hash and size listed with -l --cid-base=base32
ok 1161 - file shows up with the correct name
ok 1162 - can stat file (with-daemon, cidv1)
ok 1163 - stat output looks good
ok 1164 - can stat file with --cid-base=base32 (with-daemon, cidv1)
ok 1165 - stat output looks good with --cid-base=base32
ok 1166 - can read file (with-daemon, cidv1)
ok 1167 - output looks good (with-daemon, cidv1)
ok 1168 - can put another file into root (with-daemon, cidv1)
ok 1171 - file shows up in root (with-daemon, cidv1)
ok 1172 - can read file (with-daemon, cidv1)
ok 1173 - output looks good (with-daemon, cidv1)
ok 1174 - can make deep directory (with-daemon, cidv1)
ok 1185 - directory was created correctly (with-daemon, cidv1)
ok 1186 - dir has correct name
ok 1187 - can copy file into new dir (with-daemon, cidv1)
ok 1188 - can copy file into deep dir using -p flag (with-daemon, cidv1)
ok 1189 - file copied into deep dir exists (with-daemon, cidv1)
ok 1190 - cleanup deep cp -p test (with-daemon, cidv1)
ok 1191 - can read file (with-daemon, cidv1)
ok 1192 - output looks good (with-daemon, cidv1)
ok 1195 - file shows up in dir (with-daemon, cidv1)
ok 1196 - can remove file (with-daemon, cidv1)
ok 1199 - file no longer appears (with-daemon, cidv1)
ok 1200 - can remove dir (with-daemon, cidv1)
ok 1203 - dir no longer appears (with-daemon, cidv1)
ok 1204 - can remove file from root (with-daemon, cidv1)
ok 1207 - file no longer appears (with-daemon, cidv1)
ok 1208 - check root hash (with-daemon, cidv1)
ok 1209 - cannot remove root (with-daemon, cidv1)
ok 1210 - check root hash was not changed (with-daemon, cidv1)
ok 1211 - read from offset works (with-daemon, cidv1)
ok 1212 - output looks good (with-daemon, cidv1)
ok 1213 - read with size works (with-daemon, cidv1)
ok 1214 - output looks good (with-daemon, cidv1)
ok 1215 - cannot read from negative offset (with-daemon, cidv1)
ok 1216 - read from offset 0 works (with-daemon, cidv1)
ok 1217 - output looks good (with-daemon, cidv1)
ok 1218 - read last byte works (with-daemon, cidv1)
ok 1219 - output looks good (with-daemon, cidv1)
ok 1220 - offset past end of file fails (with-daemon, cidv1)
ok 1221 - cannot read negative count bytes (with-daemon, cidv1)
ok 1222 - reading zero bytes prints nothing (with-daemon, cidv1)
ok 1223 - output looks good (with-daemon, cidv1)
ok 1224 - count > len(file) prints entire file (with-daemon, cidv1)
ok 1225 - output looks good (with-daemon, cidv1)
ok 1226 - can write file (with-daemon, cidv1)
ok 1229 - file was created (with-daemon, cidv1)
ok 1230 - can read file we just wrote (with-daemon, cidv1)
ok 1231 - can write to offset (with-daemon, cidv1)
ok 1232 - file looks correct (with-daemon, cidv1)
ok 1233 - file hash correct (with-daemon, cidv1)
ok 1234 - can't write to negative offset (with-daemon, cidv1)
ok 1235 - verify file was not changed (with-daemon, cidv1)
ok 1236 - write new file for testing (with-daemon, cidv1)
ok 1237 - write to offset past end works (with-daemon, cidv1)
ok 1238 - can read file (with-daemon, cidv1)
ok 1239 - output looks good (with-daemon, cidv1)
ok 1240 - cleanup (with-daemon, cidv1)
ok 1241 - cannot write to directory (with-daemon, cidv1)
ok 1242 - verify dir was not changed (with-daemon, cidv1)
ok 1243 - cannot write to nonexistent path (with-daemon, cidv1)
ok 1246 - no new paths were created (with-daemon, cidv1)
ok 1247 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 1248 - write 'no-flush' succeeds (with-daemon, cidv1)
ok 1249 - root hash not bubbled up yet (with-daemon, cidv1)
ok 1250 - changes bubbled up to root on inspection (with-daemon, cidv1)
ok 1251 - root hash looks good (with-daemon, cidv1)
ok 1252 - /cats hash looks good (with-daemon, cidv1)
ok 1253 - flush root succeeds (with-daemon, cidv1)
ok 1254 - can mv dir (with-daemon, cidv1)
ok 1255 - can mv dir and dest dir is / (with-daemon, cidv1)
ok 1256 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1)
ok 1261 - mv worked (with-daemon, cidv1)
ok 1262 - cleanup, remove 'cats' (with-daemon, cidv1)
ok 1265 - cleanup looks good (with-daemon, cidv1)
ok 1266 - create a new file (with-daemon, cidv1)
ok 1267 - truncate and write over that file (with-daemon, cidv1)
ok 1268 - output looks good (with-daemon, cidv1)
ok 1269 - file hash correct (with-daemon, cidv1)
ok 1270 - cleanup (with-daemon, cidv1)
ok 1271 - mkdir --flush works (with-daemon, cidv1)
ok 1272 - mkdir --flush works a second time (with-daemon, cidv1)
ok 1275 - dir looks right (with-daemon, cidv1)
ok 1278 - child dir looks right (with-daemon, cidv1)
ok 1279 - cleanup (with-daemon, cidv1)
ok 1282 - child dir looks right (with-daemon, cidv1)
ok 1283 - create and remove dir (with-daemon, cidv1)
ok 1284 - create test file (with-daemon, cidv1)
ok 1285 - copy test file onto test dir (with-daemon, cidv1)
ok 1286 - test /test_dir (with-daemon, cidv1)
ok 1287 - clean up /test_dir and /test_file (with-daemon, cidv1)
ok 1288 - make a directory and a file (with-daemon, cidv1)
ok 1289 - copy a file into a directory (with-daemon, cidv1)
ok 1290 - file made it into directory (with-daemon, cidv1)
ok 1291 - test copy --force overwrites files
ok 1292 - clean up
ok 1293 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1)
ok 1294 - can write file and create intermediate directories (with-daemon, cidv1)
ok 1295 - can write file and create intermediate directories with short flags (with-daemon, cidv1)
ok 1296 - can write another file in the same directory with -e -p (with-daemon, cidv1)
ok 1297 - clean up (with-daemon, cidv1)
ok 1300 - root mfs entry is empty (with-daemon, cidv1)
ok 1301 - repo gc (with-daemon, cidv1)
ok 1304 - remove file forcibly
ok 1307 - remove multiple files forcibly
ok 1310 - remove directory forcibly
ok 1313 - remove multiple directories forcibly
ok 1314 - remove multiple files
ok 1317 - remove multiple directories
ok 1318 - remove nonexistent path forcibly
ok 1319 - remove deeply nonexistent path forcibly
ok 1322 - remove multiple files (with nonexistent one)
ok 1323 - can update root hash to cidv1
ok 1324 - can mkdir in root (with-daemon, cidv1 root)
ok 1325 - 'files ls' lists root by default (with-daemon, cidv1 root)
ok 1326 - directory was created (with-daemon, cidv1 root)
ok 1329 - directory is empty (with-daemon, cidv1 root)
ok 1330 - stat works (with-daemon, cidv1 root)
ok 1331 - hash is first line of stat (with-daemon, cidv1 root)
ok 1332 - stat --hash gives only hash (with-daemon, cidv1 root)
ok 1333 - stat with multiple format options should fail (with-daemon, cidv1 root)
ok 1334 - compare hash option with format (with-daemon, cidv1 root)
ok 1335 - compare size option with format (with-daemon, cidv1 root)
ok 1336 - check root hash (with-daemon, cidv1 root)
ok 1337 - stat works outside of MFS
ok 1338 - stat compute the locality of a dag
ok 1339 - cannot mkdir / (with-daemon, cidv1 root)
ok 1340 - check root hash was not changed (with-daemon, cidv1 root)
ok 1341 - can put files into directory (with-daemon, cidv1 root)
ok 1344 - file shows up in directory (with-daemon, cidv1 root)
ok 1345 - file has correct hash and size in directory (with-daemon, cidv1 root)
ok 1346 - file has correct hash and size listed with -l
ok 1347 - file has correct hash and size listed with --long
ok 1348 - file has correct hash and size listed with -l --cid-base=base32
ok 1349 - file shows up with the correct name
ok 1350 - can stat file (with-daemon, cidv1 root)
ok 1351 - stat output looks good
ok 1352 - can stat file with --cid-base=base32 (with-daemon, cidv1 root)
ok 1353 - stat output looks good with --cid-base=base32
ok 1354 - can read file (with-daemon, cidv1 root)
ok 1355 - output looks good (with-daemon, cidv1 root)
ok 1356 - can put another file into root (with-daemon, cidv1 root)
ok 1359 - file shows up in root (with-daemon, cidv1 root)
ok 1360 - can read file (with-daemon, cidv1 root)
ok 1361 - output looks good (with-daemon, cidv1 root)
ok 1362 - can make deep directory (with-daemon, cidv1 root)
ok 1373 - directory was created correctly (with-daemon, cidv1 root)
ok 1374 - dir has correct name
ok 1375 - can copy file into new dir (with-daemon, cidv1 root)
ok 1376 - can copy file into deep dir using -p flag (with-daemon, cidv1 root)
ok 1377 - file copied into deep dir exists (with-daemon, cidv1 root)
ok 1378 - cleanup deep cp -p test (with-daemon, cidv1 root)
ok 1379 - can read file (with-daemon, cidv1 root)
ok 1380 - output looks good (with-daemon, cidv1 root)
ok 1383 - file shows up in dir (with-daemon, cidv1 root)
ok 1384 - can remove file (with-daemon, cidv1 root)
ok 1387 - file no longer appears (with-daemon, cidv1 root)
ok 1388 - can remove dir (with-daemon, cidv1 root)
ok 1391 - dir no longer appears (with-daemon, cidv1 root)
ok 1392 - can remove file from root (with-daemon, cidv1 root)
ok 1395 - file no longer appears (with-daemon, cidv1 root)
ok 1396 - check root hash (with-daemon, cidv1 root)
ok 1397 - cannot remove root (with-daemon, cidv1 root)
ok 1398 - check root hash was not changed (with-daemon, cidv1 root)
ok 1399 - read from offset works (with-daemon, cidv1 root)
ok 1400 - output looks good (with-daemon, cidv1 root)
ok 1401 - read with size works (with-daemon, cidv1 root)
ok 1402 - output looks good (with-daemon, cidv1 root)
ok 1403 - cannot read from negative offset (with-daemon, cidv1 root)
ok 1404 - read from offset 0 works (with-daemon, cidv1 root)
ok 1405 - output looks good (with-daemon, cidv1 root)
ok 1406 - read last byte works (with-daemon, cidv1 root)
ok 1407 - output looks good (with-daemon, cidv1 root)
ok 1408 - offset past end of file fails (with-daemon, cidv1 root)
ok 1409 - cannot read negative count bytes (with-daemon, cidv1 root)
ok 1410 - reading zero bytes prints nothing (with-daemon, cidv1 root)
ok 1411 - output looks good (with-daemon, cidv1 root)
ok 1412 - count > len(file) prints entire file (with-daemon, cidv1 root)
ok 1413 - output looks good (with-daemon, cidv1 root)
ok 1414 - can write file (with-daemon, cidv1 root)
ok 1417 - file was created (with-daemon, cidv1 root)
ok 1418 - can read file we just wrote (with-daemon, cidv1 root)
ok 1419 - can write to offset (with-daemon, cidv1 root)
ok 1420 - file looks correct (with-daemon, cidv1 root)
ok 1421 - file hash correct (with-daemon, cidv1 root)
ok 1422 - can't write to negative offset (with-daemon, cidv1 root)
ok 1423 - verify file was not changed (with-daemon, cidv1 root)
ok 1424 - write new file for testing (with-daemon, cidv1 root)
ok 1425 - write to offset past end works (with-daemon, cidv1 root)
ok 1426 - can read file (with-daemon, cidv1 root)
ok 1427 - output looks good (with-daemon, cidv1 root)
ok 1428 - cleanup (with-daemon, cidv1 root)
ok 1429 - cannot write to directory (with-daemon, cidv1 root)
ok 1430 - verify dir was not changed (with-daemon, cidv1 root)
ok 1431 - cannot write to nonexistent path (with-daemon, cidv1 root)
ok 1434 - no new paths were created (with-daemon, cidv1 root)
ok 1435 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 1436 - write 'no-flush' succeeds (with-daemon, cidv1 root)
ok 1437 - root hash not bubbled up yet (with-daemon, cidv1 root)
ok 1438 - changes bubbled up to root on inspection (with-daemon, cidv1 root)
ok 1439 - root hash looks good (with-daemon, cidv1 root)
ok 1440 - /cats hash looks good (with-daemon, cidv1 root)
ok 1441 - flush root succeeds (with-daemon, cidv1 root)
ok 1442 - can mv dir (with-daemon, cidv1 root)
ok 1443 - can mv dir and dest dir is / (with-daemon, cidv1 root)
ok 1444 - can mv dir and dest dir path has no trailing slash (with-daemon, cidv1 root)
ok 1449 - mv worked (with-daemon, cidv1 root)
ok 1450 - cleanup, remove 'cats' (with-daemon, cidv1 root)
ok 1453 - cleanup looks good (with-daemon, cidv1 root)
ok 1454 - create a new file (with-daemon, cidv1 root)
ok 1455 - truncate and write over that file (with-daemon, cidv1 root)
ok 1456 - output looks good (with-daemon, cidv1 root)
ok 1457 - file hash correct (with-daemon, cidv1 root)
ok 1458 - cleanup (with-daemon, cidv1 root)
ok 1459 - mkdir --flush works (with-daemon, cidv1 root)
ok 1460 - mkdir --flush works a second time (with-daemon, cidv1 root)
ok 1463 - dir looks right (with-daemon, cidv1 root)
ok 1466 - child dir looks right (with-daemon, cidv1 root)
ok 1467 - cleanup (with-daemon, cidv1 root)
ok 1470 - child dir looks right (with-daemon, cidv1 root)
ok 1471 - create and remove dir (with-daemon, cidv1 root)
ok 1472 - create test file (with-daemon, cidv1 root)
ok 1473 - copy test file onto test dir (with-daemon, cidv1 root)
ok 1474 - test /test_dir (with-daemon, cidv1 root)
ok 1475 - clean up /test_dir and /test_file (with-daemon, cidv1 root)
ok 1476 - make a directory and a file (with-daemon, cidv1 root)
ok 1477 - copy a file into a directory (with-daemon, cidv1 root)
ok 1478 - file made it into directory (with-daemon, cidv1 root)
ok 1479 - test copy --force overwrites files
ok 1480 - clean up
ok 1481 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, cidv1 root)
ok 1482 - can write file and create intermediate directories (with-daemon, cidv1 root)
ok 1483 - can write file and create intermediate directories with short flags (with-daemon, cidv1 root)
ok 1484 - can write another file in the same directory with -e -p (with-daemon, cidv1 root)
ok 1485 - clean up (with-daemon, cidv1 root)
ok 1488 - root mfs entry is empty (with-daemon, cidv1 root)
ok 1489 - repo gc (with-daemon, cidv1 root)
ok 1492 - remove file forcibly
ok 1495 - remove multiple files forcibly
ok 1498 - remove directory forcibly
ok 1501 - remove multiple directories forcibly
ok 1502 - remove multiple files
ok 1505 - remove multiple directories
ok 1506 - remove nonexistent path forcibly
ok 1507 - remove deeply nonexistent path forcibly
ok 1510 - remove multiple files (with nonexistent one)
ok 1511 - can update root hash to blake2b-256
ok 1512 - can mkdir in root (with-daemon, blake2b-256 root)
ok 1513 - 'files ls' lists root by default (with-daemon, blake2b-256 root)
ok 1514 - directory was created (with-daemon, blake2b-256 root)
ok 1517 - directory is empty (with-daemon, blake2b-256 root)
ok 1518 - stat works (with-daemon, blake2b-256 root)
ok 1519 - hash is first line of stat (with-daemon, blake2b-256 root)
ok 1520 - stat --hash gives only hash (with-daemon, blake2b-256 root)
ok 1521 - stat with multiple format options should fail (with-daemon, blake2b-256 root)
ok 1522 - compare hash option with format (with-daemon, blake2b-256 root)
ok 1523 - compare size option with format (with-daemon, blake2b-256 root)
ok 1524 - check root hash (with-daemon, blake2b-256 root)
ok 1525 - stat works outside of MFS
ok 1526 - stat compute the locality of a dag
ok 1527 - cannot mkdir / (with-daemon, blake2b-256 root)
ok 1528 - check root hash was not changed (with-daemon, blake2b-256 root)
ok 1529 - can put files into directory (with-daemon, blake2b-256 root)
ok 1532 - file shows up in directory (with-daemon, blake2b-256 root)
ok 1533 - file has correct hash and size in directory (with-daemon, blake2b-256 root)
ok 1534 - file has correct hash and size listed with -l
ok 1535 - file has correct hash and size listed with --long
ok 1536 - file has correct hash and size listed with -l --cid-base=base32
ok 1537 - file shows up with the correct name
ok 1538 - can stat file (with-daemon, blake2b-256 root)
ok 1539 - stat output looks good
ok 1540 - can stat file with --cid-base=base32 (with-daemon, blake2b-256 root)
ok 1541 - stat output looks good with --cid-base=base32
ok 1542 - can read file (with-daemon, blake2b-256 root)
ok 1543 - output looks good (with-daemon, blake2b-256 root)
ok 1544 - can put another file into root (with-daemon, blake2b-256 root)
ok 1547 - file shows up in root (with-daemon, blake2b-256 root)
ok 1548 - can read file (with-daemon, blake2b-256 root)
ok 1549 - output looks good (with-daemon, blake2b-256 root)
ok 1550 - can make deep directory (with-daemon, blake2b-256 root)
ok 1561 - directory was created correctly (with-daemon, blake2b-256 root)
ok 1562 - dir has correct name
ok 1563 - can copy file into new dir (with-daemon, blake2b-256 root)
ok 1564 - can copy file into deep dir using -p flag (with-daemon, blake2b-256 root)
ok 1565 - file copied into deep dir exists (with-daemon, blake2b-256 root)
ok 1566 - cleanup deep cp -p test (with-daemon, blake2b-256 root)
ok 1567 - can read file (with-daemon, blake2b-256 root)
ok 1568 - output looks good (with-daemon, blake2b-256 root)
ok 1571 - file shows up in dir (with-daemon, blake2b-256 root)
ok 1572 - can remove file (with-daemon, blake2b-256 root)
ok 1575 - file no longer appears (with-daemon, blake2b-256 root)
ok 1576 - can remove dir (with-daemon, blake2b-256 root)
ok 1579 - dir no longer appears (with-daemon, blake2b-256 root)
ok 1580 - can remove file from root (with-daemon, blake2b-256 root)
ok 1583 - file no longer appears (with-daemon, blake2b-256 root)
ok 1584 - check root hash (with-daemon, blake2b-256 root)
ok 1585 - cannot remove root (with-daemon, blake2b-256 root)
ok 1586 - check root hash was not changed (with-daemon, blake2b-256 root)
ok 1587 - read from offset works (with-daemon, blake2b-256 root)
ok 1588 - output looks good (with-daemon, blake2b-256 root)
ok 1589 - read with size works (with-daemon, blake2b-256 root)
ok 1590 - output looks good (with-daemon, blake2b-256 root)
ok 1591 - cannot read from negative offset (with-daemon, blake2b-256 root)
ok 1592 - read from offset 0 works (with-daemon, blake2b-256 root)
ok 1593 - output looks good (with-daemon, blake2b-256 root)
ok 1594 - read last byte works (with-daemon, blake2b-256 root)
ok 1595 - output looks good (with-daemon, blake2b-256 root)
ok 1596 - offset past end of file fails (with-daemon, blake2b-256 root)
ok 1597 - cannot read negative count bytes (with-daemon, blake2b-256 root)
ok 1598 - reading zero bytes prints nothing (with-daemon, blake2b-256 root)
ok 1599 - output looks good (with-daemon, blake2b-256 root)
ok 1600 - count > len(file) prints entire file (with-daemon, blake2b-256 root)
ok 1601 - output looks good (with-daemon, blake2b-256 root)
ok 1602 - can write file (with-daemon, blake2b-256 root)
ok 1605 - file was created (with-daemon, blake2b-256 root)
ok 1606 - can read file we just wrote (with-daemon, blake2b-256 root)
ok 1607 - can write to offset (with-daemon, blake2b-256 root)
ok 1608 - file looks correct (with-daemon, blake2b-256 root)
ok 1609 - file hash correct (with-daemon, blake2b-256 root)
ok 1610 - can't write to negative offset (with-daemon, blake2b-256 root)
ok 1611 - verify file was not changed (with-daemon, blake2b-256 root)
ok 1612 - write new file for testing (with-daemon, blake2b-256 root)
ok 1613 - write to offset past end works (with-daemon, blake2b-256 root)
ok 1614 - can read file (with-daemon, blake2b-256 root)
ok 1615 - output looks good (with-daemon, blake2b-256 root)
ok 1616 - cleanup (with-daemon, blake2b-256 root)
ok 1617 - cannot write to directory (with-daemon, blake2b-256 root)
ok 1618 - verify dir was not changed (with-daemon, blake2b-256 root)
ok 1619 - cannot write to nonexistent path (with-daemon, blake2b-256 root)
ok 1622 - no new paths were created (with-daemon, blake2b-256 root)
ok 1623 - 'ipfs daemon' is running when WITH_DAEMON is set
ok 1624 - write 'no-flush' succeeds (with-daemon, blake2b-256 root)
ok 1625 - root hash not bubbled up yet (with-daemon, blake2b-256 root)
ok 1626 - changes bubbled up to root on inspection (with-daemon, blake2b-256 root)
ok 1627 - root hash looks good (with-daemon, blake2b-256 root)
ok 1628 - /cats hash looks good (with-daemon, blake2b-256 root)
ok 1629 - flush root succeeds (with-daemon, blake2b-256 root)
ok 1630 - can mv dir (with-daemon, blake2b-256 root)
ok 1631 - can mv dir and dest dir is / (with-daemon, blake2b-256 root)
ok 1632 - can mv dir and dest dir path has no trailing slash (with-daemon, blake2b-256 root)
ok 1637 - mv worked (with-daemon, blake2b-256 root)
ok 1638 - cleanup, remove 'cats' (with-daemon, blake2b-256 root)
ok 1641 - cleanup looks good (with-daemon, blake2b-256 root)
ok 1642 - create a new file (with-daemon, blake2b-256 root)
ok 1643 - truncate and write over that file (with-daemon, blake2b-256 root)
ok 1644 - output looks good (with-daemon, blake2b-256 root)
ok 1645 - file hash correct (with-daemon, blake2b-256 root)
ok 1646 - cleanup (with-daemon, blake2b-256 root)
ok 1647 - mkdir --flush works (with-daemon, blake2b-256 root)
ok 1648 - mkdir --flush works a second time (with-daemon, blake2b-256 root)
ok 1651 - dir looks right (with-daemon, blake2b-256 root)
ok 1654 - child dir looks right (with-daemon, blake2b-256 root)
ok 1655 - cleanup (with-daemon, blake2b-256 root)
ok 1658 - child dir looks right (with-daemon, blake2b-256 root)
ok 1659 - create and remove dir (with-daemon, blake2b-256 root)
ok 1660 - create test file (with-daemon, blake2b-256 root)
ok 1661 - copy test file onto test dir (with-daemon, blake2b-256 root)
ok 1662 - test /test_dir (with-daemon, blake2b-256 root)
ok 1663 - clean up /test_dir and /test_file (with-daemon, blake2b-256 root)
ok 1664 - make a directory and a file (with-daemon, blake2b-256 root)
ok 1665 - copy a file into a directory (with-daemon, blake2b-256 root)
ok 1666 - file made it into directory (with-daemon, blake2b-256 root)
ok 1667 - test copy --force overwrites files
ok 1668 - clean up
ok 1669 - should fail to write file and create intermediate directories with no --parents flag set (with-daemon, blake2b-256 root)
ok 1670 - can write file and create intermediate directories (with-daemon, blake2b-256 root)
ok 1671 - can write file and create intermediate directories with short flags (with-daemon, blake2b-256 root)
ok 1672 - can write another file in the same directory with -e -p (with-daemon, blake2b-256 root)
ok 1673 - clean up (with-daemon, blake2b-256 root)
ok 1676 - root mfs entry is empty (with-daemon, blake2b-256 root)
ok 1677 - repo gc (with-daemon, blake2b-256 root)
ok 1680 - remove file forcibly
ok 1683 - remove multiple files forcibly
ok 1686 - remove directory forcibly
ok 1689 - remove multiple directories forcibly
ok 1690 - remove multiple files
ok 1693 - remove multiple directories
ok 1694 - remove nonexistent path forcibly
ok 1695 - remove deeply nonexistent path forcibly
ok 1698 - remove multiple files (with nonexistent one)
ok 1699 - can update root hash back to cidv0
ok 1700 - 'ipfs daemon' is still running
ok 1701 - 'ipfs daemon' can be killed
ok 1702 - enable sharding in config
ok 1703 - 'ipfs daemon' succeeds
ok 1704 - api file shows up
ok 1705 - set up address variables
ok 1706 - 'ipfs daemon' is ready
ok 1707 - make a directory (cidv0)
ok 1708 - can make 100 files in a directory (cidv0)
ok 1709 - sorted listing works (cidv0)
ok 1710 - unsorted listing works (cidv0)
ok 1711 - can read a file from sharded directory (cidv0)
ok 1712 - can pin a file from sharded directory (cidv0)
ok 1713 - can unpin a file from sharded directory (cidv0)
ok 1714 - output object was really sharded and has correct hash (cidv0)
ok 1715 - clean up (cidv0)
ok 1716 - make a directory (cidv1 root)
ok 1717 - can make 100 files in a directory (cidv1 root)
ok 1718 - sorted listing works (cidv1 root)
ok 1719 - unsorted listing works (cidv1 root)
ok 1720 - can read a file from sharded directory (cidv1 root)
ok 1721 - can pin a file from sharded directory (cidv1 root)
ok 1722 - can unpin a file from sharded directory (cidv1 root)
ok 1723 - output object was really sharded and has correct hash (cidv1 root)
ok 1724 - clean up (cidv1 root)
ok 1725 - 'ipfs daemon' is still running
ok 1726 - 'ipfs daemon' can be killed
ok 1727 - set up automatic sharding/unsharding data
ok 1728 - reset automatic sharding
ok 1729 - 'ipfs daemon' succeeds
ok 1730 - api file shows up
ok 1731 - set up address variables
ok 1732 - 'ipfs daemon' is ready
ok 1733 - ipfs add on directory succeeds
ok 1734 - can access a path under the dir
ok 1735 - remove a few entries from big_dir/ to trigger unsharding
ok 1736 - add a few entries to big_dir/ to retrigger sharding
ok 1737 - 'ipfs daemon' is still running
ok 1738 - 'ipfs daemon' can be killed

Back to top

TestCase t0251-files-flushing

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.154
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.253
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.731
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0251-files-flushing.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0251-files-flushing.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0251-files-flushing.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.217
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.058
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.197
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.044
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.021
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - can copy a file in Success 0.465
System.out »
expecting success: 
  HASH=$(echo "foo" | ipfs add -q) &&
  ipfs files cp /ipfs/$HASH /file

ok 10 - can copy a file in
11 - 'ipfs daemon' is still running Success 0.015
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 11 - 'ipfs daemon' is still running
12 - 'ipfs daemon' can be killed Success 0.500
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 12 - 'ipfs daemon' can be killed
13 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 13 - 'ipfs daemon' succeeds
14 - api file shows up Success 0.219
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 14 - api file shows up
15 - set up address variables Success 0.038
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 15 - set up address variables
16 - get swarm addresses Success 0.076
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 16 - get swarm addresses
17 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 17 - set swarm address vars
18 - 'ipfs daemon' is ready Success 0.007
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 18 - 'ipfs daemon' is ready
19 - file is still there Success 0.093
System.out »
expecting success: 
  verify_path_exists /file

file
ok 19 - file is still there
20 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 20 - 'ipfs daemon' is still running
21 - 'ipfs daemon' can be killed Success 0.279
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 21 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - can copy a file in
ok 11 - 'ipfs daemon' is still running
ok 12 - 'ipfs daemon' can be killed
ok 13 - 'ipfs daemon' succeeds
ok 14 - api file shows up
ok 15 - set up address variables
ok 16 - get swarm addresses
ok 17 - set swarm address vars
ok 18 - 'ipfs daemon' is ready
ok 19 - file is still there
ok 20 - 'ipfs daemon' is still running
ok 21 - 'ipfs daemon' can be killed

Back to top

TestCase t0252-files-gc

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.315
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.535
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 1.031
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0252-files-gc.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0252-files-gc.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0252-files-gc.sh/mfs"
ok 3 - prepare config -- mounting
4 - object not removed after gc Success 0.360
System.out »
expecting success: 
  echo "hello world" > hello.txt &&
  cat hello.txt | ipfs files write --create /hello.txt &&
  ipfs repo gc &&
  ipfs cat QmVib14uvPnCP73XaCDpwugRuwfTsVbGyWbatHAmLSdZUS

removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
hello world
ok 4 - object not removed after gc
5 - /hello.txt still accessible after gc Success 0.092
System.out »
expecting success: 
  ipfs files read /hello.txt > hello-actual &&
  test_cmp hello.txt hello-actual

ok 5 - /hello.txt still accessible after gc
6 - gc okay after adding incomplete node -- prep Success 0.826
System.out »
expecting success: 
  ipfs files mkdir /adir &&
  echo "file1" |  ipfs files write --create /adir/file1 &&
  echo "file2" |  ipfs files write --create /adir/file2 &&
  ipfs pin add --recursive=false $ADIR_HASH &&
  ipfs files rm -r /adir &&
  ipfs repo gc && # will remove /adir/file1 and /adir/file2 but not /adir
  test_must_fail ipfs cat $FILE1_HASH &&
  ipfs files cp /ipfs/$ADIR_HASH /adir &&
  ipfs pin rm $ADIR_HASH

pinned QmbCgoMYVuZq8m1vK31JQx9DorwQdLMF1M3sJ7kygLLqnW directly
removed bafkreif7ztnhq65lumvvtr4ekcwd2ifwgm3awq4zfr3srh462rwyinlb4y
removed bafkreieqvf5iau7vtpf5pd7m44xbuujexp7o7f555e2auatlxybe766saa
removed bafkreiebt66wrfdzcvhtk22ggvybova7i4s4oe45gnmwtpecsq5vn2h6de
removed bafkreid2apwqpa7jugr2mwvgfgoyqr2v3elwt6fdac6vez4xo73tw7tnmq
removed bafkreigfkue2higvz54aei2bz2pushn52md7jnp3eplud5773irak7guxy
removed bafkreidakpha2uyraiej57yj6r6a3p3xrp4qr34qcr326razo6iyzl5ige
removed bafkreiassjhy6wc6qxrsoanp5x2exzgnkwljrqiabffbx2t5xi4owfiocy
removed bafkreidn334fozxnvflyvvkqsf3pqemmwntvmqj4k6fjzizfqhqn236ecy
removed bafkreiaokuluhnt4tdzsneromeo4d2y4qzfb4ok4apeur2de2shojzpkfq
unpinned QmbCgoMYVuZq8m1vK31JQx9DorwQdLMF1M3sJ7kygLLqnW
ok 6 - gc okay after adding incomplete node -- prep
System.err »
Error: block was not found locally (offline): ipld: could not find QmX4eaSJz39mNhdu5ACUwTDpyA6y24HmrQNnAape6u3buS
7 - gc okay after adding incomplete node Success 0.274
System.out »
expecting success: 
  ipfs dag get $ADIR_HASH &&
  ipfs repo gc &&
  ipfs dag get $ADIR_HASH

{"Data":{"/":{"bytes":"CAE"}},"Links":[{"Hash":{"/":"QmX4eaSJz39mNhdu5ACUwTDpyA6y24HmrQNnAape6u3buS"},"Name":"file1","Tsize":64},{"Hash":{"/":"QmPb9SpuwBc2S49v3c7ogtZKsfzfnA3dqxfZnXN6xJhM97"},"Name":"file2","Tsize":64}]}removed bafkreie4m75wacogiolqh5xpdpevmq3ld5w56o7pioe727lv3rrnxlayhi
{"Data":{"/":{"bytes":"CAE"}},"Links":[{"Hash":{"/":"QmX4eaSJz39mNhdu5ACUwTDpyA6y24HmrQNnAape6u3buS"},"Name":"file1","Tsize":64},{"Hash":{"/":"QmPb9SpuwBc2S49v3c7ogtZKsfzfnA3dqxfZnXN6xJhM97"},"Name":"file2","Tsize":64}]}ok 7 - gc okay after adding incomplete node
8 - add directory with direct pin Success 0.438
System.out »
expecting success: 
  mkdir mydir/ &&
  echo "hello world!" > mydir/hello.txt &&
  FILE_UNPINNED=$(ipfs add --pin=false -q -r mydir/hello.txt) &&
  DIR_PINNED=$(ipfs add --pin=false -Q -r mydir) &&
  ipfs add --pin=false -r mydir &&
  ipfs pin add --recursive=false $DIR_PINNED &&
  ipfs cat $FILE_UNPINNED

added QmeV1kwh3333bsnT6YRfdCRrSgUPngKmAhhTa4RrqYPbKT mydir/hello.txt
added QmRLrxQTdmLZNfDJxFQ9uFrgtj4s6cZU9GzTxCq2YLev24 mydir
pinned QmRLrxQTdmLZNfDJxFQ9uFrgtj4s6cZU9GzTxCq2YLev24 directly
hello world!
ok 8 - add directory with direct pin
System.err »
 13 B / 13 B  100.00%

 13 B / 13 B  100.00%

 13 B / 13 B  100.00%
9 - run gc and make sure directory contents are removed Success 0.181
System.out »
expecting success: 
  ipfs repo gc &&
  test_must_fail ipfs cat $FILE_UNPINNED

removed bafkreihp35x7qe7hn7g4eirzmb6dqnbw5z7x6kgko2ks4jzf5geqoirysy
removed bafkreid24aajgwghuonbhsnlzbkqglw3qomkgtsgl7yq2wintcklliuxqe
ok 9 - run gc and make sure directory contents are removed
System.err »
Error: block was not found locally (offline): ipld: could not find QmeV1kwh3333bsnT6YRfdCRrSgUPngKmAhhTa4RrqYPbKT
10 - add incomplete directory and make sure gc is okay Success 0.228
System.out »
expecting success: 
  ipfs files cp /ipfs/$DIR_PINNED /mydir &&
  ipfs repo gc &&
  test_must_fail ipfs cat $FILE_UNPINNED

removed bafkreid2apwqpa7jugr2mwvgfgoyqr2v3elwt6fdac6vez4xo73tw7tnmq
ok 10 - add incomplete directory and make sure gc is okay
System.err »
Error: block was not found locally (offline): ipld: could not find QmeV1kwh3333bsnT6YRfdCRrSgUPngKmAhhTa4RrqYPbKT
11 - add back directory contents and run gc Success 0.156
System.out »
expecting success: 
  ipfs add --pin=false mydir/hello.txt &&
  ipfs repo gc

added QmeV1kwh3333bsnT6YRfdCRrSgUPngKmAhhTa4RrqYPbKT hello.txt
removed bafkreid24aajgwghuonbhsnlzbkqglw3qomkgtsgl7yq2wintcklliuxqe
ok 11 - add back directory contents and run gc
System.err »
 13 B / 13 B  100.00%

 13 B / 13 B  100.00%
12 - make sure directory contents are not removed Success 0.085
System.out »
expecting success: 
  ipfs cat $FILE_UNPINNED

hello world!
ok 12 - make sure directory contents are not removed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - object not removed after gc
ok 5 - /hello.txt still accessible after gc
ok 6 - gc okay after adding incomplete node -- prep
ok 7 - gc okay after adding incomplete node
ok 8 - add directory with direct pin
ok 9 - run gc and make sure directory contents are removed
ok 10 - add incomplete directory and make sure gc is okay
ok 11 - add back directory contents and run gc
ok 12 - make sure directory contents are not removed

Back to top

TestCase t0260-sharding

Name Status Type Time(s)
1 - set up test data Success 0.180
System.out »
expecting success: 
  mkdir testdata
  for i in `seq 2000`
  do
    echo $i > testdata/file$i
  done

ok 1 - set up test data
2 - ipfs init succeeds Success 0.140
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.242
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.534
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0260-sharding.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0260-sharding.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0260-sharding.sh/mfs"
ok 4 - prepare config -- mounting
5 - force sharding off Success 0.082
System.out »
expecting success: 
ipfs config --json Import.UnixFSHAMTDirectorySizeThreshold "\"1G\""

ok 5 - force sharding off
6 - ipfs add on directory succeeds Success 0.680
System.out »
expecting success: 
    ipfs add -r -Q testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 6 - ipfs add on directory succeeds
7 - ipfs get on directory succeeds Success 0.546
System.out »
expecting success: 
    ipfs get -o testdata-out "$exphash" &&
    test_cmp testdata testdata-out
  
Saving file(s) to testdata-out
ok 7 - ipfs get on directory succeeds
System.err »
 0 B / 120.89 KiB    0.00%
 4.19 KiB / 120.89 KiB    3.46% 00m05s
 8.17 KiB / 120.89 KiB    6.76% 00m05s
 120.89 KiB / 120.89 KiB  100.00% 0s
8 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 8 - 'ipfs daemon' succeeds
9 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 9 - api file shows up
10 - set up address variables Success 0.022
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 10 - set up address variables
11 - get swarm addresses Success 0.068
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 11 - get swarm addresses
12 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 12 - set swarm address vars
13 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 13 - 'ipfs daemon' is ready
14 - ipfs add on directory succeeds Success 0.820
System.out »
expecting success: 
    ipfs add -r -Q testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 14 - ipfs add on directory succeeds
15 - ipfs get on directory succeeds Success 0.386
System.out »
expecting success: 
    ipfs get -o testdata-out "$exphash" &&
    test_cmp testdata testdata-out
  
Saving file(s) to testdata-out
ok 15 - ipfs get on directory succeeds
System.err »
 0 B / 120.89 KiB    0.00%
 7.44 KiB / 120.89 KiB    6.15% 00m03s
 120.89 KiB / 120.89 KiB  100.00% 0s
16 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 16 - 'ipfs daemon' is still running
17 - 'ipfs daemon' can be killed Success 0.254
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 17 - 'ipfs daemon' can be killed
18 - force sharding on Success 0.082
System.out »
expecting success: 
  ipfs config --json Import.UnixFSHAMTDirectorySizeThreshold "\"1B\""

ok 18 - force sharding on
19 - ipfs add on directory succeeds Success 0.733
System.out »
expecting success: 
    ipfs add -r -Q testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 19 - ipfs add on directory succeeds
20 - ipfs get on directory succeeds Success 0.553
System.out »
expecting success: 
    ipfs get -o testdata-out "$exphash" &&
    test_cmp testdata testdata-out
  
Saving file(s) to testdata-out
ok 20 - ipfs get on directory succeeds
System.err »
 0 B / 148.64 KiB    0.00%
 3.65 KiB / 148.64 KiB    2.45% 00m07s
 7.94 KiB / 148.64 KiB    5.34% 00m07s
 148.64 KiB / 148.64 KiB  100.00% 0s
21 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 21 - 'ipfs daemon' succeeds
22 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 22 - api file shows up
23 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 23 - set up address variables
24 - get swarm addresses Success 0.068
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 24 - get swarm addresses
25 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 25 - set swarm address vars
26 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 26 - 'ipfs daemon' is ready
27 - ipfs add on directory succeeds Success 1.160
System.out »
expecting success: 
    ipfs add -r -Q testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 27 - ipfs add on directory succeeds
28 - ipfs get on directory succeeds Success 0.368
System.out »
expecting success: 
    ipfs get -o testdata-out "$exphash" &&
    test_cmp testdata testdata-out
  
Saving file(s) to testdata-out
ok 28 - ipfs get on directory succeeds
System.err »
 0 B / 148.64 KiB    0.00%
 7.12 KiB / 148.64 KiB    4.79% 00m03s
 148.64 KiB / 148.64 KiB  100.00% 0s
29 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 29 - 'ipfs daemon' is still running
30 - 'ipfs daemon' can be killed Success 0.263
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 30 - 'ipfs daemon' can be killed
31 - sharded and unsharded output look the same Success 0.366
System.out »
expecting success: 
  ipfs ls "$SHARDED" | sort > sharded_out &&
  ipfs ls "$UNSHARDED" | sort > unsharded_out &&
  test_cmp sharded_out unsharded_out

ok 31 - sharded and unsharded output look the same
32 - ipfs cat error output the same Success 0.161
System.out »
expecting success: 
  test_expect_code 1 ipfs cat "$SHARDED" 2> sharded_err &&
  test_expect_code 1 ipfs cat "$UNSHARDED" 2> unsharded_err &&
  test_cmp sharded_err unsharded_err

ok 32 - ipfs cat error output the same
33 - 'ipfs ls --resolve-type=false --size=false' admits missing block Success 0.788
System.out »
expecting success: 
  ipfs ls "$SHARDED" | head -1 > first_file &&
  ipfs ls --size=false "$SHARDED" | sort > sharded_out_nosize &&
  read -r HASH _ NAME <first_file &&
  ipfs pin rm "$SHARDED" "$UNSHARDED" && # To allow us to remove the block
  ipfs block rm "$HASH" &&
  test_expect_code 1 ipfs cat "$SHARDED/$NAME" &&
  test_expect_code 1 ipfs ls "$SHARDED" &&
  ipfs ls --resolve-type=false --size=false "$SHARDED" | sort > missing_out &&
  test_cmp sharded_out_nosize missing_out

unpinned QmSCJD1KYLhVVHqBK3YyXuoEqHt7vggyJhzoFYbT8v1XYL
unpinned QmavrTrQG4VhoJmantURAYuw3bowq3E2WcvP36NRQDAC1N
removed QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
ok 33 - 'ipfs ls --resolve-type=false --size=false' admits missing block
System.err »
Error: block was not found locally (offline): ipld: could not find QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
Error: block was not found locally (offline): ipld: could not find QmdytmR4wULMd3SLo6ePF4s3WcRHWcpnJZ7bHhoj3QB13v
34 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 34 - 'ipfs daemon' succeeds
35 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 35 - api file shows up
36 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 36 - set up address variables
37 - get swarm addresses Success 0.073
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 37 - get swarm addresses
38 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 38 - set swarm address vars
39 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 39 - 'ipfs daemon' is ready
40 - gateway can resolve sharded dirs Success 0.018
System.out »
expecting success: 
  echo 100 > expected &&
  curl -sfo actual "http://127.0.0.1:$GWAY_PORT/ipfs/$SHARDED/file100" &&
  test_cmp expected actual

ok 40 - gateway can resolve sharded dirs
41 - 'ipfs resolve' can resolve sharded dirs Success 0.078
System.out »
expecting success: 
  echo /ipfs/QmZ3RfWk1u5LEGYLHA633B5TNJy3Du27K6Fny9wcxpowGS > expected &&
  ipfs resolve "/ipfs/$SHARDED/file100" > actual &&
  test_cmp expected actual

ok 41 - 'ipfs resolve' can resolve sharded dirs
42 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 42 - 'ipfs daemon' is still running
43 - 'ipfs daemon' can be killed Success 0.264
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 43 - 'ipfs daemon' can be killed
44 - ipfs add (CIDv1) on directory succeeds Success 0.611
System.out »
expecting success: 
    ipfs add -r -Q --cid-version=1 testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 44 - ipfs add (CIDv1) on directory succeeds
45 - can access a path under the dir Success 0.093
System.out »
expecting success: 
    ipfs cat "$exphash/file20" > file20_out &&
    test_cmp testdata/file20 file20_out
  
ok 45 - can access a path under the dir
46 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 46 - 'ipfs daemon' succeeds
47 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 47 - api file shows up
48 - set up address variables Success 0.034
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 48 - set up address variables
49 - get swarm addresses Success 0.086
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 49 - get swarm addresses
50 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 50 - set swarm address vars
51 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 51 - 'ipfs daemon' is ready
52 - ipfs add (CIDv1) on directory succeeds Success 0.893
System.out »
expecting success: 
    ipfs add -r -Q --cid-version=1 testdata > sharddir_out &&
    echo "$exphash" > sharddir_exp &&
    test_cmp sharddir_exp sharddir_out
  
ok 52 - ipfs add (CIDv1) on directory succeeds
53 - can access a path under the dir Success 0.079
System.out »
expecting success: 
    ipfs cat "$exphash/file20" > file20_out &&
    test_cmp testdata/file20 file20_out
  
ok 53 - can access a path under the dir
54 - 'ipfs daemon' is still running Success 0.006
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 54 - 'ipfs daemon' is still running
55 - 'ipfs daemon' can be killed Success 0.436
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 55 - 'ipfs daemon' can be killed
56 - ipfs add (CIDv1) on very large directory with sha3 succeeds Success 0.595
System.out »
expecting success: 
    ipfs add -r -Q --cid-version=1 --hash=sha3-256 --pin=false testdata > sharddir_out &&
    largeSHA3dir=$(cat sharddir_out)
  
ok 56 - ipfs add (CIDv1) on very large directory with sha3 succeeds
57 - delete intermediate node from DAG Success 0.119
System.out »
expecting success: 
    ipfs block rm "/ipld/$largeSHA3dir/Links/0/Hash"
  
removed bafybmiaokfqzpwu27bxdamharu5qo6vveasxofzpou7mbtvxn3o6bee2ta
ok 57 - delete intermediate node from DAG
58 - can list part of the directory Success 0.098
System.out »
expecting success: 
    ipfs ls "$largeSHA3dir" 2> ls_err_out
    echo "Error: failed to fetch all nodes" > exp_err_out &&
    cat ls_err_out &&
    test_cmp exp_err_out ls_err_out
  
Error: failed to fetch all nodes
ok 58 - can list part of the directory
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - set up test data
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - force sharding off
ok 6 - ipfs add on directory succeeds
ok 7 - ipfs get on directory succeeds
ok 8 - 'ipfs daemon' succeeds
ok 9 - api file shows up
ok 10 - set up address variables
ok 11 - get swarm addresses
ok 12 - set swarm address vars
ok 13 - 'ipfs daemon' is ready
ok 14 - ipfs add on directory succeeds
ok 15 - ipfs get on directory succeeds
ok 16 - 'ipfs daemon' is still running
ok 17 - 'ipfs daemon' can be killed
ok 18 - force sharding on
ok 19 - ipfs add on directory succeeds
ok 20 - ipfs get on directory succeeds
ok 21 - 'ipfs daemon' succeeds
ok 22 - api file shows up
ok 23 - set up address variables
ok 24 - get swarm addresses
ok 25 - set swarm address vars
ok 26 - 'ipfs daemon' is ready
ok 27 - ipfs add on directory succeeds
ok 28 - ipfs get on directory succeeds
ok 29 - 'ipfs daemon' is still running
ok 30 - 'ipfs daemon' can be killed
ok 31 - sharded and unsharded output look the same
ok 32 - ipfs cat error output the same
ok 33 - 'ipfs ls --resolve-type=false --size=false' admits missing block
ok 34 - 'ipfs daemon' succeeds
ok 35 - api file shows up
ok 36 - set up address variables
ok 37 - get swarm addresses
ok 38 - set swarm address vars
ok 39 - 'ipfs daemon' is ready
ok 40 - gateway can resolve sharded dirs
ok 41 - 'ipfs resolve' can resolve sharded dirs
ok 42 - 'ipfs daemon' is still running
ok 43 - 'ipfs daemon' can be killed
ok 44 - ipfs add (CIDv1) on directory succeeds
ok 45 - can access a path under the dir
ok 46 - 'ipfs daemon' succeeds
ok 47 - api file shows up
ok 48 - set up address variables
ok 49 - get swarm addresses
ok 50 - set swarm address vars
ok 51 - 'ipfs daemon' is ready
ok 52 - ipfs add (CIDv1) on directory succeeds
ok 53 - can access a path under the dir
ok 54 - 'ipfs daemon' is still running
ok 55 - 'ipfs daemon' can be killed
ok 56 - ipfs add (CIDv1) on very large directory with sha3 succeeds
ok 57 - delete intermediate node from DAG
ok 58 - can list part of the directory

Back to top

TestCase t0270-filestore

Name Status Type Time(s)
1 - create a dataset Success 0.170
System.out »
expecting success: 
  random-files -seed=483 -depth=3 -dirs=4 -files=6 -filesize=1000000 somedir > /dev/null

ok 1 - create a dataset
2 - clean up old node Success 0.011
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 2 - clean up old node
3 - ipfs init succeeds Success 0.108
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 3 - ipfs init succeeds
4 - disable telemetry Success 0.191
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 4 - disable telemetry
5 - prepare config -- mounting Success 0.500
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/mfs"
ok 5 - prepare config -- mounting
6 - nocopy add errors and has right message Success 0.099
System.out »
expecting success: 
    test_must_fail ipfs add --nocopy -r somedir 2> add_out &&
      grep "either the filestore or the urlstore must be enabled" add_out
  
Error: either the filestore or the urlstore must be enabled to use nocopy, see: https://github.com/ipfs/kubo/blob/master/docs/experimental-features.md#ipfs-filestore
ok 6 - nocopy add errors and has right message
7 - check repo size Success 0.012
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 7 - check repo size
8 - enable urlstore config setting Success 0.084
System.out »
expecting success: 
    ipfs config --json Experimental.UrlstoreEnabled true
  
ok 8 - enable urlstore config setting
9 - nocopy add errors and has right message when the urlstore is enabled Success 0.086
System.out »
expecting success: 
    test_must_fail ipfs add --nocopy -r somedir 2> add_out &&
      grep "filestore is not enabled" add_out
  

 256.00 KiB / 58.91 MiB    0.42% 00m03s
 343.31 KiB / 58.91 MiB    0.57% 00m02sError: filestore is not enabled, see https://git.io/vNItf
ok 9 - nocopy add errors and has right message when the urlstore is enabled
10 - check repo size Success 0.010
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 10 - check repo size
11 - enable filestore config setting Success 0.156
System.out »
expecting success: 
    ipfs config --json Experimental.UrlstoreEnabled true &&
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 11 - enable filestore config setting
12 - nocopy add succeeds Success 0.675
System.out »
expecting success: 
    HASH=$(ipfs add --raw-leaves --nocopy -r -Q somedir)
  
ok 12 - nocopy add succeeds
13 - nocopy add has right hash Success 0.005
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 13 - nocopy add has right hash
14 - check repo size Success 0.017
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 14 - check repo size
15 - normal add with fscache doesn't duplicate data Success 0.461
System.out »
expecting success: 
    ipfs add --raw-leaves --fscache -r -q somedir > /dev/null
  
ok 15 - normal add with fscache doesn't duplicate data
16 - check repo size Success 0.023
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 16 - check repo size
17 - normal add without fscache duplicates data Success 0.496
System.out »
expecting success: 
    ipfs add --raw-leaves -r -q somedir > /dev/null
  
ok 17 - normal add without fscache duplicates data
18 - check repo size Success 0.014
System.out »
expecting success: 
    test "$(get_repo_size)"  -gt "$expval" ||
      { echo should be above "$expval" && test_fsh get_repo_size; }
  
ok 18 - check repo size
19 - clean up old node Success 0.052
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 19 - clean up old node
20 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 20 - ipfs init succeeds
21 - disable telemetry Success 0.154
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 21 - disable telemetry
22 - prepare config -- mounting Success 0.469
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0270-filestore.sh/mfs"
ok 22 - prepare config -- mounting
23 - nocopy add errors and has right message Success 0.089
System.out »
expecting success: 
    test_must_fail ipfs add --nocopy -r somedir 2> add_out &&
      grep "either the filestore or the urlstore must be enabled" add_out
  
Error: either the filestore or the urlstore must be enabled to use nocopy, see: https://github.com/ipfs/kubo/blob/master/docs/experimental-features.md#ipfs-filestore
ok 23 - nocopy add errors and has right message
24 - check repo size Success 0.010
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 24 - check repo size
25 - enable urlstore config setting Success 0.071
System.out »
expecting success: 
    ipfs config --json Experimental.UrlstoreEnabled true
  
ok 25 - enable urlstore config setting
26 - nocopy add errors and has right message when the urlstore is enabled Success 0.090
System.out »
expecting success: 
    test_must_fail ipfs add --nocopy -r somedir 2> add_out &&
      grep "filestore is not enabled" add_out
  

 256.00 KiB / 58.91 MiB    0.42% 00m03s
 343.31 KiB / 58.91 MiB    0.57% 00m02sError: filestore is not enabled, see https://git.io/vNItf
ok 26 - nocopy add errors and has right message when the urlstore is enabled
27 - check repo size Success 0.011
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 27 - check repo size
28 - enable filestore config setting Success 0.164
System.out »
expecting success: 
    ipfs config --json Experimental.UrlstoreEnabled true &&
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 28 - enable filestore config setting
29 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 29 - 'ipfs daemon' succeeds
30 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 30 - api file shows up
31 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 31 - set up address variables
32 - get swarm addresses Success 0.059
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 32 - get swarm addresses
33 - set swarm address vars Success 0.013
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 33 - set swarm address vars
34 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 34 - 'ipfs daemon' is ready
35 - nocopy add succeeds Success 0.787
System.out »
expecting success: 
    HASH=$(ipfs add --raw-leaves --nocopy -r -Q somedir)
  
ok 35 - nocopy add succeeds
36 - nocopy add has right hash Success 0.005
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 36 - nocopy add has right hash
37 - check repo size Success 0.013
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 37 - check repo size
38 - normal add with fscache doesn't duplicate data Success 0.504
System.out »
expecting success: 
    ipfs add --raw-leaves --fscache -r -q somedir > /dev/null
  
ok 38 - normal add with fscache doesn't duplicate data
39 - check repo size Success 0.011
System.out »
expecting success: 
    test "$(get_repo_size)"  -lt "$expval" ||
      { echo should be below "$expval" && test_fsh get_repo_size; }
  
ok 39 - check repo size
40 - normal add without fscache duplicates data Success 0.516
System.out »
expecting success: 
    ipfs add --raw-leaves -r -q somedir > /dev/null
  
ok 40 - normal add without fscache duplicates data
41 - check repo size Success 0.024
System.out »
expecting success: 
    test "$(get_repo_size)"  -gt "$expval" ||
      { echo should be above "$expval" && test_fsh get_repo_size; }
  
ok 41 - check repo size
42 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 42 - 'ipfs daemon' is still running
43 - 'ipfs daemon' can be killed Success 0.254
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 43 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - create a dataset
ok 2 - clean up old node
ok 3 - ipfs init succeeds
ok 4 - disable telemetry
ok 5 - prepare config -- mounting
ok 6 - nocopy add errors and has right message
ok 7 - check repo size
ok 8 - enable urlstore config setting
ok 9 - nocopy add errors and has right message when the urlstore is enabled
ok 10 - check repo size
ok 11 - enable filestore config setting
ok 12 - nocopy add succeeds
ok 13 - nocopy add has right hash
ok 14 - check repo size
ok 15 - normal add with fscache doesn't duplicate data
ok 16 - check repo size
ok 17 - normal add without fscache duplicates data
ok 18 - check repo size
ok 19 - clean up old node
ok 20 - ipfs init succeeds
ok 21 - disable telemetry
ok 22 - prepare config -- mounting
ok 23 - nocopy add errors and has right message
ok 24 - check repo size
ok 25 - enable urlstore config setting
ok 26 - nocopy add errors and has right message when the urlstore is enabled
ok 27 - check repo size
ok 28 - enable filestore config setting
ok 29 - 'ipfs daemon' succeeds
ok 30 - api file shows up
ok 31 - set up address variables
ok 32 - get swarm addresses
ok 33 - set swarm address vars
ok 34 - 'ipfs daemon' is ready
ok 35 - nocopy add succeeds
ok 36 - nocopy add has right hash
ok 37 - check repo size
ok 38 - normal add with fscache doesn't duplicate data
ok 39 - check repo size
ok 40 - normal add without fscache duplicates data
ok 41 - check repo size
ok 42 - 'ipfs daemon' is still running
ok 43 - 'ipfs daemon' can be killed

Back to top

TestCase t0271-filestore-utils

Name Status Type Time(s)
1 - clean up old node Success 0.005
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 1 - clean up old node
2 - ipfs init succeeds Success 0.113
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.173
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.482
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/mfs"
ok 4 - prepare config -- mounting
5 - enable filestore config setting Success 0.076
System.out »
expecting success: 
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 5 - enable filestore config setting
6 - create a dataset Success 0.023
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 6 - create a dataset
System.err »
rm: cannot remove 'somedir': No such file or directory
7 - ipfs add nocopy add succeeds Success 0.103
System.out »
expecting success: 
    HASH=$($IPFS_CMD add --raw-leaves --nocopy -r -Q somedir)
  
ok 7 - ipfs add nocopy add succeeds
8 - nocopy add has right hash Success 0.004
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 8 - nocopy add has right hash
9 - 'ipfs filestore ls' output looks good' Success 0.091
System.out »
expecting success: 
    $IPFS_CMD filestore ls | sort > ls_actual &&
    test_cmp ls_expect_key_order ls_actual
  
ok 9 - 'ipfs filestore ls' output looks good'
10 - 'ipfs filestore ls --file-order' output looks good' Success 0.088
System.out »
expecting success: 
    $IPFS_CMD filestore ls --file-order > ls_actual &&
    test_cmp ls_expect_file_order ls_actual
  
ok 10 - 'ipfs filestore ls --file-order' output looks good'
11 - 'ipfs filestore ls HASH' works Success 0.081
System.out »
expecting success: 
    $IPFS_CMD filestore ls $FILE1_HASH > ls_actual &&
    grep -q somedir/file1 ls_actual
  
ok 11 - 'ipfs filestore ls HASH' works
12 - can retrieve multi-block file Success 0.089
System.out »
expecting success: 
    $IPFS_CMD cat $FILE3_HASH > file3.data &&
    test_cmp somedir/file3 file3.data
  
ok 12 - can retrieve multi-block file
13 - ipfs filestore verify' output looks good' Success 0.099
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 13 - ipfs filestore verify' output looks good'
14 - ipfs filestore verify --file-order' output looks good' Success 0.116
System.out »
expecting success: 
    $IPFS_CMD filestore verify --file-order > verify_actual
    test_cmp verify_expect_file_order verify_actual
  
ok 14 - ipfs filestore verify --file-order' output looks good'
15 - 'ipfs filestore verify HASH' works Success 0.105
System.out »
expecting success: 
    $IPFS_CMD filestore verify $FILE1_HASH > verify_actual &&
    grep -q somedir/file1 verify_actual
  
ok 15 - 'ipfs filestore verify HASH' works
16 - rename a file Success 0.006
System.out »
expecting success: 
    mv somedir/file1 somedir/file1.bk
  
ok 16 - rename a file
17 - can not retrieve block after backing file moved Success 0.115
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE1_HASH
  
ok 17 - can not retrieve block after backing file moved
System.err »
Error: open /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/somedir/file1: no such file or directory
18 - 'ipfs filestore verify' shows file as missing Success 0.096
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep no-file verify_actual | grep -q somedir/file1
  
ok 18 - 'ipfs filestore verify' shows file as missing
19 - move file back Success 0.005
System.out »
expecting success: 
    mv somedir/file1.bk somedir/file1
  
ok 19 - move file back
20 - block okay now Success 0.084
System.out »
expecting success: 
    $IPFS_CMD cat $FILE1_HASH > file1.data &&
    test_cmp somedir/file1 file1.data
  
ok 20 - block okay now
21 - change first bit of file Success 0.005
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 21 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 4.5263e-05 s, 22.6 MB/s
22 - can not retrieve block after backing file changed Success 0.090
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE3_HASH
  
ok 22 - can not retrieve block after backing file changed
System.err »
Error: failed to fetch all nodes
23 - 'ipfs filestore verify' shows file as changed Success 0.102
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep changed verify_actual | grep -q somedir/file3
  
ok 23 - 'ipfs filestore verify' shows file as changed
24 - create a dataset Success 0.019
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 24 - create a dataset
25 - ipfs filestore verify' output looks good' Success 0.088
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 25 - ipfs filestore verify' output looks good'
26 - 'ipfs filestore dups' Success 0.174
System.out »
expecting success: 
    $IPFS_CMD add --raw-leaves somedir/file1 &&
    $IPFS_CMD filestore dups > dups_actual &&
    echo "$FILE1_HASH" > dups_expect
    test_cmp dups_expect dups_actual
  
added bafkreidx7ivgllulfkzyoo4oa7dfrg4mjmudg2qgdivoooj4s7lh3m5nqu file1
ok 26 - 'ipfs filestore dups'
System.err »
 1000 B / 1000 B  100.00%

 1000 B / 1000 B  100.00%
27 - ipfs filestore verify' output looks good' Success 0.081
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 27 - ipfs filestore verify' output looks good'
28 - change first bit of file Success 0.005
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 28 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 4.0588e-05 s, 25.2 MB/s
29 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed Success 0.097
System.out »
expecting success: 
    $IPFS_CMD filestore verify --remove-bad-blocks > verify_rm_actual &&
    test_cmp verify_rm_expect verify_rm_actual
  
ok 29 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed
30 - 'ipfs filestore verify' shows only files that were not removed Success 0.092
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_after &&
    test_cmp verify_after_rm_expect verify_after
  
ok 30 - 'ipfs filestore verify' shows only files that were not removed
31 - create a dataset Success 0.026
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 31 - create a dataset
32 - clean up old node Success 0.006
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 32 - clean up old node
33 - ipfs init succeeds Success 0.092
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 33 - ipfs init succeeds
34 - disable telemetry Success 0.154
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 34 - disable telemetry
35 - prepare config -- mounting Success 0.486
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/mfs"
ok 35 - prepare config -- mounting
36 - enable filestore config setting Success 0.078
System.out »
expecting success: 
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 36 - enable filestore config setting
37 - create a dataset Success 0.022
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 37 - create a dataset
38 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 38 - 'ipfs daemon' succeeds
39 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 39 - api file shows up
40 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 40 - set up address variables
41 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 41 - 'ipfs daemon' is ready
42 - ipfs add nocopy add succeeds Success 0.085
System.out »
expecting success: 
    HASH=$($IPFS_CMD add --raw-leaves --nocopy -r -Q somedir)
  
ok 42 - ipfs add nocopy add succeeds
43 - nocopy add has right hash Success 0.004
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 43 - nocopy add has right hash
44 - 'ipfs filestore ls' output looks good' Success 0.074
System.out »
expecting success: 
    $IPFS_CMD filestore ls | sort > ls_actual &&
    test_cmp ls_expect_key_order ls_actual
  
ok 44 - 'ipfs filestore ls' output looks good'
45 - 'ipfs filestore ls --file-order' output looks good' Success 0.070
System.out »
expecting success: 
    $IPFS_CMD filestore ls --file-order > ls_actual &&
    test_cmp ls_expect_file_order ls_actual
  
ok 45 - 'ipfs filestore ls --file-order' output looks good'
46 - 'ipfs filestore ls HASH' works Success 0.071
System.out »
expecting success: 
    $IPFS_CMD filestore ls $FILE1_HASH > ls_actual &&
    grep -q somedir/file1 ls_actual
  
ok 46 - 'ipfs filestore ls HASH' works
47 - can retrieve multi-block file Success 0.084
System.out »
expecting success: 
    $IPFS_CMD cat $FILE3_HASH > file3.data &&
    test_cmp somedir/file3 file3.data
  
ok 47 - can retrieve multi-block file
48 - ipfs filestore verify' output looks good' Success 0.074
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 48 - ipfs filestore verify' output looks good'
49 - ipfs filestore verify --file-order' output looks good' Success 0.105
System.out »
expecting success: 
    $IPFS_CMD filestore verify --file-order > verify_actual
    test_cmp verify_expect_file_order verify_actual
  
ok 49 - ipfs filestore verify --file-order' output looks good'
50 - 'ipfs filestore verify HASH' works Success 0.086
System.out »
expecting success: 
    $IPFS_CMD filestore verify $FILE1_HASH > verify_actual &&
    grep -q somedir/file1 verify_actual
  
ok 50 - 'ipfs filestore verify HASH' works
51 - rename a file Success 0.006
System.out »
expecting success: 
    mv somedir/file1 somedir/file1.bk
  
ok 51 - rename a file
52 - can not retrieve block after backing file moved Success 0.096
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE1_HASH
  
ok 52 - can not retrieve block after backing file moved
System.err »
Error: open /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/somedir/file1: no such file or directory
53 - 'ipfs filestore verify' shows file as missing Success 0.119
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep no-file verify_actual | grep -q somedir/file1
  
ok 53 - 'ipfs filestore verify' shows file as missing
54 - move file back Success 0.005
System.out »
expecting success: 
    mv somedir/file1.bk somedir/file1
  
ok 54 - move file back
55 - block okay now Success 0.082
System.out »
expecting success: 
    $IPFS_CMD cat $FILE1_HASH > file1.data &&
    test_cmp somedir/file1 file1.data
  
ok 55 - block okay now
56 - change first bit of file Success 0.005
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 56 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 5.086e-05 s, 20.1 MB/s
57 - can not retrieve block after backing file changed Success 0.067
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE3_HASH
  
ok 57 - can not retrieve block after backing file changed
System.err »
Error: failed to fetch all nodes
58 - 'ipfs filestore verify' shows file as changed Success 0.079
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep changed verify_actual | grep -q somedir/file3
  
ok 58 - 'ipfs filestore verify' shows file as changed
59 - create a dataset Success 0.024
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 59 - create a dataset
60 - ipfs filestore verify' output looks good' Success 0.071
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 60 - ipfs filestore verify' output looks good'
61 - 'ipfs filestore dups' Success 0.137
System.out »
expecting success: 
    $IPFS_CMD add --raw-leaves somedir/file1 &&
    $IPFS_CMD filestore dups > dups_actual &&
    echo "$FILE1_HASH" > dups_expect
    test_cmp dups_expect dups_actual
  
added bafkreidx7ivgllulfkzyoo4oa7dfrg4mjmudg2qgdivoooj4s7lh3m5nqu file1
ok 61 - 'ipfs filestore dups'
System.err »
 1000 B / ? 

 1000 B / 1000 B  100.00%
62 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 62 - 'ipfs daemon' is still running
63 - 'ipfs daemon' can be killed Success 0.255
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 63 - 'ipfs daemon' can be killed
64 - ipfs filestore verify' output looks good' Success 0.092
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 64 - ipfs filestore verify' output looks good'
65 - change first bit of file Success 0.006
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 65 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 4.9853e-05 s, 20.5 MB/s
66 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed Success 0.083
System.out »
expecting success: 
    $IPFS_CMD filestore verify --remove-bad-blocks > verify_rm_actual &&
    test_cmp verify_rm_expect verify_rm_actual
  
ok 66 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed
67 - 'ipfs filestore verify' shows only files that were not removed Success 0.082
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_after &&
    test_cmp verify_after_rm_expect verify_after
  
ok 67 - 'ipfs filestore verify' shows only files that were not removed
68 - create a dataset Success 0.021
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 68 - create a dataset
69 - clean up old node Success 0.006
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 69 - clean up old node
70 - ipfs init succeeds Success 0.094
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 70 - ipfs init succeeds
71 - disable telemetry Success 0.159
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 71 - disable telemetry
72 - prepare config -- mounting Success 0.451
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/mfs"
ok 72 - prepare config -- mounting
73 - enable filestore config setting Success 0.077
System.out »
expecting success: 
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 73 - enable filestore config setting
74 - create a dataset Success 0.022
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 74 - create a dataset
75 - ipfs --cid-base=base32 add nocopy add succeeds Success 0.110
System.out »
expecting success: 
    HASH=$($IPFS_CMD add --raw-leaves --nocopy -r -Q somedir)
  
ok 75 - ipfs --cid-base=base32 add nocopy add succeeds
76 - nocopy add has right hash Success 0.004
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 76 - nocopy add has right hash
77 - 'ipfs --cid-base=base32 filestore ls' output looks good' Success 0.081
System.out »
expecting success: 
    $IPFS_CMD filestore ls | sort > ls_actual &&
    test_cmp ls_expect_key_order ls_actual
  
ok 77 - 'ipfs --cid-base=base32 filestore ls' output looks good'
78 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good' Success 0.086
System.out »
expecting success: 
    $IPFS_CMD filestore ls --file-order > ls_actual &&
    test_cmp ls_expect_file_order ls_actual
  
ok 78 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good'
79 - 'ipfs --cid-base=base32 filestore ls HASH' works Success 0.084
System.out »
expecting success: 
    $IPFS_CMD filestore ls $FILE1_HASH > ls_actual &&
    grep -q somedir/file1 ls_actual
  
ok 79 - 'ipfs --cid-base=base32 filestore ls HASH' works
80 - can retrieve multi-block file Success 0.102
System.out »
expecting success: 
    $IPFS_CMD cat $FILE3_HASH > file3.data &&
    test_cmp somedir/file3 file3.data
  
ok 80 - can retrieve multi-block file
81 - ipfs --cid-base=base32 filestore verify' output looks good' Success 0.085
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 81 - ipfs --cid-base=base32 filestore verify' output looks good'
82 - ipfs --cid-base=base32 filestore verify --file-order' output looks good' Success 0.093
System.out »
expecting success: 
    $IPFS_CMD filestore verify --file-order > verify_actual
    test_cmp verify_expect_file_order verify_actual
  
ok 82 - ipfs --cid-base=base32 filestore verify --file-order' output looks good'
83 - 'ipfs --cid-base=base32 filestore verify HASH' works Success 0.080
System.out »
expecting success: 
    $IPFS_CMD filestore verify $FILE1_HASH > verify_actual &&
    grep -q somedir/file1 verify_actual
  
ok 83 - 'ipfs --cid-base=base32 filestore verify HASH' works
84 - rename a file Success 0.006
System.out »
expecting success: 
    mv somedir/file1 somedir/file1.bk
  
ok 84 - rename a file
85 - can not retrieve block after backing file moved Success 0.090
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE1_HASH
  
ok 85 - can not retrieve block after backing file moved
System.err »
Error: open /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/somedir/file1: no such file or directory
86 - 'ipfs --cid-base=base32 filestore verify' shows file as missing Success 0.093
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep no-file verify_actual | grep -q somedir/file1
  
ok 86 - 'ipfs --cid-base=base32 filestore verify' shows file as missing
87 - move file back Success 0.006
System.out »
expecting success: 
    mv somedir/file1.bk somedir/file1
  
ok 87 - move file back
88 - block okay now Success 0.086
System.out »
expecting success: 
    $IPFS_CMD cat $FILE1_HASH > file1.data &&
    test_cmp somedir/file1 file1.data
  
ok 88 - block okay now
89 - change first bit of file Success 0.006
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 89 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 5.561e-05 s, 18.4 MB/s
90 - can not retrieve block after backing file changed Success 0.089
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE3_HASH
  
ok 90 - can not retrieve block after backing file changed
System.err »
Error: failed to fetch all nodes
91 - 'ipfs --cid-base=base32 filestore verify' shows file as changed Success 0.094
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep changed verify_actual | grep -q somedir/file3
  
ok 91 - 'ipfs --cid-base=base32 filestore verify' shows file as changed
92 - create a dataset Success 0.022
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 92 - create a dataset
93 - ipfs --cid-base=base32 filestore verify' output looks good' Success 0.107
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 93 - ipfs --cid-base=base32 filestore verify' output looks good'
94 - 'ipfs --cid-base=base32 filestore dups' Success 0.261
System.out »
expecting success: 
    $IPFS_CMD add --raw-leaves somedir/file1 &&
    $IPFS_CMD filestore dups > dups_actual &&
    echo "$FILE1_HASH" > dups_expect
    test_cmp dups_expect dups_actual
  
added bafkreidx7ivgllulfkzyoo4oa7dfrg4mjmudg2qgdivoooj4s7lh3m5nqu file1
ok 94 - 'ipfs --cid-base=base32 filestore dups'
System.err »
 1000 B / 1000 B  100.00%

 1000 B / 1000 B  100.00%
95 - ipfs --cid-base=base32 filestore verify' output looks good' Success 0.100
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 95 - ipfs --cid-base=base32 filestore verify' output looks good'
96 - change first bit of file Success 0.005
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 96 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 4.1408e-05 s, 24.7 MB/s
97 - 'ipfs --cid-base=base32 filestore verify --remove-bad-blocks' shows changed file removed Success 0.088
System.out »
expecting success: 
    $IPFS_CMD filestore verify --remove-bad-blocks > verify_rm_actual &&
    test_cmp verify_rm_expect verify_rm_actual
  
ok 97 - 'ipfs --cid-base=base32 filestore verify --remove-bad-blocks' shows changed file removed
98 - 'ipfs --cid-base=base32 filestore verify' shows only files that were not removed Success 0.102
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_after &&
    test_cmp verify_after_rm_expect verify_after
  
ok 98 - 'ipfs --cid-base=base32 filestore verify' shows only files that were not removed
99 - create a dataset Success 0.026
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 99 - create a dataset
100 - clean up old node Success 0.008
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" mountdir ipfs ipns mfs
  
ok 100 - clean up old node
101 - ipfs init succeeds Success 0.102
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 101 - ipfs init succeeds
102 - disable telemetry Success 0.247
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 102 - disable telemetry
103 - prepare config -- mounting Success 0.682
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/mfs"
ok 103 - prepare config -- mounting
104 - enable filestore config setting Success 0.085
System.out »
expecting success: 
    ipfs config --json Experimental.FilestoreEnabled true
  
ok 104 - enable filestore config setting
105 - create a dataset Success 0.027
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 105 - create a dataset
106 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 106 - 'ipfs daemon' succeeds
107 - api file shows up Success 0.207
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 107 - api file shows up
108 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 108 - set up address variables
109 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 109 - 'ipfs daemon' is ready
110 - ipfs --cid-base=base32 add nocopy add succeeds Success 0.099
System.out »
expecting success: 
    HASH=$($IPFS_CMD add --raw-leaves --nocopy -r -Q somedir)
  
ok 110 - ipfs --cid-base=base32 add nocopy add succeeds
111 - nocopy add has right hash Success 0.005
System.out »
expecting success: 
    test "$HASH" = "$EXPHASH"
  
ok 111 - nocopy add has right hash
112 - 'ipfs --cid-base=base32 filestore ls' output looks good' Success 0.073
System.out »
expecting success: 
    $IPFS_CMD filestore ls | sort > ls_actual &&
    test_cmp ls_expect_key_order ls_actual
  
ok 112 - 'ipfs --cid-base=base32 filestore ls' output looks good'
113 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good' Success 0.073
System.out »
expecting success: 
    $IPFS_CMD filestore ls --file-order > ls_actual &&
    test_cmp ls_expect_file_order ls_actual
  
ok 113 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good'
114 - 'ipfs --cid-base=base32 filestore ls HASH' works Success 0.064
System.out »
expecting success: 
    $IPFS_CMD filestore ls $FILE1_HASH > ls_actual &&
    grep -q somedir/file1 ls_actual
  
ok 114 - 'ipfs --cid-base=base32 filestore ls HASH' works
115 - can retrieve multi-block file Success 0.082
System.out »
expecting success: 
    $IPFS_CMD cat $FILE3_HASH > file3.data &&
    test_cmp somedir/file3 file3.data
  
ok 115 - can retrieve multi-block file
116 - ipfs --cid-base=base32 filestore verify' output looks good' Success 0.090
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 116 - ipfs --cid-base=base32 filestore verify' output looks good'
117 - ipfs --cid-base=base32 filestore verify --file-order' output looks good' Success 0.091
System.out »
expecting success: 
    $IPFS_CMD filestore verify --file-order > verify_actual
    test_cmp verify_expect_file_order verify_actual
  
ok 117 - ipfs --cid-base=base32 filestore verify --file-order' output looks good'
118 - 'ipfs --cid-base=base32 filestore verify HASH' works Success 0.071
System.out »
expecting success: 
    $IPFS_CMD filestore verify $FILE1_HASH > verify_actual &&
    grep -q somedir/file1 verify_actual
  
ok 118 - 'ipfs --cid-base=base32 filestore verify HASH' works
119 - rename a file Success 0.005
System.out »
expecting success: 
    mv somedir/file1 somedir/file1.bk
  
ok 119 - rename a file
120 - can not retrieve block after backing file moved Success 0.069
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE1_HASH
  
ok 120 - can not retrieve block after backing file moved
System.err »
Error: open /home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0271-filestore-utils.sh/somedir/file1: no such file or directory
121 - 'ipfs --cid-base=base32 filestore verify' shows file as missing Success 0.120
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep no-file verify_actual | grep -q somedir/file1
  
ok 121 - 'ipfs --cid-base=base32 filestore verify' shows file as missing
122 - move file back Success 0.010
System.out »
expecting success: 
    mv somedir/file1.bk somedir/file1
  
ok 122 - move file back
123 - block okay now Success 0.103
System.out »
expecting success: 
    $IPFS_CMD cat $FILE1_HASH > file1.data &&
    test_cmp somedir/file1 file1.data
  
ok 123 - block okay now
124 - change first bit of file Success 0.007
System.out »
expecting success: 
    dd if=/dev/zero of=somedir/file3 bs=1024 count=1
  
ok 124 - change first bit of file
System.err »
1+0 records in
1+0 records out
1024 bytes (1.0 kB, 1.0 KiB) copied, 6.5433e-05 s, 15.6 MB/s
125 - can not retrieve block after backing file changed Success 0.091
System.out »
expecting success: 
    test_must_fail $IPFS_CMD cat $FILE3_HASH
  
ok 125 - can not retrieve block after backing file changed
System.err »
Error: failed to fetch all nodes
126 - 'ipfs --cid-base=base32 filestore verify' shows file as changed Success 0.149
System.out »
expecting success: 
    $IPFS_CMD filestore verify > verify_actual &&
    grep changed verify_actual | grep -q somedir/file3
  
ok 126 - 'ipfs --cid-base=base32 filestore verify' shows file as changed
127 - create a dataset Success 0.023
System.out »
expecting success: 
    rm -r somedir
    mkdir somedir &&
    random-data -size=1000     -seed=1 > somedir/file1 &&
    random-data -size=10000    -seed=2 > somedir/file2 &&
    random-data -size=1000000  -seed=3 > somedir/file3
  
ok 127 - create a dataset
128 - ipfs --cid-base=base32 filestore verify' output looks good' Success 0.098
System.out »
expecting success: 
    $IPFS_CMD filestore verify | LC_ALL=C sort > verify_actual
    test_cmp verify_expect_key_order verify_actual
  
ok 128 - ipfs --cid-base=base32 filestore verify' output looks good'
129 - 'ipfs --cid-base=base32 filestore dups' Success 0.230
System.out »
expecting success: 
    $IPFS_CMD add --raw-leaves somedir/file1 &&
    $IPFS_CMD filestore dups > dups_actual &&
    echo "$FILE1_HASH" > dups_expect
    test_cmp dups_expect dups_actual
  
added bafkreidx7ivgllulfkzyoo4oa7dfrg4mjmudg2qgdivoooj4s7lh3m5nqu file1
ok 129 - 'ipfs --cid-base=base32 filestore dups'
System.err »
 1000 B / ? 

 1000 B / 1000 B  100.00%
130 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 130 - 'ipfs daemon' is still running
131 - 'ipfs daemon' can be killed Success 0.279
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 131 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - clean up old node
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - enable filestore config setting
ok 6 - create a dataset
ok 7 - ipfs add nocopy add succeeds
ok 8 - nocopy add has right hash
ok 9 - 'ipfs filestore ls' output looks good'
ok 10 - 'ipfs filestore ls --file-order' output looks good'
ok 11 - 'ipfs filestore ls HASH' works
ok 12 - can retrieve multi-block file
ok 13 - ipfs filestore verify' output looks good'
ok 14 - ipfs filestore verify --file-order' output looks good'
ok 15 - 'ipfs filestore verify HASH' works
ok 16 - rename a file
ok 17 - can not retrieve block after backing file moved
ok 18 - 'ipfs filestore verify' shows file as missing
ok 19 - move file back
ok 20 - block okay now
ok 21 - change first bit of file
ok 22 - can not retrieve block after backing file changed
ok 23 - 'ipfs filestore verify' shows file as changed
ok 24 - create a dataset
ok 25 - ipfs filestore verify' output looks good'
ok 26 - 'ipfs filestore dups'
ok 27 - ipfs filestore verify' output looks good'
ok 28 - change first bit of file
ok 29 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed
ok 30 - 'ipfs filestore verify' shows only files that were not removed
ok 31 - create a dataset
ok 32 - clean up old node
ok 33 - ipfs init succeeds
ok 34 - disable telemetry
ok 35 - prepare config -- mounting
ok 36 - enable filestore config setting
ok 37 - create a dataset
ok 38 - 'ipfs daemon' succeeds
ok 39 - api file shows up
ok 40 - set up address variables
ok 41 - 'ipfs daemon' is ready
ok 42 - ipfs add nocopy add succeeds
ok 43 - nocopy add has right hash
ok 44 - 'ipfs filestore ls' output looks good'
ok 45 - 'ipfs filestore ls --file-order' output looks good'
ok 46 - 'ipfs filestore ls HASH' works
ok 47 - can retrieve multi-block file
ok 48 - ipfs filestore verify' output looks good'
ok 49 - ipfs filestore verify --file-order' output looks good'
ok 50 - 'ipfs filestore verify HASH' works
ok 51 - rename a file
ok 52 - can not retrieve block after backing file moved
ok 53 - 'ipfs filestore verify' shows file as missing
ok 54 - move file back
ok 55 - block okay now
ok 56 - change first bit of file
ok 57 - can not retrieve block after backing file changed
ok 58 - 'ipfs filestore verify' shows file as changed
ok 59 - create a dataset
ok 60 - ipfs filestore verify' output looks good'
ok 61 - 'ipfs filestore dups'
ok 62 - 'ipfs daemon' is still running
ok 63 - 'ipfs daemon' can be killed
ok 64 - ipfs filestore verify' output looks good'
ok 65 - change first bit of file
ok 66 - 'ipfs filestore verify --remove-bad-blocks' shows changed file removed
ok 67 - 'ipfs filestore verify' shows only files that were not removed
ok 68 - create a dataset
ok 69 - clean up old node
ok 70 - ipfs init succeeds
ok 71 - disable telemetry
ok 72 - prepare config -- mounting
ok 73 - enable filestore config setting
ok 74 - create a dataset
ok 75 - ipfs --cid-base=base32 add nocopy add succeeds
ok 76 - nocopy add has right hash
ok 77 - 'ipfs --cid-base=base32 filestore ls' output looks good'
ok 78 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good'
ok 79 - 'ipfs --cid-base=base32 filestore ls HASH' works
ok 80 - can retrieve multi-block file
ok 81 - ipfs --cid-base=base32 filestore verify' output looks good'
ok 82 - ipfs --cid-base=base32 filestore verify --file-order' output looks good'
ok 83 - 'ipfs --cid-base=base32 filestore verify HASH' works
ok 84 - rename a file
ok 85 - can not retrieve block after backing file moved
ok 86 - 'ipfs --cid-base=base32 filestore verify' shows file as missing
ok 87 - move file back
ok 88 - block okay now
ok 89 - change first bit of file
ok 90 - can not retrieve block after backing file changed
ok 91 - 'ipfs --cid-base=base32 filestore verify' shows file as changed
ok 92 - create a dataset
ok 93 - ipfs --cid-base=base32 filestore verify' output looks good'
ok 94 - 'ipfs --cid-base=base32 filestore dups'
ok 95 - ipfs --cid-base=base32 filestore verify' output looks good'
ok 96 - change first bit of file
ok 97 - 'ipfs --cid-base=base32 filestore verify --remove-bad-blocks' shows changed file removed
ok 98 - 'ipfs --cid-base=base32 filestore verify' shows only files that were not removed
ok 99 - create a dataset
ok 100 - clean up old node
ok 101 - ipfs init succeeds
ok 102 - disable telemetry
ok 103 - prepare config -- mounting
ok 104 - enable filestore config setting
ok 105 - create a dataset
ok 106 - 'ipfs daemon' succeeds
ok 107 - api file shows up
ok 108 - set up address variables
ok 109 - 'ipfs daemon' is ready
ok 110 - ipfs --cid-base=base32 add nocopy add succeeds
ok 111 - nocopy add has right hash
ok 112 - 'ipfs --cid-base=base32 filestore ls' output looks good'
ok 113 - 'ipfs --cid-base=base32 filestore ls --file-order' output looks good'
ok 114 - 'ipfs --cid-base=base32 filestore ls HASH' works
ok 115 - can retrieve multi-block file
ok 116 - ipfs --cid-base=base32 filestore verify' output looks good'
ok 117 - ipfs --cid-base=base32 filestore verify --file-order' output looks good'
ok 118 - 'ipfs --cid-base=base32 filestore verify HASH' works
ok 119 - rename a file
ok 120 - can not retrieve block after backing file moved
ok 121 - 'ipfs --cid-base=base32 filestore verify' shows file as missing
ok 122 - move file back
ok 123 - block okay now
ok 124 - change first bit of file
ok 125 - can not retrieve block after backing file changed
ok 126 - 'ipfs --cid-base=base32 filestore verify' shows file as changed
ok 127 - create a dataset
ok 128 - ipfs --cid-base=base32 filestore verify' output looks good'
ok 129 - 'ipfs --cid-base=base32 filestore dups'
ok 130 - 'ipfs daemon' is still running
ok 131 - 'ipfs daemon' can be killed

Back to top

TestCase t0272-urlstore

Name Status Type Time(s)
1 - create some random files Success 0.135
System.out »
expecting success: 
  random-data -size=2222     -seed=7 > file1 &&
  random-data -size=500000   -seed=7 > file2 &&
  random-data -size=50000000 -seed=7 > file3

ok 1 - create some random files
2 - ipfs init succeeds Success 0.115
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.142
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.479
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0272-urlstore.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0272-urlstore.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0272-urlstore.sh/mfs"
ok 4 - prepare config -- mounting
5 - add files using trickle dag format without raw leaves Success 0.543
System.out »
expecting success: 
    HASH1a=$(ipfs add -q --trickle --raw-leaves=false file1) &&
    HASH2a=$(ipfs add -q --trickle --raw-leaves=false file2) &&
    HASH3a=$(ipfs add -q --trickle --raw-leaves=false file3)
  
ok 5 - add files using trickle dag format without raw leaves
6 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 6 - 'ipfs daemon' succeeds
7 - api file shows up Success 0.210
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 7 - api file shows up
8 - set up address variables Success 0.034
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 8 - set up address variables
9 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - make sure files can be retrieved via the gateway Success 0.131
System.out »
expecting success: 
    curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a -o file1.actual &&
    test_cmp file1 file1.actual &&
    curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a -o file2.actual &&
    test_cmp file2 file2.actual &&
    curl http://127.0.0.1:$GWAY_PORT/ipfs/$HASH3a -o file3.actual &&
    test_cmp file3 file3.actual 
  
ok 10 - make sure files can be retrieved via the gateway
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  2222  100  2222    0     0   722k      0 --:--:-- --:--:-- --:--:-- 1084k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  488k  100  488k    0     0   233M      0 --:--:-- --:--:-- --:--:--  238M
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 47.6M  100 47.6M    0     0   722M      0 --:--:-- --:--:-- --:--:--  733M
11 - add files without enabling url store using add -q --nocopy --cid-version=1 Success 0.135
System.out »
expecting success: 
    test_must_fail ipfs $ADD_CMD http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a &&
    test_must_fail ipfs $ADD_CMD http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a
  
ok 11 - add files without enabling url store using add -q --nocopy --cid-version=1
System.err »
Error: either the filestore or the urlstore must be enabled to use nocopy, see: https://github.com/ipfs/kubo/blob/master/docs/experimental-features.md#ipfs-filestore
Error: either the filestore or the urlstore must be enabled to use nocopy, see: https://github.com/ipfs/kubo/blob/master/docs/experimental-features.md#ipfs-filestore
12 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 12 - 'ipfs daemon' is still running
13 - 'ipfs daemon' can be killed Success 0.262
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 13 - 'ipfs daemon' can be killed
14 - enable urlstore Success 0.084
System.out »
expecting success: 
    ipfs config --json Experimental.UrlstoreEnabled true
  
ok 14 - enable urlstore
15 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 15 - 'ipfs daemon' succeeds
16 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 16 - api file shows up
17 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 17 - set up address variables
18 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 18 - 'ipfs daemon' is ready
19 - add files using gateway address via url store using add -q --nocopy --cid-version=1 Success 0.161
System.out »
expecting success: 
    HASH1=$(ipfs $ADD_CMD --pin=false http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a) &&
    HASH2=$(ipfs $ADD_CMD http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a)
  
ok 19 - add files using gateway address via url store using add -q --nocopy --cid-version=1
20 - make sure hashes are different Success 0.005
System.out »
expecting success: 
    test $HASH1a != $HASH1 &&
    test $HASH2a != $HASH2
  
ok 20 - make sure hashes are different
21 - get files via urlstore Success 0.130
System.out »
expecting success: 
    rm -f file1.actual file2.actual &&
    ipfs get $HASH1 -o file1.actual &&
    test_cmp file1 file1.actual &&
    ipfs get $HASH2 -o file2.actual &&
    test_cmp file2 file2.actual
  
Saving file(s) to file1.actual
Saving file(s) to file2.actual
ok 21 - get files via urlstore
System.err »
 0 B / 2.17 KiB    0.00%
 2.17 KiB / 2.17 KiB  100.00% 0s

 0 B / 488.28 KiB    0.00%
 488.28 KiB / 488.28 KiB  100.00% 0s
22 - ipfs filestore ls works with urls Success 0.079
System.out »
expecting success: 
    ipfs filestore ls | sort > ls_actual &&
    test_cmp ls_expect ls_actual
  
ok 22 - ipfs filestore ls works with urls
23 - ipfs filestore verify works with urls Success 0.079
System.out »
expecting success: 
    ipfs filestore verify | sort > verify_actual &&
    test_cmp verify_expect verify_actual
  
ok 23 - ipfs filestore verify works with urls
24 - garbage collect file1 from the urlstore Success 0.101
System.out »
expecting success: 
    ipfs repo gc > /dev/null
  
ok 24 - garbage collect file1 from the urlstore
25 - can no longer retrieve file1 from urlstore Success 0.068
System.out »
expecting success: 
    rm -f file1.actual &&
    test_must_fail ipfs get $HASH1 -o file1.actual
  
ok 25 - can no longer retrieve file1 from urlstore
System.err »
Error: block was not found locally (offline): ipld: could not find bafkreiconmdoujderxi757nf4wjpo4ukbhlo6mmxs6pg3yl53ln3ykldvi
26 - can still retrieve file2 from urlstore Success 0.071
System.out »
expecting success: 
    rm -f file2.actual &&
    ipfs get $HASH2 -o file2.actual &&
    test_cmp file2 file2.actual
  
Saving file(s) to file2.actual
ok 26 - can still retrieve file2 from urlstore
System.err »
 0 B / 488.28 KiB    0.00%
 488.28 KiB / 488.28 KiB  100.00% 0s
27 - remove original hashes from local gateway Success 0.162
System.out »
expecting success: 
    ipfs pin rm $HASH1a $HASH2a &&
    ipfs repo gc > /dev/null
  
unpinned QmUNEBSK2uPLSZU3Dj6XbSHjdGze4huWxESx2R4Ef1cKRW
unpinned QmTgZc5bhTHUcqGN8rRP9oTJBv1UeJVWufPMPiUfbP9Ghs
ok 27 - remove original hashes from local gateway
28 - gateway no longer has files Success 0.019
System.out »
expecting success: 
    test_must_fail curl -f http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a -o file1.actual
    test_must_fail curl -f http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a -o file2.actual
  
ok 28 - gateway no longer has files
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0   260    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0   260    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404
29 - ipfs filestore verify is correct Success 0.065
System.out »
expecting success: 
    ipfs filestore verify | sort > verify_actual_2 &&
    test_cmp verify_expect_2 verify_actual_2
  
ok 29 - ipfs filestore verify is correct
30 - files cannot be retrieved via the urlstore Success 0.137
System.out »
expecting success: 
    test_must_fail ipfs cat $HASH1 > /dev/null &&
    test_must_fail ipfs cat $HASH2 > /dev/null
  
ok 30 - files cannot be retrieved via the urlstore
System.err »
Error: block was not found locally (offline): ipld: could not find bafkreiconmdoujderxi757nf4wjpo4ukbhlo6mmxs6pg3yl53ln3ykldvi
Error: failed to fetch all nodes
31 - remove broken files Success 0.160
System.out »
expecting success: 
    ipfs pin rm $HASH2 &&
    ipfs repo gc > /dev/null
  
unpinned bafybeidvl7i3cc26tlivsimao5vc3puocer4mcg52l73zpfcfxj4qdkp6m
ok 31 - remove broken files
32 - add large file using gateway address via url store Success 0.328
System.out »
expecting success: 
    HASH3=$(ipfs ${ADD_CMD[@]} http://127.0.0.1:$GWAY_PORT/ipfs/$HASH3a)
  
ok 32 - add large file using gateway address via url store
33 - make sure hashes are different Success 0.005
System.out »
expecting success: 
    test $HASH3a != $HASH3
  
ok 33 - make sure hashes are different
34 - get large file via urlstore Success 0.544
System.out »
expecting success: 
    rm -f file3.actual &&
    ipfs get $HASH3 -o file3.actual &&
    test_cmp file3 file3.actual
  
Saving file(s) to file3.actual
ok 34 - get large file via urlstore
System.err »
 0 B / 47.68 MiB    0.00%
 24.00 MiB / 47.68 MiB   50.33%
 46.00 MiB / 47.68 MiB   96.47%
 47.68 MiB / 47.68 MiB  100.00% 0s
35 - check that the trickle option works Success 0.594
System.out »
expecting success: 
    HASHat=$(ipfs add -q --cid-version=1 --raw-leaves=true -n --trickle file3) &&
    HASHut=$(ipfs $ADD_CMD --trickle http://127.0.0.1:$GWAY_PORT/ipfs/$HASH3a) &&
    test $HASHat = $HASHut
  
ok 35 - check that the trickle option works
36 - add files using gateway address via url store using --cid-base=base32 Success 0.282
System.out »
expecting success: 
    HASH1a=$(ipfs add -q --trickle --raw-leaves=false file1) &&
    HASH2a=$(ipfs add -q --trickle --raw-leaves=false file2) &&
    HASH1b32=$(ipfs --cid-base=base32 $ADD_CMD http://127.0.0.1:$GWAY_PORT/ipfs/$HASH1a) &&
    HASH2b32=$(ipfs --cid-base=base32 $ADD_CMD http://127.0.0.1:$GWAY_PORT/ipfs/$HASH2a)
  
ok 36 - add files using gateway address via url store using --cid-base=base32
37 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 37 - 'ipfs daemon' is still running
38 - 'ipfs daemon' can be killed Success 0.251
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 38 - 'ipfs daemon' can be killed
39 - files cannot be retrieved via the urlstore Success 0.245
System.out »
expecting success: 
    test_must_fail ipfs cat $HASH1 > /dev/null &&
    test_must_fail ipfs cat $HASH2 > /dev/null &&
    test_must_fail ipfs cat $HASH3 > /dev/null
  
ok 39 - files cannot be retrieved via the urlstore
System.err »
Error: Get "http://127.0.0.1:42871/ipfs/QmUNEBSK2uPLSZU3Dj6XbSHjdGze4huWxESx2R4Ef1cKRW": dial tcp 127.0.0.1:42871: connect: connection refused
Error: failed to fetch all nodes

 0 B / 47.68 MiB    0.00%
 0 B / 47.68 MiB    0.00% 0s
Error: failed to fetch all nodes
40 - check that the hashes were correct Success 0.426
System.out »
expecting success: 
    HASH1e=$(ipfs add -q -n --cid-version=1 --raw-leaves=true file1) &&
    HASH2e=$(ipfs add -q -n --cid-version=1 --raw-leaves=true file2) &&
    HASH3e=$(ipfs add -q -n --cid-version=1 --raw-leaves=true file3) &&
    test $HASH1e = $HASH1 &&
    test $HASH2e = $HASH2 &&
    test $HASH3e = $HASH3
  
ok 40 - check that the hashes were correct
41 - check that the base32 hashes were correct Success 0.120
System.out »
expecting success: 
    HASH1e32=$(ipfs cid base32 $HASH1e)
    HASH2e32=$(ipfs cid base32 $HASH2e)
    test $HASH1e32 = $HASH1b32 &&
    test $HASH2e32 = $HASH2b32
  
ok 41 - check that the base32 hashes were correct
42 - ipfs cleanup Success 0.023
System.out »
expecting success: 
    rm -rf "$IPFS_PATH" && rmdir ipfs ipns mountdir
  
ok 42 - ipfs cleanup
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - create some random files
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - add files using trickle dag format without raw leaves
ok 6 - 'ipfs daemon' succeeds
ok 7 - api file shows up
ok 8 - set up address variables
ok 9 - 'ipfs daemon' is ready
ok 10 - make sure files can be retrieved via the gateway
ok 11 - add files without enabling url store using add -q --nocopy --cid-version=1
ok 12 - 'ipfs daemon' is still running
ok 13 - 'ipfs daemon' can be killed
ok 14 - enable urlstore
ok 15 - 'ipfs daemon' succeeds
ok 16 - api file shows up
ok 17 - set up address variables
ok 18 - 'ipfs daemon' is ready
ok 19 - add files using gateway address via url store using add -q --nocopy --cid-version=1
ok 20 - make sure hashes are different
ok 21 - get files via urlstore
ok 22 - ipfs filestore ls works with urls
ok 23 - ipfs filestore verify works with urls
ok 24 - garbage collect file1 from the urlstore
ok 25 - can no longer retrieve file1 from urlstore
ok 26 - can still retrieve file2 from urlstore
ok 27 - remove original hashes from local gateway
ok 28 - gateway no longer has files
ok 29 - ipfs filestore verify is correct
ok 30 - files cannot be retrieved via the urlstore
ok 31 - remove broken files
ok 32 - add large file using gateway address via url store
ok 33 - make sure hashes are different
ok 34 - get large file via urlstore
ok 35 - check that the trickle option works
ok 36 - add files using gateway address via url store using --cid-base=base32
ok 37 - 'ipfs daemon' is still running
ok 38 - 'ipfs daemon' can be killed
ok 39 - files cannot be retrieved via the urlstore
ok 40 - check that the hashes were correct
ok 41 - check that the base32 hashes were correct
ok 42 - ipfs cleanup

Back to top

TestCase t0275-cid-security

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.093
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.171
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.461
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0275-cid-security.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0275-cid-security.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0275-cid-security.sh/mfs"
ok 3 - prepare config -- mounting
4 - adding using unsafe function fails with error Success 0.090
System.out »
expecting success: 
  echo foo | test_must_fail ipfs add --hash shake-128 2>add_out

ok 4 - adding using unsafe function fails with error
5 - error reason is pointed out Success 0.006
System.out »
expecting success: 
  grep "potentially insecure hash functions not allowed" add_out || test_fsh cat add_out


 4 B / ? 
 4 B / 4 B  100.00%Error: potentially insecure hash functions not allowed
ok 5 - error reason is pointed out
6 - adding using too short of a hash function gives out an error Success 0.089
System.out »
expecting success: 
  echo foo | test_must_fail ipfs block put -f protobuf --mhlen 19 2>block_out

ok 6 - adding using too short of a hash function gives out an error
7 - error reason is pointed out Success 0.004
System.out »
expecting success: 
  grep "digest too small" block_out

Error: digest too small: sha2-256 digest got 19 bytes, minimum 20
ok 7 - error reason is pointed out
8 - ipfs cat fails with unsafe hash function Success 0.084
System.out »
expecting success: 
    test_must_fail ipfs cat bafksebhh7d53e 2>ipfs_cat
  
ok 8 - ipfs cat fails with unsafe hash function
9 - error reason is pointed out Success 0.006
System.out »
expecting success: 
    grep "potentially insecure hash functions not allowed" ipfs_cat
  
Error: potentially insecure hash functions not allowed
ok 9 - error reason is pointed out
10 - ipfs get fails with too short function Success 0.078
System.out »
expecting success: 
    test_must_fail ipfs get bafkreez3itiri7ghbbf6lzej7paxyxy2qznpw 2>ipfs_get

    
ok 10 - ipfs get fails with too short function
11 - error reason is pointed out Success 0.005
System.out »
expecting success: 
     grep "digest too small" ipfs_get
  
Error: digest too small: sha2-256 digest got 19 bytes, minimum 20
ok 11 - error reason is pointed out
12 - injecting insecure block Success 0.006
System.out »
expecting success: 
    mkdir -p "$IPFS_PATH/blocks/TS" &&
    cp -f ../t0275-cid-security-data/EICEM7ITSI.data "$IPFS_PATH/blocks/TS"
  
ok 12 - injecting insecure block
13 - gc works Success 0.091
System.out »
expecting success: ipfs repo gc > gc_out
ok 13 - gc works
14 - gc removed bad block Success 0.006
System.out »
expecting success: 
    grep bafksebcgpujze gc_out
  
removed bafksebcgpujze
ok 14 - gc removed bad block
15 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 15 - 'ipfs daemon' succeeds
16 - api file shows up Success 0.214
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 16 - api file shows up
17 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 17 - set up address variables
18 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 18 - get swarm addresses
19 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 19 - set swarm address vars
20 - 'ipfs daemon' is ready Success 0.009
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 20 - 'ipfs daemon' is ready
21 - ipfs cat fails with unsafe hash function Success 0.067
System.out »
expecting success: 
    test_must_fail ipfs cat bafksebhh7d53e 2>ipfs_cat
  
ok 21 - ipfs cat fails with unsafe hash function
22 - error reason is pointed out Success 0.007
System.out »
expecting success: 
    grep "potentially insecure hash functions not allowed" ipfs_cat
  
Error: potentially insecure hash functions not allowed
ok 22 - error reason is pointed out
23 - ipfs get fails with too short function Success 0.064
System.out »
expecting success: 
    test_must_fail ipfs get bafkreez3itiri7ghbbf6lzej7paxyxy2qznpw 2>ipfs_get

    
ok 23 - ipfs get fails with too short function
24 - error reason is pointed out Success 0.005
System.out »
expecting success: 
     grep "digest too small" ipfs_get
  
Error: digest too small: sha2-256 digest got 19 bytes, minimum 20
ok 24 - error reason is pointed out
25 - injecting insecure block Success 0.006
System.out »
expecting success: 
    mkdir -p "$IPFS_PATH/blocks/TS" &&
    cp -f ../t0275-cid-security-data/EICEM7ITSI.data "$IPFS_PATH/blocks/TS"
  
ok 25 - injecting insecure block
26 - gc works Success 0.072
System.out »
expecting success: ipfs repo gc > gc_out
ok 26 - gc works
27 - gc removed bad block Success 0.005
System.out »
expecting success: 
    grep bafksebcgpujze gc_out
  
removed bafksebcgpujze
ok 27 - gc removed bad block
28 - add block linking to insecure Success 0.009
System.out »
expecting success: 
  mkdir -p "$IPFS_PATH/blocks/5X" &&
  cp -f "../t0275-cid-security-data/CIQG6PGTD2VV34S33BE4MNCQITBRFYUPYQLDXYARR3DQW37MOT7K5XI.data" "$IPFS_PATH/blocks/5X"

ok 28 - add block linking to insecure
29 - ipfs cat fails with code 1 and not timeout Success 0.083
System.out »
expecting success: 
  test_expect_code 1 go-timeout 1 ipfs cat QmVpsktzNeJdfWEpyeix93QJdQaBSgRNxebSbYSo9SQPGx

ok 29 - ipfs cat fails with code 1 and not timeout
System.err »
Error: failed to fetch all nodes
30 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 30 - 'ipfs daemon' is still running
31 - 'ipfs daemon' can be killed Success 0.266
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 31 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - adding using unsafe function fails with error
ok 5 - error reason is pointed out
ok 6 - adding using too short of a hash function gives out an error
ok 7 - error reason is pointed out
ok 8 - ipfs cat fails with unsafe hash function
ok 9 - error reason is pointed out
ok 10 - ipfs get fails with too short function
ok 11 - error reason is pointed out
ok 12 - injecting insecure block
ok 13 - gc works
ok 14 - gc removed bad block
ok 15 - 'ipfs daemon' succeeds
ok 16 - api file shows up
ok 17 - set up address variables
ok 18 - get swarm addresses
ok 19 - set swarm address vars
ok 20 - 'ipfs daemon' is ready
ok 21 - ipfs cat fails with unsafe hash function
ok 22 - error reason is pointed out
ok 23 - ipfs get fails with too short function
ok 24 - error reason is pointed out
ok 25 - injecting insecure block
ok 26 - gc works
ok 27 - gc removed bad block
ok 28 - add block linking to insecure
ok 29 - ipfs cat fails with code 1 and not timeout
ok 30 - 'ipfs daemon' is still running
ok 31 - 'ipfs daemon' can be killed

Back to top

TestCase t0276-cidv0v1

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.186
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.159
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.489
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0276-cidv0v1.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0276-cidv0v1.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0276-cidv0v1.sh/mfs"
ok 3 - prepare config -- mounting
4 - create two small files Success 0.012
System.out »
expecting success: 
  random-data -size=1000 -seed=7 > afile
  random-data -size=1000 -seed=9 > bfile

ok 4 - create two small files
5 - add file using CIDv1 but don't pin Success 0.080
System.out »
expecting success: 
  AHASHv1=$(ipfs add -q --cid-version=1 --raw-leaves=false --pin=false afile)

ok 5 - add file using CIDv1 but don't pin
6 - add file using CIDv0 Success 0.085
System.out »
expecting success: 
  AHASHv0=$(ipfs add -q --cid-version=0 afile)

ok 6 - add file using CIDv0
7 - check hashes Success 0.013
System.out »
expecting success: 
  test "$(cid-fmt %v-%c $AHASHv0)" = "cidv0-dag-pb" &&
  test "$(cid-fmt %v-%c $AHASHv1)" = "cidv1-dag-pb" &&
  test "$(cid-fmt -b z -v 0 %s $AHASHv1)" = "$AHASHv0"

ok 7 - check hashes
8 - make sure CIDv1 hash really is in the repo Success 0.082
System.out »
expecting success: 
  ipfs block stat $AHASHv1

Key: bafybeighnan3h7vozpddopwdjrwvmov5mut27ulkvacejte6aap57li5je
Size: 1011
ok 8 - make sure CIDv1 hash really is in the repo
9 - make sure CIDv0 hash really is in the repo Success 0.097
System.out »
expecting success: 
  ipfs block stat $AHASHv0

Key: Qmbm3v359wJWNCsavbaGdfLCdj3TQNguVtrKM8UahpL4Pz
Size: 1011
ok 9 - make sure CIDv0 hash really is in the repo
10 - run gc Success 0.092
System.out »
expecting success: 
  ipfs repo gc

removed bafkreihaiew7wjd6674whddhjwiwhtd5sn3skln5oz2qrw676f4mknoskq
removed bafkreibql5hezlzbpgfzwct7v7v3mqfh7ub5z6nu5z7rzrgeewpdgd6k74
ok 10 - run gc
11 - make sure the CIDv0 hash is in the repo Success 0.082
System.out »
expecting success: 
  ipfs block stat $AHASHv0

Key: Qmbm3v359wJWNCsavbaGdfLCdj3TQNguVtrKM8UahpL4Pz
Size: 1011
ok 11 - make sure the CIDv0 hash is in the repo
12 - make sure we can get CIDv0 added file Success 0.081
System.out »
expecting success: 
  ipfs cat $AHASHv0 > thefile &&
  test_cmp afile thefile

ok 12 - make sure we can get CIDv0 added file
13 - make sure the CIDv1 hash is not in the repo Success 0.083
System.out »
expecting success: 
  ! ipfs refs local | grep -q $AHASHv1

ok 13 - make sure the CIDv1 hash is not in the repo
14 - clean up Success 0.254
System.out »
expecting success: 
  ipfs pin rm $AHASHv0 &&
  ipfs repo gc &&
  ! ipfs refs local | grep -q $AHASHv0

unpinned Qmbm3v359wJWNCsavbaGdfLCdj3TQNguVtrKM8UahpL4Pz
removed bafkreighnan3h7vozpddopwdjrwvmov5mut27ulkvacejte6aap57li5je
ok 14 - clean up
15 - add file using CIDv1 but don't pin Success 0.090
System.out »
expecting success: 
  ipfs add -q --cid-version=1 --raw-leaves=false --pin=false afile

bafybeighnan3h7vozpddopwdjrwvmov5mut27ulkvacejte6aap57li5je
ok 15 - add file using CIDv1 but don't pin
16 - check that we can access the file when converted to CIDv0 Success 0.087
System.out »
expecting success: 
  ipfs cat $AHASHv0 > thefile &&
  test_cmp afile thefile

ok 16 - check that we can access the file when converted to CIDv0
17 - clean up Success 0.089
System.out »
expecting success: 
  ipfs repo gc

removed bafkreibql5hezlzbpgfzwct7v7v3mqfh7ub5z6nu5z7rzrgeewpdgd6k74
removed bafkreighnan3h7vozpddopwdjrwvmov5mut27ulkvacejte6aap57li5je
ok 17 - clean up
18 - add file using CIDv0 but don't pin Success 0.091
System.out »
expecting success: 
  ipfs add -q --cid-version=0 --raw-leaves=false --pin=false afile

Qmbm3v359wJWNCsavbaGdfLCdj3TQNguVtrKM8UahpL4Pz
ok 18 - add file using CIDv0 but don't pin
19 - check that we can access the file when converted to CIDv1 Success 0.073
System.out »
expecting success: 
  ipfs cat $AHASHv1 > thefile &&
  test_cmp afile thefile

ok 19 - check that we can access the file when converted to CIDv1
20 - set up iptb testbed Success 0.294
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -init  &&
  iptb run -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true

node[0] exit 0


node[1] exit 0


ok 20 - set up iptb testbed
21 - start nodes Success 0.564
System.out »
expecting success: 
  iptb start -wait &&
  iptb connect 0 1

ok 21 - start nodes
22 - add afile using CIDv0 to node 0 Success 0.113
System.out »
expecting success: 
  iptb run 0 -- ipfs add -q --cid-version=0 afile

node[0] exit 0

Qmbm3v359wJWNCsavbaGdfLCdj3TQNguVtrKM8UahpL4Pz

ok 22 - add afile using CIDv0 to node 0
23 - get afile using CIDv1 via node 1 Success 0.088
System.out »
expecting success: 
  iptb -quiet run 1 -- ipfs --timeout=2s cat $AHASHv1 > thefile &&
  test_cmp afile thefile

ok 23 - get afile using CIDv1 via node 1
24 - add bfile using CIDv1 to node 0 Success 0.098
System.out »
expecting success: 
  BHASHv1=$(iptb -quiet run 0 -- ipfs add -q --cid-version=1 --raw-leaves=false bfile)

ok 24 - add bfile using CIDv1 to node 0
25 - get bfile using CIDv0 via node 1 Success 0.099
System.out »
expecting success: 
  BHASHv0=$(cid-fmt -b z -v 0 %s $BHASHv1)
  echo $BHASHv1 &&
  iptb -quiet run 1 -- ipfs --timeout=2s cat $BHASHv0 > thefile &&
  test_cmp bfile thefile

bafybeidmli6xy2ecyaellljxzdhksd5avhu25qkttns2tnperp3k5fsdjm
ok 25 - get bfile using CIDv0 via node 1
26 - stop testbed Success 0.024
System.out »
expecting success: 
  iptb stop

ok 26 - stop testbed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - create two small files
ok 5 - add file using CIDv1 but don't pin
ok 6 - add file using CIDv0
ok 7 - check hashes
ok 8 - make sure CIDv1 hash really is in the repo
ok 9 - make sure CIDv0 hash really is in the repo
ok 10 - run gc
ok 11 - make sure the CIDv0 hash is in the repo
ok 12 - make sure we can get CIDv0 added file
ok 13 - make sure the CIDv1 hash is not in the repo
ok 14 - clean up
ok 15 - add file using CIDv1 but don't pin
ok 16 - check that we can access the file when converted to CIDv0
ok 17 - clean up
ok 18 - add file using CIDv0 but don't pin
ok 19 - check that we can access the file when converted to CIDv1
ok 20 - set up iptb testbed
ok 21 - start nodes
ok 22 - add afile using CIDv0 to node 0
ok 23 - get afile using CIDv1 via node 1
ok 24 - add bfile using CIDv1 to node 0
ok 25 - get bfile using CIDv0 via node 1
ok 26 - stop testbed

Back to top

TestCase t0280-plugin

Name Status Type Time(s)
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=

Back to top

TestCase t0280-plugin-dag-jose

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.135
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.165
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.481
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-dag-jose.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-dag-jose.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-dag-jose.sh/mfs"
ok 3 - prepare config -- mounting
4 - encode as dag-jose, decode back to original, verify round-trip Success 2.468
System.out »
expecting success: 
    find ../t0280-plugin-dag-jose-data -type f | xargs -I {} sh -c ' \
      codec=$(basename $(dirname {})); \
      joseHash=$(ipfs dag put --store-codec dag-jose --input-codec=$codec {}); \
      ipfs dag get --output-codec $codec $joseHash > $(basename {}); \
      diff {} $(basename {}) '
  
ok 4 - encode as dag-jose, decode back to original, verify round-trip
5 - retrieve dag-jose in non-dag-jose encodings Success 4.158
System.out »
expecting success: 
      find ../t0280-plugin-dag-jose-data -type f | xargs -I {} sh -c ' \
        codec=$(basename $(dirname {})); \
        joseHash=$(ipfs dag put --store-codec dag-jose --input-codec=$codec {}); \
        ipfs dag get --output-codec dag-cbor $joseHash > /dev/null; \
        ipfs dag get --output-codec dag-json $joseHash > /dev/null '
    
ok 5 - retrieve dag-jose in non-dag-jose encodings
6 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 6 - 'ipfs daemon' succeeds
7 - api file shows up Success 0.237
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 7 - api file shows up
8 - set up address variables Success 0.025
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 8 - set up address variables
9 - get swarm addresses Success 0.125
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 9 - get swarm addresses
10 - set swarm address vars Success 0.014
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 10 - set swarm address vars
11 - 'ipfs daemon' is ready Success 0.015
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 11 - 'ipfs daemon' is ready
12 - encode as dag-jose, decode back to original, verify round-trip Success 2.622
System.out »
expecting success: 
    find ../t0280-plugin-dag-jose-data -type f | xargs -I {} sh -c ' \
      codec=$(basename $(dirname {})); \
      joseHash=$(ipfs dag put --store-codec dag-jose --input-codec=$codec {}); \
      ipfs dag get --output-codec $codec $joseHash > $(basename {}); \
      diff {} $(basename {}) '
  
ok 12 - encode as dag-jose, decode back to original, verify round-trip
13 - retrieve dag-jose in non-dag-jose encodings Success 3.858
System.out »
expecting success: 
      find ../t0280-plugin-dag-jose-data -type f | xargs -I {} sh -c ' \
        codec=$(basename $(dirname {})); \
        joseHash=$(ipfs dag put --store-codec dag-jose --input-codec=$codec {}); \
        ipfs dag get --output-codec dag-cbor $joseHash > /dev/null; \
        ipfs dag get --output-codec dag-json $joseHash > /dev/null '
    
ok 13 - retrieve dag-jose in non-dag-jose encodings
14 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 14 - 'ipfs daemon' is still running
15 - 'ipfs daemon' can be killed Success 0.359
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 15 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - encode as dag-jose, decode back to original, verify round-trip
ok 5 - retrieve dag-jose in non-dag-jose encodings
ok 6 - 'ipfs daemon' succeeds
ok 7 - api file shows up
ok 8 - set up address variables
ok 9 - get swarm addresses
ok 10 - set swarm address vars
ok 11 - 'ipfs daemon' is ready
ok 12 - encode as dag-jose, decode back to original, verify round-trip
ok 13 - retrieve dag-jose in non-dag-jose encodings
ok 14 - 'ipfs daemon' is still running
ok 15 - 'ipfs daemon' can be killed

Back to top

TestCase t0280-plugin-fx

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.088
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.159
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.480
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-fx.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-fx.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-fx.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.020
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.082
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - expected log entry should be present Success 0.007
System.out »
expecting success: 
  fgrep "invoked test fx function" daemon_err >/dev/null

ok 10 - expected log entry should be present
11 - 'ipfs daemon' is still running Success 0.003
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 11 - 'ipfs daemon' is still running
12 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 12 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - expected log entry should be present
ok 11 - 'ipfs daemon' is still running
ok 12 - 'ipfs daemon' can be killed

Back to top

TestCase t0280-plugin-git

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.115
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.174
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.448
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-git.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-git.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0280-plugin-git.sh/mfs"
ok 3 - prepare config -- mounting
4 - prepare test data Success 0.011
System.out »
expecting success: 
  tar xzf ../t0280-plugin-git-data/git.tar.gz

ok 4 - prepare test data
5 - add objects via dag put Success 2.818
System.out »
expecting success: 
    find objects -type f -exec ipfs dag put --store-codec=git-raw --input-codec=0x300078 --hash=sha1 {} \; -exec echo -n \; > hashes
  
ok 5 - add objects via dag put
6 - successfully get added objects Success 2.698
System.out »
expecting success: 
    cat hashes | xargs -I {} ipfs dag get -- {} > /dev/null
  
ok 6 - successfully get added objects
7 - dag get works Success 0.086
System.out »
expecting success: 
    echo -n "{\"message\":\"Some version\n\",\"object\":{\"/\":\"baf4bcfeq6c2mspupcvftgevza56h7rmozose6wi\"},\"tag\":\"v1\",\"tagger\":{\"date\":\"1497302532\",\"email\":\"johndoe@example.com\",\"name\":\"John Doe\",\"timezone\":\"+0200\"},\"type\":\"commit\"}" > tag_expected &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi > tag_actual
  
ok 7 - dag get works
8 - outputs look correct Success 0.007
System.out »
expecting success: 
    test_cmp tag_expected tag_actual
  
ok 8 - outputs look correct
9 - path traversals work Success 0.305
System.out »
expecting success: 
    echo -n "{\"date\":\"1497302532\",\"email\":\"johndoe@example.com\",\"name\":\"John Doe\",\"timezone\":\"+0200\"}" > author_expected &&
    echo -n "{\"/\":{\"bytes\":\"YmxvYiAxMgBIZWxsbyB3b3JsZAo\"}}" > file1_expected &&
    echo -n "{\"/\":{\"bytes\":\"YmxvYiA3ACcsLnB5Zgo\"}}" > file2_expected &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/author > author_actual &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/tree/file/hash > file1_actual &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/parents/0/tree/dir2/hash/f3/hash > file2_actual
  
ok 9 - path traversals work
10 - outputs look correct Success 0.011
System.out »
expecting success: 
    test_cmp author_expected author_actual &&
    test_cmp file1_expected file1_actual &&
    test_cmp file2_expected file2_actual
  
ok 10 - outputs look correct
11 - 'ipfs daemon' succeeds Success 0.007
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 11 - 'ipfs daemon' succeeds
12 - api file shows up Success 0.216
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 12 - api file shows up
13 - set up address variables Success 0.037
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 13 - set up address variables
14 - get swarm addresses Success 0.100
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 14 - get swarm addresses
15 - set swarm address vars Success 0.010
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 15 - set swarm address vars
16 - 'ipfs daemon' is ready Success 0.013
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 16 - 'ipfs daemon' is ready
17 - add objects via dag put Success 1.966
System.out »
expecting success: 
    find objects -type f -exec ipfs dag put --store-codec=git-raw --input-codec=0x300078 --hash=sha1 {} \; -exec echo -n \; > hashes
  
ok 17 - add objects via dag put
18 - successfully get added objects Success 2.789
System.out »
expecting success: 
    cat hashes | xargs -I {} ipfs dag get -- {} > /dev/null
  
ok 18 - successfully get added objects
19 - dag get works Success 0.071
System.out »
expecting success: 
    echo -n "{\"message\":\"Some version\n\",\"object\":{\"/\":\"baf4bcfeq6c2mspupcvftgevza56h7rmozose6wi\"},\"tag\":\"v1\",\"tagger\":{\"date\":\"1497302532\",\"email\":\"johndoe@example.com\",\"name\":\"John Doe\",\"timezone\":\"+0200\"},\"type\":\"commit\"}" > tag_expected &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi > tag_actual
  
ok 19 - dag get works
20 - outputs look correct Success 0.005
System.out »
expecting success: 
    test_cmp tag_expected tag_actual
  
ok 20 - outputs look correct
21 - path traversals work Success 0.186
System.out »
expecting success: 
    echo -n "{\"date\":\"1497302532\",\"email\":\"johndoe@example.com\",\"name\":\"John Doe\",\"timezone\":\"+0200\"}" > author_expected &&
    echo -n "{\"/\":{\"bytes\":\"YmxvYiAxMgBIZWxsbyB3b3JsZAo\"}}" > file1_expected &&
    echo -n "{\"/\":{\"bytes\":\"YmxvYiA3ACcsLnB5Zgo\"}}" > file2_expected &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/author > author_actual &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/tree/file/hash > file1_actual &&
    ipfs dag get baf4bcfhzi72pcj5cc4ocz7igcduubuu7aa3cddi/object/parents/0/tree/dir2/hash/f3/hash > file2_actual
  
ok 21 - path traversals work
22 - outputs look correct Success 0.010
System.out »
expecting success: 
    test_cmp author_expected author_actual &&
    test_cmp file1_expected file1_actual &&
    test_cmp file2_expected file2_actual
  
ok 22 - outputs look correct
23 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 23 - 'ipfs daemon' is still running
24 - 'ipfs daemon' can be killed Success 0.258
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 24 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - prepare test data
ok 5 - add objects via dag put
ok 6 - successfully get added objects
ok 7 - dag get works
ok 8 - outputs look correct
ok 9 - path traversals work
ok 10 - outputs look correct
ok 11 - 'ipfs daemon' succeeds
ok 12 - api file shows up
ok 13 - set up address variables
ok 14 - get swarm addresses
ok 15 - set swarm address vars
ok 16 - 'ipfs daemon' is ready
ok 17 - add objects via dag put
ok 18 - successfully get added objects
ok 19 - dag get works
ok 20 - outputs look correct
ok 21 - path traversals work
ok 22 - outputs look correct
ok 23 - 'ipfs daemon' is still running
ok 24 - 'ipfs daemon' can be killed

Back to top

TestCase t0280-plugin-peerlog

Name Status Type Time(s)
1 - setup testbed Success 0.235
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -force -init

ok 1 - setup testbed
2 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.167
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
3 - start up nodes Success 0.449
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 3 - start up nodes
4 - connect nodes to each other Success 0.170
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 4 - connect nodes to each other
5 - node 0 is connected Success 0.121
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 5 - node 0 is connected
6 - node 1 is connected Success 0.096
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 1 is connected
7 - peerlog is disabled by default Success 0.131
System.out »
expecting success: 
  go-sleep 100ms
  iptb logs 0 >node0logs
  test_expect_code 1 grep peerlog node0logs

ok 7 - peerlog is disabled by default
8 - stop iptb Success 0.024
System.out »
expecting success: iptb stop
ok 8 - stop iptb
9 - setup testbed Success 0.334
System.out »
expecting success: 
  iptb testbed create -type localipfs -count 2 -force -init

ok 9 - setup testbed
10 - enable peerlog config setting Success 0.148
System.out »
expecting success: 
  iptb run -- ipfs config --json Plugins.Plugins.peerlog.Config.Enabled true

node[0] exit 0


node[1] exit 0


ok 10 - enable peerlog config setting
11 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.114
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


ok 11 - set Routing.LoopbackAddressesOnLanDHT to true
12 - start up nodes Success 0.431
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 12 - start up nodes
13 - connect nodes to each other Success 0.157
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 13 - connect nodes to each other
14 - node 0 is connected Success 0.075
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 14 - node 0 is connected
15 - node 1 is connected Success 0.083
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 15 - node 1 is connected
16 - peerlog plugin is logged Success 0.125
System.out »
expecting success: 
  go-sleep 100ms
  iptb logs 0 >node0logs
  grep peerlog node0logs

2026-02-27T18:14:18.013Z	INFO	plugin/peerlog	peerlog/peerlog.go:155	connected	{"peer": "12D3KooWGXspPn78PkUMxD5TxB3Qh91kdg8j5PSBZ2bySfU4j5Wg"}
2026-02-27T18:14:18.015Z	INFO	plugin/peerlog	peerlog/peerlog.go:171	identified	{"peer": "12D3KooWGXspPn78PkUMxD5TxB3Qh91kdg8j5PSBZ2bySfU4j5Wg", "agent": "kubo/0.41.0-dev"}
ok 16 - peerlog plugin is logged
17 - peer id Success 0.022
System.out »
expecting success: 
  PEERID_1=$(iptb attr get 1 id)

ok 17 - peer id
18 - peer id is logged Success 0.042
System.out »
expecting success: 
  iptb logs 0 | grep -q "$PEERID_1"

ok 18 - peer id is logged
19 - stop iptb Success 0.026
System.out »
expecting success: iptb stop
ok 19 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - setup testbed
ok 2 - set Routing.LoopbackAddressesOnLanDHT to true
ok 3 - start up nodes
ok 4 - connect nodes to each other
ok 5 - node 0 is connected
ok 6 - node 1 is connected
ok 7 - peerlog is disabled by default
ok 8 - stop iptb
ok 9 - setup testbed
ok 10 - enable peerlog config setting
ok 11 - set Routing.LoopbackAddressesOnLanDHT to true
ok 12 - start up nodes
ok 13 - connect nodes to each other
ok 14 - node 0 is connected
ok 15 - node 1 is connected
ok 16 - peerlog plugin is logged
ok 17 - peer id
ok 18 - peer id is logged
ok 19 - stop iptb

Back to top

TestCase t0290-cid

Name Status Type Time(s)
1 - cid base32 works Success 0.213
System.out »
expecting success: 
  echo $CIDb32 > expected &&
  ipfs cid base32 $CIDv0 > actual1 &&
  test_cmp actual1 expected &&
  ipfs cid base32 $CIDv1 > actual2 &&
  test_cmp expected actual2

ok 1 - cid base32 works
2 - cid format -v 1 -b base58btc Success 0.124
System.out »
expecting success: 
  echo $CIDv1 > expected &&
  ipfs cid format -v 1 -b base58btc $CIDv0 > actual1 &&
  test_cmp actual1 expected &&
  ipfs cid format -v 1 -b base58btc $CIDb32 > actual2 &&
  test_cmp expected actual2

ok 2 - cid format -v 1 -b base58btc
3 - cid format -v 0 Success 0.080
System.out »
expecting success: 
  echo $CIDv0 > expected &&
  ipfs cid format -v 0 $CIDb32 > actual &&
  test_cmp expected actual

ok 3 - cid format -v 0
4 - cid base32 works from stdin Success 0.210
System.out »
expecting success: 
  cat various_cids | ipfs cid base32 > actual &&
  test_cmp various_cids_base32 actual

ok 4 - cid base32 works from stdin
5 - cid format -v 1 -b base58btc works from stdin Success 0.090
System.out »
expecting success: 
  cat various_cids | ipfs cid format -v 1 -b base58btc > actual &&
  test_cmp various_cids_v1 actual

ok 5 - cid format -v 1 -b base58btc works from stdin
6 - cid bases Success 0.072
System.out »
expecting success: 
  cat <<-EOF > expect
	identity
	base2
	base32
	base32upper
	base32pad
	base32padupper
	base16
	base16upper
	base36
	base36upper
	base64
	base64pad
	base32hexpad
	base32hexpadupper
	base64url
	base64urlpad
	base32hex
	base32hexupper
	base58btc
	base58flickr
	base256emoji
	EOF
  ipfs cid bases > actual &&
  test_cmp expect actual

ok 6 - cid bases
7 - cid bases --prefix Success 0.075
System.out »
expecting success: 
  cat <<-EOF > expect
	   identity
	0  base2
	b  base32
	B  base32upper
	c  base32pad
	C  base32padupper
	f  base16
	F  base16upper
	k  base36
	K  base36upper
	m  base64
	M  base64pad
	t  base32hexpad
	T  base32hexpadupper
	u  base64url
	U  base64urlpad
	v  base32hex
	V  base32hexupper
	z  base58btc
	Z  base58flickr
	🚀  base256emoji
	EOF
  ipfs cid bases --prefix > actual &&
  test_cmp expect actual

ok 7 - cid bases --prefix
8 - cid bases --prefix --numeric Success 0.072
System.out »
expecting success: 
  ipfs cid bases --prefix --numeric > actual &&
  test_cmp bases_expect actual

ok 8 - cid bases --prefix --numeric
9 - cid codecs Success 0.075
System.out »
expecting success: 
  cut -c 8- codecs_expect > expect &&
  ipfs cid codecs > actual
  test_cmp expect actual

ok 9 - cid codecs
10 - cid codecs --numeric Success 0.072
System.out »
expecting success: 
  ipfs cid codecs --numeric > actual &&
  test_cmp codecs_expect actual

ok 10 - cid codecs --numeric
11 - cid codecs --supported Success 0.066
System.out »
expecting success: 
  cut -c 8- supported_codecs_expect > expect &&
  ipfs cid codecs --supported > actual
  test_cmp expect actual

ok 11 - cid codecs --supported
12 - cid codecs --supported --numeric Success 0.080
System.out »
expecting success: 
  ipfs cid codecs --supported --numeric > actual &&
  test_cmp supported_codecs_expect actual

ok 12 - cid codecs --supported --numeric
13 - cid hashes Success 0.085
System.out »
expecting success: 
  cut -c 8- hashes_expect > expect &&
  ipfs cid hashes > actual
  test_cmp expect actual

ok 13 - cid hashes
14 - cid hashes --numeric Success 0.066
System.out »
expecting success: 
  ipfs cid hashes --numeric > actual &&
  test_cmp hashes_expect actual

ok 14 - cid hashes --numeric
15 - cid format -c raw Success 0.067
System.out »
expecting success: 
  echo $CIDb32raw > expected &&
  ipfs cid format --mc raw -b base32 $CIDb32pb > actual &&
  test_cmp actual expected

ok 15 - cid format -c raw
16 - cid format --mc dag-pb -v 0 Success 0.084
System.out »
expecting success: 
  echo $CIDbase > expected &&
  ipfs cid format --mc dag-pb -v 0 $CIDb32raw > actual &&
  test_cmp actual expected

ok 16 - cid format --mc dag-pb -v 0
17 - cid format --mc dag-cbor Success 0.077
System.out »
expecting success: 
  echo $CIDb32dagcbor > expected &&
  ipfs cid format --mc dag-cbor $CIDb32pb > actual &&
  test_cmp actual expected

ok 17 - cid format --mc dag-cbor
18 - cid format --codec fails Success 0.062
System.out »
expecting success: 
  echo "Error: unknown option \"codec\"" > expected &&
  test_expect_code 1 ipfs cid format --codec protobuf 2> actual &&
  test_cmp actual expected

ok 18 - cid format --codec fails
19 - cid format -b base256emoji <base32> Success 0.078
System.out »
expecting success: 
  echo "🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊" > expected &&
  ipfs cid format -b base256emoji bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi > actual &&
  test_cmp actual expected

ok 19 - cid format -b base256emoji <base32>
20 - cid format -b base32 <base256emoji> Success 0.062
System.out »
expecting success: 
  echo "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi" > expected &&
  ipfs cid format -b base32 🚀🪐⭐💻😅❓💎🌈🌸🌚💰💍🌒😵🐶💁🤐🌎👼🙃🙅☺🌚😞🤤⭐🚀😃✈🌕😚🍻💜🐷⚽✌😊 > actual &&
  test_cmp actual expected

ok 20 - cid format -b base32 <base256emoji>
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - cid base32 works
ok 2 - cid format -v 1 -b base58btc
ok 3 - cid format -v 0
ok 4 - cid base32 works from stdin
ok 5 - cid format -v 1 -b base58btc works from stdin
ok 6 - cid bases
ok 7 - cid bases --prefix
ok 8 - cid bases --prefix --numeric
ok 9 - cid codecs
ok 10 - cid codecs --numeric
ok 11 - cid codecs --supported
ok 12 - cid codecs --supported --numeric
ok 13 - cid hashes
ok 14 - cid hashes --numeric
ok 15 - cid format -c raw
ok 16 - cid format --mc dag-pb -v 0
ok 17 - cid format --mc dag-cbor
ok 18 - cid format --codec fails
ok 19 - cid format -b base256emoji <base32>
ok 20 - cid format -b base32 <base256emoji>

Back to top

TestCase t0295-multibase

Name Status Type Time(s)
1 - multibase list Success 0.090
System.out »
expecting success: 
  cut -c 12- bases_expect > expect &&
  ipfs multibase list > actual &&
  test_cmp expect actual

ok 1 - multibase list
2 - multibase encode works (stdin) Success 0.101
System.out »
expecting success: 
  echo -n uaGVsbG8 > expected &&
  echo -n hello | ipfs multibase encode > actual &&
  test_cmp actual expected

ok 2 - multibase encode works (stdin)
3 - multibase encode works (file) Success 0.093
System.out »
expecting success: 
  echo -n hello > file &&
  echo -n uaGVsbG8 > expected &&
  ipfs multibase encode ./file > actual &&
  test_cmp actual expected

ok 3 - multibase encode works (file)
4 - multibase encode -b (custom base) Success 0.086
System.out »
expecting success: 
  echo -n f68656c6c6f > expected &&
  echo -n hello | ipfs multibase encode -b base16 > actual &&
  test_cmp actual expected

ok 4 - multibase encode -b (custom base)
5 - multibase decode works (stdin) Success 0.146
System.out »
expecting success: 
  echo -n hello > expected &&
  echo -n uaGVsbG8 | ipfs multibase decode > actual &&
  test_cmp actual expected

ok 5 - multibase decode works (stdin)
6 - multibase decode works (file) Success 0.071
System.out »
expecting success: 
  echo -n uaGVsbG8 > file &&
  echo -n hello > expected &&
  ipfs multibase decode ./file > actual &&
  test_cmp actual expected

ok 6 - multibase decode works (file)
7 - multibase encode+decode roundtrip Success 0.116
System.out »
expecting success: 
  echo -n hello > expected &&
  cat expected | ipfs multibase encode -b base64 | ipfs multibase decode > actual &&
  test_cmp actual expected

ok 7 - multibase encode+decode roundtrip
8 - mutlibase transcode works (stdin) Success 0.075
System.out »
expecting success: 
  echo -n f68656c6c6f > expected &&
  echo -n uaGVsbG8 | ipfs multibase transcode -b base16 > actual &&
  test_cmp actual expected

ok 8 - mutlibase transcode works (stdin)
9 - multibase transcode works (file) Success 0.069
System.out »
expecting success: 
  echo -n uaGVsbG8 > file &&
  echo -n f68656c6c6f > expected &&
  ipfs multibase transcode ./file -b base16> actual &&
  test_cmp actual expected

ok 9 - multibase transcode works (file)
10 - multibase error on unknown multibase prefix Success 0.085
System.out »
expecting success: 
  echo "Error: failed to decode multibase: selected encoding not supported" > expected &&
  echo -n ę-that-should-do-the-trick | ipfs multibase decode 2> actual ;
  test_cmp actual expected

ok 10 - multibase error on unknown multibase prefix
11 - multibase error on a character outside of the base Success 0.080
System.out »
expecting success: 
  echo "Error: failed to decode multibase: encoding/hex: invalid byte: U+007A 'z'" > expected &&
  echo -n f6c6f6cz | ipfs multibase decode 2> actual ;
  test_cmp actual expected

ok 11 - multibase error on a character outside of the base
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - multibase list
ok 2 - multibase encode works (stdin)
ok 3 - multibase encode works (file)
ok 4 - multibase encode -b (custom base)
ok 5 - multibase decode works (stdin)
ok 6 - multibase decode works (file)
ok 7 - multibase encode+decode roundtrip
ok 8 - mutlibase transcode works (stdin)
ok 9 - multibase transcode works (file)
ok 10 - multibase error on unknown multibase prefix
ok 11 - multibase error on a character outside of the base

Back to top

TestCase t0320-pubsub

Name Status Type Time(s)
1 - init iptb Success 0.673
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $NUM_NODES -init

ok 1 - init iptb
2 - disable the DHT Success 0.129
System.out »
expecting success: 
  iptb run -- ipfs config Routing.Type none

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 2 - disable the DHT
3 - enable the pubsub Success 0.120
System.out »
expecting success: 
  iptb run -- ipfs config --json Pubsub.Enabled true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 3 - enable the pubsub
4 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.135
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 4 - set Routing.LoopbackAddressesOnLanDHT to true
5 - start up nodes Success 0.440
System.out »
expecting success: 
      iptb start -wait [0-$bound]
    
ok 5 - start up nodes
6 - connect nodes to each other Success 0.787
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 6 - connect nodes to each other
7 - node 0 is connected Success 0.071
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 7 - node 0 is connected
8 - node 1 is connected Success 0.067
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 8 - node 1 is connected
9 - node 2 is connected Success 0.071
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 2 is connected
10 - node 3 is connected Success 0.067
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 3 is connected
11 - node 4 is connected Success 0.071
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 11 - node 4 is connected
12 - peer ids Success 0.051
System.out »
expecting success: 
    PEERID_0=$(iptb attr get 0 id) &&
    PEERID_2=$(iptb attr get 2 id)
  
ok 12 - peer ids
13 - pubsub Success 0.070
System.out »
expecting success: 
    echo -n -e "test\nOK" | ipfs multibase encode -b base64url > expected &&
    touch empty &&
    mkfifo wait ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 0 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait
        fi
    ) &
  
ok 13 - pubsub
14 - wait until ipfs pubsub sub is ready to do work Success 0.507
System.out »
expecting success: 
    go-sleep 500ms
  
ok 14 - wait until ipfs pubsub sub is ready to do work
15 - can see peer subscribed to testTopic Success 0.074
System.out »
expecting success: 
    ipfsi 1 pubsub peers testTopic > peers_out
  
ok 15 - can see peer subscribed to testTopic
16 - output looks good Success 0.005
System.out »
expecting success: 
    echo $PEERID_0 > peers_exp &&
    test_cmp peers_exp peers_out
  
ok 16 - output looks good
17 - publish something from file Success 0.067
System.out »
expecting success: 
    echo -n -e "test\nOK" > payload-file &&
    ipfsi 1 pubsub pub testTopic payload-file &> pubErr
  
ok 17 - publish something from file
18 - wait until echo > wait executed Success 0.008
System.out »
expecting success: 
    cat wait &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 18 - wait until echo > wait executed
19 - wait for another pubsub message Success 0.100
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfs multibase encode -b base64url > expected &&
    mkfifo wait2 ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 2 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait2
        fi
    ) &
  
ok 19 - wait for another pubsub message
20 - wait until ipfs pubsub sub is ready to do work Success 0.522
System.out »
expecting success: 
    go-sleep 500ms
  
ok 20 - wait until ipfs pubsub sub is ready to do work
21 - publish something from stdin Success 0.204
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfsi 3 pubsub pub testTopic &> pubErr
  
ok 21 - publish something from stdin
22 - wait until echo > wait executed Success 0.012
System.out »
expecting success: 
    cat wait2 &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 22 - wait until echo > wait executed
23 - cleanup fifos Success 0.009
System.out »
expecting success: 
    rm -f wait wait2
  
ok 23 - cleanup fifos
24 - stop iptb Success 0.081
System.out »
expecting success: 
  iptb stop

ok 24 - stop iptb
25 - disable the pubsub Success 0.179
System.out »
expecting success: 
  iptb run -- ipfs config --json Pubsub.Enabled false

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 25 - disable the pubsub
26 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.304
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 26 - set Routing.LoopbackAddressesOnLanDHT to true
27 - start up nodes with additional args Success 0.469
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-pubsub-experiment
    
ok 27 - start up nodes with additional args
28 - connect nodes to each other Success 0.709
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 28 - connect nodes to each other
29 - node 0 is connected Success 0.066
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 29 - node 0 is connected
30 - node 1 is connected Success 0.062
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 30 - node 1 is connected
31 - node 2 is connected Success 0.061
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 31 - node 2 is connected
32 - node 3 is connected Success 0.067
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 32 - node 3 is connected
33 - node 4 is connected Success 0.070
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 33 - node 4 is connected
34 - peer ids Success 0.044
System.out »
expecting success: 
    PEERID_0=$(iptb attr get 0 id) &&
    PEERID_2=$(iptb attr get 2 id)
  
ok 34 - peer ids
35 - pubsub Success 0.060
System.out »
expecting success: 
    echo -n -e "test\nOK" | ipfs multibase encode -b base64url > expected &&
    touch empty &&
    mkfifo wait ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 0 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait
        fi
    ) &
  
ok 35 - pubsub
36 - wait until ipfs pubsub sub is ready to do work Success 0.508
System.out »
expecting success: 
    go-sleep 500ms
  
ok 36 - wait until ipfs pubsub sub is ready to do work
37 - can see peer subscribed to testTopic Success 0.083
System.out »
expecting success: 
    ipfsi 1 pubsub peers testTopic > peers_out
  
ok 37 - can see peer subscribed to testTopic
38 - output looks good Success 0.006
System.out »
expecting success: 
    echo $PEERID_0 > peers_exp &&
    test_cmp peers_exp peers_out
  
ok 38 - output looks good
39 - publish something from file Success 0.067
System.out »
expecting success: 
    echo -n -e "test\nOK" > payload-file &&
    ipfsi 1 pubsub pub testTopic payload-file &> pubErr
  
ok 39 - publish something from file
40 - wait until echo > wait executed Success 0.010
System.out »
expecting success: 
    cat wait &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 40 - wait until echo > wait executed
41 - wait for another pubsub message Success 0.073
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfs multibase encode -b base64url > expected &&
    mkfifo wait2 ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 2 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait2
        fi
    ) &
  
ok 41 - wait for another pubsub message
42 - wait until ipfs pubsub sub is ready to do work Success 0.508
System.out »
expecting success: 
    go-sleep 500ms
  
ok 42 - wait until ipfs pubsub sub is ready to do work
43 - publish something from stdin Success 0.065
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfsi 3 pubsub pub testTopic &> pubErr
  
ok 43 - publish something from stdin
44 - wait until echo > wait executed Success 0.007
System.out »
expecting success: 
    cat wait2 &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 44 - wait until echo > wait executed
45 - cleanup fifos Success 0.005
System.out »
expecting success: 
    rm -f wait wait2
  
ok 45 - cleanup fifos
46 - stop iptb Success 0.023
System.out »
expecting success: 
  iptb stop

ok 46 - stop iptb
47 - disable signing on nodes 1-3 Success 0.114
System.out »
expecting success: 
  iptb run [0-3] -- ipfs config --json Pubsub.DisableSigning true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


ok 47 - disable signing on nodes 1-3
48 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.118
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 48 - set Routing.LoopbackAddressesOnLanDHT to true
49 - start up nodes with additional args Success 0.424
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-pubsub-experiment
    
ok 49 - start up nodes with additional args
50 - connect nodes to each other Success 0.449
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 50 - connect nodes to each other
51 - node 0 is connected Success 0.053
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 51 - node 0 is connected
52 - node 1 is connected Success 0.051
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 52 - node 1 is connected
53 - node 2 is connected Success 0.052
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 53 - node 2 is connected
54 - node 3 is connected Success 0.052
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 54 - node 3 is connected
55 - node 4 is connected Success 0.052
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 55 - node 4 is connected
56 - set node 4 to listen on testTopic Success 0.004
System.out »
expecting success: 
  rm -f node4_actual &&
  ipfsi 4 pubsub sub --enc=json testTopic > node4_actual &

ok 56 - set node 4 to listen on testTopic
57 - peer ids Success 0.034
System.out »
expecting success: 
    PEERID_0=$(iptb attr get 0 id) &&
    PEERID_2=$(iptb attr get 2 id)
  
ok 57 - peer ids
58 - pubsub Success 0.056
System.out »
expecting success: 
    echo -n -e "test\nOK" | ipfs multibase encode -b base64url > expected &&
    touch empty &&
    mkfifo wait ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 0 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait
        fi
    ) &
  
ok 58 - pubsub
59 - wait until ipfs pubsub sub is ready to do work Success 0.506
System.out »
expecting success: 
    go-sleep 500ms
  
ok 59 - wait until ipfs pubsub sub is ready to do work
60 - can see peer subscribed to testTopic Success 0.052
System.out »
expecting success: 
    ipfsi 1 pubsub peers testTopic > peers_out
  
ok 60 - can see peer subscribed to testTopic
61 - output looks good Success 0.004
System.out »
expecting success: 
    echo $PEERID_0 > peers_exp &&
    test_cmp peers_exp peers_out
  
ok 61 - output looks good
62 - publish something from file Success 0.058
System.out »
expecting success: 
    echo -n -e "test\nOK" > payload-file &&
    ipfsi 1 pubsub pub testTopic payload-file &> pubErr
  
ok 62 - publish something from file
63 - wait until echo > wait executed Success 0.006
System.out »
expecting success: 
    cat wait &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 63 - wait until echo > wait executed
64 - wait for another pubsub message Success 0.051
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfs multibase encode -b base64url > expected &&
    mkfifo wait2 ||
    test_fsh echo init fail

    # ipfs pubsub sub is long-running so we need to start it in the background and
    # wait put its output somewhere where we can access it
    (
      ipfsi 2 pubsub sub --enc=json testTopic | if read line; then
          echo $line | jq -j .data > actual &&
          echo > wait2
        fi
    ) &
  
ok 64 - wait for another pubsub message
65 - wait until ipfs pubsub sub is ready to do work Success 0.507
System.out »
expecting success: 
    go-sleep 500ms
  
ok 65 - wait until ipfs pubsub sub is ready to do work
66 - publish something from stdin Success 0.055
System.out »
expecting success: 
    echo -n -e "test\nOK\r\n2" | ipfsi 3 pubsub pub testTopic &> pubErr
  
ok 66 - publish something from stdin
67 - wait until echo > wait executed Success 0.007
System.out »
expecting success: 
    cat wait2 &&
    test_cmp pubErr empty &&
    test_cmp expected actual
  

ok 67 - wait until echo > wait executed
68 - cleanup fifos Success 0.004
System.out »
expecting success: 
    rm -f wait wait2
  
ok 68 - cleanup fifos
69 - stop iptb Success 0.077
System.out »
expecting success: 
  iptb stop

ok 69 - stop iptb
70 - node 4 got no unsigned messages Success 0.009
System.out »
expecting success: 
  test_must_be_empty node4_actual

ok 70 - node 4 got no unsigned messages
71 - enable the pubsub via config Success 0.104
System.out »
expecting success: 
  iptb run -- ipfs config --json Pubsub.Enabled true

node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 71 - enable the pubsub via config
72 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.104
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 72 - set Routing.LoopbackAddressesOnLanDHT to true
73 - start up nodes with additional args Success 0.422
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-pubsub-experiment=false
    
ok 73 - start up nodes with additional args
74 - connect nodes to each other Success 0.427
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 74 - connect nodes to each other
75 - node 0 is connected Success 0.080
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 75 - node 0 is connected
76 - node 1 is connected Success 0.062
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 76 - node 1 is connected
77 - node 2 is connected Success 0.057
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 77 - node 2 is connected
78 - node 3 is connected Success 0.055
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 78 - node 3 is connected
79 - node 4 is connected Success 0.053
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 79 - node 4 is connected
80 - pubsub cmd fails because it was disabled via cli flag Success 0.049
System.out »
expecting success: 
  test_expect_code 1 ipfsi 4 pubsub ls 2> pubsub_cmd_out

ok 80 - pubsub cmd fails because it was disabled via cli flag
81 - pubsub cmd produces error Success 0.005
System.out »
expecting success: 
  echo "Error: experimental pubsub feature not enabled, run daemon with --enable-pubsub-experiment to use" > expected &&
  test_cmp expected pubsub_cmd_out

ok 81 - pubsub cmd produces error
82 - stop iptb Success 0.019
System.out »
expecting success: 
  iptb stop

ok 82 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - init iptb
ok 2 - disable the DHT
ok 3 - enable the pubsub
ok 4 - set Routing.LoopbackAddressesOnLanDHT to true
ok 5 - start up nodes
ok 6 - connect nodes to each other
ok 7 - node 0 is connected
ok 8 - node 1 is connected
ok 9 - node 2 is connected
ok 10 - node 3 is connected
ok 11 - node 4 is connected
ok 12 - peer ids
ok 13 - pubsub
ok 14 - wait until ipfs pubsub sub is ready to do work
ok 15 - can see peer subscribed to testTopic
ok 16 - output looks good
ok 17 - publish something from file
ok 18 - wait until echo > wait executed
ok 19 - wait for another pubsub message
ok 20 - wait until ipfs pubsub sub is ready to do work
ok 21 - publish something from stdin
ok 22 - wait until echo > wait executed
ok 23 - cleanup fifos
ok 24 - stop iptb
ok 25 - disable the pubsub
ok 26 - set Routing.LoopbackAddressesOnLanDHT to true
ok 27 - start up nodes with additional args
ok 28 - connect nodes to each other
ok 29 - node 0 is connected
ok 30 - node 1 is connected
ok 31 - node 2 is connected
ok 32 - node 3 is connected
ok 33 - node 4 is connected
ok 34 - peer ids
ok 35 - pubsub
ok 36 - wait until ipfs pubsub sub is ready to do work
ok 37 - can see peer subscribed to testTopic
ok 38 - output looks good
ok 39 - publish something from file
ok 40 - wait until echo > wait executed
ok 41 - wait for another pubsub message
ok 42 - wait until ipfs pubsub sub is ready to do work
ok 43 - publish something from stdin
ok 44 - wait until echo > wait executed
ok 45 - cleanup fifos
ok 46 - stop iptb
ok 47 - disable signing on nodes 1-3
ok 48 - set Routing.LoopbackAddressesOnLanDHT to true
ok 49 - start up nodes with additional args
ok 50 - connect nodes to each other
ok 51 - node 0 is connected
ok 52 - node 1 is connected
ok 53 - node 2 is connected
ok 54 - node 3 is connected
ok 55 - node 4 is connected
ok 56 - set node 4 to listen on testTopic
ok 57 - peer ids
ok 58 - pubsub
ok 59 - wait until ipfs pubsub sub is ready to do work
ok 60 - can see peer subscribed to testTopic
ok 61 - output looks good
ok 62 - publish something from file
ok 63 - wait until echo > wait executed
ok 64 - wait for another pubsub message
ok 65 - wait until ipfs pubsub sub is ready to do work
ok 66 - publish something from stdin
ok 67 - wait until echo > wait executed
ok 68 - cleanup fifos
ok 69 - stop iptb
ok 70 - node 4 got no unsigned messages
ok 71 - enable the pubsub via config
ok 72 - set Routing.LoopbackAddressesOnLanDHT to true
ok 73 - start up nodes with additional args
ok 74 - connect nodes to each other
ok 75 - node 0 is connected
ok 76 - node 1 is connected
ok 77 - node 2 is connected
ok 78 - node 3 is connected
ok 79 - node 4 is connected
ok 80 - pubsub cmd fails because it was disabled via cli flag
ok 81 - pubsub cmd produces error
ok 82 - stop iptb

Back to top

TestCase t0321-pubsub-gossipsub

Name Status Type Time(s)
1 - init iptb Success 0.708
System.out »
expecting success: 
  iptb testbed create -type localipfs -count $NUM_NODES -init

ok 1 - init iptb
2 - enable gossipsub Success 0.416
System.out »
expecting success: 
  for x in $(seq 0 4); do
    ipfsi $x config Pubsub.Router gossipsub
  done

ok 2 - enable gossipsub
3 - set Routing.LoopbackAddressesOnLanDHT to true Success 0.166
System.out »
expecting success: 
    iptb run [0-$bound] -- ipfs config --json "Routing.LoopbackAddressesOnLanDHT" true
  
node[0] exit 0


node[1] exit 0


node[2] exit 0


node[3] exit 0


node[4] exit 0


ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
4 - start up nodes with additional args Success 0.443
System.out »
expecting success: 
      iptb start -wait [0-4] -- --enable-pubsub-experiment
    
ok 4 - start up nodes with additional args
5 - connect nodes to each other Success 0.636
System.out »
expecting success: 
    iptb connect [1-$bound] 0
  
ok 5 - connect nodes to each other
6 - node 0 is connected Success 0.064
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 6 - node 0 is connected
7 - node 1 is connected Success 0.072
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 7 - node 1 is connected
8 - node 2 is connected Success 0.067
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 8 - node 2 is connected
9 - node 3 is connected Success 0.070
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 9 - node 3 is connected
10 - node 4 is connected Success 0.072
System.out »
expecting success: 
      check_has_connection "$i" ||
      test_fsh cat "swarm_peers_$i"
    
ok 10 - node 4 is connected
11 - peer ids Success 0.058
System.out »
expecting success: 
  PEERID_0=$(iptb attr get 0 id) &&
  PEERID_2=$(iptb attr get 2 id)

ok 11 - peer ids
12 - pubsub Success 0.080
System.out »
expecting success: 
  echo -n -e "test\nOK" | ipfs multibase encode -b base64url > expected &&
  touch empty &&
  mkfifo wait ||
  test_fsh echo init fail

  # ipfs pubsub sub is long-running so we need to start it in the background and
  # wait put its output somewhere where we can access it
  (
    ipfsi 0 pubsub sub --enc=json testTopic | if read line; then
        echo $line | jq -j .data > actual &&
        echo > wait
      fi
  ) &

ok 12 - pubsub
13 - wait until ipfs pubsub sub is ready to do work Success 0.508
System.out »
expecting success: 
  go-sleep 500ms

ok 13 - wait until ipfs pubsub sub is ready to do work
14 - can see peer subscribed to testTopic Success 0.058
System.out »
expecting success: 
  ipfsi 1 pubsub peers testTopic > peers_out

ok 14 - can see peer subscribed to testTopic
15 - output looks good Success 0.005
System.out »
expecting success: 
  echo $PEERID_0 > peers_exp &&
  test_cmp peers_exp peers_out

ok 15 - output looks good
16 - publish something from a file Success 0.091
System.out »
expecting success: 
  echo -n -e "test\nOK" > payload-file &&
  ipfsi 1 pubsub pub testTopic payload-file &> pubErr

ok 16 - publish something from a file
17 - wait until echo > wait executed Success 0.008
System.out »
expecting success: 
  cat wait &&
  test_cmp pubErr empty &&
  test_cmp expected actual


ok 17 - wait until echo > wait executed
18 - wait for another pubsub message Success 0.072
System.out »
expecting success: 
  echo -n -e "test\nOK2" | ipfs multibase encode -b base64url > expected &&
  mkfifo wait2 ||
  test_fsh echo init fail

  # ipfs pubsub sub is long-running so we need to start it in the background and
  # wait put its output somewhere where we can access it
  (
    ipfsi 2 pubsub sub --enc=json testTopic | if read line; then
        echo $line | jq -j .data > actual &&
        echo > wait2
      fi
  ) &

ok 18 - wait for another pubsub message
19 - wait until ipfs pubsub sub is ready to do work Success 0.514
System.out »
expecting success: 
  go-sleep 500ms

ok 19 - wait until ipfs pubsub sub is ready to do work
20 - publish something Success 0.144
System.out »
expecting success: 
  echo -n -e "test\nOK2" | ipfsi 1 pubsub pub testTopic &> pubErr

ok 20 - publish something
21 - wait until echo > wait executed Success 0.025
System.out »
expecting success: 
  cat wait2 &&
  test_cmp pubErr empty &&
  test_cmp expected actual


ok 21 - wait until echo > wait executed
22 - stop iptb Success 0.037
System.out »
expecting success: 
  iptb stop

ok 22 - stop iptb
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - init iptb
ok 2 - enable gossipsub
ok 3 - set Routing.LoopbackAddressesOnLanDHT to true
ok 4 - start up nodes with additional args
ok 5 - connect nodes to each other
ok 6 - node 0 is connected
ok 7 - node 1 is connected
ok 8 - node 2 is connected
ok 9 - node 3 is connected
ok 10 - node 4 is connected
ok 11 - peer ids
ok 12 - pubsub
ok 13 - wait until ipfs pubsub sub is ready to do work
ok 14 - can see peer subscribed to testTopic
ok 15 - output looks good
ok 16 - publish something from a file
ok 17 - wait until echo > wait executed
ok 18 - wait for another pubsub message
ok 19 - wait until ipfs pubsub sub is ready to do work
ok 20 - publish something
ok 21 - wait until echo > wait executed
ok 22 - stop iptb

Back to top

TestCase t0322-pubsub-http-rpc

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.149
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.195
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.518
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0322-pubsub-http-rpc.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0322-pubsub-http-rpc.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0322-pubsub-http-rpc.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.019
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.064
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.012
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.020
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - /api/v0/pubsub/pub URL arg must be multibase encoded Success 0.019
System.out »
expecting success: 
  echo test > data.txt &&
  curl -s -X POST -F "data=@data.txt" "$API_ADDR/api/v0/pubsub/pub?arg=foobar" > result &&
  test_should_contain "error" result &&
  test_should_contain "URL arg must be multibase encoded" result

ok 10 - /api/v0/pubsub/pub URL arg must be multibase encoded
11 - /api/v0/pubsub/pub URL arg must be in URL-safe multibase Success 0.021
System.out »
expecting success: 
  echo test > data.txt &&
  curl -s -X POST -F "data=@data.txt" "$API_ADDR/api/v0/pubsub/pub?arg=mZm9vYmFyCg" > result &&
  test_should_contain "error" result &&
  test_should_contain "URL arg must be base64url encoded" result

ok 11 - /api/v0/pubsub/pub URL arg must be in URL-safe multibase
12 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 12 - 'ipfs daemon' is still running
13 - 'ipfs daemon' can be killed Success 0.278
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 13 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - /api/v0/pubsub/pub URL arg must be multibase encoded
ok 11 - /api/v0/pubsub/pub URL arg must be in URL-safe multibase
ok 12 - 'ipfs daemon' is still running
ok 13 - 'ipfs daemon' can be killed

Back to top

TestCase t0400-api-no-gateway

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.117
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.194
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.471
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0400-api-no-gateway.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0400-api-no-gateway.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0400-api-no-gateway.sh/mfs"
ok 3 - prepare config -- mounting
4 - Add the test directory Success 0.091
System.out »
expecting success: 
  ipfs dag import ../t0400-api-no-gateway/fixtures.car

Pinned root	QmNYERzV2LfD2kkfahtfv44ocHzEFK1sLBaE7zdcYT2GAZ	success
ok 4 - Add the test directory
5 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 5 - 'ipfs daemon' succeeds
6 - api file shows up Success 0.220
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 6 - api file shows up
7 - set up address variables Success 0.027
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 7 - set up address variables
8 - get swarm addresses Success 0.084
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 8 - get swarm addresses
9 - set swarm address vars Success 0.008
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 9 - set swarm address vars
10 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 10 - 'ipfs daemon' is ready
11 - Gateway on API unavailable Success 0.016
System.out »
expecting success: 
  test_curl_resp_http_code "http://127.0.0.1:$API_PORT/ipfs/$HASH" "HTTP/1.1 404 Not Found"

ok 11 - Gateway on API unavailable
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0    19    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
12 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 12 - 'ipfs daemon' is still running
13 - 'ipfs daemon' can be killed Success 0.263
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 13 - 'ipfs daemon' can be killed
14 - 'ipfs daemon' succeeds Success 0.006
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 14 - 'ipfs daemon' succeeds
15 - api file shows up Success 0.231
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 15 - api file shows up
16 - set up address variables Success 0.069
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 16 - set up address variables
17 - get swarm addresses Success 0.123
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 17 - get swarm addresses
18 - set swarm address vars Success 0.029
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 18 - set swarm address vars
19 - 'ipfs daemon' is ready Success 0.017
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 19 - 'ipfs daemon' is ready
20 - Gateway on --unrestricted-api API available Success 0.030
System.out »
expecting success: 
  test_curl_resp_http_code "http://127.0.0.1:$API_PORT/ipfs/$HASH" "HTTP/1.1 200 OK"

ok 20 - Gateway on --unrestricted-api API available
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     8    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
21 - 'ipfs daemon' is still running Success 0.015
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 21 - 'ipfs daemon' is still running
22 - 'ipfs daemon' can be killed Success 0.371
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 22 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - Add the test directory
ok 5 - 'ipfs daemon' succeeds
ok 6 - api file shows up
ok 7 - set up address variables
ok 8 - get swarm addresses
ok 9 - set swarm address vars
ok 10 - 'ipfs daemon' is ready
ok 11 - Gateway on API unavailable
ok 12 - 'ipfs daemon' is still running
ok 13 - 'ipfs daemon' can be killed
ok 14 - 'ipfs daemon' succeeds
ok 15 - api file shows up
ok 16 - set up address variables
ok 17 - get swarm addresses
ok 18 - set swarm address vars
ok 19 - 'ipfs daemon' is ready
ok 20 - Gateway on --unrestricted-api API available
ok 21 - 'ipfs daemon' is still running
ok 22 - 'ipfs daemon' can be killed

Back to top

TestCase t0401-api-browser-security

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.176
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.350
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.868
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0401-api-browser-security.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0401-api-browser-security.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0401-api-browser-security.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.023
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.085
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - browser is unable to access API without Origin Success 0.017
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 403 Forbidden" curl_output

HTTP/1.1 403 Forbidden
ok 10 - browser is unable to access API without Origin
11 - browser is unable to access API with invalid Origin Success 0.016
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: https://invalid.example.com" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 403 Forbidden" curl_output

HTTP/1.1 403 Forbidden
ok 11 - browser is unable to access API with invalid Origin
12 - browser is able to access API if Origin is the API port on localhost (ipv4) Success 0.018
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: http://127.0.0.1:$API_PORT" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 12 - browser is able to access API if Origin is the API port on localhost (ipv4)
13 - browser is able to access API if Origin is the API port on localhost (ipv6) Success 0.039
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: http://[::1]:$API_PORT" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 13 - browser is able to access API if Origin is the API port on localhost (ipv6)
14 - browser is able to access API if Origin is the API port on localhost (localhost name) Success 0.059
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: http://localhost:$API_PORT" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 14 - browser is able to access API if Origin is the API port on localhost (localhost name)
15 - Random browser extension is unable to access RPC API due to invalid Origin Success 0.016
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: chrome-extension://invalidextensionid" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 403 Forbidden" curl_output

HTTP/1.1 403 Forbidden
ok 15 - Random browser extension is unable to access RPC API due to invalid Origin
16 - Companion extension is able to access RPC API on localhost Success 0.015
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: chrome-extension://nibjojkomfdiaoajekhjakgkdhaomnch" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  cat curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Access-Control-Allow-Origin: chrome-extension://nibjojkomfdiaoajekhjakgkdhaomnch
Access-Control-Expose-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Content-Type: application/json
Server: kubo/0.41.0-dev
Trailer: X-Stream-Error
Vary: Origin
Date: Fri, 27 Feb 2026 18:14:26 GMT
Transfer-Encoding: chunked

{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 16 - Companion extension is able to access RPC API on localhost
17 - Companion beta extension is able to access API on localhost Success 0.018
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: chrome-extension://hjoieblefckbooibpepigmacodalfndh" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/33619/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 17 - Companion beta extension is able to access API on localhost
18 - 'ipfs daemon' is still running Success 0.005
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.258
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
20 - setting CORS in API.HTTPHeaders works via CLI Success 0.227
System.out »
expecting success: 
  ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["https://valid.example.com"]' &&
  ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["POST"]' &&
  ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["X-Requested-With"]'

ok 20 - setting CORS in API.HTTPHeaders works via CLI
21 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 21 - 'ipfs daemon' succeeds
22 - api file shows up Success 0.233
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 22 - api file shows up
23 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 23 - set up address variables
24 - get swarm addresses Success 0.076
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 24 - get swarm addresses
25 - set swarm address vars Success 0.012
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 25 - set swarm address vars
26 - 'ipfs daemon' is ready Success 0.010
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 26 - 'ipfs daemon' is ready
27 - Companion extension is able to access RPC API even when custom Access-Control-Allow-Origin is set Success 0.106
System.out »
expecting success: 
  ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin | grep -q valid.example.com  &&
  curl -sD - -X POST -A "Mozilla" -H "Origin: chrome-extension://nibjojkomfdiaoajekhjakgkdhaomnch" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  cat curl_output &&
  grep "HTTP/1.1 200 OK" curl_output &&
  grep "$PEERID" curl_output

HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Access-Control-Allow-Origin: chrome-extension://nibjojkomfdiaoajekhjakgkdhaomnch
Access-Control-Expose-Headers: X-Stream-Output, X-Chunked-Output, X-Content-Length
Content-Type: application/json
Server: kubo/0.41.0-dev
Trailer: X-Stream-Error
Vary: Origin
Date: Fri, 27 Feb 2026 18:14:27 GMT
Transfer-Encoding: chunked

{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/38531/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/38531/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 27 - Companion extension is able to access RPC API even when custom Access-Control-Allow-Origin is set
28 - OPTIONS with preflight request to API with CORS allowlist succeeds Success 0.015
System.out »
expecting success: 
  curl -svX OPTIONS -A "Mozilla" -H "Origin: https://valid.example.com" -H "Access-Control-Request-Method: POST" -H "Access-Control-Request-Headers: origin, x-requested-with" "http://127.0.0.1:$API_PORT/api/v0/id" 2>curl_output &&
  cat curl_output

*   Trying 127.0.0.1:41589...
* Connected to 127.0.0.1 (127.0.0.1) port 41589
> OPTIONS /api/v0/id HTTP/1.1
> Host: 127.0.0.1:41589
> User-Agent: Mozilla
> Accept: */*
> Origin: https://valid.example.com
> Access-Control-Request-Method: POST
> Access-Control-Request-Headers: origin, x-requested-with
> 
< HTTP/1.1 204 No Content
< Access-Control-Allow-Headers: origin, x-requested-with
< Access-Control-Allow-Methods: POST
< Access-Control-Allow-Origin: https://valid.example.com
< Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
< Date: Fri, 27 Feb 2026 18:14:27 GMT
< 
* Connection #0 to host 127.0.0.1 left intact
ok 28 - OPTIONS with preflight request to API with CORS allowlist succeeds
29 - OPTIONS response for API with CORS allowslist looks good Success 0.006
System.out »
expecting success: 
  grep "< Access-Control-Allow-Origin: https://valid.example.com" curl_output

< Access-Control-Allow-Origin: https://valid.example.com
ok 29 - OPTIONS response for API with CORS allowslist looks good
30 - browser is able to access API with valid Origin matching CORS allowlist Success 0.017
System.out »
expecting success: 
  curl -sD - -X POST -A "Mozilla" -H "Origin: https://valid.example.com" "http://127.0.0.1:$API_PORT/api/v0/id" >curl_output &&
  grep "HTTP/1.1 200 OK" curl_output && grep "$PEERID" curl_output

HTTP/1.1 200 OK
{"ID":"12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT","PublicKey":"CAESIKYxf4dfdgjsmS3olT/fzKAyX0NmrJn2BIzvDKh+0GVG","Addresses":["/ip4/127.0.0.1/tcp/38531/p2p/12D3KooWM17d6EVNJDD2T2nUnCVfjfcU4LYFSBnoM4xD1FKMPuoT"],"AgentVersion":"kubo/0.41.0-dev","Protocols":["/ipfs/bitswap","/ipfs/bitswap/1.0.0","/ipfs/bitswap/1.1.0","/ipfs/bitswap/1.2.0","/ipfs/id/1.0.0","/ipfs/id/push/1.0.0","/ipfs/lan/kad/1.0.0","/ipfs/ping/1.0.0","/libp2p/autonat/1.0.0","/libp2p/autonat/2/dial-back","/libp2p/autonat/2/dial-request","/libp2p/circuit/relay/0.2.0/stop","/x/"]}
ok 30 - browser is able to access API with valid Origin matching CORS allowlist
31 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 31 - 'ipfs daemon' is still running
32 - 'ipfs daemon' can be killed Success 0.261
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 32 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - browser is unable to access API without Origin
ok 11 - browser is unable to access API with invalid Origin
ok 12 - browser is able to access API if Origin is the API port on localhost (ipv4)
ok 13 - browser is able to access API if Origin is the API port on localhost (ipv6)
ok 14 - browser is able to access API if Origin is the API port on localhost (localhost name)
ok 15 - Random browser extension is unable to access RPC API due to invalid Origin
ok 16 - Companion extension is able to access RPC API on localhost
ok 17 - Companion beta extension is able to access API on localhost
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed
ok 20 - setting CORS in API.HTTPHeaders works via CLI
ok 21 - 'ipfs daemon' succeeds
ok 22 - api file shows up
ok 23 - set up address variables
ok 24 - get swarm addresses
ok 25 - set swarm address vars
ok 26 - 'ipfs daemon' is ready
ok 27 - Companion extension is able to access RPC API even when custom Access-Control-Allow-Origin is set
ok 28 - OPTIONS with preflight request to API with CORS allowlist succeeds
ok 29 - OPTIONS response for API with CORS allowslist looks good
ok 30 - browser is able to access API with valid Origin matching CORS allowlist
ok 31 - 'ipfs daemon' is still running
ok 32 - 'ipfs daemon' can be killed

Back to top

TestCase t0410-api-add

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.107
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.154
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.617
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0410-api-add.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0410-api-add.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0410-api-add.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.208
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.021
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.072
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.009
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - API Add response includes size field Success 0.022
System.out »
expecting success: 
  echo "hi" | curl -s -F file=@- "http://localhost:$API_PORT/api/v0/add" | grep "\"Size\": *\"11\""

{"Name":"-","Hash":"QmZLRFWaz9Kypt2ACNMDzA5uzACDRiCqwdkNSP1UZsu56D","Size":"11"}
ok 10 - API Add response includes size field
11 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 11 - 'ipfs daemon' is still running
12 - 'ipfs daemon' can be killed Success 0.260
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 12 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - API Add response includes size field
ok 11 - 'ipfs daemon' is still running
ok 12 - 'ipfs daemon' can be killed

Back to top

TestCase t0500-issues-and-regressions-offline

Name Status Type Time(s)
1 - ipfs init with occupied input works - #2748 Success 0.123
System.out »
expecting success: 
  export IPFS_PATH="ipfs_path"
  echo "" | go-timeout 10 ipfs init &&
  rm -rf ipfs_path

generating ED25519 keypair...done
peer identity: 12D3KooWRQwfXFVSA8wDfRtbFjCUZ5R4rYBEkKDut42HwybAxDeK
initializing IPFS node at ipfs_path
ok 1 - ipfs init with occupied input works - #2748
2 - ipfs init succeeds Success 0.138
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 2 - ipfs init succeeds
3 - disable telemetry Success 0.192
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 3 - disable telemetry
4 - prepare config -- mounting Success 0.439
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0500-issues-and-regressions-offline.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0500-issues-and-regressions-offline.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0500-issues-and-regressions-offline.sh/mfs"
ok 4 - prepare config -- mounting
5 - ipfs cat --help succeeds when input remains open Success 0.068
System.out »
expecting success: 
  yes | go-timeout 1 ipfs cat --help

USAGE
  ipfs cat <ipfs-path>... - Show IPFS object data.

SYNOPSIS
  ipfs cat [--offset=<offset> | -o] [--length=<length> | -l] [--progress=false]
           [--] <ipfs-path>...

ARGUMENTS

  <ipfs-path>... - The path to the IPFS object(s) to be outputted.

OPTIONS

  -o, --offset    int64 - Byte offset to begin reading from.
  -l, --length    int64 - Maximum number of bytes to read.
  -p, --progress  bool  - Stream progress data. Default: true.

DESCRIPTION

  Displays the data contained by an IPFS or IPNS object(s) at the given path.


ok 5 - ipfs cat --help succeeds when input remains open
System.err »
yes: standard output: Broken pipe
6 - ipfs pin ls --help succeeds when input remains open Success 0.067
System.out »
expecting success: 
  yes | go-timeout 1 ipfs pin ls --help

USAGE
  ipfs pin ls [<ipfs-path>]... - List objects pinned to local storage.

SYNOPSIS
  ipfs pin ls [--type=<type> | -t] [--quiet | -q] [--name=<name> | -n]
              [--stream | -s] [--names] [--] [<ipfs-path>...]

ARGUMENTS

  [<ipfs-path>]... - Path to object(s) to be listed.

OPTIONS

  -t, --type    string - The type of pinned keys to list. Can be "direct",
                         "indirect", "recursive", or "all". Default: all.
  -q, --quiet   bool   - Output only the CIDs of pins.
  -n, --name    string - Limit returned pins to ones with names that contain
                         the value provided (case-sensitive, partial match).
                         Implies --names=true.
  -s, --stream  bool   - Enable streaming of pins as they are discovered.
  --names       bool   - Include pin names in the output (slower, disabled by
                         default).

DESCRIPTION

  Returns a list of objects that are pinned locally.
  
  By default, all pinned objects are returned, but the '--type' flag or
  arguments can restrict that to a specific pin type or to some specific objects
  respectively.
  
  Use --type=<type> to specify the type of pinned keys to list.
  Valid values are:
      * "direct": pin that specific object.
      * "recursive": pin that specific object, and indirectly pin all its
        descendants
      * "indirect": pinned indirectly by an ancestor (like a refcount)
      * "all"
  
  By default, pin names are not included (returned as empty).
  Pass '--names' flag to return pin names (set with '--name' from 'pin add').
  
  With arguments, the command fails if any of the arguments is not a pinned
  object. And if --type=<type> is additionally used, the command will also fail
  if any of the arguments is not of the specified type.
  
  Example:
  	$ echo "hello" | ipfs add -q
  	QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
  	$ ipfs pin ls
  	QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN recursive
  	# now remove the pin, and repin it directly
  	$ ipfs pin rm QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
  	unpinned QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
  	$ ipfs pin add -r=false QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
  	pinned QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN directly
  	$ ipfs pin ls --type=direct
  	QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN direct
  	$ ipfs pin ls QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN
  	QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN direct


ok 6 - ipfs pin ls --help succeeds when input remains open
System.err »
yes: standard output: Broken pipe
7 - ipfs add on 1MB from stdin woks Success 0.089
System.out »
expecting success: 
  random-data -size=1048576 -seed=42 | ipfs add -q > 1MB.hash

ok 7 - ipfs add on 1MB from stdin woks
8 - 'ipfs refs -r -e $(cat 1MB.hash)' succeeds Success 0.076
System.out »
expecting success: 
  ipfs refs -r -e $(cat 1MB.hash) > refs-e.out

ok 8 - 'ipfs refs -r -e $(cat 1MB.hash)' succeeds
9 - output of 'ipfs refs -e' links to separate blocks Success 0.008
System.out »
expecting success: 
  grep "$(cat 1MB.hash) ->" refs-e.out

QmTRwPZM3nsYeGMdHsTTJKnb6zDXCGvc1DJ81Z3efhzH22 -> QmVv98nkCyJAb1SNUTL5CZsvzY6jCrJ1x5ckjnYuPeyHiy
QmTRwPZM3nsYeGMdHsTTJKnb6zDXCGvc1DJ81Z3efhzH22 -> QmaMWVLt2duk5Z9zPTcjAjAzCqSrSKuZpJsfnLEzABhqLx
QmTRwPZM3nsYeGMdHsTTJKnb6zDXCGvc1DJ81Z3efhzH22 -> QmUedJvxLVvEBzxfxK3Pec96rm2cEwLqmo9MkVNVz6e54g
QmTRwPZM3nsYeGMdHsTTJKnb6zDXCGvc1DJ81Z3efhzH22 -> QmZ165mZXZqjw21R7dcgVN9tcHQdm5KZyRczqgyor1akDd
ok 9 - output of 'ipfs refs -e' links to separate blocks
10 - output of 'ipfs refs -e' contains all first level links Success 0.110
System.out »
expecting success: 
  grep "$(cat 1MB.hash) ->" refs-e.out | sed -e 's/.* -> //' | sort > refs-s.out &&
  ipfs refs "$(cat 1MB.hash)" | sort > refs-one.out &&
  test_cmp refs-s.out refs-one.out

ok 10 - output of 'ipfs refs -e' contains all first level links
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init with occupied input works - #2748
ok 2 - ipfs init succeeds
ok 3 - disable telemetry
ok 4 - prepare config -- mounting
ok 5 - ipfs cat --help succeeds when input remains open
ok 6 - ipfs pin ls --help succeeds when input remains open
ok 7 - ipfs add on 1MB from stdin woks
ok 8 - 'ipfs refs -r -e $(cat 1MB.hash)' succeeds
ok 9 - output of 'ipfs refs -e' links to separate blocks
ok 10 - output of 'ipfs refs -e' contains all first level links

Back to top

TestCase t0600-issues-and-regressions-online

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.123
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.130
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.523
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0600-issues-and-regressions-online.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0600-issues-and-regressions-online.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0600-issues-and-regressions-online.sh/mfs"
ok 3 - prepare config -- mounting
4 - 'ipfs daemon' succeeds Success 0.005
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 4 - 'ipfs daemon' succeeds
5 - api file shows up Success 0.209
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 5 - api file shows up
6 - set up address variables Success 0.017
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 6 - set up address variables
7 - get swarm addresses Success 0.058
System.out »
expecting success: 
      ipfs swarm addrs local > addrs_out
    
ok 7 - get swarm addresses
8 - set swarm address vars Success 0.007
System.out »
expecting success: 
      SWARM_MADDR=$(grep "127.0.0.1" addrs_out) &&
      SWARM_PORT=$(port_from_maddr $SWARM_MADDR)
    
ok 8 - set swarm address vars
9 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 9 - 'ipfs daemon' is ready
10 - commands command with flag flags works via HTTP API - #2301 Success 0.012
System.out »
expecting success: 
  curl -X POST "http://$API_ADDR/api/v0/commands?flags" | grep "verbose"

{"Name":"ipfs","Subcommands":[{"Name":"provide","Subcommands":[{"Name":"clear","Subcommands":[],"Options":[{"Names":["quiet","q"]}]},{"Name":"stat","Subcommands":[],"Options":[{"Names":["lan"]},{"Names":["all","a"]},{"Names":["compact"]},{"Names":["connectivity"]},{"Names":["network"]},{"Names":["schedule"]},{"Names":["timings"]},{"Names":["workers"]},{"Names":["operations"]},{"Names":["queues"]}]}],"Options":[]},{"Name":"pubsub","Subcommands":[{"Name":"pub","Subcommands":[],"Options":[]},{"Name":"sub","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[]},{"Name":"peers","Subcommands":[],"Options":[]},{"Name":"reset","Subcommands":[],"Options":[{"Names":["peer","p"]}]}],"Options":[]},{"Name":"refs","Subcommands":[{"Name":"local","Subcommands":[],"Options":[]}],"Options":[{"Names":["format"]},{"Names":["edges","e"]},{"Names":["unique","u"]},{"Names":["recursive","r"]},{"Names":["max-depth"]}]},{"Name":"swarm","Subcommands":[{"Name":"connect","Subcommands":[],"Options":[]},{"Name":"disconnect","Subcommands":[],"Options":[]},{"Name":"filters","Subcommands":[{"Name":"add","Subcommands":[],"Options":[]},{"Name":"rm","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"peers","Subcommands":[],"Options":[{"Names":["verbose","v"]},{"Names":["streams"]},{"Names":["latency"]},{"Names":["direction"]},{"Names":["identify"]}]},{"Name":"peering","Subcommands":[{"Name":"rm","Subcommands":[],"Options":[]},{"Name":"add","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"resources","Subcommands":[],"Options":[]},{"Name":"addrs","Subcommands":[{"Name":"autonat","Subcommands":[],"Options":[]},{"Name":"local","Subcommands":[],"Options":[{"Names":["id"]}]},{"Name":"listen","Subcommands":[],"Options":[]}],"Options":[]}],"Options":[]},{"Name":"add","Subcommands":[],"Options":[{"Names":["recursive","r"]},{"Names":["dereference-args"]},{"Names":["stdin-name"]},{"Names":["hidden","H"]},{"Names":["ignore"]},{"Names":["ignore-rules-path"]},{"Names":["empty-dirs","E"]},{"Names":["dereference-symlinks"]},{"Names":["quiet","q"]},{"Names":["quieter","Q"]},{"Names":["silent"]},{"Names":["progress","p"]},{"Names":["only-hash","n"]},{"Names":["wrap-with-directory","w"]},{"Names":["pin"]},{"Names":["pin-name"]},{"Names":["to-files"]},{"Names":["cid-version"]},{"Names":["hash"]},{"Names":["raw-leaves"]},{"Names":["chunker","s"]},{"Names":["trickle","t"]},{"Names":["max-file-links"]},{"Names":["max-directory-links"]},{"Names":["max-hamt-fanout"]},{"Names":["inline"]},{"Names":["inline-limit"]},{"Names":["nocopy"]},{"Names":["fscache"]},{"Names":["preserve-mode"]},{"Names":["preserve-mtime"]},{"Names":["mode"]},{"Names":["mtime"]},{"Names":["mtime-nsecs"]},{"Names":["fast-provide-root"]},{"Names":["fast-provide-wait"]}]},{"Name":"dag","Subcommands":[{"Name":"put","Subcommands":[],"Options":[{"Names":["store-codec"]},{"Names":["input-codec"]},{"Names":["pin"]},{"Names":["hash"]},{"Names":["allow-big-block"]}]},{"Name":"get","Subcommands":[],"Options":[{"Names":["output-codec"]}]},{"Name":"resolve","Subcommands":[],"Options":[]},{"Name":"import","Subcommands":[],"Options":[{"Names":["pin-roots"]},{"Names":["silent"]},{"Names":["stats"]},{"Names":["fast-provide-root"]},{"Names":["fast-provide-wait"]},{"Names":["allow-big-block"]}]},{"Name":"export","Subcommands":[],"Options":[{"Names":["progress","p"]}]},{"Name":"stat","Subcommands":[],"Options":[{"Names":["progress","p"]}]}],"Options":[]},{"Name":"dht","Subcommands":[{"Name":"provide","Subcommands":[],"Options":[]},{"Name":"query","Subcommands":[],"Options":[{"Names":["verbose","v"]}]},{"Name":"findprovs","Subcommands":[],"Options":[]},{"Name":"findpeer","Subcommands":[],"Options":[]},{"Name":"get","Subcommands":[],"Options":[]},{"Name":"put","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"routing","Subcommands":[{"Name":"findprovs","Subcommands":[],"Options":[{"Names":["verbose","v"]},{"Names":["num-providers","n"]}]},{"Name":"findpeer","Subcommands":[],"Options":[{"Names":["verbose","v"]}]},{"Name":"get","Subcommands":[],"Options":[]},{"Name":"put","Subcommands":[],"Options":[{"Names":["allow-offline"]}]},{"Name":"provide","Subcommands":[],"Options":[{"Names":["verbose","v"]},{"Names":["recursive","r"]}]},{"Name":"reprovide","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"pin","Subcommands":[{"Name":"add","Subcommands":[],"Options":[{"Names":["recursive","r"]},{"Names":["name","n"]},{"Names":["progress"]}]},{"Name":"rm","Subcommands":[],"Options":[{"Names":["recursive","r"]}]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["type","t"]},{"Names":["quiet","q"]},{"Names":["name","n"]},{"Names":["stream","s"]},{"Names":["names"]}]},{"Name":"verify","Subcommands":[],"Options":[{"Names":["verbose"]},{"Names":["quiet","q"]}]},{"Name":"update","Subcommands":[],"Options":[{"Names":["unpin"]}]},{"Name":"remote","Subcommands":[{"Name":"add","Subcommands":[],"Options":[{"Names":["service"]},{"Names":["name"]},{"Names":["background"]}]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["service"]},{"Names":["name"]},{"Names":["cid"]},{"Names":["status"]}]},{"Name":"rm","Subcommands":[],"Options":[{"Names":["service"]},{"Names":["name"]},{"Names":["cid"]},{"Names":["status"]},{"Names":["force"]}]},{"Name":"service","Subcommands":[{"Name":"add","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["stat"]}]},{"Name":"rm","Subcommands":[],"Options":[]}],"Options":[]}],"Options":[]}],"Options":[]},{"Name":"ping","Subcommands":[],"Options":[{"Names":["count","n"]}]},{"Name":"version","Subcommands":[{"Name":"deps","Subcommands":[],"Options":[]},{"Name":"check","Subcommands":[],"Options":[{"Names":["min-percent","t"]}]}],"Options":[{"Names":["number","n"]},{"Names":["commit"]},{"Names":["repo"]},{"Names":["all"]}]},{"Name":"cid","Subcommands":[{"Name":"codecs","Subcommands":[],"Options":[{"Names":["numeric","n"]},{"Names":["supported","s"]}]},{"Name":"hashes","Subcommands":[],"Options":[{"Names":["numeric","n"]},{"Names":["supported","s"]}]},{"Name":"format","Subcommands":[],"Options":[{"Names":["f"]},{"Names":["v"]},{"Names":["mc"]},{"Names":["b"]}]},{"Name":"base32","Subcommands":[],"Options":[]},{"Name":"bases","Subcommands":[],"Options":[{"Names":["prefix"]},{"Names":["numeric"]}]}],"Options":[]},{"Name":"config","Subcommands":[{"Name":"replace","Subcommands":[],"Options":[]},{"Name":"profile","Subcommands":[{"Name":"apply","Subcommands":[],"Options":[{"Names":["dry-run"]}]}],"Options":[]},{"Name":"show","Subcommands":[],"Options":[]},{"Name":"edit","Subcommands":[],"Options":[]}],"Options":[{"Names":["bool"]},{"Names":["json"]},{"Names":["expand-auto"]}]},{"Name":"mount","Subcommands":[],"Options":[]},{"Name":"object","Subcommands":[{"Name":"data","Subcommands":[],"Options":[]},{"Name":"diff","Subcommands":[],"Options":[{"Names":["verbose","v"]}]},{"Name":"get","Subcommands":[],"Options":[]},{"Name":"links","Subcommands":[],"Options":[]},{"Name":"new","Subcommands":[],"Options":[]},{"Name":"patch","Subcommands":[{"Name":"append-data","Subcommands":[],"Options":[]},{"Name":"add-link","Subcommands":[],"Options":[{"Names":["create","p"]}]},{"Name":"rm-link","Subcommands":[],"Options":[]},{"Name":"set-data","Subcommands":[],"Options":[]}],"Options":[{"Names":["allow-big-block"]}]},{"Name":"put","Subcommands":[],"Options":[]},{"Name":"stat","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"shutdown","Subcommands":[],"Options":[]},{"Name":"get","Subcommands":[],"Options":[{"Names":["output","o"]},{"Names":["archive","a"]},{"Names":["compress","C"]},{"Names":["compression-level","l"]},{"Names":["progress","p"]}]},{"Name":"bootstrap","Subcommands":[{"Name":"list","Subcommands":[],"Options":[{"Names":["expand-auto"]}]},{"Name":"add","Subcommands":[],"Options":[]},{"Name":"rm","Subcommands":[{"Name":"all","Subcommands":[],"Options":[]}],"Options":[{"Names":["all"]}]}],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["headers","v"]},{"Names":["resolve-type"]},{"Names":["size"]},{"Names":["stream","s"]},{"Names":["long","l"]}]},{"Name":"multibase","Subcommands":[{"Name":"encode","Subcommands":[],"Options":[{"Names":["b"]}]},{"Name":"decode","Subcommands":[],"Options":[]},{"Name":"transcode","Subcommands":[],"Options":[{"Names":["b"]}]},{"Name":"list","Subcommands":[],"Options":[{"Names":["prefix"]},{"Names":["numeric"]}]}],"Options":[]},{"Name":"repo","Subcommands":[{"Name":"migrate","Subcommands":[],"Options":[{"Names":["to"]},{"Names":["allow-downgrade"]}]},{"Name":"ls","Subcommands":[],"Options":[]},{"Name":"stat","Subcommands":[],"Options":[{"Names":["size-only","s"]},{"Names":["human","H"]}]},{"Name":"gc","Subcommands":[],"Options":[{"Names":["stream-errors"]},{"Names":["quiet","q"]},{"Names":["silent"]}]},{"Name":"version","Subcommands":[],"Options":[{"Names":["quiet","q"]}]},{"Name":"verify","Subcommands":[],"Options":[{"Names":["drop"]},{"Names":["heal"]},{"Names":["heal-timeout"]}]}],"Options":[]},{"Name":"id","Subcommands":[],"Options":[{"Names":["format","f"]},{"Names":["peerid-base"]}]},{"Name":"key","Subcommands":[{"Name":"export","Subcommands":[],"Options":[{"Names":["output","o"]},{"Names":["format","f"]}]},{"Name":"import","Subcommands":[],"Options":[{"Names":["ipns-base"]},{"Names":["format","f"]},{"Names":["allow-any-key-type"]}]},{"Name":"rename","Subcommands":[],"Options":[{"Names":["force","f"]},{"Names":["ipns-base"]}]},{"Name":"rotate","Subcommands":[],"Options":[{"Names":["oldkey","o"]},{"Names":["type","t"]},{"Names":["size","s"]}]},{"Name":"sign","Subcommands":[],"Options":[{"Names":["key","k"]},{"Names":["ipns-base"]}]},{"Name":"verify","Subcommands":[],"Options":[{"Names":["key","k"]},{"Names":["signature","s"]},{"Names":["ipns-base"]}]},{"Name":"gen","Subcommands":[],"Options":[{"Names":["type","t"]},{"Names":["size","s"]},{"Names":["ipns-base"]}]},{"Name":"list","Subcommands":[],"Options":[{"Names":["l"]},{"Names":["ipns-base"]}]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["l"]},{"Names":["ipns-base"]}]},{"Name":"rm","Subcommands":[],"Options":[{"Names":["l"]},{"Names":["ipns-base"]}]}],"Options":[]},{"Name":"resolve","Subcommands":[],"Options":[{"Names":["recursive","r"]},{"Names":["dht-record-count","dhtrc"]},{"Names":["dht-timeout","dhtt"]}]},{"Name":"update","Subcommands":[],"Options":[]},{"Name":"cat","Subcommands":[],"Options":[{"Names":["offset","o"]},{"Names":["length","l"]},{"Names":["progress","p"]}]},{"Name":"p2p","Subcommands":[{"Name":"stream","Subcommands":[{"Name":"close","Subcommands":[],"Options":[{"Names":["all","a"]}]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["headers","v"]}]}],"Options":[]},{"Name":"forward","Subcommands":[],"Options":[{"Names":["allow-custom-protocol"]},{"Names":["foreground","f"]}]},{"Name":"listen","Subcommands":[],"Options":[{"Names":["allow-custom-protocol"]},{"Names":["report-peer-id","r"]},{"Names":["foreground","f"]}]},{"Name":"close","Subcommands":[],"Options":[{"Names":["all","a"]},{"Names":["protocol","p"]},{"Names":["listen-address","l"]},{"Names":["target-address","t"]}]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["headers","v"]}]}],"Options":[]},{"Name":"block","Subcommands":[{"Name":"rm","Subcommands":[],"Options":[{"Names":["force","f"]},{"Names":["quiet","q"]}]},{"Name":"stat","Subcommands":[],"Options":[]},{"Name":"get","Subcommands":[],"Options":[]},{"Name":"put","Subcommands":[],"Options":[{"Names":["cid-codec"]},{"Names":["mhtype"]},{"Names":["mhlen"]},{"Names":["pin"]},{"Names":["allow-big-block"]},{"Names":["format","f"]}]}],"Options":[]},{"Name":"files","Subcommands":[{"Name":"rm","Subcommands":[],"Options":[{"Names":["recursive","r"]},{"Names":["force"]}]},{"Name":"flush","Subcommands":[],"Options":[]},{"Name":"chcid","Subcommands":[],"Options":[{"Names":["cid-version","cid-ver"]},{"Names":["hash"]}]},{"Name":"chmod","Subcommands":[],"Options":[]},{"Name":"read","Subcommands":[],"Options":[{"Names":["offset","o"]},{"Names":["count","n"]}]},{"Name":"cp","Subcommands":[],"Options":[{"Names":["force"]},{"Names":["parents","p"]}]},{"Name":"mkdir","Subcommands":[],"Options":[{"Names":["parents","p"]},{"Names":["cid-version","cid-ver"]},{"Names":["hash"]}]},{"Name":"chroot","Subcommands":[],"Options":[{"Names":["confirm"]}]},{"Name":"touch","Subcommands":[],"Options":[{"Names":["mtime"]},{"Names":["mtime-nsecs"]}]},{"Name":"write","Subcommands":[],"Options":[{"Names":["offset","o"]},{"Names":["create","e"]},{"Names":["parents","p"]},{"Names":["truncate","t"]},{"Names":["count","n"]},{"Names":["raw-leaves"]},{"Names":["cid-version","cid-ver"]},{"Names":["hash"]}]},{"Name":"mv","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["long","l"]},{"Names":["U"]}]},{"Name":"stat","Subcommands":[],"Options":[{"Names":["format"]},{"Names":["hash"]},{"Names":["size"]},{"Names":["with-local"]}]}],"Options":[{"Names":["flush","f"]}]},{"Name":"stats","Subcommands":[{"Name":"dht","Subcommands":[],"Options":[]},{"Name":"provide","Subcommands":[],"Options":[{"Names":["lan"]},{"Names":["all","a"]},{"Names":["compact"]},{"Names":["connectivity"]},{"Names":["network"]},{"Names":["schedule"]},{"Names":["timings"]},{"Names":["workers"]},{"Names":["operations"]},{"Names":["queues"]}]},{"Name":"reprovide","Subcommands":[],"Options":[{"Names":["lan"]},{"Names":["all","a"]},{"Names":["compact"]},{"Names":["connectivity"]},{"Names":["network"]},{"Names":["schedule"]},{"Names":["timings"]},{"Names":["workers"]},{"Names":["operations"]},{"Names":["queues"]}]},{"Name":"bw","Subcommands":[],"Options":[{"Names":["peer","p"]},{"Names":["proto","t"]},{"Names":["poll"]},{"Names":["interval","i"]}]},{"Name":"repo","Subcommands":[],"Options":[{"Names":["size-only","s"]},{"Names":["human","H"]}]},{"Name":"bitswap","Subcommands":[],"Options":[{"Names":["verbose","v"]},{"Names":["human"]}]}],"Options":[]},{"Name":"diag","Subcommands":[{"Name":"profile","Subcommands":[],"Options":[{"Names":["output","o"]},{"Names":["collectors"]},{"Names":["profile-time"]},{"Names":["mutex-profile-fraction"]},{"Names":["block-profile-rate"]}]},{"Name":"datastore","Subcommands":[{"Name":"count","Subcommands":[],"Options":[]},{"Name":"get","Subcommands":[],"Options":[{"Names":["hex"]}]}],"Options":[]},{"Name":"sys","Subcommands":[],"Options":[]},{"Name":"cmds","Subcommands":[{"Name":"clear","Subcommands":[],"Options":[]},{"Name":"set-time","Subcommands":[],"Options":[]}],"Options":[{"Names":["verbose","v"]}]}],"Options":[]},{"Name":"log","Subcommands":[{"Name":"tail","Subcommands":[],"Options":[{"Names":["log-level"]}]},{"Name":"level","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"name","Subcommands":[{"Name":"put","Subcommands":[],"Options":[{"Names":["force","f"]},{"Names":["allow-offline"]},{"Names":["allow-delegated"]},{"Names":["quiet","q"]}]},{"Name":"publish","Subcommands":[],"Options":[{"Names":["key","k"]},{"Names":["resolve"]},{"Names":["lifetime","t"]},{"Names":["ttl"]},{"Names":["quieter","Q"]},{"Names":["v1compat"]},{"Names":["allow-offline"]},{"Names":["allow-delegated"]},{"Names":["sequence"]},{"Names":["ipns-base"]}]},{"Name":"resolve","Subcommands":[],"Options":[{"Names":["recursive","r"]},{"Names":["nocache","n"]},{"Names":["dht-record-count","dhtrc"]},{"Names":["dht-timeout","dhtt"]},{"Names":["stream","s"]}]},{"Name":"pubsub","Subcommands":[{"Name":"state","Subcommands":[],"Options":[]},{"Name":"subs","Subcommands":[],"Options":[{"Names":["ipns-base"]}]},{"Name":"cancel","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"inspect","Subcommands":[],"Options":[{"Names":["verify"]},{"Names":["dump"]}]},{"Name":"get","Subcommands":[],"Options":[]}],"Options":[]},{"Name":"bitswap","Subcommands":[{"Name":"wantlist","Subcommands":[],"Options":[{"Names":["peer","p"]}]},{"Name":"ledger","Subcommands":[],"Options":[]},{"Name":"reprovide","Subcommands":[],"Options":[]},{"Name":"stat","Subcommands":[],"Options":[{"Names":["verbose","v"]},{"Names":["human"]}]}],"Options":[]},{"Name":"commands","Subcommands":[{"Name":"completion","Subcommands":[{"Name":"fish","Subcommands":[],"Options":[]},{"Name":"bash","Subcommands":[],"Options":[]},{"Name":"zsh","Subcommands":[],"Options":[]}],"Options":[]}],"Options":[{"Names":["flags","f"]}]},{"Name":"filestore","Subcommands":[{"Name":"dups","Subcommands":[],"Options":[]},{"Name":"ls","Subcommands":[],"Options":[{"Names":["file-order"]}]},{"Name":"verify","Subcommands":[],"Options":[{"Names":["file-order"]},{"Names":["remove-bad-blocks"]}]}],"Options":[]}],"Options":[{"Names":["repo-dir"]},{"Names":["config-file"]},{"Names":["config","c"]},{"Names":["debug","D"]},{"Names":["help"]},{"Names":["h"]},{"Names":["local","L"]},{"Names":["offline"]},{"Names":["api"]},{"Names":["api-auth"]},{"Names":["cid-base"]},{"Names":["upgrade-cidv0-in-output"]},{"Names":["encoding","enc"]},{"Names":["stream-channels"]},{"Names":["timeout"]}]}
ok 10 - commands command with flag flags works via HTTP API - #2301
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 16952    0 16952    0     0  16.8M      0 --:--:-- --:--:-- --:--:-- 16.1M
11 - ipfs refs local over HTTP API returns NDJOSN not flat - #2803 Success 0.065
System.out »
expecting success: 
  echo "Hello World" | ipfs add &&
  curl -X POST "http://$API_ADDR/api/v0/refs/local" | grep "Ref" | grep "Err"

added QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u
{"Ref":"bafkreihtwdtifv43rn5cyilnmkwofdcxi2suqimmo62vn3etf45gjoiuwy","Err":""}
{"Ref":"bafkreibc35k3quezssiklpd6cnt7zty6k7btb2azs4zig2s6fpbovx2w7i","Err":""}
{"Ref":"bafkreiduiecxoeiqs3gyc6r7v3lymmhserldnpw62qjnhmqsulqjxjmtzi","Err":""}
{"Ref":"bafkreiestiydyoo2rifwpqews5dc62d2adddrpfvqd7k4bsffygb6ifuf4","Err":""}
{"Ref":"bafkreibhbx3y6tnn7q4gpsous6apnobft5jybvroiepdsmvps2lmycjjxu","Err":""}
{"Ref":"bafkreiaz6g7xzoum6udnmxkdfcvnpucn53fdewr3nj4nvzawyn6i7hkxhi","Err":""}
{"Ref":"bafkreia6po64b6tfqq73lckadrhpihg2oubaxgqaoushquhcek46y3zumm","Err":""}
{"Ref":"bafkreiasb5vpmaounyilfuxbd3lryvosl4yefqrfahsb2esg46q6tu6y5q","Err":""}
{"Ref":"bafkreicvksdnbh3jxytovgy2alghaayzj4kctsvnyc7fg5wpptosnuf2bm","Err":""}
{"Ref":"bafkreiczsscdsbs7ffqz55asqdf3smv6klcw3gofszvwlyarci47bgf354","Err":""}
{"Ref":"bafkreia4wvraun2neos7xpn7byqxo65jbgjfnl5lmkripawmew6gezyuni","Err":""}
ok 11 - ipfs refs local over HTTP API returns NDJOSN not flat - #2803
System.err »
 12 B / ? 

 12 B / ? 
 12 B / 12 B  100.00%  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100   869    0   869    0     0   725k      0 --:--:-- --:--:-- --:--:--  848k
12 - args expecting stdin don't crash when not given Success 0.012
System.out »
expecting success: 
  curl -X POST "$API_ADDR/api/v0/bootstrap/add" > result

ok 12 - args expecting stdin don't crash when not given
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    64    0    64    0     0  70718      0 --:--:-- --:--:-- --:--:-- 64000
13 - no panic traces on daemon Success 0.006
System.out »
expecting success: 
  test_must_fail grep "nil pointer dereference" daemon_err

ok 13 - no panic traces on daemon
14 - metrics work Success 0.017
System.out »
expecting success: 
  curl -X POST "$API_ADDR/debug/metrics/prometheus" > pro_data &&
  grep "ipfs_bs_cache_boxo_blockstore_cache_total" < pro_data ||
  test_fsh cat pro_data

# HELP ipfs_bs_cache_boxo_blockstore_cache_total Total number of blockstore cache requests
# TYPE ipfs_bs_cache_boxo_blockstore_cache_total counter
ipfs_bs_cache_boxo_blockstore_cache_total 10
ok 14 - metrics work
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  131k    0  131k    0     0  36.2M      0 --:--:-- --:--:-- --:--:-- 42.8M
15 - pin add api looks right - #3753 Success 0.085
System.out »
expecting success: 
  HASH=$(date +"%FT%T.%N%z" | ipfs add -q) &&
  curl -X POST "http://$API_ADDR/api/v0/pin/add/$HASH" > pinadd_out &&
  echo "{\"Pins\":[\"$HASH\"]}" > pinadd_exp &&
  test_cmp pinadd_out pinadd_exp

ok 15 - pin add api looks right - #3753
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    60    0    60    0     0   6216      0 --:--:-- --:--:-- --:--:--  6666
16 - pin add api looks right - #3753 Success 0.018
System.out »
expecting success: 
  curl -X POST "http://$API_ADDR/api/v0/pin/rm/$HASH" > pinrm_out &&
  echo "{\"Pins\":[\"$HASH\"]}" > pinrm_exp &&
  test_cmp pinrm_out pinrm_exp

ok 16 - pin add api looks right - #3753
System.err »
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    60    0    60    0     0   8482      0 --:--:-- --:--:-- --:--:--  8571
17 - no daemon crash on improper file argument - #4003 ( test needs socat ) Success 0.010
System.out »
expecting success: 
  FNC=$(echo $API_ADDR | awk -F: '{ printf "%s:%s", $1, $2 }') &&
  printf "POST /api/v0/add?pin=true HTTP/1.1\r\nHost: $API_ADDR\r\nContent-Type: multipart/form-data; boundary=Pyw9xQLtiLPE6XcI\r\nContent-Length: 22\r\n\r\n\r\n--Pyw9xQLtiLPE6XcI\r\n" | socat STDIO tcp-connect:$FNC | grep -m1 "500 Internal Server Error"

HTTP/1.1 500 Internal Server Error
ok 17 - no daemon crash on improper file argument - #4003 ( test needs socat )
18 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 18 - 'ipfs daemon' is still running
19 - 'ipfs daemon' can be killed Success 0.256
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 19 - 'ipfs daemon' can be killed
20 - ipfs daemon --offline --mount fails - #2995 Success 0.092
System.out »
expecting success: 
  test_expect_code 1 ipfs daemon --offline --mount 2>daemon_err &&
  grep "mount is not currently supported in offline mode" daemon_err ||
  test_fsh cat daemon_err

Initializing daemon...
Kubo version: 0.41.0-dev
Repo version: 18
System version: amd64/linux
Golang version: go1.25.0
PeerID: 12D3KooWKVdNVMaGkYC4m226SLqpfCEfuQt9fckZmYTiSE26wtBY
Swarm not listening, running in offline mode.
RPC API server listening on /ip4/127.0.0.1/tcp/41553
WebUI: http://127.0.0.1:41553/webui

Error: mount is not currently supported in offline mode
ok 20 - ipfs daemon --offline --mount fails - #2995
21 - 'ipfs daemon' succeeds Success 0.004
System.out »
expecting success: 
    ipfs daemon "${args[@]}" >actual_daemon 2>daemon_err &
    IPFS_PID=$!
  
ok 21 - 'ipfs daemon' succeeds
22 - api file shows up Success 0.212
System.out »
expecting success: 
    test_wait_for_file 50 200ms "$IPFS_PATH/api"
  
ok 22 - api file shows up
23 - set up address variables Success 0.026
System.out »
expecting success: 
    API_MADDR=$(cat "$IPFS_PATH/api") &&
    API_ADDR=$(convert_tcp_maddr $API_MADDR) &&
    API_PORT=$(port_from_maddr $API_MADDR) &&

    GWAY_MADDR=$(sed -n "s/^Gateway server listening on //p" "$daemon_output") &&
    GWAY_ADDR=$(convert_tcp_maddr $GWAY_MADDR) &&
    GWAY_PORT=$(port_from_maddr $GWAY_MADDR)
  
ok 23 - set up address variables
24 - 'ipfs daemon' is ready Success 0.008
System.out »
expecting success: 
    pollEndpoint -host=$API_MADDR -v -tout=1s -tries=60 2>poll_apierr > poll_apiout ||
    test_fsh cat actual_daemon || test_fsh cat daemon_err || test_fsh cat poll_apierr || test_fsh cat poll_apiout
  
ok 24 - 'ipfs daemon' is ready
25 - 'ipfs name resolve' succeeds after ipfs id when daemon offline Success 0.109
System.out »
expecting success: 
  PEERID=`ipfs key list --ipns-base=base36 -l | grep self | cut -d " " -f1` &&
  test_check_peerid "${PEERID}" &&
  ipfs name publish --allow-offline  -Q "/ipfs/$HASH_WELCOME_DOCS" >publish_out

ok 25 - 'ipfs name resolve' succeeds after ipfs id when daemon offline
26 - pubrmlish --quieter output looks good Success 0.005
System.out »
expecting success: 
  echo "${PEERID}" >expected1 &&
  test_cmp expected1 publish_out

ok 26 - pubrmlish --quieter output looks good
27 - 'ipfs name resolve' succeeds Success 0.058
System.out »
expecting success: 
  ipfs name resolve "$PEERID" >output

ok 27 - 'ipfs name resolve' succeeds
28 - resolve output looks good Success 0.005
System.out »
expecting success: 
  printf "/ipfs/%s\n" "$HASH_WELCOME_DOCS" >expected2 &&
  test_cmp expected2 output

ok 28 - resolve output looks good
29 - 'ipfs daemon' is still running Success 0.004
System.out »
expecting success: 
    kill -0 $IPFS_PID
  
ok 29 - 'ipfs daemon' is still running
30 - 'ipfs daemon' can be killed Success 0.236
System.out »
expecting success: 
    test_kill_repeat_10_sec $IPFS_PID
  
ok 30 - 'ipfs daemon' can be killed
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - 'ipfs daemon' succeeds
ok 5 - api file shows up
ok 6 - set up address variables
ok 7 - get swarm addresses
ok 8 - set swarm address vars
ok 9 - 'ipfs daemon' is ready
ok 10 - commands command with flag flags works via HTTP API - #2301
ok 11 - ipfs refs local over HTTP API returns NDJOSN not flat - #2803
ok 12 - args expecting stdin don't crash when not given
ok 13 - no panic traces on daemon
ok 14 - metrics work
ok 15 - pin add api looks right - #3753
ok 16 - pin add api looks right - #3753
ok 17 - no daemon crash on improper file argument - #4003 ( test needs socat )
ok 18 - 'ipfs daemon' is still running
ok 19 - 'ipfs daemon' can be killed
ok 20 - ipfs daemon --offline --mount fails - #2995
ok 21 - 'ipfs daemon' succeeds
ok 22 - api file shows up
ok 23 - set up address variables
ok 24 - 'ipfs daemon' is ready
ok 25 - 'ipfs name resolve' succeeds after ipfs id when daemon offline
ok 26 - pubrmlish --quieter output looks good
ok 27 - 'ipfs name resolve' succeeds
ok 28 - resolve output looks good
ok 29 - 'ipfs daemon' is still running
ok 30 - 'ipfs daemon' can be killed

Back to top

TestCase t0800-blake3

Name Status Type Time(s)
1 - ipfs init succeeds Success 0.097
System.out »
expecting success: 
    export IPFS_PATH="$(pwd)/.ipfs" &&
    ipfs init "${args[@]}" --profile=test > /dev/null
  
ok 1 - ipfs init succeeds
2 - disable telemetry Success 0.160
System.out »
expecting success: 
    test_config_set --bool Plugins.Plugins.telemetry.Disabled "true"
  
ipfs config --bool "Plugins.Plugins.telemetry.Disabled" "true"
ok 2 - disable telemetry
3 - prepare config -- mounting Success 0.389
System.out »
expecting success: 
    mkdir mountdir ipfs ipns mfs &&
    test_config_set Mounts.IPFS "$(pwd)/ipfs" &&
    test_config_set Mounts.IPNS "$(pwd)/ipns" &&
    test_config_set Mounts.MFS "$(pwd)/mfs" ||
    test_fsh cat "\"$IPFS_PATH/config\""
  
ipfs config  "Mounts.IPFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0800-blake3.sh/ipfs"
ipfs config  "Mounts.IPNS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0800-blake3.sh/ipns"
ipfs config  "Mounts.MFS" "/home/runner/work/kubo/kubo/kubo/test/sharness/trash directory.t0800-blake3.sh/mfs"
ok 3 - prepare config -- mounting
4 - putting a block with an mhash blake3 succeeds (default 32 bytes) Success 0.084
System.out »
expecting success: 
  HASH=$(echo "foo" | ipfs block put --mhtype=blake3 --cid-codec=raw | tee actual_out) &&
  test $BLAKE3RAWCID32BYTE = "$HASH"

ok 4 - putting a block with an mhash blake3 succeeds (default 32 bytes)
5 - block get output looks right Success 0.073
System.out »
expecting success: 
  ipfs block get $BLAKE3RAWCID32BYTE > blk_get_out &&
  echo "foo" > blk_get_exp &&
  test_cmp blk_get_exp blk_get_out

ok 5 - block get output looks right
6 - putting a block with an mhash blake3 succeeds: 64 bytes Success 0.083
System.out »
expecting success: 
  HASH=$(echo "foo" | ipfs block put --mhtype=blake3 --mhlen=64 --cid-codec=raw | tee actual_out) &&
  test $BLAKE3RAWCID64BYTE = "$HASH"

ok 6 - putting a block with an mhash blake3 succeeds: 64 bytes
7 - 64B block get output looks right Success 0.077
System.out »
expecting success: 
  ipfs block get $BLAKE3RAWCID64BYTE > blk_get_out &&
  echo "foo" > blk_get_exp &&
  test_cmp blk_get_exp blk_get_out

ok 7 - 64B block get output looks right
8 - putting a block with an mhash blake3 succeeds: 128 bytes Success 0.094
System.out »
expecting success: 
  HASH=$(echo "foo" | ipfs block put --mhtype=blake3 --mhlen=128 --cid-codec=raw | tee actual_out) &&
  test $BLAKE3RAWCID128BYTE = "$HASH"

ok 8 - putting a block with an mhash blake3 succeeds: 128 bytes
9 - 32B block get output looks right Success 0.086
System.out »
expecting success: 
  ipfs block get $BLAKE3RAWCID128BYTE > blk_get_out &&
  echo "foo" > blk_get_exp &&
  test_cmp blk_get_exp blk_get_out

ok 9 - 32B block get output looks right
10 - dag put works with blake3 Success 0.081
System.out »
expecting success: 
  HASH=$(echo "foo" | ipfs dag put --input-codec=raw --store-codec=raw --hash=blake3 | tee actual_out) &&
  test $BLAKE3RAWCID32BYTE = "$HASH"

ok 10 - dag put works with blake3
11 - dag get output looks right Success 0.088
System.out »
expecting success: 
  ipfs dag get --output-codec=raw $BLAKE3RAWCID32BYTE > dag_get_out &&
  echo "foo" > dag_get_exp &&
  test_cmp dag_get_exp dag_get_out

ok 11 - dag get output looks right
12 - adding a file with just foo in it to ipfs Success 0.093
System.out »
expecting success: 
  echo "foo" > afile &&
  HASH=$(ipfs add -q --hash=blake3 --raw-leaves afile | tee actual_out) &&
  test $BLAKE3RAWCID32BYTE = "$HASH"

ok 12 - adding a file with just foo in it to ipfs
13 - catting it Success 0.086
System.out »
expecting success: 
  ipfs cat $BLAKE3RAWCID32BYTE > cat_out &&
  echo "foo" > cat_exp &&
  test_cmp cat_exp cat_out

ok 13 - catting it
Properties »
System.out »
runner sudo docker
# TEST_VERBOSE=1
# TEST_IMMEDIATE=
# TEST_FUSE=0
# TEST_DOCKER=1
# TEST_PLUGIN=0
# TEST_EXPENSIVE=1
# TEST_OS=LINUX
# TEST_JUNIT=1
# TEST_NO_COLOR=
# TEST_ULIMIT_PRESET=
ok 1 - ipfs init succeeds
ok 2 - disable telemetry
ok 3 - prepare config -- mounting
ok 4 - putting a block with an mhash blake3 succeeds (default 32 bytes)
ok 5 - block get output looks right
ok 6 - putting a block with an mhash blake3 succeeds: 64 bytes
ok 7 - 64B block get output looks right
ok 8 - putting a block with an mhash blake3 succeeds: 128 bytes
ok 9 - 32B block get output looks right
ok 10 - dag put works with blake3
ok 11 - dag get output looks right
ok 12 - adding a file with just foo in it to ipfs
ok 13 - catting it

Back to top