|
24 | 24 | fi |
25 | 25 | } |
26 | 26 |
|
27 | | - # Setup node_modules with ESM-compatible codeceptjs |
28 | | - setup_node_modules() { |
29 | | - local dir="$1" |
30 | | - local node_modules="$dir/node_modules" |
31 | | - local codecept_module="$node_modules/codeceptjs" |
32 | | - |
33 | | - mkdir -p "$codecept_module" |
34 | | - |
35 | | - cat > "$codecept_module/package.json" << 'EOF' |
36 | | -{ |
37 | | - "name": "codeceptjs", |
38 | | - "type": "module", |
39 | | - "exports": { |
40 | | - ".": "./index.js", |
41 | | - "./effects": "./effects.js" |
42 | | - }, |
43 | | - "main": "./index.js" |
44 | | -} |
45 | | -EOF |
46 | | - |
47 | | - ln -sf /codecept/lib/index.js "$codecept_module/index.js" |
48 | | - ln -sf /codecept/lib/effects.js "$codecept_module/effects.js" |
| 27 | + # Ensure /tests/node_modules links to /codecept/node_modules |
| 28 | + if [ -L "/tests/node_modules" ]; then |
| 29 | + # Already a symlink, good |
| 30 | + : |
| 31 | + elif [ -d "/tests/node_modules" ]; then |
| 32 | + # Directory exists, remove it and create symlink |
| 33 | + rm -rf /tests/node_modules |
| 34 | + ln -sf /codecept/node_modules /tests/node_modules |
| 35 | + else |
| 36 | + # Doesn't exist, create symlink |
| 37 | + ln -sf /codecept/node_modules /tests/node_modules |
| 38 | + fi |
49 | 39 |
|
50 | | - for dep_dir in /codecept/node_modules/*; do |
51 | | - dep_name=$(basename "$dep_dir") |
52 | | - if [ "$dep_name" != "codeceptjs" ] && [ ! -e "$node_modules/$dep_name" ]; then |
53 | | - ln -sf "$dep_dir" "$node_modules/$dep_name" 2>/dev/null || true |
54 | | - fi |
55 | | - done |
56 | | - } |
| 40 | + # Ensure /codecept/node_modules/codeceptjs is a symlink to /codecept |
| 41 | + # This allows require('codeceptjs') from CJS modules to work |
| 42 | + if [ -d "/codecept/node_modules/codeceptjs" ] && [ ! -L "/codecept/node_modules/codeceptjs" ]; then |
| 43 | + rm -rf /codecept/node_modules/codeceptjs |
| 44 | + ln -sf /codecept /codecept/node_modules/codeceptjs |
| 45 | + elif [ ! -e "/codecept/node_modules/codeceptjs" ]; then |
| 46 | + ln -sf /codecept /codecept/node_modules/codeceptjs |
| 47 | + fi |
57 | 48 |
|
58 | 49 | # Find codecept config in current directory |
59 | 50 | config_file=$(find . -maxdepth 2 -name "codecept.conf.*" -type f | head -1) |
60 | 51 |
|
61 | 52 | if [ -n "$config_file" ]; then |
62 | 53 | config_dir=$(dirname "$config_file") |
63 | 54 | ensure_esm_package "$config_dir" |
64 | | - setup_node_modules "$config_dir" |
65 | 55 | else |
66 | 56 | ensure_esm_package "$(pwd)" |
67 | | - setup_node_modules "$(pwd)" |
68 | 57 | fi |
69 | 58 |
|
70 | | - # Also setup node_modules in any subdirectories that might contain test files |
71 | | - for test_dir in acceptance test tests; do |
72 | | - if [ -d "$test_dir" ]; then |
73 | | - setup_node_modules "$test_dir" |
74 | | - fi |
75 | | - done |
76 | | - |
77 | 59 | # Run the tests |
78 | 60 | cd /tests/ || exit |
79 | 61 | if [ "$RUN_MULTIPLE" = true ]; then |
|
0 commit comments