Skip to content

Commit eb454df

Browse files
committed
[skip changelog] Fix tests on Windows
1 parent 3c000e1 commit eb454df

File tree

4 files changed

+52
-37
lines changed

4 files changed

+52
-37
lines changed

Diff for: commands/instances.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"net/url"
2626
"os"
2727
"path"
28+
"path/filepath"
2829
"strings"
2930

3031
"github.com/arduino/arduino-cli/arduino/builder"
@@ -779,7 +780,7 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchReq) (*rpc.Archive
779780
}
780781

781782
// Skips build folder
782-
if strings.HasPrefix(filePath.String(), sketchName+"/build") {
783+
if strings.HasPrefix(filePath.String(), sketchName+string(filepath.Separator)+"build") {
783784
continue
784785
}
785786
}

Diff for: test/conftest.py

+15-7
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import os
1616
import platform
1717
import signal
18+
from pathlib import Path
1819

1920
import pytest
2021
import simplejson as json
@@ -84,20 +85,24 @@ def run_command(pytestconfig, data_dir, downloads_dir, working_dir):
8485
Useful reference:
8586
http://docs.pyinvoke.org/en/1.4/api/runners.html#invoke.runners.Result
8687
"""
87-
cli_path = os.path.join(str(pytestconfig.rootdir), "..", "arduino-cli")
88+
89+
cli_path = Path(pytestconfig.rootdir).parent / "arduino-cli"
8890
env = {
8991
"ARDUINO_DATA_DIR": data_dir,
9092
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
9193
"ARDUINO_SKETCHBOOK_DIR": data_dir,
9294
}
93-
os.makedirs(os.path.join(data_dir, "packages"))
95+
(Path(data_dir) / "packages").mkdir()
9496

9597
def _run(cmd_string, custom_working_dir=None):
9698
if not custom_working_dir:
9799
custom_working_dir = working_dir
98-
cli_full_line = "{} {}".format(cli_path, cmd_string)
100+
cli_full_line = '"{}" {}'.format(cli_path, cmd_string)
99101
run_context = Context()
100-
with run_context.cd(custom_working_dir):
102+
# Context.cd() is not used since it doesn't work correctly on Windows.
103+
# It escapes spaces in the path using "\ " but it doesn't always work,
104+
# wrapping the path in quotation marks is the safest approach
105+
with run_context.prefix(f'cd "{custom_working_dir}"'):
101106
return run_context.run(cli_full_line, echo=False, hide=True, warn=True, env=env)
102107

103108
return _run
@@ -114,15 +119,18 @@ def daemon_runner(pytestconfig, data_dir, downloads_dir, working_dir):
114119
http://docs.pyinvoke.org/en/1.4/api/runners.html#invoke.runners.Local
115120
http://docs.pyinvoke.org/en/1.4/api/runners.html
116121
"""
117-
cli_full_line = os.path.join(str(pytestconfig.rootdir), "..", "arduino-cli daemon")
122+
cli_full_line = str(Path(pytestconfig.rootdir).parent / "arduino-cli daemon")
118123
env = {
119124
"ARDUINO_DATA_DIR": data_dir,
120125
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
121126
"ARDUINO_SKETCHBOOK_DIR": data_dir,
122127
}
123-
os.makedirs(os.path.join(data_dir, "packages"))
128+
(Path(data_dir) / "packages").mkdir()
124129
run_context = Context()
125-
run_context.cd(working_dir)
130+
# Context.cd() is not used since it doesn't work correctly on Windows.
131+
# It escapes spaces in the path using "\ " but it doesn't always work,
132+
# wrapping the path in quotation marks is the safest approach
133+
run_context.prefix(f'cd "{working_dir}"')
126134
# Local Class is the implementation of a Runner abstract class
127135
runner = Local(run_context)
128136
runner.run(cli_full_line, echo=False, hide=True, warn=True, env=env, asynchronous=True)

Diff for: test/test_archive.py

+32-26
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ def copy_sketch(working_dir):
3030

3131
def test_archive_no_args(run_command, copy_sketch, working_dir):
3232
result = run_command("archive", copy_sketch)
33+
print(result.stdout)
34+
print(result.stderr)
3335
assert result.ok
3436

3537
archive = zipfile.ZipFile(f"{working_dir}/sketch_simple.zip")
@@ -109,7 +111,8 @@ def test_archive_dot_arg_absolute_zip_path(run_command, copy_sketch, working_dir
109111
archives_folder = f"{working_dir}/my_archives/"
110112
Path(archives_folder).mkdir()
111113

112-
result = run_command(f"archive . {archives_folder}", copy_sketch)
114+
result = run_command(f'archive . "{archives_folder}"', copy_sketch)
115+
print(result.stderr)
113116
assert result.ok
114117

115118
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -165,7 +168,7 @@ def test_archive_dot_arg_absolute_zip_path_and_name_without_extension(run_comman
165168
archives_folder = f"{working_dir}/my_archives/"
166169
Path(archives_folder).mkdir()
167170

168-
result = run_command(f"archive . {archives_folder}/my_custom_sketch", copy_sketch)
171+
result = run_command(f'archive . "{archives_folder}/my_custom_sketch"', copy_sketch)
169172
assert result.ok
170173

171174
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -193,7 +196,7 @@ def test_archive_dot_arg_custom_zip_path_and_name_with_extension(run_command, co
193196
archives_folder = f"{working_dir}/my_archives/"
194197
Path(archives_folder).mkdir()
195198

196-
result = run_command(f"archive . {archives_folder}/my_custom_sketch.zip", copy_sketch)
199+
result = run_command(f'archive . "{archives_folder}/my_custom_sketch.zip"', copy_sketch)
197200
assert result.ok
198201

199202
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -241,7 +244,7 @@ def test_archive_relative_sketch_path(run_command, copy_sketch, working_dir):
241244

242245

243246
def test_archive_absolute_sketch_path(run_command, copy_sketch, working_dir):
244-
result = run_command(f"archive {working_dir}/sketch_simple", copy_sketch)
247+
result = run_command(f'archive "{working_dir}/sketch_simple"', copy_sketch)
245248
assert result.ok
246249

247250
archive = zipfile.ZipFile(f"{working_dir}/sketch_simple.zip")
@@ -297,7 +300,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path(run_command, copy_s
297300
archives_folder = f"{working_dir}/my_archives/"
298301
Path(archives_folder).mkdir()
299302

300-
result = run_command(f"archive ./sketch_simple {archives_folder}")
303+
result = run_command(f'archive ./sketch_simple "{archives_folder}"')
301304
assert result.ok
302305

303306
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -387,7 +390,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path_and_name_without_ex
387390
archives_folder = f"{working_dir}/my_archives/"
388391
Path(archives_folder).mkdir()
389392

390-
result = run_command(f"archive ./sketch_simple {archives_folder}/my_custom_sketch")
393+
result = run_command(f'archive ./sketch_simple "{archives_folder}/my_custom_sketch"')
391394
assert result.ok
392395

393396
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -417,7 +420,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path_and_name_with_exten
417420
archives_folder = f"{working_dir}/my_archives/"
418421
Path(archives_folder).mkdir()
419422

420-
result = run_command(f"archive ./sketch_simple {archives_folder}/my_custom_sketch.zip")
423+
result = run_command(f'archive ./sketch_simple "{archives_folder}/my_custom_sketch.zip"')
421424
assert result.ok
422425

423426
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -445,7 +448,7 @@ def test_archive_absolute_sketch_path_with_relative_zip_path(run_command, copy_s
445448
archives_folder = f"{working_dir}/my_archives/"
446449
Path(archives_folder).mkdir()
447450

448-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives")
451+
result = run_command(f'archive "{working_dir}/sketch_simple" ./my_archives')
449452
assert result.ok
450453

451454
archive = zipfile.ZipFile(f"{working_dir}/my_archives/sketch_simple.zip")
@@ -473,7 +476,7 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path(run_command, copy_s
473476
archives_folder = f"{working_dir}/my_archives/"
474477
Path(archives_folder).mkdir()
475478

476-
result = run_command(f"archive {working_dir}/sketch_simple {archives_folder}", copy_sketch)
479+
result = run_command(f'archive "{working_dir}/sketch_simple" "{archives_folder}"', copy_sketch)
477480
assert result.ok
478481

479482
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -503,7 +506,7 @@ def test_archive_absolute_sketch_path_with_relative_zip_path_and_name_without_ex
503506
archives_folder = f"{working_dir}/my_archives/"
504507
Path(archives_folder).mkdir()
505508

506-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives/my_custom_sketch")
509+
result = run_command(f'archive "{working_dir}/sketch_simple" ./my_archives/my_custom_sketch')
507510
assert result.ok
508511

509512
archive = zipfile.ZipFile(f"{working_dir}/my_archives/my_custom_sketch.zip")
@@ -533,7 +536,7 @@ def test_archive_absolute_sketch_path_with_relative_zip_path_and_name_with_exten
533536
archives_folder = f"{working_dir}/my_archives/"
534537
Path(archives_folder).mkdir()
535538

536-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives/my_custom_sketch.zip")
539+
result = run_command(f'archive "{working_dir}/sketch_simple" ./my_archives/my_custom_sketch.zip')
537540
assert result.ok
538541

539542
archive = zipfile.ZipFile(f"{working_dir}/my_archives/my_custom_sketch.zip")
@@ -563,7 +566,7 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path_and_name_without_ex
563566
archives_folder = f"{working_dir}/my_archives/"
564567
Path(archives_folder).mkdir()
565568

566-
result = run_command(f"archive {working_dir}/sketch_simple {archives_folder}/my_custom_sketch", copy_sketch)
569+
result = run_command(f'archive "{working_dir}/sketch_simple" "{archives_folder}/my_custom_sketch"', copy_sketch)
567570
assert result.ok
568571

569572
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -593,7 +596,7 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path_and_name_with_exten
593596
archives_folder = f"{working_dir}/my_archives/"
594597
Path(archives_folder).mkdir()
595598

596-
result = run_command(f"archive {working_dir}/sketch_simple {archives_folder}/my_custom_sketch.zip", copy_sketch)
599+
result = run_command(f'archive "{working_dir}/sketch_simple" "{archives_folder}/my_custom_sketch.zip"', copy_sketch)
597600
assert result.ok
598601

599602
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -697,7 +700,7 @@ def test_archive_dot_arg_absolute_zip_path_with_include_build_dir_flag(run_comma
697700
archives_folder = f"{working_dir}/my_archives/"
698701
Path(archives_folder).mkdir()
699702

700-
result = run_command(f"archive . {archives_folder} --include-build-dir", copy_sketch)
703+
result = run_command(f'archive . "{archives_folder}" --include-build-dir', copy_sketch)
701704
assert result.ok
702705

703706
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -757,7 +760,7 @@ def test_archive_dot_arg_absolute_zip_path_and_name_without_extension_with_inclu
757760
archives_folder = f"{working_dir}/my_archives/"
758761
Path(archives_folder).mkdir()
759762

760-
result = run_command(f"archive . {archives_folder}/my_custom_sketch --include-build-dir", copy_sketch)
763+
result = run_command(f'archive . "{archives_folder}/my_custom_sketch" --include-build-dir', copy_sketch)
761764
assert result.ok
762765

763766
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -787,7 +790,7 @@ def test_archive_dot_arg_custom_zip_path_and_name_with_extension_with_include_bu
787790
archives_folder = f"{working_dir}/my_archives/"
788791
Path(archives_folder).mkdir()
789792

790-
result = run_command(f"archive . {archives_folder}/my_custom_sketch.zip --include-build-dir", copy_sketch)
793+
result = run_command(f'archive . "{archives_folder}/my_custom_sketch.zip" --include-build-dir', copy_sketch)
791794
assert result.ok
792795

793796
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -835,7 +838,7 @@ def test_archive_relative_sketch_path_with_include_build_dir_flag(run_command, c
835838

836839

837840
def test_archive_absolute_sketch_path_with_include_build_dir_flag(run_command, copy_sketch, working_dir):
838-
result = run_command(f"archive {working_dir}/sketch_simple --include-build-dir", copy_sketch)
841+
result = run_command(f'archive "{working_dir}/sketch_simple" --include-build-dir', copy_sketch)
839842
assert result.ok
840843

841844
archive = zipfile.ZipFile(f"{working_dir}/sketch_simple.zip")
@@ -895,7 +898,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path_with_include_build_
895898
archives_folder = f"{working_dir}/my_archives/"
896899
Path(archives_folder).mkdir()
897900

898-
result = run_command(f"archive ./sketch_simple {archives_folder} --include-build-dir")
901+
result = run_command(f'archive ./sketch_simple "{archives_folder}" --include-build-dir')
899902
assert result.ok
900903

901904
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -985,7 +988,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path_and_name_without_ex
985988
archives_folder = f"{working_dir}/my_archives/"
986989
Path(archives_folder).mkdir()
987990

988-
result = run_command(f"archive ./sketch_simple {archives_folder}/my_custom_sketch --include-build-dir")
991+
result = run_command(f'archive ./sketch_simple "{archives_folder}/my_custom_sketch" --include-build-dir')
989992
assert result.ok
990993

991994
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -1015,7 +1018,7 @@ def test_archive_relative_sketch_path_with_absolute_zip_path_and_name_with_exten
10151018
archives_folder = f"{working_dir}/my_archives/"
10161019
Path(archives_folder).mkdir()
10171020

1018-
result = run_command(f"archive ./sketch_simple {archives_folder}/my_custom_sketch.zip --include-build-dir")
1021+
result = run_command(f'archive ./sketch_simple "{archives_folder}/my_custom_sketch.zip" --include-build-dir')
10191022
assert result.ok
10201023

10211024
archive = zipfile.ZipFile(f"{archives_folder}/my_custom_sketch.zip")
@@ -1045,7 +1048,7 @@ def test_archive_absolute_sketch_path_with_relative_zip_path_with_include_build_
10451048
archives_folder = f"{working_dir}/my_archives/"
10461049
Path(archives_folder).mkdir()
10471050

1048-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives --include-build-dir")
1051+
result = run_command(f'archive "{working_dir}/sketch_simple" ./my_archives --include-build-dir')
10491052
assert result.ok
10501053

10511054
archive = zipfile.ZipFile(f"{working_dir}/my_archives/sketch_simple.zip")
@@ -1075,7 +1078,7 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path_with_include_build_
10751078
archives_folder = f"{working_dir}/my_archives/"
10761079
Path(archives_folder).mkdir()
10771080

1078-
result = run_command(f"archive {working_dir}/sketch_simple {archives_folder} --include-build-dir", copy_sketch)
1081+
result = run_command(f'archive "{working_dir}/sketch_simple" "{archives_folder}" --include-build-dir', copy_sketch)
10791082
assert result.ok
10801083

10811084
archive = zipfile.ZipFile(f"{archives_folder}/sketch_simple.zip")
@@ -1105,7 +1108,7 @@ def test_archive_absolute_sketch_path_with_relative_zip_path_and_name_without_ex
11051108
archives_folder = f"{working_dir}/my_archives/"
11061109
Path(archives_folder).mkdir()
11071110

1108-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives/my_custom_sketch --include-build-dir")
1111+
result = run_command(f'archive "{working_dir}/sketch_simple" ./my_archives/my_custom_sketch --include-build-dir')
11091112
assert result.ok
11101113

11111114
archive = zipfile.ZipFile(f"{working_dir}/my_archives/my_custom_sketch.zip")
@@ -1135,7 +1138,9 @@ def test_archive_absolute_sketch_path_with_relative_zip_path_and_name_with_exten
11351138
archives_folder = f"{working_dir}/my_archives/"
11361139
Path(archives_folder).mkdir()
11371140

1138-
result = run_command(f"archive {working_dir}/sketch_simple ./my_archives/my_custom_sketch.zip --include-build-dir")
1141+
result = run_command(
1142+
f'archive "{working_dir}/sketch_simple" ./my_archives/my_custom_sketch.zip --include-build-dir'
1143+
)
11391144
assert result.ok
11401145

11411146
archive = zipfile.ZipFile(f"{working_dir}/my_archives/my_custom_sketch.zip")
@@ -1166,7 +1171,7 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path_and_name_without_ex
11661171
Path(archives_folder).mkdir()
11671172

11681173
result = run_command(
1169-
f"archive {working_dir}/sketch_simple {archives_folder}/my_custom_sketch --include-build-dir", copy_sketch
1174+
f'archive "{working_dir}/sketch_simple" "{archives_folder}/my_custom_sketch" --include-build-dir', copy_sketch
11701175
)
11711176
assert result.ok
11721177

@@ -1198,7 +1203,8 @@ def test_archive_absolute_sketch_path_with_absolute_zip_path_and_name_with_exten
11981203
Path(archives_folder).mkdir()
11991204

12001205
result = run_command(
1201-
f"archive {working_dir}/sketch_simple {archives_folder}/my_custom_sketch.zip --include-build-dir", copy_sketch
1206+
f'archive "{working_dir}/sketch_simple" "{archives_folder}/my_custom_sketch.zip" --include-build-dir',
1207+
copy_sketch,
12021208
)
12031209
assert result.ok
12041210

Diff for: test/test_config.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# otherwise use the software for commercial activities involving the Arduino
1313
# software without disclosing the source code of your own applications. To purchase
1414
# a commercial license, send an email to [email protected].
15-
import os
15+
from pathlib import Path
1616

1717

1818
def test_init(run_command, data_dir, working_dir):
@@ -22,7 +22,7 @@ def test_init(run_command, data_dir, working_dir):
2222

2323

2424
def test_init_dest(run_command, working_dir):
25-
dest = os.path.join(working_dir, "config", "test")
26-
result = run_command("config init --dest-dir " + dest)
25+
dest = Path(working_dir) / "config" / "test"
26+
result = run_command(f'config init --dest-dir "{dest}"')
2727
assert result.ok
2828
assert dest in result.stdout

0 commit comments

Comments
 (0)