From 3455828f2b951d696ecf88327e462a2477822bfc Mon Sep 17 00:00:00 2001 From: James Cor Date: Tue, 12 Jul 2022 17:00:25 -0700 Subject: [PATCH] fixing test and throwing rror for multi db dir flag --- go/cmd/dolt/commands/sql.go | 8 ++++++-- go/cmd/dolt/commands/sqlserver/sqlserver.go | 12 +++++++++++- integration-tests/bats/sql.bats | 20 ++++++++++++-------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/go/cmd/dolt/commands/sql.go b/go/cmd/dolt/commands/sql.go index 0ba5b37c56..415e51e577 100644 --- a/go/cmd/dolt/commands/sql.go +++ b/go/cmd/dolt/commands/sql.go @@ -149,6 +149,7 @@ func (cmd SqlCmd) ArgParser() *argparser.ArgParser { ap.SupportsString(messageFlag, "m", "saved query description", "Used with --query and --save, saves the query with the descriptive message given. See also --name") ap.SupportsFlag(BatchFlag, "b", "Use to enable more efficient batch processing for large SQL import scripts consisting of only INSERT statements. Other statements types are not guaranteed to work in this mode.") ap.SupportsString(DataDirFlag, "", "directory", "Defines a directory whose subdirectories should all be dolt data repositories accessible as independent databases within. Defaults the the current directory.") + ap.SupportsString(MultiDBDirFlag, "", "directory", "Defines a directory whose subdirectories should all be dolt data repositories accessible as independent databases within. Defaults the the current directory.") ap.SupportsString(CfgDirFlag, "", "directory", "Defines a directory that contains configuration files for dolt. Defaults to $data-dir/.doltcfg.") ap.SupportsFlag(continueFlag, "c", "Continue running queries on an error. Used for batch mode only.") ap.SupportsString(fileInputFlag, "", "input file", "Execute statements from the file given") @@ -194,7 +195,6 @@ func (cmd SqlCmd) Exec(ctx context.Context, commandStr string, args []string, dE var dataDir string dataDirSpecified := false if multiDbDir, ok := apr.GetValue(MultiDBDirFlag); ok { - cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead") dataDir = multiDbDir dataDirSpecified = true } @@ -750,7 +750,7 @@ func validateSqlArgs(apr *argparser.ArgParseResults) error { } } - if save && dataDir || multiDbDir { + if save && (dataDir || multiDbDir) { return errhand.BuildDError("Invalid Argument: --data-dir queries cannot be saved").Build() } @@ -773,6 +773,10 @@ func validateSqlArgs(apr *argparser.ArgParseResults) error { } } + if multiDbDir { + cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead") + } + return nil } diff --git a/go/cmd/dolt/commands/sqlserver/sqlserver.go b/go/cmd/dolt/commands/sqlserver/sqlserver.go index 6842273b2e..637d06882d 100644 --- a/go/cmd/dolt/commands/sqlserver/sqlserver.go +++ b/go/cmd/dolt/commands/sqlserver/sqlserver.go @@ -173,6 +173,14 @@ func (cmd SqlServerCmd) Exec(ctx context.Context, commandStr string, args []stri return startServer(newCtx, cmd.VersionStr, commandStr, args, dEnv, controller) } +func validateSqlServerArgs(apr *argparser.ArgParseResults) error { + _, multiDbDir := apr.GetValue(commands.MultiDBDirFlag) + if multiDbDir { + cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead") + } + return nil +} + func startServer(ctx context.Context, versionStr, commandStr string, args []string, dEnv *env.DoltEnv, serverController *ServerController) int { ap := SqlServerCmd{}.ArgParser() help, _ := cli.HelpAndUsagePrinters(cli.CommandDocsForCommandString(commandStr, sqlServerDocs, ap)) @@ -181,6 +189,9 @@ func startServer(ctx context.Context, versionStr, commandStr string, args []stri dEnv.Config.SetFailsafes(env.DefaultFailsafeConfig) apr := cli.ParseArgsOrDie(ap, args, help) + if err := validateSqlServerArgs(apr); err != nil { + return 1 + } serverConfig, err := GetServerConfig(dEnv, apr) if err != nil { @@ -273,7 +284,6 @@ func getCommandLineServerConfig(dEnv *env.DoltEnv, apr *argparser.ArgParseResult dataDirSpecified := false if dataDir, ok := apr.GetValue(commands.MultiDBDirFlag); ok { dbNamesAndPaths, err := env.DBNamesAndPathsFromDir(dEnv.FS, dataDir) - cli.PrintErrln("WARNING: --multi-db-dir is deprecated, use --data-dir instead") if err != nil { return nil, errors.New("failed to read databases in path specified by --data-dir. error: " + err.Error()) diff --git a/integration-tests/bats/sql.bats b/integration-tests/bats/sql.bats index 557b643958..51220e2d41 100755 --- a/integration-tests/bats/sql.bats +++ b/integration-tests/bats/sql.bats @@ -207,9 +207,10 @@ teardown() { rm -rf inner_db } -@test "sql: dolt sql -q specify data directory dolt repo" { +@test "sql: dolt sql -q specify data directory outside of dolt repo" { # remove files rm -rf datadir + rm -rf .doltcfg rm -rf new_repo # initialize data directory and inner dbs @@ -231,30 +232,33 @@ teardown() { dolt init cd .. + # save data path + DATADIR=$(pwd) + cd .. # initialize new repo mkdir new_repo cd new_repo - run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "show databases" + run dolt sql --data-dir=$DATADIR -q "show databases" [ $status -eq 0 ] [[ $output =~ "db1" ]] || false [[ $output =~ "db2" ]] || false [[ $output =~ "db3" ]] || false - run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "create user new_user" + run dolt sql --data-dir=$DATADIR -q "create user new_user" [ $status -eq 0 ] - run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db1; select user from mysql.user" + run dolt sql --data-dir=$DATADIR -q "use db1; select user from mysql.user" [ $status -eq 0 ] [[ $output =~ "new_user" ]] || false - run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db2; select user from mysql.user" + run dolt sql --data-dir=$DATADIR -q "use db2; select user from mysql.user" [ $status -eq 0 ] [[ $output =~ "new_user" ]] || false - run dolt sql --data-dir=$BATS_TEST_DIRNAME/datadir -q "use db3; select user from mysql.user" + run dolt sql --data-dir=$DATADIR -q "use db3; select user from mysql.user" [ $status -eq 0 ] [[ $output =~ "new_user" ]] || false @@ -266,10 +270,10 @@ teardown() { [[ $output =~ "new_repo" ]] || false ! [[ $output =~ ".doltcfg" ]] || false - run ls datadir + run ls -a datadir [[ $output =~ ".doltcfg" ]] || false - run ls datadir/.doltcfg + run ls -a datadir/.doltcfg [[ $output =~ "privileges.db" ]] || false # remove files