1 ;; SPDX-License-Identifier: BSD-3-Clause
5 (in-suite package-system-tests
)
7 (test-ps-js operator-packages1
11 (defpackage #:ps-test.my-library
13 (setf (ps-package-prefix '#:ps-test.my-library
) "my_library_")
15 (test-ps-js lib-function1
16 (defun ps-test.my-library
::library-function
(x y
)
18 "function my_library_libraryFunction(x, y) {
22 (test-ps-js uniform-symbol-handling1
23 (progn (create ps-test.my-library
::foo
1)
24 (getprop foo
'ps-test.my-library
::foo
))
25 "({ my_library_foo : 1 });
28 (let ((map (make-hash-table)))
29 (defun symbol-obfuscator (symbol)
30 (or #1=(gethash symbol map
)
31 (setf #1# (make-symbol (map 'string
(lambda (x)
32 (code-char (1+ (char-code x
))))
33 (symbol-name symbol
)))))))
35 (defpackage #:ps-test.obfuscate-me
)
36 (obfuscate-package '#:ps-test.obfuscate-me
#'symbol-obfuscator
)
38 (test-ps-js obfuscation1
39 (defun ps-test.obfuscate-me
::libfun2
(a b ps-test.obfuscate-me
::foo
)
40 (+ a
(ps-test.my-library
::library-function b ps-test.obfuscate-me
::foo
)))
41 "function mjcgvo3(a, b, gpp) {
42 return a + my_library_libraryFunction(b, gpp);
45 (defpackage #:ps-test.obfuscate-and-prefix
)
46 (obfuscate-package '#:ps-test.obfuscate-and-prefix
#'symbol-obfuscator
)
47 (setf (ps-package-prefix '#:ps-test.obfuscate-and-prefix
) "__FOO___")
49 (test-ps-js obfuscate-and-prefix
50 (defun ps-test.obfuscate-and-prefix
::xfun
(a ps-test.obfuscate-and-prefix
::b ps-test.my-library
::d
)
52 (ps-test.obfuscate-me
::libfun2 ps-test.obfuscate-and-prefix
::b a
)
53 (ps-test.my-library
::library-function ps-test.my-library
::d ps-test.obfuscate-and-prefix
::b
)))
54 "function __FOO___ygvo(a, __FOO___c, my_library_d) {
55 return a * mjcgvo3(__FOO___c, a) * my_library_libraryFunction(my_library_d, __FOO___c);
58 (defpackage #:ps-test.pststpkg
61 (setf (ps-package-prefix '#:ps-test.pststpkg
) "prefix_")
64 (is (string= "prefix_foo;" (normalize-js-code (ps* 'ps-test.pststpkg
::foo
)))))
66 (cl:in-package
#:ps-test.pststpkg
)
68 (ps-test::test-ps-js namespace-and-special-forms
70 (let ((foo (create bar
1 not-a-keyword something
)))
71 (return-from foo
(and (not foo
) (+ (getprop foo
'bar
) some-other-var
)))))
72 "function prefix_foo() {
73 var foo1 = { prefix_bar : 1, prefix_notAKeyword : prefix_something };
74 return !foo1 && foo1.prefix_bar + prefix_someOtherVar;
77 (ps-test::test-ps-js exported-interface
78 (defun ps-test:interface-function
(baz)
79 (+ baz ps-test.obfuscate-me
::foo
))
80 "function interfaceFunction(prefix_baz) {
81 return prefix_baz + gpp;
84 (cl:in-package
#:ps-test
)
86 (test compile-stream-in-package
88 "function __FOO___ygvo(a, __FOO___c, my_library_d) {
89 return a * mjcgvo3(__FOO___c, a) * my_library_libraryFunction(my_library_d, __FOO___c);
91 function interfaceFunction(prefix_baz) {
92 return prefix_baz + gpp;
95 (with-input-from-string (s "
96 (defun ps-test.obfuscate-and-prefix::xfun (a ps-test.obfuscate-and-prefix::b ps-test.my-library::d)
98 (ps-test.obfuscate-me::libfun2 ps-test.obfuscate-and-prefix::b a)
99 (ps-test.my-library::library-function ps-test.my-library::d ps-test.obfuscate-and-prefix::b)))
101 (in-package #:ps-test.pststpkg)
103 (defun ps-test:interface-function (baz)
104 (+ baz ps-test.obfuscate-me::foo))
106 (ps-compile-stream s
)))))