Skip to content

Commit

Permalink
add test to verify that we do not send the skipAst flag when there …
Browse files Browse the repository at this point in the history
…are consumers
  • Loading branch information
kebetsi committed Jun 13, 2024
1 parent c5de326 commit 956ac5a
Showing 1 changed file with 60 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,23 @@ void should_send_skipAst_flag_when_there_are_no_consumers() throws Exception {
assertThat(captor.getValue().skipAst()).isTrue();
}

@Test
void should_not_send_the_skipAst_flag_when_there_are_consumers() throws Exception {
var ctx = createSensorContext(baseDir);
var inputFile = createInputFile(ctx);
var tsProgram = new TsProgram("1", List.of(inputFile.absolutePath()), List.of());
var consumer = createConsumer();
var sensor = createSensorWithConsumer(consumer);
when(bridgeServerMock.createProgram(any())).thenReturn(tsProgram);
when(bridgeServerMock.analyzeTypeScript(any())).thenReturn(new AnalysisResponse());
sensor.execute(ctx);

createSensor().execute(context);
var captor = ArgumentCaptor.forClass(JsAnalysisRequest.class);
verify(bridgeServerMock).analyzeTypeScript(captor.capture());
assertThat(captor.getValue().skipAst()).isFalse();
}

@Test
void should_send_content_when_not_utf8() throws Exception {
var ctx = createSensorContext(baseDir);
Expand Down Expand Up @@ -849,6 +866,17 @@ public void doneAnalysis() {

@Test
void should_not_invoke_analysis_consumers_when_cannot_deserialize() throws Exception {
var inputFile = createInputFile(context);
var tsProgram = new TsProgram("1", List.of(inputFile.absolutePath()), List.of(), false, null);
when(bridgeServerMock.createProgram(any())).thenReturn(tsProgram);

Node erroneousNode = Node.newBuilder()
.setType(NodeType.BlockStatementType)
.build();

when(bridgeServerMock.analyzeTypeScript(any())).thenReturn(
new AnalysisResponse(null, List.of(), List.of(), List.of(), new BridgeServer.Metrics(), List.of(), List.of(), erroneousNode)
);
var consumer = new JsAnalysisConsumer() {
final List<JsFile> files = new ArrayList<>();
boolean done;
Expand All @@ -863,33 +891,45 @@ public void doneAnalysis() {
done = true;
}
};
var sensor = createSensorWithConsumer(consumer);
sensor.execute(context);
assertThat(consumer.files).isEmpty();
assertThat(consumer.done).isTrue();

var sensor = new JsTsSensor(
assertThat(logTester.logs(Level.DEBUG))
.contains("Failed to deserialize AST for file: " + inputFile.uri());
}

private JsAnalysisConsumer createConsumer() {
return new JsAnalysisConsumer() {
final List<JsFile> files = new ArrayList<>();
boolean done;

@Override
public void accept(JsFile jsFile) {
files.add(jsFile);
}

@Override
public void doneAnalysis() {
done = true;
}

public List<JsFile> getFiles() {
return this.files;
}
};
}

private JsTsSensor createSensorWithConsumer(JsAnalysisConsumer consumer) {

return new JsTsSensor(
checks(ESLINT_BASED_RULE, "S2260"),
bridgeServerMock,
analysisWithProgram(),
analysisWithWatchProgram(),
new AnalysisConsumers(List.of(consumer))
);

var inputFile = createInputFile(context);
var tsProgram = new TsProgram("1", List.of(inputFile.absolutePath()), List.of(), false, null);
when(bridgeServerMock.createProgram(any())).thenReturn(tsProgram);

Node erroneousNode = Node.newBuilder()
.setType(NodeType.BlockStatementType)
.build();

when(bridgeServerMock.analyzeTypeScript(any())).thenReturn(
new AnalysisResponse(null, List.of(), List.of(), List.of(), new BridgeServer.Metrics(), List.of(), List.of(), erroneousNode)
);

sensor.execute(context);
assertThat(consumer.files).isEmpty();
assertThat(consumer.done).isTrue();

assertThat(logTester.logs(Level.DEBUG))
.contains("Failed to deserialize AST for file: " + inputFile.uri());
}

private JsTsSensor createSensor() {
Expand Down

0 comments on commit 956ac5a

Please sign in to comment.