Beispiel #1
0
            public void Should_Execute_Process_With_Custom_Folder_Names()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.AfterMigrationFolderName              = "986b0e4a";
                fixture.Settings.AlterDatabaseFolderName               = "33a51d15";
                fixture.Settings.BeforeMigrationFolderName             = "829fb71e";
                fixture.Settings.FunctionsFolderName                   = "6469e1bc";
                fixture.Settings.IndexesFolderName                     = "87135f26";
                fixture.Settings.PermissionsFolderName                 = "48dace7b";
                fixture.Settings.RunAfterCreateDatabaseFolderName      = "cac8f0e7";
                fixture.Settings.RunAfterOtherAnyTimeScriptsFolderName = "d938b4d8";
                fixture.Settings.RunBeforeUpFolderName                 = "92dfa577";
                fixture.Settings.RunFirstAfterUpFolderName             = "e415f686";
                fixture.Settings.SprocsFolderName = "68117fd5";
                fixture.Settings.ViewsFolderName  = "eeb4dc87";
                fixture.Settings.UpFolderName     = "3b6998dd";

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("\"--amg=986b0e4a\" \"--ad=33a51d15\" \"--bmg=829fb71e\" \"--fu=6469e1bc\" " +
                             "\"--ix=87135f26\" \"--p=48dace7b\" \"--racd=cac8f0e7\" \"--ra=d938b4d8\" \"--rb=92dfa577\" \"--rf=e415f686\" " +
                             "\"--sp=68117fd5\" \"--vw=eeb4dc87\" \"--u=3b6998dd\"", result.Args);
            }
Beispiel #2
0
            public void Should_Execute_Process_With_Custom_Folder_Names()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings
                {
                    AfterMigrationFolderName              = "986b0e4a",
                    AlterDatabaseFolderName               = "33a51d15",
                    BeforeMigrationFolderName             = "829fb71e",
                    FunctionsFolderName                   = "6469e1bc",
                    IndexesFolderName                     = "87135f26",
                    PermissionsFolderName                 = "48dace7b",
                    RunAfterCreateDatabaseFolderName      = "cac8f0e7",
                    RunAfterOtherAnyTimeScriptsFolderName = "d938b4d8",
                    RunBeforeUpFolderName                 = "92dfa577",
                    RunFirstAfterUpFolderName             = "e415f686",
                    SprocsFolderName = "68117fd5",
                    ViewsFolderName  = "eeb4dc87",
                    UpFolderName     = "3b6998dd",
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(
                        p => p.Arguments.Render() == "\"--amg=986b0e4a\" \"--ad=33a51d15\" \"--bmg=829fb71e\" \"--fu=6469e1bc\" " +
                        "\"--ix=87135f26\" \"--p=48dace7b\" \"--racd=cac8f0e7\" \"--ra=d938b4d8\" \"--rb=92dfa577\" \"--rf=e415f686\" " +
                        "\"--sp=68117fd5\" \"--vw=eeb4dc87\" \"--u=3b6998dd\""));
            }
Beispiel #3
0
            public void Should_Execute_Process_With_Roundhouse_Settings()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings
                {
                    CreateDatabaseCustomScript = "cust-create.sql",
                    DatabaseType      = "roundhouse.databases.postgresql",
                    Environment       = "STAGING",
                    OutputPath        = "out_path",
                    RepositoryPath    = "[email protected]:chucknorris/roundhouse.git",
                    SqlFilesDirectory = "/db/scripts",
                    VersionFile       = "version.xml",
                    VersionXPath      = "/Build/Version",
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(
                        p => p.Arguments.Render() == "\"--cds=cust-create.sql\" \"--dt=roundhouse.databases.postgresql\" \"--env=STAGING\" " +
                        "\"--o=out_path\" \"[email protected]:chucknorris/roundhouse.git\" \"--f=/db/scripts\" \"--vf=version.xml\" \"--vx=/Build/Version\""));
            }
Beispiel #4
0
            public void Should_Execute_Process_With_Roundhouse_Settings()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.CreateDatabaseCustomScript = "cust-create.sql";
                fixture.Settings.DatabaseType      = "roundhouse.databases.postgresql";
                fixture.Settings.Environment       = "STAGING";
                fixture.Settings.OutputPath        = "out_path";
                fixture.Settings.RepositoryPath    = "[email protected]:chucknorris/roundhouse.git";
                fixture.Settings.SqlFilesDirectory = "/db/scripts";
                fixture.Settings.VersionFile       = "version.xml";
                fixture.Settings.VersionXPath      = "/Build/Version";

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("\"--cds=cust-create.sql\" " +
                             "\"--dt=roundhouse.databases.postgresql\" " +
                             "\"--env=STAGING\" \"--o=out_path\" " +
                             "\"[email protected]:chucknorris/roundhouse.git\" " +
                             "\"--f=/db/scripts\" \"--vf=version.xml\" " +
                             "\"--vx=/Build/Version\"", result.Args);
            }
Beispiel #5
0
            public void Should_Execute_Process_With_Database_Settings()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings
                {
                    CommandTimeout        = 12,
                    CommandTimeoutAdmin   = 23,
                    ConnectionString      = "server=foo;db=bar",
                    ConnectionStringAdmin = "server=fooAd;db=barAd",
                    DatabaseName          = "qux",
                    RecoveryMode          = RecoveryMode.Full,
                    RestoreFilePath       = "/backs/restore",
                    SchemaName            = "RH",
                    ServerName            = "Server Foo",
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(
                        p => p.Arguments.RenderSafe() == "\"--ct=12\" \"--cta=23\" \"[REDACTED]\" \"[REDACTED]\" " +
                        "\"--d=qux\" \"--rcm=Full\" \"--rfp=/backs/restore\" \"--sc=RH\" \"--s=Server Foo\""));
            }
Beispiel #6
0
            public void Should_Execute_Process_With_Flags()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.Drop    = true;
                fixture.Settings.DryRun  = true;
                fixture.Settings.Restore = true;
                fixture.Settings.Silent  = true;
                fixture.Settings.WarnOnOneTimeScriptChanges = true;
                fixture.Settings.WithTransaction            = true;
                fixture.Settings.Baseline             = true;
                fixture.Settings.RunAllAnyTimeScripts = true;
                fixture.Settings.SearchAllSubdirectoriesInsteadOfTraverse = true;
                fixture.Settings.DisableTokenReplacement = true;
                fixture.Settings.RunAllAnyTimeScripts    = true;
                fixture.Settings.Debug               = true;
                fixture.Settings.DisableOutput       = true;
                fixture.Settings.DoNotCreateDatabase = true;

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("--drop --dryrun --restore --silent --baseline --searchallinsteadoftraverse --disabletokens --runallanytimescripts --debug --disableoutput --donotcreatedatabase --w --t", result.Args);
            }
Beispiel #7
0
            public void Should_Find_Roundhouse_Executable_If_Tool_Path_Not_Provided()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("/Working/tools/rh.exe", result.Path.FullPath);
            }
Beispiel #8
0
            public void Should_Set_Working_Directory()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("/Working", result.Process.WorkingDirectory.FullPath);
            }
Beispiel #9
0
            public void Should_Throw_if_Roundhouse_Executable_Was_Not_Found()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture(defaultToolExist: false);
                var runner  = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(new RoundhouseSettings()));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Could not locate executable.", result.Message);
            }
Beispiel #10
0
            public void Should_Find_Roundhouse_Executable_If_Tool_Path_Not_Provided()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings());

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Is <FilePath>(p => p.FullPath == "/Working/tools/rh.exe"),
                    Arg.Any <ProcessSettings>());
            }
Beispiel #11
0
            public void Should_Throw_If_Process_Has_A_Non_Zero_Exit_Code()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.GivenProcessExitsWithCode(1);

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Process returned an error (exit code 1).", result.Message);
            }
Beispiel #12
0
            public void Should_Throw_If_Process_Was_Not_Started()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.GivenProcessCannotStart();

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Process was not started.", result.Message);
            }
Beispiel #13
0
            public void Should_Use_Roundhouse_Executable_From_Tool_Path_If_Provided_On_Windows(string toolPath, string expected)
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.ToolPath = toolPath;
                fixture.GivenSettingsToolPathExist();

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal(expected, result.Path.FullPath);
            }
Beispiel #14
0
            public void Should_Throw_if_Roundhouse_Executable_Was_Not_Found()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.GivenDefaultToolDoNotExist();

                // When
                var result = Record.Exception(() => fixture.Run());

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Could not locate executable.", result.Message);
            }
Beispiel #15
0
            public void Should_Throw_If_Process_Has_A_Non_Zero_Exit_Code()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Process.GetExitCode().Returns(1);
                var runner = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(new RoundhouseSettings()));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Process returned an error.", result.Message);
            }
Beispiel #16
0
            public void Should_Set_Working_Directory()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings());

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(
                        p => p.WorkingDirectory.FullPath == "/Working"));
            }
Beispiel #17
0
            public void Should_Throw_If_Process_Was_Not_Started()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.ProcessRunner.Start(Arg.Any <FilePath>(), Arg.Any <ProcessSettings>()).Returns((IProcess)null);
                var runner = fixture.CreateRunner();

                // When
                var result = Record.Exception(() => runner.Run(new RoundhouseSettings()));

                // Then
                Assert.IsType <CakeException>(result);
                Assert.Equal("Roundhouse: Process was not started.", result.Message);
            }
Beispiel #18
0
            public void Should_Use_Roundhouse_Executable_From_Tool_Path_If_Provided(string toolPath, string expected)
            {
                // Given
                var fixture = new RoundhouseRunnerFixture(expected);
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings
                {
                    ToolPath = toolPath,
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Is <FilePath>(p => p.FullPath == expected),
                    Arg.Any <ProcessSettings>());
            }
Beispiel #19
0
            public void Should_Execute_Process_With_Flags()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.Drop    = true;
                fixture.Settings.DryRun  = true;
                fixture.Settings.Restore = true;
                fixture.Settings.Silent  = true;
                fixture.Settings.WarnOnOneTimeScriptChanges = true;
                fixture.Settings.WithTransaction            = true;

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("--drop --dryrun --restore --silent --w --t", result.Args);
            }
Beispiel #20
0
            public void Should_Execute_Process_With_Flags()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();
                var runner  = fixture.CreateRunner();

                // When
                runner.Run(new RoundhouseSettings
                {
                    Drop    = true,
                    DryRun  = true,
                    Restore = true,
                    Silent  = true,
                    WarnOnOneTimeScriptChanges = true,
                    WithTransaction            = true,
                });

                // Then
                fixture.ProcessRunner.Received(1).Start(
                    Arg.Any <FilePath>(),
                    Arg.Is <ProcessSettings>(
                        p => p.Arguments.Render() == "--drop --dryrun --restore --silent --w --t"));
            }
Beispiel #21
0
            public void Should_Execute_Process_With_Database_Settings()
            {
                // Given
                var fixture = new RoundhouseRunnerFixture();

                fixture.Settings.CommandTimeout        = 12;
                fixture.Settings.CommandTimeoutAdmin   = 23;
                fixture.Settings.ConnectionString      = "server=foo;db=bar";
                fixture.Settings.ConnectionStringAdmin = "server=fooAd;db=barAd";
                fixture.Settings.DatabaseName          = "qux";
                fixture.Settings.RecoveryMode          = RecoveryMode.Full;
                fixture.Settings.RestoreFilePath       = "/backs/restore";
                fixture.Settings.SchemaName            = "RH";
                fixture.Settings.ServerName            = "Server Foo";

                // When
                var result = fixture.Run();

                // Then
                Assert.Equal("\"--ct=12\" \"--cta=23\" \"--cs=server=foo;db=bar\" " +
                             "\"--csa=server=fooAd;db=barAd\" \"--d=qux\" " +
                             "\"--rcm=Full\" \"--rfp=/backs/restore\" " +
                             "\"--sc=RH\" \"--s=Server Foo\"", result.Args);
            }