summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/specs/README.md1
-rw-r--r--tests/specs/npm/local_dir_no_duplicate_resolution/__test__.jsonc5
-rw-r--r--tests/specs/npm/local_dir_no_duplicate_resolution/deno.json11
-rw-r--r--tests/specs/npm/local_dir_no_duplicate_resolution/main.out5
-rw-r--r--tests/specs/npm/local_dir_no_duplicate_resolution/main.tsx10
-rw-r--r--tests/util/server/src/lib.rs16
6 files changed, 43 insertions, 5 deletions
diff --git a/tests/specs/README.md b/tests/specs/README.md
index d04adbb62..a23fa1ce6 100644
--- a/tests/specs/README.md
+++ b/tests/specs/README.md
@@ -87,6 +87,7 @@ Within the file, you can use the following for matching:
- `[WILDCARD]` - match any text at the wildcard
- `[WILDLINE]` - match any text on the current line
+- `[WILDCHAR]` - match the next character
- `[WILDCHARS(5)]` - match any of the next 5 characters
- `[UNORDERED_START]` followed by many lines then `[UNORDERED_END]` will match
the lines in any order (useful for non-deterministic output)
diff --git a/tests/specs/npm/local_dir_no_duplicate_resolution/__test__.jsonc b/tests/specs/npm/local_dir_no_duplicate_resolution/__test__.jsonc
new file mode 100644
index 000000000..f7cc70f15
--- /dev/null
+++ b/tests/specs/npm/local_dir_no_duplicate_resolution/__test__.jsonc
@@ -0,0 +1,5 @@
+{
+ "tempDir": true,
+ "args": "run -A --log-level=debug main.tsx",
+ "output": "main.out"
+}
diff --git a/tests/specs/npm/local_dir_no_duplicate_resolution/deno.json b/tests/specs/npm/local_dir_no_duplicate_resolution/deno.json
new file mode 100644
index 000000000..ae2f9c1ae
--- /dev/null
+++ b/tests/specs/npm/local_dir_no_duplicate_resolution/deno.json
@@ -0,0 +1,11 @@
+{
+ "nodeModulesDir": true,
+ "imports": {
+ "preact": "npm:preact",
+ "preact-render-to-string": "npm:preact-render-to-string"
+ },
+ "compilerOptions": {
+ "jsx": "react-jsx",
+ "jsxImportSource": "preact"
+ }
+}
diff --git a/tests/specs/npm/local_dir_no_duplicate_resolution/main.out b/tests/specs/npm/local_dir_no_duplicate_resolution/main.out
new file mode 100644
index 000000000..c2141bd7e
--- /dev/null
+++ b/tests/specs/npm/local_dir_no_duplicate_resolution/main.out
@@ -0,0 +1,5 @@
+[WILDCARD]Resolved preact from file:///[WILDLINE]/preact@10.19.6/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs to [WILDLINE]node_modules[WILDCHAR].deno[WILDCHAR]preact@10.19.6[WILDCHAR]node_modules[WILDCHAR]preact
+DEBUG RS - [WILDLINE] - Resolved preact from file:///[WILDLINE]/preact@10.19.6/node_modules/preact/hooks/dist/hooks.mjs to [WILDLINE]node_modules[WILDCHAR].deno[WILDCHAR]preact@10.19.6[WILDCHAR]node_modules[WILDCHAR]preact
+[# ensure that preact is resolving to .deno/preact@10.19.6/node_modules/preact and not .deno/preact-render-to-string@6.4.0/node_modules/preact]
+DEBUG RS - [WILDLINE] - Resolved preact from file:///[WILDLINE]/preact-render-to-string@6.4.0/node_modules/preact-render-to-string/dist/index.mjs to [WILDLINE]node_modules[WILDCHAR].deno[WILDCHAR]preact@10.19.6[WILDCHAR]node_modules[WILDCHAR]preact
+[WILDCARD]
diff --git a/tests/specs/npm/local_dir_no_duplicate_resolution/main.tsx b/tests/specs/npm/local_dir_no_duplicate_resolution/main.tsx
new file mode 100644
index 000000000..efb95ec90
--- /dev/null
+++ b/tests/specs/npm/local_dir_no_duplicate_resolution/main.tsx
@@ -0,0 +1,10 @@
+// this previously was ending up with two preacts and would crash
+import { useMemo } from "preact/hooks";
+import renderToString from "preact-render-to-string";
+
+function Test() {
+ useMemo(() => "test", []);
+ return <div>Test</div>;
+}
+
+const html = renderToString(<Test />);
diff --git a/tests/util/server/src/lib.rs b/tests/util/server/src/lib.rs
index 6bc729199..febbb2066 100644
--- a/tests/util/server/src/lib.rs
+++ b/tests/util/server/src/lib.rs
@@ -897,7 +897,7 @@ fn parse_wildcard_pattern_text(
enum InnerPart<'a> {
Wildcard,
Wildline,
- Wildnum(usize),
+ Wildchars(usize),
UnorderedLines(Vec<&'a str>),
Char,
}
@@ -921,7 +921,12 @@ fn parse_wildcard_pattern_text(
Ok((input, value))
}
- fn parse_wild_num(input: &str) -> ParseResult<usize> {
+ fn parse_wild_char(input: &str) -> ParseResult<()> {
+ let (input, _) = tag("[WILDCHAR]")(input)?;
+ ParseResult::Ok((input, ()))
+ }
+
+ fn parse_wild_chars(input: &str) -> ParseResult<usize> {
let (input, _) = tag("[WILDCHARS(")(input)?;
let (input, times) = parse_num(input)?;
let (input, _) = tag(")]")(input)?;
@@ -929,10 +934,11 @@ fn parse_wildcard_pattern_text(
}
while !self.current_input.is_empty() {
- let (next_input, inner_part) = or5(
+ let (next_input, inner_part) = or6(
map(tag("[WILDCARD]"), |_| InnerPart::Wildcard),
map(tag("[WILDLINE]"), |_| InnerPart::Wildline),
- map(parse_wild_num, InnerPart::Wildnum),
+ map(parse_wild_char, |_| InnerPart::Wildchars(1)),
+ map(parse_wild_chars, InnerPart::Wildchars),
map(parse_unordered_lines, |lines| {
InnerPart::UnorderedLines(lines)
}),
@@ -947,7 +953,7 @@ fn parse_wildcard_pattern_text(
self.queue_previous_text(next_input);
self.parts.push(WildcardPatternPart::Wildline);
}
- InnerPart::Wildnum(times) => {
+ InnerPart::Wildchars(times) => {
self.queue_previous_text(next_input);
self.parts.push(WildcardPatternPart::Wildnum(times));
}