diff --git a/dev/conductor/README.md b/dev/conductor/README.md index 528b8b5c64d5df0fcb8ebf50992de4863de6f08f..8c9fa10b7aedee065ff09e812e00c41b013f3b1a 100644 --- a/dev/conductor/README.md +++ b/dev/conductor/README.md @@ -39,8 +39,7 @@ Releases are initialized with the `start` sub-command, like: conductor start \ --candidate-branch=flutter-2.2-candidate.10 \ --release-channel=beta \ - --framework-mirror=git@github.com:username/flutter.git \ - --engine-mirror=git@github.com:username/engine.git \ + --github-username=kingOfDevelopers \ --engine-cherrypicks=72114dafe28c8700f1d5d629c6ae9d34172ba395 \ --framework-cherrypicks=a3e66b396746f6581b2b7efd1b0d0f0074215128,d8d853436206e86f416236b930e97779b143a100 \ --dart-revision=4511eb2a779a612d9d6b2012123575013e0aef12 \ diff --git a/dev/conductor/core/lib/src/start.dart b/dev/conductor/core/lib/src/start.dart index ebafaf2533f458ac79484f210d81d956fac1626f..41cb9077d854de9c1963d1ceecf4947aa145990e 100644 --- a/dev/conductor/core/lib/src/start.dart +++ b/dev/conductor/core/lib/src/start.dart @@ -31,6 +31,7 @@ const String kEngineMirrorOption = 'engine-mirror'; const String kReleaseOption = 'release-channel'; const String kStateOption = 'state-file'; const String kVersionOverrideOption = 'version-override'; +const String kGithubUsernameOption = 'github-username'; /// Command to print the status of the current Flutter release. class StartCommand extends Command<void> { @@ -54,7 +55,8 @@ class StartCommand extends Command<void> { argParser.addOption( kFrameworkUpstreamOption, defaultsTo: FrameworkRepository.defaultUpstream, - help: 'Configurable Framework repo upstream remote. Primarily for testing.', + help: + 'Configurable Framework repo upstream remote. Primarily for testing.', hide: true, ); argParser.addOption( @@ -63,14 +65,6 @@ class StartCommand extends Command<void> { help: 'Configurable Engine repo upstream remote. Primarily for testing.', hide: true, ); - argParser.addOption( - kFrameworkMirrorOption, - help: 'Framework repo mirror remote.', - ); - argParser.addOption( - kEngineMirrorOption, - help: 'Engine repo mirror remote.', - ); argParser.addOption( kStateOption, defaultsTo: defaultPath, @@ -98,7 +92,11 @@ class StartCommand extends Command<void> { argParser.addOption( kVersionOverrideOption, help: 'Explicitly set the desired version. This should only be used if ' - 'the version computed by the tool is not correct.', + 'the version computed by the tool is not correct.', + ); + argParser.addOption( + kGithubUsernameOption, + help: 'Github username', ); } @@ -130,21 +128,19 @@ class StartCommand extends Command<void> { argumentResults, platform.environment, )!; - final String frameworkMirror = getValueFromEnvOrArgs( - kFrameworkMirrorOption, + final String githubUsername = getValueFromEnvOrArgs( + kGithubUsernameOption, argumentResults, platform.environment, )!; + final String frameworkMirror = + 'https://github.com/$githubUsername/flutter.git'; final String engineUpstream = getValueFromEnvOrArgs( kEngineUpstreamOption, argumentResults, platform.environment, )!; - final String engineMirror = getValueFromEnvOrArgs( - kEngineMirrorOption, - argumentResults, - platform.environment, - )!; + final String engineMirror = 'https://github.com/$githubUsername/engine.git'; final String candidateBranch = getValueFromEnvOrArgs( kCandidateOption, argumentResults, @@ -177,7 +173,8 @@ class StartCommand extends Command<void> { platform.environment, ); final File stateFile = checkouts.fileSystem.file( - getValueFromEnvOrArgs(kStateOption, argumentResults, platform.environment), + getValueFromEnvOrArgs( + kStateOption, argumentResults, platform.environment), ); final String? versionOverrideString = getValueFromEnvOrArgs( kVersionOverrideOption, @@ -206,6 +203,7 @@ class StartCommand extends Command<void> { stateFile: stateFile, force: force, versionOverride: versionOverride, + githubUsername: githubUsername, ); return context.run(); } @@ -227,34 +225,36 @@ class StartContext extends Context { required this.conductorVersion, required this.processManager, required this.releaseChannel, + required this.githubUsername, required super.checkouts, required super.stateFile, this.force = false, this.versionOverride, - }) : git = Git(processManager), - engine = EngineRepository( - checkouts, - initialRef: 'upstream/$candidateBranch', - upstreamRemote: Remote( - name: RemoteName.upstream, - url: engineUpstream, - ), - mirrorRemote: Remote( - name: RemoteName.mirror, - url: engineMirror, - ), - ), framework = FrameworkRepository( - checkouts, - initialRef: 'upstream/$candidateBranch', - upstreamRemote: Remote( - name: RemoteName.upstream, - url: frameworkUpstream, - ), - mirrorRemote: Remote( - name: RemoteName.mirror, - url: frameworkMirror, - ), - ); + }) : git = Git(processManager), + engine = EngineRepository( + checkouts, + initialRef: 'upstream/$candidateBranch', + upstreamRemote: Remote( + name: RemoteName.upstream, + url: engineUpstream, + ), + mirrorRemote: Remote( + name: RemoteName.mirror, + url: engineMirror, + ), + ), + framework = FrameworkRepository( + checkouts, + initialRef: 'upstream/$candidateBranch', + upstreamRemote: Remote( + name: RemoteName.upstream, + url: frameworkUpstream, + ), + mirrorRemote: Remote( + name: RemoteName.mirror, + url: frameworkMirror, + ), + ); final String candidateBranch; final String? dartRevision; @@ -269,6 +269,7 @@ class StartContext extends Context { final ProcessManager processManager; final String releaseChannel; final Version? versionOverride; + final String githubUsername; /// If validations should be overridden. final bool force; @@ -298,7 +299,8 @@ class StartContext extends Context { Future<void> run() async { if (stateFile.existsSync()) { - throw ConductorException('Error! A persistent state file already found at ${stateFile.path}.\n\n' + throw ConductorException( + 'Error! A persistent state file already found at ${stateFile.path}.\n\n' 'Run `conductor clean` to cancel a previous release.'); } if (!releaseCandidateBranchRegex.hasMatch(candidateBranch)) { @@ -329,10 +331,12 @@ class StartContext extends Context { cherrypicks: engineCherrypickRevisions, upstreamRef: EngineRepository.defaultBranch, releaseRef: candidateBranch, - )).map((String revision) => pb.Cherrypick( - trunkRevision: revision, - state: pb.CherrypickState.PENDING, - )).toList(); + )) + .map((String revision) => pb.Cherrypick( + trunkRevision: revision, + state: pb.CherrypickState.PENDING, + )) + .toList(); for (final pb.Cherrypick cherrypick in engineCherrypicks) { final String revision = cherrypick.trunkRevision; @@ -366,10 +370,12 @@ class StartContext extends Context { cherrypicks: frameworkCherrypickRevisions, upstreamRef: FrameworkRepository.defaultBranch, releaseRef: candidateBranch, - )).map((String revision) => pb.Cherrypick( - trunkRevision: revision, - state: pb.CherrypickState.PENDING, - )).toList(); + )) + .map((String revision) => pb.Cherrypick( + trunkRevision: revision, + state: pb.CherrypickState.PENDING, + )) + .toList(); for (final pb.Cherrypick cherrypick in frameworkCherrypicks) { final String revision = cherrypick.trunkRevision; @@ -399,7 +405,8 @@ class StartContext extends Context { ); final bool atBranchPoint = branchPoint == frameworkHead; - final ReleaseType releaseType = computeReleaseType(lastVersion, atBranchPoint); + final ReleaseType releaseType = + computeReleaseType(lastVersion, atBranchPoint); state.releaseType = releaseType; try { @@ -451,10 +458,10 @@ class StartContext extends Context { switch (releaseType) { case ReleaseType.STABLE_INITIAL: nextVersion = Version( - x: lastVersion.x, - y: lastVersion.y, - z: 0, - type: VersionType.stable, + x: lastVersion.x, + y: lastVersion.y, + z: 0, + type: VersionType.stable, ); break; case ReleaseType.STABLE_HOTFIX: @@ -501,7 +508,8 @@ class StartContext extends Context { throw ConductorException('Aborting command.'); } - stdio.printStatus('Applying the tag $requestedVersion at the branch point $branchPoint'); + stdio.printStatus( + 'Applying the tag $requestedVersion at the branch point $branchPoint'); await framework.tag( branchPoint, @@ -549,10 +557,13 @@ class StartContext extends Context { final List<String> upstreamRevlist = (await repository.revList(<String>[ '--ancestry-path', '$branchPoint..$upstreamRef', - ])).reversed.toList(); + ])) + .reversed + .toList(); stdio.printStatus('upstreamRevList:\n${upstreamRevlist.join('\n')}\n'); - stdio.printStatus('validatedCherrypicks:\n${validatedCherrypicks.join('\n')}\n'); + stdio.printStatus( + 'validatedCherrypicks:\n${validatedCherrypicks.join('\n')}\n'); for (final String upstreamRevision in upstreamRevlist) { if (validatedCherrypicks.contains(upstreamRevision)) { validatedCherrypicks.remove(upstreamRevision); @@ -569,7 +580,10 @@ class StartContext extends Context { 'The following ${repository.name} cherrypicks were not found in the ' 'upstream $upstreamRef branch:', ); - for (final String cp in <String>[...validatedCherrypicks, ...unknownCherrypicks]) { + for (final String cp in <String>[ + ...validatedCherrypicks, + ...unknownCherrypicks + ]) { stdio.printError('\t$cp'); } throw ConductorException( diff --git a/dev/conductor/core/test/start_test.dart b/dev/conductor/core/test/start_test.dart index 0945cbf7640379641d8a2faaa05014ce62e26c29..f347cfb666b1f563006e46aadbdb3b611b94ab03 100644 --- a/dev/conductor/core/test/start_test.dart +++ b/dev/conductor/core/test/start_test.dart @@ -18,11 +18,14 @@ import './common.dart'; void main() { group('start command', () { - const String branchPointRevision = '5131a6e5e0c50b8b7b2906cd58dab8746d6450be'; + const String branchPointRevision = + '5131a6e5e0c50b8b7b2906cd58dab8746d6450be'; const String flutterRoot = '/flutter'; const String checkoutsParentDirectory = '$flutterRoot/dev/tools/'; - const String frameworkMirror = 'https://github.com/user/flutter.git'; - const String engineMirror = 'https://github.com/user/engine.git'; + const String githubUsername = 'user'; + const String frameworkMirror = + 'https://github.com/$githubUsername/flutter.git'; + const String engineMirror = 'https://github.com/$githubUsername/engine.git'; const String candidateBranch = 'flutter-1.2-candidate.3'; const String releaseChannel = 'beta'; const String revision = 'abcd1234'; @@ -86,10 +89,6 @@ void main() { await expectLater( () async => runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -103,24 +102,6 @@ void main() { ); }); - test('throws if --$kFrameworkMirrorOption not provided', () async { - final CommandRunner<void> runner = createRunner( - commands: <FakeCommand>[ - const FakeCommand( - command: <String>['git', 'rev-parse', 'HEAD'], - stdout: revision, - ), - ], - ); - - await expectLater( - () async => runner.run(<String>['start']), - throwsExceptionWith( - 'Expected either the CLI arg --$kFrameworkMirrorOption or the environment variable FRAMEWORK_MIRROR to be provided', - ), - ); - }); - test('throws if provided an invalid --$kVersionOverrideOption', () async { final CommandRunner<void> runner = createRunner(); @@ -132,10 +113,6 @@ void main() { await expectLater( () async => runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -144,6 +121,8 @@ void main() { stateFilePath, '--$kVersionOverrideOption', 'an invalid version string', + '--$kGithubUsernameOption', + githubUsername, ]), throwsExceptionWith('an invalid version string cannot be parsed'), ); @@ -153,8 +132,10 @@ void main() { stdio.stdin.add('y'); // accept prompt from ensureBranchPointTagged() const String revision2 = 'def789'; const String revision3 = '123abc'; - const String previousDartRevision = '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; - const String nextDartRevision = 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; + const String previousDartRevision = + '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; + const String nextDartRevision = + 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; const String previousVersion = '1.2.0-1.0.pre'; // This is what this release will be const String nextVersion = '1.2.0-1.1.pre'; @@ -181,7 +162,8 @@ void main() { onRun: () { // Create the DEPS file which the tool will update engine.createSync(recursive: true); - depsFile.writeAsStringSync(generateMockDeps(previousDartRevision)); + depsFile + .writeAsStringSync(generateMockDeps(previousDartRevision)); }), const FakeCommand( command: <String>['git', 'remote', 'add', 'mirror', engineMirror], @@ -212,7 +194,12 @@ void main() { command: <String>['git', 'add', '--all'], ), const FakeCommand( - command: <String>['git', 'commit', '--message', 'Update Dart SDK to $nextDartRevision'], + command: <String>[ + 'git', + 'commit', + '--message', + 'Update Dart SDK to $nextDartRevision', + ], ), const FakeCommand( command: <String>['git', 'rev-parse', 'HEAD'], @@ -277,12 +264,23 @@ void main() { stdout: revision3, ), const FakeCommand( - command: <String>['git', 'merge-base', 'upstream/$candidateBranch', 'upstream/master'], + command: <String>[ + 'git', + 'merge-base', + 'upstream/$candidateBranch', + 'upstream/master', + ], stdout: branchPointRevision, ), // check if commit is tagged, zero exit code means it is tagged const FakeCommand( - command: <String>['git', 'describe', '--exact-match', '--tags', branchPointRevision], + command: <String>[ + 'git', + 'describe', + '--exact-match', + '--tags', + branchPointRevision, + ], ), ]; @@ -300,10 +298,6 @@ void main() { await runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -312,6 +306,8 @@ void main() { stateFilePath, '--$kDartRevisionOption', nextDartRevision, + '--$kGithubUsernameOption', + githubUsername, ]); final File stateFile = fileSystem.file(stateFilePath); @@ -322,7 +318,10 @@ void main() { ); expect(state.releaseType, ReleaseType.BETA_HOTFIX); - expect(stdio.error, isNot(contains('Tried to tag the branch point, however the target version'))); + expect( + stdio.error, + isNot(contains( + 'Tried to tag the branch point, however the target version'))); expect(processManager, hasNoRemainingExpectations); expect(state.isInitialized(), true); expect(state.releaseChannel, releaseChannel); @@ -333,7 +332,8 @@ void main() { expect(state.engine.upstream.url, 'git@github.com:flutter/engine.git'); expect(state.framework.candidateBranch, candidateBranch); expect(state.framework.startingGitHead, revision3); - expect(state.framework.upstream.url, 'git@github.com:flutter/flutter.git'); + expect( + state.framework.upstream.url, 'git@github.com:flutter/flutter.git'); expect(state.currentPhase, ReleasePhase.APPLY_ENGINE_CHERRYPICKS); expect(state.conductorVersion, conductorVersion); }); @@ -342,8 +342,10 @@ void main() { stdio.stdin.add('y'); // accept prompt from ensureBranchPointTagged() const String revision2 = 'def789'; const String revision3 = '123abc'; - const String previousDartRevision = '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; - const String nextDartRevision = 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; + const String previousDartRevision = + '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; + const String nextDartRevision = + 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; const String previousVersion = '1.2.0-1.0.pre'; const String candidateBranch = 'flutter-1.2-candidate.1'; const String versionOverride = '42.0.0-42.0.pre'; @@ -369,7 +371,8 @@ void main() { onRun: () { // Create the DEPS file which the tool will update engine.createSync(recursive: true); - depsFile.writeAsStringSync(generateMockDeps(previousDartRevision)); + depsFile + .writeAsStringSync(generateMockDeps(previousDartRevision)); }), const FakeCommand( command: <String>['git', 'remote', 'add', 'mirror', engineMirror], @@ -400,7 +403,12 @@ void main() { command: <String>['git', 'add', '--all'], ), const FakeCommand( - command: <String>['git', 'commit', '--message', 'Update Dart SDK to $nextDartRevision'], + command: <String>[ + 'git', + 'commit', + '--message', + 'Update Dart SDK to $nextDartRevision' + ], ), const FakeCommand( command: <String>['git', 'rev-parse', 'HEAD'], @@ -465,7 +473,12 @@ void main() { stdout: revision3, ), const FakeCommand( - command: <String>['git', 'merge-base', 'upstream/$candidateBranch', 'upstream/master'], + command: <String>[ + 'git', + 'merge-base', + 'upstream/$candidateBranch', + 'upstream/master' + ], stdout: branchPointRevision, ), ]; @@ -484,10 +497,6 @@ void main() { await runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -498,6 +507,8 @@ void main() { nextDartRevision, '--$kVersionOverrideOption', versionOverride, + '--$kGithubUsernameOption', + githubUsername, ]); final File stateFile = fileSystem.file(stateFilePath); @@ -511,12 +522,15 @@ void main() { expect(state.releaseVersion, versionOverride); }); - test('logs to STDERR but does not fail on an unexpected candidate branch', () async { + test('logs to STDERR but does not fail on an unexpected candidate branch', + () async { stdio.stdin.add('y'); // accept prompt from ensureBranchPointTagged() const String revision2 = 'def789'; const String revision3 = '123abc'; - const String previousDartRevision = '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; - const String nextDartRevision = 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; + const String previousDartRevision = + '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; + const String nextDartRevision = + 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; // note that this significantly behind the candidate branch name const String previousVersion = '0.9.0-1.0.pre'; // This is what this release will be @@ -543,7 +557,8 @@ void main() { onRun: () { // Create the DEPS file which the tool will update engine.createSync(recursive: true); - depsFile.writeAsStringSync(generateMockDeps(previousDartRevision)); + depsFile + .writeAsStringSync(generateMockDeps(previousDartRevision)); }), const FakeCommand( command: <String>['git', 'remote', 'add', 'mirror', engineMirror], @@ -574,7 +589,12 @@ void main() { command: <String>['git', 'add', '--all'], ), const FakeCommand( - command: <String>['git', 'commit', '--message', 'Update Dart SDK to $nextDartRevision'], + command: <String>[ + 'git', + 'commit', + '--message', + 'Update Dart SDK to $nextDartRevision', + ], ), const FakeCommand( command: <String>['git', 'rev-parse', 'HEAD'], @@ -639,12 +659,23 @@ void main() { stdout: revision3, ), const FakeCommand( - command: <String>['git', 'merge-base', 'upstream/$candidateBranch', 'upstream/master'], + command: <String>[ + 'git', + 'merge-base', + 'upstream/$candidateBranch', + 'upstream/master', + ], stdout: branchPointRevision, ), // check if commit is tagged, 0 exit code means it is tagged const FakeCommand( - command: <String>['git', 'describe', '--exact-match', '--tags', branchPointRevision], + command: <String>[ + 'git', + 'describe', + '--exact-match', + '--tags', + branchPointRevision, + ], ), ]; @@ -662,10 +693,6 @@ void main() { await runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -674,6 +701,8 @@ void main() { stateFilePath, '--$kDartRevisionOption', nextDartRevision, + '--$kGithubUsernameOption', + githubUsername, ]); final File stateFile = fileSystem.file(stateFilePath); @@ -683,7 +712,8 @@ void main() { jsonDecode(stateFile.readAsStringSync()), ); - expect(stdio.error, isNot(contains('Tried to tag the branch point, however'))); + expect(stdio.error, + isNot(contains('Tried to tag the branch point, however'))); expect(processManager, hasNoRemainingExpectations); expect(state.isInitialized(), true); expect(state.releaseChannel, releaseChannel); @@ -694,18 +724,24 @@ void main() { expect(state.engine.upstream.url, 'git@github.com:flutter/engine.git'); expect(state.framework.candidateBranch, candidateBranch); expect(state.framework.startingGitHead, revision3); - expect(state.framework.upstream.url, 'git@github.com:flutter/flutter.git'); + expect( + state.framework.upstream.url, 'git@github.com:flutter/flutter.git'); expect(state.currentPhase, ReleasePhase.APPLY_ENGINE_CHERRYPICKS); expect(state.conductorVersion, conductorVersion); expect(state.releaseType, ReleaseType.BETA_HOTFIX); - expect(stdio.error, contains('Parsed version $previousVersion.42 has a different x value than candidate branch $candidateBranch')); + expect( + stdio.error, + contains( + 'Parsed version $previousVersion.42 has a different x value than candidate branch $candidateBranch')); }); test('can convert from dev style version to stable version', () async { const String revision2 = 'def789'; const String revision3 = '123abc'; - const String previousDartRevision = '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; - const String nextDartRevision = 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; + const String previousDartRevision = + '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; + const String nextDartRevision = + 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; const String previousVersion = '1.2.0-3.0.pre'; const String nextVersion = '1.2.0'; @@ -730,7 +766,8 @@ void main() { onRun: () { // Create the DEPS file which the tool will update engine.createSync(recursive: true); - depsFile.writeAsStringSync(generateMockDeps(previousDartRevision)); + depsFile + .writeAsStringSync(generateMockDeps(previousDartRevision)); }), const FakeCommand( command: <String>['git', 'remote', 'add', 'mirror', engineMirror], @@ -761,7 +798,12 @@ void main() { command: <String>['git', 'add', '--all'], ), const FakeCommand( - command: <String>['git', 'commit', '--message', 'Update Dart SDK to $nextDartRevision'], + command: <String>[ + 'git', + 'commit', + '--message', + 'Update Dart SDK to $nextDartRevision', + ], ), const FakeCommand( command: <String>['git', 'rev-parse', 'HEAD'], @@ -826,12 +868,23 @@ void main() { stdout: revision3, ), const FakeCommand( - command: <String>['git', 'merge-base', 'upstream/$candidateBranch', 'upstream/master'], + command: <String>[ + 'git', + 'merge-base', + 'upstream/$candidateBranch', + 'upstream/master' + ], stdout: branchPointRevision, ), // check if commit is tagged, 0 exit code thus it is tagged const FakeCommand( - command: <String>['git', 'describe', '--exact-match', '--tags', branchPointRevision], + command: <String>[ + 'git', + 'describe', + '--exact-match', + '--tags', + branchPointRevision, + ], ), ]; @@ -849,10 +902,6 @@ void main() { await runner.run(<String>[ 'start', - '--$kFrameworkMirrorOption', - frameworkMirror, - '--$kEngineMirrorOption', - engineMirror, '--$kCandidateOption', candidateBranch, '--$kReleaseOption', @@ -861,6 +910,8 @@ void main() { stateFilePath, '--$kDartRevisionOption', nextDartRevision, + '--$kGithubUsernameOption', + githubUsername, ]); final File stateFile = fileSystem.file(stateFilePath); @@ -883,14 +934,17 @@ void main() { expect(state.conductorVersion, conductorVersion); expect(state.releaseType, ReleaseType.STABLE_INITIAL); }); - - test('StartContext gets engine and framework checkout directories after run', () async { + test( + 'StartContext gets engine and framework checkout directories after run', + () async { stdio.stdin.add('y'); const String revision2 = 'def789'; const String revision3 = '123abc'; const String branchPointRevision = 'deadbeef'; - const String previousDartRevision = '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; - const String nextDartRevision = 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; + const String previousDartRevision = + '171876a4e6cf56ee6da1f97d203926bd7afda7ef'; + const String nextDartRevision = + 'f6c91128be6b77aef8351e1e3a9d07c85bc2e46e'; const String previousVersion = '1.2.0-1.0.pre'; // This is a git tag applied to the branch point, not an actual release const String branchPointTag = '1.2.0-3.0.pre'; @@ -921,7 +975,8 @@ void main() { onRun: () { // Create the DEPS file which the tool will update engine.createSync(recursive: true); - depsFile.writeAsStringSync(generateMockDeps(previousDartRevision)); + depsFile + .writeAsStringSync(generateMockDeps(previousDartRevision)); }), const FakeCommand( command: <String>['git', 'remote', 'add', 'mirror', engineMirror], @@ -952,7 +1007,12 @@ void main() { command: <String>['git', 'add', '--all'], ), const FakeCommand( - command: <String>['git', 'commit', '--message', 'Update Dart SDK to $nextDartRevision'], + command: <String>[ + 'git', + 'commit', + '--message', + 'Update Dart SDK to $nextDartRevision' + ], ), const FakeCommand( command: <String>['git', 'rev-parse', 'HEAD'], @@ -1014,12 +1074,23 @@ void main() { stdout: branchPointRevision, ), const FakeCommand( - command: <String>['git', 'merge-base', 'upstream/$candidateBranch', 'upstream/master'], + command: <String>[ + 'git', + 'merge-base', + 'upstream/$candidateBranch', + 'upstream/master' + ], stdout: branchPointRevision, ), // check if commit is tagged const FakeCommand( - command: <String>['git', 'describe', '--exact-match', '--tags', branchPointRevision], + command: <String>[ + 'git', + 'describe', + '--exact-match', + '--tags', + branchPointRevision + ], // non-zero exit code means branch point is NOT tagged exitCode: 128, ), @@ -1027,7 +1098,12 @@ void main() { command: <String>['git', 'tag', branchPointTag, branchPointRevision], ), const FakeCommand( - command: <String>['git', 'push', FrameworkRepository.defaultUpstream, branchPointTag], + command: <String>[ + 'git', + 'push', + FrameworkRepository.defaultUpstream, + branchPointTag + ], ), ]; @@ -1076,6 +1152,7 @@ void main() { releaseChannel: releaseChannel, processManager: processManager, conductorVersion: conductorVersion, + githubUsername: githubUsername, stateFile: stateFile, ); @@ -1086,8 +1163,10 @@ void main() { jsonDecode(stateFile.readAsStringSync()), ); - expect((await startContext.engine.checkoutDirectory).path, equals(engine.path)); - expect((await startContext.framework.checkoutDirectory).path, equals(framework.path)); + expect((await startContext.engine.checkoutDirectory).path, + equals(engine.path)); + expect((await startContext.framework.checkoutDirectory).path, + equals(framework.path)); expect(state.releaseType, ReleaseType.BETA_INITIAL); expect(processManager, hasNoRemainingExpectations); });