diff --git a/Makefile b/Makefile index 3cc6d6a..7fd98f5 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,9 @@ OUTDIR ?= "tmp" # Define the files you want to ensure are synced across all exercises FILES_TO_CHECK = package.json package-lock.json rescript.json .gitignore LICENSE +# Camel to Pascal case utility +TO_PASCAL = $(shell echo "$(1)" | sed -E 's/[-_]/ /g' | awk '{for(i=1;i<=NF;i++)sub(/./,toupper(substr($$i,1,1)),$$i)}1' | sed 's/ //g') + # check all exercise files that need to be in sync check-exercise-files: @for exercise in $(EXERCISES); do \ @@ -113,6 +116,12 @@ endif @node test_templates/$(PASCAL_EXERCISE)_template.res.js || exit 1 npm run res:format-fix +# Test a single exercise - e.g. make test-one EXERCISE=eliuds-eggs +test-one: + $(MAKE) -s check-exercise-files + $(MAKE) -s copy-all-exercises + npm run test:only -- tmp/tests/$(call TO_PASCAL,$(EXERCISE))_test.res.js + test: $(MAKE) -s clean $(MAKE) -s check-exercise-files diff --git a/exercises/practice/acronym/package.json b/exercises/practice/acronym/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/acronym/package.json +++ b/exercises/practice/acronym/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/all-your-base/package.json b/exercises/practice/all-your-base/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/all-your-base/package.json +++ b/exercises/practice/all-your-base/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/allergies/package.json b/exercises/practice/allergies/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/allergies/package.json +++ b/exercises/practice/allergies/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/anagram/package.json b/exercises/practice/anagram/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/anagram/package.json +++ b/exercises/practice/anagram/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/armstrong-numbers/package.json b/exercises/practice/armstrong-numbers/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/armstrong-numbers/package.json +++ b/exercises/practice/armstrong-numbers/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/atbash-cipher/package.json b/exercises/practice/atbash-cipher/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/atbash-cipher/package.json +++ b/exercises/practice/atbash-cipher/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/binary-search/package.json b/exercises/practice/binary-search/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/binary-search/package.json +++ b/exercises/practice/binary-search/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/bob/package.json b/exercises/practice/bob/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/bob/package.json +++ b/exercises/practice/bob/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/change/package.json b/exercises/practice/change/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/change/package.json +++ b/exercises/practice/change/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/difference-of-squares/package.json b/exercises/practice/difference-of-squares/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/difference-of-squares/package.json +++ b/exercises/practice/difference-of-squares/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/eliuds-eggs/package.json b/exercises/practice/eliuds-eggs/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/eliuds-eggs/package.json +++ b/exercises/practice/eliuds-eggs/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/hello-world/package.json b/exercises/practice/hello-world/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/hello-world/package.json +++ b/exercises/practice/hello-world/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/isogram/package.json b/exercises/practice/isogram/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/isogram/package.json +++ b/exercises/practice/isogram/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/leap/package.json b/exercises/practice/leap/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/leap/package.json +++ b/exercises/practice/leap/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/pangram/package.json b/exercises/practice/pangram/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/pangram/package.json +++ b/exercises/practice/pangram/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/phone-number/package.json b/exercises/practice/phone-number/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/phone-number/package.json +++ b/exercises/practice/phone-number/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/prism/package.json b/exercises/practice/prism/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/prism/package.json +++ b/exercises/practice/prism/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/protein-translation/package.json b/exercises/practice/protein-translation/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/protein-translation/package.json +++ b/exercises/practice/protein-translation/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/raindrops/package.json b/exercises/practice/raindrops/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/raindrops/package.json +++ b/exercises/practice/raindrops/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/resistor-color-duo/package.json b/exercises/practice/resistor-color-duo/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/resistor-color-duo/package.json +++ b/exercises/practice/resistor-color-duo/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/resistor-color-trio/package.json b/exercises/practice/resistor-color-trio/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/resistor-color-trio/package.json +++ b/exercises/practice/resistor-color-trio/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/resistor-color/package.json b/exercises/practice/resistor-color/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/resistor-color/package.json +++ b/exercises/practice/resistor-color/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/rna-transcription/package.json b/exercises/practice/rna-transcription/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/rna-transcription/package.json +++ b/exercises/practice/rna-transcription/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/rotational-cipher/package.json b/exercises/practice/rotational-cipher/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/rotational-cipher/package.json +++ b/exercises/practice/rotational-cipher/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/space-age/package.json b/exercises/practice/space-age/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/space-age/package.json +++ b/exercises/practice/space-age/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/strain/package.json b/exercises/practice/strain/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/strain/package.json +++ b/exercises/practice/strain/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/two-fer/package.json b/exercises/practice/two-fer/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/two-fer/package.json +++ b/exercises/practice/two-fer/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/exercises/practice/word-count/package.json b/exercises/practice/word-count/package.json index 65b104c..90d48e1 100644 --- a/exercises/practice/word-count/package.json +++ b/exercises/practice/word-count/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } } diff --git a/package.json b/package.json index 65b104c..90d48e1 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "res:start": "rescript build -w", "res:format-check": "rescript format --check", "res:format-fix": "rescript format", - "test": "rescript && retest tests/*.js", + "test": "rescript && retest tmp/tests/*.js", + "test:only": "rescript && retest", "ci": "npm test" } }