diff --git a/tests/src/actionContainers/NodeJs6ActionContainerTests.scala b/tests/src/actionContainers/NodeJs6ActionContainerTests.scala
index 4910978..7b7992f 100644
--- a/tests/src/actionContainers/NodeJs6ActionContainerTests.scala
+++ b/tests/src/actionContainers/NodeJs6ActionContainerTests.scala
@@ -29,7 +29,7 @@
 
     override lazy val nodejsContainerImageName = "nodejs6action"
 
-    override def exec(code: String) = NodeJS6Exec(code)
+    override def exec(code: String) = NodeJS6Exec(code, None)
 
     behavior of nodejsContainerImageName
 
diff --git a/tests/src/actionContainers/NodeJsActionContainerTests.scala b/tests/src/actionContainers/NodeJsActionContainerTests.scala
index 00cbf25..5444b9f 100644
--- a/tests/src/actionContainers/NodeJsActionContainerTests.scala
+++ b/tests/src/actionContainers/NodeJsActionContainerTests.scala
@@ -39,7 +39,7 @@
 
     def withNodeJsContainer(code: ActionContainer => Unit) = withActionContainer()(code)
 
-    def exec(code: String): NodeJSAbstractExec = NodeJSExec(code)
+    def exec(code: String): NodeJSAbstractExec = NodeJSExec(code, None)
 
     override def initPayload(code: String, main: String = "main") = {
         val e = exec(code)
diff --git a/tests/src/system/basic/CLIPythonTests.scala b/tests/src/system/basic/CLIPythonTests.scala
index 891745b..b0417d6 100644
--- a/tests/src/system/basic/CLIPythonTests.scala
+++ b/tests/src/system/basic/CLIPythonTests.scala
@@ -54,6 +54,18 @@
             }
     }
 
+    it should "invoke an action with a non-default entry point" in withAssetCleaner(wskprops) {
+        (wp, assetHelper) =>
+            val name = "nonDefaultEntryPoint"
+            assetHelper.withCleaner(wsk.action, name) {
+                (action, _) => action.create(name, Some(TestUtils.getTestActionFilename("niam.py")), main = Some("niam"))
+            }
+
+            withActivation(wsk.activation, wsk.action.invoke(name, Map())) {
+                _.response.result.get.fields.get("greetings") should be(Some(JsString("Hello from a non-standard entrypoint.")))
+            }
+    }
+
     it should "invoke an action and confirm expected environment is defined" in withAssetCleaner(wskprops) {
         (wp, assetHelper) =>
             val name = "stdenv"
diff --git a/tests/src/system/basic/WskBasicNodeTests.scala b/tests/src/system/basic/WskBasicNodeTests.scala
index 4f50071..cb90ca9 100644
--- a/tests/src/system/basic/WskBasicNodeTests.scala
+++ b/tests/src/system/basic/WskBasicNodeTests.scala
@@ -30,6 +30,7 @@
 import spray.json.DefaultJsonProtocol.StringJsonFormat
 import spray.json.pimpAny
 import spray.json.pimpString
+import spray.json.JsString
 import common.TestUtils.RunResult
 import spray.json.JsObject
 
@@ -63,6 +64,24 @@
             }
     }
 
+    it should "Ensure that NodeJS actions can have a non-default entrypoint" in withAssetCleaner(wskprops) {
+        (wp, assetHelper) =>
+            val name = "niamNpmAction"
+            val file = Some(TestUtils.getTestActionFilename("niam.js"))
+
+            assetHelper.withCleaner(wsk.action, name) {
+                (action, _) =>
+                    action.create(name, file, main = Some("niam"))
+            }
+
+            withActivation(wsk.activation, wsk.action.invoke(name)) {
+                activation =>
+                    val response = activation.response
+                    response.result.get.fields.get("error") shouldBe empty
+                    response.result.get.fields.get("greetings") should be(Some(JsString("Hello from a non-standard entrypoint.")))
+            }
+    }
+
     it should "Ensure that zipped actions are encoded and uploaded as NodeJS actions" in withAssetCleaner(wskprops) {
         (wp, assetHelper) =>
             val name = "zippedNpmAction"
diff --git a/tests/src/system/basic/WskBasicSwiftTests.scala b/tests/src/system/basic/WskBasicSwiftTests.scala
index 82c2af1..4455861 100644
--- a/tests/src/system/basic/WskBasicSwiftTests.scala
+++ b/tests/src/system/basic/WskBasicSwiftTests.scala
@@ -28,6 +28,7 @@
 import spray.json.DefaultJsonProtocol.StringJsonFormat
 import spray.json.pimpAny
 import spray.json.pimpString
+import spray.json.JsString
 import common.TestUtils.RunResult
 import spray.json.JsObject
 
@@ -61,6 +62,24 @@
             }
     }
 
+    it should "Ensure that Swift actions can have a non-default entrypoint" in withAssetCleaner(wskprops) {
+        (wp, assetHelper) =>
+            val name = "niamSwiftAction"
+            val file = Some(TestUtils.getTestActionFilename("niam.swift"))
+
+            assetHelper.withCleaner(wsk.action, name) {
+                (action, _) =>
+                    action.create(name, file, main = Some("niam"))
+            }
+
+            withActivation(wsk.activation, wsk.action.invoke(name)) {
+                activation =>
+                    val response = activation.response
+                    response.result.get.fields.get("error") shouldBe empty
+                    response.result.get.fields.get("greetings") should be(Some(JsString("Hello from a non-standard entrypoint.")))
+            }
+    }
+
     def convertRunResultToJsObject(result: RunResult): JsObject = {
         val stdout = result.stdout
         val firstNewline = stdout.indexOf("\n")
