Inconsistent formatting depending on platform: comment above list item moved below it on Windows
- Dominant language
- Go
- Stars
- 1.8k
- Forks
- 75
- PR merge metrics
- No merged PRs in 30d
Description
Hi,
thanks for the great library. :heart:
I found an inconsistency between a run on Ubuntu 22.04 and Windows 11.
I run `yamlfmt` via pre-commit. In a second step I tried to pin the go-lang version by adding `language_version: 1.22.5` to the hook definition.
`.pre-commit-config.yaml`
**`.pre-commit-config.yaml`**
```yaml
️️️ - repo: https://github.com/google/yamlfmt
rev: 5607b62b215d44fe90ca71a5329efff63a1a0d18 # frozen: v0.13.0
hooks:
- id: yamlfmt
language_version: 1.22.5
```
Originally I was using those formatter arguments, but removed them for the output file below.
```yaml
args:
- -formatter
- retain_line_breaks_single=true
- -formatter
- pad_line_comments=2 # two spaces before # comments, like in python
- -formatter
- scan_folded_as_literal=true # so > blocks will not get collapsed
```
️️️
**Diff**
```diff
diff --git a/demo_yamlfmt_comment_swap.yaml b/demo_yamlfmt_comment_swap.yaml
index d042395..ba164a5 100644
--- a/demo_yamlfmt_comment_swap.yaml
+++ b/demo_yamlfmt_comment_swap.yaml
@@ -3,8 +3,8 @@ some_gitlab_ci_job:
# when $TAG_LATEST_COMMIT_SOURCE_BRANCH is defined and matches $CI_COMMIT_BRANCH -> add job
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH != null && $TAG_LATEST_COMMIT_SOURCE_BRANCH==$CI_COMMIT_BRANCH
when: always
- # when $TAG_LATEST_COMMIT_SOURCE_BRANCH is not defined, and we run on $CI_DEFAULT_BRANCH -> add job
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH == null && $CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH
+ # when $TAG_LATEST_COMMIT_SOURCE_BRANCH is not defined, and we run on $CI_DEFAULT_BRANCH -> add job
when: always
- # demo comment above when:never
- when: never # do not run otherwise
+ # demo comment above when:never
```
Before: demo_yamlfmt_comment_swap.yaml
️️️
**Input file**
```yaml
some_gitlab_ci_job:
rules:
# when $TAG_LATEST_COMMIT_SOURCE_BRANCH is defined and matches $CI_COMMIT_BRANCH -> add job
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH != null && $TAG_LATEST_COMMIT_SOURCE_BRANCH==$CI_COMMIT_BRANCH
when: always
# when $TAG_LATEST_COMMIT_SOURCE_BRANCH is not defined, and we run on $CI_DEFAULT_BRANCH -> add job
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH == null && $CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH
when: always
# demo comment above when:never
- when: never # do not run otherwise
```
️️️
After: demo_yamlfmt_comment_swap.yaml
️️️
**Output file**
```yaml
some_gitlab_ci_job:
rules:
# when $TAG_LATEST_COMMIT_SOURCE_BRANCH is defined and matches $CI_COMMIT_BRANCH -> add job
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH != null && $TAG_LATEST_COMMIT_SOURCE_BRANCH==$CI_COMMIT_BRANCH
when: always
- if: $TAG_LATEST_COMMIT_SOURCE_BRANCH == null && $CI_DEFAULT_BRANCH == $CI_COMMIT_BRANCH
# when $TAG_LATEST_COMMIT_SOURCE_BRANCH is not defined, and we run on $CI_DEFAULT_BRANCH -> add job
when: always
- when: never # do not run otherwise
# demo comment above when:never
```
️️️
The same file passes yamlfmt on linux in both versions.
Is there some workaround to have the same behavior cross platform?
Contributor guide
Assessment
This issue has not been assessed yet.