mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-14 01:25:40 -05:00
* Support `GO N` syntax to execute multiple times - Plumbed through the batch execution count from the parser and used in the batch execution code path - Functionality matches SSMS: - Outputs loop start/end messages that match SSMS if you're doing multi-batch execution - Outputs an "ignoring failure" error if an error happens during a batch - Added tests for this - Manually verified end to end also * Fixing test error
70 lines
2.6 KiB
C#
70 lines
2.6 KiB
C#
using System;
|
|
using Microsoft.SqlTools.ServiceLayer.BatchParser;
|
|
using Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.SqlTools.ServiceLayer.IntegrationTests.BatchParser
|
|
{
|
|
public class BatchParserWrapperTests
|
|
{
|
|
[Fact]
|
|
public void CheckSimpleSingleSQLBatchStatement()
|
|
{
|
|
using (BatchParserWrapper parserWrapper = new BatchParserWrapper())
|
|
{
|
|
string sqlScript = "select * from sys.objects";
|
|
var batches = parserWrapper.GetBatches(sqlScript);
|
|
Assert.Equal(1, batches.Count);
|
|
BatchDefinition batch = batches[0];
|
|
Assert.Equal(sqlScript, batch.BatchText);
|
|
Assert.Equal(1, batch.StartLine);
|
|
Assert.Equal(1, batch.StartColumn);
|
|
Assert.Equal(2, batch.EndLine);
|
|
Assert.Equal(sqlScript.Length+1, batch.EndColumn);
|
|
Assert.Equal(1, batch.BatchExecutionCount);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void CheckSQLBatchStatementWithRepeatExecution()
|
|
{
|
|
using (BatchParserWrapper parserWrapper = new BatchParserWrapper())
|
|
{
|
|
string sqlScript = "select * from sys.object" + Environment.NewLine + "GO 2";
|
|
var batches = parserWrapper.GetBatches(sqlScript);
|
|
Assert.Equal(1, batches.Count);
|
|
BatchDefinition batch = batches[0];
|
|
Assert.Equal(2, batch.BatchExecutionCount);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void CheckComment()
|
|
{
|
|
using (BatchParserWrapper parserWrapper = new BatchParserWrapper())
|
|
{
|
|
string sqlScript = "-- this is a comment --";
|
|
var batches = parserWrapper.GetBatches(sqlScript);
|
|
Assert.Equal(1, batches.Count);
|
|
BatchDefinition batch = batches[0];
|
|
Assert.Equal(sqlScript, batch.BatchText);
|
|
Assert.Equal(1, batch.StartLine);
|
|
Assert.Equal(1, batch.StartColumn);
|
|
Assert.Equal(2, batch.EndLine);
|
|
Assert.Equal(sqlScript.Length+1, batch.EndColumn);
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void CheckNoOps()
|
|
{
|
|
using (BatchParserWrapper parserWrapper = new BatchParserWrapper())
|
|
{
|
|
string sqlScript = "GO";
|
|
var batches = parserWrapper.GetBatches(sqlScript);
|
|
Assert.Equal(0, batches.Count);
|
|
}
|
|
}
|
|
}
|
|
}
|