You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openserverless.apache.org by ms...@apache.org on 2024/07/30 20:38:08 UTC
(openserverless-cli) 02/02: fixed prereq tests
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 <mi...@sciabarra.com>
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