git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* splitting off shell test framework
@ 2012-11-12 16:37 Adam Spiers
  2012-11-12 16:44 ` Felipe Contreras
  2012-11-12 18:18 ` Drew Northup
  0 siblings, 2 replies; 9+ messages in thread
From: Adam Spiers @ 2012-11-12 16:37 UTC (permalink / raw)
  To: Git Mailing List

Hi all,

I've been pretty impressed with git's test framework, and I'm not
aware of many other (decent) shell-based test frameworks out there.
(One that springs to mind is the one used by rvm, but last time I
looked - admittedly a while ago now - it had limitations).

Recently a situation arose where I craved the ability to test
something via shell.  I did a quick proof of concept and successfully
extracted out the non-git-specific bits of git's test framework to be
used to test something entirely unrelated to git:

    https://github.com/aspiers/shell-env/tree/master/t

As it turned out to be fairly easy, I was wondering if there would be
any interest in doing this more formally, i.e. splitting off the
framework so that it could be used and improved outside the scope of
git development?  Of course this would pose the question how git would
consume this new project without any risk of destabilisation.  I'm
guessing that simply using a git submodule would solve the problem,
but ICBW ...

Just an idea.  Interesting, or terrible? :)

Regards,
Adam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2012-11-12 16:37 splitting off shell test framework Adam Spiers
@ 2012-11-12 16:44 ` Felipe Contreras
  2012-11-12 16:57   ` Pyeron, Jason J CTR (US)
  2012-11-12 18:18 ` Drew Northup
  1 sibling, 1 reply; 9+ messages in thread
From: Felipe Contreras @ 2012-11-12 16:44 UTC (permalink / raw)
  To: Adam Spiers; +Cc: Git Mailing List

On Mon, Nov 12, 2012 at 5:37 PM, Adam Spiers <git@adamspiers.org> wrote:

> I've been pretty impressed with git's test framework, and I'm not
> aware of many other (decent) shell-based test frameworks out there.
> (One that springs to mind is the one used by rvm, but last time I
> looked - admittedly a while ago now - it had limitations).
>
> Recently a situation arose where I craved the ability to test
> something via shell.  I did a quick proof of concept and successfully
> extracted out the non-git-specific bits of git's test framework to be
> used to test something entirely unrelated to git:
>
>     https://github.com/aspiers/shell-env/tree/master/t
>
> As it turned out to be fairly easy, I was wondering if there would be
> any interest in doing this more formally, i.e. splitting off the
> framework so that it could be used and improved outside the scope of
> git development?  Of course this would pose the question how git would
> consume this new project without any risk of destabilisation.  I'm
> guessing that simply using a git submodule would solve the problem,
> but ICBW ...

FWIW, the notmuch project seems to be doing the same; extracting and
using git's test framework.

> Just an idea.  Interesting, or terrible? :)

That I don't know :)

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: splitting off shell test framework
  2012-11-12 16:44 ` Felipe Contreras
@ 2012-11-12 16:57   ` Pyeron, Jason J CTR (US)
  0 siblings, 0 replies; 9+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2012-11-12 16:57 UTC (permalink / raw)
  To: Git Mailing List

[-- Attachment #1: Type: text/plain, Size: 1919 bytes --]

> -----Original Message-----
> From: Felipe Contreras
> Sent: Monday, November 12, 2012 11:44 AM
> 
> On Mon, Nov 12, 2012 at 5:37 PM, Adam Spiers <git@adamspiers.org>
> wrote:
> 
> > I've been pretty impressed with git's test framework, and I'm not
> > aware of many other (decent) shell-based test frameworks out there.
> > (One that springs to mind is the one used by rvm, but last time I
> > looked - admittedly a while ago now - it had limitations).
> >
> > Recently a situation arose where I craved the ability to test
> > something via shell.  I did a quick proof of concept and successfully
> > extracted out the non-git-specific bits of git's test framework to be
> > used to test something entirely unrelated to git:
> >
> >     https://github.com/aspiers/shell-env/tree/master/t
> >
> > As it turned out to be fairly easy, I was wondering if there would be
> > any interest in doing this more formally, i.e. splitting off the
> > framework so that it could be used and improved outside the scope of
> > git development?  Of course this would pose the question how git
> would
> > consume this new project without any risk of destabilisation.  I'm
> > guessing that simply using a git submodule would solve the problem,
> > but ICBW ...
> 
> FWIW, the notmuch project seems to be doing the same; extracting and
> using git's test framework.


The Apache Maven project is migrating to GIT right now and they just covered a long discussion on the pros and cons of this (sort of). It might be a bit of a read [1] but I can also provide some perspective. The question is asked in reverse in [2] since Maven had them separate and some suggested to merge them.

1: http://mail-archives.apache.org/mod_mbox/maven-dev/201210.mbox/%3cA5D13406-474A-43E6-9708-D5D4DE9BE64C@tesla.io%3e
2: http://mail-archives.apache.org/mod_mbox/maven-dev/201210.mbox/%3c1349937687.79626.YahooMailNeo@web28903.mail.ir2.yahoo.com%3e 





[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2012-11-12 16:37 splitting off shell test framework Adam Spiers
  2012-11-12 16:44 ` Felipe Contreras
@ 2012-11-12 18:18 ` Drew Northup
  2012-11-12 23:09   ` Adam Spiers
  1 sibling, 1 reply; 9+ messages in thread
From: Drew Northup @ 2012-11-12 18:18 UTC (permalink / raw)
  To: Adam Spiers; +Cc: Git Mailing List, felipe.contreras, Jason J Pyeron CTR (US)

On Mon, Nov 12, 2012 at 11:37 AM, Adam Spiers <git@adamspiers.org> wrote:
> Hi all,
>
> I've been pretty impressed with git's test framework, and I'm not
> aware of many other (decent) shell-based test frameworks out there.
> (One that springs to mind is the one used by rvm, but last time I
> looked - admittedly a while ago now - it had limitations).
>
> Recently a situation arose where I craved the ability to test
> something via shell.  I did a quick proof of concept and successfully
> extracted out the non-git-specific bits of git's test framework to be
> used to test something entirely unrelated to git:
>
>     https://github.com/aspiers/shell-env/tree/master/t
>
> As it turned out to be fairly easy, I was wondering if there would be
> any interest in doing this more formally, i.e. splitting off the
> framework so that it could be used and improved outside the scope of
> git development?  Of course this would pose the question how git would
> consume this new project without any risk of destabilisation.  I'm
> guessing that simply using a git submodule would solve the problem,
> but ICBW ...
>
> Just an idea.  Interesting, or terrible? :)

Done at least once already:

http://comments.gmane.org/gmane.comp.version-control.git/201591

-- 
-Drew Northup
--------------------------------------------------------------
"As opposed to vegetable or mineral error?"
-John Pescatore, SANS NewsBites Vol. 12 Num. 59

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2012-11-12 18:18 ` Drew Northup
@ 2012-11-12 23:09   ` Adam Spiers
  2017-08-23 13:46     ` Adam Spiers
  0 siblings, 1 reply; 9+ messages in thread
From: Adam Spiers @ 2012-11-12 23:09 UTC (permalink / raw)
  To: Drew Northup; +Cc: Git Mailing List, felipe.contreras, Jason J Pyeron CTR (US)

On Mon, Nov 12, 2012 at 6:18 PM, Drew Northup <n1xim.email@gmail.com> wrote:
> On Mon, Nov 12, 2012 at 11:37 AM, Adam Spiers <git@adamspiers.org> wrote:
>> As it turned out to be fairly easy, I was wondering if there would be
>> any interest in doing this more formally, i.e. splitting off the
>> framework so that it could be used and improved outside the scope of
>> git development?  Of course this would pose the question how git would
>> consume this new project without any risk of destabilisation.  I'm
>> guessing that simply using a git submodule would solve the problem,
>> but ICBW ...
>>
>> Just an idea.  Interesting, or terrible? :)
>
> Done at least once already:
>
> http://comments.gmane.org/gmane.comp.version-control.git/201591

Nice!  So hopefully someone will submit patches to build a two-way bridge
via git subtree.  Having them diverge would be sad.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2012-11-12 23:09   ` Adam Spiers
@ 2017-08-23 13:46     ` Adam Spiers
  2017-08-23 15:47       ` Jeff King
  0 siblings, 1 reply; 9+ messages in thread
From: Adam Spiers @ 2017-08-23 13:46 UTC (permalink / raw)
  To: Drew Northup; +Cc: Git Mailing List, Felipe Contreras, Jason J Pyeron CTR (US)

I got a helpful response to the following question almost 5 years ago:

On 12 November 2012 at 23:09, Adam Spiers <git@adamspiers.org> wrote:
> On Mon, Nov 12, 2012 at 6:18 PM, Drew Northup <n1xim.email@gmail.com> wrote:
>> On Mon, Nov 12, 2012 at 11:37 AM, Adam Spiers <git@adamspiers.org> wrote:
>>> As it turned out to be fairly easy, I was wondering if there would be
>>> any interest in doing this more formally, i.e. splitting off the
>>> framework so that it could be used and improved outside the scope of
>>> git development?  Of course this would pose the question how git would
>>> consume this new project without any risk of destabilisation.  I'm
>>> guessing that simply using a git submodule would solve the problem,
>>> but ICBW ...
>>>
>>> Just an idea.  Interesting, or terrible? :)
>>
>> Done at least once already:
>>
>> http://comments.gmane.org/gmane.comp.version-control.git/201591
>
> Nice!  So hopefully someone will submit patches to build a two-way bridge
> via git subtree.  Having them diverge would be sad.

but sadly since then gmane has shuffled off its mortal coil and I can't
remember / find what this URL referred to.  Please could someone
point me at a working link?

Many thanks!
Adam

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2017-08-23 13:46     ` Adam Spiers
@ 2017-08-23 15:47       ` Jeff King
  2017-08-23 23:23         ` Adam Spiers
  0 siblings, 1 reply; 9+ messages in thread
From: Jeff King @ 2017-08-23 15:47 UTC (permalink / raw)
  To: Adam Spiers
  Cc: Drew Northup, Git Mailing List, Felipe Contreras,
	Jason J Pyeron CTR (US)

On Wed, Aug 23, 2017 at 02:46:30PM +0100, Adam Spiers wrote:

> >> Done at least once already:
> >>
> >> http://comments.gmane.org/gmane.comp.version-control.git/201591
> [...]
> 
> but sadly since then gmane has shuffled off its mortal coil and I can't
> remember / find what this URL referred to.  Please could someone
> point me at a working link?

Try:

  https://public-inbox.org/git/?q=gmane:201591

Public-inbox uses message-ids as its primary key, but keeps a static
mapping of gmane articles to message-ids. But the corpus of gmane ids
isn't growing anymore, and public-inbox URLs can be trivially converted
to other systems which index on the message id[1].

-Peff

[1] I actually keep a local archive and convert public-inbox URLs into
    local requests that I view in mutt.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2017-08-23 15:47       ` Jeff King
@ 2017-08-23 23:23         ` Adam Spiers
  2017-08-24 14:23           ` Jeff King
  0 siblings, 1 reply; 9+ messages in thread
From: Adam Spiers @ 2017-08-23 23:23 UTC (permalink / raw)
  To: Jeff King
  Cc: Drew Northup, Git Mailing List, Felipe Contreras,
	Jason J Pyeron CTR (US)

On 23 August 2017 at 16:47, Jeff King <peff@peff.net> wrote:
> On Wed, Aug 23, 2017 at 02:46:30PM +0100, Adam Spiers wrote:
>> >> Done at least once already:
>> >>
>> >> http://comments.gmane.org/gmane.comp.version-control.git/201591
>> [...]
>>
>> but sadly since then gmane has shuffled off its mortal coil and I can't
>> remember / find what this URL referred to.  Please could someone
>> point me at a working link?
>
> Try:
>
>   https://public-inbox.org/git/?q=gmane:201591
>
> Public-inbox uses message-ids as its primary key, but keeps a static
> mapping of gmane articles to message-ids. But the corpus of gmane ids
> isn't growing anymore, and public-inbox URLs can be trivially converted
> to other systems which index on the message id[1].

Thanks a lot; that's super helpful!

> [1] I actually keep a local archive and convert public-inbox URLs into
>     local requests that I view in mutt.

Sounds like a neat trick - any scripts / config worth sharing?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: splitting off shell test framework
  2017-08-23 23:23         ` Adam Spiers
@ 2017-08-24 14:23           ` Jeff King
  0 siblings, 0 replies; 9+ messages in thread
From: Jeff King @ 2017-08-24 14:23 UTC (permalink / raw)
  To: Adam Spiers
  Cc: Drew Northup, Git Mailing List, Felipe Contreras,
	Jason J Pyeron CTR (US)

On Thu, Aug 24, 2017 at 12:23:05AM +0100, Adam Spiers wrote:

> > [1] I actually keep a local archive and convert public-inbox URLs into
> >     local requests that I view in mutt.
> 
> Sounds like a neat trick - any scripts / config worth sharing?

It's probably too specific to my setup, but here it is anyway.

I keep the archive in a normal maildir, which I index with the mairix
tool (you could do the same thing with maildir-utils or notmuch). New
messages get put into the maildir by mutt's auto-move feature after I've
read them.

Then I have a few keys bound in mutt:

  macro pager,index M '<pipe-message>gmane<enter>'
  macro pager,index B '<pipe-message>rmairix-gmane<enter>'

(you can tell from the names that these predate public-inbox entirely).

The "gmane" script just opens a browser pointing to the current message
in the archive, from which I then 'y'ank the URL into the clipboard or
pasting. The network round-trip was necessary for gmane, since the
article ids were not predictable. For public-inbox, it's not necessary,
but old habits die hard (and it's a nice cross-check that the link
you're sending out isn't broken).

Here's that script:

-- >8 --
#!/bin/sh

mid() {
  exec webview "http://public-inbox.org/git/$1"
}

article() {
  exec webview "http://public-inbox.org/git/?q=gmane:$1"
}

find_mid() {
  perl -ne 'if(/^message-id:\s*<([^>]+)>/i) { print $1, "\n"; exit 0 }'
}

case "$#" in
  0) id=`find_mid`
     case "$id" in
       "") echo >&2 "fatal: unable to extract message-id from stdin"; exit 1 ;;
        *) mid "$id" ;;
     esac
     ;;
  1) case "$1" in
       *@*) mid "$1" ;;
         *) article "$1" ;;
     esac
     ;;
  *) echo >&2 "fatal: don't know how to handle $# arguments"; exit 100 ;;
esac
-- 8< --

The "webview" command is just a personal wrapper that decides which
browser to use. You could replace it with "firefox" or "chromium" or
whatever.

The "rmairix-gmane" script picks out gmane/public-inbox references and
re-opens them in mutt. It looks like this:

-- >8 --
#!/usr/bin/env perl
use URI;
use URI::Escape;

if (@ARGV) {
  show_gmane_article($_) foreach @ARGV;
}
else {
  while(<>) {
    if (m{http://[^/]*gmane.org/[-\w/.]+}) {
      show_gmane_url($&);
    }
    if (m{https?://public-inbox.org/git/([^/]+)}) {
      show_mid(uri_unescape($1));
    }
  }
}
exit 0;

sub show_mid {
  system("rmairix -t m:" . quotemeta(shift) . " </dev/tty");
}

sub show_gmane_url {
  my ($group, $article) = extract_article(shift);
  show_gmane_article($article);
}

sub show_gmane_article {
  my $article = shift;
  my $mid = gmane_to_mid($article);
  show_mid($mid) if defined $mid;
}

sub gmane_to_mid {
  my $want = shift;

  open(my $map, "-|", qw(gunzip -c), "$ENV{HOME}/.gmane-to-mid.gz");
  while (<$map>) {
    chomp;
    my ($nr, $mid) = split / /, $_, 2;
    return $mid if $nr == $want;
  }
}

sub extract_article {
  my @path = URI->new(shift)->path_segments;

  # first one is always empty in absolute URL
  shift @path unless length($path[0]);

  # group is always next
  my $group = shift @path;

  # and then look for numbers starting from the back. E.g.,
  # focus=N for threads, or just "N" for articles
  while (@path) {
    local $_ = pop @path;
    return ($group, $&) if /\d+/;
  }

  return ($group, undef);
}
-- 8< --

The two extra bits you'd need are:

  - the ~/.gmane-to-mid.gz mapping. I don't remember if I made this
    myself or stole it from one that Eric posted. I'm happy to share if
    anybody wants it.

  - rmairix is a personal wrapper around mairix that ssh's to my imap
    server to do the search and then starts mutt on the result.

    Naturally I also use it for general queries like

      rmairix -t f:peff sanitize thread

I hope that helps.  I suspect it may be more useful to people as
inspiration and not as running code. I'm happy to answer any questions
or give any guidance I can.

-Peff

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-08-24 14:23 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-11-12 16:37 splitting off shell test framework Adam Spiers
2012-11-12 16:44 ` Felipe Contreras
2012-11-12 16:57   ` Pyeron, Jason J CTR (US)
2012-11-12 18:18 ` Drew Northup
2012-11-12 23:09   ` Adam Spiers
2017-08-23 13:46     ` Adam Spiers
2017-08-23 15:47       ` Jeff King
2017-08-23 23:23         ` Adam Spiers
2017-08-24 14:23           ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).