-
-
Notifications
You must be signed in to change notification settings - Fork 9.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TestBuild: Fix indexer bug #24890
TestBuild: Fix indexer bug #24890
Changes from all commits
8a377f8
dc4786c
861170e
c643d59
36d0747
07374cc
ddbb446
ffb9003
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -1,6 +1,12 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import type { Options, PresetProperty, StorybookConfig, TestBuildFlags } from '@storybook/types'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import type { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Options, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
PresetProperty, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
StoriesEntry, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
StorybookConfig, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
TestBuildFlags, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
} from '@storybook/types'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import { normalizeStories, commonGlobOptions } from '@storybook/core-common'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import { isAbsolute, join } from 'path'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import { isAbsolute, join, relative } from 'path'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import slash from 'slash'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
import { glob } from 'glob'; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
@@ -19,30 +25,49 @@ export const framework: PresetProperty<'framework', StorybookConfig> = async (co | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
export const stories: PresetProperty<'stories', StorybookConfig> = async (entries, options) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
if (options?.build?.test?.disableMDXEntries) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const list = normalizeStories(entries, { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
configDir: options.configDir, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
workingDir: options.configDir, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
default_files_pattern: '**/*.@(stories.@(js|jsx|mjs|ts|tsx))', | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const result = ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||
await Promise.all( | ||||||||||||||||||||||||||||||||||||||||||||||||||||
normalizeStories(entries, { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
configDir: options.configDir, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
workingDir: options.configDir, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}).map(({ directory, files }) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
list.map(async ({ directory, files, titlePrefix }) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const pattern = join(directory, files); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const absolutePattern = isAbsolute(pattern) ? pattern : join(options.configDir, pattern); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const absoluteDirectory = isAbsolute(directory) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
? directory | ||||||||||||||||||||||||||||||||||||||||||||||||||||
: join(options.configDir, directory); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
return glob(slash(absolutePattern), { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
...commonGlobOptions(absolutePattern), | ||||||||||||||||||||||||||||||||||||||||||||||||||||
follow: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
files: ( | ||||||||||||||||||||||||||||||||||||||||||||||||||||
await glob(slash(absolutePattern), { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
...commonGlobOptions(absolutePattern), | ||||||||||||||||||||||||||||||||||||||||||||||||||||
follow: true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
).map((f) => relative(absoluteDirectory, f)), | ||||||||||||||||||||||||||||||||||||||||||||||||||||
directory, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
titlePrefix, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
).flatMap((expanded, i) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Isn't using a flatMap a lot simpler? |
||||||||||||||||||||||||||||||||||||||||||||||||||||
const filteredEntries = expanded.filter((s) => !s.endsWith('.mdx')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
).flatMap<StoriesEntry>((expanded, i) => { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
const filteredEntries = expanded.files.filter((s) => !s.endsWith('.mdx')); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
// only return the filtered entries when there is something to filter | ||||||||||||||||||||||||||||||||||||||||||||||||||||
// as webpack is faster with unexpanded globs | ||||||||||||||||||||||||||||||||||||||||||||||||||||
if (filteredEntries.length < expanded.length) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return filteredEntries; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
let items = []; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
if (filteredEntries.length < expanded.files.length) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
items = filteredEntries.map((k) => ({ | ||||||||||||||||||||||||||||||||||||||||||||||||||||
...expanded, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
files: `**/${k}`, | ||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is the part I'm not really happy about... But it was the only solution I could really find without digging into this: storybook/code/lib/core-common/src/utils/glob-to-regexp.ts Lines 3 to 27 in ff6b28e
... and it really do not want to go digging into that code, right now. I'm thinking this is "close enough" for now. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It would be a lot easier to understand what this code was doing if we had a test for it. I am assuming it turns something like:
Into something like:
Where that list can be very long? That seems like it would have a pretty detritmental impact on build times if that list was really long, but I guess we would have to test it it out to know for sure. I wonder if there's a way to hit the most common cases and just drop the Also, what if the |
||||||||||||||||||||||||||||||||||||||||||||||||||||
})); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
} else { | ||||||||||||||||||||||||||||||||||||||||||||||||||||
items = [list[i]]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return entries[i]; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
return items; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}); | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return result; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||||||||||
return entries; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -8,6 +8,7 @@ const isBlocksOnly = process.env.STORYBOOK_BLOCKS_ONLY === 'true'; | |||||||||||||||||||||||||||||||||||||||
const allStories = [ | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
directory: '../manager/src', | ||||||||||||||||||||||||||||||||||||||||
files: '**/*.stories.@(js|jsx|mjs|ts|tsx|mdx)', | ||||||||||||||||||||||||||||||||||||||||
titlePrefix: '@manager', | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
{ | ||||||||||||||||||||||||||||||||||||||||
|
@@ -53,6 +54,11 @@ const config: StorybookConfig = { | |||||||||||||||||||||||||||||||||||||||
'@storybook/addon-designs', | ||||||||||||||||||||||||||||||||||||||||
'@chromaui/addon-visual-tests', | ||||||||||||||||||||||||||||||||||||||||
], | ||||||||||||||||||||||||||||||||||||||||
build: { | ||||||||||||||||||||||||||||||||||||||||
test: { | ||||||||||||||||||||||||||||||||||||||||
disableBlocks: false, | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
}, | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+57
to
+61
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Needed because of: storybook/code/ui/.storybook/preview.tsx Lines 141 to 159 in ab7fd6d
This breaks at runtime, because if blocks is replaced as a module by an empty object, that object (obviously) does not contain what is needed here. |
||||||||||||||||||||||||||||||||||||||||
framework: { | ||||||||||||||||||||||||||||||||||||||||
name: '@storybook/react-vite', | ||||||||||||||||||||||||||||||||||||||||
options: {}, | ||||||||||||||||||||||||||||||||||||||||
|
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why snake case when the other options are camel case?