Commit Graph

328 Commits

Author SHA1 Message Date
Tzu-ping Chung 483bf175cf Rework cmdparse.Script API
The API now requires a command argument from signature. Parsing errors
(no command from input) is thrown as a custom exception, and caught by
the outmost possible invocation to emit a message from click.
2018-04-06 23:26:36 -04:00
Tzu-ping Chung d1eeeced45 Apply script parsing fix from pypi/pipenv#1909 2018-04-06 23:26:35 -04:00
Dan Ryan 61418fda20 Fix all tests and split out requirements refactor
- includes missing artifacts
- fixes cmdprse script
- Remove extraneous changes
- Fix tests
2018-04-06 23:25:37 -04:00
Tzu-ping Chung a536da4e6c Mock more dependencies
- Mock dateparser for maya
- Dot in PyPI package name becomes dash
- Mock regex for maya
2018-04-06 23:25:15 -04:00
Dan Ryan 703776fc92 Fix tests and requirements parsing
- Fix zip urls and markers
- Mock maya dependencies

Signed-off-by: Dan Ryan <dan@danryan.co>
2018-04-06 23:24:18 -04:00
Tzu-ping Chung 536efd2d38 Fix edge cases for pipenv run
- Use os.path.join instead of os.path.sep.join
- This prevents strange test errors when there are slashes in either parts
- Better test reporting
- Cleanup
2018-04-06 23:23:17 -04:00
Dan Ryan 1607091b85 Begin complete re-work of requirements parsing
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-04-06 23:23:16 -04:00
Tzu-ping Chung b4e832fb73 Improve test error report 2018-04-06 23:23:16 -04:00
Tzu-ping Chung 9dda593650 Improve python 2 cmdparse compatibility
- Use string_types to improve compat on Python 2
- Correct PYTHON_VERSION in appveyor.yml
- Let's debug
2018-04-06 23:22:30 -04:00
Dan Ryan d3a08878cf Fix marker parsing
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-04-06 23:22:30 -04:00
Tzu-ping Chung 15c7308ca9 Proper script argument escaping
I chose to make Script.parse to always operate in POSIX mode so it is much
easier to write commands compatible on all platforms.

Script.cmdify is the important part on Windows. It ensures the argument
line is always escaped and joined properly on Windows, not just for the
subset that works both under POSIX and Windows (as is the case of
shlex.escape).
2018-04-06 23:22:30 -04:00
Dan Ryan 31301b1536 Fix deps and testing infrastructure
- Fix requirement parsing
- Add appveyor config
- cutover from pathlib to pathlib2 if needed
- Pin pathlib2==2.1.0 to avoid scandir
- Windows script runner fix
- Backport `shlex.quote()` for use in `pipenv run`
- Update tests and appveyor

Signed-off-by: Dan Ryan <dan@danryan.co>
2018-04-06 23:19:32 -04:00
Dan Ryan ff15be72c5 Remove verbose flag auto-add
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 18:27:25 -04:00
Dan Ryan f9ce022794 Tweeak pypi mock
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 18:25:42 -04:00
Dan Ryan 61ce755229 Add missing artifacts
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 18:15:44 -04:00
Dan Ryan 5d3bb0768d Unmock ibm-db-sa
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 17:54:52 -04:00
Dan Ryan 4551d2b68c Fix verbose command construction 2018-03-30 16:36:19 -04:00
Dan Ryan f61a2eddca Fix resolution for broken tests
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 15:49:12 -04:00
Dan Ryan f13f296b03 Fix tests
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 14:52:13 -04:00
Dan Ryan d36081889e Remove mocked pypi from complex test
- Remove extra marker too

Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 13:44:49 -04:00
Dan Ryan 4117affaef Catch up with master properly
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-30 13:10:24 -04:00
Dan Ryan 5f1d8ee309 Final test updates 2018-03-30 13:00:59 -04:00
Tzu-ping Chung 6bde082a04 Skip some tests on 2.7 2018-03-30 12:38:11 -04:00
Dan Ryan 3e07c809eb Undo capsys, reorder install and lock 2018-03-30 12:37:17 -04:00
Dan Ryan 28a6cb4805 Disable capsys to capture stdout/stderr 2018-03-30 12:37:17 -04:00
Dan Ryan a4bbed3f69 Block for debugging 2018-03-30 12:37:16 -04:00
Tzu-ping Chung b5ae7cc0bb Just always require suffix then
This is not the TemporaryDirectory you are looking for.
2018-03-30 12:37:16 -04:00
Tzu-ping Chung ba93ad2da5 Never mock PyPI half-way, either do, or don't 2018-03-30 12:37:16 -04:00
Tzu-ping Chung 42d83dbbac Need to use the backported TemporaryDirectory 2018-03-30 12:37:15 -04:00
Tzu-ping Chung 1c9792434d Un-mock maya 2018-03-30 12:37:15 -04:00
Tzu-ping Chung a3dcc66844 Refactor 2018-03-30 12:37:13 -04:00
Tzu-ping Chung 67de4891a9 Skip Internet and add verbose flag if possible 2018-03-30 12:36:37 -04:00
Tzu-ping Chung 8a39fbceaa Actually use mocked PyPI when testing with locking 2018-03-30 12:36:34 -04:00
Tzu-ping Chung 0cb0f8999f Fix scripts and source errors not caught before 2018-03-30 12:32:07 -04:00
Frost Ming aff9078985 pass pre flag to lock 2018-03-30 22:35:48 +08:00
Dan Ryan 00ebba4b58 Switch to tablib and try again
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-29 22:00:44 -04:00
Dan Ryan 4043ee57f6 Merge branch 'jtratner/fix-scripts-quoting' into locking-handle-eggs 2018-03-29 21:12:13 -04:00
Jeff Tratner 15c19ee001 Make run easier to understand 2018-03-29 17:57:04 -07:00
Dan Ryan 15bb50cfa4 Add some markers
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-29 20:43:27 -04:00
Dan Ryan 139d8bd553 Merge branch 'master' into locking-handle-eggs 2018-03-29 09:32:20 -04:00
Jeff Tratner 133417a941 Remove extraneous is_vcs calls
1. is_vcs requires (req.path or req.uri) to be truthy.
2. (req.path or req.uri) would be true in first if statement

Thus if you have:

```
if (req.uri or req.path or ...) and not req.vcs
elif req.vcs or is_vcs(req.path)
```

if `is_vcs(req.path)` is Truthy, then the first if clause must be
truthy, so it's unnecessary.

Also add a quick test to confirm that originating purpose for that check
is now handled otherwise.
2018-03-29 09:32:04 -04:00
Jeff Tratner 5de48b4800 Better shell quoting
1. Only use split() when we actually come in from CLI (possibly never
   need to do that at all)
2. Add some additional test cases to cover quoting.
3. Better error message in case of missing executable pulled from a run
script.

E.g.:

```
[scripts]
random = "myexecutable a b c"
myexecutable = "echo 5"
```

```
Error: the command myexecutable (from random) could not be found within PATH.
```

vs. previous, which had a slightly disingenous error message.

```
Error: the command myexecutable could not be found within PATH or Pipfile's [scripts].
```
2018-03-29 00:55:08 -07:00
Jeff Tratner 7afa528c0f Fix small test case typo 2018-03-28 23:54:00 -07:00
Dan Ryan 71896d1f20 Skip python 3 only test on py2
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-29 00:48:01 -04:00
Dan Ryan 14cdff2c0b Include markers when they are included at top lvl
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-29 00:13:20 -04:00
Dan Ryan 4a425c3429 Add regression tests for resolver changes
Signed-off-by: Dan Ryan <dan@danryan.co>
2018-03-28 23:00:38 -04:00
Dan Ryan 7697541dc0 Merge branch 'master' into locking-handle-eggs 2018-03-28 18:00:01 -04:00
Jeff Tratner b0445a2c0b Lint fixes
Fix up tests a little more

Use temp_environ rather than monkeypatch
2018-03-27 15:30:22 -04:00
luz.paz 63f7e988f7 Misc. typos
Found via `codespell -q 3`
2018-03-27 13:42:27 -04:00
Dan Ryan e4bdc0fb5b Add randomwords and missing requests artifacts 2018-03-27 01:17:04 -04:00