Add test for getenv/$_ENV equivalence.
diff --git a/core/php7.3Action/Dockerfile b/core/php7.3Action/Dockerfile
index a7663e5..d601299 100644
--- a/core/php7.3Action/Dockerfile
+++ b/core/php7.3Action/Dockerfile
@@ -15,14 +15,16 @@
# limitations under the License.
#
-FROM golang:1.11 as builder
-ENV PROXY_SOURCE=https://github.com/apache/openwhisk-runtime-go/archive/golang1.11@1.13.0-incubating.tar.gz
-RUN curl -L "$PROXY_SOURCE" | tar xzf - \
- && mkdir -p src/github.com/apache \
- && mv openwhisk-runtime-go-golang1.11-1.13.0-incubating \
- src/github.com/apache/incubator-openwhisk-runtime-go \
- && cd src/github.com/apache/incubator-openwhisk-runtime-go/main \
- && CGO_ENABLED=0 go build -o /bin/proxy
+FROM golang:1.12 as builder
+RUN env CGO_ENABLED=0 go get github.com/apache/openwhisk-runtime-go/main && mv /go/bin/main /bin/proxy
+#ENV PROXY_SOURCE=https://github.com/apache/openwhisk-runtime-go/archive/golang1.11@1.13.0-incubating.tar.gz
+#RUN curl -L "$PROXY_SOURCE" | tar xzf - \
+# && mkdir -p src/github.com/apache \
+# && mv openwhisk-runtime-go-golang1.11-1.13.0-incubating \
+# src/github.com/apache/incubator-openwhisk-runtime-go \
+# && cd src/github.com/apache/incubator-openwhisk-runtime-go/main \
+# && CGO_ENABLED=0 go build -o /bin/proxy
+
FROM php:7.3.6-cli-stretch
# install dependencies
diff --git a/tests/src/test/scala/runtime/actionContainers/Php7ActionContainerTests.scala b/tests/src/test/scala/runtime/actionContainers/Php7ActionContainerTests.scala
index 0af4983..f8446e5 100644
--- a/tests/src/test/scala/runtime/actionContainers/Php7ActionContainerTests.scala
+++ b/tests/src/test/scala/runtime/actionContainers/Php7ActionContainerTests.scala
@@ -24,6 +24,7 @@
import actionContainers.ActionContainer.withContainer
import actionContainers.ResourceHelpers.ZipBuilder
import spray.json._
+import spray.json.DefaultJsonProtocol._
@RunWith(classOf[JUnitRunner])
abstract class Php7ActionContainerTests extends BasicActionRunnerTests with WskActorSystem {
@@ -158,6 +159,62 @@
}
+ it should s"confirm getenv can read environment variables" in {
+ val config = {
+ TestConfig(
+ """
+ |<?php
+ |function main(array $args) : array {
+ | return [
+ | "api_host" => getenv('__OW_API_HOST'),
+ | "api_key" => getenv('__OW_API_KEY'),
+ | "namespace" => getenv('__OW_NAMESPACE'),
+ | "action_name" => getenv('__OW_ACTION_NAME'),
+ | "action_version" => getenv('__OW_ACTION_VERSION'),
+ | "activation_id" => getenv('__OW_ACTIVATION_ID'),
+ | "deadline" => getenv('__OW_DEADLINE'),
+ | ];
+ |}
+ """.stripMargin.trim,
+ enforceEmptyOutputStream = enforceEmptyOutputStream)
+ }
+
+ val props = Seq(
+ "api_host" -> "xyz",
+ "api_key" -> "abc",
+ "namespace" -> "zzz",
+ "action_name" -> "xxx",
+ "action_version" -> "0.0.1",
+ "activation_id" -> "iii",
+ "deadline" -> "123")
+
+ val env = props.map { case (k, v) => s"__OW_${k.toUpperCase()}" -> v }
+
+ // the api host is sent as a docker run environment parameter
+ val (out, err) = withActionContainer(env.take(1).toMap) { c =>
+ val (initCode, _) = c.init(initPayload(config.code, config.main))
+ initCode should be(200)
+
+ // we omit the api host from the run payload so the docker run env var is used
+ val (runCode, out) = c.run(runPayload(JsObject.empty, Some(props.drop(1).toMap.toJson.asJsObject)))
+ runCode should be(200)
+ out shouldBe defined
+ props.map {
+ case (k, v) =>
+ withClue(k) {
+ out.get.fields(k) shouldBe JsString(v)
+ }
+
+ }
+ }
+
+ checkStreams(out, err, {
+ case (o, e) =>
+ if (config.enforceEmptyOutputStream) o shouldBe empty
+ if (config.enforceEmptyErrorStream) e shouldBe empty
+ })
+ }
+
it should "support application errors" in {
withPhp7Container { c =>
val code = """