From d8be610d4c68aa126afa952de4f134d68cc80636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sat, 5 Jan 2013 17:25:04 +0100 Subject: Stop using rebar in the Makefile First and foremost: yes, you can still use Cowboy as a rebar dependency. This commit only removes the use of rebar when *developing* Cowboy, not when *using* Cowboy. Over the past two years I went from very happy with rebar to unsatisfied and most recently found it counter productive in many ways, from having insane default configuration to various unefficient operations. The earlier reversal from 'rebar ct' to 'ct_run' made my workflow much more natural, as I always needed to look at 'logs/raw.log' to find out what was wrong, anyway. Why not let 'ct_run' output it directly instead? Removing rebar made my life easier. If you wonder why I don't patch rebar, there's two reasons. First is that the direction taken by rebar isn't compatible with my views, and this would be a huge fight to steer it in another direction. I got other, more important fights to make. Second is that I'd rather patch OTP so that everyone benefits from it, not just users of rebar. Anyway this isn't my personal blog so I will stop babbling here. There's a few important things to note relative to this commit: * You don't need rebar to work on Cowboy anymore * The eunit tests are now ran through common_test Ping me if it doesn't work out for you. --- Makefile | 52 ++++++++++++++++++++++++++++++---------------------- ebin/.gitignore | 0 rebar.config | 6 ------ rebar.tests.config | 8 -------- test/eunit_SUITE.erl | 31 +++++++++++++++++++++++++++++++ 5 files changed, 61 insertions(+), 36 deletions(-) delete mode 100644 ebin/.gitignore delete mode 100644 rebar.tests.config create mode 100644 test/eunit_SUITE.erl diff --git a/Makefile b/Makefile index 410dda6..d1441fc 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,42 @@ # See LICENSE for licensing information. PROJECT = cowboy +RANCH_VSN = 0.6.0 +ERLC_OPTS = -Werror +debug_info +warn_export_all # +bin_opt_info +warn_missing_spec -REBAR = rebar +.PHONY: all clean-all app clean docs clean-docs tests autobahn build-plt dialyze + +# Application. all: app -# Application. +clean-all: clean clean-docs + rm -f .$(PROJECT).plt + rm -rf deps logs deps/ranch: - @$(REBAR) get-deps + @mkdir -p deps/ + git clone -n -- https://github.com/extend/ranch.git deps/ranch + cd deps/ranch ; git checkout -q $(RANCH_VSN) + +MODULES = $(shell ls src/*.erl | sed 's/src\///;s/\.erl/,/' | sed '$$s/.$$//') app: deps/ranch - @$(REBAR) compile + @cd deps/ranch ; make + @mkdir -p ebin/ + @cat src/cowboy.app.src \ + | sed 's/{modules, \[\]}/{modules, \[$(MODULES)\]}/' \ + > ebin/cowboy.app + erlc -v $(ERLC_OPTS) -o ebin/ -pa ebin/ src/cowboy_middleware.erl src/*.erl clean: - @$(REBAR) clean + -@cd deps/ranch && make clean + rm -rf ebin/ rm -f test/*.beam rm -f erl_crash.dump +# Documentation. + docs: clean-docs erl -noshell -eval 'edoc:application(cowboy, ".", []), init:stop().' @@ -30,24 +48,16 @@ clean-docs: # Tests. -deps/proper: - @$(REBAR) -C rebar.tests.config get-deps - cd deps/proper && $(REBAR) compile - -tests: clean deps/proper app eunit ct - -eunit: - @$(REBAR) -C rebar.tests.config eunit skip_deps=true - CT_RUN = ct_run \ -pa ebin deps/*/ebin \ -dir test \ -logdir logs \ -cover test/cover.spec -ct: +tests: ERLC_OPTS += -DTEST=1 +tests: clean app @mkdir -p logs/ - @$(CT_RUN) -suite http_SUITE ws_SUITE + @$(CT_RUN) -suite eunit_SUITE http_SUITE ws_SUITE autobahn: @mkdir -p logs/ @@ -55,12 +65,10 @@ autobahn: # Dialyzer. -DIALYZER = dialyzer - -build-plt: - @$(DIALYZER) --build_plt --output_plt .$(PROJECT).plt \ - --apps kernel stdlib sasl inets crypto public_key ssl deps/* +build-plt: app + @dialyzer --build_plt --output_plt .$(PROJECT).plt \ + --apps kernel stdlib sasl inets crypto public_key ssl deps/ranch dialyze: - @$(DIALYZER) --src src --plt .$(PROJECT).plt --no_native \ + @dialyzer --src src --plt .$(PROJECT).plt --no_native \ -Werror_handling -Wrace_conditions -Wunmatched_returns # -Wunderspecs diff --git a/ebin/.gitignore b/ebin/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/rebar.config b/rebar.config index ef634de..c3bfeb6 100644 --- a/rebar.config +++ b/rebar.config @@ -1,9 +1,3 @@ {deps, [ {ranch, "0\\.6\\.0.*", {git, "git://github.com/extend/ranch.git", "0.6.0"}} ]}. -{erl_opts, [ -%% bin_opt_info, -%% warn_missing_spec, - warnings_as_errors, - warn_export_all -]}. diff --git a/rebar.tests.config b/rebar.tests.config deleted file mode 100644 index 128f069..0000000 --- a/rebar.tests.config +++ /dev/null @@ -1,8 +0,0 @@ -{cover_enabled, true}. -{deps, [ - {proper, ".*", - {git, "git://github.com/manopapad/proper.git", "master"}}, - {ranch, "0\\.6\\.0.*", {git, "git://github.com/extend/ranch.git", "0.6.0"}} -]}. -{eunit_opts, [verbose, {report, {eunit_surefire, [{dir, "."}]}}]}. -{erl_opts, []}. diff --git a/test/eunit_SUITE.erl b/test/eunit_SUITE.erl new file mode 100644 index 0000000..d9272f9 --- /dev/null +++ b/test/eunit_SUITE.erl @@ -0,0 +1,31 @@ +%% Copyright (c) 2013, Loïc Hoguin +%% +%% Permission to use, copy, modify, and/or distribute this software for any +%% purpose with or without fee is hereby granted, provided that the above +%% copyright notice and this permission notice appear in all copies. +%% +%% THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +%% WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +%% MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +%% ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +%% WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +%% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +%% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +-module(eunit_SUITE). + +-include_lib("common_test/include/ct.hrl"). + +%% ct. +-export([all/0]). + +%% Tests. +-export([eunit/1]). + +%% ct. + +all() -> + [eunit]. + +eunit(Config) -> + ok = eunit:test({application, cowboy}). -- cgit v1.2.3