Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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) {
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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.