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