~jderose/ubuntu/utopic/couchdb/1.6.0

« back to all changes in this revision

Viewing changes to src/etap/etap_can.erl

  • Committer: Package Import Robot
  • Author(s): Jason Gerard DeRose
  • Date: 2013-08-28 16:28:32 UTC
  • mfrom: (1.3.4)
  • Revision ID: package-import@ubuntu.com-20130828162832-gp22vmgpfzhk2zyu
Tags: 1.4.0-0ubuntu1
* New upstream release (LP: #1212481)
* Switch from CDBS to pure debhelper (compat 9)
* Bump Standards-Version to 3.9.4
* Use an Upstart job instead of the upstream SysV init.d script
* Remove Build-Depends: cdbs, libreadline-dev
* Add Build-Depends: erlang-os-mon, erlang-syntax-tools, python-sphinx,
  texlive-latex-base, texlive-latex-recommended, texlive-latex-extra,
  texlive-fonts-recommended, texinfo
* Remove couchdb-bin Depends: procps, lsb-base (needed for SysV init.d script)
* Remove couchdb-bin Depends: libjs-jquery (1.7.2 is in Saucy, but the
  internal CouchDB jquery is now at version 1.8.3)
* Simplify Erlang couchdb-bin Depends to just:
  ${erlang-abi:Depends}, ${erlang:Depends}
* Add couchdb Depends: upstart
* Remove deprecated couchdb-bin.postrm
* Thanks to the Upstart job, couchdb.postrm no longer needs `sleep 3` hack,
  nor needs to `rm -r -f "/var/run/couchdb"`
* Stop using versioned database_dir /var/lib/couchdb/VERSION as this isn't
  done upstream and CouchDB is no longer considered alpha software
* Remove README.Debian, README.source as they're no longer applicable
* Drop patches superseded upstream for CVE-2012-5649, CVE-2012-5650:
  - improve_parsing_of_mochiweb_relative_paths.patch
  - improve_script_url_validation.patch
  - include_a_comment_before_jsonp_output.patch
* Because of the switch to Upstart, drop unneeded SysV init.d script patches:
  - force-reload.patch
  - couchdb_own_rundir.patch
  - wait_for_couchdb_stop.patch
* Drop couchdb_sighup.patch, superseded upstream
* Drop logrotate_as_couchdb.patch as it doesn't make sense for the CouchDB
  daemon to be able to modify its own archived log files
* Move static data and docs in "/usr/share/couchdb" from `couchdb-bin` into
  new `couchdb-common` Architecture:all package
* Add couchdb-bin Depends: couchdb-common (= ${source:Version})
* debian/watch: point to current download location
* debian/rules: replace `get-orig-source` with `get-packaged-orig-source`

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
%% Copyright (c) 2008-2009 Nick Gerakines <nick@gerakines.net>
2
 
%% 
3
 
%% Permission is hereby granted, free of charge, to any person
4
 
%% obtaining a copy of this software and associated documentation
5
 
%% files (the "Software"), to deal in the Software without
6
 
%% restriction, including without limitation the rights to use,
7
 
%% copy, modify, merge, publish, distribute, sublicense, and/or sell
8
 
%% copies of the Software, and to permit persons to whom the
9
 
%% Software is furnished to do so, subject to the following
10
 
%% conditions:
11
 
%% 
12
 
%% The above copyright notice and this permission notice shall be
13
 
%% included in all copies or substantial portions of the Software.
14
 
%% 
15
 
%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
 
%% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
 
%% OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
 
%% NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
 
%% HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
 
%% WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
 
%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
 
%% OTHER DEALINGS IN THE SOFTWARE.
23
 
%%
24
 
%% @reference http://testanything.org/wiki/index.php/Main_Page
25
 
%% @reference http://en.wikipedia.org/wiki/Test_Anything_Protocol
26
 
%% @doc Provide test functionality modules
27
 
-module(etap_can).
28
 
 
29
 
-export([
30
 
    loaded_ok/2, can_ok/2, can_ok/3,
31
 
    has_attrib/2, is_attrib/3, is_behaviour/2
32
 
]).
33
 
 
34
 
%% @spec loaded_ok(atom(), string()) -> true | false
35
 
%% @doc Assert that a module has been loaded successfully.
36
 
loaded_ok(M, Desc) when is_atom(M) ->
37
 
    etap:fun_is(fun({module, _}) -> true; (_) -> false end, code:load_file(M), Desc).
38
 
 
39
 
%% @spec can_ok(atom(), atom()) -> true | false
40
 
%% @doc Assert that a module exports a given function.
41
 
can_ok(M, F) when is_atom(M), is_atom(F) ->
42
 
    Matches = [X || {X, _} <- M:module_info(exports), X == F],
43
 
    etap:ok(Matches > 0, lists:concat([M, " can ", F])).
44
 
 
45
 
%% @spec can_ok(atom(), atom(), integer()) -> true | false
46
 
%% @doc Assert that a module exports a given function with a given arity.
47
 
can_ok(M, F, A) when is_atom(M); is_atom(F), is_number(A) ->
48
 
    Matches = [X || X <- M:module_info(exports), X == {F, A}],
49
 
    etap:ok(Matches > 0, lists:concat([M, " can ", F, "/", A])).
50
 
 
51
 
%% @spec has_attrib(M, A) -> true | false
52
 
%%       M = atom()
53
 
%%       A = atom()
54
 
%% @doc Asserts that a module has a given attribute.
55
 
has_attrib(M, A) when is_atom(M), is_atom(A) ->
56
 
    etap:isnt(
57
 
        proplists:get_value(A, M:module_info(attributes), 'asdlkjasdlkads'),
58
 
        'asdlkjasdlkads',
59
 
        lists:concat([M, " has attribute ", A])
60
 
    ).
61
 
 
62
 
%% @spec has_attrib(M, A. V) -> true | false
63
 
%%       M = atom()
64
 
%%       A = atom()
65
 
%%       V = any()
66
 
%% @doc Asserts that a module has a given attribute with a given value.
67
 
is_attrib(M, A, V) when is_atom(M) andalso is_atom(A) ->
68
 
    etap:is(
69
 
        proplists:get_value(A, M:module_info(attributes)),
70
 
        [V],
71
 
        lists:concat([M, "'s ", A, " is ", V])
72
 
    ).
73
 
 
74
 
%% @spec is_behavior(M, B) -> true | false
75
 
%%       M = atom()
76
 
%%       B = atom()
77
 
%% @doc Asserts that a given module has a specific behavior.
78
 
is_behaviour(M, B) when is_atom(M) andalso is_atom(B) ->
79
 
    is_attrib(M, behaviour, B).