Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions src/assertions.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -435,3 +435,29 @@ function _zunit_assert_is_executable() {
echo "'$pathname' does not exist or is not executable"
exit 1
}

###
# Assert the file content matches golden file.
###
function _zunit_assert_is_golden_file() {
local pathname=$1 filepath goldenname=$2 goldenpath

# If filepath is relative, prepend the test directory
if [[ "${pathname:0:1}" != "/" ]]; then
filepath="$testdir/${pathname}"
else
filepath="$pathname"
fi

# If goldenpath is relative, prepend the test directory
if [[ "${goldenname:0:1}" != "/" ]]; then
goldenpath="$testdir/${goldenname}"
else
goldenpath="$goldenname"
fi

cmp -s $filepath $goldenpath && return 0

echo "'$pathname' does not match golden file content at '$goldenname'"
exit 1
}
1 change: 1 addition & 0 deletions tests/_support/sample-file
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This sample file has same content as golden file and vice versa.
1 change: 1 addition & 0 deletions tests/_support/sample-file-golden
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This sample file has same content as golden file and vice versa.
13 changes: 13 additions & 0 deletions tests/assertions/is_golden_file.zunit
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/usr/bin/env zunit

@test 'Test _zunit_assert_is_golden_file success' {
run assert '../_support/sample-file' is_golden_file '../_support/sample-file-golden'
assert $state equals 0
assert $output is_empty
}

@test 'Test _zunit_assert_is_golden_file failure' {
run assert './is_golden_file.zunit' is_golden_file '../_support/sample-file-golden'
assert $state equals 1
assert $output same_as "'./is_golden_file.zunit' does not match golden file content at '../_support/sample-file-golden'"
}