mirror of
https://github.com/flutter/packages.git
synced 2025-08-06 17:28:42 +08:00

Packages are the primary conceptual object in the tool, but currently they are represented simply as Directory (or occasionally a path string). This introduces an object for packages and: - moves a number of existing utility methods into it - sweeps the code for the obvious cases of using `Directory` to represent a package, especially in method signatures and migrates them - notes a few places where we should migrate later, to avoid ballooning the size of the PR There are no doubt other cases not caught in the sweep, but this gives us a foundation both for new code, and to migrate incrementally toward as we find existing code that was missed.
90 lines
3.0 KiB
Dart
90 lines
3.0 KiB
Dart
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter_plugin_tools/src/common/pub_version_finder.dart';
|
|
import 'package:http/http.dart' as http;
|
|
import 'package:http/testing.dart';
|
|
import 'package:mockito/mockito.dart';
|
|
import 'package:pub_semver/pub_semver.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
void main() {
|
|
test('Package does not exist.', () async {
|
|
final MockClient mockClient = MockClient((http.Request request) async {
|
|
return http.Response('', 404);
|
|
});
|
|
final PubVersionFinder finder = PubVersionFinder(httpClient: mockClient);
|
|
final PubVersionFinderResponse response =
|
|
await finder.getPackageVersion(packageName: 'some_package');
|
|
|
|
expect(response.versions, isEmpty);
|
|
expect(response.result, PubVersionFinderResult.noPackageFound);
|
|
expect(response.httpResponse.statusCode, 404);
|
|
expect(response.httpResponse.body, '');
|
|
});
|
|
|
|
test('HTTP error when getting versions from pub', () async {
|
|
final MockClient mockClient = MockClient((http.Request request) async {
|
|
return http.Response('', 400);
|
|
});
|
|
final PubVersionFinder finder = PubVersionFinder(httpClient: mockClient);
|
|
final PubVersionFinderResponse response =
|
|
await finder.getPackageVersion(packageName: 'some_package');
|
|
|
|
expect(response.versions, isEmpty);
|
|
expect(response.result, PubVersionFinderResult.fail);
|
|
expect(response.httpResponse.statusCode, 400);
|
|
expect(response.httpResponse.body, '');
|
|
});
|
|
|
|
test('Get a correct list of versions when http response is OK.', () async {
|
|
const Map<String, dynamic> httpResponse = <String, dynamic>{
|
|
'name': 'some_package',
|
|
'versions': <String>[
|
|
'0.0.1',
|
|
'0.0.2',
|
|
'0.0.2+2',
|
|
'0.1.1',
|
|
'0.0.1+1',
|
|
'0.1.0',
|
|
'0.2.0',
|
|
'0.1.0+1',
|
|
'0.0.2+1',
|
|
'2.0.0',
|
|
'1.2.0',
|
|
'1.0.0',
|
|
],
|
|
};
|
|
final MockClient mockClient = MockClient((http.Request request) async {
|
|
return http.Response(json.encode(httpResponse), 200);
|
|
});
|
|
final PubVersionFinder finder = PubVersionFinder(httpClient: mockClient);
|
|
final PubVersionFinderResponse response =
|
|
await finder.getPackageVersion(packageName: 'some_package');
|
|
|
|
expect(response.versions, <Version>[
|
|
Version.parse('2.0.0'),
|
|
Version.parse('1.2.0'),
|
|
Version.parse('1.0.0'),
|
|
Version.parse('0.2.0'),
|
|
Version.parse('0.1.1'),
|
|
Version.parse('0.1.0+1'),
|
|
Version.parse('0.1.0'),
|
|
Version.parse('0.0.2+2'),
|
|
Version.parse('0.0.2+1'),
|
|
Version.parse('0.0.2'),
|
|
Version.parse('0.0.1+1'),
|
|
Version.parse('0.0.1'),
|
|
]);
|
|
expect(response.result, PubVersionFinderResult.success);
|
|
expect(response.httpResponse.statusCode, 200);
|
|
expect(response.httpResponse.body, json.encode(httpResponse));
|
|
});
|
|
}
|
|
|
|
class MockProcessResult extends Mock implements ProcessResult {}
|