mirror of
https://github.com/oh-my-fish/oh-my-fish.git
synced 2025-02-17 20:52:46 +08:00
bak plugin: tests added
This commit is contained in:
parent
c2c69a91e7
commit
5b861f5c93
|
@ -4,44 +4,49 @@ function __bak_help
|
||||||
$argv[1] SOURCE..."
|
$argv[1] SOURCE..."
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function __bak_name
|
||||||
|
# trim / for directories
|
||||||
|
set file (echo $argv[1] | sed 's/\/$//')
|
||||||
|
echo "$file."(date +'%Y%m%d_%H%M%S')".bak"
|
||||||
|
end
|
||||||
|
|
||||||
function __bak
|
function __bak
|
||||||
set program $argv[2]
|
set program $argv[2]
|
||||||
if [ (count $argv) -gt 2 ]
|
if [ (count $argv) -gt 2 ]
|
||||||
for file in $argv[3..-1]
|
for file in $argv[3..-1]
|
||||||
function bak_name
|
eval $program $file (__bak_name $file)
|
||||||
# trim / for directories
|
|
||||||
set file (echo $argv[1] | sed 's/\/$//')
|
|
||||||
echo "$file.(date +"%Y%m%d_%H%M%S").bak"
|
|
||||||
end
|
|
||||||
|
|
||||||
eval $program $file (bak_name $file)
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
__bak_help $argv[1]
|
__bak_help $argv[1]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
set -g __bak_re '(.*)\.[0-9]{8,8}_[0-9]{6,6}\.bak$'
|
||||||
|
|
||||||
|
function __is_bak
|
||||||
|
set file $argv[1]
|
||||||
|
echo "$file" | grep -Eq $__bak_re
|
||||||
|
end
|
||||||
|
|
||||||
|
function __bak_normalized
|
||||||
|
set file $argv[1]
|
||||||
|
echo "$file" | sed -E "s/$__bak_re/\1/g"
|
||||||
|
end
|
||||||
|
|
||||||
function __unbak
|
function __unbak
|
||||||
set program $argv[2]
|
set program $argv[2]
|
||||||
if [ (count $argv) -gt 2 ]
|
if [ (count $argv) -gt 2 ]
|
||||||
for file in $argv[3..-1]
|
for file in $argv[3..-1]
|
||||||
set re_bak '(.*)\.[0-9]{8,8}_[0-9]{6,6}\.bak'
|
set normalized (__bak_normalized $file)
|
||||||
set file $argv[1]
|
if test ! -e $file
|
||||||
set normalized (echo "$file" | sed -r "s/$re_bak/\1/g")
|
echo "File \"$file\" not exists! Cannot unbak \"$file\"."
|
||||||
|
else if not __is_bak $file
|
||||||
function is_bak
|
echo "File \"$file\" don't meet bak files convention! Cannot unbak \"$file\"."
|
||||||
echo "$file" | perl -ne "print if /$re_bak/" > /dev/null
|
else if test -e $normalized
|
||||||
end
|
echo "File \"$normalized\" exists! Cannot unbak \"$file\"."
|
||||||
|
else
|
||||||
if test ! -e $file
|
eval $program $file $normalized
|
||||||
echo "File \"$file\" not exists! Cannot unbak \"$file\"."
|
end
|
||||||
else if not is_bak $file
|
|
||||||
echo "File \"$file\" don't meet bak files convention! Cannot unbak \"$file\"."
|
|
||||||
else if test -e $normalized
|
|
||||||
echo "File \"$normalized\" exists! Cannot unbak \"$file\"."
|
|
||||||
else
|
|
||||||
eval $program $file $normalized
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
__bak_help $argv[1]
|
__bak_help $argv[1]
|
||||||
|
|
8
plugins/bak/tests/helper.fish
Normal file
8
plugins/bak/tests/helper.fish
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
set -l fish_tank /usr/local/share/fish-tank/tank.fish
|
||||||
|
if not test -e $fish_tank
|
||||||
|
echo 'error: fish-tank is required to run these tests (https://github.com/terlar/fish-tank)'
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
source $fish_tank
|
||||||
|
source (dirname (status -f))/../*.fish
|
100
plugins/bak/tests/test_bak.fish
Executable file
100
plugins/bak/tests/test_bak.fish
Executable file
|
@ -0,0 +1,100 @@
|
||||||
|
function suite_bak
|
||||||
|
function setup
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
function teardown
|
||||||
|
rm -rf $test_dir/*
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_is_bak
|
||||||
|
assert (__is_bak '.ccnet.20140817_234302.bak')
|
||||||
|
assert (__is_bak 'file with spaces.20140817_234302.bak')
|
||||||
|
assert (not __is_bak '.ccnet.bak')
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_normalized
|
||||||
|
assert_equal '.ccnet' (__bak_normalized '.ccnet.20140817_234302.bak')
|
||||||
|
assert_equal 'file with spaces' (__bak_normalized 'file with spaces.20140817_234302.bak')
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_mv_single
|
||||||
|
touch a
|
||||||
|
mvbak a
|
||||||
|
assert __is_bak (ls)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_mv_multiple
|
||||||
|
touch a b
|
||||||
|
mvbak a b
|
||||||
|
for f in (ls)
|
||||||
|
assert __is_bak $f
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_unmv_single
|
||||||
|
touch a
|
||||||
|
mvbak a
|
||||||
|
unmvbak (ls)
|
||||||
|
assert_equal a (ls)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_unmv_multiple
|
||||||
|
set files (seq 4)
|
||||||
|
touch $files
|
||||||
|
mvbak $files
|
||||||
|
unmvbak (ls)
|
||||||
|
assert_equal "$files" (ls)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_cp_single
|
||||||
|
touch a
|
||||||
|
cpbak a
|
||||||
|
assert_equal (echo -e 'a' (__bak_name a) | sort) (ls | sort)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_cp_multiple
|
||||||
|
set files (seq 4)
|
||||||
|
touch $files
|
||||||
|
cpbak $files
|
||||||
|
for f in $files
|
||||||
|
set files_bak "$files_bak\n"(__bak_name $f)
|
||||||
|
end
|
||||||
|
set expected (begin; echo $files | sed 's/ /\n/g'; echo -e $files_bak; end | sort | grep -v '^$')
|
||||||
|
assert_equal "$expected" (ls | sort)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_uncp_single
|
||||||
|
touch a
|
||||||
|
cpbak a
|
||||||
|
rm a
|
||||||
|
uncpbak (ls)
|
||||||
|
assert_equal (echo -e 'a' (__bak_name a) | sort) (ls | sort)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test_cp_multiple
|
||||||
|
set files (seq 4)
|
||||||
|
touch $files
|
||||||
|
cpbak $files
|
||||||
|
rm $files
|
||||||
|
uncpbak (ls)
|
||||||
|
for f in $files
|
||||||
|
set files_bak "$files_bak\n"(__bak_name $f)
|
||||||
|
end
|
||||||
|
set expected (begin; echo $files | sed 's/ /\n/g'; echo -e $files_bak; end | sort | grep -v '^$')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if not set -q tank_running
|
||||||
|
source (dirname (status -f))/helper.fish
|
||||||
|
|
||||||
|
set -g test_dir /tmp/bak_test
|
||||||
|
mkdir -p $test_dir
|
||||||
|
pushd
|
||||||
|
cd $test_dir
|
||||||
|
|
||||||
|
tank_run
|
||||||
|
|
||||||
|
popd
|
||||||
|
set -e test_dir
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user