blob: 6cd11acf8ba7c70e312d93429e2227cb072d1495 [file] [edit]
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/lsp_protocol/protocol.dart';
import 'package:analysis_server/src/lsp/constants.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
import '../tool/lsp_spec/matchers.dart';
import 'server_abstract.dart';
void main() {
defineReflectiveSuite(() {
defineReflectiveTests(MigrateTest);
});
}
@reflectiveTest
class MigrateTest extends AbstractLspAnalysisServerTest {
Future<void> test_error_directoryWithoutPubspec() async {
await initialize();
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [projectFolderUri]),
);
var response = await sendRequestToServer(request);
expect(
response.error,
isResponseError(
ErrorCodes.InvalidParams,
message: contains("doesn't contain a 'pubspec.yaml' file."),
),
);
}
Future<void> test_error_fileUri() async {
await initialize();
newFile(mainFilePath, '');
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [mainFileUri]),
);
var response = await sendRequestToServer(request);
expect(
response.error,
isResponseError(
ErrorCodes.InvalidParams,
message: contains(
"doesn't refer to a package or pub workspace directory.",
),
),
);
}
Future<void> test_error_fileUri_multipleWithOneInvalid() async {
await initialize();
newFile(pubspecFilePath, 'name: test_project');
var validUri = projectFolderUri;
var invalidUri = Uri.parse('http://example.com');
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [validUri, invalidUri]),
);
var response = await sendRequestToServer(request);
expect(
response.error,
isResponseError(
ServerErrorCodes.invalidFilePath,
message: contains("URI scheme 'http' is not supported"),
),
);
}
Future<void> test_error_nonExistentDirectory() async {
await initialize();
var dirUri = Uri.file(convertPath('/non/existent/dir'));
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [dirUri]),
);
var response = await sendRequestToServer(request);
expect(
response.error,
isResponseError(
ErrorCodes.InvalidParams,
message: contains("doesn't exist"),
),
);
}
Future<void> test_error_workspacePackage() async {
await initialize();
newFile(pubspecFilePath, '''
name: test_project
resolution: workspace
''');
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [projectFolderUri]),
);
var response = await sendRequestToServer(request);
expect(
response.error,
isResponseError(
ErrorCodes.InvalidParams,
message: contains(
"is part of a workspace and can't be migrated independently.",
),
),
);
}
Future<void> test_validDirectory() async {
await initialize();
newFile(pubspecFilePath, 'name: test_project');
var request = makeRequest(
CustomMethods.migrate,
DartMigrateParams(uris: [projectFolderUri]),
);
var response = await sendRequestToServer(request);
expect(response.error, isNull);
}
}