Remove tool crash git.io link shortener (#99574)
This commit is contained in:
parent
c8538873c8
commit
dd97133df2
@ -181,7 +181,6 @@ Future<T> runInContext<T>(
|
||||
fileSystem: globals.fs,
|
||||
logger: globals.logger,
|
||||
flutterProjectFactory: globals.projectFactory,
|
||||
client: globals.httpClientFactory?.call() ?? HttpClient(),
|
||||
),
|
||||
DevFSConfig: () => DevFSConfig(),
|
||||
DeviceManager: () => FlutterDeviceManager(
|
||||
|
@ -59,16 +59,13 @@ class CrashReporter {
|
||||
required FileSystem fileSystem,
|
||||
required Logger logger,
|
||||
required FlutterProjectFactory flutterProjectFactory,
|
||||
required HttpClient client,
|
||||
}) : _fileSystem = fileSystem,
|
||||
_logger = logger,
|
||||
_flutterProjectFactory = flutterProjectFactory,
|
||||
_client = client;
|
||||
_flutterProjectFactory = flutterProjectFactory;
|
||||
|
||||
final FileSystem _fileSystem;
|
||||
final Logger _logger;
|
||||
final FlutterProjectFactory _flutterProjectFactory;
|
||||
final HttpClient _client;
|
||||
|
||||
/// Prints instructions for filing a bug about the crash.
|
||||
Future<void> informUser(CrashDetails details, File crashFile) async {
|
||||
@ -86,7 +83,6 @@ class CrashReporter {
|
||||
fileSystem: _fileSystem,
|
||||
logger: _logger,
|
||||
flutterProjectFactory: _flutterProjectFactory,
|
||||
client: _client,
|
||||
);
|
||||
|
||||
final String gitHubTemplateURL = await gitHubTemplateCreator.toolCrashIssueTemplateGitHubURL(
|
||||
|
@ -25,16 +25,13 @@ class GitHubTemplateCreator {
|
||||
required FileSystem fileSystem,
|
||||
required Logger logger,
|
||||
required FlutterProjectFactory flutterProjectFactory,
|
||||
required HttpClient client,
|
||||
}) : _fileSystem = fileSystem,
|
||||
_logger = logger,
|
||||
_flutterProjectFactory = flutterProjectFactory,
|
||||
_client = client;
|
||||
_flutterProjectFactory = flutterProjectFactory;
|
||||
|
||||
final FileSystem _fileSystem;
|
||||
final Logger _logger;
|
||||
final FlutterProjectFactory _flutterProjectFactory;
|
||||
final HttpClient _client;
|
||||
|
||||
static String toolCrashSimilarIssuesURL(String errorString) {
|
||||
return 'https://github.com/flutter/flutter/issues?q=is%3Aissue+${Uri.encodeQueryComponent(errorString)}';
|
||||
@ -110,13 +107,11 @@ $doctorText
|
||||
${_projectMetadataInformation()}
|
||||
''';
|
||||
|
||||
final String fullURL = 'https://github.com/flutter/flutter/issues'
|
||||
return 'https://github.com/flutter/flutter/issues'
|
||||
'/new' // We split this here to appease our lint that looks for bad "new bug" links.
|
||||
'?title=${Uri.encodeQueryComponent(title)}'
|
||||
'&body=${Uri.encodeQueryComponent(body)}'
|
||||
'&labels=${Uri.encodeQueryComponent('tool,severe: crash')}';
|
||||
|
||||
return _shortURL(fullURL);
|
||||
}
|
||||
|
||||
/// Provide information about the Flutter project in the working directory, if present.
|
||||
@ -169,29 +164,4 @@ ${_projectMetadataInformation()}
|
||||
return exception.toString();
|
||||
}
|
||||
}
|
||||
|
||||
/// Shorten GitHub URL with git.io API.
|
||||
///
|
||||
/// See https://github.blog/2011-11-10-git-io-github-url-shortener.
|
||||
Future<String> _shortURL(String fullURL) async {
|
||||
String? url;
|
||||
try {
|
||||
_logger.printTrace('Attempting git.io shortener: $fullURL');
|
||||
final List<int> bodyBytes = utf8.encode('url=${Uri.encodeQueryComponent(fullURL)}');
|
||||
final HttpClientRequest request = await _client.postUrl(Uri.parse('https://git.io'));
|
||||
request.headers.set(HttpHeaders.contentLengthHeader, bodyBytes.length.toString());
|
||||
request.add(bodyBytes);
|
||||
final HttpClientResponse response = await request.close();
|
||||
|
||||
if (response.statusCode == 201) {
|
||||
url = response.headers[HttpHeaders.locationHeader]?.first;
|
||||
} else {
|
||||
_logger.printTrace('Failed to shorten GitHub template URL. Server responded with HTTP status code ${response.statusCode}');
|
||||
}
|
||||
} on Exception catch (sendError) {
|
||||
_logger.printTrace('Failed to shorten GitHub template URL: $sendError');
|
||||
}
|
||||
|
||||
return url ?? fullURL;
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ import 'package:http/testing.dart';
|
||||
import 'package:test/fake.dart';
|
||||
|
||||
import '../src/common.dart';
|
||||
import '../src/fake_http_client.dart';
|
||||
import '../src/fake_process_manager.dart';
|
||||
|
||||
void main() {
|
||||
@ -83,7 +82,6 @@ void main() {
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
flutterProjectFactory: FlutterProjectFactory(fileSystem: fs, logger: logger),
|
||||
client: FakeHttpClient.any(),
|
||||
);
|
||||
|
||||
final File file = fs.file('flutter_00.log');
|
||||
|
@ -14,9 +14,6 @@ import 'package:flutter_tools/src/reporting/github_template.dart';
|
||||
|
||||
import '../src/common.dart';
|
||||
import '../src/context.dart';
|
||||
import '../src/fake_http_client.dart';
|
||||
|
||||
const String _kShortURL = 'https://www.example.com/short';
|
||||
|
||||
void main() {
|
||||
BufferLogger logger;
|
||||
@ -157,41 +154,10 @@ void main() {
|
||||
error = ArgumentError('argument error message');
|
||||
});
|
||||
|
||||
testUsingContext('shortened', () async {
|
||||
testUsingContext('shows GitHub issue URL', () async {
|
||||
final GitHubTemplateCreator creator = GitHubTemplateCreator(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
client: FakeHttpClient.list(<FakeRequest>[
|
||||
FakeRequest(Uri.parse('https://git.io'), method: HttpMethod.post, response: const FakeResponse(
|
||||
statusCode: 201,
|
||||
headers: <String, List<String>>{
|
||||
HttpHeaders.locationHeader: <String>[_kShortURL],
|
||||
}
|
||||
))
|
||||
]),
|
||||
flutterProjectFactory: FlutterProjectFactory(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
),
|
||||
);
|
||||
expect(
|
||||
await creator.toolCrashIssueTemplateGitHubURL(command, error, stackTrace, doctorText),
|
||||
_kShortURL
|
||||
);
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
});
|
||||
|
||||
testUsingContext('with network failure', () async {
|
||||
final GitHubTemplateCreator creator = GitHubTemplateCreator(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
client: FakeHttpClient.list(<FakeRequest>[
|
||||
FakeRequest(Uri.parse('https://git.io'), method: HttpMethod.post, response: const FakeResponse(
|
||||
statusCode: 500,
|
||||
))
|
||||
]),
|
||||
flutterProjectFactory: FlutterProjectFactory(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
@ -207,7 +173,6 @@ void main() {
|
||||
'eport%0A%60%60%60%0A%0A%23%23+Flutter+Application+Metadata%0ANo+pubspec+in+working+d'
|
||||
'irectory.%0A&labels=tool%2Csevere%3A+crash'
|
||||
);
|
||||
expect(logger.traceText, contains('Failed to shorten GitHub template URL'));
|
||||
}, overrides: <Type, Generator>{
|
||||
FileSystem: () => MemoryFileSystem.test(),
|
||||
ProcessManager: () => FakeProcessManager.any(),
|
||||
@ -217,7 +182,6 @@ void main() {
|
||||
final GitHubTemplateCreator creator = GitHubTemplateCreator(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
client: FakeHttpClient.any(),
|
||||
flutterProjectFactory: FlutterProjectFactory(
|
||||
fileSystem: fs,
|
||||
logger: logger,
|
||||
|
@ -56,26 +56,6 @@ String _toMethodString(HttpMethod method) {
|
||||
}
|
||||
}
|
||||
|
||||
/// Override the creation of all [HttpClient] objects with a zone injection.
|
||||
///
|
||||
/// This should only be used when the http client cannot be set directly, such as
|
||||
/// when testing `package:http` code.
|
||||
Future<void> overrideHttpClients(Future<void> Function() callback, FakeHttpClient httpClient) async {
|
||||
final HttpOverrides overrides = _FakeHttpClientOverrides(httpClient);
|
||||
await HttpOverrides.runWithHttpOverrides(callback, overrides);
|
||||
}
|
||||
|
||||
class _FakeHttpClientOverrides extends HttpOverrides {
|
||||
_FakeHttpClientOverrides(this.httpClient);
|
||||
|
||||
final FakeHttpClient httpClient;
|
||||
|
||||
@override
|
||||
HttpClient createHttpClient(SecurityContext? context) {
|
||||
return httpClient;
|
||||
}
|
||||
}
|
||||
|
||||
/// Create a fake request that configures the [FakeHttpClient] to respond
|
||||
/// with the provided [response].
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user