| # Copyright 2026 The Fuchsia Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file. | |
| import os | |
| import sys | |
| import tempfile | |
| import unittest | |
| from pathlib import Path | |
| # Add tools/devshell/worktree to sys.path | |
| worktree_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| sys.path.insert(0, worktree_dir) | |
| from build_dir import BuildDir, BuildStatus | |
| class TestBuildDir(unittest.TestCase): | |
| def setUp(self) -> None: | |
| self.temp_dir = tempfile.TemporaryDirectory() | |
| self.wt_root = Path(self.temp_dir.name) | |
| self.build_path = self.wt_root / "out" / "default" | |
| self.build_path.mkdir(parents=True, exist_ok=True) | |
| self.bd = BuildDir(self.build_path) | |
| def tearDown(self) -> None: | |
| self.temp_dir.cleanup() | |
| def test_backup_and_restore(self) -> None: | |
| args_gn = self.build_path / "args.gn" | |
| args_gn_ref = self.build_path / "args.gn.ref" | |
| args_gn.write_text('key = "value"\n') | |
| self.bd.backup_args() | |
| self.assertTrue(args_gn_ref.exists()) | |
| self.assertEqual(args_gn_ref.read_text(), 'key = "value"\n') | |
| args_gn.write_text('key = "new_value"\n') | |
| self.bd.restore_args() | |
| self.assertFalse(args_gn_ref.exists()) | |
| self.assertEqual(args_gn.read_text(), 'key = "value"\n') | |
| def test_get_status(self) -> None: | |
| self.assertEqual(self.bd.get_build_status(), BuildStatus.NOT_CONFIGURED) | |
| args_gn = self.build_path / "args.gn" | |
| args_gn.write_text("") | |
| self.assertEqual(self.bd.get_build_status(), BuildStatus.CONFIGURED) | |
| if __name__ == "__main__": | |
| unittest.main() |