Skip to content

Commit 705196f

Browse files
authored
[tools] Make sure assemble has a pubspec as cwd (flutter#184067)
Bug: * flutter#169475 Forces `flutter assemble` to have a cwd with a pubspec. This will give errors earlier than the NPE in the linked bug.
1 parent 437ec2c commit 705196f

2 files changed

Lines changed: 39 additions & 16 deletions

File tree

packages/flutter_tools/lib/src/commands/assemble.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class AssembleCommand extends FlutterCommand {
9797
AssembleCommand({bool verboseHelp = false, required BuildSystem buildSystem})
9898
: _verboseHelp = verboseHelp,
9999
_buildSystem = buildSystem {
100+
requiresPubspecYaml();
100101
argParser.addMultiOption(
101102
'define',
102103
abbr: 'd',

packages/flutter_tools/test/commands.shard/hermetic/assemble_test.dart

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,13 @@ void main() {
2828
final StackTrace stackTrace = StackTrace.current;
2929
late FakeAnalytics fakeAnalytics;
3030

31+
late MemoryFileSystem fileSystem;
32+
3133
setUp(() {
34+
fileSystem = MemoryFileSystem.test();
35+
fileSystem.file('pubspec.yaml').createSync();
3236
fakeAnalytics = getInitializedFakeAnalyticsInstance(
33-
fs: MemoryFileSystem.test(),
37+
fs: fileSystem,
3438
fakeFlutterVersion: FakeFlutterVersion(),
3539
);
3640
});
@@ -51,7 +55,7 @@ void main() {
5155
},
5256
overrides: <Type, Generator>{
5357
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
54-
FileSystem: () => MemoryFileSystem.test(),
58+
FileSystem: () => fileSystem,
5559
ProcessManager: () => FakeProcessManager.any(),
5660
},
5761
);
@@ -80,7 +84,7 @@ void main() {
8084
},
8185
overrides: <Type, Generator>{
8286
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
83-
FileSystem: () => MemoryFileSystem.test(),
87+
FileSystem: () => fileSystem,
8488
ProcessManager: () => FakeProcessManager.any(),
8589
},
8690
);
@@ -109,7 +113,7 @@ void main() {
109113
},
110114
overrides: <Type, Generator>{
111115
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
112-
FileSystem: () => MemoryFileSystem.test(),
116+
FileSystem: () => fileSystem,
113117
ProcessManager: () => FakeProcessManager.any(),
114118
},
115119
);
@@ -138,7 +142,7 @@ void main() {
138142
},
139143
overrides: <Type, Generator>{
140144
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
141-
FileSystem: () => MemoryFileSystem.test(),
145+
FileSystem: () => fileSystem,
142146
ProcessManager: () => FakeProcessManager.any(),
143147
},
144148
);
@@ -160,7 +164,7 @@ void main() {
160164
},
161165
overrides: <Type, Generator>{
162166
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
163-
FileSystem: () => MemoryFileSystem.test(),
167+
FileSystem: () => fileSystem,
164168
ProcessManager: () => FakeProcessManager.any(),
165169
FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true),
166170
},
@@ -192,7 +196,7 @@ void main() {
192196
overrides: <Type, Generator>{
193197
Analytics: () => fakeAnalytics,
194198
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
195-
FileSystem: () => MemoryFileSystem.test(),
199+
FileSystem: () => fileSystem,
196200
ProcessManager: () => FakeProcessManager.any(),
197201
},
198202
);
@@ -224,7 +228,7 @@ void main() {
224228
},
225229
overrides: <Type, Generator>{
226230
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
227-
FileSystem: () => MemoryFileSystem.test(),
231+
FileSystem: () => fileSystem,
228232
ProcessManager: () => FakeProcessManager.any(),
229233
FeatureFlags: () => TestFeatureFlags(isMacOSEnabled: true),
230234
Analytics: () => fakeAnalytics,
@@ -245,7 +249,7 @@ void main() {
245249
},
246250
overrides: <Type, Generator>{
247251
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
248-
FileSystem: () => MemoryFileSystem.test(),
252+
FileSystem: () => fileSystem,
249253
ProcessManager: () => FakeProcessManager.any(),
250254
},
251255
);
@@ -269,7 +273,7 @@ void main() {
269273
},
270274
overrides: <Type, Generator>{
271275
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
272-
FileSystem: () => MemoryFileSystem.test(),
276+
FileSystem: () => fileSystem,
273277
ProcessManager: () => FakeProcessManager.any(),
274278
},
275279
);
@@ -298,7 +302,7 @@ void main() {
298302
},
299303
overrides: <Type, Generator>{
300304
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
301-
FileSystem: () => MemoryFileSystem.test(),
305+
FileSystem: () => fileSystem,
302306
ProcessManager: () => FakeProcessManager.any(),
303307
},
304308
);
@@ -314,7 +318,7 @@ void main() {
314318
},
315319
overrides: <Type, Generator>{
316320
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
317-
FileSystem: () => MemoryFileSystem.test(),
321+
FileSystem: () => fileSystem,
318322
ProcessManager: () => FakeProcessManager.any(),
319323
},
320324
);
@@ -344,7 +348,7 @@ void main() {
344348
},
345349
overrides: <Type, Generator>{
346350
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
347-
FileSystem: () => MemoryFileSystem.test(),
351+
FileSystem: () => fileSystem,
348352
ProcessManager: () => FakeProcessManager.any(),
349353
},
350354
);
@@ -386,7 +390,7 @@ void main() {
386390
},
387391
overrides: <Type, Generator>{
388392
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
389-
FileSystem: () => MemoryFileSystem.test(),
393+
FileSystem: () => fileSystem,
390394
ProcessManager: () => FakeProcessManager.any(),
391395
},
392396
);
@@ -416,7 +420,7 @@ void main() {
416420
localEngineHost: 'out/host_release',
417421
),
418422
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
419-
FileSystem: () => MemoryFileSystem.test(),
423+
FileSystem: () => fileSystem,
420424
ProcessManager: () => FakeProcessManager.any(),
421425
},
422426
);
@@ -489,7 +493,7 @@ void main() {
489493
},
490494
overrides: <Type, Generator>{
491495
Cache: () => Cache.test(processManager: FakeProcessManager.any()),
492-
FileSystem: () => MemoryFileSystem.test(),
496+
FileSystem: () => fileSystem,
493497
ProcessManager: () => FakeProcessManager.any(),
494498
},
495499
);
@@ -545,6 +549,24 @@ void main() {
545549
await commandRunner.run(['--help' /* -- verbose omitted (verboseHelp: true) is set above */]);
546550
expect(testLogger.statusText, contains('assemble'));
547551
});
552+
553+
testUsingContext(
554+
'flutter assemble fails if pubspec.yaml is missing',
555+
() async {
556+
final CommandRunner<void> commandRunner = createTestCommandRunner(
557+
AssembleCommand(buildSystem: TestBuildSystem.error(null)),
558+
);
559+
560+
await expectLater(
561+
commandRunner.run(<String>['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']),
562+
throwsToolExit(message: 'No pubspec.yaml file found'),
563+
);
564+
},
565+
overrides: <Type, Generator>{
566+
FileSystem: () => MemoryFileSystem.test(),
567+
ProcessManager: () => FakeProcessManager.any(),
568+
},
569+
);
548570
}
549571

550572
final class _StubCommand extends FlutterCommand {

0 commit comments

Comments
 (0)