Просмотр исходного кода

Error out on dash characters during bootstrap

Loïc Hoguin 6 лет назад
Родитель
Сommit
ea066afe76
2 измененных файлов с 38 добавлено и 0 удалено
  1. 4 0
      plugins/bootstrap.mk
  2. 34 0
      test/plugin_bootstrap.mk

+ 4 - 0
plugins/bootstrap.mk

@@ -421,6 +421,7 @@ ifneq ($(wildcard src/),)
 	$(error Error: src/ directory already exists)
 endif
 	$(eval p := $(PROJECT))
+	$(if $(findstring -,$p),$(error Error: The dash cannot be used in application names))
 	$(eval n := $(PROJECT)_sup)
 	$(call render_template,bs_Makefile,Makefile)
 	$(verbose) echo "include erlang.mk" >> Makefile
@@ -436,6 +437,7 @@ ifneq ($(wildcard src/),)
 	$(error Error: src/ directory already exists)
 endif
 	$(eval p := $(PROJECT))
+	$(if $(findstring -,$p),$(error Error: The dash cannot be used in application names))
 	$(call render_template,bs_Makefile,Makefile)
 	$(verbose) echo "include erlang.mk" >> Makefile
 	$(verbose) mkdir src/
@@ -464,6 +466,7 @@ ifneq ($(wildcard $(APPS_DIR)/$in),)
 	$(error Error: Application $in already exists)
 endif
 	$(eval p := $(in))
+	$(if $(findstring -,$p),$(error Error: The dash cannot be used in application names))
 	$(eval n := $(in)_sup)
 	$(verbose) mkdir -p $(APPS_DIR)/$p/src/
 	$(call render_template,bs_apps_Makefile,$(APPS_DIR)/$p/Makefile)
@@ -481,6 +484,7 @@ ifneq ($(wildcard $(APPS_DIR)/$in),)
 	$(error Error: Application $in already exists)
 endif
 	$(eval p := $(in))
+	$(if $(findstring -,$p),$(error Error: The dash cannot be used in application names))
 	$(verbose) mkdir -p $(APPS_DIR)/$p/src/
 	$(call render_template,bs_apps_Makefile,$(APPS_DIR)/$p/Makefile)
 ifdef LEGACY

+ 34 - 0
test/plugin_bootstrap.mk

@@ -37,6 +37,40 @@ endif
 		{module, $(APP)_sup} = code:load_file($(APP)_sup), \
 		halt()"
 
+bootstrap-invalid-app-name: build clean
+
+	$i "Try to bootstrap a new OTP application named test_$@"
+	$t mkdir test_$@/
+	$t cp ../erlang.mk test_$@/
+	$t ! $(MAKE) -C test_$@ -f erlang.mk bootstrap $v
+
+bootstrap-invalid-lib-name: build clean
+
+	$i "Try to bootstrap a new OTP library named test_$@"
+	$t mkdir test_$@/
+	$t cp ../erlang.mk test_$@/
+	$t ! $(MAKE) -C test_$@ -f erlang.mk bootstrap-lib $v
+
+bootstrap-invalid-new-app-name: 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 "Try to create a new application my-app"
+	$t ! $(MAKE) -C $(APP) new-app in=my-app $v
+
+bootstrap-invalid-new-lib-name: 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 "Try to create a new library my-lib"
+	$t ! $(MAKE) -C $(APP) new-lib in=my-lib $v
+
 bootstrap-lib: build clean
 
 	$i "Bootstrap a new OTP library named $(APP)"