summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2022-07-28 09:29:44 -0400
committerRay Strode <rstrode@redhat.com>2022-07-28 10:57:21 -0400
commitd25f48f44487d1ef14e46629d66faf8790698b65 (patch)
tree420b5fb9500ea5fec0480926c657076a55999bfa
parentca5cbab77b934ea899fbd230f7444231efe101d6 (diff)
downloadaccountsservice-d25f48f44487d1ef14e46629d66faf8790698b65.tar.gz
ci: Do a coding style check
Now that the accountsservice code has been uncrustified, it would be good to keep it that way going forward. plymouth has a script it runs during CI to check the coding style. This commit steals that script and uses it for accountsservice CI too.
-rw-r--r--.gitlab-ci.yml2
-rwxr-xr-xtests/check-format.sh51
-rw-r--r--tests/meson.build2
-rw-r--r--tests/uncrustify.cfg121
4 files changed, 176 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c9f7447..a31a23b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,8 +15,10 @@ variables:
vala
TEST_DEPENDENCIES: gcovr
glibc-all-langpacks
+ patchutils
python3-dbusmock
python3-gobject-base
+ uncrustify
valgrind
stages:
diff --git a/tests/check-format.sh b/tests/check-format.sh
new file mode 100755
index 0000000..de676c3
--- /dev/null
+++ b/tests/check-format.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+
+SRC_DIR=$(dirname "$0")/..
+
+exec >& /dev/stderr
+
+set -x
+env
+
+if [ -z "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then
+ UPSTREAM_BRANCH="$(git rev-parse --abbrev-ref --symbolic-full-name @{u})"
+else
+ UPSTREAM_BRANCH="$CI_MERGE_REQUEST_DIFF_BASE_SHA"
+fi
+
+cd "$SRC_DIR"
+
+cp tests/uncrustify.cfg tests/latest-uncrustify.cfg
+
+git diff --quiet
+DIRTY_TREE="$?"
+
+if [ "$DIRTY_TREE" -ne 0 ]; then
+ git stash
+ git stash apply
+fi
+
+find -name '*.[ch]' -exec uncrustify -q -c tests/latest-uncrustify.cfg --replace {} \;
+git diff > after
+
+git reset --hard $UPSTREAM_BRANCH
+find -name '*.[ch]' -exec uncrustify -q -c tests/latest-uncrustify.cfg --replace {} \;
+git diff > before
+
+interdiff --no-revert-omitted before after > diff
+
+if [ -n "$(cat diff)" ]; then
+ echo "Uncrustify found style abnormalities" 2>&1
+ cat diff
+ exit 1
+fi
+
+git reset --hard HEAD@{1}
+
+if [ "$DIRTY_TREE" -ne 0 ]; then
+ git stash pop
+fi
+
+echo "No new style abnormalities found by uncrustify!"
+exit 0
+
diff --git a/tests/meson.build b/tests/meson.build
index dedbe67..ff9004d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,3 +1,5 @@
+test('check-format', find_program('check-format.sh'))
+
libmocklibc = subproject('mocklibc').get_variable('libmocklibc')
envs = environment()
diff --git a/tests/uncrustify.cfg b/tests/uncrustify.cfg
new file mode 100644
index 0000000..3f508cd
--- /dev/null
+++ b/tests/uncrustify.cfg
@@ -0,0 +1,121 @@
+indent_with_tabs = 0 # 1=indent to level only, 2=indent with tabs
+input_tab_size = 8 # original tab size
+output_tab_size = 8 # new tab size
+indent_columns = output_tab_size
+
+indent_label = 1 # pos: absolute col, neg: relative column
+
+
+#
+# inter-symbol newlines
+#
+
+nl_enum_brace = force # "enum {" vs "enum \n {"
+nl_union_brace = force # "union {" vs "union \n {"
+nl_struct_brace = force # "struct {" vs "struct \n {"
+nl_do_brace = remove # "do {" vs "do \n {"
+nl_if_brace = remove # "if () {" vs "if () \n {"
+nl_for_brace = remove # "for () {" vs "for () \n {"
+nl_else_brace = remove # "else {" vs "else \n {"
+nl_while_brace = remove # "while () {" vs "while () \n {"
+nl_switch_brace = remove # "switch () {" vs "switch () \n {"
+nl_brace_while = remove # "} while" vs "} \n while" - cuddle while
+nl_brace_else = remove # "} else" vs "} \n else" - cuddle else
+sp_brace_else = force
+sp_else_brace = force
+nl_func_def_args = add
+nl_func_var_def_blk = 1
+nl_fcall_brace = remove # "list_for_each() {" vs "list_for_each()\n{"
+nl_fdef_brace = add # "int foo() {" vs "int foo()\n{"
+# nl_after_return = TRUE;
+# nl_before_case = 1
+
+
+#
+# Source code modifications
+#
+
+mod_paren_on_return = remove # "return 1;" vs "return (1);"
+mod_full_brace_if = add # "if (a) a--;" vs "if (a) { a--; }"
+mod_full_brace_if_chain = 3
+mod_full_brace_for = force # "for () a--;" vs "for () { a--; }"
+mod_full_brace_do = force # "do a--; while ();" vs "do { a--; } while ();"
+mod_full_brace_while = force # "while (a) a--;" vs "while (a) { a--; }"
+mod_full_brace_nl = 3 # don't remove if more than 3 newlines
+mod_remove_extra_semicolon = true
+
+
+#
+# inter-character spacing options
+#
+
+sp_return_paren = force # "return (1);" vs "return(1);"
+sp_sizeof_paren = remove # "sizeof (int)" vs "sizeof(int)"
+sp_before_sparen = force # "if (" vs "if("
+sp_after_sparen = force # "if () {" vs "if (){"
+sp_after_cast = force # "(int) a" vs "(int)a"
+sp_inside_braces = force # "{ 1 }" vs "{1}"
+sp_inside_braces_struct = force # "{ 1 }" vs "{1}"
+sp_inside_braces_enum = force # "{ 1 }" vs "{1}"
+sp_assign = force
+sp_arith = force
+sp_bool = force
+sp_compare = force
+sp_assign = force
+sp_after_comma = force
+sp_func_def_paren = force # "int foo (){" vs "int foo(){"
+sp_func_call_paren = force # "foo (" vs "foo("
+sp_func_proto_paren = force # "int foo ();" vs "int foo();"
+
+
+#
+# Aligning stuff
+#
+
+align_with_tabs = FALSE # use tabs to align
+align_on_tabstop = FALSE # align on tabstops
+align_var_def_gap = 1
+align_func_proto_gap = 4
+align_var_def_thresh = 0
+# align_keep_tabs = true
+align_enum_equ_span = 4 # '=' in enum definition
+# align_nl_cont = TRUE
+# align_var_def_span = 2
+# align_var_def_inline = TRUE
+# align_var_def_colon = TRUE
+# align_assign_span = 1
+align_struct_init_span = 3 # align stuff in a structure init '= { }'
+align_right_cmt_span = 3
+# align_pp_define_span = 8;
+# align_pp_define_gap = 4;
+
+cmt_star_cont = true
+
+# indent_brace = 0
+
+nl_func_paren = remove
+nl_func_decl_start = remove
+nl_func_decl_empty = remove
+nl_func_decl_args = force
+nl_func_decl_end = remove
+sp_inside_paren = remove
+sp_inside_square = remove
+sp_inside_paren_cast = remove
+sp_inside_fparen = remove
+sp_inside_sparen = remove
+sp_paren_paren = remove
+sp_before_ptr_star = force
+sp_after_ptr_star = remove
+sp_between_ptr_star = remove
+align_func_params = true
+align_var_struct_span = 6
+
+eat_blanks_after_open_brace = true
+eat_blanks_before_close_brace = true
+pp_indent = remove
+
+nl_start_of_file = remove
+nl_end_of_file = force
+nl_end_of_file_min = 1
+nl_comment_func_def = 1
+align_var_def_star_style = 2