You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@openwhisk.apache.org by GitBox <gi...@apache.org> on 2018/12/03 21:13:12 UTC
[GitHub] dubee closed pull request #388: Save Code Associated with Blackbox
Actions
dubee closed pull request #388: Save Code Associated with Blackbox Actions
URL: https://github.com/apache/incubator-openwhisk-cli/pull/388
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/commands/action.go b/commands/action.go
index e6429bce..d8dad83e 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 c7681eb9..ab4b4f6b 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
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services