mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-02 00:05:27 +00:00
Merge pull request #3078 from kajojify/expanduser
Fix #3002. Auto-expanding for tilda.
This commit is contained in:
commit
a4a48a96d6
@ -1,6 +1,8 @@
|
||||
import io
|
||||
import csv
|
||||
import typing
|
||||
import os.path
|
||||
|
||||
from mitmproxy import command
|
||||
from mitmproxy import exceptions
|
||||
from mitmproxy import flow
|
||||
@ -87,7 +89,8 @@ class Cut:
|
||||
append = False
|
||||
if path.startswith("+"):
|
||||
append = True
|
||||
path = mitmproxy.types.Path(path[1:])
|
||||
epath = os.path.expanduser(path[1:])
|
||||
path = mitmproxy.types.Path(epath)
|
||||
try:
|
||||
if len(cuts) == 1 and len(flows) == 1:
|
||||
with open(path, "ab" if append else "wb") as fp:
|
||||
|
@ -10,7 +10,6 @@ The View:
|
||||
"""
|
||||
import collections
|
||||
import typing
|
||||
import os
|
||||
|
||||
import blinker
|
||||
import sortedcontainers
|
||||
@ -359,9 +358,8 @@ class View(collections.Sequence):
|
||||
"""
|
||||
Load flows into the view, without processing them with addons.
|
||||
"""
|
||||
spath = os.path.expanduser(path)
|
||||
try:
|
||||
with open(spath, "rb") as f:
|
||||
with open(path, "rb") as f:
|
||||
for i in io.FlowReader(f).stream():
|
||||
# Do this to get a new ID, so we can load the same file N times and
|
||||
# get new flows each time. It would be more efficient to just have a
|
||||
|
@ -178,7 +178,7 @@ class _PathType(_BaseType):
|
||||
return ret
|
||||
|
||||
def parse(self, manager: _CommandBase, t: type, s: str) -> str:
|
||||
return s
|
||||
return os.path.expanduser(s)
|
||||
|
||||
def is_valid(self, manager: _CommandBase, typ: typing.Any, val: typing.Any) -> bool:
|
||||
return isinstance(val, str)
|
||||
|
@ -2,6 +2,7 @@ import pytest
|
||||
import os
|
||||
import typing
|
||||
import contextlib
|
||||
from unittest import mock
|
||||
|
||||
import mitmproxy.exceptions
|
||||
import mitmproxy.types
|
||||
@ -68,7 +69,10 @@ def test_path(tdata):
|
||||
b = mitmproxy.types._PathType()
|
||||
assert b.parse(tctx.master.commands, mitmproxy.types.Path, "/foo") == "/foo"
|
||||
assert b.parse(tctx.master.commands, mitmproxy.types.Path, "/bar") == "/bar"
|
||||
with mock.patch.dict("os.environ", {"HOME": "/home/test"}):
|
||||
assert b.parse(tctx.master.commands, mitmproxy.types.Path, "~/mitm") == "/home/test/mitm"
|
||||
assert b.is_valid(tctx.master.commands, mitmproxy.types.Path, "foo") is True
|
||||
assert b.is_valid(tctx.master.commands, mitmproxy.types.Path, "~/mitm") is True
|
||||
assert b.is_valid(tctx.master.commands, mitmproxy.types.Path, 3) is False
|
||||
|
||||
def normPathOpts(prefix, match):
|
||||
|
Loading…
Reference in New Issue
Block a user