enable building the bootstrap.js file before the dart.js file (#1639)
diff --git a/lib/src/dartdevc/dartdevc_environment.dart b/lib/src/dartdevc/dartdevc_environment.dart
index 19f30a5..1994b1b 100644
--- a/lib/src/dartdevc/dartdevc_environment.dart
+++ b/lib/src/dartdevc/dartdevc_environment.dart
@@ -266,8 +266,8 @@
// Remove the `.js` extension.
var dartId = id.changeExtension('');
- // Conditionally change the `.bootstrap` extension to a `.dart` extension.
- if (dartId.extension == '.bootstrap') dartId.changeExtension('.dart');
+ // Conditionally remove the `.bootstrap` extension.
+ if (dartId.extension == '.bootstrap') dartId = dartId.changeExtension('');
assert(dartId.extension == '.dart');
return dartId;
}
diff --git a/test/dartdevc/dartdevc_test.dart b/test/dartdevc/dartdevc_test.dart
index 7d9f7a4..b05f5ff 100644
--- a/test/dartdevc/dartdevc_test.dart
+++ b/test/dartdevc/dartdevc_test.dart
@@ -142,38 +142,50 @@
});
});
- test("dartdevc resources are copied next to entrypoints", () async {
- await d.dir(appPath, [
- d.appPubspec(),
- d.dir("lib", [
- d.file("main.dart", 'void main() {}'),
- ]),
- d.dir("web", [
- d.file("main.dart", 'void main() {}'),
- d.dir("subdir", [
+ group('basic app', () {
+ setUp(() async {
+ await d.dir(appPath, [
+ d.appPubspec(),
+ d.dir("lib", [
d.file("main.dart", 'void main() {}'),
]),
- ]),
- ]).create();
+ d.dir("web", [
+ d.file("main.dart", 'void main() {}'),
+ d.dir("subdir", [
+ d.file("main.dart", 'void main() {}'),
+ ]),
+ ]),
+ ]).create();
- await pubGet();
- await pubServe(args: ['--web-compiler', 'dartdevc']);
- await requestShouldSucceed('dart_sdk.js', null);
- await requestShouldSucceed('require.js', null);
- await requestShouldSucceed('dart_stack_trace_mapper.js', null);
- await requestShouldSucceed('ddc_web_compiler.js', null);
- await requestShould404('dart_sdk.js.map');
- await requestShould404('require.js.map');
- await requestShould404('dart_stack_trace_mapper.js.map');
- await requestShould404('ddc_web_compiler.js.map');
- await requestShouldSucceed('subdir/dart_sdk.js', null);
- await requestShouldSucceed('subdir/require.js', null);
- await requestShouldSucceed('subdir/dart_stack_trace_mapper.js', null);
- await requestShouldSucceed('subdir/ddc_web_compiler.js', null);
- await requestShould404('subdir/dart_sdk.js.map');
- await requestShould404('subdir/require.js.map');
- await requestShould404('subdir/dart_stack_trace_mapper.js.map');
- await requestShould404('subdir/ddc_web_compiler.js.map');
- await endPubServe();
+ await pubGet();
+ await pubServe(args: ['--web-compiler', 'dartdevc']);
+ });
+
+ test("dartdevc resources are copied next to entrypoints", () async {
+ await requestShouldSucceed('dart_sdk.js', null);
+ await requestShouldSucceed('require.js', null);
+ await requestShouldSucceed('dart_stack_trace_mapper.js', null);
+ await requestShouldSucceed('ddc_web_compiler.js', null);
+ await requestShould404('dart_sdk.js.map');
+ await requestShould404('require.js.map');
+ await requestShould404('dart_stack_trace_mapper.js.map');
+ await requestShould404('ddc_web_compiler.js.map');
+ await requestShouldSucceed('subdir/dart_sdk.js', null);
+ await requestShouldSucceed('subdir/require.js', null);
+ await requestShouldSucceed('subdir/dart_stack_trace_mapper.js', null);
+ await requestShouldSucceed('subdir/ddc_web_compiler.js', null);
+ await requestShould404('subdir/dart_sdk.js.map');
+ await requestShould404('subdir/require.js.map');
+ await requestShould404('subdir/dart_stack_trace_mapper.js.map');
+ await requestShould404('subdir/ddc_web_compiler.js.map');
+ await endPubServe();
+ });
+
+ // Regression test for https://github.com/dart-lang/pub/issues/1638.
+ test("can request the bootstrap.js file before the dart.js file", () async {
+ await requestShouldSucceed('subdir/main.dart.bootstrap.js', null);
+ await requestShouldSucceed('subdir/main.dart.js', null);
+ await endPubServe();
+ });
});
}