Re: [PATCH - stgit] Patch to allow import of compressed files
- From
Karl Hasselström <kha@treskal.com>
- Date
- Jun 11, 2008, 06:27 UTC
- Message-ID
- <20080611062753.GB15034@diana.vm.bytemark.co.uk>
- In-Reply-To
- <484E87B2.2090506@gmail.com>
On 2008-06-10 08:54:58 -0500, Clark Williams wrote:
Show 21 quoted lines
> --- a/stgit/commands/imprt.py
> +++ b/stgit/commands/imprt.py
> @@ -178,8 +178,22 @@ def __create_patch(filename, message, author_name, author_email,
> def __import_file(filename, options, patch = None):
> """Import a patch from a file or standard input
> """
> + if patch:
> + pname = patch
> + else:
> + pname = filename
> +
> if filename:
> - f = file(filename)
> + if filename.endswith('.gz'):
> + import gzip
> + f = gzip.open(filename)
> + pname = strip_suffix('.gz', filename)
> + elif filename.endswith('.bz2'):
> + import bz2
> + f = bz2.BZ2File(filename)
> + pname = strip_suffic('.bz2', filename)^ Here's why I keep blathering about tests! In Python, you don't have a compiler to catch these for you ...
Show 14 quoted lines
> + else: > + f = file(filename) > else: > f = sys.stdin > > @@ -197,11 +211,6 @@ def __import_file(filename, options, patch = None): > if filename: > f.close() > > - if patch: > - pname = patch > - else: > - pname = filename > -
I just realized a problem with this that was already present in your first version: if patch != None, so that you set pname = patch, you overwrite pname since you strip the .gz/.bz2 suffixes _later_.
Other than that, it looks good. But you sounded tempted to go with the idea of just trying the decompressors rather than go by the suffix? I think that'd be an improvement.
As for testing, you'd simply make two copies of one of the subtests in t1800, where you test .gz- and .bz2-compressed versions of the same patch. Should take about five minutes to write.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalle