Commit graph

56 commits

Author SHA1 Message Date
Azeem Sajid
a1136bf5cd Add initial test 2025-03-09 12:19:16 +05:00
Azeem Sajid
cc3dd515a6 Show host name in repo creation prompts 2025-02-28 12:25:49 +05:00
William Martin
7bcb063391 Modify push prompt on repo create when bare 2024-11-11 16:17:06 +01:00
William Martin
e3665955a5 Push --mirror on bare repo create 2024-11-11 16:09:03 +01:00
William Martin
bc85e11d05 Backfill repo creation failure tests 2024-11-11 14:11:16 +01:00
William Martin
4a7f2e57b0 Support bare repo creation 2024-11-11 13:57:05 +01:00
Tyler McGoffin
91eb34011c
Remove Internal from gh repo create prompt when owner is not an org (#9465)
* Remove `Internal` from `gh repo create` prompt when owner is not an org

Closes #9464

Internal repos only exist for organizations, so when a user selects their
personal namespace to create a repo using `gh repo create`, `Internal`
should not be an option in the `Visibility` prompt.

This should avoid the additional quirk where if the user selects
`Internal` while creating a personal repo and then proceeds to add any
of the README, .gitignore, or LICENSE files prompted for later, the repo
will not error and instead get created as a `Public` repo. This has the
potential for a user to unknowingly leak sensitive info intended to go
into a non-public repo.

* Refactor prompter with test coverage

By extracting the repo visibility options to its own function,
getRepoVisibilityOptions, we're able to directly test the behavior
introduced with this change. This breaks the testing pattern established
here thus far, but may be a good example of the direction we should
explore for a future refactor.

* Add failing tests to check for error with internal vis in non-org repos

There is a bug in the code, currently, where a user repo can attempt to be
created as with `--internal` visibility flag  when that is not an option
for non-org repos. It fails at the API level if the --gitignore,
--license, or --add-readme flags are not included, but silently falls back
to Public visibility if one of them is included.

Because this bug already existed, this commit adds the tests to ensure
that both scenarios described above are captured accurately by the test
suite. A fix for the latter scenario will be coming in a future commit

* Add Exclude to httpmock registry and implement in Test_repoCreate

Upon attempting to make the previous commit pass, I realized that it was
actually impossible to test what I wanted to. The tests in the previous
commit were behaving as expected given the bug that commit described, but
upon attempting to implement a solution I realized that the tests were
only testing the mocks and not the code functionality itself.

Essentially, when the code to fix the bug was implemented, the tests were
failing because the mocks required to test the buggy behavior were no
longer being called. To make the tests pass, I'd have to rewrite them, but
were I to remove the bug fix, the tests would no longer fail.

This pointed me to a gap in our httpmocks - the ability to intentionally
exclude api calls. The behavior I'm trying to test, here, is that we stop
executing when a certain condition is met, and therefore won't make any
subsequent api calls down the chain.

This implements the Exclude method on the registry such that it will fail
if an excluded api pattern is called. I have refactored the tests in
Test_repoCreate to use the Exclude mock for testing.

* Add error if user attempts to create repo with --internal flag

This was previously failing at either the API if no other flags were
included or falling back to creating a public repo if one of gitignore,
license, or add-readme were included.

* Add testing for error messages in gh repo create

In the previous commits, we've introduced a new error when a user tries to
create an Internal repo not owned by an organization. This adds tests to
verify that the error we are getting is, in fact, the one associated with
this use case and not some random error.
2024-08-22 10:01:16 -07:00
William Martin
1d38230675
Move config interfaces into gh package (#9060) 2024-05-10 10:39:36 +02:00
Victor Lee
b8c4ea1e7c
added URL for newly created repo (#8574) 2024-01-19 12:16:15 +01:00
Jun Nishimura
7d6fba0d7d
Create repositories from templates in interactive mode (#7769) 2023-10-12 17:53:05 +02:00
Shion Ichikawa
a5400effd8
🐛 (repo create)execute clone when readme option is enabled (#7837)
* 🐛 (repo create)execute clone when readme option is enabled

*  (repo/create)noninteractive clone with readme

* 🔥 (repo/create)remove printing statement
2023-08-28 14:09:02 +00:00
Heath Stewart
3085c39a73
Specify branch to force exit code 2023-03-29 07:44:17 -07:00
Heath Stewart
36436cb8b8
Retry fetching repo from template
Fixes #7055
2023-03-29 07:44:16 -07:00
Skip Baney
06360429de
Prompt for owner when interactively creating repos (#6578) 2022-12-08 08:52:36 +02:00
Sam Coe
98ab1f2587
Authenticate network git commands (#6541) 2022-11-15 13:14:37 +02:00
Sam Coe
f96b2fce57
Refactor git client and add tests (#6525) 2022-11-03 11:58:38 +01:00
Sam Coe
4294ee14a1
revert revert 57fbe4f317 (#6474) 2022-10-20 12:17:20 +00:00
Sam Coe
2cefb9fa59
Fix pr create regression (#6472)
* Revert "Refactor to use new git client (#6447)"

This reverts commit 57fbe4f317.

* Fix pr create regression
2022-10-20 12:46:23 +03:00
Sam Coe
57fbe4f317
Refactor to use new git client (#6447) 2022-10-19 21:11:36 +03:00
Sam Coe
2944f7c3ab
Create git client (#6354) 2022-10-14 07:47:03 +00:00
Mislav Marohnić
113acf9245
Add the option to generate a README for the created repository (#6264) 2022-09-21 16:08:26 +02:00
Mislav Marohnić
5656296ade repo fork: directly fork under the desired name
A new GitHub feature landed where the API client can specify the desired
name of the new fork. This avoids the necessity of subsequently having
to rename the forked repo after the fork operation has created one.

For backwards compatibility, the renaming logic is still here, but
activates only if the resulting repo name is not the desired name.
2022-07-11 13:54:58 +02:00
ffalor
2918c538b3
add include-all-branches flag to repo create (#5537) 2022-05-23 10:11:55 +02:00
Håvard Anda Estensen
58cb773e09
Replace ioutil with io and os (#5498) 2022-04-26 13:07:44 +02:00
Mislav Marohnić
44775f87c8 Add nolint directives to allow-list current lint violations 2022-01-14 19:52:52 +01:00
Mislav Marohnić
649e30ce2a Fix ask stubs in repo create tests 2022-01-13 11:17:42 +01:00
Mislav Marohnić
c90fc18b0c Avoid creating repo when cancelling from interactive mode 2021-12-14 18:18:08 +01:00
Mislav Marohnić
21e6d95982 Fix repo create printing created URL in no-TTY mode 2021-12-14 17:49:43 +01:00
Benjamin Chadwick
6cc7712583
Confirm name change before creating a repo with special characters (#4562)
Co-authored-by: Mislav Marohnić <mislav@github.com>
2021-11-18 13:24:48 +00:00
Meijke
0a0a358168
rewrite gh repo create (#4578)
Co-authored-by: Parth Patel <ppatil91099@gmail.com>
2021-11-17 20:16:37 +01:00
Mislav Marohnić
11fbb60ae7 Rename the module to "github.com/cli/cli/v2" 2021-08-25 12:41:30 +02:00
Mislav Marohnić
5c21c949a0 Merge remote-tracking branch 'origin' into fix/private-repo-create 2021-07-15 12:58:00 +02:00
Mislav Marohnić
0ad153f696 Separate payload structs for REST vs GraphQL repo create
This enforces strict separation between serialization structs used for
repository creation payload with respect to whether GraphQL or REST was
used. Before, a field added to a GraphQL payload would leak to REST
payload (and vice versa).
2021-07-15 12:56:14 +02:00
Des Preston
17b58bf0b2 fix repo create --confirm
Respect the --confirm flag when deciding whether to prompt for gitignore
and license creation during `repo create`

Fixes #3989
2021-07-14 09:59:04 -04:00
vilmibm
589b695bcf test for org + license/ignore 2021-06-30 17:41:39 -05:00
Gowtham Munukutla
137053399e tweak tests and add extra validations 2021-06-17 10:17:26 +05:30
Gowtham Munukutla
3c8e163e8b resolve PR comments. Tests WIP 2021-06-16 12:50:05 +05:30
Gowtham Munukutla
c4beed8276 complete tests 2021-05-30 13:42:39 +05:30
Gowtham Munukutla
9b87b13b80 add test cases WIP 2021-05-29 19:27:30 +05:30
Mislav Marohnić
9e63199a65 Add tests for checking out repository after creating from template 2021-03-01 14:12:56 +01:00
Devon Romanko
2964895a77 fix test behavior changes from migration to run.Stub 2021-01-27 18:46:29 -05:00
Devon Romanko
696cbfc8d1 use Stub instead of SetPrepareCmd in 'repo create' tests 2021-01-27 07:59:32 -05:00
Mislav Marohnić
c308f1cd91 Prevent further use of SetPrepareCmd and InitCmdStubber 2021-01-18 22:44:53 +01:00
xhqr
8b5c5896f2
[repo/create] Create local repo dir with non tty. (#2671)
This addresses issue #2587.
2021-01-05 14:40:52 -08:00
Sam Coe
458d5cb42f
Respect interactive repo name input on create 2020-09-21 14:26:15 +02:00
Mislav Marohnić
f9239661f2 Reuse the StubRepoInfoReponse test helper 2020-09-16 15:01:13 +02:00
vilmibm
c0fc31f7d5 use CanPrompt in commands 2020-09-10 12:13:48 -05:00
Colin Shum
99372f0dbc [Refactor] Add variadic argument to repoCreate to support templates 2020-08-28 15:02:08 -04:00
Colin Shum
263e3a6a35 Update create_test.go 2020-08-27 17:57:55 -04:00
ShubhankarKG
011f30977a 1. Add three visibility tags - public, private, internal, one of which meeds to be passed.
2. Interactive repo create when no parameters are passed, i.e `repo create`.
3. Fix tests.

TODO : write a repo in the form of user/repository format when no user is supplied.
2020-08-06 11:33:04 +05:30