From 054ec0075bb5796b82d40fc307854400c76ee9fe Mon Sep 17 00:00:00 2001 From: godofredoc <54371434+godofredoc@users.noreply.github.com> Date: Wed, 29 Apr 2020 14:47:52 -0700 Subject: [PATCH] Add support for core packages. (#140) * Add support for core packages. Tests sometimes fail because they can't find packages from the core images. * Support test files ending in -0.far and .far files. * If packages directory is passed then use pm from the same folder. --- packages/fuchsia_ctl/bin/main.dart | 48 +++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 14 deletions(-) diff --git a/packages/fuchsia_ctl/bin/main.dart b/packages/fuchsia_ctl/bin/main.dart index 9cf8744128..ca50d003d2 100644 --- a/packages/fuchsia_ctl/bin/main.dart +++ b/packages/fuchsia_ctl/bin/main.dart @@ -97,7 +97,8 @@ Future main(List args) async { ..addMultiOption('far', abbr: 'f', help: 'The .far files to include for the test.') ..addOption('timeout-seconds', - defaultsTo: '120', help: 'Test timeout in seconds.'); + defaultsTo: '120', help: 'Test timeout in seconds.') + ..addOption('packages-directory', help: 'amber files directory.'); final ArgResults results = parser.parse(args); @@ -256,26 +257,45 @@ Future test( ArgResults args, ) async { const FileSystem fs = LocalFileSystem(); - final String uuid = Uuid().v4(); final String identityFile = args['identity-file']; - final Directory repo = fs.systemTempDirectory.childDirectory('repo_$uuid'); - final PackageServer server = PackageServer(args['pm-path']); + + //final PackageServer server = PackageServer(args['pm-path']); + PackageServer server; const SshClient ssh = SshClient(); final List farFiles = args['far']; final String target = args['target']; final String arguments = args['arguments']; + Directory repo; + if (args['packages-directory'] == null) { + final String uuid = Uuid().v4(); + repo = fs.systemTempDirectory.childDirectory('repo_$uuid'); + server = PackageServer(args['pm-path']); + } else { + final String amberFilesPath = path.join( + args['packages-directory'], + 'amber-files', + ); + final String pmPath = path.join( + args['packages-directory'], + 'pm', + ); + repo = fs.directory(amberFilesPath); + server = PackageServer(pmPath); + } + try { final String targetIp = await devFinder.getTargetAddress(deviceName); final AmberCtl amberCtl = AmberCtl(targetIp, identityFile); + OperationResult result; stdout.writeln('Using ${repo.path} as repo to serve to $targetIp...'); - repo.createSync(recursive: true); - OperationResult result = await server.newRepo(repo.path); - - if (!result.success) { - stderr.writeln('Failed to create repo at $repo.'); - return result; + if (!repo.existsSync()) { + repo.createSync(recursive: true); + result = await server.newRepo(repo.path); + if (!result.success) { + stderr.writeln('Failed to create repo at $repo.'); + return result; + } } - await server.serveRepo(repo.path, port: 0); await amberCtl.addSrc(server.serverPort); @@ -286,8 +306,8 @@ Future test( stderr.writeln(result.error); return result; } - final String packageName = - fs.file(farFile).basename.replaceFirst('-0.far', ''); + final RegExp r = RegExp(r'\-0.far|.far'); + final String packageName = fs.file(farFile).basename.replaceFirst(r, ''); await amberCtl.addPackage(packageName); } @@ -312,7 +332,7 @@ Future test( return testResult; } finally { // We may not have created the repo if dev finder errored first. - if (repo.existsSync()) { + if (repo.existsSync() && args['packages-directory'] != null) { repo.deleteSync(recursive: true); } if (server.serving) {