a.bats:
setup() {
load bats-support/load
load bats-assert/load
}
# https://www.gnu.org/software/sed/manual/html_node/BRE-syntax.html
# https://www.gnu.org/software/sed/manual/html_node/ERE-syntax.html
qbre() {
local s=$1 d=${2-}
local re='\*|\.|\^|\$|\[|\\' # * . ^ $ [ \
if [ "$d" ]; then
re=$re'|\'$d
fi
printf '%s\n' "$s" | sed -E 's/('"$re"')/\\&/'
}
qere() {
local s=$1 d=${2-}
local re='\*|\.|\^|\$|\[|\\|\?|\+|\{|\|' # * . ^ $ [ \ ? + { |
if [ "$d" ]; then
re=$re'|\'$d
fi
printf '%s\n' "$s" | sed -E 's/('"$re"')/\\&/'
}
@test "bre: *" {
s=`qbre '*'`
run sed /."$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: ." {
s=`qbre .`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: ^" {
s=`qbre ^`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: $" {
s=`qbre $`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: [" {
s=`qbre \[`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: \\" {
s=`qbre \\`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "bre: /" {
s=`qbre / /`
run sed /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: *" {
s=`qere '*'`
run sed -E /."$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: ." {
s=`qere .`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: ^" {
s=`qere ^`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: $" {
s=`qere $`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: [" {
s=`qere \[`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: \\" {
s=`qere \\`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: ?" {
s=`qere \?`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: +" {
s=`qere +`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: {" {
s=`qere \{`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: |" {
s=`qere \|`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}
@test "ere: /" {
s=`qere / /`
run sed -E /"$s"/d < <(echo 'a')
assert_success
assert_output 'a'
}$ git clone https://github.com/bats-core/bats-core
$ git clone https://github.com/bats-core/bats-assert
$ git clone https://github.com/bats-core/bats-support
$ bats-core/bin/bats a.bats