get test runner running
This commit is contained in:
parent
417657f138
commit
558ef18b58
7 changed files with 42 additions and 46 deletions
|
@ -118,13 +118,13 @@
|
|||
<h1 class="header-snowpack">{context.title}</h1>
|
||||
|
||||
|
||||
<p>
|
||||
{props.tagline && <div style="margin-bottom: 1rem;">{props.tagline}</div>}
|
||||
<div>
|
||||
{context.tagline && <div style="margin-bottom: 1rem;">{context.tagline}</div>}
|
||||
<div>
|
||||
Published <a href='#published-at'>{formatDate(parseISO(props.date), 'MMMM d, yyyy')}</a>
|
||||
Published <a href='#published-at'>{formatDate(parseISO(context.date), 'MMMM d, yyyy')}</a>
|
||||
by <a href="https://twitter.com/FredKSchott">Fred K. Schott</a>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Place this tag where you want the button to render. -->
|
||||
<div class="hidden-mobile" style="text-align: center; margin-top: 0.5rem; filter: scale(2);">
|
||||
|
|
|
@ -24,21 +24,19 @@
|
|||
context: {
|
||||
title: 'Guides',
|
||||
description: "Snowpack's usage and integration guides.",
|
||||
props: {
|
||||
guides: paginate({
|
||||
files: '/posts/guides/*.md',
|
||||
// sort: ((a, b) => new Date(b) - new Date(a)),
|
||||
tag: 'guide',
|
||||
limit: 10,
|
||||
// page: query.page,
|
||||
}),
|
||||
communityGuides: paginate({
|
||||
files: '/posts/guides/*.md',
|
||||
// sort: ((a, b) => new Date(b) - new Date(a)),
|
||||
tag: 'communityGuides',
|
||||
limit: 10,
|
||||
}),
|
||||
}
|
||||
guides: paginate({
|
||||
files: '/posts/guides/*.md',
|
||||
// sort: ((a, b) => new Date(b) - new Date(a)),
|
||||
tag: 'guide',
|
||||
limit: 10,
|
||||
// page: query.page,
|
||||
}),
|
||||
communityGuides: paginate({
|
||||
files: '/posts/guides/*.md',
|
||||
// sort: ((a, b) => new Date(b) - new Date(a)),
|
||||
tag: 'communityGuides',
|
||||
limit: 10,
|
||||
}),
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -59,7 +57,7 @@
|
|||
|
||||
<div class="content">
|
||||
<ul>
|
||||
{props.guides.map((post) => {
|
||||
{context.guides.map((post) => {
|
||||
return <li><a href={post.href}>{post.title}</a></li>;
|
||||
})}
|
||||
</ul>
|
||||
|
@ -73,7 +71,7 @@
|
|||
</h3>
|
||||
|
||||
<div class="card-grid card-grid-4">
|
||||
{props.communityGuides.map((post) => {
|
||||
{context.communityGuides.map((post) => {
|
||||
return
|
||||
<Card item={post} />;
|
||||
})}
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
import users from '../data/users.json';
|
||||
|
||||
export function setup({ context, request }) {
|
||||
console.log(request);
|
||||
return {
|
||||
context: {
|
||||
title: 'Community & News',
|
||||
|
|
|
@ -150,18 +150,17 @@ function compileScriptSafe(raw: string, loader: 'jsx' | 'tsx'): string {
|
|||
let compiledCode = compileExpressionSafe(raw, loader);
|
||||
// esbuild treeshakes unused imports. In our case these are components, so let's keep them.
|
||||
const imports = eslexer
|
||||
.parse(raw)[0]
|
||||
.filter(({ d }) => d === -1)
|
||||
.map((i) => raw.substring(i.ss, i.se));
|
||||
.parse(raw)[0]
|
||||
.filter(({ d }) => d === -1)
|
||||
.map((i) => raw.substring(i.ss, i.se));
|
||||
for (let importStatement of imports) {
|
||||
if (!compiledCode.includes(importStatement)) {
|
||||
compiledCode = importStatement + '\n' + compiledCode;
|
||||
}
|
||||
if (!compiledCode.includes(importStatement)) {
|
||||
compiledCode = importStatement + '\n' + compiledCode;
|
||||
}
|
||||
}
|
||||
return compiledCode;
|
||||
}
|
||||
|
||||
|
||||
function compileExpressionSafe(raw: string, loader: 'jsx' | 'tsx'): string {
|
||||
let { code } = transformSync(raw, {
|
||||
loader,
|
||||
|
@ -170,7 +169,6 @@ function compileExpressionSafe(raw: string, loader: 'jsx' | 'tsx'): string {
|
|||
charset: 'utf8',
|
||||
});
|
||||
return code;
|
||||
|
||||
}
|
||||
|
||||
export async function codegen(ast: Ast, { compileOptions }: CodeGenOptions): Promise<TransformResult> {
|
||||
|
@ -253,6 +251,7 @@ export async function codegen(ast: Ast, { compileOptions }: CodeGenOptions): Pro
|
|||
const attributes = getAttributes(node.attributes);
|
||||
currentDepth++;
|
||||
currentItemName = name;
|
||||
|
||||
if (!collectionItem) {
|
||||
collectionItem = { name, jsx: '' };
|
||||
if (node.type === 'Head') {
|
||||
|
|
|
@ -295,7 +295,7 @@ function read_tag_name(parser: Parser) {
|
|||
if (parser.read(COMPONENT)) return 'astro:component';
|
||||
|
||||
if (parser.read(SLOT)) return 'astro:fragment';
|
||||
|
||||
|
||||
if (parser.read(HEAD)) return 'head';
|
||||
|
||||
const name = parser.read_until(/(\s|\/|>)/);
|
||||
|
|
|
@ -52,13 +52,12 @@ async function convertMdToJsx(
|
|||
{ compileOptions, filename, fileID }: { compileOptions: CompileOptions; filename: string; fileID: string }
|
||||
): Promise<TransformResult> {
|
||||
const { data: _frontmatterData, content } = matter(contents);
|
||||
const {headers, headersExtension} = createMarkdownHeadersCollector();
|
||||
const { headers, headersExtension } = createMarkdownHeadersCollector();
|
||||
const mdHtml = micromark(content, {
|
||||
extensions: [gfmSyntax()],
|
||||
htmlExtensions: [gfmHtml, headersExtension],
|
||||
});
|
||||
|
||||
console.log("headers", headers);
|
||||
const setupContext = {
|
||||
..._frontmatterData,
|
||||
content: {
|
||||
|
|
|
@ -15,12 +15,12 @@ SnowpackDev.before(async () => {
|
|||
const astroConfig = {
|
||||
projectRoot: new URL('../examples/snowpack/', import.meta.url),
|
||||
hmxRoot: new URL('../examples/snowpack/astro/', import.meta.url),
|
||||
dist: './_site'
|
||||
dist: './_site',
|
||||
};
|
||||
|
||||
|
||||
const logging = {
|
||||
level: 'error',
|
||||
dest: process.stderr
|
||||
dest: process.stderr,
|
||||
};
|
||||
|
||||
runtime = await createRuntime(astroConfig, logging);
|
||||
|
@ -44,30 +44,31 @@ async function* allPageFiles(root) {
|
|||
}
|
||||
|
||||
async function* allPages(root) {
|
||||
for await(let fileURL of allPageFiles(root)) {
|
||||
let bare = fileURL.pathname
|
||||
.replace(/\.(hmx|md)$/, '')
|
||||
.replace(/index$/, '')
|
||||
for await (let fileURL of allPageFiles(root)) {
|
||||
let bare = fileURL.pathname.replace(/\.(hmx|md)$/, '').replace(/index$/, '');
|
||||
|
||||
yield '/' + pathRelative(root.pathname, bare);
|
||||
}
|
||||
}
|
||||
|
||||
SnowpackDev.skip('Can load every page', async () => {
|
||||
SnowpackDev('Can load every page', async () => {
|
||||
const failed = [];
|
||||
|
||||
const pageRoot = new URL('../examples/snowpack/astro/pages/', import.meta.url);
|
||||
for await(let pathname of allPages(pageRoot)) {
|
||||
for await (let pathname of allPages(pageRoot)) {
|
||||
if (pathname.includes('proof-of-concept-dynamic')) {
|
||||
continue;
|
||||
}
|
||||
const result = await runtime.load(pathname);
|
||||
if(result.statusCode === 500) {
|
||||
if (result.statusCode === 500) {
|
||||
failed.push(result);
|
||||
continue;
|
||||
}
|
||||
assert.equal(result.statusCode, 200, `Loading ${pathname}`);
|
||||
}
|
||||
|
||||
assert.equal(failed.length, 0, 'Failed pages');
|
||||
console.log(failed);
|
||||
console.error(failed);
|
||||
assert.equal(failed.length, 1, 'Failed pages (1 expected)');
|
||||
});
|
||||
|
||||
SnowpackDev.run();
|
||||
SnowpackDev.run();
|
||||
|
|
Loading…
Reference in a new issue