aboutsummaryrefslogtreecommitdiff
path: root/yapftests/style_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'yapftests/style_test.py')
-rw-r--r--yapftests/style_test.py174
1 files changed, 105 insertions, 69 deletions
diff --git a/yapftests/style_test.py b/yapftests/style_test.py
index 7f4a465..8a37f95 100644
--- a/yapftests/style_test.py
+++ b/yapftests/style_test.py
@@ -14,6 +14,7 @@
# limitations under the License.
"""Tests for yapf.style."""
+import os
import shutil
import tempfile
import textwrap
@@ -22,19 +23,31 @@ import unittest
from yapf.yapflib import style
from yapftests import utils
+from yapftests import yapf_test_helper
-class UtilsTest(unittest.TestCase):
+class UtilsTest(yapf_test_helper.YAPFTest):
def testContinuationAlignStyleStringConverter(self):
- self.assertEqual(style._ContinuationAlignStyleStringConverter(''), 'SPACE')
- self.assertEqual(
- style._ContinuationAlignStyleStringConverter('space'), 'SPACE')
- self.assertEqual(
- style._ContinuationAlignStyleStringConverter('fixed'), 'FIXED')
- self.assertEqual(
- style._ContinuationAlignStyleStringConverter('valign-right'),
- 'VALIGN-RIGHT')
+ for cont_align_space in ('', 'space', '"space"', '\'space\''):
+ self.assertEqual(
+ style._ContinuationAlignStyleStringConverter(cont_align_space),
+ 'SPACE')
+ for cont_align_fixed in ('fixed', '"fixed"', '\'fixed\''):
+ self.assertEqual(
+ style._ContinuationAlignStyleStringConverter(cont_align_fixed),
+ 'FIXED')
+ for cont_align_valignright in (
+ 'valign-right',
+ '"valign-right"',
+ '\'valign-right\'',
+ 'valign_right',
+ '"valign_right"',
+ '\'valign_right\'',
+ ):
+ self.assertEqual(
+ style._ContinuationAlignStyleStringConverter(cont_align_valignright),
+ 'VALIGN-RIGHT')
with self.assertRaises(ValueError) as ctx:
style._ContinuationAlignStyleStringConverter('blahblah')
self.assertIn("unknown continuation align style: 'blahblah'",
@@ -53,30 +66,36 @@ class UtilsTest(unittest.TestCase):
self.assertEqual(style._BoolConverter('false'), False)
self.assertEqual(style._BoolConverter('0'), False)
+ def testIntListConverter(self):
+ self.assertEqual(style._IntListConverter('1, 2, 3'), [1, 2, 3])
+ self.assertEqual(style._IntListConverter('[ 1, 2, 3 ]'), [1, 2, 3])
+ self.assertEqual(style._IntListConverter('[ 1, 2, 3, ]'), [1, 2, 3])
-def _LooksLikeChromiumStyle(cfg):
- return (cfg['INDENT_WIDTH'] == 2 and
- cfg['BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF'])
+ def testIntOrIntListConverter(self):
+ self.assertEqual(style._IntOrIntListConverter('10'), 10)
+ self.assertEqual(style._IntOrIntListConverter('1, 2, 3'), [1, 2, 3])
def _LooksLikeGoogleStyle(cfg):
- return (cfg['INDENT_WIDTH'] == 4 and
- cfg['BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF'])
+ return cfg['COLUMN_LIMIT'] == 80 and cfg['SPLIT_COMPLEX_COMPREHENSION']
def _LooksLikePEP8Style(cfg):
- return (cfg['INDENT_WIDTH'] == 4 and
- not cfg['BLANK_LINE_BEFORE_NESTED_CLASS_OR_DEF'])
+ return cfg['COLUMN_LIMIT'] == 79
def _LooksLikeFacebookStyle(cfg):
- return cfg['INDENT_WIDTH'] == 4 and cfg['DEDENT_CLOSING_BRACKETS']
+ return cfg['DEDENT_CLOSING_BRACKETS']
+
+def _LooksLikeYapfStyle(cfg):
+ return cfg['SPLIT_BEFORE_DOT']
-class PredefinedStylesByNameTest(unittest.TestCase):
+
+class PredefinedStylesByNameTest(yapf_test_helper.YAPFTest):
@classmethod
- def setUpClass(cls):
+ def setUpClass(cls): # pylint: disable=g-missing-super-call
style.SetGlobalStyle(style.CreatePEP8Style())
def testDefault(self):
@@ -94,10 +113,10 @@ class PredefinedStylesByNameTest(unittest.TestCase):
cfg = style.CreateStyleFromConfig(google_name)
self.assertTrue(_LooksLikeGoogleStyle(cfg))
- def testChromiumByName(self):
- for chromium_name in ('chromium', 'Chromium', 'CHROMIUM'):
- cfg = style.CreateStyleFromConfig(chromium_name)
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ def testYapfByName(self):
+ for yapf_name in ('yapf', 'YAPF'):
+ cfg = style.CreateStyleFromConfig(yapf_name)
+ self.assertTrue(_LooksLikeYapfStyle(cfg))
def testFacebookByName(self):
for fb_name in ('facebook', 'FACEBOOK', 'Facebook'):
@@ -105,15 +124,15 @@ class PredefinedStylesByNameTest(unittest.TestCase):
self.assertTrue(_LooksLikeFacebookStyle(cfg))
-class StyleFromFileTest(unittest.TestCase):
+class StyleFromFileTest(yapf_test_helper.YAPFTest):
@classmethod
- def setUpClass(cls):
+ def setUpClass(cls): # pylint: disable=g-missing-super-call
cls.test_tmpdir = tempfile.mkdtemp()
style.SetGlobalStyle(style.CreatePEP8Style())
@classmethod
- def tearDownClass(cls):
+ def tearDownClass(cls): # pylint: disable=g-missing-super-call
shutil.rmtree(cls.test_tmpdir)
def testDefaultBasedOnStyle(self):
@@ -137,17 +156,6 @@ class StyleFromFileTest(unittest.TestCase):
self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['CONTINUATION_INDENT_WIDTH'], 40)
- def testDefaultBasedOnChromiumStyle(self):
- cfg = textwrap.dedent(u'''\
- [style]
- based_on_style = chromium
- continuation_indent_width = 30
- ''')
- with utils.TempFileContents(self.test_tmpdir, cfg) as filepath:
- cfg = style.CreateStyleFromConfig(filepath)
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
- self.assertEqual(cfg['CONTINUATION_INDENT_WIDTH'], 30)
-
def testDefaultBasedOnGoogleStyle(self):
cfg = textwrap.dedent(u'''\
[style]
@@ -173,30 +181,30 @@ class StyleFromFileTest(unittest.TestCase):
def testBoolOptionValue(self):
cfg = textwrap.dedent(u'''\
[style]
- based_on_style = chromium
+ based_on_style = pep8
SPLIT_BEFORE_NAMED_ASSIGNS=False
split_before_logical_operator = true
''')
with utils.TempFileContents(self.test_tmpdir, cfg) as filepath:
cfg = style.CreateStyleFromConfig(filepath)
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['SPLIT_BEFORE_NAMED_ASSIGNS'], False)
self.assertEqual(cfg['SPLIT_BEFORE_LOGICAL_OPERATOR'], True)
def testStringListOptionValue(self):
cfg = textwrap.dedent(u'''\
[style]
- based_on_style = chromium
+ based_on_style = pep8
I18N_FUNCTION_CALL = N_, V_, T_
''')
with utils.TempFileContents(self.test_tmpdir, cfg) as filepath:
cfg = style.CreateStyleFromConfig(filepath)
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['I18N_FUNCTION_CALL'], ['N_', 'V_', 'T_'])
def testErrorNoStyleFile(self):
- with self.assertRaisesRegexp(style.StyleConfigError,
- 'is not a valid style or file path'):
+ with self.assertRaisesRegex(style.StyleConfigError,
+ 'is not a valid style or file path'):
style.CreateStyleFromConfig('/8822/xyznosuchfile')
def testErrorNoStyleSection(self):
@@ -205,8 +213,8 @@ class StyleFromFileTest(unittest.TestCase):
indent_width=2
''')
with utils.TempFileContents(self.test_tmpdir, cfg) as filepath:
- with self.assertRaisesRegexp(style.StyleConfigError,
- 'Unable to find section'):
+ with self.assertRaisesRegex(style.StyleConfigError,
+ 'Unable to find section'):
style.CreateStyleFromConfig(filepath)
def testErrorUnknownStyleOption(self):
@@ -216,15 +224,45 @@ class StyleFromFileTest(unittest.TestCase):
hummus=2
''')
with utils.TempFileContents(self.test_tmpdir, cfg) as filepath:
- with self.assertRaisesRegexp(style.StyleConfigError,
- 'Unknown style option'):
+ with self.assertRaisesRegex(style.StyleConfigError,
+ 'Unknown style option'):
style.CreateStyleFromConfig(filepath)
+ def testPyprojectTomlNoYapfSection(self):
+ try:
+ import toml
+ except ImportError:
+ return
-class StyleFromDict(unittest.TestCase):
+ filepath = os.path.join(self.test_tmpdir, 'pyproject.toml')
+ _ = open(filepath, 'w')
+ with self.assertRaisesRegex(style.StyleConfigError,
+ 'Unable to find section'):
+ style.CreateStyleFromConfig(filepath)
+
+ def testPyprojectTomlParseYapfSection(self):
+ try:
+ import toml
+ except ImportError:
+ return
+
+ cfg = textwrap.dedent(u'''\
+ [tool.yapf]
+ based_on_style = "pep8"
+ continuation_indent_width = 40
+ ''')
+ filepath = os.path.join(self.test_tmpdir, 'pyproject.toml')
+ with open(filepath, 'w') as f:
+ f.write(cfg)
+ cfg = style.CreateStyleFromConfig(filepath)
+ self.assertTrue(_LooksLikePEP8Style(cfg))
+ self.assertEqual(cfg['CONTINUATION_INDENT_WIDTH'], 40)
+
+
+class StyleFromDict(yapf_test_helper.YAPFTest):
@classmethod
- def setUpClass(cls):
+ def setUpClass(cls): # pylint: disable=g-missing-super-call
style.SetGlobalStyle(style.CreatePEP8Style())
def testDefaultBasedOnStyle(self):
@@ -234,22 +272,22 @@ class StyleFromDict(unittest.TestCase):
'blank_line_before_nested_class_or_def': True
}
cfg = style.CreateStyleFromConfig(config_dict)
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['INDENT_WIDTH'], 2)
def testDefaultBasedOnStyleBadDict(self):
- self.assertRaisesRegexp(style.StyleConfigError, 'Unknown style option',
- style.CreateStyleFromConfig,
- {'based_on_styl': 'pep8'})
- self.assertRaisesRegexp(style.StyleConfigError, 'not a valid',
- style.CreateStyleFromConfig,
- {'INDENT_WIDTH': 'FOUR'})
+ self.assertRaisesRegex(style.StyleConfigError, 'Unknown style option',
+ style.CreateStyleFromConfig,
+ {'based_on_styl': 'pep8'})
+ self.assertRaisesRegex(style.StyleConfigError, 'not a valid',
+ style.CreateStyleFromConfig,
+ {'INDENT_WIDTH': 'FOUR'})
-class StyleFromCommandLine(unittest.TestCase):
+class StyleFromCommandLine(yapf_test_helper.YAPFTest):
@classmethod
- def setUpClass(cls):
+ def setUpClass(cls): # pylint: disable=g-missing-super-call
style.SetGlobalStyle(style.CreatePEP8Style())
def testDefaultBasedOnStyle(self):
@@ -257,7 +295,7 @@ class StyleFromCommandLine(unittest.TestCase):
'{based_on_style: pep8,'
' indent_width: 2,'
' blank_line_before_nested_class_or_def: True}')
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['INDENT_WIDTH'], 2)
def testDefaultBasedOnStyleNotStrict(self):
@@ -265,7 +303,7 @@ class StyleFromCommandLine(unittest.TestCase):
'{based_on_style : pep8'
' ,indent_width=2'
' blank_line_before_nested_class_or_def:True}')
- self.assertTrue(_LooksLikeChromiumStyle(cfg))
+ self.assertTrue(_LooksLikePEP8Style(cfg))
self.assertEqual(cfg['INDENT_WIDTH'], 2)
def testDefaultBasedOnExplicitlyUnicodeTypeString(self):
@@ -277,17 +315,15 @@ class StyleFromCommandLine(unittest.TestCase):
self.assertIsInstance(cfg, dict)
def testDefaultBasedOnStyleBadString(self):
- self.assertRaisesRegexp(style.StyleConfigError, 'Unknown style option',
- style.CreateStyleFromConfig,
- '{based_on_styl: pep8}')
- self.assertRaisesRegexp(style.StyleConfigError, 'not a valid',
- style.CreateStyleFromConfig, '{INDENT_WIDTH: FOUR}')
- self.assertRaisesRegexp(style.StyleConfigError, 'Invalid style dict',
- style.CreateStyleFromConfig,
- '{based_on_style: pep8')
+ self.assertRaisesRegex(style.StyleConfigError, 'Unknown style option',
+ style.CreateStyleFromConfig, '{based_on_styl: pep8}')
+ self.assertRaisesRegex(style.StyleConfigError, 'not a valid',
+ style.CreateStyleFromConfig, '{INDENT_WIDTH: FOUR}')
+ self.assertRaisesRegex(style.StyleConfigError, 'Invalid style dict',
+ style.CreateStyleFromConfig, '{based_on_style: pep8')
-class StyleHelp(unittest.TestCase):
+class StyleHelp(yapf_test_helper.YAPFTest):
def testHelpKeys(self):
settings = sorted(style.Help())