You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by du...@apache.org on 2018/12/03 21:13:14 UTC
[incubator-openwhisk-cli] branch master updated: Save Code
Associated with Blackbox Actions (#388)
This is an automated email from the ASF dual-hosted git repository.
dubeejw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk-cli.git
The following commit(s) were added to refs/heads/master by this push:
new ca2e413 Save Code Associated with Blackbox Actions (#388)
ca2e413 is described below
commit ca2e41326164a544c3a4ebeb2145256d3b0c1610
Author: James Dubee <jw...@us.ibm.com>
AuthorDate: Mon Dec 3 16:13:10 2018 -0500
Save Code Associated with Blackbox Actions (#388)
* Save Code Associated with Blackbox Actions
* Scala formatting
* Update Fake Blackbox Name
* Update Test
* Update Test
---
commands/action.go | 2 +-
.../core/cli/test/WskCliBasicUsageTests.scala | 94 +++++++++++-----------
2 files changed, 50 insertions(+), 46 deletions(-)
diff --git a/commands/action.go b/commands/action.go
index e6429bc..d8dad83 100644
--- a/commands/action.go
+++ b/commands/action.go
@@ -692,7 +692,7 @@ func saveCode(action whisk.Action, filename string) (err error) {
exec = *action.Exec
runtime = strings.Split(exec.Kind, ":")[0]
- if strings.ToLower(runtime) == BLACKBOX {
+ if strings.ToLower(runtime) == BLACKBOX && exec.Code == nil && *exec.Binary == false {
return cannotSaveImageError()
} else if strings.ToLower(runtime) == SEQUENCE {
return cannotSaveSequenceError()
diff --git a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
index c7681eb..ab4b4f6 100644
--- a/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
+++ b/tests/src/test/scala/org/apache/openwhisk/core/cli/test/WskCliBasicUsageTests.scala
@@ -1078,61 +1078,65 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
}
it should "save action code to file" in withAssetCleaner(wskprops) { (wp, assetHelper) =>
- val name = "saveAction"
val seqName = "seqName"
val dockerName = "dockerName"
val containerName =
s"bogus${Random.alphanumeric.take(16).mkString.toLowerCase}"
- val saveName = s"save-as-$name.js"
- val badSaveName = s"bad-directory${File.separator}$saveName"
-
- // Test for successful --save
- assetHelper.withCleaner(wsk.action, name) { (action, _) =>
- action.create(name, defaultAction)
- }
-
- val saveMsg = wsk.action.get(name, save = Some(true)).stdout
-
- saveMsg should include(s"saved action code to ")
-
- val savePath = saveMsg.split("ok: saved action code to ")(1).trim()
- val saveFile = new File(savePath);
-
- try {
- saveFile.exists shouldBe true
+ val badSaveName = s"bad-directory${File.separator}action"
+
+ Seq(
+ ("saveAction", true, false, false),
+ ("saveAsAction", false, true, false),
+ ("dockerSaveAction", true, false, true),
+ ("dockerSaveAsAction", true, true, false)).foreach {
+ case (actionName, save, saveAs, blackbox) =>
+ assetHelper.withCleaner(wsk.action, actionName) { (action, _) =>
+ blackbox match {
+ case false => action.create(actionName, defaultAction, update = true)
+ case true => action.create(actionName, defaultAction, update = true, docker = Some("bogus"))
+ }
+ }
- // Test for failure saving file when it already exist
- wsk.action
- .get(name, save = Some(true), expectedExitCode = MISUSE_EXIT)
- .stderr should include(s"The file '$name.js' already exists")
- } finally {
- saveFile.delete()
- }
+ val saveMsg: String = if (save) {
+ wsk.action.get(actionName, save = Some(true)).stdout
+ } else {
+ wsk.action.get(actionName, saveAs = Some(s"save-as-$actionName")).stdout
+ }
- // Test for successful --save-as
- val saveAsMsg = wsk.action.get(name, saveAs = Some(saveName)).stdout
+ saveMsg should include(s"saved action code to ")
- saveAsMsg should include(s"saved action code to ")
+ val savePath = saveMsg.split("ok: saved action code to ")(1).trim()
+ val saveFile = new File(savePath)
- val saveAsPath = saveAsMsg.split("ok: saved action code to ")(1).trim()
- val saveAsFile = new File(saveAsPath);
+ try {
+ saveFile.exists shouldBe true
- try {
- saveAsFile.exists shouldBe true
+ // Test for failure saving file when it already exist
+ if (save) {
+ if (blackbox) {
+ wsk.action
+ .get(actionName, save = Some(true), expectedExitCode = MISUSE_EXIT)
+ .stderr should include(s"The file '$actionName' already exists")
+ } else {
+ wsk.action
+ .get(actionName, save = Some(true), expectedExitCode = MISUSE_EXIT)
+ .stderr should include(s"The file '$actionName.js' already exists")
+ }
+ } else {
+ wsk.action
+ .get(actionName, saveAs = Some(s"save-as-$actionName"), expectedExitCode = MISUSE_EXIT)
+ .stderr should include(s"The file 'save-as-$actionName' already exists")
+ }
+ } finally {
+ saveFile.delete()
+ }
- // Test for failure saving file when it already exist
- wsk.action
- .get(name, saveAs = Some(saveName), expectedExitCode = MISUSE_EXIT)
- .stderr should include(s"The file '$saveName' already exists")
- } finally {
- saveAsFile.delete()
+ // Test for failure when using an invalid filename
+ wsk.action
+ .get(actionName, saveAs = Some(badSaveName), expectedExitCode = MISUSE_EXIT)
+ .stderr should include(s"Cannot create file '$badSaveName'")
}
- // Test for failure when using an invalid filename
- wsk.action
- .get(name, saveAs = Some(badSaveName), expectedExitCode = MISUSE_EXIT)
- .stderr should include(s"Cannot create file '$badSaveName'")
-
// Test for failure saving Docker images
assetHelper.withCleaner(wsk.action, dockerName) { (action, _) =>
action.create(dockerName, None, docker = Some(containerName))
@@ -1146,9 +1150,9 @@ class WskCliBasicUsageTests extends TestHelpers with WskTestHelpers {
.get(dockerName, saveAs = Some(dockerName), expectedExitCode = MISUSE_EXIT)
.stderr should include("Cannot save Docker images")
- // Tes for failure saving sequences
+ // Test for failure saving sequences
assetHelper.withCleaner(wsk.action, seqName) { (action, _) =>
- action.create(seqName, Some(name), kind = Some("sequence"))
+ action.create(seqName, Some(dockerName), kind = Some("sequence"))
}
wsk.action