public async Task Should_allow_catchup_of_targets()
        {
            using var l = LoggerFactory.Create(builder => builder.AddConsole().SetMinimumLevel(LogLevel.Trace));
            var x = XDocument.Load(File.OpenRead("local_test.xml"));
            var d = SqlDeployment.Load(x);
            var a = GetArgs();
            var r = new Random();
            var n = r.Next(0, int.MaxValue);

            a["SQL_InstanceName"] = "(localdb)\\SQL_" + n.ToString("X8");
            a["EFM_InstanceName"] = "(localdb)\\EFM_" + n.ToString("X8");
            var p = d.Compile(a);

            var e = new SqlDeploymentExecutor(p, l.CreateLogger <SqlDeploymentExecutor>());
            await e.ExecuteAsync("SQL");

            await e.ExecuteAsync("SQL_TO_EFM");

            var api = new MartinCostello.SqlLocalDb.SqlLocalDbApi();

            api.AutomaticallyDeleteInstanceFiles = true;
            api.StopInstance("SQL_" + n.ToString("X8"));
            api.StopInstance("EFM_" + n.ToString("X8"));
            api.DeleteInstance("SQL_" + n.ToString("X8"));
            api.DeleteInstance("EFM_" + n.ToString("X8"));
        }
        public async Task Can_execute_local_test()
        {
            using var l = LoggerFactory.Create(builder => builder.AddConsole().SetMinimumLevel(LogLevel.Trace));
            var x = XDocument.Load(File.OpenRead("local_test.xml"));
            var d = SqlDeployment.Load(x);
            var p = d.Compile(GetArgs());

            await new SqlDeploymentExecutor(p, l.CreateLogger <SqlDeploymentExecutor>()).ExecuteAsync();

            var api = new MartinCostello.SqlLocalDb.SqlLocalDbApi();

            api.AutomaticallyDeleteInstanceFiles = true;
            api.StopInstance("SQL");
            api.StopInstance("EFM");
            api.DeleteInstance("SQL");
            api.DeleteInstance("EFM");
        }