Browse Source

Make sure we go through all deps when building escripts

Loïc Hoguin 6 years ago
parent
commit
1fb70e0d43
2 changed files with 31 additions and 0 deletions
  1. 1 0
      plugins/escript.mk
  2. 30 0
      test/plugin_escript.mk

+ 1 - 0
plugins/escript.mk

@@ -27,6 +27,7 @@ help::
 
 
 # Plugin-specific targets.
 # Plugin-specific targets.
 
 
+escript-zip:: FULL=1
 escript-zip:: deps app
 escript-zip:: deps app
 	$(verbose) mkdir -p $(dir $(ESCRIPT_ZIP))
 	$(verbose) mkdir -p $(dir $(ESCRIPT_ZIP))
 	$(verbose) rm -f $(ESCRIPT_ZIP_FILE)
 	$(verbose) rm -f $(ESCRIPT_ZIP_FILE)

+ 30 - 0
test/plugin_escript.mk

@@ -90,6 +90,36 @@ escript-deps: build clean
 	$i "Check that the escript contains the dependency"
 	$i "Check that the escript contains the dependency"
 	$t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q ranch
 	$t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q ranch
 
 
+escript-deps-with-deps: build clean
+
+	$i "Bootstrap a new OTP library named $(APP)"
+	$t mkdir $(APP)/
+	$t cp ../erlang.mk $(APP)/
+	$t $(MAKE) -C $(APP) -f erlang.mk bootstrap-lib $v
+
+	$i "Add Cowboy 1.0.0 to the list of dependencies"
+	$t perl -ni.bak -e 'print;if ($$.==1) {print "DEPS = cowboy\ndep_cowboy_commit = 1.0.0\n"}' $(APP)/Makefile
+
+	$i "Generate a module containing a function main/1"
+	$t printf "%s\n" \
+		"-module($(APP))." \
+		"-export([main/1])." \
+		'main(_) -> io:format("good~n").' > $(APP)/src/$(APP).erl
+
+	$i "Build the application"
+	$t $(MAKE) -C $(APP) $v
+
+	$i "Build the escript"
+	$t $(MAKE) -C $(APP) escript $v
+
+	$i "Check that the escript runs"
+	$t $(APP)/$(APP) | grep -q good
+
+	$i "Check that the escript contains the dependencies"
+	$t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q cowboy
+	$t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q cowlib
+	$t zipinfo $(APP)/$(APP) 2> /dev/null | grep -q ranch
+
 escript-distclean: build clean
 escript-distclean: build clean
 
 
 	$i "Bootstrap a new OTP library named $(APP)"
 	$i "Bootstrap a new OTP library named $(APP)"