From d618467ff090a6dbfb327ca0a29141d0c9312b24 Mon Sep 17 00:00:00 2001 From: Vladislav Doster Date: Thu, 5 Jan 2023 04:36:25 -0600 Subject: [PATCH] fix: failing zunit tests & bootstrap script Signed-off-by: Vladislav Doster --- .github/workflows/tests.yaml | 13 ++- .gitignore | 2 +- .zunit.yml | 6 +- tests/_support/annex_test_assertions | 11 +- tests/_support/bootstrap | 86 +++++++++------- tests/annexes.zunit | 48 +++------ tests/gh-r.zunit | 145 +++++++++++++-------------- tests/ices.zunit | 30 ++---- 8 files changed, 159 insertions(+), 182 deletions(-) mode change 100644 => 100755 tests/ices.zunit diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 2c087be9..24fdae33 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -28,7 +28,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: ['macos-12','ubuntu-20.04','ubuntu-22.04'] + os: ['macos-latest','ubuntu-latest'] fail-fast: false steps: @@ -44,18 +44,17 @@ jobs: - name: "install musl" if: runner.os == 'Linux' run: | - sudo apt-get clean && sudo apt-get update && sudo apt-get install \ + sudo apt-get update \ + && sudo apt-get install \ build-essential curl file gcc gcc-multilib glibc-source \ libc6 libc6-dev \ musl musl-dev musl-tools unzip zsh - name: "install dependencies" id: install-deps - run: brew install ncurses svn unzip zsh xz - - - name: "install revolver" - id: install-revolver - run: brew install molovo/revolver/revolver + run: | + export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 + brew install --force --overwrite gnu-sed coreutils unzip xz zsh - name: "install zunit" id: install-zunit diff --git a/.gitignore b/.gitignore index e4ce82ff..aa8d8e42 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,5 @@ test/ txt/ zmodules/ tests/_output/ -tests/_support/zunit/ +tests/_support/tmp* .idea diff --git a/.zunit.yml b/.zunit.yml index 379c34bf..1a920e10 100644 --- a/.zunit.yml +++ b/.zunit.yml @@ -1,7 +1,7 @@ allow_risky: false directories: - tests: tests output: tests/_output support: tests/_support -fail_fast: true -verbose: true + tests: tests +fail_fast: false +verbose: false diff --git a/tests/_support/annex_test_assertions b/tests/_support/annex_test_assertions index 998578a3..1ce82544 100644 --- a/tests/_support/annex_test_assertions +++ b/tests/_support/annex_test_assertions @@ -1,9 +1,10 @@ #!/usr/bin/env zsh -_annex_test_function() { - run zinit load zdharma-continuum/${1} +is_annex() { + local annex="zinit-annex-${1}" + run zinit load zdharma-continuum/${annex} assert ${state} equals 0 - zinit cd zdharma-continuum/${1} - assert ${PWD}/${${1}//zinit-annex/z-a}.plugin.zsh is_file - assert ${PWD}/${${1}//zinit-annex/z-a}.plugin.zsh is_readable + zinit cd zdharma-continuum/${annex} + assert ${PWD}/${${annex}//zinit-annex/z-a}.plugin.zsh is_file + assert ${PWD}/${${annex}//zinit-annex/z-a}.plugin.zsh is_readable } diff --git a/tests/_support/bootstrap b/tests/_support/bootstrap index ef659539..228c266b 100755 --- a/tests/_support/bootstrap +++ b/tests/_support/bootstrap @@ -1,49 +1,67 @@ #!/usr/bin/env zsh +setopt NO_GLOBAL_RCS NO_GLOBAL_EXPORT NO_RCS # Log functions [[[ -function error(){ print -P "%F{red}ZUNIT[ERROR]: $1%f" && return 1; } -function info() { print -P "%F{blue}ZUNIT[INFO]%f: %F{cyan}$1%f"; } -function warn() { print -P "%F{yellow}ZUNIT[WARN]: $1%f"; } +function error(){ print -P "%F{red}[ERROR]%f: ${1}" && return 1; } +function info() { print -P "%F{green}[INFO]%f:%F{cyan} ${1} %f"; } +function warn() { print -P "%F{yellow}[WARN]%f: ${1}"; } # ]]] # Create Zunit test environment [[[ GIT_REPO=$(git rev-parse --show-toplevel) -typeset -gAH ZINIT; -ZINIT[HOME_DIR]="$GIT_REPO/tests/_support/zunit"; ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git; -ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions; ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets; -ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump; ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins; + +_mktemp_cmd='mktemp' +if (( ${+commands[gmktemp]} )); then + _mktemp_cmd='gmktemp' +fi +TMP_ZUNIT=$(${_mktemp_cmd} --directory --tmpdir="${GIT_REPO}/tests/_support") +if [[ ! -d ${TMP_ZUNIT} ]]; then + error "zunit temp dir not found" + exit 1 +fi + +typeset -gAH ZINIT; +ZINIT[HOME_DIR]=${TMP_ZUNIT}; +ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git; +ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions; +ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins; +ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets; +ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump; ZPFX=$ZINIT[HOME_DIR]/polaris; -rm -rf $ZINIT[HOME_DIR] -mkdir -p $ZINIT[HOME_DIR] -git diff > $ZINIT[HOME_DIR]/unstaged.diff -info 'creating test env' \ - && git clone \ - --dissociate \ - --local \ - --no-hardlinks \ - --reference "$GIT_REPO" \ - "$GIT_REPO" \ - "$GIT_REPO"/tests/_support/zunit/zinit.git \ - || error 'failed to create zinit copy for test env' \ - && [[ -s $ZINIT[HOME_DIR]/unstaged.diff ]] \ - && git -C $ZINIT[BIN_DIR] apply $ZINIT[HOME_DIR]/unstaged.diff \ - && info 'installing zinit' \ - && command chmod g-rwX $ZINIT[HOME_DIR] \ - && zcompile $ZINIT[BIN_DIR]/zinit.zsh \ - && info 'successfully created zunit env' \ - || error 'failed to create zunit env' +command git diff > ${ZINIT[HOME_DIR]}/unstaged.diff +info 'creating test env' +git clone \ + --dissociate \ + --local \ + --no-hardlinks \ + --reference "${GIT_REPO}" \ + "${GIT_REPO}" \ + "${ZINIT[BIN_DIR]}" +if (( $? != 0 )); then + error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2 + exit 1 +fi -source $ZINIT[BIN_DIR]/zinit.zsh \ - && autoload -Uz _zinit \ - && (( ${+_comps} )) \ - && _comps[zinit]=_zinit +if [[ -s $ZINIT[HOME_DIR]/unstaged.diff ]]; then + ( + git -C $ZINIT[BIN_DIR] apply $ZINIT[HOME_DIR]/unstaged.diff && \ + chmod g-rwX "${ZINIT[HOME_DIR]}" && \ + zcompile "${ZINIT[BIN_DIR]}/zinit.zsh" + ) +fi +(( $? != 0 )) && { error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2; exit 1 } + +{ + source $ZINIT[BIN_DIR]/zinit.zsh && \ + autoload -Uz _zinit && \ + (( ${+_comps} )) && \ + _comps[zinit]=_zinit +} +(( $? != 0 )) && { error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2; exit 1 } # ]]] # Install Annexes [[[ info 'installing test dependencies' - # ver'fix/improve-lbin-logic' \ -zinit depth'1' light-mode for \ - zdharma-continuum/zinit-annex-binary-symlink \ - zdharma-continuum/zinit-annex-{'bin-gem-node','default-ice'} +zinit depth'1' light-mode for zdharma-continuum/zinit-annex-{'binary-symlink','default-ice'} # ]]] # vim:ft=zsh:sw=2:sts=2:et:foldmarker=[[[,]]]:foldmethod=marker diff --git a/tests/annexes.zunit b/tests/annexes.zunit index 670ca33e..a4c830c1 100755 --- a/tests/annexes.zunit +++ b/tests/annexes.zunit @@ -1,63 +1,41 @@ #!/usr/bin/env zunit @setup { - load $PWD/tests/_support/annex_test_assertions + load "${PWD}/tests/_support/annex_test_assertions" } -# TEST: zinit-annex-bin-gem-node @test 'zinit-annex-bin-gem-node' { - local annex="zinit-annex-bin-gem-node" - _annex_test_function $annex + is_annex "bin-gem-node" } -# TEST: zinit-annex-binary-symlink @test 'zinit-annex-binary-symlink' { - local annex="zinit-annex-binary-symlink" - _annex_test_function $annex + is_annex "binary-symlink" } -# TEST: zinit-annex-man @test 'zinit-annex-man' { - local annex="zinit-annex-man" - _annex_test_function $annex + is_annex "man" } -# TEST: zinit-annex-meta-plugins @test 'zinit-annex-meta-plugins' { - local annex="zinit-annex-test" - _annex_test_function $annex + is_annex "meta-plugins" } -# TEST: zinit-annex-patch-dl @test 'zinit-annex-patch-dl' { - local annex="zinit-annex-patch-dl" - _annex_test_function $annex + is_annex "patch-dl" } -# TEST: zinit-annex-pull @test 'zinit-annex-pull' { - local annex="zinit-annex-pull" - _annex_test_function $annex + is_annex 'pull' } -# TEST: zinit-annex-readurl @test 'zinit-annex-readurl' { - local annex="zinit-annex-readurl" - _annex_test_function $annex + is_annex 'readurl' } -# TEST: zinit-annex-rust @test 'zinit-annex-rust' { - local annex="zinit-annex-rust" - _annex_test_function $annex + is_annex 'rust' } -# TEST: zinit-annex-submods @test 'zinit-annex-submods' { - local annex="zinit-annex-submods" - _annex_test_function $annex + is_annex 'submods' } -# TEST: zinit-annex-test @test 'zinit-annex-test' { - local annex="zinit-annex-test" - _annex_test_function $annex + is_annex 'test' } -# TEST: zinit-annex-unscope @test 'zinit-annex-unscope' { - local annex="zinit-annex-test" - _annex_test_function $annex + is_annex 'unscope' } -# vim:ft=zsh:sw=2:sts=2:et:foldmarker=TEST,}:foldmethod=marker +# vim:ft=zsh:sw=2:sts=2:et:foldmarker={,}:foldmethod=marker diff --git a/tests/gh-r.zunit b/tests/gh-r.zunit index a3216856..88f22441 100755 --- a/tests/gh-r.zunit +++ b/tests/gh-r.zunit @@ -1,8 +1,8 @@ #!/usr/bin/env zunit @setup { - zinit default-ice as'null' from"gh-r" lbin'!' nocompile nocompletions - ZBIN=$ZPFX/bin + zinit default-ice --quiet from'gh-r' nocompile lbin'!' + ZBIN="${ZPFX}/bin" } @test 'act' { # Run your GitHub Actions locally @@ -31,11 +31,12 @@ local assh="$ZBIN/assh"; assert "$assh" is_executable $assh --version; assert $state equals 0 } -# @test 'atmos' { # Universal Tool for DevOps and Cloud Automation (works with terraform, helm, helmfile, etc) -# run zinit for lbin'!* -> atmos' @cloudposse/atmos; assert $state equals 0 -# local atmos="$ZBIN/atmos"; assert "$atmos" is_executable -# $atmos version; assert $state equals 0 -# } +@test 'atmos' { # Universal Tool for DevOps and Cloud Automation (works with terraform, helm, helmfile, etc) + skip 'null' + # run zinit for lbin'!* -> atmos' @cloudposse/atmos; assert $state equals 0 + # local atmos="$ZBIN/atmos"; assert "$atmos" is_executable + # $atmos version; assert $state equals 0 +} @test 'atuin' { # Magical shell history run zinit for @ellie/atuin; assert $state equals 0 local atuin="$ZBIN/atuin"; assert "$atuin" is_executable @@ -63,26 +64,23 @@ $bazel --version; assert $state equals 0 } # TODO: gh-r does not find older assets anymore (possible bug from https://github.com/zdharma-continuum/zinit/pull/373) -# @test 'bit' { # A tool for composable software development -# run zinit lbin'!* -> bit' for @teambit/bit; assert $state equals 0 -# local bit="$ZBIN/bit"; assert "$bit" is_executable -# $bit --version; assert $state equals 0 -# } +@test 'bit' { # A tool for composable software development + skip 'skip bit test due to gh-r version bug' + run zinit lbin'!bit* -> bit' for @teambit/bit; assert $state equals 0 + local bit="$ZBIN/bit"; assert "$bit" is_executable + $bit --version; assert $state equals 0 +} @test 'blast' { # Blast is a simple tool for API load testing and batch jobs + [[ $OSTYPE =~ 'darwin*' ]] && skip 'Blast test skipped on Darwin' run zinit for @dave/blast; assert $state equals 0 local blast="$ZBIN/blast"; assert "$blast" is_executable - $blast --dry; assert $state equals 0 + $blast --dry=1; assert $state equals 0 } @test 'boilr' { # boilerplate template manager that generates files or directories from template repositories - run zinit for @tmrts/boilr - assert $state equals 0 - [[ $OSTYPE =~ 'darwin*' ]] \ - && assert "$output" contains 'darwin' \ - && pass - local boilr="$ZBIN/boilr" - assert "$boilr" is_executable - $boilr --help - assert $state equals 0 + run zinit for @tmrts/boilr; assert $state equals 0 + local boilr="$ZBIN/boilr"; assert "$boilr" is_executable + [[ $OSTYPE =~ 'darwin*' ]] && assert "$output" contains "darwin_amd64" && pass + $boilr --help; assert $state equals 0 } @test 'bottom' { # Yet another cross-platform graphical process/system monitor run zinit lbin'!**/btm' for ClementTsang/bottom; assert $state equals 0 @@ -110,28 +108,23 @@ $checkmake --version; assert $state equals 0 } @test 'cog' { # Containers for machine learning - run zinit lbin'!cog* -> cog' for replicate/cog; assert $state equals 0 + run zinit lbin'!cog* -> cog' for @replicate/cog; assert $state equals 0 local cog="$ZBIN/cog"; assert "$cog" is_executable $cog --version; assert $state equals 0 } @test 'compress' { # Optimized Go Compression Packages - run zinit bpick'*.tar.gz' lbin'!s2c;s2d;s2sx;' for klauspost/compress; assert $state equals 0 + run zinit bpick'*.tar.gz' lbin'!s2c;s2d;s2sx;' for @klauspost/compress; assert $state equals 0 local compress="$ZBIN/s2c"; assert "$compress" is_executable $compress --help; assert $state equals 0 } @test 'create-go-app' { # Create a new production-ready project with backend, frontend and deploy automation by running one CLI command - run zinit lbin'!**/cgapp' for create-go-app/cli - assert $state equals 0 - [[ $OSTYPE =~ 'darwin*' && $(uname -p) == 'arm' ]] \ - && assert "$output" contains 'macOS' \ - && pass - local cgapp="$ZBIN/cgapp" - assert "$cgapp" is_executable - $cgapp --version - assert $state equals 0 + run zinit for id-as'cgapp' @create-go-app/cli; assert $state equals 0 + local cgapp="$ZBIN/cgapp"; assert "$cgapp" is_executable + [[ $OSTYPE =~ 'darwin*' ]] && assert "$output" contains "macOS_$(uname -m)" && pass + $cgapp --version; assert $state equals 0 } -@test 'csview' { # Pretty csv viewer for cli with cjk/emoji support. - run zinit for wfxr/csview; assert $state equals 0 +@test 'csview' { # Pretty csv viewer for cli with cjk/emoji support + run zinit for @wfxr/csview; assert $state equals 0 local csview="$ZBIN/csview"; assert "$csview" is_executable $csview --version; assert $state equals 0 } @@ -146,8 +139,7 @@ $dive --version; assert $state equals 0 } @test 'docker-buildx' { # A monitor of resources - run zinit for as'completions' atclone'./buildx* completion zsh > _buildx' lbin'!buildx-* -> buildx' @docker/buildx - assert $state equals 0 + run zinit for lbin'!* -> buildx' @docker/buildx; assert $state equals 0 local buildx="$ZBIN/buildx"; assert "$buildx" is_executable $buildx version; assert $state equals 0 } @@ -157,7 +149,7 @@ $dc --version; assert $state equals 0 } @test 'docker-credential-helpers' { # A monitor of resources - [[ $OSTYPE =~ 'linux*' ]] && skip 'docker-credential-helpers test skipped on Linux' + [[ $OSTYPE =~ 'linux*' ]] && skip 'skipped on Linux' run zinit for lbin'!* -> docker-credential-desktop' @docker/docker-credential-helpers; assert $state equals 0 local credential_desktop="$ZBIN/docker-credential-desktop"; assert "$credential_desktop" is_executable $credential_desktop version; assert $state equals 0 @@ -193,7 +185,7 @@ $etcd --version; assert $state equals 0 } @test 'exa' { # A modern replacement for ls - run zinit lbin'!**/exa' for ogham/exa; assert $state equals 0 + run zinit lbin'!**/exa' for @ogham/exa; assert $state equals 0 local exa="$ZBIN/exa"; assert "$exa" is_executable $exa --version; assert $state equals 0 } @@ -218,7 +210,7 @@ $fzf --version; assert $state equals 0 } @test 'gaper' { # Builds and restarts a Go project when it crashes or some watched file changes - if [[ ! $OSTYPE =~ 'linux.*' ]]; then skip 'maxcnunes/gaper only tested for Linux/GNU'; fi + if [[ ! $OSTYPE =~ 'linux.*' ]]; then skip 'null'; fi run zinit lbin'!**/gaper' for @maxcnunes/gaper; assert $state equals 0 local gaper="$ZBIN/gaper"; assert "$gaper" is_executable $gaper --version; assert $state equals 0 @@ -239,7 +231,7 @@ $git_sizer --version; assert $state equals 0 } @test 'gh-cli' { # GitHub’s official command line tool - run zinit lbin'!**/gh' for cli/cli; assert $state equals 0 + run zinit lbin'!**/gh' for @cli/cli; assert $state equals 0 local gh_cli="$ZBIN/gh"; assert "$gh_cli" is_executable $gh_cli --version; assert $state equals 0 } @@ -331,7 +323,7 @@ $gron --version; assert $state equals 0 } @test 'hadolint' { # Dockerfile linter, validate inline bash, written in Haskell - run zinit lbin'!* -> hadolint' for @hadolint/hadolint; assert $state equals 0 + run zinit ver'v2.12.1-beta' lbin'!hadolint* -> hadolint' for @hadolint/hadolint; assert $state equals 0 local hadolint="$ZBIN/hadolint"; assert "$hadolint" is_executable $hadolint --version; assert $state equals 0 } @@ -362,7 +354,7 @@ local hoofli="$ZBIN/hoofli"; assert "$hoofli" is_executable $hoofli -h; assert $state equals 0 } -@test 'hors' { # instant coding answers via the command line (howdoi in rust) +@test 'hors' { # instant coding answers via the command line if [[ $OSTYPE =~ 'linux.*' ]]; then skip 'WindSoilder/hors only tested for macOS'; fi run zinit for @WindSoilder/hors; assert $state equals 0 local hors="$ZBIN/hors"; assert "$hors" is_executable @@ -379,7 +371,7 @@ $igo version; assert $state equals 0 } @test 'insect' { # High precision scientific calculator with support for physical units - run zinit lbin'!* -> insect' for @sharkdp/insect; assert $state equals 0 + run zinit ver'v5.7.0' lbin'!* -> insect' for @sharkdp/insect; assert $state equals 0 local insect="$ZBIN/insect"; assert "$insect" is_executable $insect help; assert $state equals 0 } @@ -394,18 +386,18 @@ $jq --version; assert $state equals 0 } @test 'just' { # Just a command runner - run zinit for casey/just; assert $state equals 0 + run zinit for @casey/just; assert $state equals 0 local just="$ZBIN/just"; assert "$just" is_executable $just --version; assert $state equals 0 } -@test 'keepassxc' { # a cross-platform community-driven port of the Windows application 'Keepass Password Safe' - if [[ $OSTYPE =~ 'linux.*' ]]; then skip 'keepassxc test only ran on macOS'; fi +@test 'keepassxc' { # a cross-platform community-driven port of the Windows application Keepass Password Safe + [[ $OSTYPE =~ 'linux.*' ]] && skip 'null' run zinit for @keepassxreboot/keepassxc; assert $state equals 0 local keepassxc="$ZBIN/keepassxc"; assert "$keepassxc" is_executable $keepassxc -v; assert $state equals 0 } @test 'ko' { # Build and deploy Go applications on Kubernetes - run zinit for ko-build/ko; assert $state equals 0 + run zinit for @ko-build/ko; assert $state equals 0 local ko="$ZBIN/ko"; assert "$ko" is_executable $ko version; assert $state equals 0 } @@ -420,7 +412,7 @@ $kopia --version; assert $state equals 0 $krew version; assert $state equals 0 } @test 'lazygit' { # simple terminal UI for git commands - run zinit for jesseduffield/lazygit; assert $state equals 0 + run zinit for @jesseduffield/lazygit; assert $state equals 0 local lazygit="$ZBIN/lazygit"; assert "$lazygit" is_executable $lazygit --version; assert $state equals 0 } @@ -435,13 +427,13 @@ $kopia --version; assert $state equals 0 $lsd --version; assert $state equals 0 } @test 'lnav' { # advanced log file viewer - run zinit for tstack/lnav; assert $state equals 0 + run zinit for @tstack/lnav; assert $state equals 0 local lnav="$ZBIN/lnav"; assert "$lnav" is_executable $lnav --version; assert $state equals 0 } @test 'lstf' { # The aggregated TCP flows printer in Linux - if [[ ! $OSTYPE =~ 'linux.*' ]]; then skip 'lstf test only ran on Linux'; fi - run zinit for yuuki/lstf; assert $state equals 0 + [[ ! $OSTYPE =~ 'linux.*' ]] && skip 'null' + run zinit for @yuuki/lstf; assert $state equals 0 local lstf="$ZBIN/lstf"; assert "$lstf" is_executable $lstf --version; assert $state equals 0 } @@ -451,18 +443,18 @@ $kopia --version; assert $state equals 0 $mage -version; assert $state equals 0 } @test 'mas' { # Mac App Store command line interface - if [[ ! $OSTYPE =~ 'darwin.*' ]]; then skip 'mas test only ran on macOS'; fi + [[ ! $OSTYPE =~ 'darwin.*' ]] && skip 'null' run zinit lbin'!**/bin/mas' for @mas-cli/mas; assert $state equals 0 local mas="$ZBIN/mas"; assert "$mas" is_executable $mas version; assert $state equals 0 } @test 'mdbook' { # Create book from markdown files. Like Gitbook but implemented in Rust - run zinit for rust-lang/mdBook; assert $state equals 0 + run zinit for @rust-lang/mdBook; assert $state equals 0 local mdbook="$ZBIN/mdbook"; assert "$mdbook" is_executable $mdbook --version; assert $state equals 0 } @test 'micro' { # A modern and intuitive terminal-based text editor - run zinit for zyedidia/micro; assert $state equals 0 + run zinit for @zyedidia/micro; assert $state equals 0 local micro="$ZBIN/micro"; assert "$micro" is_executable $micro --version; assert $state equals 0 } @@ -472,7 +464,7 @@ $kopia --version; assert $state equals 0 $mkcert --version; assert $state equals 0 } @test 'mmake' { # A Make/rake-like dev tool using Go - run zinit for ver'v1.3.0' lbin'!* -> mmake' @tj/mmake; assert $state equals 0 + run zinit for ver'v1.4.0' @tj/mmake; assert $state equals 0 local mmake="$ZBIN/mmake"; assert "$mmake" is_executable $mmake --version; assert $state equals 0 } @@ -497,23 +489,24 @@ $kopia --version; assert $state equals 0 $moonwalk --version; assert $state equals 0 } @test 'navi' { # Declarative, asynchronous routing for React - run zinit for denisidoro/navi && assert $state equals 0 + run zinit for @denisidoro/navi && assert $state equals 0 local navi="$ZBIN/navi" && assert "$navi" is_executable $navi --version && assert $state equals 0 } -# @test 'neovim::appimage' { # Vim-fork focused on extensibility and usability -# run zinit bpick'*appimage*' id-as'neovim/appimage' for neovim/neovim -# assert $state equals 0; assert $output contains 'nvim.appimage' -# assert "$ZINIT[PLUGINS_DIR]/neovim---appimage/nvim.appimage" is_file -# } -# @test 'neovim::binary' { # Vim-fork focused on extensibility and usability -# [[ $OSTYPE =~ 'darwin*' ]] && skip 'Neovim realease binary broken for macOS as of May 3rd, 2022' -# run zinit lbin'!**/nvim' id-as'neovim/binary' for neovim/neovim; assert $state equals 0; assert $output does_not_contain 'appimage' -# local nvim="$ZBIN/nvim"; assert "$nvim" is_executable -# $nvim --version; assert $state equals 0 -# } +@test 'neovim::appimage' { # Vim-fork focused on extensibility and usability + skip 'null' + run zinit bpick'*appimage*' id-as'neovim/appimage' for neovim/neovim + assert $state equals 0; assert $output contains 'nvim.appimage' + assert "$ZINIT[PLUGINS_DIR]/neovim---appimage/nvim.appimage" is_file +} +@test 'neovim::binary' { # Vim-fork focused on extensibility and usability + skip 'null' + run zinit lbin'!**/nvim' id-as'neovim/binary' for neovim/neovim; assert $state equals 0; assert $output does_not_contain 'appimage' + local nvim="$ZBIN/nvim"; assert "$nvim" is_executable + $nvim --version; assert $state equals 0 +} @test 'onefetch' { # Git repository summary on your terminal - run zinit for o2sh/onefetch; assert $state equals 0 + run zinit for @o2sh/onefetch; assert $state equals 0 local onefetch="$ZBIN/onefetch"; assert "$onefetch" is_executable $onefetch --version; assert $state equals 0 } @@ -590,7 +583,7 @@ $kopia --version; assert $state equals 0 $sd --version; assert $state equals 0 } @test 'shellcheck' { # a static analysis tool for shell scripts - run zinit for koalaman/shellcheck; assert $state equals 0 + run zinit for @koalaman/shellcheck; assert $state equals 0 local shellcheck="$ZBIN/shellcheck"; assert "$shellcheck" is_executable $shellcheck --version; assert $state equals 0 } @@ -615,7 +608,7 @@ $kopia --version; assert $state equals 0 $tealdeer --version; assert $state equals 0 } @test 'tokei' { # Count your code, quickly. - run zinit for @XAMPPRocky/tokei; assert $state equals 0 + run zinit lbin'!*tokei -> tokei' ver'v12.1.1' for @XAMPPRocky/tokei; assert $state equals 0 local tokei="$ZBIN/tokei"; assert "$tokei" is_executable $tokei --version; assert $state equals 0 } @@ -630,7 +623,7 @@ $kopia --version; assert $state equals 0 $tre --version; assert $state equals 0 } @test 'tv' { # A cross-platform CLI csv pretty printer that uses column styling to maximize viewer enjoyment - run zinit for uzimaru0000/tv; assert $state equals 0 + run zinit for @uzimaru0000/tv; assert $state equals 0 local tv="$ZBIN/tv"; assert "$tv" is_executable $tv --version; assert $state equals 0 } @@ -640,8 +633,8 @@ $kopia --version; assert $state equals 0 run $up -h; assert $output contains "up is the Ultimate Plumber" } @test 'volta-cli' { # JS Toolchains as Code - ! [[ $OSTYPE =~ 'darwin*' ]] && skip 'Volta-cli test skipped on Linux' - run zinit for volta-cli/volta; assert $state equals 0 + [[ "$OSTYPE" =~ 'linux*' ]] && skip 'Volta CLI skipped on Linux' + run zinit for @volta-cli/volta; assert $state equals 0 local volta="$ZBIN/volta"; assert "$volta" is_executable run $volta --version; assert $state equals 0 } @@ -666,8 +659,8 @@ $kopia --version; assert $state equals 0 run $xh --version; assert $state equals 0 } @test 'yabai' { # A tiling window manager for macOS based on binary space partitioning - ! [[ $OSTYPE =~ 'darwin*' ]] && skip 'Yabai test skipped on Linux' - run zinit for koekeishiya/yabai; assert $state equals 0 + [[ $OSTYPE =~ 'linux*' ]] && skip 'Yabai skipped on Linux' + run zinit for @koekeishiya/yabai; assert $state equals 0 local yabai="$ZBIN/yabai"; assert "$yabai" is_executable $yabai --version; assert $state equals 0 } diff --git a/tests/ices.zunit b/tests/ices.zunit old mode 100644 new mode 100755 index 3589c579..af3ed8b4 --- a/tests/ices.zunit +++ b/tests/ices.zunit @@ -2,23 +2,14 @@ @setup { ZPLUGINS=$ZINIT[PLUGINS_DIR] - - function _zunit_assert_not_exists() { - local pathname=$1 filepath - - # If filepath is relative, prepend the test directory - if [[ "${pathname:0:1}" != "/" ]]; then - filepath="$testdir/${pathname}" - else - filepath="$pathname" + function _zunit_assert_not_exists(){ + local file_path=$1 + if [[ "${file_path:0:1}" != "/" ]]; then # relative path - prepend the test directory + filepath="${testdir}/${file_path}" fi - - [[ ! -e "$filepath" ]] && return 0 - - echo "'$pathname' does exist" - exit 1 + [[ ! -e "$file_path" ]] && return 0 + exit "found '${file_path}'" } - } @test 'mv' { @@ -28,7 +19,6 @@ assert "$ZPLUGINS/test---mv/mv.md" is_file assert "$ZPLUGINS/test---mv/readme.md" not_exists } - @test 'cp' { run zinit as"null" id-as"test/cp" cp"readme.md -> cp.md" for zdharma-continuum/null assert $state equals 0 @@ -36,7 +26,6 @@ assert "$ZPLUGINS/test---cp/cp.md" is_readable assert "$ZPLUGINS/test---cp/readme.md" is_file } - @test 'atclone' { run zinit as"null" id-as"test/atclone" atclone"mv readme.md atclone.md" for zdharma-continuum/null assert $state equals 0 @@ -44,24 +33,23 @@ assert "$ZPLUGINS/test---atclone/atclone.md" is_readable assert "$ZPLUGINS/test---atclone/readme.md" not_exists } - @test 'make' { run zinit as"null" id-as"test/make" atclone"printf 'all:\n\ttouch whatever\n' > Makefile" make"" for zdharma-continuum/null assert $state equals 0 assert "$ZPLUGINS/test---make/whatever" is_file } - @test 'completions' { run zinit as"null" id-as"test/completions" atclone"touch _whatever" completions for zdharma-continuum/null assert $state equals 0 assert "$ZPLUGINS/test---completions/_whatever" is_file assert "$ZINIT[COMPLETIONS_DIR]/_whatever" is_file } - -# If both are given, the completions wins @test 'completions-overwrite' { + # if both are given, the completions wins run zinit as"null" id-as"test/completions-overwrite" atclone"touch _whatever2" nocompletions completions for zdharma-continuum/null assert $state equals 0 assert "$ZPLUGINS/test---completions-overwrite/_whatever2" is_file assert "$ZINIT[COMPLETIONS_DIR]/_whatever2" is_file } + +# vim:ft=zsh:sw=2:sts=2:et:foldmarker=\ {,}:foldmethod=marker