From 2003c2320e1af549dadf37a88d8254cba54644b2 Mon Sep 17 00:00:00 2001 From: Ryan Gang Date: Thu, 13 Jun 2024 13:50:20 +0530 Subject: [PATCH] feat: Add testTxExec function This commit adds the `testTxExec` function to the internal package. The function sets up a Redis executable, creates an instrumented RESP connection, and runs a test case for the `EXEC` command. --- internal/test_txn_exec.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 internal/test_txn_exec.go diff --git a/internal/test_txn_exec.go b/internal/test_txn_exec.go new file mode 100644 index 00000000..d7b0044e --- /dev/null +++ b/internal/test_txn_exec.go @@ -0,0 +1,34 @@ +package internal + +import ( + "github.com/codecrafters-io/redis-tester/internal/redis_executable" + "github.com/codecrafters-io/redis-tester/internal/resp_assertions" + + "github.com/codecrafters-io/redis-tester/internal/instrumented_resp_connection" + "github.com/codecrafters-io/redis-tester/internal/test_cases" + "github.com/codecrafters-io/tester-utils/test_case_harness" +) + +func testTxExec(stageHarness *test_case_harness.TestCaseHarness) error { + b := redis_executable.NewRedisExecutable(stageHarness) + if err := b.Run(); err != nil { + return err + } + + logger := stageHarness.Logger + + client, err := instrumented_resp_connection.NewFromAddr(stageHarness, "localhost:6379", "client") + if err != nil { + logFriendlyError(logger, err) + return err + } + defer client.Close() + + bareExecCommandTestCase := test_cases.SendCommandTestCase{ + Command: "EXEC", + Args: []string{}, + Assertion: resp_assertions.NewErrorAssertion("ERR EXEC without MULTI"), + } + + return bareExecCommandTestCase.Run(client, logger) +}