]> granicus.if.org Git - ejabberd/commitdiff
Add Coveralls support
authorMickael Remond <mremond@process-one.net>
Mon, 21 Mar 2016 11:01:20 +0000 (12:01 +0100)
committerMickael Remond <mremond@process-one.net>
Mon, 21 Mar 2016 11:01:20 +0000 (12:01 +0100)
.travis.yml
cover.spec [new file with mode: 0644]
rebar.config
rebar.config.script

index 92154cf5f5ee0af880807646590d4903d0d70f11..a0c1d0bb79e0e24b2e9dd445b015b29fecfb705a 100644 (file)
@@ -22,7 +22,7 @@ before_install:
   - sudo apt-get -qq update
   - sudo apt-get -qq -o Dpkg::Options::=--force-confold install mysql-server-5.6
   # /END MYSQL 5.6
-
+  - pip install --user cpp-coveralls coveralls-merge
 
 install:
   - sudo apt-get -qq install libexpat1-dev libyaml-dev libpam0g-dev libsqlite3-dev
@@ -57,5 +57,9 @@ after_script:
 after_failure:
   - find logs -name ejabberd.log -exec cat '{}' ';'
 
+after_success:
+  - coveralls --exclude lib --exclude tests --gcov-options '\-lp' --dump c.json
+  - coveralls-merge c.json erlang.json
+
 notifications:
   email: false
diff --git a/cover.spec b/cover.spec
new file mode 100644 (file)
index 0000000..7d504d5
--- /dev/null
@@ -0,0 +1,5 @@
+{level, details}.
+{incl_dirs, ["src", "ebin"]}.
+{excl_mods, [eldap, 'ELDAPv3']}.
+{export, "logs/all.coverdata"}.
+
index 1f064dd5ea8f4c1e68f63ec3382f83b1fa19422e..d4dac4349172e82d68b78d0c8307cb6181bca348 100644 (file)
@@ -67,6 +67,7 @@
 
 {erl_opts, [nowarn_deprecated_function,
             {if_var_false, debug, no_debug_info},
+            {if_var_true, debug, debug_info},
             {if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATWAY_WORKAROUND'}},
             {if_var_match, db_type, mssql, {d, 'mssql'}},
             {if_var_true, erlang_deprecated_types, {d, 'ERL_DEPRECATED_TYPES'}},
 
 {eunit_compile_opts, [{i, "tools"}]}.
 
+{cover_enabled, true}.
+{cover_export_enabled, true}.
+
 {post_hook_configure, [{"fast_tls", []},
                        {"stringprep", []},
                        {"fast_yaml", []},
index a7120b12a437208cd7f6717d2eb689ca32bf0d0f..90928420428676d035bd4356b884754716534ef4 100644 (file)
@@ -7,6 +7,20 @@
 %%% Created :  1 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
 %%%-------------------------------------------------------------------
 
+ModCfg0 = fun(F, Cfg, [Key|Tail], Op, Default) ->
+                 {OldVal,PartCfg} = case lists:keytake(Key, 1, Cfg) of
+                                        {value, {_, V1}, V2} -> {V1, V2};
+                                        false -> {if Tail == [] -> Default; true -> [] end, Cfg}
+                                    end,
+                 case Tail of
+                     [] ->
+                         [{Key, Op(OldVal)} | PartCfg];
+                     _ ->
+                         [{Key, F(F, OldVal, Tail, Op, Default)} | PartCfg]
+                 end
+         end,
+ModCfg = fun(Cfg, Keys, Op, Default) -> ModCfg0(ModCfg0, Cfg, Keys, Op, Default) end.
+
 Cfg = case file:consult(filename:join(filename:dirname(SCRIPT), "vars.config")) of
           {ok, Terms} ->
               Terms;
@@ -107,9 +121,20 @@ Conf5 = case lists:keytake(floating_deps, 1, Conf3) of
                 Conf3
         end,
 
+%% When running Travis test, upload test coverage result to coveralls:
+Conf6 = case os:getenv("TRAVIS") of
+            "true" ->
+                JobId = os:getenv("TRAVIS_JOB_ID"),
+                CfgTemp = ModCfg(Conf5, [deps], fun(V) -> [{coveralls, ".*", {git, "https://github.com/markusn/coveralls-erl.git", "master"}}|V] end, []),
+                ModCfg(CfgTemp, [post_hooks], fun(V) -> V ++ [{ct, "echo '\n%%! -pa ebin/ deps/coveralls/ebin\nmain(_)->{ok,F}=file:open(\"erlang.json\",[write]),io:fwrite(F,\"~s\",[coveralls:convert_file(\"logs/all.coverdata\", \""++JobId++"\", \"travis-ci\")]).' > getcover.erl"},
+                                                              {ct, "escript ./getcover.erl"}] end, []);
+            _ ->
+                Conf5
+        end,
+
 %io:format("ejabberd configuration:~n  ~p~n", [Conf5]),
 
-Conf5.
+Conf6.
 
 %% Local Variables:
 %% mode: erlang