Skip to content

Commit bf84915

Browse files
committed
Fix integration tests
1 parent 6685633 commit bf84915

File tree

1 file changed

+44
-13
lines changed

1 file changed

+44
-13
lines changed

test/test_upload_mock.py

+44-13
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
# a commercial license, send an email to license@arduino.cc.
1515

1616
import tempfile
17+
import sys
1718
import hashlib
1819
import pytest
1920
from pathlib import Path
21+
from typing import Union
2022

2123

2224
def generate_build_dir(sketch_path):
@@ -26,13 +28,26 @@ def generate_build_dir(sketch_path):
2628
return build_dir.resolve()
2729

2830

31+
def generate_expected_output(
32+
output: str, upload_tools: Union[dict, str], data_dir: str, upload_port: str, build_dir: str, sketch_name: str
33+
) -> str:
34+
if isinstance(upload_tools, str):
35+
tool = upload_tools
36+
else:
37+
tool = upload_tools[sys.platform]
38+
return output.format(
39+
tool_executable=tool, data_dir=data_dir, upload_port=upload_port, build_dir=build_dir, sketch_name=sketch_name,
40+
).replace("\\", "/")
41+
42+
2943
testdata = [
3044
(
3145
"",
3246
"arduino:avr:uno",
3347
"arduino:avr@1.8.3",
3448
"/dev/ttyACM0",
35-
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude" '
49+
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude"',
50+
"{tool_executable} "
3651
+ '"-C{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf" '
3752
+ '-v -V -patmega328p -carduino "-P{upload_port}" -b115200 -D "-Uflash:w:{build_dir}/{sketch_name}.ino.hex:i"',
3853
),
@@ -41,7 +56,8 @@ def generate_build_dir(sketch_path):
4156
"arduino:avr:leonardo",
4257
"arduino:avr@1.8.3",
4358
"/dev/ttyACM999",
44-
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude" '
59+
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude"',
60+
"{tool_executable} "
4561
+ '"-C{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf" '
4662
+ '-v -V -patmega32u4 -cavr109 "-P{upload_port}0" -b57600 -D "-Uflash:w:{build_dir}/{sketch_name}.ino.hex:i"',
4763
),
@@ -50,7 +66,8 @@ def generate_build_dir(sketch_path):
5066
"adafruit:avr:flora8",
5167
"adafruit:avr@1.4.13",
5268
"/dev/ttyACM0",
53-
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude" '
69+
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude"',
70+
"{tool_executable} "
5471
+ '"-C{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf" '
5572
+ '-v -patmega32u4 -cavr109 -P{upload_port} -b57600 -D "-Uflash:w:{build_dir}/{sketch_name}.ino.hex:i"',
5673
),
@@ -59,7 +76,8 @@ def generate_build_dir(sketch_path):
5976
"adafruit:avr:flora8",
6077
"adafruit:avr@1.4.13",
6178
"/dev/ttyACM999",
62-
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude" '
79+
'"{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/bin/avrdude"',
80+
"{tool_executable} "
6381
+ '"-C{data_dir}/packages/arduino/tools/avrdude/6.3.0-arduino17/etc/avrdude.conf" '
6482
+ '-v -patmega32u4 -cavr109 -P{upload_port}0 -b57600 -D "-Uflash:w:{build_dir}/{sketch_name}.ino.hex:i"',
6583
),
@@ -68,7 +86,12 @@ def generate_build_dir(sketch_path):
6886
"esp32:esp32:esp32thing",
6987
"esp32:esp32@1.0.6",
7088
"/dev/ttyACM0",
71-
'python "{data_dir}/packages/esp32/tools/esptool_py/3.0.0/esptool.py" '
89+
{
90+
"linux": 'python "{data_dir}/packages/esp32/tools/esptool_py/3.0.0/esptool.py"',
91+
"darwin": '"{data_dir}/packages/esp32/tools/esptool_py/3.0.0/esptool.py"',
92+
"win32": '"{data_dir}/packages/esp32/tools/esptool_py/3.0.0/esptool.exe"',
93+
},
94+
"{tool_executable} "
7295
+ '--chip esp32 --port "{upload_port}" --baud 921600 --before default_reset '
7396
+ "--after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 "
7497
+ '"{data_dir}/packages/esp32/hardware/esp32/1.0.6/tools/partitions/boot_app0.bin" 0x1000 '
@@ -80,7 +103,8 @@ def generate_build_dir(sketch_path):
80103
"esp8266:esp8266:generic",
81104
"esp8266:esp8266@3.0.1",
82105
"/dev/ttyACM0",
83-
'"{data_dir}/packages/esp8266/tools/python3/3.7.2-post1/python3" '
106+
'"{data_dir}/packages/esp8266/tools/python3/3.7.2-post1/python3"',
107+
"{tool_executable} "
84108
+ '"{data_dir}/packages/esp8266/hardware/esp8266/3.0.1/tools/upload.py" '
85109
+ '--chip esp8266 --port "{upload_port}" --baud "115200" "" '
86110
+ "--before default_reset --after hard_reset write_flash 0x0 "
@@ -89,17 +113,19 @@ def generate_build_dir(sketch_path):
89113
]
90114

91115

92-
@pytest.mark.parametrize("index, fqbn, core, upload_port, expected_output", testdata)
93-
def test_upload_sketch(run_command, session_data_dir, downloads_dir, index, fqbn, core, upload_port, expected_output):
116+
@pytest.mark.parametrize("package_index, fqbn, core, upload_port, upload_tools, output", testdata)
117+
def test_upload_sketch(
118+
run_command, session_data_dir, downloads_dir, package_index, fqbn, core, upload_port, upload_tools, output
119+
):
94120
env = {
95121
"ARDUINO_DATA_DIR": session_data_dir,
96122
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
97123
"ARDUINO_SKETCHBOOK_DIR": session_data_dir,
98124
}
99125

100-
if index:
126+
if package_index:
101127
assert run_command("config init --overwrite", custom_env=env)
102-
assert run_command(f"config add board_manager.additional_urls {index}", custom_env=env)
128+
assert run_command(f"config add board_manager.additional_urls {package_index}", custom_env=env)
103129
assert run_command("update", custom_env=env)
104130

105131
assert run_command(f"core install {core}", custom_env=env)
@@ -115,6 +141,11 @@ def test_upload_sketch(run_command, session_data_dir, downloads_dir, index, fqbn
115141
res = run_command(f'upload -p {upload_port} -b {fqbn} "{sketch_path}" --dry-run -v', custom_env=env)
116142
assert res.ok
117143

118-
assert expected_output.format(
119-
data_dir=session_data_dir, upload_port=upload_port, build_dir=build_dir, sketch_name=sketch_name
120-
).replace("\\", "/") in res.stdout.replace("\\", "/")
144+
generate_expected_output(
145+
output=output,
146+
upload_tools=upload_tools,
147+
data_dir=session_data_dir,
148+
upload_port=upload_port,
149+
build_dir=build_dir,
150+
sketch_name=sketch_name,
151+
) in res.stdout.replace("\\", "/")

0 commit comments

Comments
 (0)