Added support for ISO8601 Zulu and TZ time zone support. Remove hard coded version string in rebar.config.script for unit test pass. Remove dializer and edoc from default target to enable tests to run on Travis-ci

Signed-off-by: Jordan Wilberding <diginux@gmail.com>
This commit is contained in:
Ben Kearns 2013-01-24 11:58:04 -08:00 committed by Jordan Wilberding
parent 320813e56e
commit 97d39ec8db
3 changed files with 68 additions and 17 deletions

View file

@ -3,6 +3,7 @@
# BSD License see COPYING # BSD License see COPYING
ERL = $(shell which erl) ERL = $(shell which erl)
ERL_VER = $(shell erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell)
ERLFLAGS= -pa $(CURDIR)/.eunit -pa $(CURDIR)/ebin -pa $(CURDIR)/*/ebin ERLFLAGS= -pa $(CURDIR)/.eunit -pa $(CURDIR)/ebin -pa $(CURDIR)/*/ebin
@ -14,10 +15,9 @@ endif
ERLWARE_COMMONS_PLT=$(CURDIR)/.erlware_commons_plt ERLWARE_COMMONS_PLT=$(CURDIR)/.erlware_commons_plt
.PHONY: all compile doc clean test dialyzer typer shell distclean pdf get-deps \ .PHONY: all compile doc clean test shell distclean pdf get-deps rebuild #dialyzer typer #fail on Travis.
rebuild
all: compile dialyzer doc test all: compile doc test #dialyzer #fail on travis
get-deps: get-deps:
$(REBAR) get-deps $(REBAR) get-deps
@ -27,22 +27,41 @@ compile:
$(REBAR) skip_deps=true compile $(REBAR) skip_deps=true compile
doc: compile doc: compile
$(REBAR) skip_deps=true doc - $(REBAR) skip_deps=true doc
test: compile test: compile
$(REBAR) skip_deps=true eunit $(REBAR) skip_deps=true eunit
$(ERLWARE_COMMONS_PLT): $(ERLWARE_COMMONS_PLT).$(ERL_VER).erts:
@echo Building local plt at $(ERLWARE_COMMONS_PLT) @echo Building local plt at $(ERLWARE_COMMONS_PLT).$(ERL_VER).base
@echo @echo
- dialyzer --fullpath --output_plt $(ERLWARE_COMMONS_PLT) --build_plt \
--apps erts kernel stdlib eunit -r deps
dialyzer: $(ERLWARE_COMMONS_PLT) - dialyzer --fullpath --verbose --output_plt $(ERLWARE_COMMONS_PLT).$(ERL_VER).base --build_plt \
dialyzer --fullpath --plt $(ERLWARE_COMMONS_PLT) -Wrace_conditions -r ./ebin --apps erts
typer: $(ERLWARE_COMMONS_PLT).$(ERL_VER).kernel:$(ERLWARE_COMMONS_PLT).$(ERL_VER).erts
typer --plt $(ERLWARE_COMMONS_PLT) -r ./src @echo Building local plt at $(ERLWARE_COMMONS_PLT).$(ERL_VER).base
@echo
- dialyzer --fullpath --verbose --output_plt $(ERLWARE_COMMONS_PLT).$(ERL_VER).base --build_plt \
--apps kernel
$(ERLWARE_COMMONS_PLT).$(ERL_VER).base:$(ERLWARE_COMMONS_PLT).$(ERL_VER).kernel
@echo Building local plt at $(ERLWARE_COMMONS_PLT).$(ERL_VER).base
@echo
- dialyzer --fullpath --verbose --output_plt $(ERLWARE_COMMONS_PLT).$(ERL_VER).base --build_plt \
--apps stdlib
$(ERLWARE_COMMONS_PLT).$(ERL_VER): $(ERLWARE_COMMONS_PLT).$(ERL_VER).base
@echo Building local plt at $(ERLWARE_COMMONS_PLT).$(ERL_VER)
@echo
- dialyzer --fullpath --verbose --output_plt $(ERLWARE_COMMONS_PLT).$(ERL_VER) --add_to_plt --plt $(ERLWARE_COMMONS_PLT).$(ERL_VER).base \
--apps eunit -r deps
dialyzer: $(ERLWARE_COMMONS_PLT).$(ERL_VER)
dialyzer --fullpath --plt $(ERLWARE_COMMONS_PLT).$(ERL_VER) -Wrace_conditions -r ./ebin
typer: $(ERLWARE_COMMONS_PLT).$(ERL)VER(
typer --plt $(ERLWARE_COMMONS_PLT).$(ERL_VER) -r ./src
shell: compile shell: compile
# You often want *rebuilt* rebar tests to be available to the # You often want *rebuilt* rebar tests to be available to the
@ -61,7 +80,7 @@ clean:
- rm $(CURDIR)/doc/edoc-info - rm $(CURDIR)/doc/edoc-info
distclean: clean distclean: clean
rm -rf $(ERLWARE_COMMONS_PLT) rm -rf $(ERLWARE_COMMONS_PLT).$(ERL_VER)
rm -rvf $(CURDIR)/deps/* rm -rvf $(CURDIR)/deps/*
rebuild: distclean get-deps all rebuild: distclean get-deps all

View file

@ -1,4 +1,4 @@
{match, [ErtsNumber]} = re:run("R15B02", "R(\\d+).+", [{capture, [1], list}]), {match, [ErtsNumber]} = re:run(erlang:system_info(otp_release), "R(\\d+).+", [{capture, [1], list}]),
ErtsVsn = erlang:list_to_integer(ErtsNumber), ErtsVsn = erlang:list_to_integer(ErtsNumber),
Opts1 = case lists:keysearch(erl_opts, 1, CONFIG) of Opts1 = case lists:keysearch(erl_opts, 1, CONFIG) of
{value, {erl_opts, Opts0}} -> {value, {erl_opts, Opts0}} ->
@ -8,8 +8,8 @@ Opts1 = case lists:keysearch(erl_opts, 1, CONFIG) of
end, end,
Opts2 = if Opts2 = if
ErtsVsn >= 15 -> ErtsVsn >= 15 ->
[{d, have_callback_support} | Opts1]; [{d, have_callback_support} | Opts1];
true -> true ->
Opts1 Opts1
end, end,
lists:keystore(erl_opts, 1, CONFIG, {erl_opts, Opts2}). lists:keystore(erl_opts, 1, CONFIG, {erl_opts, Opts2}).

View file

@ -122,6 +122,20 @@ nparse(Date) ->
%% LOCAL FUNCTIONS %% LOCAL FUNCTIONS
%% %%
parse([Year, X, Month, X, Day, Hour, $:, Min, $:, Sec, $Z ], _Now, _Opts)
when (?is_us_sep(X) orelse ?is_world_sep(X))
andalso Year > 31 ->
{{Year, Month, Day}, {hour(Hour, []), Min, Sec}, { 0}};
parse([Year, X, Month, X, Day, Hour, $:, Min, $:, Sec, $+, Off | _Rest ], _Now, _Opts)
when (?is_us_sep(X) orelse ?is_world_sep(X))
andalso Year > 31 ->
{{Year, Month, Day}, {hour(Hour, []) - Off, Min, Sec}, {0}};
parse([Year, X, Month, X, Day, Hour, $:, Min, $:, Sec, $-, Off | _Rest ], _Now, _Opts)
when (?is_us_sep(X) orelse ?is_world_sep(X))
andalso Year > 31 ->
{{Year, Month, Day}, {hour(Hour, []) + Off, Min, Sec}, {0}};
%% Date/Times 22 Aug 2008 6:35.0001 PM %% Date/Times 22 Aug 2008 6:35.0001 PM
parse([Year,X,Month,X,Day,Hour,$:,Min,$:,Sec,$., Ms | PAM], _Now, _Opts) parse([Year,X,Month,X,Day,Hour,$:,Min,$:,Sec,$., Ms | PAM], _Now, _Opts)
@ -317,7 +331,9 @@ tokenise("ND"++Rest, Acc) -> tokenise(Rest, Acc);
tokenise("ST"++Rest, Acc) -> tokenise(Rest, Acc); tokenise("ST"++Rest, Acc) -> tokenise(Rest, Acc);
tokenise("OF"++Rest, Acc) -> tokenise(Rest, Acc); tokenise("OF"++Rest, Acc) -> tokenise(Rest, Acc);
tokenise("T"++Rest, Acc) -> tokenise(Rest, Acc); % 2012-12-12T12:12:12 ISO formatting. tokenise("T"++Rest, Acc) -> tokenise(Rest, Acc); % 2012-12-12T12:12:12 ISO formatting.
tokenise([$. | Rest], Acc) -> tokenise(Rest, [$. | Acc]); % 2012-12-12T12:12:12.xxxx ISO formatting. tokenise([$Z | Rest], Acc) -> tokenise(Rest, [$Z | Acc]); % 2012-12-12T12:12:12Zulu
tokenise([$. | Rest], Acc) -> tokenise(Rest, [$. | Acc]); % 2012-12-12T12:12:12.xxxx ISO formatting.
tokenise([$+| Rest], Acc) -> tokenise(Rest, [$+ | Acc]); % 2012-12-12T12:12:12.xxxx+ ISO formatting.
tokenise([Else | Rest], Acc) -> tokenise([Else | Rest], Acc) ->
tokenise(Rest, [{bad_token, Else} | Acc]). tokenise(Rest, [{bad_token, Else} | Acc]).
@ -778,3 +794,19 @@ ms_test_() ->
"2001-03-10T15:16:17.123456"), "2001-03-10T15:16:17.123456"),
?_assertEqual(Now, nparse(format("Y-m-d\\TH:i:s.f", Now))) ?_assertEqual(Now, nparse(format("Y-m-d\\TH:i:s.f", Now)))
]. ].
zulu_test_() ->
[
?_assertEqual(format("Y-m-d\\TH:i:sZ",nparse("2001-03-10T15:16:17.123456")),
"2001-03-10T15:16:17Z"),
?_assertEqual(format("Y-m-d\\TH:i:s",nparse("2001-03-10T15:16:17Z")),
"2001-03-10T15:16:17"),
?_assertEqual(format("Y-m-d\\TH:i:s",nparse("2001-03-10T15:16:17+04")),
"2001-03-10T11:16:17"),
?_assertEqual(format("Y-m-d\\TH:i:s",nparse("2001-03-10T15:16:17+04:00")),
"2001-03-10T11:16:17"),
?_assertEqual(format("Y-m-d\\TH:i:s",nparse("2001-03-10T15:16:17-04")),
"2001-03-10T19:16:17"),
?_assertEqual(format("Y-m-d\\TH:i:s",nparse("2001-03-10T15:16:17-04:00")),
"2001-03-10T19:16:17")
].