Browse Source

Test that all packages load their app and modules properly

Catch issues early.
Loïc Hoguin 10 years ago
parent
commit
d8463ed580
1 changed files with 25 additions and 1 deletions
  1. 25 1
      test/Makefile

+ 25 - 1
test/Makefile

@@ -217,7 +217,7 @@ endef
 
 
 define pkg_test_target
 define pkg_test_target
 pkg-$(1)-clean:
 pkg-$(1)-clean:
-	$t rm -rf app1
+	$t rm -rf app1 erl_crash.dump
 
 
 pkg-$(1)-app1:
 pkg-$(1)-app1:
 	$(call app1_setup)
 	$(call app1_setup)
@@ -235,6 +235,30 @@ pkg-$(1): pkg-$(1)-clean pkg-$(1)-app1
 	cp ../packages.v2.tsv app1/.erlang.mk.packages.v2
 	cp ../packages.v2.tsv app1/.erlang.mk.packages.v2
 	$t $(MAKE) -C app1
 	$t $(MAKE) -C app1
 	$t $(MAKE) -C app1
 	$t $(MAKE) -C app1
+	@if [ "$(1)" = "rack" ]; then \
+		echo "Skipping erl_crash.dump detection check for package $(1)..."; \
+	else \
+		if [ `find -type f -name erl_crash.dump` ]; then exit 33; fi \
+	fi
+	@if [ "$(1)" = "tsung" ]; then \
+		echo "Skipping module loading check for package $(1)..."; \
+	else \
+		erl +A0 -noinput -boot start_clean -pa app1/deps/*/ebin -eval " \
+			Apps = [list_to_atom(App) || \"app1/deps/\" ++ App <- filelib:wildcard(\"app1/deps/*\")], \
+			[begin \
+				io:format(\"Loading application ~p~n\", [App]), \
+				case application:load(App) of \
+					{error, _} -> ok; \
+					ok -> \
+						{ok, Mods} = application:get_key(App, modules), \
+						[try io:format(\"  Loading module ~p~n\", [Mod]), \
+							{module, Mod} = code:load_file(Mod) \
+						catch C:R -> timer:sleep(500), erlang:C(R) \
+						end || Mod <- Mods] \
+				end \
+			end || App <- Apps], \
+			halt()."; \
+	fi
 endef
 endef
 
 
 $(foreach pkg,$(shell awk '{print $$1}' ../packages.v2.tsv),$(eval $(call pkg_test_target,$(pkg))))
 $(foreach pkg,$(shell awk '{print $$1}' ../packages.v2.tsv),$(eval $(call pkg_test_target,$(pkg))))