This is an automated email from the ASF dual-hosted git repository. msciabarra pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/openserverless-cli.git
commit cc7f2de5e34a4185342be5777c0615aa51553beb Author: Michele Sciabarra <[email protected]> AuthorDate: Tue Jul 30 22:37:50 2024 +0200 fixed prereq tests --- .gitmodules | 3 -- nuv.go | 2 +- prereq.go | 59 ++++++++++++++++++++++------------ tasktests/Taskfile.yml | 51 ----------------------------- tasktests/olaris | 1 - tests/prereq.bats | 54 ++++++++++++++++++------------- tests/prereq/olaris/prereq.yml | 35 ++++++++++---------- tests/prereq_yml.bats | 12 +++---- tests/test_helper/fail_then_succeed.sh | 11 +++++++ version.txt | 2 +- 10 files changed, 106 insertions(+), 124 deletions(-) diff --git a/.gitmodules b/.gitmodules index 80eeee5..4b389fc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -30,6 +30,3 @@ path = _patches/sh url = https://github.com/sciabarracom/sh branch = openserverless -[submodule "tasktests/olaris"] - path = tasktests/olaris - url = https://github.com/apache/openserverless-task diff --git a/nuv.go b/nuv.go index 47212f6..a774e79 100644 --- a/nuv.go +++ b/nuv.go @@ -191,7 +191,7 @@ func Nuv(base string, args []string) error { if err := os.Chdir(taskName); err != nil { return err } - err = ensurePrereq(pwd) + err = ensurePrereq(joinpath(pwd, taskName)) if err != nil { fmt.Println("ERROR: cannot ensure prerequisites" + err.Error()) os.Exit(1) diff --git a/prereq.go b/prereq.go index 2f24ff1..2918090 100644 --- a/prereq.go +++ b/prereq.go @@ -71,25 +71,49 @@ func loadPrereq(dir string) (Prereq, error) { return prereq, err } +func getOS() string { + res := os.Getenv("__OS") + if res == "" { + res = runtime.GOOS + } + return res +} + +func getARCH() string { + res := os.Getenv("__ARCH") + if res == "" { + res = runtime.GOARCH + } + return res +} + +func binDir() (string, error) { + var err error + bindir := os.Getenv("OPS_BIN") + if bindir == "" { + bindir, err = homedir.Expand(fmt.Sprintf("~/.nuv/%s-%s/bin", getOS(), getARCH())) + if err != nil { + return "", err + } + } + os.Setenv("OPS_BIN", bindir) + return bindir, nil +} + +func addExeExt(name string) string { + if getOS() == "windows" { + return name + ".exe" + } + return name +} + // ensure there is a bindir for downloading prerequisites // read it from OPS_BIN and create it // otherwise setup one in ~/nuv/<os>-<arch>/bin // and sets OPS_BIN func EnsureBindir() (string, error) { - os_ := os.Getenv("__OS") - if os_ == "" { - os_ = runtime.GOOS - } - arch := os.Getenv("__ARCH") - if arch == "" { - arch = runtime.GOARCH - } var err error = nil - bindir := os.Getenv("OPS_BIN") - if bindir == "" { - bindir, err = homedir.Expand(fmt.Sprintf("~/.nuv/%s-%s/bin", os_, arch)) - os.Setenv("OPS_BIN", bindir) - } + bindir, err := binDir() if err != nil { return "", err } @@ -173,14 +197,7 @@ func downloadPrereq(name string, task PrereqTask) error { // check if file and version exists // fixing the name for windows adding .exe - os_ := os.Getenv("OS") - if os_ == "" { - os_ = runtime.GOOS - } - if os_ == "windows" { - name = name + ".exe" - } - + name = addExeExt(name) if !exists(bindir, name) { return fmt.Errorf("failed to download %s %s", name, version) } diff --git a/tasktests/Taskfile.yml b/tasktests/Taskfile.yml deleted file mode 100644 index f395392..0000000 --- a/tasktests/Taskfile.yml +++ /dev/null @@ -1,51 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -version: "3" - -vars: - BRANCH: "0.1.0-testing" - BASEVER: "0.1.0-testing" - VERSION: - sh: git describe --tags --abbrev=0 2>/dev/null || git rev-parse --short HEAD - DEBUG: "" - -tasks: - - default: task -l - setup: { silent:true } - - bats: - dir: tests - cmds: - - git clone https://github.com/bats-core/bats-core bats - - git clone https://github.com/bats-core/bats-support test_helper/bats-support - - git clone https://github.com/bats-core/bats-assert test_helper/bats-assert - status: - - test -d bats - - test: - desc: integration tests for nuv (T=<test-name> without .bats, empty all) - dir: tests - cmds: - - task: bats - - | - if test -z "{{.T}}" - then bats/bin/bats . - else bats/bin/bats {{.T}}.bats - fi - diff --git a/tasktests/olaris b/tasktests/olaris deleted file mode 160000 index 8821aa3..0000000 --- a/tasktests/olaris +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8821aa3833801ceffa6e240a2ddf8c4523300d0c diff --git a/tests/prereq.bats b/tests/prereq.bats index b12dd5b..979789d 100644 --- a/tests/prereq.bats +++ b/tests/prereq.bats @@ -27,35 +27,45 @@ setup() { @test "ops prereq" { run ops assert_line --partial "ensuring prerequisite 7zz" - assert_line --partial "ensuring prerequisite coreutils" - assert_line --partial "ensuring prerequisite bun" - assert_line --partial "ensuring prerequisite kubectl" - assert_line --partial "ensuring prerequisite kind" - assert_line --partial "ensuring prerequisite k3sup" + #assert_line --partial "ensuring prerequisite coreutils" + #assert_line --partial "ensuring prerequisite bun" + #assert_line --partial "ensuring prerequisite kubectl" + #assert_line --partial "ensuring prerequisite kind" + #assert_line --partial "ensuring prerequisite k3sup" assert_line --partial "info" run ops refute_line "ensuring prerequisite 7zz" - refute_line "ensuring prerequisite coreutils" - refute_line "ensuring prerequisite bun" - refute_line "ensuring prerequisite kubectl" - refute_line "ensuring prerequisite kind" - refute_line "ensuring prerequisite k3sup" + #refute_line "ensuring prerequisite coreutils" + #refute_line "ensuring prerequisite bun" + #refute_line "ensuring prerequisite kubectl" + #refute_line "ensuring prerequisite kind" + #refute_line "ensuring prerequisite k3sup" assert_line --partial "info" } -@test "download others" { - skip "todo" - for o in linux darwin - do for a in arm64 amd64 - do - #o=linux a=amd64 - run env OS=$o ARCH=$a ops - assert_line --partial "ensuring prerequisite 7zz" - assert test -e ~/.nuv/$o-$a/bin/7zz - done - done - run env OS=windows ops +@test "windows" { + run env __OS=windows ops + assert_line --partial "ensuring prerequisite 7zz" assert test -e ~/.nuv/windows-*/bin/7zz.exe } +@test "linux" { + run env __OS=linux __ARCH=amd64 ops + assert_line --partial "ensuring prerequisite 7zz" + assert test -e ~/.nuv/linux-amd64/bin/7zz + + run env __OS=linux __ARCH=arm64 ops + assert_line --partial "ensuring prerequisite 7zz" + assert test -e ~/.nuv/linux-arm64/bin/7zz +} + +@test "darwin" { + run env __OS=darwin __ARCH=amd64 ops + assert_line --partial "ensuring prerequisite 7zz" + assert test -e ~/.nuv/darwin-amd64/bin/7zz + + run env __OS=darwin __ARCH=arm64 ops + assert_line --partial "ensuring prerequisite 7zz" + assert test -e ~/.nuv/darwin-arm64/bin/7zz +} diff --git a/tests/prereq/olaris/prereq.yml b/tests/prereq/olaris/prereq.yml index f56def5..533c8be 100644 --- a/tests/prereq/olaris/prereq.yml +++ b/tests/prereq/olaris/prereq.yml @@ -2,19 +2,18 @@ version: 3 vars: OS: "{{or .__OS OS}}" + BOH: "{{.__ARCH}}" ARCH: "{{or .__ARCH ARCH}}" ARC: '{{if eq .OS "windows"}}.zip{{else}}.tgz{{end}}' ARC2: '{{if eq .OS "windows"}}.zip{{else}}.tar.gz{{end}}' EXE: '{{if eq .OS "windows"}}.exe{{else}}{{end}}' tasks: - test: - vars: - FILE: file.tar.gz - cmds: - - echo "{{.FILE}}" - - echo '{{trimSuffix ".gz" .FILE }}' + info: + - echo "__ARCH={{.__ARCH}} BOH={{.BOH}}" + - echo "OS={{.OS}} ARCH={{.ARCH}} ARC={{.ARC}} EXE={{.EXE}}" + download-and-extract: requires: vars: @@ -74,7 +73,7 @@ tasks: coreutils: desc: coreutils vars: - VERSION: "0.0.27" + XVERSION: "0.0.27" SUFFIX: sh: | case "{{.OS}}-{{.ARCH}}" in @@ -98,9 +97,9 @@ tasks: bun: description: bun vars: - VERSION: "v1.1.21" + XVERSION: "1.1.21" ARCH2: '{{if eq .ARCH "amd64"}}x64{{else}}aarch64{{end}}' - URL: 'https://github.com/oven-sh/bun/releases/download/bun-{{.VERSION}}/bun-{{.OS}}-{{.ARCH2}}.zip' + URL: 'https://github.com/oven-sh/bun/releases/download/bun-v{{.VERSION}}/bun-{{.OS}}-{{.ARCH2}}.zip' FILE: '{{base .URL}}' cmds: - echo "{{.URL}}" @@ -110,7 +109,7 @@ tasks: kubectl: vars: - VERSION: v1.30.3 + XVERSION: v1.30.3 cmds: - task: download vars: @@ -119,16 +118,16 @@ tasks: kind: vars: - VERSION: v0.17.0 + XVERSION: 0.17.0 cmds: - task: download vars: - URL: "https://kind.sigs.k8s.io/dl/{{.VERSION}}/kind-{{.OS}}-{{.ARCH}}" + URL: "https://kind.sigs.k8s.io/dl/v{{.VERSION}}/kind-{{.OS}}-{{.ARCH}}" OUT: kind k3sup: vars: - VERSION: 0.13.6 + XVERSION: 0.13.6 BASE: "https://github.com/alexellis/k3sup/releases/download/{{.VERSION}}" FILE: sh: | @@ -147,9 +146,9 @@ tasks: all: - task: 7zz - - task: coreutils - - task: bun - - task: kind - - task: k3sup - # skipping this as it is slow to download + # skipping + #- task: coreutils + #- task: bun + #- task: kind + #- task: k3sup #- task: kubectl diff --git a/tests/prereq_yml.bats b/tests/prereq_yml.bats index bea3fdf..4a55cbc 100644 --- a/tests/prereq_yml.bats +++ b/tests/prereq_yml.bats @@ -21,13 +21,13 @@ setup() { export NO_COLOR=1 export NUV_BRANCH="0.1.0-testing" rm -Rvf _bin >/dev/null - export COUNT=5 + export COUNT=1 } @test "OS=linux ARCH=amd64" { OS=linux ARCH=amd64 mkdir -p _bin/$OS-$ARCH - run task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all + run env __OS=$OS __ARCH=$ARCH task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH all find _bin/$OS-$ARCH -type f | xargs file | grep ELF | grep x86-64 | wc -l | tee _count assert_equal "$(cat _count)" $COUNT } @@ -35,7 +35,7 @@ setup() { @test "OS=linux ARCH=arm64" { OS=linux ARCH=arm64 mkdir -p _bin/$OS-$ARCH - run task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all + run env __OS=$OS __ARCH=$ARCH task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH all find _bin/$OS-$ARCH | xargs file | grep ELF | grep ARM | wc -l | tee _count assert_equal "$(cat _count)" $COUNT } @@ -43,7 +43,7 @@ setup() { @test "OS=darwin ARCH=amd64" { OS=darwin ARCH=amd64 mkdir -p _bin/$OS-$ARCH - run task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all + run env __OS=$OS __ARCH=$ARCH task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH all find _bin/$OS-$ARCH | xargs file | grep Mach-O | grep x86_64 | wc -l | tee _count assert_equal "$(cat _count)" $COUNT } @@ -51,7 +51,7 @@ setup() { @test "OS=darwin ARCH=arm64" { OS=darwin ARCH=arm64 mkdir -p _bin/$OS-$ARCH - run task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all + run env __OS=$OS __ARCH=$ARCH task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH all find _bin/$OS-$ARCH | xargs file | grep Mach-O | grep arm64 | wc -l | tee _count assert_equal "$(cat _count)" $COUNT } @@ -59,7 +59,7 @@ setup() { @test "OS=windows ARCH=amd64" { OS=windows ARCH=amd64 mkdir -p _bin/$OS-$ARCH - run task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all + run env __OS=$OS __ARCH=$ARCH task -t prereq/olaris/prereq.yml -d _bin/$OS-$ARCH __OS=$OS __ARCH=$ARCH all find _bin/$OS-$ARCH | xargs file | grep PE32 | wc -l | tee _count assert_equal "$(cat _count)" $COUNT } diff --git a/tests/test_helper/fail_then_succeed.sh b/tests/test_helper/fail_then_succeed.sh new file mode 100755 index 0000000..f1de160 --- /dev/null +++ b/tests/test_helper/fail_then_succeed.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +file_path=".test_fail_then_succeed" + +if [ ! -f "$file_path" ]; then + touch "$file_path" + exit 1 +else + rm "$file_path" + exit 0 +fi \ No newline at end of file diff --git a/version.txt b/version.txt index 4e9b7c0..66bbabc 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.1.0-testing.2407301637 +0.1.0-testing.2407302124
