Merge pull request #155 from dagger/stdlib-tests

stdlib: basic tests for alpine go and yarn
This commit is contained in:
Andrea Luzzardi 2021-03-04 11:55:49 -08:00 committed by GitHub
commit 2d45895097
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 145 additions and 1 deletions

View File

@ -0,0 +1,43 @@
package alpine
import (
"dagger.io/dagger"
"dagger.io/alpine"
)
TestImageVersion: {
image: alpine.#Image & {
// install an old version on purpose
version: "3.10.6"
}
test: #dagger: compute: [
dagger.#Load & {from: image},
dagger.#Exec & {
args: [
"sh",
"-ec",
"""
test "$(cat /etc/alpine-release)" = 3.10.6
""",
]
},
]
}
TestPackageInstall: {
image: alpine.#Image & {
package: jq: true
package: curl: "=~7.74.0"
}
test: #dagger: compute: [
dagger.#Load & {from: image},
dagger.#Exec & {
args: ["jq", "--version"]
},
dagger.#Exec & {
args: ["sh", "-ec", "curl --version | grep -q 7.74.0"]
},
]
}

33
tests/stdlib/go/go.cue Normal file
View File

@ -0,0 +1,33 @@
package go
import (
"dagger.io/dagger"
"dagger.io/go"
"dagger.io/alpine"
)
TestData: dagger.#Dir
TestGoBuild: {
build: go.#Build & {
source: TestData
output: "/bin/testbin"
}
test: #dagger: compute: [
dagger.#Load & {from: alpine.#Image},
dagger.#Exec & {
args: [
"sh",
"-ec",
"""
test "$(/bin/testbin)" = "hello world"
""",
]
mount: "/bin/testbin": {
from: build
path: "/bin/testbin"
}
},
]
}

3
tests/stdlib/go/testdata/go.mod vendored Normal file
View File

@ -0,0 +1,3 @@
module main
go 1.14

7
tests/stdlib/go/testdata/main.go vendored Normal file
View File

@ -0,0 +1,7 @@
package main
import "fmt"
func main() {
fmt.Println("hello world")
}

11
tests/stdlib/yarn/testdata/package.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"name": "test",
"main": "index.js",
"license": {
"type": "Apache-2.0",
"url": "https://opensource.org/licenses/apache2.0.php"
},
"scripts": {
"build": "mkdir -p ./build && echo output > ./build/test && touch .env && cp .env ./build/"
}
}

View File

@ -0,0 +1,35 @@
package yarn
import (
"dagger.io/dagger"
"dagger.io/yarn"
"dagger.io/alpine"
)
TestData: dagger.#Dir
TestYarn: {
run: yarn.#Script & {
source: TestData
}
test: #dagger: compute: [
dagger.#Load & {from: alpine.#Image & {
package: bash: "=5.1.0-r0"
}},
dagger.#Exec & {
mount: "/build": from: run
args: [
"/bin/bash",
"--noprofile",
"--norc",
"-eo",
"pipefail",
"-c",
"""
test "$(cat /build/test)" = "output"
""",
]
},
]
}

View File

@ -20,6 +20,17 @@ test::examples() {
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute --input-dir www.source="$d"/../examples/simple "$d"/../examples/simple
}
test::stdlib() {
local dagger="$1"
test::one "stdlib: alpine" \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/stdlib/alpine
disable test::one "stdlib: yarn (FIXME: performance)" \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/stdlib/yarn --input-dir TestData="$d"/stdlib/yarn/testdata
disable test::one "stdlib: go (FIXME: performance)" \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/stdlib/go --input-dir TestData="$d"/stdlib/go/testdata
}
test::compute(){
local dagger="$1"
@ -32,7 +43,7 @@ test::compute(){
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/invalid/int
test::one "Compute: invalid struct should fail" --exit=1 --stdout= \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/invalid/struct
disable test::one "Compute: overloading #ComponentScript with new prop should fail (FIXME: unauthorized fields are not checked)" --exit=1 \
disable test::one "Compute: overloading #ComponentScript with new prop should fail (FIXME: unauthorized fields are not checked)" --exit=1 \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/invalid/overload/new_prop
test::one "Compute: overloading #ComponentScript with new def should succeed" --exit=0 \
"$dagger" "${DAGGER_BINARY_ARGS[@]}" compute "$d"/compute/invalid/overload/new_def
@ -251,6 +262,7 @@ test::all(){
test::subdir "$dagger"
test::dockerbuild "$dagger"
test::stdlib "$dagger"
test::examples "$dagger"
}