couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kxe...@apache.org
Subject [01/36] couchdb commit: updated refs/heads/1963-eunit to 85f2750
Date Tue, 03 Jun 2014 15:54:39 GMT
Repository: couchdb
Updated Branches:
  refs/heads/1963-eunit 16528f8d5 -> 85f27505f (forced update)


Add run script to execute eunit tests

Usage is the same as for test/etap/run:

    ./test/couchdb/run -v ${PATH}

-v runs in verbose mode, as etap does. Also, you can use make for that:

    make check-eunit

which will run tests everywhere in project where Makefile contains
check-eunit subcommand definition.

The ${PATH} thing could be single file or directory. The latter should
contains *_tests.erl files which would be compiled and executed by
eunit.

The *_tests.erl

The reason of compiling on run instead of using autoconf for that is
to simplify tests developing and avoid situations, when you'd fixed
the test or add new one, but forgot to remove/compile beam file.

All test_*.beam files are been stored in test/couchdb/ebin directory,
the temporary test files will be places to test/couchdb/temp one.
Both directories will be removed by make clean/distclean command.


Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/2652d1ef
Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/2652d1ef
Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/2652d1ef

Branch: refs/heads/1963-eunit
Commit: 2652d1ef5cc3135c7da2123f8f515723446af1f8
Parents: ad8e28c
Author: Alexander Shorin <kxepal@apache.org>
Authored: Fri May 16 00:08:36 2014 +0400
Committer: Alexander Shorin <kxepal@apache.org>
Committed: Tue Jun 3 02:16:34 2014 +0400

----------------------------------------------------------------------
 .gitignore               |   2 +-
 Makefile.am              |   5 +++
 configure.ac             |   2 +
 license.skip             |   2 +
 test/Makefile.am         |   2 +-
 test/couchdb/Makefile.am |  24 ++++++++++
 test/couchdb/run.in      | 102 ++++++++++++++++++++++++++++++++++++++++++
 7 files changed, 137 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 4b12bf7..85e2365 100644
--- a/.gitignore
+++ b/.gitignore
@@ -128,9 +128,9 @@ src/snappy/snappy.app
 stamp-h1
 test/.deps/
 test/bench/run
+test/couchdb/run
 test/etap/.deps/
 test/etap/run
-test/etap/run
 test/etap/temp.*
 test/etap/test_cfg_register
 test/etap/test_util.erl

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/Makefile.am
----------------------------------------------------------------------
diff --git a/Makefile.am b/Makefile.am
index 22809f8..413c1a8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -92,6 +92,11 @@ if TESTS
 	$(top_builddir)/test/etap/run $(top_srcdir)/test/etap
 endif
 
+check-eunit: dev
+if TESTS
+	$(top_builddir)/test/couchdb/run -v $(top_srcdir)/test/couchdb
+endif
+
 cover: dev
 if TESTS
 	rm -f cover/*.coverdata

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/configure.ac
----------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac
index 01d0a7b..4b34811 100644
--- a/configure.ac
+++ b/configure.ac
@@ -753,6 +753,8 @@ AC_CONFIG_FILES([src/snappy/google-snappy/snappy-stubs-public.h])
 AC_CONFIG_FILES([src/ejson/Makefile])
 AC_CONFIG_FILES([test/Makefile])
 AC_CONFIG_FILES([test/bench/Makefile])
+AC_CONFIG_FILES([test/couchdb/run])
+AC_CONFIG_FILES([test/couchdb/Makefile])
 AC_CONFIG_FILES([test/etap/Makefile])
 AC_CONFIG_FILES([test/etap/test_util.erl])
 AC_CONFIG_FILES([test/javascript/Makefile])

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/license.skip
----------------------------------------------------------------------
diff --git a/license.skip b/license.skip
index f5e49da..5d10e6c 100644
--- a/license.skip
+++ b/license.skip
@@ -168,6 +168,8 @@
 ^test/Makefile.in
 ^test/bench/Makefile
 ^test/bench/Makefile.in
+^test/couchdb/Makefile
+^test/couchdb/Makefile.in
 ^test/etap/.*.beam
 ^test/etap/.*.o
 ^test/etap/.deps/.*

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/test/Makefile.am
----------------------------------------------------------------------
diff --git a/test/Makefile.am b/test/Makefile.am
index 7c70a5a..1237c6f 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -10,6 +10,6 @@
 ## License for the specific language governing permissions and limitations under
 ## the License.
 
-SUBDIRS = bench etap javascript view_server
+SUBDIRS = bench couchdb etap javascript view_server
 EXTRA_DIST = random_port.ini
 

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/test/couchdb/Makefile.am
----------------------------------------------------------------------
diff --git a/test/couchdb/Makefile.am b/test/couchdb/Makefile.am
new file mode 100644
index 0000000..5bd65dd
--- /dev/null
+++ b/test/couchdb/Makefile.am
@@ -0,0 +1,24 @@
+## 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.
+
+noinst_SCRIPTS = run
+
+all:
+	mkdir -p {ebin,temp}
+	chmod +x run
+
+EXTRA_DIST = \
+    run.in
+
+clean-local:
+	rm -rf ebin
+	rm -rf temp

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2652d1ef/test/couchdb/run.in
----------------------------------------------------------------------
diff --git a/test/couchdb/run.in b/test/couchdb/run.in
new file mode 100644
index 0000000..80f4041
--- /dev/null
+++ b/test/couchdb/run.in
@@ -0,0 +1,102 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+%%! -DTEST -pa @abs_top_builddir@/test/couchdb/ebin
+%%
+%% 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.
+
+-define(BUILDDIR, "@abs_top_builddir@").
+-define(TESTS_EBIN, filename:join([?BUILDDIR, "test", "couchdb", "ebin"])).
+-define(TESTS_TEMP, filename:join([?BUILDDIR, "test", "couchdb", "temp"])).
+
+main([]) ->
+    io:fwrite("Path to test file or directory wasn't specified.~n"),
+    erlang:halt(1);
+main(["-v"]) ->
+    io:fwrite("Path to test file or directory wasn't specified.~n"),
+    erlang:halt(1);
+main(["-v", Path]) ->
+    run(Path, [verbose]);
+main(["-v", _ | _]) ->
+    io:fwrite("Only single tests source path is supported.~n"),
+    erlang:halt(1);
+main([Path]) ->
+    run(Path, []),
+    ok;
+main([_|_]) ->
+    io:fwrite("Only single tests source path is supported.~n"),
+    erlang:halt(1).
+
+
+run(Path, Options) ->
+    Mask = "*_tests.erl",
+    Files = list_files(Path, Mask),
+    Mods = compile(Files),
+    run_tests(Mods, Options).
+
+
+list_files(Path, Mask)->
+    AbsPath = filename:absname(Path),
+    case filelib:is_file(AbsPath) of
+        true ->
+            ok;
+        false ->
+            io:fwrite("File or directory not found: ~p~n", [AbsPath]),
+            erlang:halt(1)
+    end,
+    case filelib:is_dir(AbsPath) of
+        true ->
+            case filelib:wildcard(filename:join([AbsPath, Mask])) of
+                [] ->
+                    io:fwrite("No test files was found at ~p by mask ~p ~n",
+                              [AbsPath, Mask]),
+                    erlang:halt(1);
+                Files ->
+                    Files
+            end;
+        false -> [AbsPath]
+    end.
+
+
+compile(Files) ->
+    ok = filelib:ensure_dir(?TESTS_EBIN),
+    lists:map(
+        fun(File)->
+            io:fwrite("compile ~p~n", [File]),
+            {ok, Mod} = compile:file(File,
+                                     [report, verbose, {outdir, ?TESTS_EBIN}]),
+            Mod
+        end,
+    Files).
+
+
+run_tests(Mods, Options) ->
+    init_code_path(),
+    ok = filelib:ensure_dir(?TESTS_TEMP),
+    case eunit:test(Mods, Options) of
+        error -> erlang:halt(1);
+        _ -> ok
+    end.
+
+
+init_code_path() ->
+    Paths = [
+        "couchdb",
+        "ejson",
+        "erlang-oauth",
+        "ibrowse",
+        "mochiweb",
+        "snappy"
+    ],
+    lists:foreach(fun(Name) ->
+        code:add_patha(filename:join([?BUILDDIR, "src", Name]))
+    end, Paths).


Mime
View raw message