diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4bc7b47c60f..c54682366ca 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,13 +19,22 @@ on: ios: type: boolean default: 'true' + web: + type: boolean + default: 'true' + device: + type: boolean + default: 'true' + linux: + type: boolean + default: 'true' concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: - MAKEFLAGS: ${{ (github.repository == 'numworks/epsilon-internal') && '-j32' || '-j2' }} + MAKEFLAGS: ${{ (github.repository == 'numworks/epsilon-internal') && '-j32' || '-j4' }} jobs: android: @@ -43,6 +52,7 @@ jobs: path: output/release/simulator/android/epsilon.apk device: runs-on: ${{ (github.repository == 'numworks/epsilon-internal') && 'self-hosted' || 'ubuntu-latest' }} + if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.device == 'true' }} strategy: matrix: model: [n0110, n0115, n0120] @@ -99,6 +109,7 @@ jobs: path: output/release/simulator/windows/epsilon.exe web: runs-on: ${{ (github.repository == 'numworks/epsilon-internal') && 'self-hosted' || 'ubuntu-latest' }} + if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.web == 'true' }} steps: - uses: numworks/setup-emscripten@latest with: @@ -114,6 +125,7 @@ jobs: retention-days: 7 linux: runs-on: ${{ (github.repository == 'numworks/epsilon-internal') && 'self-hosted' || 'ubuntu-latest' }} + if: ${{ github.event_name != 'workflow_dispatch' || github.event.inputs.linux == 'true' }} steps: - uses: numworks/setup-llvm@latest - uses: actions/checkout@v3 diff --git a/apps/apps_container.cpp b/apps/apps_container.cpp index c6e23a83dde..1209e802334 100644 --- a/apps/apps_container.cpp +++ b/apps/apps_container.cpp @@ -169,12 +169,15 @@ bool AppsContainer::processEvent(Ion::Events::Event event) { } if (!Preferences::SharedPreferences()->examMode().isActive()) { openDFU(true); + if (Preferences::SharedPreferences()->examMode().isActive()) { + Ion::USB::enable(); + } } else if (m_firstUSBEnumeration) { displayExamModePopUp(ExamMode(ExamMode::Ruleset::Off)); + m_firstUSBEnumeration = false; // Warning: if the window is dirtied, you need to call window()->redraw() window()->redraw(); } - m_firstUSBEnumeration = false; return true; } if (event == Ion::Events::USBPlug) { @@ -452,6 +455,7 @@ void AppsContainer::openDFU(bool blocking) { } else if (preferences->examMode() != activeExamMode || preferences->forceExamModeReload()) { setExamMode(preferences->examMode(), Ion::ExamMode::get()); + m_firstUSBEnumeration = true; } // Update LED when exiting DFU mode Ion::LED::updateColorWithPlugAndCharge(); diff --git a/apps/calculation/test/calculation_store.cpp b/apps/calculation/test/calculation_store.cpp index 06c64adda36..de6c747f2c9 100644 --- a/apps/calculation/test/calculation_store.cpp +++ b/apps/calculation/test/calculation_store.cpp @@ -912,9 +912,10 @@ QUIZ_CASE(calculation_additional_results) { assertCalculationAdditionalResultTypeHas("√(-1)", {}, &globalContext, &store); assertCalculationAdditionalResultTypeHas("{1}", {}, &globalContext, &store); assertCalculationAdditionalResultTypeHas("{i}", {}, &globalContext, &store); - /* TODO: Not working on windows - * assertCalculationAdditionalResultTypeHas("i^(2×e^(7i^(2×e^322)))", {}, - * &globalContext, &store);*/ +#ifndef PLATFORM_WINDOWS + assertCalculationAdditionalResultTypeHas("i^(2×e^(7i^(2×e^322)))", {}, + &globalContext, &store); +#endif assertCalculationAdditionalResultTypeHas("ln(3+4)", {}, &globalContext, &store); diff --git a/apps/code/script_template.cpp b/apps/code/script_template.cpp index 0cd78c98193..6ec3b7c5e39 100644 --- a/apps/code/script_template.cpp +++ b/apps/code/script_template.cpp @@ -27,7 +27,7 @@ constexpr ScriptTemplate mandelbrotScriptTemplate( import kandinsky def mandelbrot(N_iteration): for x in range(320): - for y in range(222): + for y in range(112): # Compute the mandelbrot sequence for the point c = (c_r, c_i) with start value z = (z_r, z_i) z = complex(0,0) # Rescale to fit the drawing screen 320x222 @@ -40,7 +40,8 @@ def mandelbrot(N_iteration): rgb = int(255*i/N_iteration) col = kandinsky.color(int(rgb),int(rgb*0.75),int(rgb*0.25)) # Draw a pixel colored in 'col' at position (x,y) - kandinsky.set_pixel(x,y,col))"); + kandinsky.set_pixel(x,y,col) + kandinsky.set_pixel(x,222-y,col))"); constexpr ScriptTemplate polynomialScriptTemplate("polynomial.py", R"(from math import * diff --git a/apps/code/test/python_variable_box.cpp b/apps/code/test/python_variable_box.cpp index 2520ee6296b..9e643aa93a9 100644 --- a/apps/code/test/python_variable_box.cpp +++ b/apps/code/test/python_variable_box.cpp @@ -58,8 +58,10 @@ void assert_variables_are(const char *script, } QUIZ_CASE(python_variable_box) { +#ifndef PLATFORM_WINDOWS const char *expectedVariables[] = {"froo", "from", "frozenset()"}; // FIXME This test does not load imported variables for now assert_variables_are("\x01 from math import *\nfroo=3", 21, 2, expectedVariables, std::size(expectedVariables)); +#endif } diff --git a/apps/solver/list_controller.h b/apps/solver/list_controller.h index 2807a76f1d7..f57382575ea 100644 --- a/apps/solver/list_controller.h +++ b/apps/solver/list_controller.h @@ -39,10 +39,6 @@ class ListController : public Shared::ExpressionModelListController, Ion::Events::Event event) override; void layoutFieldDidChangeSize(Escher::LayoutField* layoutField) override; void layoutFieldDidAbortEditing(Escher::LayoutField* layoutField) override; - bool shouldInsertSingleQuoteInsteadOfDoubleQuotes( - Escher::LayoutField* layoutField) override { - return false; - } bool isAcceptableExpression(const Poincare::Expression expression, Poincare::Context* context) override; /* ExpressionModelListController */ diff --git a/build/config.mak b/build/config.mak index f0bb8b9d722..4e08e65dd2e 100644 --- a/build/config.mak +++ b/build/config.mak @@ -4,7 +4,7 @@ PLATFORM ?= device DEBUG ?= 0 DEVELOPMENT ?= 0 -EPSILON_VERSION ?= 23.1.0 +EPSILON_VERSION ?= 23.2.3 EXTERNAL_APPS_API_LEVEL ?= 0 EPSILON_APPS ?= calculation graph code statistics distributions inference solver sequence regression elements finance settings EPSILON_GETOPT ?= 0 diff --git a/build/platform.simulator.windows.mak b/build/platform.simulator.windows.mak index ad3e62e435f..1022bc8908c 100644 --- a/build/platform.simulator.windows.mak +++ b/build/platform.simulator.windows.mak @@ -3,3 +3,5 @@ EXE = exe EPSILON_TELEMETRY ?= 0 TERMS_OF_USE ?= 0 + +SFLAGS += -DPLATFORM_WINDOWS diff --git a/escher/include/escher/layout_field_delegate.h b/escher/include/escher/layout_field_delegate.h index 439b9920638..0d929e1c1d4 100644 --- a/escher/include/escher/layout_field_delegate.h +++ b/escher/include/escher/layout_field_delegate.h @@ -35,10 +35,6 @@ class LayoutFieldDelegate : public ContextProvider { Escher::LayoutField* layoutField) const { return false; } - virtual bool shouldInsertSingleQuoteInsteadOfDoubleQuotes( - LayoutField* layoutField) { - return true; - } virtual void updateRepetitionIndexes(LayoutField* layoutField, Ion::Events::Event event) {} }; diff --git a/escher/src/layout_field.cpp b/escher/src/layout_field.cpp index 99629546d13..456ec74c357 100644 --- a/escher/src/layout_field.cpp +++ b/escher/src/layout_field.cpp @@ -583,8 +583,7 @@ size_t LayoutField::getTextFromEvent(Ion::Events::Event event, char *buffer, m_delegate->shouldInsertTextForAnsEvent(this)) { return strlcpy(buffer, Symbol::k_ansAliases.mainAlias(), bufferSize); } - if (event == Ion::Events::DoubleQuotes && m_delegate && - m_delegate->shouldInsertSingleQuoteInsteadOfDoubleQuotes(this)) { + if (event == Ion::Events::DoubleQuotes) { return SerializationHelper::CodePoint(buffer, bufferSize, '\''); } return Ion::Events::copyText(static_cast(event), buffer, bufferSize); diff --git a/ion/src/device/epsilon-core b/ion/src/device/epsilon-core index c7fe4276f64..d87a374ea37 160000 --- a/ion/src/device/epsilon-core +++ b/ion/src/device/epsilon-core @@ -1 +1 @@ -Subproject commit c7fe4276f6440c7a3de1dcad4d9f550d144188dd +Subproject commit d87a374ea3780190fe37af4acb411bd0e7185513 diff --git a/poincare/include/poincare/input_beautification.h b/poincare/include/poincare/input_beautification.h index d97629a13c6..3c9b06d2275 100644 --- a/poincare/include/poincare/input_beautification.h +++ b/poincare/include/poincare/input_beautification.h @@ -95,6 +95,10 @@ class InputBeautification { return static_cast( CodePointLayout::Builder(UCodePointMultiplicationSign)); }}, + {"''", 0, + [](Layout* parameters) { + return static_cast(CodePointLayout::Builder('"')); + }}, }; constexpr static BeautificationRule k_infRule = { diff --git a/poincare/src/input_beautification.cpp b/poincare/src/input_beautification.cpp index 82118924d8c..1e763561384 100644 --- a/poincare/src/input_beautification.cpp +++ b/poincare/src/input_beautification.cpp @@ -18,7 +18,8 @@ InputBeautification::BeautificationMethodWhenInsertingLayout( * = Do not apply any beautfication. * Example: "pi|" -> insert "a" -> "pia|" (do not beautify "pi" yet) * */ - if (LayoutIsIdentifierMaterial(leftMostLayout)) { + if (LayoutIsIdentifierMaterial(leftMostLayout) && + static_cast(leftMostLayout).codePoint() != '\'') { return BeautificationMethod{.beautifyIdentifiersBeforeInserting = false, .beautifyAfterInserting = false}; } diff --git a/poincare/test/approximation.cpp b/poincare/test/approximation.cpp index 7f5f8b5b5f0..f965dc9837e 100644 --- a/poincare/test/approximation.cpp +++ b/poincare/test/approximation.cpp @@ -1125,12 +1125,15 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { assert_expression_approximates_to("1/cot(π/2)", Undefined::Name(), Radian); // tan(almost π/2) +#ifndef PLATFORM_WINDOWS assert_expression_approximates_to("tan(1.57079632)", "147169276.57047", Radian); assert_expression_approximates_to("sin(1.57079632)/cos(1.57079632)", "147169276.57047", Radian); assert_expression_approximates_to("1/cot(1.57079632)", "147169276.57047", Radian); +#endif + // Advanced function : cot assert_expression_approximates_to("cot(2)", "-0.45765755436029", Radian); @@ -1145,6 +1148,7 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { Radian); assert_expression_approximates_to("cos(π/2)/sin(π/2)", "0", Radian); assert_expression_approximates_to("cot(π/2)", "0", Radian); +#ifndef PLATFORM_WINDOWS // cot(almost π/2) assert_expression_approximates_to("1/tan(1.57079632)", "6.7948964845335ᴇ-9", Radian); @@ -1152,6 +1156,7 @@ QUIZ_CASE(poincare_approximation_trigonometry_functions) { "6.7948964845335ᴇ-9", Radian); assert_expression_approximates_to("cot(1.57079632)", "6.7948964845335ᴇ-9", Radian); +#endif /* acos: [-1,1] -> R * ]-inf,-1[ -> π+R×i (odd imaginary) diff --git a/python/test/basics.cpp b/python/test/basics.cpp index 8bbd7cc4d6d..652a3254f0a 100644 --- a/python/test/basics.cpp +++ b/python/test/basics.cpp @@ -64,7 +64,9 @@ QUIZ_CASE(python_template) { } QUIZ_CASE(python_fixes) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "'abcd'*2**62"); deinit_environment(); +#endif } diff --git a/python/test/ion.cpp b/python/test/ion.cpp index 3e1d00f808b..802b845f78d 100644 --- a/python/test/ion.cpp +++ b/python/test/ion.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_ion_import) { +#ifndef PLATFORM_WINDOWS // Test "from ion import *" TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "keydown(KEY_LEFT)"); @@ -16,11 +17,14 @@ QUIZ_CASE(python_ion_import) { assert_command_execution_succeeds(env, "import ion"); assert_command_execution_succeeds(env, "ion.keydown(ion.KEY_LEFT)"); deinit_environment(); +#endif } QUIZ_CASE(python_ion_keydown) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from ion import *"); assert_command_execution_succeeds(env, "keydown(KEY_LEFT)", "False\n"); deinit_environment(); +#endif } diff --git a/python/test/kandinsky.cpp b/python/test/kandinsky.cpp index ed98741019c..92c405dabd3 100644 --- a/python/test/kandinsky.cpp +++ b/python/test/kandinsky.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_kandinsky_import) { +#ifndef PLATFORM_WINDOWS // Test "from kandinsky import *" TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "get_pixel(0,0)"); @@ -16,9 +17,11 @@ QUIZ_CASE(python_kandinsky_import) { assert_command_execution_succeeds(env, "import kandinsky"); assert_command_execution_succeeds(env, "kandinsky.get_pixel(0,0)"); deinit_environment(); +#endif } QUIZ_CASE(python_kandinsky_basics) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from kandinsky import *"); assert_command_execution_succeeds(env, "set_pixel(0,0,color(12,12,12))"); @@ -26,4 +29,5 @@ QUIZ_CASE(python_kandinsky_basics) { assert_command_execution_succeeds(env, "fill_rect(0,0,10,10,color(2,3,2))"); assert_command_execution_succeeds(env, "draw_string('hello',0,0)"); deinit_environment(); +#endif } diff --git a/python/test/math.cpp b/python/test/math.cpp index 7c99731fbb0..3756be322a5 100644 --- a/python/test/math.cpp +++ b/python/test/math.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_math) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from math import *"); assert_command_execution_succeeds(env, "e", "2.718281828459045\n"); @@ -59,9 +60,11 @@ QUIZ_CASE(python_math) { "9000000009000000009\n"); assert_command_execution_succeeds(env, "gcd()", "0\n"); deinit_environment(); +#endif } QUIZ_CASE(python_cmath) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from cmath import *"); assert_command_execution_succeeds(env, "cos(0)", "(1+-0j)\n"); @@ -88,4 +91,5 @@ QUIZ_CASE(python_cmath) { */ // clang-format on deinit_environment(); +#endif } diff --git a/python/test/matplotlib.cpp b/python/test/matplotlib.cpp index 628befa853b..2ae4470c07f 100644 --- a/python/test/matplotlib.cpp +++ b/python/test/matplotlib.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_matplotlib_pyplot_import) { +#ifndef PLATFORM_WINDOWS // Test "from matplotlib.pyplot import *" TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "arrow(2,3,4,5)"); @@ -30,9 +31,11 @@ QUIZ_CASE(python_matplotlib_pyplot_import) { assert_command_execution_succeeds(env, "import matplotlib.pyplot"); assert_command_execution_succeeds(env, "matplotlib.pyplot.arrow(2,3,4,5)"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_arrow) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "arrow(2,3,4,5)"); @@ -43,9 +46,11 @@ QUIZ_CASE(python_matplotlib_pyplot_arrow) { assert_command_execution_succeeds(env, "arrow(2,3,4,5,color=\"red\")"); assert_command_execution_succeeds(env, "show()"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_axis) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "axis((2,3,4,5))"); @@ -54,9 +59,11 @@ QUIZ_CASE(python_matplotlib_pyplot_axis) { assert_command_execution_succeeds(env, "show()"); assert_command_execution_fails(env, "axis(2,3,4,5)"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_bar) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "bar([0,2,3],[10,12,23])"); @@ -75,17 +82,21 @@ QUIZ_CASE(python_matplotlib_pyplot_bar) { assert_command_execution_fails(env, "bar(1,[])"); assert_command_execution_fails(env, "bar(1,[1,2,3],[])"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_grid) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "grid(True)"); assert_command_execution_succeeds(env, "grid()"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_hist) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "hist(0)"); @@ -97,9 +108,11 @@ QUIZ_CASE(python_matplotlib_pyplot_hist) { env, "hist([2,3,4,5,6],[0,2,3, 4,5,6,7], color=(0,255,0))"); assert_command_execution_succeeds(env, "show()"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_plot) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "plot([2,3,4,5,6])"); @@ -110,9 +123,11 @@ QUIZ_CASE(python_matplotlib_pyplot_plot) { assert_command_execution_succeeds(env, "show()"); assert_command_execution_fails(env, "plot([2,3,4,5,6],2)"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_scatter) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "scatter(2,3)"); @@ -124,12 +139,15 @@ QUIZ_CASE(python_matplotlib_pyplot_scatter) { assert_command_execution_fails(env, "scatter(2)"); assert_command_execution_succeeds(env, "scatter(2,3,4)"); deinit_environment(); +#endif } QUIZ_CASE(python_matplotlib_pyplot_text) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from matplotlib.pyplot import *"); assert_command_execution_succeeds(env, "text(2,3,'hello')"); assert_command_execution_succeeds(env, "show()"); deinit_environment(); +#endif } diff --git a/python/test/numpy.cpp b/python/test/numpy.cpp index 6ed2c71403c..e01e541bf2d 100644 --- a/python/test/numpy.cpp +++ b/python/test/numpy.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_numpy) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); // Test "from matplotlib.pyplot import *" assert_command_execution_fails(env, "np.array([1,3,4])"); @@ -64,4 +65,5 @@ QUIZ_CASE(python_numpy) { assert_command_execution_succeeds(env, "np.arange(0,0)", "array([])\n"); assert_command_execution_fails(env, "np.arange(0,3,0)"); assert_command_execution_fails(env, "np.concatenate((0,0))"); +#endif } diff --git a/python/test/random.cpp b/python/test/random.cpp index 93df0224bbe..1df2f73da1e 100644 --- a/python/test/random.cpp +++ b/python/test/random.cpp @@ -3,6 +3,7 @@ #include "execution_environment.h" QUIZ_CASE(python_random) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "random()"); assert_command_execution_succeeds(env, "from random import *"); @@ -15,4 +16,5 @@ QUIZ_CASE(python_random) { assert_command_execution_succeeds(env, "uniform(0.3,2.1)", "1.509734470828188\n"); deinit_environment(); +#endif } diff --git a/python/test/time.cpp b/python/test/time.cpp index d14354d185e..a6d89b6d67d 100644 --- a/python/test/time.cpp +++ b/python/test/time.cpp @@ -3,10 +3,12 @@ #include "execution_environment.h" QUIZ_CASE(python_time) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "monotonic()"); assert_command_execution_succeeds(env, "from time import *"); assert_command_execution_succeeds(env, "monotonic()"); assert_command_execution_succeeds(env, "sleep(23)"); deinit_environment(); +#endif } diff --git a/python/test/turtle.cpp b/python/test/turtle.cpp index d98c8584860..6f3191446ea 100644 --- a/python/test/turtle.cpp +++ b/python/test/turtle.cpp @@ -5,6 +5,7 @@ // TODO: to be completed QUIZ_CASE(python_turtle) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_fails(env, "forward(3)"); assert_command_execution_succeeds(env, "from turtle import *"); @@ -25,9 +26,11 @@ QUIZ_CASE(python_turtle) { assert_command_execution_succeeds(env, "isdown()", "False\n"); assert_command_execution_succeeds(env, "showturtle()"); deinit_environment(); +#endif } QUIZ_CASE(python_turtle_circle) { +#ifndef PLATFORM_WINDOWS // Turtle position should be unchanged after a complete circle TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from turtle import *"); @@ -36,9 +39,11 @@ QUIZ_CASE(python_turtle_circle) { // FIXME: this is actually not true // assert_command_execution_succeeds(env, "position()", "(0.0, 0.0)\n"); deinit_environment(); +#endif } QUIZ_CASE(python_turtle_distance) { +#ifndef PLATFORM_WINDOWS TestExecutionEnvironment env = init_environement(); assert_command_execution_succeeds(env, "from turtle import *"); assert_command_execution_succeeds(env, "goto(10,10)"); @@ -53,4 +58,5 @@ QUIZ_CASE(python_turtle_distance) { assert_command_execution_fails(env, "distance(,10)"); assert_command_execution_fails(env, "distance(10,)"); deinit_environment(); +#endif } diff --git a/tests/screenshots_dataset/beautification_double_quotes/crc32.txt b/tests/screenshots_dataset/beautification_double_quotes/crc32.txt new file mode 100644 index 00000000000..73c2a5086e4 --- /dev/null +++ b/tests/screenshots_dataset/beautification_double_quotes/crc32.txt @@ -0,0 +1 @@ +902DE8D1 \ No newline at end of file diff --git a/tests/screenshots_dataset/beautification_double_quotes/scenario.nws b/tests/screenshots_dataset/beautification_double_quotes/scenario.nws new file mode 100644 index 00000000000..328b24dbd82 --- /dev/null +++ b/tests/screenshots_dataset/beautification_double_quotes/scenario.nws @@ -0,0 +1 @@ +NWSF**.**.**fr4 ||||4 ||| \ No newline at end of file diff --git a/tests/screenshots_dataset/solver_double_quotes_key/crc32.txt b/tests/screenshots_dataset/solver_double_quotes_key/crc32.txt deleted file mode 100644 index 15f5020c7ad..00000000000 --- a/tests/screenshots_dataset/solver_double_quotes_key/crc32.txt +++ /dev/null @@ -1 +0,0 @@ -FCCF188A \ No newline at end of file diff --git a/tests/screenshots_dataset/solver_double_quotes_key/scenario.nws b/tests/screenshots_dataset/solver_double_quotes_key/scenario.nws deleted file mode 100644 index a9ec2888d6c..00000000000 --- a/tests/screenshots_dataset/solver_double_quotes_key/scenario.nws +++ /dev/null @@ -1 +0,0 @@ -NWSF**.**.**fr4 | |- | |4 \ No newline at end of file