Skip to content

Commit 4ebf869

Browse files
restore-shell-readlines-semicolon (#645)
Summary: - Restore semicolons to appropriate places in `readlines` buffer from `stackql shell` sessions. - Fix multiline query handling. - `--approot` passing in test fix, in support of `readlines` buffer checking. `readlines` check skipped for `docker` tests. - Added robot test `Shell Session Multi Line Then Multi Statement`. - Tested correct semicolon placement in enhanced robot test `Shell Session Multiple Statements Inline`. - Skip `readline` verification in docker for now.
1 parent 86dc23a commit 4ebf869

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

internal/stackql/cmd/shell.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,10 @@ var shellCmd = &cobra.Command{
233233
if i == len(splitQueries)-1 && !hasRHSSemiColon {
234234
// Last piece has no trailing semicolon;
235235
// accumulate for multi-line continuation.
236-
sb.Reset()
237-
sb.WriteString(s)
236+
sb.WriteString(" " + s)
238237
continue
239238
}
240-
sb.WriteString(" " + s)
239+
sb.WriteString(" " + s + ";")
241240
rawQuery := sb.String()
242241
queryToExecute, qErr := entryutil.PreprocessInline(runtimeCtx, rawQuery)
243242
if qErr != nil {

test/python/stackql_test_tooling/StackQLInterfaces.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ def _run_stackql_shell_command_native(
550550
if approot:
551551
supplied_args.append(f'--approot={approot}')
552552
else:
553-
supplied_args.append(f'--approot="{_TEST_APP_CACHE_ROOT}"')
553+
supplied_args.append(f'--approot={_TEST_APP_CACHE_ROOT}')
554554
supplied_args.append(f"--execution.concurrency.limit={self._concurrency_limit}")
555555
supplied_args = supplied_args + list(args)
556556
stdout = cfg.get('stdout', subprocess.PIPE)

test/python/stackql_test_tooling/stackql_context.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,8 @@ def get_registry_mock_url(execution_env :str) -> str:
10991099
'SHELL_SESSION_SIMPLE_EXPECTED': get_shell_welcome_stdout(execution_env) + SELECT_GITHUB_BRANCHES_NAMES_DESC_EXPECTED,
11001100
'SHELL_SESSION_MULTI_STMT_INLINE_COMMANDS': [ "SELECT * FROM stackql_repositories; " + SELECT_GITHUB_BRANCHES_NAMES_DESC ],
11011101
'SHELL_SESSION_MULTI_LINE_THEN_MULTI_STMT_COMMANDS': [ "select name", "from github.repos.branches where owner = 'dummyorg' and repo = 'dummyapp.io' order by name desc;", "SELECT * FROM stackql_repositories; " + SELECT_GITHUB_BRANCHES_NAMES_DESC ],
1102+
'SHELL_SESSION_MULTI_LINE_SEMICOLON_TERMINATED_COMMANDS': [ "select name", "from github.repos.branches", "where owner = 'dummyorg' and repo = 'dummyapp.io'", "order by name desc", ";" ],
1103+
'SHELL_SESSION_MULTI_LINE_SEMICOLON_TERMINATED_EXPECTED': get_shell_welcome_stdout(execution_env) + SELECT_GITHUB_BRANCHES_NAMES_DESC_EXPECTED,
11021104
'SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR': SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR,
11031105
'SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR': SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR,
11041106
'SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR_EXPECTED': SHOW_INSERT_GOOGLE_COMPUTE_INSTANCE_IAM_POLICY_ERROR_EXPECTED,

test/robot/functional/stackql_sessions.robot

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ Shell Session Multiple Statements Inline
4545
... ${SHELL_SESSION_MULTI_STMT_INLINE_COMMANDS}
4646
... dummyapp.io
4747
... stdout=${CURDIR}/tmp/Shell-Session-Multiple-Statements-Inline.tmp
48+
# Verify readline history preserves trailing semicolons
49+
Pass Execution If "${EXECUTION_PLATFORM}" == "docker" Skipping readline verification in docker
50+
${readline_content} = Get File ${REPOSITORY_ROOT}${/}test${/}.stackql${/}readline${/}readline.tmp
51+
Should Contain ${readline_content} stackql_repositories;
52+
Should Contain ${readline_content} order by name desc;
4853
[Teardown] Stackql Per Test Teardown
4954

5055
Shell Session Multi Line Then Multi Statement
@@ -62,6 +67,21 @@ Shell Session Multi Line Then Multi Statement
6267
... stdout=${CURDIR}/tmp/Shell-Session-Multi-Line-Then-Multi-Statement.tmp
6368
[Teardown] Stackql Per Test Teardown
6469

70+
Shell Session Multi Line Semicolon Terminated
71+
Pass Execution If "${IS_WINDOWS}" == "1" Skipping session test in windows
72+
Should StackQL Shell Inline Equal
73+
... ${STACKQL_EXE}
74+
... ${OKTA_SECRET_STR}
75+
... ${GITHUB_SECRET_STR}
76+
... ${K8S_SECRET_STR}
77+
... ${REGISTRY_NO_VERIFY_CFG_STR}
78+
... ${AUTH_CFG_STR}
79+
... ${SQL_BACKEND_CFG_STR_CANONICAL}
80+
... ${SHELL_SESSION_MULTI_LINE_SEMICOLON_TERMINATED_COMMANDS}
81+
... ${SHELL_SESSION_MULTI_LINE_SEMICOLON_TERMINATED_EXPECTED}
82+
... stdout=${CURDIR}/tmp/Shell-Session-Multi-Line-Semicolon-Terminated.tmp
83+
[Teardown] Stackql Per Test Teardown
84+
6585
PG Session GC Manual Behaviour Canonical
6686
Should PG Client Session Inline Equal Strict
6787
... ${PSQL_MTLS_CONN_STR_UNIX}

0 commit comments

Comments
 (0)