Files
carbon-lang/proposals/scripts/new_proposal_test.py
T
Jon Meow cc4211442f Merge carbon-project-tools back into carbon-lang (#203)
As proposed at https://forums.carbon-lang.dev/t/merged-repo-structure/174:

- carbon-lang:/src/jekyll -> carbon-lang:/website/jekyll
- carbon-lang:/src/scripts -> carbon-lang:/proposals/scripts
- carbon-project-tools:/firebase -> carbon-lang:/website/firebase
- carbon-project-tools:/github -> carbon-lang:/github
2020-12-02 09:53:14 -08:00

69 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""Tests for new_proposal.py."""
__copyright__ = """
Part of the Carbon Language project, under the Apache License v2.0 with LLVM
Exceptions. See /LICENSE for license information.
SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
"""
import os
import unittest
from unittest import mock
import new_proposal
class FakeExitError(Exception):
pass
def _fake_exit(message):
raise FakeExitError(message)
class TestNewProposal(unittest.TestCase):
def test_calculate_branch_short(self):
parsed_args = new_proposal._parse_args(["foo bar"])
self.assertEqual(
new_proposal._calculate_branch(parsed_args), "proposal-foo-bar"
)
def test_calculate_branch_long(self):
parsed_args = new_proposal._parse_args(
["A really long long long title"]
)
self.assertEqual(
new_proposal._calculate_branch(parsed_args),
"proposal-a-really-long-long-l",
)
def test_calculate_branch_flag(self):
parsed_args = new_proposal._parse_args(["--branch=wiz", "foo"])
self.assertEqual(new_proposal._calculate_branch(parsed_args), "wiz")
def test_fill_template(self):
content = new_proposal._fill_template(
os.path.join(new_proposal._get_proposals_dir(), "template.md"),
"TITLE",
123,
)
self.assertTrue(content.startswith("# TITLE\n\n"), content)
self.assertTrue(
"[Pull request](https://github.com/carbon-language/carbon-lang/"
"pull/123)" in content,
content,
)
def test_run_success(self):
new_proposal._run(["true"])
def test_run_failure(self):
with mock.patch("new_proposal._exit", side_effect=_fake_exit):
self.assertRaises(FakeExitError, new_proposal._run, ["false"])
if __name__ == "__main__":
unittest.main()