diff --git a/.gitmodules b/.gitmodules index 7fc150b..8ef9f29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,3 +8,6 @@ [submodule "tests/golden/helpers/bats-support"] path = tests/golden/helpers/bats-support url = git@github.com:bats-core/bats-support.git +[submodule "tests/golden/helpers/bats-file"] + path = tests/golden/helpers/bats-file + url = https://github.com/bats-core/bats-file.git diff --git a/tests/golden/check-anchors/check-anchors.bats b/tests/golden/check-anchors/check-anchors.bats index 8a2a82c..9598fcf 100644 --- a/tests/golden/check-anchors/check-anchors.bats +++ b/tests/golden/check-anchors/check-anchors.bats @@ -6,16 +6,25 @@ load '../helpers/bats-support/load' load '../helpers/bats-assert/load' +load '../helpers/bats-file/load' load '../helpers' @test "Relative anchor, check error report" { - xrefcheck | prepare > /tmp/check-anchors.test || true + to_temp xrefcheck - diff /tmp/check-anchors.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty + assert_diff - < /tmp/check-cli.test || true + to_temp xrefcheck --root . - diff /tmp/check-cli.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty + assert_diff - < /tmp/check-cli.test || true + to_temp xrefcheck --root ././///././././//./ - diff /tmp/check-cli.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty + assert_diff - < /tmp/check-cli.test || true + to_temp xrefcheck - diff /tmp/check-cli.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty + assert_diff - < /tmp/check-localhost.test || true + -r . - diff /tmp/check-localhost.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty - - rm /tmp/check-localhost.test + assert_diff expected.gold } @test "Ignore localhost, no config specified" { diff --git a/tests/golden/check-ignored/check-ignored.bats b/tests/golden/check-ignored/check-ignored.bats index f049a12..17426c0 100644 --- a/tests/golden/check-ignored/check-ignored.bats +++ b/tests/golden/check-ignored/check-ignored.bats @@ -6,6 +6,7 @@ load '../helpers/bats-support/load' load '../helpers/bats-assert/load' +load '../helpers/bats-file/load' load '../helpers' @@ -33,14 +34,8 @@ load '../helpers' assert_output --partial "All repository links are valid." } -@test "Ignore file with broken xrefcheck annotation: directory, check filure" { - xrefcheck --ignored ./to-ignore/inner-directory/ \ - | prepare > /tmp/check-ignored.test || true +@test "Ignore file with broken xrefcheck annotation: directory, check failure" { + to_temp xrefcheck --ignored ./to-ignore/inner-directory/ - diff /tmp/check-ignored.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty - - rm /tmp/check-ignored.test + assert_diff expected.gold } diff --git a/tests/golden/check-notScanned/check-notScanned.bats b/tests/golden/check-notScanned/check-notScanned.bats index a66f650..b3b033c 100644 --- a/tests/golden/check-notScanned/check-notScanned.bats +++ b/tests/golden/check-notScanned/check-notScanned.bats @@ -6,6 +6,7 @@ load '../helpers/bats-support/load' load '../helpers/bats-assert/load' +load '../helpers/bats-file/load' load '../helpers' @@ -28,13 +29,21 @@ load '../helpers' } @test "Not scanned: directory, check failure" { - xrefcheck -c config-directory.yaml \ - | prepare > /tmp/check-notScanned.test || true + to_temp xrefcheck -c config-directory.yaml - diff /tmp/check-notScanned.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty + assert_diff - < /tmp/check-scan-errors.test || true + to_temp xrefcheck - diff /tmp/check-scan-errors.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty - - rm /tmp/check-scan-errors.test + assert_diff expected.gold } diff --git a/tests/golden/check-virtualFiles/check-virtualFiles.bats b/tests/golden/check-virtualFiles/check-virtualFiles.bats index 8ed74e6..cd68271 100644 --- a/tests/golden/check-virtualFiles/check-virtualFiles.bats +++ b/tests/golden/check-virtualFiles/check-virtualFiles.bats @@ -6,6 +6,7 @@ load '../helpers/bats-support/load' load '../helpers/bats-assert/load' +load '../helpers/bats-file/load' load '../helpers' @@ -16,12 +17,7 @@ load '../helpers' } @test "Virtual files: check failure" { - xrefcheck | prepare > /tmp/check-virtualFiles.test || true + to_temp xrefcheck - diff /tmp/check-virtualFiles.test expected.gold \ - --ignore-space-change \ - --ignore-blank-lines \ - --new-file # treat absent files as empty - - rm /tmp/check-virtualFiles.test + assert_diff expected.gold } diff --git a/tests/golden/helpers.bash b/tests/golden/helpers.bash index 0b8926f..a4b2b3d 100644 --- a/tests/golden/helpers.bash +++ b/tests/golden/helpers.bash @@ -5,6 +5,11 @@ setup () { # change working directory to the location of the running `bats` suite. cd "$( dirname "$BATS_TEST_FILENAME")" + TEST_TEMP_DIR="$(temp_make)" +} + +teardown() { + temp_del "$TEST_TEMP_DIR" } # this function is used for: @@ -17,3 +22,54 @@ prepare () { | sed 's/socket: [0-9]*/socket: N/g' \ | sed 's/Network.Socket.connect: : does not exist (Connection refused),//g' } + +# Create temporary file with program output, used with `assert_diff`. +to_temp() { + output_file="$TEST_TEMP_DIR/temp_file.test" + $@ | prepare > $output_file +} + +# Uses `diff` to compare output file created by `to_temp` against expected output. +# Expected output could be given either: +# - in the form of a filepath, e.g. `assert_diff expected.gold` +# - via stdin when `-` is used, e.g. `assert_diff -` +# Usage examples: +# - filepath: +# +# @test "Ignore localhost, check errors" { +# to_temp xrefcheck \ +# -c config-check-enabled.yaml \ +# -r . +# +# assert_diff expected.gold +# } +# +# - stdin: +# @test "Relative anchor, check error report" { +# to_temp xrefcheck +# +# assert_diff - <