Add a test case for #44394 This issue (Migration tool null safety detection fails when tests use path imports) was reported in December of 2020 and I can't reproduce it. I believe there have been changes in analyzer package resolution since then, aimed precisely at helping users who use this sort of improper path import. So it is likely that those changes fixed this bug. I'm adding a test case to ensure that the bug isn't accidentally un-fixed by future changes. Bug: https://github.com/dart-lang/sdk/issues/44394 Change-Id: I81490e545aa41196c3c69bc4d74cd481079d59ba Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/259200 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/nnbd_migration/test/migration_cli_test.dart b/pkg/nnbd_migration/test/migration_cli_test.dart index 10aa974..fe32069 100644 --- a/pkg/nnbd_migration/test/migration_cli_test.dart +++ b/pkg/nnbd_migration/test/migration_cli_test.dart
@@ -779,6 +779,50 @@ }); } + test_lifecycle_import_check_handle_improper_lib_import() async { + Map<String, String?> computeProjectContents({required bool migrated}) => { + 'pubspec.yaml': ''' +name: test +environment: + sdk: '${migrated ? '>=2.12.0 <3.0.0' : '>=2.6.0 <3.0.0'}' +''', + '.dart_tool/package_config.json': + _getPackageConfigText(migrated: migrated), + 'lib/foo.dart': ''' +int${migrated ? '?' : ''} f() => null; +''', + 'test/foo_test.dart': ''' +import '../lib/foo.dart'; +int${migrated ? '?' : ''} g() => f(); +''', + }; + var projectContents = computeProjectContents(migrated: false); + var projectDir = createProjectDir(projectContents); + var cli = _createCli(); + bool applyHookCalled = false; + cli._onApplyHook = () { + expect(applyHookCalled, false); + applyHookCalled = true; + // Changes should have been made + assertProjectContents(projectDir, computeProjectContents(migrated: true)); + }; + await runWithPreviewServer(cli, ['--skip-import-check', projectDir], + (url) async { + expect( + logger.stdoutBuffer.toString(), contains('No analysis issues found')); + await assertPreviewServerResponsive(url!); + await _tellPreviewToApplyChanges(url); + expect(applyHookCalled, true); + var output = logger.stdoutBuffer.toString(); + expect(output, + isNot(contains('Warning: package has unmigrated dependencies'))); + // Output should not mention that the user can rerun without + // `--skip-import-check`. + expect(output, + isNot(contains('`--${CommandLineOptions.skipImportCheckFlag}`'))); + }); + } + test_lifecycle_import_check_via_export() async { // If the user's code exports a library that imports a non-migrated library, // that's a problem too.