From af970769d740d311d0fcd802b1f1fa617ca7a3cc Mon Sep 17 00:00:00 2001
From: Casey Lee <cplee@nektos.com>
Date: Fri, 6 Mar 2020 11:30:39 -0800
Subject: [PATCH] fix #127 - force eval as a boolean (#131)

---
 pkg/runner/run_context.go               |  3 +++
 pkg/runner/testdata/commands/push.yml   |  7 +++++++
 pkg/runner/testdata/issue-104/main.yaml | 15 +++++++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 pkg/runner/testdata/issue-104/main.yaml

diff --git a/pkg/runner/run_context.go b/pkg/runner/run_context.go
index 21c0eba..a826fad 100644
--- a/pkg/runner/run_context.go
+++ b/pkg/runner/run_context.go
@@ -231,11 +231,14 @@ func (rc *RunContext) isEnabled(ctx context.Context) bool {
 // EvalBool evaluates an expression against current run context
 func (rc *RunContext) EvalBool(expr string) bool {
 	if expr != "" {
+		//v, err := rc.ExprEval.Evaluate(fmt.Sprintf("if (%s) { true } else { false }", expr))
+		expr := fmt.Sprintf("Boolean(%s)", expr)
 		v, err := rc.ExprEval.Evaluate(expr)
 		if err != nil {
 			log.Errorf("Error evaluating expression '%s' - %v", expr, err)
 			return false
 		}
+		log.Debugf("expression '%s' evaluated to '%s'", expr, v)
 		return v == "true"
 	}
 	return true
diff --git a/pkg/runner/testdata/commands/push.yml b/pkg/runner/testdata/commands/push.yml
index af30675..84d990f 100644
--- a/pkg/runner/testdata/commands/push.yml
+++ b/pkg/runner/testdata/commands/push.yml
@@ -11,11 +11,18 @@ jobs:
         run: echo $foo | grep bar
 
       - name: TEST set-output
+        id: set_output
         run: echo "::set-output name=zoo::zar"
 
       #- run: echo "::add-path::/zip"
       #- run: echo $PATH | grep /zip
 
+      - name: TEST conditional
+        if: steps.set_output.outputs.zoo
+        run: echo "::set-env name=cond_env::foo"
+      - name: TEST conditional (cont.)
+        run: echo $cond_env | grep foo
+
       - name: TEST debug, warning, error
         run: |
           echo "::debug file=app.js,line=100,col=20::Hello debug!"
diff --git a/pkg/runner/testdata/issue-104/main.yaml b/pkg/runner/testdata/issue-104/main.yaml
new file mode 100644
index 0000000..4ab3ef5
--- /dev/null
+++ b/pkg/runner/testdata/issue-104/main.yaml
@@ -0,0 +1,15 @@
+name: Test stuff
+
+on:
+  - push
+
+jobs:
+  build:
+    name: Testing Testing
+    runs-on: ubuntu-latest
+    steps:
+
+    - name: hello
+      uses: actions/hello-world-docker-action@master
+      with:
+        who-to-greet: "World"