From 8484a58dd6a7c80e8aa6cf78da65df9673c45985 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Thu, 6 Nov 2025 12:23:44 -0800 Subject: [PATCH] Have xfstest pass when using args The xfstests's golden output includes the full set of tests we expect to run when no args are specified. If we specify args then the set of tests can change and the test will always fail when they do. This fixes that by having the test check the set of tests itself, rather than relying on golden output. If args are specified then our xfstest only fails if any of the executed xfstest tests failed. Without args, we perform the same scraping of the check output and compare it against the expected results ourself. It would have been a bit much to put that large file inline in the test file, so we add a dir of per-test files in revision control. We can also put the list of exclusions there. We can also clean up the output redirection helper functions to make them more clear. After xfstests has executed we want to redirect output back to the compared output so that we can catch any unexpected output. Signed-off-by: Zach Brown --- tests/README.md | 1 + tests/extra/xfstests/expected-results | 882 ++++++++++++++++++++++++++ tests/extra/xfstests/local.exclude | 44 ++ tests/funcs/exec.sh | 20 +- tests/golden/xfstests | 882 -------------------------- tests/run-tests.sh | 3 + tests/tests/xfstests.sh | 92 +-- 7 files changed, 978 insertions(+), 946 deletions(-) create mode 100644 tests/extra/xfstests/expected-results create mode 100644 tests/extra/xfstests/local.exclude diff --git a/tests/README.md b/tests/README.md index 4acbdb50..8701b6f2 100644 --- a/tests/README.md +++ b/tests/README.md @@ -117,6 +117,7 @@ used during the test. | T\_NR\_MOUNTS | number of mounts | -n | 3 | | T\_O[0-9] | mount options | created per run | -o server\_addr= | | T\_QUORUM | quorum count | -q | 2 | +| T\_EXTRA | per-test file dir | revision ctled | tests/extra/t | | T\_TMP | per-test tmp prefix | made for test | results/tmp/t/tmp | | T\_TMPDIR | per-test tmp dir dir | made for test | results/tmp/t | diff --git a/tests/extra/xfstests/expected-results b/tests/extra/xfstests/expected-results new file mode 100644 index 00000000..c4032ca9 --- /dev/null +++ b/tests/extra/xfstests/expected-results @@ -0,0 +1,882 @@ +Ran: +generic/001 +generic/002 +generic/004 +generic/005 +generic/006 +generic/007 +generic/008 +generic/009 +generic/011 +generic/012 +generic/013 +generic/014 +generic/015 +generic/016 +generic/018 +generic/020 +generic/021 +generic/022 +generic/023 +generic/024 +generic/025 +generic/026 +generic/028 +generic/029 +generic/030 +generic/031 +generic/032 +generic/033 +generic/034 +generic/035 +generic/037 +generic/039 +generic/040 +generic/041 +generic/050 +generic/052 +generic/053 +generic/056 +generic/057 +generic/058 +generic/059 +generic/060 +generic/061 +generic/062 +generic/063 +generic/064 +generic/065 +generic/066 +generic/067 +generic/069 +generic/070 +generic/071 +generic/073 +generic/076 +generic/078 +generic/079 +generic/080 +generic/081 +generic/082 +generic/084 +generic/086 +generic/087 +generic/088 +generic/090 +generic/091 +generic/092 +generic/094 +generic/096 +generic/097 +generic/098 +generic/099 +generic/101 +generic/104 +generic/105 +generic/106 +generic/107 +generic/110 +generic/111 +generic/113 +generic/114 +generic/115 +generic/116 +generic/117 +generic/118 +generic/119 +generic/120 +generic/121 +generic/122 +generic/123 +generic/124 +generic/126 +generic/128 +generic/129 +generic/130 +generic/131 +generic/134 +generic/135 +generic/136 +generic/138 +generic/139 +generic/140 +generic/141 +generic/142 +generic/143 +generic/144 +generic/145 +generic/146 +generic/147 +generic/148 +generic/149 +generic/150 +generic/151 +generic/152 +generic/153 +generic/154 +generic/155 +generic/156 +generic/157 +generic/158 +generic/159 +generic/160 +generic/161 +generic/162 +generic/163 +generic/169 +generic/171 +generic/172 +generic/173 +generic/174 +generic/177 +generic/178 +generic/179 +generic/180 +generic/181 +generic/182 +generic/183 +generic/184 +generic/185 +generic/188 +generic/189 +generic/190 +generic/191 +generic/193 +generic/194 +generic/195 +generic/196 +generic/197 +generic/198 +generic/199 +generic/200 +generic/201 +generic/202 +generic/203 +generic/205 +generic/206 +generic/207 +generic/210 +generic/211 +generic/212 +generic/214 +generic/215 +generic/216 +generic/217 +generic/218 +generic/219 +generic/220 +generic/221 +generic/222 +generic/223 +generic/225 +generic/227 +generic/228 +generic/229 +generic/230 +generic/235 +generic/236 +generic/237 +generic/238 +generic/240 +generic/244 +generic/245 +generic/246 +generic/247 +generic/248 +generic/249 +generic/250 +generic/252 +generic/253 +generic/254 +generic/255 +generic/256 +generic/257 +generic/258 +generic/259 +generic/260 +generic/261 +generic/262 +generic/263 +generic/264 +generic/265 +generic/266 +generic/267 +generic/268 +generic/271 +generic/272 +generic/276 +generic/277 +generic/278 +generic/279 +generic/281 +generic/282 +generic/283 +generic/284 +generic/286 +generic/287 +generic/288 +generic/289 +generic/290 +generic/291 +generic/292 +generic/293 +generic/294 +generic/295 +generic/296 +generic/301 +generic/302 +generic/303 +generic/304 +generic/305 +generic/306 +generic/307 +generic/308 +generic/309 +generic/312 +generic/313 +generic/314 +generic/315 +generic/316 +generic/317 +generic/319 +generic/322 +generic/324 +generic/325 +generic/326 +generic/327 +generic/328 +generic/329 +generic/330 +generic/331 +generic/332 +generic/335 +generic/336 +generic/337 +generic/341 +generic/342 +generic/343 +generic/346 +generic/348 +generic/353 +generic/355 +generic/358 +generic/359 +generic/360 +generic/361 +generic/362 +generic/363 +generic/364 +generic/365 +generic/366 +generic/367 +generic/368 +generic/369 +generic/370 +generic/371 +generic/372 +generic/373 +generic/374 +generic/375 +generic/376 +generic/377 +generic/378 +generic/379 +generic/380 +generic/381 +generic/382 +generic/383 +generic/384 +generic/385 +generic/386 +generic/389 +generic/391 +generic/392 +generic/393 +generic/394 +generic/395 +generic/396 +generic/397 +generic/398 +generic/400 +generic/401 +generic/402 +generic/403 +generic/404 +generic/406 +generic/407 +generic/408 +generic/412 +generic/413 +generic/414 +generic/417 +generic/419 +generic/420 +generic/421 +generic/422 +generic/424 +generic/425 +generic/426 +generic/427 +generic/428 +generic/436 +generic/437 +generic/439 +generic/440 +generic/443 +generic/445 +generic/446 +generic/448 +generic/449 +generic/450 +generic/451 +generic/452 +generic/453 +generic/454 +generic/456 +generic/458 +generic/460 +generic/462 +generic/463 +generic/465 +generic/466 +generic/468 +generic/469 +generic/470 +generic/471 +generic/474 +generic/477 +generic/478 +generic/479 +generic/480 +generic/481 +generic/483 +generic/485 +generic/486 +generic/487 +generic/488 +generic/489 +generic/490 +generic/491 +generic/492 +generic/498 +generic/499 +generic/501 +generic/502 +generic/503 +generic/504 +generic/505 +generic/506 +generic/507 +generic/508 +generic/509 +generic/510 +generic/511 +generic/512 +generic/513 +generic/514 +generic/515 +generic/516 +generic/517 +generic/518 +generic/519 +generic/520 +generic/523 +generic/524 +generic/525 +generic/526 +generic/527 +generic/528 +generic/529 +generic/530 +generic/531 +generic/533 +generic/534 +generic/535 +generic/536 +generic/537 +generic/538 +generic/539 +generic/540 +generic/541 +generic/542 +generic/543 +generic/544 +generic/545 +generic/546 +generic/547 +generic/548 +generic/549 +generic/550 +generic/552 +generic/553 +generic/555 +generic/556 +generic/557 +generic/566 +generic/567 +generic/571 +generic/572 +generic/573 +generic/574 +generic/575 +generic/576 +generic/577 +generic/578 +generic/580 +generic/581 +generic/582 +generic/583 +generic/584 +generic/586 +generic/587 +generic/588 +generic/591 +generic/592 +generic/593 +generic/594 +generic/595 +generic/596 +generic/597 +generic/598 +generic/599 +generic/600 +generic/601 +generic/602 +generic/603 +generic/604 +generic/605 +generic/606 +generic/607 +generic/608 +generic/609 +generic/610 +generic/611 +generic/612 +generic/613 +generic/614 +generic/618 +generic/621 +generic/623 +generic/624 +generic/625 +generic/626 +generic/628 +generic/629 +generic/630 +generic/632 +generic/634 +generic/635 +generic/637 +generic/638 +generic/639 +generic/640 +generic/644 +generic/645 +generic/646 +generic/647 +generic/651 +generic/652 +generic/653 +generic/654 +generic/655 +generic/657 +generic/658 +generic/659 +generic/660 +generic/661 +generic/662 +generic/663 +generic/664 +generic/665 +generic/666 +generic/667 +generic/668 +generic/669 +generic/673 +generic/674 +generic/675 +generic/676 +generic/677 +generic/678 +generic/679 +generic/680 +generic/681 +generic/682 +generic/683 +generic/684 +generic/685 +generic/686 +generic/687 +generic/688 +generic/689 +shared/002 +shared/032 +Not +run: +generic/008 +generic/009 +generic/012 +generic/015 +generic/016 +generic/018 +generic/021 +generic/022 +generic/025 +generic/026 +generic/031 +generic/033 +generic/050 +generic/052 +generic/058 +generic/059 +generic/060 +generic/061 +generic/063 +generic/064 +generic/078 +generic/079 +generic/081 +generic/082 +generic/091 +generic/094 +generic/096 +generic/110 +generic/111 +generic/113 +generic/114 +generic/115 +generic/116 +generic/118 +generic/119 +generic/121 +generic/122 +generic/123 +generic/128 +generic/130 +generic/134 +generic/135 +generic/136 +generic/138 +generic/139 +generic/140 +generic/142 +generic/143 +generic/144 +generic/145 +generic/146 +generic/147 +generic/148 +generic/149 +generic/150 +generic/151 +generic/152 +generic/153 +generic/154 +generic/155 +generic/156 +generic/157 +generic/158 +generic/159 +generic/160 +generic/161 +generic/162 +generic/163 +generic/171 +generic/172 +generic/173 +generic/174 +generic/177 +generic/178 +generic/179 +generic/180 +generic/181 +generic/182 +generic/183 +generic/185 +generic/188 +generic/189 +generic/190 +generic/191 +generic/193 +generic/194 +generic/195 +generic/196 +generic/197 +generic/198 +generic/199 +generic/200 +generic/201 +generic/202 +generic/203 +generic/205 +generic/206 +generic/207 +generic/210 +generic/211 +generic/212 +generic/214 +generic/216 +generic/217 +generic/218 +generic/219 +generic/220 +generic/222 +generic/223 +generic/225 +generic/227 +generic/229 +generic/230 +generic/235 +generic/238 +generic/240 +generic/244 +generic/250 +generic/252 +generic/253 +generic/254 +generic/255 +generic/256 +generic/259 +generic/260 +generic/261 +generic/262 +generic/263 +generic/264 +generic/265 +generic/266 +generic/267 +generic/268 +generic/271 +generic/272 +generic/276 +generic/277 +generic/278 +generic/279 +generic/281 +generic/282 +generic/283 +generic/284 +generic/287 +generic/288 +generic/289 +generic/290 +generic/291 +generic/292 +generic/293 +generic/295 +generic/296 +generic/301 +generic/302 +generic/303 +generic/304 +generic/305 +generic/312 +generic/314 +generic/316 +generic/317 +generic/324 +generic/326 +generic/327 +generic/328 +generic/329 +generic/330 +generic/331 +generic/332 +generic/353 +generic/355 +generic/358 +generic/359 +generic/361 +generic/362 +generic/363 +generic/364 +generic/365 +generic/366 +generic/367 +generic/368 +generic/369 +generic/370 +generic/371 +generic/372 +generic/373 +generic/374 +generic/378 +generic/379 +generic/380 +generic/381 +generic/382 +generic/383 +generic/384 +generic/385 +generic/386 +generic/391 +generic/392 +generic/395 +generic/396 +generic/397 +generic/398 +generic/400 +generic/402 +generic/404 +generic/406 +generic/407 +generic/408 +generic/412 +generic/413 +generic/414 +generic/417 +generic/419 +generic/420 +generic/421 +generic/422 +generic/424 +generic/425 +generic/427 +generic/439 +generic/440 +generic/446 +generic/449 +generic/450 +generic/451 +generic/453 +generic/454 +generic/456 +generic/458 +generic/462 +generic/463 +generic/465 +generic/466 +generic/468 +generic/469 +generic/470 +generic/471 +generic/474 +generic/485 +generic/487 +generic/488 +generic/491 +generic/492 +generic/499 +generic/501 +generic/503 +generic/505 +generic/506 +generic/507 +generic/508 +generic/511 +generic/513 +generic/514 +generic/515 +generic/516 +generic/517 +generic/518 +generic/519 +generic/520 +generic/528 +generic/530 +generic/536 +generic/537 +generic/538 +generic/539 +generic/540 +generic/541 +generic/542 +generic/543 +generic/544 +generic/545 +generic/546 +generic/548 +generic/549 +generic/550 +generic/552 +generic/553 +generic/555 +generic/556 +generic/566 +generic/567 +generic/572 +generic/573 +generic/574 +generic/575 +generic/576 +generic/577 +generic/578 +generic/580 +generic/581 +generic/582 +generic/583 +generic/584 +generic/586 +generic/587 +generic/588 +generic/591 +generic/592 +generic/593 +generic/594 +generic/595 +generic/596 +generic/597 +generic/598 +generic/599 +generic/600 +generic/601 +generic/602 +generic/603 +generic/605 +generic/606 +generic/607 +generic/608 +generic/609 +generic/610 +generic/612 +generic/613 +generic/621 +generic/623 +generic/624 +generic/625 +generic/626 +generic/628 +generic/629 +generic/630 +generic/635 +generic/644 +generic/645 +generic/646 +generic/647 +generic/651 +generic/652 +generic/653 +generic/654 +generic/655 +generic/657 +generic/658 +generic/659 +generic/660 +generic/661 +generic/662 +generic/663 +generic/664 +generic/665 +generic/666 +generic/667 +generic/668 +generic/669 +generic/673 +generic/674 +generic/675 +generic/677 +generic/678 +generic/679 +generic/680 +generic/681 +generic/682 +generic/683 +generic/684 +generic/685 +generic/686 +generic/687 +generic/688 +generic/689 +shared/002 +shared/032 +Passed all 512 tests diff --git a/tests/extra/xfstests/local.exclude b/tests/extra/xfstests/local.exclude new file mode 100644 index 00000000..fa274227 --- /dev/null +++ b/tests/extra/xfstests/local.exclude @@ -0,0 +1,44 @@ +generic/003 # missing atime update in buffered read +generic/075 # file content mismatch failures (fds, etc) +generic/103 # enospc causes trans commit failures +generic/108 # mount fails on failing device? +generic/112 # file content mismatch failures (fds, etc) +generic/213 # enospc causes trans commit failures +generic/318 # can't support user namespaces until v5.11 +generic/321 # requires selinux enabled for '+' in ls? +generic/338 # BUG_ON update inode error handling +generic/347 # _dmthin_mount doesn't work? +generic/356 # swap +generic/357 # swap +generic/409 # bind mounts not scripted yet +generic/410 # bind mounts not scripted yet +generic/411 # bind mounts not scripted yet +generic/423 # symlink inode size is strlen() + 1 on scoutfs +generic/430 # xfs_io copy_range missing in el7 +generic/431 # xfs_io copy_range missing in el7 +generic/432 # xfs_io copy_range missing in el7 +generic/433 # xfs_io copy_range missing in el7 +generic/434 # xfs_io copy_range missing in el7 +generic/441 # dm-mapper +generic/444 # el9's posix_acl_update_mode is buggy ? +generic/467 # open_by_handle ESTALE +generic/472 # swap +generic/484 # dm-mapper +generic/493 # swap +generic/494 # swap +generic/495 # swap +generic/496 # swap +generic/497 # swap +generic/532 # xfs_io statx attrib_mask missing in el7 +generic/554 # swap +generic/563 # cgroup+loopdev +generic/564 # xfs_io copy_range missing in el7 +generic/565 # xfs_io copy_range missing in el7 +generic/568 # falloc not resulting in block count increase +generic/569 # swap +generic/570 # swap +generic/620 # dm-hugedisk +generic/633 # id-mapped mounts missing in el7 +generic/636 # swap +generic/641 # swap +generic/643 # swap diff --git a/tests/funcs/exec.sh b/tests/funcs/exec.sh index 1e2d6f57..46949b5e 100644 --- a/tests/funcs/exec.sh +++ b/tests/funcs/exec.sh @@ -64,21 +64,27 @@ t_rc() } # -# redirect test output back to the output of the invoking script intead -# of the compared output. +# As run, stdout/err are redirected to a file that will be compared with +# the stored expected golden output of the test. This redirects +# stdout/err in the script to stdout of the invoking run-test. It's +# intended to give visible output of tests without being included in the +# golden output. # -t_restore_output() +# (see the goofy "exec" fd manipulation in the main run-tests as it runs +# each test) +# +t_stdout_invoked() { exec >&6 2>&1 } # -# redirect a command's output back to the compared output after the -# test has restored its output +# This undoes t_stdout_invokved, returning the test's stdout/err to the +# output file as it was when it was launched. # -t_compare_output() +t_stdout_compare() { - "$@" >&7 2>&1 + exec >&7 2>&1 } # diff --git a/tests/golden/xfstests b/tests/golden/xfstests index c4032ca9..e69de29b 100644 --- a/tests/golden/xfstests +++ b/tests/golden/xfstests @@ -1,882 +0,0 @@ -Ran: -generic/001 -generic/002 -generic/004 -generic/005 -generic/006 -generic/007 -generic/008 -generic/009 -generic/011 -generic/012 -generic/013 -generic/014 -generic/015 -generic/016 -generic/018 -generic/020 -generic/021 -generic/022 -generic/023 -generic/024 -generic/025 -generic/026 -generic/028 -generic/029 -generic/030 -generic/031 -generic/032 -generic/033 -generic/034 -generic/035 -generic/037 -generic/039 -generic/040 -generic/041 -generic/050 -generic/052 -generic/053 -generic/056 -generic/057 -generic/058 -generic/059 -generic/060 -generic/061 -generic/062 -generic/063 -generic/064 -generic/065 -generic/066 -generic/067 -generic/069 -generic/070 -generic/071 -generic/073 -generic/076 -generic/078 -generic/079 -generic/080 -generic/081 -generic/082 -generic/084 -generic/086 -generic/087 -generic/088 -generic/090 -generic/091 -generic/092 -generic/094 -generic/096 -generic/097 -generic/098 -generic/099 -generic/101 -generic/104 -generic/105 -generic/106 -generic/107 -generic/110 -generic/111 -generic/113 -generic/114 -generic/115 -generic/116 -generic/117 -generic/118 -generic/119 -generic/120 -generic/121 -generic/122 -generic/123 -generic/124 -generic/126 -generic/128 -generic/129 -generic/130 -generic/131 -generic/134 -generic/135 -generic/136 -generic/138 -generic/139 -generic/140 -generic/141 -generic/142 -generic/143 -generic/144 -generic/145 -generic/146 -generic/147 -generic/148 -generic/149 -generic/150 -generic/151 -generic/152 -generic/153 -generic/154 -generic/155 -generic/156 -generic/157 -generic/158 -generic/159 -generic/160 -generic/161 -generic/162 -generic/163 -generic/169 -generic/171 -generic/172 -generic/173 -generic/174 -generic/177 -generic/178 -generic/179 -generic/180 -generic/181 -generic/182 -generic/183 -generic/184 -generic/185 -generic/188 -generic/189 -generic/190 -generic/191 -generic/193 -generic/194 -generic/195 -generic/196 -generic/197 -generic/198 -generic/199 -generic/200 -generic/201 -generic/202 -generic/203 -generic/205 -generic/206 -generic/207 -generic/210 -generic/211 -generic/212 -generic/214 -generic/215 -generic/216 -generic/217 -generic/218 -generic/219 -generic/220 -generic/221 -generic/222 -generic/223 -generic/225 -generic/227 -generic/228 -generic/229 -generic/230 -generic/235 -generic/236 -generic/237 -generic/238 -generic/240 -generic/244 -generic/245 -generic/246 -generic/247 -generic/248 -generic/249 -generic/250 -generic/252 -generic/253 -generic/254 -generic/255 -generic/256 -generic/257 -generic/258 -generic/259 -generic/260 -generic/261 -generic/262 -generic/263 -generic/264 -generic/265 -generic/266 -generic/267 -generic/268 -generic/271 -generic/272 -generic/276 -generic/277 -generic/278 -generic/279 -generic/281 -generic/282 -generic/283 -generic/284 -generic/286 -generic/287 -generic/288 -generic/289 -generic/290 -generic/291 -generic/292 -generic/293 -generic/294 -generic/295 -generic/296 -generic/301 -generic/302 -generic/303 -generic/304 -generic/305 -generic/306 -generic/307 -generic/308 -generic/309 -generic/312 -generic/313 -generic/314 -generic/315 -generic/316 -generic/317 -generic/319 -generic/322 -generic/324 -generic/325 -generic/326 -generic/327 -generic/328 -generic/329 -generic/330 -generic/331 -generic/332 -generic/335 -generic/336 -generic/337 -generic/341 -generic/342 -generic/343 -generic/346 -generic/348 -generic/353 -generic/355 -generic/358 -generic/359 -generic/360 -generic/361 -generic/362 -generic/363 -generic/364 -generic/365 -generic/366 -generic/367 -generic/368 -generic/369 -generic/370 -generic/371 -generic/372 -generic/373 -generic/374 -generic/375 -generic/376 -generic/377 -generic/378 -generic/379 -generic/380 -generic/381 -generic/382 -generic/383 -generic/384 -generic/385 -generic/386 -generic/389 -generic/391 -generic/392 -generic/393 -generic/394 -generic/395 -generic/396 -generic/397 -generic/398 -generic/400 -generic/401 -generic/402 -generic/403 -generic/404 -generic/406 -generic/407 -generic/408 -generic/412 -generic/413 -generic/414 -generic/417 -generic/419 -generic/420 -generic/421 -generic/422 -generic/424 -generic/425 -generic/426 -generic/427 -generic/428 -generic/436 -generic/437 -generic/439 -generic/440 -generic/443 -generic/445 -generic/446 -generic/448 -generic/449 -generic/450 -generic/451 -generic/452 -generic/453 -generic/454 -generic/456 -generic/458 -generic/460 -generic/462 -generic/463 -generic/465 -generic/466 -generic/468 -generic/469 -generic/470 -generic/471 -generic/474 -generic/477 -generic/478 -generic/479 -generic/480 -generic/481 -generic/483 -generic/485 -generic/486 -generic/487 -generic/488 -generic/489 -generic/490 -generic/491 -generic/492 -generic/498 -generic/499 -generic/501 -generic/502 -generic/503 -generic/504 -generic/505 -generic/506 -generic/507 -generic/508 -generic/509 -generic/510 -generic/511 -generic/512 -generic/513 -generic/514 -generic/515 -generic/516 -generic/517 -generic/518 -generic/519 -generic/520 -generic/523 -generic/524 -generic/525 -generic/526 -generic/527 -generic/528 -generic/529 -generic/530 -generic/531 -generic/533 -generic/534 -generic/535 -generic/536 -generic/537 -generic/538 -generic/539 -generic/540 -generic/541 -generic/542 -generic/543 -generic/544 -generic/545 -generic/546 -generic/547 -generic/548 -generic/549 -generic/550 -generic/552 -generic/553 -generic/555 -generic/556 -generic/557 -generic/566 -generic/567 -generic/571 -generic/572 -generic/573 -generic/574 -generic/575 -generic/576 -generic/577 -generic/578 -generic/580 -generic/581 -generic/582 -generic/583 -generic/584 -generic/586 -generic/587 -generic/588 -generic/591 -generic/592 -generic/593 -generic/594 -generic/595 -generic/596 -generic/597 -generic/598 -generic/599 -generic/600 -generic/601 -generic/602 -generic/603 -generic/604 -generic/605 -generic/606 -generic/607 -generic/608 -generic/609 -generic/610 -generic/611 -generic/612 -generic/613 -generic/614 -generic/618 -generic/621 -generic/623 -generic/624 -generic/625 -generic/626 -generic/628 -generic/629 -generic/630 -generic/632 -generic/634 -generic/635 -generic/637 -generic/638 -generic/639 -generic/640 -generic/644 -generic/645 -generic/646 -generic/647 -generic/651 -generic/652 -generic/653 -generic/654 -generic/655 -generic/657 -generic/658 -generic/659 -generic/660 -generic/661 -generic/662 -generic/663 -generic/664 -generic/665 -generic/666 -generic/667 -generic/668 -generic/669 -generic/673 -generic/674 -generic/675 -generic/676 -generic/677 -generic/678 -generic/679 -generic/680 -generic/681 -generic/682 -generic/683 -generic/684 -generic/685 -generic/686 -generic/687 -generic/688 -generic/689 -shared/002 -shared/032 -Not -run: -generic/008 -generic/009 -generic/012 -generic/015 -generic/016 -generic/018 -generic/021 -generic/022 -generic/025 -generic/026 -generic/031 -generic/033 -generic/050 -generic/052 -generic/058 -generic/059 -generic/060 -generic/061 -generic/063 -generic/064 -generic/078 -generic/079 -generic/081 -generic/082 -generic/091 -generic/094 -generic/096 -generic/110 -generic/111 -generic/113 -generic/114 -generic/115 -generic/116 -generic/118 -generic/119 -generic/121 -generic/122 -generic/123 -generic/128 -generic/130 -generic/134 -generic/135 -generic/136 -generic/138 -generic/139 -generic/140 -generic/142 -generic/143 -generic/144 -generic/145 -generic/146 -generic/147 -generic/148 -generic/149 -generic/150 -generic/151 -generic/152 -generic/153 -generic/154 -generic/155 -generic/156 -generic/157 -generic/158 -generic/159 -generic/160 -generic/161 -generic/162 -generic/163 -generic/171 -generic/172 -generic/173 -generic/174 -generic/177 -generic/178 -generic/179 -generic/180 -generic/181 -generic/182 -generic/183 -generic/185 -generic/188 -generic/189 -generic/190 -generic/191 -generic/193 -generic/194 -generic/195 -generic/196 -generic/197 -generic/198 -generic/199 -generic/200 -generic/201 -generic/202 -generic/203 -generic/205 -generic/206 -generic/207 -generic/210 -generic/211 -generic/212 -generic/214 -generic/216 -generic/217 -generic/218 -generic/219 -generic/220 -generic/222 -generic/223 -generic/225 -generic/227 -generic/229 -generic/230 -generic/235 -generic/238 -generic/240 -generic/244 -generic/250 -generic/252 -generic/253 -generic/254 -generic/255 -generic/256 -generic/259 -generic/260 -generic/261 -generic/262 -generic/263 -generic/264 -generic/265 -generic/266 -generic/267 -generic/268 -generic/271 -generic/272 -generic/276 -generic/277 -generic/278 -generic/279 -generic/281 -generic/282 -generic/283 -generic/284 -generic/287 -generic/288 -generic/289 -generic/290 -generic/291 -generic/292 -generic/293 -generic/295 -generic/296 -generic/301 -generic/302 -generic/303 -generic/304 -generic/305 -generic/312 -generic/314 -generic/316 -generic/317 -generic/324 -generic/326 -generic/327 -generic/328 -generic/329 -generic/330 -generic/331 -generic/332 -generic/353 -generic/355 -generic/358 -generic/359 -generic/361 -generic/362 -generic/363 -generic/364 -generic/365 -generic/366 -generic/367 -generic/368 -generic/369 -generic/370 -generic/371 -generic/372 -generic/373 -generic/374 -generic/378 -generic/379 -generic/380 -generic/381 -generic/382 -generic/383 -generic/384 -generic/385 -generic/386 -generic/391 -generic/392 -generic/395 -generic/396 -generic/397 -generic/398 -generic/400 -generic/402 -generic/404 -generic/406 -generic/407 -generic/408 -generic/412 -generic/413 -generic/414 -generic/417 -generic/419 -generic/420 -generic/421 -generic/422 -generic/424 -generic/425 -generic/427 -generic/439 -generic/440 -generic/446 -generic/449 -generic/450 -generic/451 -generic/453 -generic/454 -generic/456 -generic/458 -generic/462 -generic/463 -generic/465 -generic/466 -generic/468 -generic/469 -generic/470 -generic/471 -generic/474 -generic/485 -generic/487 -generic/488 -generic/491 -generic/492 -generic/499 -generic/501 -generic/503 -generic/505 -generic/506 -generic/507 -generic/508 -generic/511 -generic/513 -generic/514 -generic/515 -generic/516 -generic/517 -generic/518 -generic/519 -generic/520 -generic/528 -generic/530 -generic/536 -generic/537 -generic/538 -generic/539 -generic/540 -generic/541 -generic/542 -generic/543 -generic/544 -generic/545 -generic/546 -generic/548 -generic/549 -generic/550 -generic/552 -generic/553 -generic/555 -generic/556 -generic/566 -generic/567 -generic/572 -generic/573 -generic/574 -generic/575 -generic/576 -generic/577 -generic/578 -generic/580 -generic/581 -generic/582 -generic/583 -generic/584 -generic/586 -generic/587 -generic/588 -generic/591 -generic/592 -generic/593 -generic/594 -generic/595 -generic/596 -generic/597 -generic/598 -generic/599 -generic/600 -generic/601 -generic/602 -generic/603 -generic/605 -generic/606 -generic/607 -generic/608 -generic/609 -generic/610 -generic/612 -generic/613 -generic/621 -generic/623 -generic/624 -generic/625 -generic/626 -generic/628 -generic/629 -generic/630 -generic/635 -generic/644 -generic/645 -generic/646 -generic/647 -generic/651 -generic/652 -generic/653 -generic/654 -generic/655 -generic/657 -generic/658 -generic/659 -generic/660 -generic/661 -generic/662 -generic/663 -generic/664 -generic/665 -generic/666 -generic/667 -generic/668 -generic/669 -generic/673 -generic/674 -generic/675 -generic/677 -generic/678 -generic/679 -generic/680 -generic/681 -generic/682 -generic/683 -generic/684 -generic/685 -generic/686 -generic/687 -generic/688 -generic/689 -shared/002 -shared/032 -Passed all 512 tests diff --git a/tests/run-tests.sh b/tests/run-tests.sh index f7e6d354..3a6f0377 100755 --- a/tests/run-tests.sh +++ b/tests/run-tests.sh @@ -613,6 +613,9 @@ for t in $tests; do # mark in dmesg as to what test we are running echo "run scoutfs test $test_name" > /dev/kmsg + # let the test get at its extra files + T_EXTRA="$T_TESTS/extra/$test_name" + for iter in $(seq 1 $T_LOOP_ITER); do # create a temporary dir and file path for the test diff --git a/tests/tests/xfstests.sh b/tests/tests/xfstests.sh index bd02a1a3..efc22cc6 100644 --- a/tests/tests/xfstests.sh +++ b/tests/tests/xfstests.sh @@ -63,73 +63,47 @@ export MOUNT_OPTIONS="-o quorum_slot_nr=0,metadev_path=$T_MB0" export TEST_FS_MOUNT_OPTS="-o quorum_slot_nr=0,metadev_path=$T_MB0" EOF -cat << EOF > local.exclude -generic/003 # missing atime update in buffered read -generic/075 # file content mismatch failures (fds, etc) -generic/103 # enospc causes trans commit failures -generic/108 # mount fails on failing device? -generic/112 # file content mismatch failures (fds, etc) -generic/213 # enospc causes trans commit failures -generic/318 # can't support user namespaces until v5.11 -generic/321 # requires selinux enabled for '+' in ls? -generic/338 # BUG_ON update inode error handling -generic/347 # _dmthin_mount doesn't work? -generic/356 # swap -generic/357 # swap -generic/409 # bind mounts not scripted yet -generic/410 # bind mounts not scripted yet -generic/411 # bind mounts not scripted yet -generic/423 # symlink inode size is strlen() + 1 on scoutfs -generic/430 # xfs_io copy_range missing in el7 -generic/431 # xfs_io copy_range missing in el7 -generic/432 # xfs_io copy_range missing in el7 -generic/433 # xfs_io copy_range missing in el7 -generic/434 # xfs_io copy_range missing in el7 -generic/441 # dm-mapper -generic/444 # el9's posix_acl_update_mode is buggy ? -generic/467 # open_by_handle ESTALE -generic/472 # swap -generic/484 # dm-mapper -generic/493 # swap -generic/494 # swap -generic/495 # swap -generic/496 # swap -generic/497 # swap -generic/532 # xfs_io statx attrib_mask missing in el7 -generic/554 # swap -generic/563 # cgroup+loopdev -generic/564 # xfs_io copy_range missing in el7 -generic/565 # xfs_io copy_range missing in el7 -generic/568 # falloc not resulting in block count increase -generic/569 # swap -generic/570 # swap -generic/620 # dm-hugedisk -generic/633 # id-mapped mounts missing in el7 -generic/636 # swap -generic/641 # swap -generic/643 # swap -EOF +cp "$T_EXTRA/local.exclude" local.exclude -t_restore_output +t_stdout_invoked echo " (showing output of xfstests)" args="-E local.exclude ${T_XFSTESTS_ARGS:--g quick}" ./check $args # the fs is unmounted when check finishes +t_stdout_compare + # -# ./check writes the results of the run to check.log. It lists -# the tests it ran, skipped, or failed. Then it writes a line saying -# everything passed or some failed. We scrape the most recent run and -# use it as the output to compare to make sure that we run the right -# tests and get the right results. +# ./check writes the results of the run to check.log. It lists the +# tests it ran, skipped, or failed. Then it writes a line saying +# everything passed or some failed. +# + +# +# If XFSTESTS_ARGS were specified then we just pass/fail to match the +# check run. +# +if [ -n "$T_XFSTESTS_ARGS" ]; then + if tail -1 results/check.log | grep -q "Failed"; then + t_fail + else + t_pass + fi +fi + +# +# Otherwise, typically, when there were no args then we scrape the most +# recent run and use it as the output to compare to make sure that we +# run the right tests and get the right results. # awk ' /^(Ran|Not run|Failures):.*/ { if (pf) { res="" pf="" - } res = res "\n" $0 + } + res = res "\n" $0 } /^(Passed|Failed).*tests$/ { pf=$0 @@ -139,10 +113,14 @@ awk ' }' < results/check.log > "$T_TMPDIR/results" # put a test per line so diff shows tests that differ -egrep "^(Ran|Not run|Failures):" "$T_TMPDIR/results" | \ - fmt -w 1 > "$T_TMPDIR/results.fmt" -egrep "^(Passed|Failed).*tests$" "$T_TMPDIR/results" >> "$T_TMPDIR/results.fmt" +grep -E "^(Ran|Not run|Failures):" "$T_TMPDIR/results" | fmt -w 1 > "$T_TMPDIR/results.fmt" +grep -E "^(Passed|Failed).*tests$" "$T_TMPDIR/results" >> "$T_TMPDIR/results.fmt" -t_compare_output cat "$T_TMPDIR/results.fmt" +diff -u "$T_EXTRA/expected-results" "$T_TMPDIR/results.fmt" > "$T_TMPDIR/results.diff" +if [ -s "$T_TMPDIR/results.diff" ]; then + echo "tests that were skipped/run differed from expected:" + cat "$T_TMPDIR/results.diff" + t_fail +fi t_pass