@@ -360,6 +360,41 @@ public void downloadOutputs_nestedOutputDirectories_works() throws Exception {
360
360
assertThat (context .isLockOutputFilesCalled ()).isTrue ();
361
361
}
362
362
363
+ @ Test
364
+ public void downloadOutputs_outputDirectoriesWithNestedFile_works () throws Exception {
365
+ // Test that downloading an output directory containing a named output file works.
366
+
367
+ // arrange
368
+ Digest fooDigest = cache .addContents (remoteActionExecutionContext , "foo-contents" );
369
+ Digest barDigest = cache .addContents (remoteActionExecutionContext , "bar-ontents" );
370
+ Tree subdirTreeMessage =
371
+ Tree .newBuilder ()
372
+ .setRoot (
373
+ Directory .newBuilder ()
374
+ .addFiles (FileNode .newBuilder ().setName ("foo" ).setDigest (fooDigest ))
375
+ .addFiles (FileNode .newBuilder ().setName ("bar" ).setDigest (barDigest )))
376
+ .build ();
377
+ Digest subdirTreeDigest =
378
+ cache .addContents (remoteActionExecutionContext , subdirTreeMessage .toByteArray ());
379
+ ActionResult .Builder builder = ActionResult .newBuilder ();
380
+ builder .addOutputFilesBuilder ().setPath ("outputs/subdir/foo" ).setDigest (fooDigest );
381
+ builder .addOutputDirectoriesBuilder ().setPath ("outputs/subdir" ).setTreeDigest (subdirTreeDigest );
382
+ RemoteActionResult result =
383
+ RemoteActionResult .createFromCache (CachedActionResult .remote (builder .build ()));
384
+ Spawn spawn = newSpawnFromResult (result );
385
+ FakeSpawnExecutionContext context = newSpawnExecutionContext (spawn );
386
+ RemoteExecutionService service = newRemoteExecutionService ();
387
+ RemoteAction action = service .buildRemoteAction (spawn , context );
388
+
389
+ // act
390
+ service .downloadOutputs (action , result );
391
+
392
+ // assert
393
+ assertThat (digestUtil .compute (execRoot .getRelative ("outputs/subdir/foo" ))).isEqualTo (fooDigest );
394
+ assertThat (digestUtil .compute (execRoot .getRelative ("outputs/subdir/bar" ))).isEqualTo (barDigest );
395
+ assertThat (context .isLockOutputFilesCalled ()).isTrue ();
396
+ }
397
+
363
398
@ Test
364
399
public void downloadOutputs_outputDirectoriesWithSameHash_works () throws Exception {
365
400
// Test that downloading an output directory works when two Directory
0 commit comments