# Copyright 2023 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. """Tests for pw_module.seed.""" from pathlib import Path import tempfile import unittest from pw_module import seed _SAMPLE_REGISTRY_FILE = ''' import("//build_overrides/pigweed.gni") import("seed.gni") pw_seed("0001") { sources = [ "0001.rst" ] inputs = [ "0001/seed-index-gerrit.png" ] title = "The SEED Process" status = "Meta" author = "The Pigweed Authors" facilitator = "N/A" } pw_seed("0002") { sources = [ "0002.rst" ] title = "SEED Template" status = "Meta" author = "The Pigweed Authors" facilitator = "N/A" } pw_seed_index("seeds") { index_file = "0000.rst" seeds = [ ":0001", ":0002", ] } ''' _SAMPLE_REGISTRY_FILE_WITH_ADDED_SEED = ''' import("//build_overrides/pigweed.gni") import("seed.gni") pw_seed("0001") { sources = [ "0001.rst" ] inputs = [ "0001/seed-index-gerrit.png" ] title = "The SEED Process" status = "Meta" author = "The Pigweed Authors" facilitator = "N/A" } pw_seed("0002") { sources = [ "0002.rst" ] title = "SEED Template" status = "Meta" author = "The Pigweed Authors" facilitator = "N/A" } pw_seed("0200") { title = "a title" author = "an author" status = "Draft" changelist = 111111 } pw_seed_index("seeds") { index_file = "0000.rst" seeds = [ ":0001", ":0002", ":0200", ] } ''' class TestSeedMetadata(unittest.TestCase): """Tests for SeedMetadata.""" def test_default_filename_basic(self): meta = seed.SeedMetadata( number=789, title='Simple Title 2', authors='', status=seed.SeedStatus.DRAFT, ) self.assertEqual(meta.default_filename(), '0789.rst') def test_default_filename_special_characters(self): meta = seed.SeedMetadata( number=9876, title="pw_some_module: Pigweed's newest module", authors='', status=seed.SeedStatus.DRAFT, ) self.assertEqual( meta.default_filename(), '9876.rst', ) class TestSeedRegistry(unittest.TestCase): """Tests for SEED registry modifications.""" def setUp(self): self._dir = tempfile.TemporaryDirectory() root = Path(self._dir.name) self._build_file = root / 'seed' / 'BUILD.gn' self._build_file.parent.mkdir() self._build_file.write_text(_SAMPLE_REGISTRY_FILE) self._registry = seed.SeedRegistry.parse(self._build_file) def tearDown(self): self._dir.cleanup() def test_basic_parsing(self): self.assertEqual(self._registry.seed_count(), 2) def test_insert_seed(self): meta = seed.SeedMetadata( number=200, title='a title', authors='an author', status=seed.SeedStatus.DRAFT, changelist=111111, ) self._registry.insert(meta) self._registry.write() self.assertEqual( self._build_file.read_text(), _SAMPLE_REGISTRY_FILE_WITH_ADDED_SEED, ) if __name__ == '__main__': unittest.main()