Skip to content

Commit 4220cb6

Browse files
committed
Run test_steps within futurecoder in test_frontend
1 parent 2bbe56a commit 4220cb6

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

core/translation.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@
3232
def set_language(language):
3333
global current_language
3434
global translation
35+
36+
if language == "None":
37+
# Hack to explicitly set the language to None with an env var, which must be a string
38+
return
39+
3540
current_language = language
3641
translation = gettext.translation(
3742
"futurecoder",

tests/test_frontend.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
del sys.modules["urllib3"] # so that stub_module doesn't complain
1515

16-
assets_dir = Path(__file__).parent / "test_frontend_assets"
16+
this_dir = Path(__file__).parent
17+
assets_dir = this_dir / "test_frontend_assets"
1718
assets_dir.mkdir(exist_ok=True)
1819

1920

@@ -104,6 +105,21 @@ def _tests(driver):
104105
>>> """,
105106
)
106107

108+
editor = driver.find_element_by_css_selector("#editor textarea")
109+
run_button = driver.find_element_by_css_selector(".editor-buttons .btn-primary")
110+
snoop_button = driver.find_element_by_css_selector(".editor-buttons .btn-success")
111+
112+
# Run test_steps within futurecoder!
113+
run_code(editor, run_button, get_test_steps_code())
114+
driver.implicitly_wait(20)
115+
await_result(driver, ">>>", ">>> ")
116+
driver.implicitly_wait(5)
117+
118+
# The above directly modifies the runner callbacks,
119+
# so we need a separate run to reset the callback and print stuff
120+
run_code(editor, run_button, 'print(open("golden_files/None/test_transcript.json").read())')
121+
await_result(driver, "Introducing", (this_dir / "golden_files/en/test_transcript.json").read_text() + "\n>>> ")
122+
107123
# Reverse until at first step
108124
for _ in range(10):
109125
reverse_button.click()
@@ -130,9 +146,6 @@ def _tests(driver):
130146
)
131147

132148
# Run code in editor
133-
editor = driver.find_element_by_css_selector("#editor textarea")
134-
run_button = driver.find_element_by_css_selector(".editor-buttons .btn-primary")
135-
snoop_button = driver.find_element_by_css_selector(".editor-buttons .btn-success")
136149
run_code(editor, run_button, code)
137150

138151
# Check result in terminal
@@ -490,3 +503,13 @@ def check_choice_status(driver, choice_index, status):
490503
choice.get_attribute("class")
491504
for choice in driver.find_elements_by_class_name("prediction-choice")
492505
]
506+
507+
508+
def get_test_steps_code():
509+
code = (this_dir / "test_steps.py").read_text()
510+
code += "os.environ['FUTURECODER_LANGUAGE'] = 'None'\n"
511+
code += "os.environ['FIX_TESTS'] = '1'\n"
512+
code += "test_steps()\n"
513+
# Put all code in one line to avoid ace indentation issues
514+
code = f"exec({code!r}, globals())"
515+
return code

tests/test_steps.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919

2020
def test_steps():
21-
t.set_language(os.environ.get("FUTURECODER_LANGUAGE", "en"))
21+
lang = os.environ.get("FUTURECODER_LANGUAGE", "en")
22+
t.set_language(lang)
2223
list(load_chapters())
2324
runner.reset()
2425
transcript = []
@@ -62,7 +63,9 @@ def output_callback(data):
6263

6364
assert response["passed"] == (not is_message)
6465

65-
path = Path(__file__).parent / "golden_files" / t.current_language / "test_transcript.json"
66+
dirpath = Path(__file__).parent / "golden_files" / lang
67+
dirpath.mkdir(parents=True, exist_ok=True)
68+
path = dirpath / "test_transcript.json"
6669
if os.environ.get("FIX_TESTS", 0):
6770
dump = json.dumps(transcript, indent=4, sort_keys=True)
6871
path.write_text(dump)

0 commit comments

Comments
 (0)