@@ -3804,21 +3804,34 @@ def check(text):
38043804 stderr = self.expect_fail([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../data1.txt'])
38053805 self.assertContained('which is not contained within the current directory', stderr)
38063806
3807+ stderr = self.expect_fail([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../data1.txt', '--modularize'])
3808+ self.assertContained('which is not contained within the current directory', stderr)
3809+
38073810 # relative path that ends up under us is cool
38083811 proc = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../subdir/data2.txt'], stderr=PIPE, stdout=PIPE)
38093812 self.assertEqual(proc.stderr, '')
38103813 check(proc.stdout)
38113814
3812- # direct path leads to the same code being generated - relative path does not make us do anything different
3813- proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt'], stderr=PIPE, stdout=PIPE)
3814- check(proc2.stdout)
3815- self.assertEqual(proc2.stderr, '')
3815+ proc = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', '../subdir/data2.txt', '--modularize'], stderr=PIPE, stdout=PIPE)
3816+ self.assertEqual(proc.stderr, '')
3817+ check(proc.stdout)
38163818
38173819 def clean(txt):
38183820 lines = txt.splitlines()
38193821 lines = [l for l in lines if 'PACKAGE_UUID' not in l and 'loadPackage({' not in l]
38203822 return ''.join(lines)
38213823
3824+ # direct path leads to the same code being generated - relative path does not make us do anything different
3825+ proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt'], stderr=PIPE, stdout=PIPE)
3826+ check(proc2.stdout)
3827+ self.assertEqual(proc2.stderr, '')
3828+
3829+ self.assertTextDataIdentical(clean(proc.stdout), clean(proc2.stdout))
3830+
3831+ proc2 = self.run_process([FILE_PACKAGER, 'test.data', '--quiet', '--preload', 'data2.txt', '--modularize'], stderr=PIPE, stdout=PIPE)
3832+ check(proc2.stdout)
3833+ self.assertEqual(proc2.stderr, '')
3834+
38223835 self.assertTextDataIdentical(clean(proc.stdout), clean(proc2.stdout))
38233836
38243837 def test_file_packager_response_file(self):
@@ -3919,6 +3932,11 @@ def test_file_packager_returns_error_if_target_equal_to_jsoutput(self):
39193932 err = self.expect_fail([FILE_PACKAGER, 'test.data', '--js-output=test.data'])
39203933 self.assertContained(MESSAGE, err)
39213934
3935+ def test_file_packager_returns_error_if_emcc_and_modularize(self):
3936+ MESSAGE = 'error: Can\'t use modularize option together with --from-emcc since the code should be embedded within emcc\'s code'
3937+ err = self.expect_fail([FILE_PACKAGER, 'test.data', '--modularize', '--from-emcc'])
3938+ self.assertEqual(MESSAGE, err)
3939+
39223940 def test_file_packager_embed(self):
39233941 create_file('data.txt', 'hello data')
39243942
@@ -3945,6 +3963,21 @@ def test_file_packager_embed(self):
39453963 output = self.run_js('a.out.js')
39463964 self.assertContained('hello data', output)
39473965
3966+ def test_filepackager_standalone_modularize(self):
3967+ MESSAGE = 'Remember to build the main file with `-sFORCE_FILESYSTEM` so that it includes support for loading this file package'
3968+
3969+ create_file('data.txt', 'hello data')
3970+ err = self.run_process([FILE_PACKAGER, 'test.data', '--modularize', '--preload', 'data.txt', '--js-output=data.js'], stderr=PIPE).stderr
3971+ self.assertEqual(MESSAGE, err)
3972+
3973+ generated_content = read_file('data.js')
3974+
3975+ expected_opening = "export default function loadDataFile(Module) {"
3976+ expected_closing = "\n};\n// END the loadDataFile function"
3977+
3978+ self.assertContained(expected_opening, generated_content)
3979+ self.assertContained(expected_closing, generated_content)
3980+
39483981 @crossplatform
39493982 def test_file_packager_depfile(self):
39503983 create_file('data1.txt', 'data1')
0 commit comments