Build API: Recursive Path Handling

BUG=chromium:959429
TEST=run_tests

Change-Id: I6f6d93f5e31d0166602bd04320549c7c25046bf1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1644218
Tested-by: Alex Klein <saklein@chromium.org>
Reviewed-by: David Burger <dburger@chromium.org>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
diff --git a/api/field_handler_unittest.py b/api/field_handler_unittest.py
index aebea5b..635fcf0 100644
--- a/api/field_handler_unittest.py
+++ b/api/field_handler_unittest.py
@@ -113,6 +113,8 @@
 
     # The file should have been deleted on exit with delete=True.
     self.assertNotExists(new_path)
+    # Make sure it gets reset.
+    self.assertEqual(message.path.path, self.source_file1)
 
   def test_handle_files(self):
     """Test handling of multiple files."""
@@ -133,6 +135,16 @@
     self.assertExists(new_path1)
     self.assertExists(new_path2)
 
+  def test_handle_nested_file(self):
+    """Test the nested path handling."""
+    message = build_api_test_pb2.TestRequestMessage()
+    message.nested_path.path.path = self.source_file1
+    message.nested_path.path.location = common_pb2.Path.OUTSIDE
+
+    with field_handler.handle_paths(message, self.dest_dir):
+      new_path = message.nested_path.path.path
+      self._path_checks(self.source_file1, new_path, self.file1_contents)
+
   def test_handle_directory(self):
     """Test handling of a directory."""
     message = build_api_test_pb2.TestRequestMessage()