Have checker.py read config pbs in program and project repos.

- Also move to discussed layout, with top-level payload_utils
package.

BUG=chromium:1051187
TEST=generate.sh
TEST=python unittests
TEST=checker.py --program=../program/volteer\
--project=../project/volteer/volteer

Change-Id: I38976fc743c9695356e4d81f986021fe87842a2b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/2051089
Commit-Queue: Andrew Lamb <andrewlamb@chromium.org>
Tested-by: Andrew Lamb <andrewlamb@chromium.org>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
diff --git a/payload_utils/checker/io_utils_test.py b/payload_utils/checker/io_utils_test.py
new file mode 100644
index 0000000..00bedd3
--- /dev/null
+++ b/payload_utils/checker/io_utils_test.py
@@ -0,0 +1,33 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+"""Tests for io_utils."""
+
+import os
+import tempfile
+import unittest
+
+from checker import io_utils
+
+from bindings.src.config.api.config_bundle_pb2 import ConfigBundle
+from bindings.src.config.api.program_pb2 import ProgramList, Program
+
+
+class IoUtilsTest(unittest.TestCase):
+  """Tests for io_utils."""
+
+  def setUp(self):
+    self.config = ConfigBundle(
+        programs=ProgramList(value=[Program(name='TestProgram1')]))
+    self.repo_path = tempfile.mkdtemp()
+
+    os.mkdir(os.path.join(self.repo_path, 'generated'))
+
+    with open(
+        os.path.join(self.repo_path, 'generated', 'config.binaryproto'),
+        'wb') as f:
+      f.write(self.config.SerializeToString())
+
+  def test_read_repo_config(self):
+    """Tests the binary proto can be read."""
+    self.assertEqual(io_utils.read_repo_config(self.repo_path), self.config)