Skip to content

Commit

Permalink
Merge branch 'canary' into typescript-default
Browse files Browse the repository at this point in the history
  • Loading branch information
ctjlewis committed Aug 17, 2022
2 parents a398007 + 7fe5c88 commit 3b0cd41
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 3 deletions.
12 changes: 9 additions & 3 deletions packages/create-next-app/helpers/examples.ts
Expand Up @@ -25,9 +25,15 @@ export async function getRepoInfo(
const [, username, name, t, _branch, ...file] = url.pathname.split('/')
const filePath = examplePath ? examplePath.replace(/^\//, '') : file.join('/')

// Support repos whose entire purpose is to be a NextJS example, e.g.
// https://github.com/:username/:my-cool-nextjs-example-repo-name.
if (t === undefined) {
if (
// Support repos whose entire purpose is to be a NextJS example, e.g.
// https://github.com/:username/:my-cool-nextjs-example-repo-name.
t === undefined ||
// Support GitHub URL that ends with a trailing slash, e.g.
// https://github.com/:username/:my-cool-nextjs-example-repo-name/
// In this case "t" will be an empty string while the next part "_branch" will be undefined
(t === '' && _branch === undefined)
) {
const infoResponse = await got(
`https://api.github.com/repos/${username}/${name}`
).catch((e) => e)
Expand Down
30 changes: 30 additions & 0 deletions test/integration/create-next-app/index.test.ts
Expand Up @@ -186,6 +186,36 @@ describe('create next app', () => {
})
})

it('should allow example with GitHub URL with trailing slash', async () => {
await usingTempDir(async (cwd) => {
const projectName = 'github-app'
const res = await run(
[
projectName,
'--example',
'https://github.com/vercel/nextjs-portfolio-starter/',
],
{
cwd,
}
)

expect(res.exitCode).toBe(0)
expect(
fs.existsSync(path.join(cwd, projectName, 'package.json'))
).toBeTruthy()
expect(
fs.existsSync(path.join(cwd, projectName, 'pages/index.mdx'))
).toBeTruthy()
expect(
fs.existsSync(path.join(cwd, projectName, '.gitignore'))
).toBeTruthy()
expect(
fs.existsSync(path.join(cwd, projectName, 'node_modules/next'))
).toBe(true)
})
})

it('should allow example with GitHub URL and example-path', async () => {
await usingTempDir(async (cwd) => {
const projectName = 'github-example-path'
Expand Down

0 comments on commit 3b0cd41

Please sign in to comment.