From ecbae3a25e97d47c70a22ec4f2a42d0a504ed7a4 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 7 Jul 2017 18:38:46 +0300 Subject: [PATCH] PY-23344 Incorrect RST autoformat result --- .../com/jetbrains/rest/RestFormatterTest.java | 38 +++++++++++++++++++ .../testData/formatter/directive.rst | 3 ++ .../testData/formatter/directive_after.rst | 3 ++ .../jetbrains/rest/formatter/RestBlock.java | 3 ++ 4 files changed, 47 insertions(+) create mode 100644 python/python-rest/test/com/jetbrains/rest/RestFormatterTest.java create mode 100644 python/python-rest/testData/formatter/directive.rst create mode 100644 python/python-rest/testData/formatter/directive_after.rst diff --git a/python/python-rest/test/com/jetbrains/rest/RestFormatterTest.java b/python/python-rest/test/com/jetbrains/rest/RestFormatterTest.java new file mode 100644 index 000000000000..06438884468c --- /dev/null +++ b/python/python-rest/test/com/jetbrains/rest/RestFormatterTest.java @@ -0,0 +1,38 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * 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 + * + * http://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. + */ +package com.jetbrains.rest; + +import com.intellij.openapi.command.WriteCommandAction; +import com.intellij.psi.PsiFile; +import com.intellij.psi.codeStyle.CodeStyleManager; +import com.jetbrains.rest.fixtures.RestFixtureTestCase; + +public class RestFormatterTest extends RestFixtureTestCase { + + public void testDirective() { + doTest(); + } + + private void doTest() { + myFixture.configureByFile("formatter/" + getTestName(true) + ".rst"); + WriteCommandAction.runWriteCommandAction(null, () -> { + CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(myFixture.getProject()); + PsiFile file = myFixture.getFile(); + codeStyleManager.reformat(file); + }); + myFixture.checkResultByFile("formatter/" + getTestName(true) + "_after.rst"); + } +} diff --git a/python/python-rest/testData/formatter/directive.rst b/python/python-rest/testData/formatter/directive.rst new file mode 100644 index 000000000000..9f993682a9ba --- /dev/null +++ b/python/python-rest/testData/formatter/directive.rst @@ -0,0 +1,3 @@ +.. |Build_Status| image:: https://travis-ci.org/OCHA-DAP/hdx-python-api.svg?branch=master + :alt: Travis-CI Build Status + :target: https://travis-ci.org/OCHA-DAP/hdx-python-api \ No newline at end of file diff --git a/python/python-rest/testData/formatter/directive_after.rst b/python/python-rest/testData/formatter/directive_after.rst new file mode 100644 index 000000000000..9f993682a9ba --- /dev/null +++ b/python/python-rest/testData/formatter/directive_after.rst @@ -0,0 +1,3 @@ +.. |Build_Status| image:: https://travis-ci.org/OCHA-DAP/hdx-python-api.svg?branch=master + :alt: Travis-CI Build Status + :target: https://travis-ci.org/OCHA-DAP/hdx-python-api \ No newline at end of file diff --git a/python/rest/src/com/jetbrains/rest/formatter/RestBlock.java b/python/rest/src/com/jetbrains/rest/formatter/RestBlock.java index aef5519cf95b..bcaf192394ab 100644 --- a/python/rest/src/com/jetbrains/rest/formatter/RestBlock.java +++ b/python/rest/src/com/jetbrains/rest/formatter/RestBlock.java @@ -91,6 +91,9 @@ public class RestBlock implements ASTBlock { childType == RestTokenTypes.LINE) { childIndent = Indent.getNormalIndent(); } + if (parentType == RestElementTypes.DIRECTIVE_BLOCK && childType == RestTokenTypes.FIELD) { + childIndent = Indent.getNormalIndent(); + } return new RestBlock(this, child, childAlignment, childIndent, wrap); }