Skip to content

Commit 0a72d80

Browse files
committed
Add file_packager tests and changelog mention
1 parent 63cdc76 commit 0a72d80

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

ChangeLog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ See docs/process.md for more on how version tagging works.
2020

2121
4.0.13 (in development)
2222
-----------------------
23+
- `--modularize` flag was added to `file_packager.py` available when run
24+
standalone, to enable ES6 imports of generated JavaScript code
2325

2426
4.0.12 - 08/01/25
2527
-----------------

test/test_other.py

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3788,21 +3788,34 @@ def check(text):
37883788
stderr = self.expect_fail([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../data1.txt'])
37893789
self.assertContained('which is not contained within the current directory', stderr)
37903790

3791+
stderr = self.expect_fail([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../data1.txt', '--modularize'])
3792+
self.assertContained('which is not contained within the current directory', stderr)
3793+
37913794
# relative path that ends up under us is cool
37923795
proc = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../subdir/data2.txt'], stderr=PIPE, stdout=PIPE)
37933796
self.assertEqual(proc.stderr, '')
37943797
check(proc.stdout)
37953798

3796-
# direct path leads to the same code being generated - relative path does not make us do anything different
3797-
proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt'], stderr=PIPE, stdout=PIPE)
3798-
check(proc2.stdout)
3799-
self.assertEqual(proc2.stderr, '')
3799+
proc = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../subdir/data2.txt', '--modularize'], stderr=PIPE, stdout=PIPE)
3800+
self.assertEqual(proc.stderr, '')
3801+
check(proc.stdout)
38003802

38013803
def clean(txt):
38023804
lines = txt.splitlines()
38033805
lines = [l for l in lines if 'PACKAGE_UUID' not in l and 'loadPackage({' not in l]
38043806
return ''.join(lines)
38053807

3808+
# direct path leads to the same code being generated - relative path does not make us do anything different
3809+
proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt'], stderr=PIPE, stdout=PIPE)
3810+
check(proc2.stdout)
3811+
self.assertEqual(proc2.stderr, '')
3812+
3813+
self.assertTextDataIdentical(clean(proc.stdout), clean(proc2.stdout))
3814+
3815+
proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt', '--modularize'], stderr=PIPE, stdout=PIPE)
3816+
check(proc2.stdout)
3817+
self.assertEqual(proc2.stderr, '')
3818+
38063819
self.assertTextDataIdentical(clean(proc.stdout), clean(proc2.stdout))
38073820

38083821
def test_file_packager_response_file(self):
@@ -3903,6 +3916,11 @@ def test_file_packager_returns_error_if_target_equal_to_jsoutput(self):
39033916
err = self.expect_fail([FILE_PACKAGER, 'test.data', '--js-output=test.data'])
39043917
self.assertContained(MESSAGE, err)
39053918

3919+
def test_file_packager_returns_error_if_emcc_and_modularize(self):
3920+
MESSAGE = 'error: Can\'t use modularize option together with --from-emcc since the code should be embedded within emcc\'s code'
3921+
err = self.expect_fail([FILE_PACKAGER, 'test.data', '--modularize', '--from-emcc'])
3922+
self.assertEqual(MESSAGE, err)
3923+
39063924
def test_file_packager_embed(self):
39073925
create_file('data.txt', 'hello data')
39083926

@@ -3929,6 +3947,21 @@ def test_file_packager_embed(self):
39293947
output = self.run_js('a.out.js')
39303948
self.assertContained('hello data', output)
39313949

3950+
def test_filepackager_standalone_modularize(self):
3951+
MESSAGE = 'Remember to build the main file with `-sFORCE_FILESYSTEM` so that it includes support for loading this file package'
3952+
3953+
create_file('data.txt', 'hello data')
3954+
err = self.run_process([FILE_PACKAGER, 'test.data', '--modularize', '--preload', 'data.txt', '--js-output=data.js'], stderr=PIPE).stderr
3955+
self.assertEqual(MESSAGE, err)
3956+
3957+
generated_content = read_file('data.js')
3958+
3959+
expected_opening = "export default function loadDataFile(Module) {"
3960+
expected_closing = "\n};\n// END the loadDataFile function"
3961+
3962+
self.assertContained(expected_opening, generated_content)
3963+
self.assertContained(expected_closing, generated_content)
3964+
39323965
@crossplatform
39333966
def test_file_packager_depfile(self):
39343967
create_file('data1.txt', 'data1')

tools/file_packager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ def main(): # noqa: C901, PLR0912, PLR0915
492492
return 1
493493

494494
if options.from_emcc and options.modularize:
495-
diagnostics.error('Can\'t use modularize option together with --from-emcc since the code should be embedded'
495+
diagnostics.error('Can\'t use modularize option together with --from-emcc since the code should be embedded '
496496
'within emcc\'s code')
497497
return 1
498498

0 commit comments

Comments
 (0)