aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMohsin Kaleem <mohkale@kisara.moe>2023-04-22 11:41:37 +0100
committerGitHub <noreply@github.com>2023-04-22 11:41:37 +0100
commit568862dc844217a2eb1fec763d4f70f9db59555a (patch)
tree9567a5d8299d6f2eadf08336312e8918c6cd3556 /test
parent5cb7156ef5d5e09d1a5c9a8dd157a62566f6aece (diff)
Add cmake-format formatter (#172)
Diffstat (limited to 'test')
-rw-r--r--test/formatters/installers/cmake-format.bash2
-rw-r--r--test/formatters/samplecode/cmake-format/in.cmake97
-rw-r--r--test/formatters/samplecode/cmake-format/out.cmake113
3 files changed, 212 insertions, 0 deletions
diff --git a/test/formatters/installers/cmake-format.bash b/test/formatters/installers/cmake-format.bash
new file mode 100644
index 0000000..7af9c25
--- /dev/null
+++ b/test/formatters/installers/cmake-format.bash
@@ -0,0 +1,2 @@
+apt-get install -y python3-pip
+pip3 install cmakelang
diff --git a/test/formatters/samplecode/cmake-format/in.cmake b/test/formatters/samplecode/cmake-format/in.cmake
new file mode 100644
index 0000000..4335468
--- /dev/null
+++ b/test/formatters/samplecode/cmake-format/in.cmake
@@ -0,0 +1,97 @@
+# The following multiple newlines should be collapsed into a single newline
+
+
+
+
+cmake_minimum_required(VERSION 2.8.11)
+project(cmakelang_test)
+
+# This multiline-comment should be reflowed
+# into a single comment
+# on one line
+
+# This comment should remain right before the command call.
+# Furthermore, the command call should be formatted
+# to a single line.
+add_subdirectories(foo bar baz
+ foo2 bar2 baz2)
+
+# This very long command should be wrapped
+set(HEADERS very_long_header_name_a.h very_long_header_name_b.h very_long_header_name_c.h)
+
+# This command should be split into one line per entry because it has a long argument list.
+set(SOURCES source_a.cc source_b.cc source_d.cc source_e.cc source_f.cc source_g.cc source_h.cc)
+
+# The string in this command should not be split
+set_target_properties(foo bar baz PROPERTIES COMPILE_FLAGS "-std=c++11 -Wall -Wextra")
+
+# This command has a very long argument and can't be aligned with the command
+# end, so it should be moved to a new line with block indent + 1.
+some_long_command_name("Some very long argument that really needs to be on the next line.")
+
+# This situation is similar but the argument to a KWARG needs to be on a
+# newline instead.
+set(CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wno-sign-compare -Wno-unused-parameter -xx")
+
+set(HEADERS header_a.h header_b.h # This comment should
+ # be preserved, moreover it should be split
+ # across two lines.
+ header_c.h header_d.h)
+
+
+# This part of the comment should
+# be formatted
+# but...
+# cmake-format: off
+# This bunny should remain untouched:
+# .   _ ∩
+#   レヘヽ| |
+#     (・x・)
+#    c( uu}
+# cmake-format: on
+# while this part should
+# be formatted again
+
+# This is a paragraph
+#
+# This is a second paragraph
+#
+# This is a third paragraph
+
+# This is a comment
+# that should be joined
+
+if(foo)
+if(sbar)
+# This comment is in-scope.
+add_library(foo_bar_baz foo.cc bar.cc # this is a comment for arg2
+ # this is more comment for arg2, it should be joined with the first.
+ baz.cc) # This comment is part of add_library
+
+other_command(some_long_argument some_long_argument) # this comment is very long and gets split across some lines
+
+other_command(some_long_argument some_long_argument some_long_argument) # this comment is even longer and wouldn't make sense to pack at the end of the command so it gets it's own lines
+endif()
+endif()
+
+
+# This very long command should be broken up along keyword arguments
+foo(nonkwarg_a nonkwarg_b HEADERS a.h b.h c.h d.h e.h f.h SOURCES a.cc b.cc d.cc DEPENDS foo bar baz)
+
+# This command uses a string with escaped quote chars
+foo(some_arg some_arg "This is a \"string\" within a string")
+
+# This command uses an empty string
+foo(some_arg some_arg "")
+
+# This command uses a multiline string
+foo(some_arg some_arg "
+ This string is on multiple lines
+")
+
+# No, I really want this to look ugly
+# cmake-format: off
+add_library(a b.cc
+ c.cc d.cc
+ e.cc)
+# cmake-format: on
diff --git a/test/formatters/samplecode/cmake-format/out.cmake b/test/formatters/samplecode/cmake-format/out.cmake
new file mode 100644
index 0000000..7c1c352
--- /dev/null
+++ b/test/formatters/samplecode/cmake-format/out.cmake
@@ -0,0 +1,113 @@
+# The following multiple newlines should be collapsed into a single newline
+
+cmake_minimum_required(VERSION 2.8.11)
+project(cmakelang_test)
+
+# This multiline-comment should be reflowed into a single comment on one line
+
+# This comment should remain right before the command call. Furthermore, the
+# command call should be formatted to a single line.
+add_subdirectories(foo bar baz foo2 bar2 baz2)
+
+# This very long command should be wrapped
+set(HEADERS very_long_header_name_a.h very_long_header_name_b.h
+ very_long_header_name_c.h)
+
+# This command should be split into one line per entry because it has a long
+# argument list.
+set(SOURCES
+ source_a.cc
+ source_b.cc
+ source_d.cc
+ source_e.cc
+ source_f.cc
+ source_g.cc
+ source_h.cc)
+
+# The string in this command should not be split
+set_target_properties(foo bar baz PROPERTIES COMPILE_FLAGS
+ "-std=c++11 -Wall -Wextra")
+
+# This command has a very long argument and can't be aligned with the command
+# end, so it should be moved to a new line with block indent + 1.
+some_long_command_name(
+ "Some very long argument that really needs to be on the next line.")
+
+# This situation is similar but the argument to a KWARG needs to be on a newline
+# instead.
+set(CMAKE_CXX_FLAGS
+ "-std=c++11 -Wall -Wno-sign-compare -Wno-unused-parameter -xx")
+
+set(HEADERS
+ header_a.h header_b.h # This comment should be preserved, moreover it should
+ # be split across two lines.
+ header_c.h header_d.h)
+
+# This part of the comment should be formatted but...
+# cmake-format: off
+# This bunny should remain untouched:
+# .   _ ∩
+#   レヘヽ| |
+#     (・x・)
+#    c( uu}
+# cmake-format: on
+# while this part should be formatted again
+
+# This is a paragraph
+#
+# This is a second paragraph
+#
+# This is a third paragraph
+
+# This is a comment that should be joined
+
+if(foo)
+ if(sbar)
+ # This comment is in-scope.
+ add_library(
+ foo_bar_baz
+ foo.cc bar.cc # this is a comment for arg2 this is more comment for arg2,
+ # it should be joined with the first.
+ baz.cc) # This comment is part of add_library
+
+ other_command(
+ some_long_argument some_long_argument) # this comment is very long and
+ # gets split across some lines
+
+ other_command(
+ some_long_argument some_long_argument some_long_argument) # this comment
+ # is even longer
+ # and wouldn't
+ # make sense to
+ # pack at the
+ # end of the
+ # command so it
+ # gets it's own
+ # lines
+ endif()
+endif()
+
+# This very long command should be broken up along keyword arguments
+foo(nonkwarg_a nonkwarg_b
+ HEADERS a.h b.h c.h d.h e.h f.h
+ SOURCES a.cc b.cc d.cc
+ DEPENDS foo
+ bar baz)
+
+# This command uses a string with escaped quote chars
+foo(some_arg some_arg "This is a \"string\" within a string")
+
+# This command uses an empty string
+foo(some_arg some_arg "")
+
+# This command uses a multiline string
+foo(some_arg some_arg "
+ This string is on multiple lines
+")
+
+# No, I really want this to look ugly
+# cmake-format: off
+add_library(a b.cc
+ c.cc d.cc
+ e.cc)
+# cmake-format: on