Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Dart 3 dev CI builds #3422

Merged
merged 4 commits into from Dec 12, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
366 changes: 297 additions & 69 deletions .github/workflows/dart.yml

Large diffs are not rendered by default.

7 changes: 4 additions & 3 deletions _test/mono_pkg.yaml
Expand Up @@ -10,9 +10,10 @@ stages:
- analyze: --fatal-infos .
os: linux
- unit_test:
- group:
- command: dart run build_runner test -- -p chrome --test-randomize-ordering-seed=random
- command: dart run build_runner test -- -p vm test/configurable_uri_test.dart --test-randomize-ordering-seed=random
- command: dart run build_runner test -- -p chrome --test-randomize-ordering-seed=random
# TODO(https://github.com/dart-lang/build/issues/3423): restore this on windows
- command: dart run build_runner test -- -p vm test/configurable_uri_test.dart --test-randomize-ordering-seed=random
os: linux
- e2e_test:
- test: --total-shards 3 --shard-index 0 --test-randomize-ordering-seed=random
os: linux
Expand Down
4 changes: 4 additions & 0 deletions _test_common/lib/sdk.dart
Expand Up @@ -8,11 +8,15 @@ import 'dart:io';
// ignore: implementation_imports
import 'package:build_runner_core/src/util/constants.dart';
import 'package:path/path.dart' as p;
import 'package:pub_semver/pub_semver.dart';
import 'package:test/test.dart';
import 'package:test_descriptor/test_descriptor.dart' as d;

String _dartBinary = p.join(sdkBin, 'dart');

final bool supportsUnsoundNullSafety =
Version.parse(Platform.version.split(' ').first).major == 2;

/// Runs `pub get` on [package] (which is assumed to be in a directory with
/// that name under the [d.sandbox] directory).
Future<ProcessResult> pubGet(String package, {bool offline = true}) async {
Expand Down
1 change: 1 addition & 0 deletions _test_common/pubspec.yaml
Expand Up @@ -14,6 +14,7 @@ dependencies:
logging: ^1.0.0
package_config: ^2.0.0
path: ^1.8.0
pub_semver: ^2.0.0
test: ^1.16.0
test_descriptor: ^2.0.0
watcher: ^1.0.0
Expand Down
10 changes: 8 additions & 2 deletions _test_null_safety/mono_pkg.yaml
Expand Up @@ -12,12 +12,18 @@ stages:
sdk: dev
- e2e_test:
- group:
- command: dart run build_runner test -- -p chrome,vm --test-randomize-ordering-seed=random
- command: dart run build_runner test -- -p chrome --test-randomize-ordering-seed=random
- command: dart run build_runner test --define="build_web_compilers:entrypoint=compiler=dart2js" -- -p chrome --test-randomize-ordering-seed=random
# TODO(https://github.com/dart-lang/build/issues/3423): restore this on windows
- command: dart run build_runner test -- -p vm --test-randomize-ordering-seed=random
os: linux
# This stage is configured to only run for scheduled builds (see mono_repo.yaml)
- e2e_test_cron:
- group:
- command: dart run build_runner test -- -p chrome,vm --test-randomize-ordering-seed=random
- command: dart run build_runner test -- -p chrome --test-randomize-ordering-seed=random
- command: dart run build_runner test --define="build_web_compilers:entrypoint=compiler=dart2js" -- -p chrome --test-randomize-ordering-seed=random
sdk:
- be/raw/latest
# TODO(https://github.com/dart-lang/build/issues/3423): restore this on windows
- command: dart run build_runner test -- -p vm --test-randomize-ordering-seed=random
os: linux
Expand Up @@ -140,57 +140,69 @@ environment:
buildYaml,
d.dir('lib', [d.file('builder.dart', '')]),
]).create();
await runPub('a', 'get');
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
expect(options.canRunWithSoundNullSafety, isTrue);
});

test('when the root package opts out', () async {
await d.dir('a', [
d.file('pubspec.yaml', '''
if (supportsUnsoundNullSafety) {
jakemac53 marked this conversation as resolved.
Show resolved Hide resolved
test('when the root package opts out', () async {
await d.dir('a', [
d.file('pubspec.yaml', '''
name: a
environment:
sdk: '>=2.9.0 <3.0.0'
'''),
d.dir('lib', [d.file('builder.dart', '')]),
]).create();
await runPub('a', 'get');
d.dir('lib', [d.file('builder.dart', '')]),
]).create();
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
expect(options.canRunWithSoundNullSafety, isFalse);
});
final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
expect(options.canRunWithSoundNullSafety, isFalse);
});

test('when a builder-defining package opts out', () async {
await d.dir('a', [
d.file('pubspec.yaml', '''
test('when a builder-defining package opts out', () async {
await d.dir('a', [
d.file('pubspec.yaml', '''
name: a
environment:
sdk: '>=2.12.0 <3.0.0'
dependencies:
b:
path: ../b/
'''),
]).create();
await d.dir('b', [
d.file('pubspec.yaml', '''
]).create();
await d.dir('b', [
d.file('pubspec.yaml', '''
name: b
environment:
sdk: '>=2.9.0 <3.0.0'
'''),
buildYaml,
d.dir('lib', [
d.file('builder.dart', ''),
]),
]).create();
await runPub('a', 'get');
buildYaml,
d.dir('lib', [
d.file('builder.dart', ''),
]),
]).create();
await runPub('a', 'get');
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
expect(options.canRunWithSoundNullSafety, isFalse);
});
final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
expect(options.canRunWithSoundNullSafety, isFalse);
});
}

test('when a builder-defining library ops out', () async {
await d.dir('a', [
Expand All @@ -203,6 +215,10 @@ environment:
d.dir('lib', [d.file('builder.dart', '// @dart=2.9')]),
]).create();
await runPub('a', 'get');
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
Expand All @@ -227,6 +243,10 @@ builders:
d.dir('tool', [d.file('builder.dart', '//@dart=2.9')]),
]).create();
await runPub('a', 'get');
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
Expand All @@ -251,6 +271,10 @@ builders:
d.dir('tool', [d.file('builder.dart', '')]),
]).create();
await runPub('a', 'get');
var pubGetResult = await runPub('a', 'get');
expect(pubGetResult.exitCode, 0,
reason: 'stdout: ${pubGetResult.stdout}\n\n'
'stderr: ${pubGetResult.stderr}');

final options = await findBuildScriptOptions(
packageGraph: await PackageGraph.forPath('${d.sandbox}/a'));
Expand Down
4 changes: 3 additions & 1 deletion build_vm_compilers/test/vm_kernel_integration_test.dart
Expand Up @@ -9,7 +9,9 @@ import 'package:test/test.dart';
import 'package:test_descriptor/test_descriptor.dart' as d;

void main() {
group('without null safety', () => _runTests(false));
if (supportsUnsoundNullSafety) {
group('without null safety', () => _runTests(false));
}
group('with null safety', () => _runTests(true));
}

Expand Down
2 changes: 1 addition & 1 deletion build_web_compilers/test/fixtures/a/pubspec.yaml
@@ -1,7 +1,7 @@
name: a

environment:
sdk: ">=1.0.0 <3.0.0"
sdk: ">=1.0.0 <4.0.0"

dependencies:
b:
Expand Down
2 changes: 1 addition & 1 deletion build_web_compilers/test/fixtures/b/pubspec.yaml
@@ -1,7 +1,7 @@
name: b

environment:
sdk: ">=1.0.0 <3.0.0"
sdk: ">=1.0.0 <4.0.0"

dependencies:
a:
Expand Down
8 changes: 4 additions & 4 deletions tool/ci.sh

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.