{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":670712343,"defaultBranch":"main","name":"gdt","ownerLogin":"gdt-dev","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-07-25T16:56:09.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/140431742?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717247813.0","currentOid":""},"activityList":{"items":[{"before":"be1a02628c323c6b1358ed88e2230dae687a5100","after":"d9a4f149f600d424f45d4be78385ae188b19ec3a","ref":"refs/heads/main","pushedAt":"2024-06-01T13:15:05.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #22 from gdt-dev/uplift\n\nuplift Go and Github action runners","shortMessageHtmlLink":"Merge pull request #22 from gdt-dev/uplift"}},{"before":"643da51adaf692b3d1c789a151f4fe9efc6d7d1a","after":"6ce5715456776834fdb151cb5b9f0a74dc1ba9d4","ref":"refs/heads/uplift","pushedAt":"2024-06-01T13:12:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"uplift Go and Github action runners\n\nUplifts Go to 1.21 and hardens our Github action runners.\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"uplift Go and Github action runners"}},{"before":null,"after":"643da51adaf692b3d1c789a151f4fe9efc6d7d1a","ref":"refs/heads/uplift","pushedAt":"2024-06-01T13:09:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"uplift Go and Github action runners\n\nUplifts Go to 1.21 and hardens our Github action runners.\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"uplift Go and Github action runners"}},{"before":"de1ef61291e7d15e498fd7f0442e25cd70ecdb1f","after":"be1a02628c323c6b1358ed88e2230dae687a5100","ref":"refs/heads/main","pushedAt":"2024-06-01T12:01:35.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #21 from jaypipes/trace\n\nrework debug/print into a tracing context","shortMessageHtmlLink":"Merge pull request #21 from jaypipes/trace"}},{"before":"50d0e7f8cc2f6944a819d7fabfdfe98b80d11bb6","after":"de1ef61291e7d15e498fd7f0442e25cd70ecdb1f","ref":"refs/heads/main","pushedAt":"2024-05-27T12:46:30.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #20 from jaypipes/assertion-ctx\n\nadd context.Context arg to assertions.OK()","shortMessageHtmlLink":"Merge pull request #20 from jaypipes/assertion-ctx"}},{"before":"1a7e229d7c51c552e906b69ed965b8286ec577f1","after":"50d0e7f8cc2f6944a819d7fabfdfe98b80d11bb6","ref":"refs/heads/main","pushedAt":"2024-05-27T12:40:42.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #19 from jaypipes/fix-debug-handler\n\nexec: fix debug handler","shortMessageHtmlLink":"Merge pull request #19 from jaypipes/fix-debug-handler"}},{"before":"c1d9624086779f6a60cb86c876c9a393f07e9aab","after":"1a7e229d7c51c552e906b69ed965b8286ec577f1","ref":"refs/heads/main","pushedAt":"2023-08-15T15:15:46.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #16 from gdt-dev/exec-not-contains\n\n`assert.out.none` and `assert.err.none` to exec","shortMessageHtmlLink":"Merge pull request #16 from gdt-dev/exec-not-contains"}},{"before":"13609156ad17c8d708ea44aefc7c3d9704b9e810","after":"c1d9624086779f6a60cb86c876c9a393f07e9aab","ref":"refs/heads/main","pushedAt":"2023-08-15T15:05:45.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #17 from gdt-dev/remove-assertion-terminal\n\nremove unused Assertions.Terminal() interface","shortMessageHtmlLink":"Merge pull request #17 from gdt-dev/remove-assertion-terminal"}},{"before":null,"after":"c1bed53f824da3113b8f24bf58a4eed2bcdf8733","ref":"refs/heads/remove-assertion-terminal","pushedAt":"2023-08-15T15:01:38.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"remove unused Assertions.Terminal() interface\n\nNow that the `Scenario.Run()` and `Evaluable.Eval()` split has happened,\nthe need for checking a terminal condition in the assertions is gone, so\nremoving this now-unneeded interface method.\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"remove unused Assertions.Terminal() interface"}},{"before":null,"after":"645236c1577d6639bd6d94bd84eb7812443a3861","ref":"refs/heads/exec-not-contains","pushedAt":"2023-08-15T14:03:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"`assert.out.none` and `assert.err.none` to exec\n\nMakes the assertion fields of the exec plugin's `assert` struct more\nflexible and adds a new `assert.out.none` and `assert.err.none` field\nthat contains a string or strings that should *not* appear in either\nstdout or stderr pipes from the exec command.\n\nThe `plugin/exec.PipeExpect` struct now contains three fields, each of\nwhich are `types.FlexStrings` that can contain either a string or a list\nof strings. There is now a custom YAML unmarshaler for `PipeExpect`\nwhich allows a flexible naming convention to be used for specifying\nassertions:\n\nAll of these examples are valid and represent human-readable assertions:\n\n```yaml\ntests:\n # Variants of contains\n - exec: ls -l\n assert:\n out:\n contains:\n - parse.go\n - exec: ls -l\n assert:\n out:\n is: parse.go\n - exec: ls -l\n assert:\n out:\n is:\n - parse.go\n - exec: ls -l\n assert:\n out:\n contains: parse.go\n - exec: ls -l\n assert:\n out:\n contains-all:\n - parse.go\n - exec: ls -l\n assert:\n out:\n all: parse.go\n # Variants of contains-any\n - exec: ls -l\n assert:\n out:\n any:\n - thisdoesnotexist\n - neitherdoesthisexist\n - parse.go\n - exec: ls -l\n assert:\n out:\n contains_one_of:\n - thisdoesnotexist\n - neitherdoesthisexist\n - parse.go\n - exec: ls -l\n assert:\n out:\n contains-any:\n - parse.go\n - exec: ls -l\n assert:\n out:\n any: parse.go\n # Variants of contains-none-of\n - exec: ls -l\n assert:\n out:\n none:\n - notexisting.go\n - exec: ls -l\n assert:\n out:\n none-of: notexisting.go\n - exec: ls -l\n assert:\n out:\n contains_none_of:\n - notexisting.go\n - exec: ls -l\n assert:\n out:\n none-of: notexisting.go\n```\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"assert.out.none and assert.err.none to exec"}},{"before":"c7111eda9ba3bf26edd8ad29678890bb0176c3e1","after":"13609156ad17c8d708ea44aefc7c3d9704b9e810","ref":"refs/heads/main","pushedAt":"2023-08-14T19:45:39.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #15 from gdt-dev/parse-errors\n\nAdd ExpectedScalarOrMap error","shortMessageHtmlLink":"Merge pull request #15 from gdt-dev/parse-errors"}},{"before":"4299e1113ed2d909e079c3eeb0fbf4798fb91b22","after":"6d2de15f0d8f69d0cd01c322a3ee7e7860dd4276","ref":"refs/heads/parse-errors","pushedAt":"2023-08-14T19:42:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Add ExpectedScalarOrMap error","shortMessageHtmlLink":"Add ExpectedScalarOrMap error"}},{"before":"13c1ecde7cefd7da52411fbea79b782a474860bb","after":"c7111eda9ba3bf26edd8ad29678890bb0176c3e1","ref":"refs/heads/main","pushedAt":"2023-08-12T06:25:39.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #14 from gdt-dev/parse-errors","shortMessageHtmlLink":"Merge pull request #14 from gdt-dev/parse-errors"}},{"before":null,"after":"4299e1113ed2d909e079c3eeb0fbf4798fb91b22","ref":"refs/heads/parse-errors","pushedAt":"2023-08-11T17:46:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"ensure all parse-time errors show line/col in YAML\n\nTo give users the most useful information about a syntax or parse-time\nerror in their gdt tests, make sure that all parse-time error functions\naccept a `*yaml.Node` parameter that we can grab line/column\ninformation.`\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"ensure all parse-time errors show line/col in YAML"}},{"before":"789fc849212031f6476d8bbe9534f3af2d29b939","after":"13c1ecde7cefd7da52411fbea79b782a474860bb","ref":"refs/heads/main","pushedAt":"2023-08-09T07:35:56.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #13 from gdt-dev/on-fail\n\nsupport on.fail.exec actions","shortMessageHtmlLink":"Merge pull request #13 from gdt-dev/on-fail"}},{"before":null,"after":"d2552cfa5a1adb0d829a365d854081ef53a74ede","ref":"refs/heads/on-fail","pushedAt":"2023-08-08T23:07:40.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"support `on.fail.exec` actions\n\nUsers would like to be able to execute commands, collect log\ninformation, grep for errors in output and other actions when a test\nassertion fails.\n\nFor instance, if an application is deployed using Kubernetes and network\nconnectivity doesn't work for the application, the test author might\nwant to call kubectl logs in the event of a test failure.\n\nAnother example might be if you wanted to grep a log file in the event\nthat no connectivity on a particular IP:PORT combination could be made\nyou might do this:\n\n```yaml\ntests:\n - exec: nc -z $HOST $PORT\n on:\n fail:\n exec: grep ERROR /var/log/myapp.log\n```\n\nThe grep ERROR /var/log/myapp.log command will only be executed if there\nis no connectivity to $HOST:$PORT and the results of that grep will be\ndirected to the test's output. You can use the gdt.WithDebug() function\nto configure additional io.Writers to direct this output to.\n\nThis patch adds support for the exec plugin's `on.fail` field, hopefully\nin a way that is extensible for other plugins to use as an example (and\npossible embed the `plugin/exec.Action` struct).\n\nAddresses Issue #12\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"support on.fail.exec actions"}},{"before":"0d8a00e22595f63301a79379e9820f9b45c60313","after":"789fc849212031f6476d8bbe9534f3af2d29b939","ref":"refs/heads/main","pushedAt":"2023-08-08T18:19:19.000Z","pushType":"pr_merge","commitsCount":3,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #11 from gdt-dev/json\n\nuse `path-formats` for JSON Expect","shortMessageHtmlLink":"Merge pull request #11 from gdt-dev/json"}},{"before":"4e1ccd2bcfb279b1a3833528577b9fafbfb3e36f","after":"b0f1c1d4567dc322ebf683b928204755365bf494","ref":"refs/heads/json","pushedAt":"2023-08-08T18:16:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"add proxy.golang.org to egress allowlist","shortMessageHtmlLink":"add proxy.golang.org to egress allowlist"}},{"before":null,"after":"4e1ccd2bcfb279b1a3833528577b9fafbfb3e36f","ref":"refs/heads/json","pushedAt":"2023-08-08T18:14:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"use `path-formats` for JSON Expect\n\nAligns with the `snake-case` YAML field names for `path-formats` instead\nof `path_formats` but keeps the ability to use `path_formats` for\nbackwards-compat.\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"use path-formats for JSON Expect"}},{"before":"e14a1af3eececf3bbb98c4f16db160b9886f6917","after":"0d8a00e22595f63301a79379e9820f9b45c60313","ref":"refs/heads/main","pushedAt":"2023-08-08T14:28:33.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #10 from gdt-dev/issue-8\n\ncall t.Error() from sub-tests not Scenario.Run()","shortMessageHtmlLink":"Merge pull request #10 from gdt-dev/issue-8"}},{"before":null,"after":"eea5de6213c6d0c362dd651a8a2904d896554e46","ref":"refs/heads/issue-8","pushedAt":"2023-08-08T14:13:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"call t.Error() from sub-tests not Scenario.Run()\n\nThis patch addresses a couple related problems, all with the evaluation\nof testing.T failures. When `testing.T.Run()` is executed, a new\ngoroutine is spawned with a new `testing.T` pointer. This specific\ngoroutine's `testing.T` pointer needs to have *its* `testing.T.Error()`\nmethod called in order for that sub-test to be marked failed. We were\nerroneously calling `testing.T.Error()` within the `Scenario.Run()`\nmethod instead of inside the `Spec.Eval()` method, which resulted in the\ntest scenario being marked failed instead of the individual test unit.\n\nWe address the exec plugin's `Spec.Eval()` in this patch to call\n`testing.T.Error()` on any assertion failure however additional patches\nare coming for the http and kube plugins.\n\nFinally, I made a change to the `gdterrors.TimeoutExceeded()` function\nto allow for an assertion failure message to be supplied to the error\nproducer, making it easier for folks to see \"this test assertion failed\nto succeed before a timeout of (duration)\".\n\nAddresses Issue #8\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"call t.Error() from sub-tests not Scenario.Run()"}},{"before":"d75461c2647809a383b16ee0ef55facec67c26d5","after":"e14a1af3eececf3bbb98c4f16db160b9886f6917","ref":"refs/heads/main","pushedAt":"2023-08-07T15:22:19.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #9 from gdt-dev/issue-7\n\ndon't add non-Scenario files to Suite","shortMessageHtmlLink":"Merge pull request #9 from gdt-dev/issue-7"}},{"before":null,"after":"f53e58eaa628947e4c3614e590b7ddde82e34658","ref":"refs/heads/issue-7","pushedAt":"2023-08-07T15:15:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"don't add non-Scenario files to Suite\n\nWhen processing a Suite, if the suite directory contains valid YAML\nfiles that are not `gdt` Scenarios (for example, valid Kubernetes CRDs),\ndon't add those to the Suite.Tests collection. Same for valid `gdt`\nScenarios that don't have any tests in them.\n\nCloses Issue #7\n\nSigned-off-by: Jay Pipes ","shortMessageHtmlLink":"don't add non-Scenario files to Suite"}},{"before":"eb4e7883f95fea251d1974bca83eb9db0a8dae06","after":null,"ref":"refs/heads/remove-suite-context","pushedAt":"2023-07-30T13:09:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"}},{"before":"0cd90207e950bf95c9afb28aaaa3da9ca2b55b65","after":null,"ref":"refs/heads/rename-require-to-fixtures","pushedAt":"2023-07-30T13:09:29.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"}},{"before":"d3fb7b51a92f632da8a75cb0b76265ee9ae63c21","after":null,"ref":"refs/heads/eval","pushedAt":"2023-07-30T13:09:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"}},{"before":"2f248d2d8d14c88c2e4c5e3ea19e3c61b3f57083","after":null,"ref":"refs/heads/skip-if","pushedAt":"2023-07-30T13:09:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"}},{"before":"368d3cde6cc233169f8bfe490f80c81d0d675eba","after":null,"ref":"refs/heads/nest-exec-asserts","pushedAt":"2023-07-30T13:09:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"}},{"before":"824a3c37fdc681b8268b9eeab6a516eb46a7bb75","after":"d75461c2647809a383b16ee0ef55facec67c26d5","ref":"refs/heads/main","pushedAt":"2023-07-28T21:28:20.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"jaypipes","name":"Jay Pipes","path":"/jaypipes","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/265023?s=80&v=4"},"commit":{"message":"Merge pull request #4 from a-hilaly/runnable-remove\n\nRemove `Runnable` interface.","shortMessageHtmlLink":"Merge pull request #4 from a-hilaly/runnable-remove"}},{"before":"dbab87cfadb94c07bc36d963e6d06b589d7a67ac","after":"824a3c37fdc681b8268b9eeab6a516eb46a7bb75","ref":"refs/heads/main","pushedAt":"2023-07-28T20:53:20.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"a-hilaly","name":"Amine","path":"/a-hilaly","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/10897901?s=80&v=4"},"commit":{"message":"Merge pull request #6 from gdt-dev/nest-exec-asserts\n\nnest `exec` plugin assertions under `assert` field","shortMessageHtmlLink":"Merge pull request #6 from gdt-dev/nest-exec-asserts"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWbw8xQA","startCursor":null,"endCursor":null}},"title":"Activity ยท gdt-dev/gdt"}