From d9258ed330d6ce645e1590258257d5ce9416c31e Mon Sep 17 00:00:00 2001 From: meatball <69751659+meatball133@users.noreply.github.com> Date: Wed, 7 Aug 2024 11:43:00 +0200 Subject: [PATCH] Update generator (#667) --- .github/workflows/tests.yml | 2 +- .../spec/assets/config-files/config.json | 58 +++++++++++++++++++ .../{formatter_tests.cr => formatter_spec.cr} | 0 test-generator/spec/generator_help_spec.cr | 21 +++++++ ...ins_tests.cr => generator_plugins_spec.cr} | 0 ...test_cases_tests.cr => test_cases_spec.cr} | 0 test-generator/src/generator_help.cr | 11 ++-- 7 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 test-generator/spec/assets/config-files/config.json rename test-generator/spec/{formatter_tests.cr => formatter_spec.cr} (100%) create mode 100644 test-generator/spec/generator_help_spec.cr rename test-generator/spec/{generator_plugins_tests.cr => generator_plugins_spec.cr} (100%) rename test-generator/spec/{test_cases_tests.cr => test_cases_spec.cr} (100%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 9d312f5a..a86d6107 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 - name: Run generator tests - run: crystal spec test-generator/spec/* + run: crystal spec test-generator test-generator-templates: name: Check Generator Templates runs-on: ubuntu-22.04 diff --git a/test-generator/spec/assets/config-files/config.json b/test-generator/spec/assets/config-files/config.json new file mode 100644 index 00000000..0f7b0dff --- /dev/null +++ b/test-generator/spec/assets/config-files/config.json @@ -0,0 +1,58 @@ +{ + "exercises": { + "concept": [ + { + "slug": "arys-amazing-lasagna", + "name": "Ary's Amazing Lasagna", + "uuid": "e2d8380e-d815-4458-a760-963e150bb439", + "concepts": [ + "basics" + ], + "prerequisites": [], + "status": "beta" + }, + { + "slug": "crystal-hunter", + "name": "Crystal Hunter", + "uuid": "2e4f0820-655d-461f-a48e-9465eed99c75", + "concepts": [ + "bools" + ], + "prerequisites": [ + "basics" + ], + "status": "beta" + } + ], + "practice": [ + { + "slug": "hello-world", + "name": "Hello World", + "uuid": "4078cf4d-4361-4c55-aa18-63a3fe269be1", + "practices": [], + "prerequisites": [], + "difficulty": 1 + }, + { + "slug": "acronym", + "name": "Acronym", + "uuid": "5373e713-f2ab-4b1e-b934-92969174bc48", + "practices": [ + "string-methods" + ], + "prerequisites": [], + "difficulty": 1 + }, + { + "slug": "anagram", + "name": "Anagram", + "uuid": "2df0796e-951d-4f10-8a2e-5c54f2443f10", + "practices": [ + "strings" + ], + "prerequisites": [], + "difficulty": 1 + } + ] + } +} diff --git a/test-generator/spec/formatter_tests.cr b/test-generator/spec/formatter_spec.cr similarity index 100% rename from test-generator/spec/formatter_tests.cr rename to test-generator/spec/formatter_spec.cr diff --git a/test-generator/spec/generator_help_spec.cr b/test-generator/spec/generator_help_spec.cr new file mode 100644 index 00000000..5187dc08 --- /dev/null +++ b/test-generator/spec/generator_help_spec.cr @@ -0,0 +1,21 @@ +require "spec" +require "json" +require "../src/generator_help" + +describe "GeneratorHelp" do + describe "check_config" do + it "should raise an error if the exercise isnt found" do + generator_help = GeneratorHelp.new("say") + costum_config_path = "./test-generator/spec/assets/config-files/config.json" + expect_raises Exception do + generator_help.check_config(costum_config_path) + end + end + + it "should not raise an error if the exercise is found" do + generator_help = GeneratorHelp.new("anagram") + costum_config_path = "./test-generator/spec/assets/config-files/config.json" + generator_help.check_config(costum_config_path) + end + end +end \ No newline at end of file diff --git a/test-generator/spec/generator_plugins_tests.cr b/test-generator/spec/generator_plugins_spec.cr similarity index 100% rename from test-generator/spec/generator_plugins_tests.cr rename to test-generator/spec/generator_plugins_spec.cr diff --git a/test-generator/spec/test_cases_tests.cr b/test-generator/spec/test_cases_spec.cr similarity index 100% rename from test-generator/spec/test_cases_tests.cr rename to test-generator/spec/test_cases_spec.cr diff --git a/test-generator/src/generator_help.cr b/test-generator/src/generator_help.cr index 1c40778e..f56dab6e 100644 --- a/test-generator/src/generator_help.cr +++ b/test-generator/src/generator_help.cr @@ -5,10 +5,11 @@ require "./generator_plugins.cr" class GeneratorHelp include GeneratorPlugins + @json : JSON::Any + @first = true def initialize(@exercise : String) - @first = true @json = get_remote_files() end @@ -61,10 +62,10 @@ class GeneratorHelp end end - def check_config - config_file = File.read("./config.json") - JSON.parse(config_file)["exercises"]["practice"].as_a.each do |x| - return true if @exercise == x["slug"] + def check_config(custom_config : String = "./config.json") + config_file = File.read(custom_config) + JSON.parse(config_file)["exercises"]["practice"].as_a.each do |config_exercise| + return true if @exercise == config_exercise["slug"] end raise "Couldn't find the exercise in the config.json.\nMake sure you use the same slug name as in the config file." end