chitoku-k/fzf-zsh-completions

Tests for `git show **` are failing in Arch Linux

chitoku-k opened this issue · 2 comments

Environment

OS: Arch Linux
git version 2.30.2
zsh 5.8 (x86_64-pc-linux-gnu)

Failing Tests

The ones that satisfy the following conditions are failing in specific environments:

  • completions for git show
  • completes by calling git show --pretty=format: --name-only -z $treeish

@test 'Testing completion: git show another-branch -- **' {
_fzf_complete() {
assert $# equals 6
assert $1 same_as '--ansi'
assert $2 same_as '--read0'
assert $3 same_as '--print0'
assert $4 same_as '--multi'
assert $5 same_as '--'
assert $6 same_as 'git show another-branch -- '
run cat
assert ${#lines} equals 3
actual1=(${(0)lines[1]})
assert ${#actual1} equals 2
assert ${actual1[1]} same_as ' file3 containing space '
assert ${actual1[2]} same_as 'directory2/file4'
actual2=(${(0)lines[2]})
assert ${#actual2} equals 1
assert ${actual2[1]} same_as 'containing'
actual3=(${(0)lines[3]})
assert ${#actual3} equals 1
assert ${actual3[1]} same_as 'newlines'
}
prefix=
_fzf_complete_git 'git show another-branch -- '
}

@test 'Testing completion: git show another-branch:file1 master another-branch v1:file1 -- **' {
_fzf_complete() {
assert $# equals 6
assert $1 same_as '--ansi'
assert $2 same_as '--read0'
assert $3 same_as '--print0'
assert $4 same_as '--multi'
assert $5 same_as '--'
assert $6 same_as 'git show another-branch:file1 master another-branch v1:file1 -- '
run cat
assert ${#lines} equals 3
actual1=(${(0)lines[1]})
assert ${#actual1} equals 3
assert ${actual1[1]} same_as ' file3 containing space '
assert ${actual1[2]} same_as 'directory1/file2'
assert ${actual1[3]} same_as 'directory2/file4'
actual2=(${(0)lines[2]})
assert ${#actual2} equals 1
assert ${actual2[1]} same_as 'containing'
actual3=(${(0)lines[3]})
assert ${#actual3} equals 2
assert ${actual3[1]} same_as 'newlines'
assert ${actual3[2]} same_as 'file1'
}
prefix=
_fzf_complete_git 'git show another-branch:file1 master another-branch v1:file1 -- '
}

It seems that the behaviour o parameter expansion flag in Zsh differ by OSes. In Arch Linux, the leading spaces are exclude when it is sorting.

# Mac and Ubuntu
$ a=(' a1' 'a0' ' b1' 'b0')
$ echo ${(o)a}
 a1  b1 a0 b0
# Arch Linux
$ a=(' a1' 'a0' ' b1' 'b0')
$ echo ${(o)a}
a0  a1 b0  b1

Then it's a locale problem. Thanks for investigating!