Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion auto_submit/lib/service/validation_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,10 @@ ${pullRequest.title!.replaceFirst('Revert "Revert', 'Reland')}
}, retryIf: (Exception e) => e is RetryableException);
} catch (e, s) {
final message =
'Failed to enqueue ${slug.fullName}/${restPullRequest.number} with $e';
'Failed to enqueue ${slug.fullName}/${restPullRequest.number} with $e. '
'If CI checks have not been triggered, please ensure the appropriate '
'CI labels have been added before using the '
"'${Config.kAutosubmitLabel}' label.";
log.error(message, e, s);
return (result: false, message: message, method: SubmitMethod.enqueue);
}
Expand Down
46 changes: 46 additions & 0 deletions auto_submit/test/service/pull_request_validation_service_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -660,6 +660,52 @@ This is the second line in a paragraph.''');
);
});

test(
'Fails to enqueue with helpful hint when GraphQL returns opaque error',
() async {
slug = RepositorySlug('flutter', 'flutter');

githubGraphQLClient.queryResultForOptions = (QueryOptions options) {
return QueryResult(
options: options,
source: QueryResultSource.network,
data: {
'repository': {
'pullRequest': {'id': 'PR_blahblah'},
},
},
);
};

githubGraphQLClient.mutateResultForOptions = (MutationOptions options) {
return QueryResult(
options: options,
source: QueryResultSource.network,
exception: OperationException(),
);
};

final pullRequest = generatePullRequest(
prNumber: 42,
repoName: slug.name,
title: 'Test PR',
mergeable: true,
);

final result = await validationService.submitPullRequest(
config: config,
pullRequest: pullRequest,
);

expect(result.result, isFalse);
expect(result.message, contains('Failed to enqueue flutter/flutter/42'));
expect(
result.message,
contains('CI labels have been added before using the'),
);
},
);

test('Jumps the queue for emergency pull requests', () async {
slug = RepositorySlug('flutter', 'flutter');
final prTitle = 'This pull request should fail to enqueueueueueueueueueu';
Expand Down