Re: mobile-spec and releases: How do we test?

2014-02-24 Thread Michal Mocny
Hi,

Right now, the work live in the cordova-labs repo under the CDVTest branch (
https://github.com/apache/cordova-labs/tree/cdvtest).  Specifically, there
is a test plugin and test harness app.  Its still a work in progress, and
while several of the API tests from mobile-spec were moved to CDVTest
branches of the core plugin, the mobile-spec app is currently still the
canonical source for tests.

Sorry I dropped the ball on filing JIRA issues, but David and I have been
working on the test harness for our downstream cordova distribution (for
cca).  I'll be pushing all the applicable bits back up within the coming
weeks and then will document clearly what needs to happen to migrate
mobile-spec to see if we all agree on direction.  I guess: stay tuned.

-Michal


On Sun, Feb 23, 2014 at 11:05 PM, 罗琦 l...@polyvi.com wrote:

 Hi all,
 How's the progress? Where's JIRA I could follow?

 We're building a Cordova-based framework and working closely to
 Cordova daily bits. We're still keeping tests in each plugin repo, and
 manually sync with Cordova-Mobile-Spec, that's even more painful after most
 of tests got removed from plugin repos.
 We added a little script to cli (a new command actually) to integrate
 tests of all currently installed plugins into to target app, that's way how
 we perform testing for now.

 Need some advice, thanks.


 -- Original --
 From:  Michal Mocnymmo...@chromium.org;
 Date:  Thu, Oct 31, 2013 11:35 PM
 To:  devdev@cordova.apache.org;

 Subject:  Re: mobile-spec and releases: How do we test?


 This is awesome progress, guys, thanks for the help.

 I'm going to put all the bits together and compile a list of tasks left and
 write-up instructions for those who have yet to take a look.  If everyone
 on the lists is still happy with the direction, I'll move those to JIRA.


 On Thu, Oct 31, 2013 at 11:08 AM, David Kemp drk...@chromium.org wrote:

  I converted the couchdb reporter to the 2.0 style and added it to the
 repo.
  It works(hard coded config), but still needs the configuration components
  completed and some final adjustments to the data.
 
 
 
 
  On Thu, Oct 31, 2013 at 11:05 AM, Anis KADRI anis.ka...@gmail.com
 wrote:
 
   I ported the contacts plugin [1] to the new style and I found the
   process to be more or less straightforward. I also kept the eval in
   there but there might be a better way ?
  
   [1] http://goo.gl/uhnwtz
  
   On Wed, Oct 30, 2013 at 3:42 PM, Michal Mocny mmo...@chromium.org
  wrote:
Sadly, we are approaching an in-between time of moving the
 mobile-spec
tests out of the app and into plugins.  We are still investigating
 the
   best
way to do this without disruption.
   
For what its worth: several plugins now have a 'cdvtest' branch which
supplies new-style tests ripped out of mobile-spec.  If you are
 having
issues cleaning up the old style tests, take a look at the new ones
 (or
   try
porting yourself).
   
I'm going to write up a doc with the summary of the state of testing
   within
a day or so given the results of this week to make it easier for you
  (and
others) to pick up.
   
-Michal
   
   
On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com
  wrote:
   
 Thanks Michal. You answered my questions.
   
 More to elaborate on my question: I am testing amazon-fireos
port(platform) with all plug-ins using mobile-spec. I am seeing some
failures in 3.1.0 version because of test cases timing out. I am
  pretty
   new
to cordova and still in learning phase. :) I am trying to understand
   these
failures. Interestingly they pass on 3.0.x version.
   
 Archana
   
   
  From: Michal Mocny mmo...@chromium.org
Date: Wednesday, October 30, 2013 10:27 AM
To: Naik, Archana na...@lab126.com
Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal
 Mocny 
mmo...@chromium.org
   
Subject: Re: mobile-spec and releases: How do we test?
   
  May you clarify?
   
 Right now, there is no formal way to test plugins, we are trying to
invent that way now.  Check out cordova-labs repo's cdvtest branch
  for a
sample app  plugin to track progress.
   
 Jasmine is hosted in that sample app, but plugins will not directly
know/care.  Any testing framework which is api-compatible should
 work.
In
practice, I'm not sure how compatible they all are, so it may very
  well
   be
limited to jasmine -- but it does mean you can make local
  modifications
such as our CI is doing to create a custom test reporter.
   
 -Michal
   
   
On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com
   wrote:
   
Hi, Guys
   
While on this topic, I have a question: how do I test individual
   plug-in?
Where is the this jasmine version specified?
   
Thanks
Archana
   
On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:
   
Here are some

Re: mobile-spec and releases: How do we test?

2014-02-23 Thread ????
Hi all,
How's the progress? Where's JIRA I could follow?

We're building a Cordova-based framework and working closely to Cordova 
daily bits. We're still keeping tests in each plugin repo, and manually sync 
with Cordova-Mobile-Spec, that's even more painful after most of tests got 
removed from plugin repos.
We added a little script to cli (a new command actually) to integrate tests 
of all currently installed plugins into to target app, that's way how we 
perform testing for now.

Need some advice, thanks.

 
-- Original --
From:  Michal Mocnymmo...@chromium.org;
Date:  Thu, Oct 31, 2013 11:35 PM
To:  devdev@cordova.apache.org; 

Subject:  Re: mobile-spec and releases: How do we test?

 
This is awesome progress, guys, thanks for the help.

I'm going to put all the bits together and compile a list of tasks left and
write-up instructions for those who have yet to take a look.  If everyone
on the lists is still happy with the direction, I'll move those to JIRA.


On Thu, Oct 31, 2013 at 11:08 AM, David Kemp drk...@chromium.org wrote:

 I converted the couchdb reporter to the 2.0 style and added it to the repo.
 It works(hard coded config), but still needs the configuration components
 completed and some final adjustments to the data.




 On Thu, Oct 31, 2013 at 11:05 AM, Anis KADRI anis.ka...@gmail.com wrote:

  I ported the contacts plugin [1] to the new style and I found the
  process to be more or less straightforward. I also kept the eval in
  there but there might be a better way ?
 
  [1] http://goo.gl/uhnwtz
 
  On Wed, Oct 30, 2013 at 3:42 PM, Michal Mocny mmo...@chromium.org
 wrote:
   Sadly, we are approaching an in-between time of moving the mobile-spec
   tests out of the app and into plugins.  We are still investigating the
  best
   way to do this without disruption.
  
   For what its worth: several plugins now have a 'cdvtest' branch which
   supplies new-style tests ripped out of mobile-spec.  If you are having
   issues cleaning up the old style tests, take a look at the new ones (or
  try
   porting yourself).
  
   I'm going to write up a doc with the summary of the state of testing
  within
   a day or so given the results of this week to make it easier for you
 (and
   others) to pick up.
  
   -Michal
  
  
   On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com
 wrote:
  
Thanks Michal. You answered my questions.
  
More to elaborate on my question: I am testing amazon-fireos
   port(platform) with all plug-ins using mobile-spec. I am seeing some
   failures in 3.1.0 version because of test cases timing out. I am
 pretty
  new
   to cordova and still in learning phase. :) I am trying to understand
  these
   failures. Interestingly they pass on 3.0.x version.
  
Archana
  
  
 From: Michal Mocny mmo...@chromium.org
   Date: Wednesday, October 30, 2013 10:27 AM
   To: Naik, Archana na...@lab126.com
   Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal Mocny 
   mmo...@chromium.org
  
   Subject: Re: mobile-spec and releases: How do we test?
  
 May you clarify?
  
Right now, there is no formal way to test plugins, we are trying to
   invent that way now.  Check out cordova-labs repo's cdvtest branch
 for a
   sample app  plugin to track progress.
  
Jasmine is hosted in that sample app, but plugins will not directly
   know/care.  Any testing framework which is api-compatible should work.
   In
   practice, I'm not sure how compatible they all are, so it may very
 well
  be
   limited to jasmine -- but it does mean you can make local
 modifications
   such as our CI is doing to create a custom test reporter.
  
-Michal
  
  
   On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com
  wrote:
  
   Hi, Guys
  
   While on this topic, I have a question: how do I test individual
  plug-in?
   Where is the this jasmine version specified?
  
   Thanks
   Archana
  
   On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:
  
   Here are some links to jasmine-2 docs since its a hard time finding
  them:
   
   http://jasmine.github.io/2.0/introduction.html
   
   
 https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
   
   
   On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
 
   wrote:
   
   
   
   
On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
   br...@bryanhiggins.netwrote:
   
I just converted geolocation to the new test style [1]
   
I'm happy with the process overall, and I find the jasmine 2
 tests
  are
more
succinct.
   
There are a few things worth noting:
- I kept the eval code in. At google today, it was discussed that
  this
   may
not be the best approach.
- Jasmine 2: You must hit at least one expect statement or the
 test
   will
timeout even though done was called.
   
   
We could file a bug (I ran into it during setup once too), but
  really,
what is the worth

Re: mobile-spec and releases: How do we test?

2013-10-31 Thread Anis KADRI
I ported the contacts plugin [1] to the new style and I found the
process to be more or less straightforward. I also kept the eval in
there but there might be a better way ?

[1] http://goo.gl/uhnwtz

On Wed, Oct 30, 2013 at 3:42 PM, Michal Mocny mmo...@chromium.org wrote:
 Sadly, we are approaching an in-between time of moving the mobile-spec
 tests out of the app and into plugins.  We are still investigating the best
 way to do this without disruption.

 For what its worth: several plugins now have a 'cdvtest' branch which
 supplies new-style tests ripped out of mobile-spec.  If you are having
 issues cleaning up the old style tests, take a look at the new ones (or try
 porting yourself).

 I'm going to write up a doc with the summary of the state of testing within
 a day or so given the results of this week to make it easier for you (and
 others) to pick up.

 -Michal


 On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com wrote:

  Thanks Michal. You answered my questions.

  More to elaborate on my question: I am testing amazon-fireos
 port(platform) with all plug-ins using mobile-spec. I am seeing some
 failures in 3.1.0 version because of test cases timing out. I am pretty new
 to cordova and still in learning phase. :) I am trying to understand these
 failures. Interestingly they pass on 3.0.x version.

  Archana


   From: Michal Mocny mmo...@chromium.org
 Date: Wednesday, October 30, 2013 10:27 AM
 To: Naik, Archana na...@lab126.com
 Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal Mocny 
 mmo...@chromium.org

 Subject: Re: mobile-spec and releases: How do we test?

   May you clarify?

  Right now, there is no formal way to test plugins, we are trying to
 invent that way now.  Check out cordova-labs repo's cdvtest branch for a
 sample app  plugin to track progress.

  Jasmine is hosted in that sample app, but plugins will not directly
 know/care.  Any testing framework which is api-compatible should work.  In
 practice, I'm not sure how compatible they all are, so it may very well be
 limited to jasmine -- but it does mean you can make local modifications
 such as our CI is doing to create a custom test reporter.

  -Michal


 On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com wrote:

 Hi, Guys

 While on this topic, I have a question: how do I test individual plug-in?
 Where is the this jasmine version specified?

 Thanks
 Archana

 On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:

 Here are some links to jasmine-2 docs since its a hard time finding them:
 
 http://jasmine.github.io/2.0/introduction.html
 
 https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
 
 
 On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
 wrote:
 
 
 
 
  On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
 br...@bryanhiggins.netwrote:
 
  I just converted geolocation to the new test style [1]
 
  I'm happy with the process overall, and I find the jasmine 2 tests are
  more
  succinct.
 
  There are a few things worth noting:
  - I kept the eval code in. At google today, it was discussed that this
 may
  not be the best approach.
  - Jasmine 2: You must hit at least one expect statement or the test
 will
  timeout even though done was called.
 
 
  We could file a bug (I ran into it during setup once too), but really,
  what is the worth of a test if there are no expect clauses?
 
 
  - I did not remove the manual test page [2]. It would be great if we
 had a
  convention for importing these. (ie test harness looks for a page at
  www/test/plugin-id.html and adds a link to it if it exists)
 
 
  I'm going to work on a solution for this today.  The thought is that
 the
  plugin has a single module that can define all auto/manual tests, and
 the
  test-harness choses which to display where.
 
 
 
  [1]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
 ;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
  [2]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git

 ;a=blob;f=test/manual.html;h=6ec2eed03e18c2efaa8710094d60930bb32227ba;hb
 =459a01c01e8dfa2a688d25483bb48c46d8e2
 
 
  On Tue, Oct 15, 2013 at 12:50 PM, David Kemp drk...@chromium.org
 wrote:
 
   In spite of that fact that it needs a tooling change, I like the
 added
   mode tag / prepare steps.
   The tooling change should be small and it means no runtime impact on
  apps.
  
   I love the approach - a very positive step to cleaning up testing.
  
   David Kemp
  
  
  
   On Tue, Oct 15, 2013 at 12:18 PM, Michal Mocny mmo...@chromium.org
 
   wrote:
  
Braden, you're right, good catch.
   
Discussing locally how we could support prepare --mode=... in
 the
  most
generalized form, we remembered an old suggestion to just support
  mode
tags.
   
The benefits seem to be:
- No need to add custom tag-prefix/attributes for the combinations
 of
js-module mode=, asset mode=, etc etc
- More visually

Re: mobile-spec and releases: How do we test?

2013-10-31 Thread David Kemp
I converted the couchdb reporter to the 2.0 style and added it to the repo.
It works(hard coded config), but still needs the configuration components
completed and some final adjustments to the data.




On Thu, Oct 31, 2013 at 11:05 AM, Anis KADRI anis.ka...@gmail.com wrote:

 I ported the contacts plugin [1] to the new style and I found the
 process to be more or less straightforward. I also kept the eval in
 there but there might be a better way ?

 [1] http://goo.gl/uhnwtz

 On Wed, Oct 30, 2013 at 3:42 PM, Michal Mocny mmo...@chromium.org wrote:
  Sadly, we are approaching an in-between time of moving the mobile-spec
  tests out of the app and into plugins.  We are still investigating the
 best
  way to do this without disruption.
 
  For what its worth: several plugins now have a 'cdvtest' branch which
  supplies new-style tests ripped out of mobile-spec.  If you are having
  issues cleaning up the old style tests, take a look at the new ones (or
 try
  porting yourself).
 
  I'm going to write up a doc with the summary of the state of testing
 within
  a day or so given the results of this week to make it easier for you (and
  others) to pick up.
 
  -Michal
 
 
  On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com wrote:
 
   Thanks Michal. You answered my questions.
 
   More to elaborate on my question: I am testing amazon-fireos
  port(platform) with all plug-ins using mobile-spec. I am seeing some
  failures in 3.1.0 version because of test cases timing out. I am pretty
 new
  to cordova and still in learning phase. :) I am trying to understand
 these
  failures. Interestingly they pass on 3.0.x version.
 
   Archana
 
 
From: Michal Mocny mmo...@chromium.org
  Date: Wednesday, October 30, 2013 10:27 AM
  To: Naik, Archana na...@lab126.com
  Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal Mocny 
  mmo...@chromium.org
 
  Subject: Re: mobile-spec and releases: How do we test?
 
May you clarify?
 
   Right now, there is no formal way to test plugins, we are trying to
  invent that way now.  Check out cordova-labs repo's cdvtest branch for a
  sample app  plugin to track progress.
 
   Jasmine is hosted in that sample app, but plugins will not directly
  know/care.  Any testing framework which is api-compatible should work.
  In
  practice, I'm not sure how compatible they all are, so it may very well
 be
  limited to jasmine -- but it does mean you can make local modifications
  such as our CI is doing to create a custom test reporter.
 
   -Michal
 
 
  On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com
 wrote:
 
  Hi, Guys
 
  While on this topic, I have a question: how do I test individual
 plug-in?
  Where is the this jasmine version specified?
 
  Thanks
  Archana
 
  On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:
 
  Here are some links to jasmine-2 docs since its a hard time finding
 them:
  
  http://jasmine.github.io/2.0/introduction.html
  
  https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
  
  
  On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
  wrote:
  
  
  
  
   On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
  br...@bryanhiggins.netwrote:
  
   I just converted geolocation to the new test style [1]
  
   I'm happy with the process overall, and I find the jasmine 2 tests
 are
   more
   succinct.
  
   There are a few things worth noting:
   - I kept the eval code in. At google today, it was discussed that
 this
  may
   not be the best approach.
   - Jasmine 2: You must hit at least one expect statement or the test
  will
   timeout even though done was called.
  
  
   We could file a bug (I ran into it during setup once too), but
 really,
   what is the worth of a test if there are no expect clauses?
  
  
   - I did not remove the manual test page [2]. It would be great if
 we
  had a
   convention for importing these. (ie test harness looks for a page
 at
   www/test/plugin-id.html and adds a link to it if it exists)
  
  
   I'm going to work on a solution for this today.  The thought is that
  the
   plugin has a single module that can define all auto/manual tests,
 and
  the
   test-harness choses which to display where.
  
  
  
   [1]
  
  
  
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
  ;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
   [2]
  
  
  
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
 
 
 ;a=blob;f=test/manual.html;h=6ec2eed03e18c2efaa8710094d60930bb32227ba;hb
  =459a01c01e8dfa2a688d25483bb48c46d8e2
  
  
   On Tue, Oct 15, 2013 at 12:50 PM, David Kemp drk...@chromium.org
  wrote:
  
In spite of that fact that it needs a tooling change, I like the
  added
mode tag / prepare steps.
The tooling change should be small and it means no runtime
 impact on
   apps.
   
I love the approach - a very positive step to cleaning up
 testing.
   
David Kemp
   
   
   
On Tue, Oct

Re: mobile-spec and releases: How do we test?

2013-10-31 Thread Michal Mocny
This is awesome progress, guys, thanks for the help.

I'm going to put all the bits together and compile a list of tasks left and
write-up instructions for those who have yet to take a look.  If everyone
on the lists is still happy with the direction, I'll move those to JIRA.


On Thu, Oct 31, 2013 at 11:08 AM, David Kemp drk...@chromium.org wrote:

 I converted the couchdb reporter to the 2.0 style and added it to the repo.
 It works(hard coded config), but still needs the configuration components
 completed and some final adjustments to the data.




 On Thu, Oct 31, 2013 at 11:05 AM, Anis KADRI anis.ka...@gmail.com wrote:

  I ported the contacts plugin [1] to the new style and I found the
  process to be more or less straightforward. I also kept the eval in
  there but there might be a better way ?
 
  [1] http://goo.gl/uhnwtz
 
  On Wed, Oct 30, 2013 at 3:42 PM, Michal Mocny mmo...@chromium.org
 wrote:
   Sadly, we are approaching an in-between time of moving the mobile-spec
   tests out of the app and into plugins.  We are still investigating the
  best
   way to do this without disruption.
  
   For what its worth: several plugins now have a 'cdvtest' branch which
   supplies new-style tests ripped out of mobile-spec.  If you are having
   issues cleaning up the old style tests, take a look at the new ones (or
  try
   porting yourself).
  
   I'm going to write up a doc with the summary of the state of testing
  within
   a day or so given the results of this week to make it easier for you
 (and
   others) to pick up.
  
   -Michal
  
  
   On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com
 wrote:
  
Thanks Michal. You answered my questions.
  
More to elaborate on my question: I am testing amazon-fireos
   port(platform) with all plug-ins using mobile-spec. I am seeing some
   failures in 3.1.0 version because of test cases timing out. I am
 pretty
  new
   to cordova and still in learning phase. :) I am trying to understand
  these
   failures. Interestingly they pass on 3.0.x version.
  
Archana
  
  
 From: Michal Mocny mmo...@chromium.org
   Date: Wednesday, October 30, 2013 10:27 AM
   To: Naik, Archana na...@lab126.com
   Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal Mocny 
   mmo...@chromium.org
  
   Subject: Re: mobile-spec and releases: How do we test?
  
 May you clarify?
  
Right now, there is no formal way to test plugins, we are trying to
   invent that way now.  Check out cordova-labs repo's cdvtest branch
 for a
   sample app  plugin to track progress.
  
Jasmine is hosted in that sample app, but plugins will not directly
   know/care.  Any testing framework which is api-compatible should work.
   In
   practice, I'm not sure how compatible they all are, so it may very
 well
  be
   limited to jasmine -- but it does mean you can make local
 modifications
   such as our CI is doing to create a custom test reporter.
  
-Michal
  
  
   On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com
  wrote:
  
   Hi, Guys
  
   While on this topic, I have a question: how do I test individual
  plug-in?
   Where is the this jasmine version specified?
  
   Thanks
   Archana
  
   On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:
  
   Here are some links to jasmine-2 docs since its a hard time finding
  them:
   
   http://jasmine.github.io/2.0/introduction.html
   
   
 https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
   
   
   On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
 
   wrote:
   
   
   
   
On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
   br...@bryanhiggins.netwrote:
   
I just converted geolocation to the new test style [1]
   
I'm happy with the process overall, and I find the jasmine 2
 tests
  are
more
succinct.
   
There are a few things worth noting:
- I kept the eval code in. At google today, it was discussed that
  this
   may
not be the best approach.
- Jasmine 2: You must hit at least one expect statement or the
 test
   will
timeout even though done was called.
   
   
We could file a bug (I ran into it during setup once too), but
  really,
what is the worth of a test if there are no expect clauses?
   
   
- I did not remove the manual test page [2]. It would be great if
  we
   had a
convention for importing these. (ie test harness looks for a page
  at
www/test/plugin-id.html and adds a link to it if it exists)
   
   
I'm going to work on a solution for this today.  The thought is
 that
   the
plugin has a single module that can define all auto/manual tests,
  and
   the
test-harness choses which to display where.
   
   
   
[1]
   
   
   
  
  https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
   ;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
[2]
   
   
   
  
  https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git

Re: mobile-spec and releases: How do we test?

2013-10-30 Thread Michal Mocny
May you clarify?

Right now, there is no formal way to test plugins, we are trying to invent
that way now.  Check out cordova-labs repo's cdvtest branch for a sample
app  plugin to track progress.

Jasmine is hosted in that sample app, but plugins will not directly
know/care.  Any testing framework which is api-compatible should work.  In
practice, I'm not sure how compatible they all are, so it may very well be
limited to jasmine -- but it does mean you can make local modifications
such as our CI is doing to create a custom test reporter.

-Michal


On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com wrote:

 Hi, Guys

 While on this topic, I have a question: how do I test individual plug-in?
 Where is the this jasmine version specified?

 Thanks
 Archana

 On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:

 Here are some links to jasmine-2 docs since its a hard time finding them:
 
 http://jasmine.github.io/2.0/introduction.html
 
 https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
 
 
 On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
 wrote:
 
 
 
 
  On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
 br...@bryanhiggins.netwrote:
 
  I just converted geolocation to the new test style [1]
 
  I'm happy with the process overall, and I find the jasmine 2 tests are
  more
  succinct.
 
  There are a few things worth noting:
  - I kept the eval code in. At google today, it was discussed that this
 may
  not be the best approach.
  - Jasmine 2: You must hit at least one expect statement or the test
 will
  timeout even though done was called.
 
 
  We could file a bug (I ran into it during setup once too), but really,
  what is the worth of a test if there are no expect clauses?
 
 
  - I did not remove the manual test page [2]. It would be great if we
 had a
  convention for importing these. (ie test harness looks for a page at
  www/test/plugin-id.html and adds a link to it if it exists)
 
 
  I'm going to work on a solution for this today.  The thought is that the
  plugin has a single module that can define all auto/manual tests, and
 the
  test-harness choses which to display where.
 
 
 
  [1]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
 ;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
  [2]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
 ;a=blob;f=test/manual.html;h=6ec2eed03e18c2efaa8710094d60930bb32227ba;hb
 =459a01c01e8dfa2a688d25483bb48c46d8e2
 
 
  On Tue, Oct 15, 2013 at 12:50 PM, David Kemp drk...@chromium.org
 wrote:
 
   In spite of that fact that it needs a tooling change, I like the
 added
   mode tag / prepare steps.
   The tooling change should be small and it means no runtime impact on
  apps.
  
   I love the approach - a very positive step to cleaning up testing.
  
   David Kemp
  
  
  
   On Tue, Oct 15, 2013 at 12:18 PM, Michal Mocny mmo...@chromium.org
   wrote:
  
Braden, you're right, good catch.
   
Discussing locally how we could support prepare --mode=... in the
  most
generalized form, we remembered an old suggestion to just support
  mode
tags.
   
The benefits seem to be:
- No need to add custom tag-prefix/attributes for the combinations
 of
js-module mode=, asset mode=, etc etc
- More visually apparent when reading a plugin.xml file, akin to
platforms tag
   
The drawbacks seem to be:
- Not all descendant tags are easy to support for a given mode (ie,
dependency)
   
   
Summarizing the options currently discussed in this thread:
   
- new js-test-module tag.  Not general enough solution to support
  tests
bundling assets, so -1 from me for this reason.
- mode=... attribute for a set of whitelisted tags (js-module,
   asset,
...)
- mode name=... tag for a set of whitelisted descendant
tags (js-module, asset, ...)
   
The last two options are really functionally equivalent, but given
  that
   we
opted for platform tag instead of attribute, I'm also favoring a
  mode
tag.
   
-Michal
   
   
On Tue, Oct 15, 2013 at 11:43 AM, Braden Shepherdson 
   bra...@chromium.org
wrote:
   
 It's not true that adding these tests only creates larger
 binaries.
   They
 will be fetched and parsed by the plugin loader code at app
 startup
   time.
 It goes through the list of all plugins in cordova_plugins.js and
  loads
 them all. That parses them, and runs the outermost layer, which
 is
  the
 wrapping function function(require, module, exports) { ... }. So
  there
   is
 still runtime memory and CPU impact.

 I support js-test-module tags or js-module ... test or
 whatever.
 Similarly, prepare for tests. I realize we want to avoid tooling
   support,
 but I think tooling support is a lesser evil than production
   performance
 impact.

 Overall approach makes me happy.

 Braden


 On 

Re: mobile-spec and releases: How do we test?

2013-10-30 Thread Michal Mocny
Sadly, we are approaching an in-between time of moving the mobile-spec
tests out of the app and into plugins.  We are still investigating the best
way to do this without disruption.

For what its worth: several plugins now have a 'cdvtest' branch which
supplies new-style tests ripped out of mobile-spec.  If you are having
issues cleaning up the old style tests, take a look at the new ones (or try
porting yourself).

I'm going to write up a doc with the summary of the state of testing within
a day or so given the results of this week to make it easier for you (and
others) to pick up.

-Michal


On Wed, Oct 30, 2013 at 1:54 PM, Naik, Archana na...@lab126.com wrote:

  Thanks Michal. You answered my questions.

  More to elaborate on my question: I am testing amazon-fireos
 port(platform) with all plug-ins using mobile-spec. I am seeing some
 failures in 3.1.0 version because of test cases timing out. I am pretty new
 to cordova and still in learning phase. :) I am trying to understand these
 failures. Interestingly they pass on 3.0.x version.

  Archana


   From: Michal Mocny mmo...@chromium.org
 Date: Wednesday, October 30, 2013 10:27 AM
 To: Naik, Archana na...@lab126.com
 Cc: dev@cordova.apache.org dev@cordova.apache.org, Michal Mocny 
 mmo...@chromium.org

 Subject: Re: mobile-spec and releases: How do we test?

   May you clarify?

  Right now, there is no formal way to test plugins, we are trying to
 invent that way now.  Check out cordova-labs repo's cdvtest branch for a
 sample app  plugin to track progress.

  Jasmine is hosted in that sample app, but plugins will not directly
 know/care.  Any testing framework which is api-compatible should work.  In
 practice, I'm not sure how compatible they all are, so it may very well be
 limited to jasmine -- but it does mean you can make local modifications
 such as our CI is doing to create a custom test reporter.

  -Michal


 On Wed, Oct 30, 2013 at 12:57 PM, Naik, Archana na...@lab126.com wrote:

 Hi, Guys

 While on this topic, I have a question: how do I test individual plug-in?
 Where is the this jasmine version specified?

 Thanks
 Archana

 On 10/30/13 7:26 AM, Michal Mocny mmo...@chromium.org wrote:

 Here are some links to jasmine-2 docs since its a hard time finding them:
 
 http://jasmine.github.io/2.0/introduction.html
 
 https://github.com/pivotal/jasmine/blob/master/release_notes/20rc5.md
 
 
 On Wed, Oct 30, 2013 at 10:16 AM, Michal Mocny mmo...@chromium.org
 wrote:
 
 
 
 
  On Tue, Oct 29, 2013 at 5:29 PM, Bryan Higgins
 br...@bryanhiggins.netwrote:
 
  I just converted geolocation to the new test style [1]
 
  I'm happy with the process overall, and I find the jasmine 2 tests are
  more
  succinct.
 
  There are a few things worth noting:
  - I kept the eval code in. At google today, it was discussed that this
 may
  not be the best approach.
  - Jasmine 2: You must hit at least one expect statement or the test
 will
  timeout even though done was called.
 
 
  We could file a bug (I ran into it during setup once too), but really,
  what is the worth of a test if there are no expect clauses?
 
 
  - I did not remove the manual test page [2]. It would be great if we
 had a
  convention for importing these. (ie test harness looks for a page at
  www/test/plugin-id.html and adds a link to it if it exists)
 
 
  I'm going to work on a solution for this today.  The thought is that
 the
  plugin has a single module that can define all auto/manual tests, and
 the
  test-harness choses which to display where.
 
 
 
  [1]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git
 ;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
  [2]
 
 
 
 https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git

 ;a=blob;f=test/manual.html;h=6ec2eed03e18c2efaa8710094d60930bb32227ba;hb
 =459a01c01e8dfa2a688d25483bb48c46d8e2
 
 
  On Tue, Oct 15, 2013 at 12:50 PM, David Kemp drk...@chromium.org
 wrote:
 
   In spite of that fact that it needs a tooling change, I like the
 added
   mode tag / prepare steps.
   The tooling change should be small and it means no runtime impact on
  apps.
  
   I love the approach - a very positive step to cleaning up testing.
  
   David Kemp
  
  
  
   On Tue, Oct 15, 2013 at 12:18 PM, Michal Mocny mmo...@chromium.org
 
   wrote:
  
Braden, you're right, good catch.
   
Discussing locally how we could support prepare --mode=... in
 the
  most
generalized form, we remembered an old suggestion to just support
  mode
tags.
   
The benefits seem to be:
- No need to add custom tag-prefix/attributes for the combinations
 of
js-module mode=, asset mode=, etc etc
- More visually apparent when reading a plugin.xml file, akin to
platforms tag
   
The drawbacks seem to be:
- Not all descendant tags are easy to support for a given mode
 (ie,
dependency)
   
   
Summarizing the options currently discussed in this thread:
   
- new js-test

Re: mobile-spec and releases: How do we test?

2013-10-29 Thread Bryan Higgins
I just converted geolocation to the new test style [1]

I'm happy with the process overall, and I find the jasmine 2 tests are more
succinct.

There are a few things worth noting:
- I kept the eval code in. At google today, it was discussed that this may
not be the best approach.
- Jasmine 2: You must hit at least one expect statement or the test will
timeout even though done was called.
- I did not remove the manual test page [2]. It would be great if we had a
convention for importing these. (ie test harness looks for a page at
www/test/plugin-id.html and adds a link to it if it exists)

[1]
https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git;a=commit;h=075850a460d8171a04809cf6317fb4c4ef998603
[2]
https://git-wip-us.apache.org/repos/asf?p=cordova-plugin-geolocation.git;a=blob;f=test/manual.html;h=6ec2eed03e18c2efaa8710094d60930bb32227ba;hb=459a01c01e8dfa2a688d25483bb48c46d8e2


On Tue, Oct 15, 2013 at 12:50 PM, David Kemp drk...@chromium.org wrote:

 In spite of that fact that it needs a tooling change, I like the added
 mode tag / prepare steps.
 The tooling change should be small and it means no runtime impact on apps.

 I love the approach - a very positive step to cleaning up testing.

 David Kemp



 On Tue, Oct 15, 2013 at 12:18 PM, Michal Mocny mmo...@chromium.org
 wrote:

  Braden, you're right, good catch.
 
  Discussing locally how we could support prepare --mode=... in the most
  generalized form, we remembered an old suggestion to just support mode
  tags.
 
  The benefits seem to be:
  - No need to add custom tag-prefix/attributes for the combinations of
  js-module mode=, asset mode=, etc etc
  - More visually apparent when reading a plugin.xml file, akin to
  platforms tag
 
  The drawbacks seem to be:
  - Not all descendant tags are easy to support for a given mode (ie,
  dependency)
 
 
  Summarizing the options currently discussed in this thread:
 
  - new js-test-module tag.  Not general enough solution to support tests
  bundling assets, so -1 from me for this reason.
  - mode=... attribute for a set of whitelisted tags (js-module,
 asset,
  ...)
  - mode name=... tag for a set of whitelisted descendant
  tags (js-module, asset, ...)
 
  The last two options are really functionally equivalent, but given that
 we
  opted for platform tag instead of attribute, I'm also favoring a mode
  tag.
 
  -Michal
 
 
  On Tue, Oct 15, 2013 at 11:43 AM, Braden Shepherdson 
 bra...@chromium.org
  wrote:
 
   It's not true that adding these tests only creates larger binaries.
 They
   will be fetched and parsed by the plugin loader code at app startup
 time.
   It goes through the list of all plugins in cordova_plugins.js and loads
   them all. That parses them, and runs the outermost layer, which is the
   wrapping function function(require, module, exports) { ... }. So there
 is
   still runtime memory and CPU impact.
  
   I support js-test-module tags or js-module ... test or whatever.
   Similarly, prepare for tests. I realize we want to avoid tooling
 support,
   but I think tooling support is a lesser evil than production
 performance
   impact.
  
   Overall approach makes me happy.
  
   Braden
  
  
   On Fri, Oct 11, 2013 at 9:43 PM, Michal Mocny mmo...@chromium.org
  wrote:
  
   On Fri, Oct 11, 2013 at 9:08 PM, Andrew Grieve agri...@chromium.org
   wrote:
  
The eval of the jasmine interface deserves mention. Is the
 motivation
there that tests can choose to use another testing framework? That's
  why
you don't just make jasmine functions globals?
   
  
   I was hoping the plugins would need to depend on anything but CDVTest,
  and
   not expect any globals.  I guess, though, that CDVTest still expects
 the
   app to provide to a test framework and some other stuff, so in the end
  its
   no different.  I was hedging on being able to update CDVTest in the
  future
   for whatever we need, and all 3rdparty plugins would not need
 updating.
eval() could be used to do all sorts of clever things if we needed..
  
  
   
One nit pick just from reading your email is that this will cause
 the
   test
js-modules to be injected into apps that use the plugins. I think
   probably
we will want to update the tools to recognize a js-test-module. We
*could* work around it by adding the tests to new plugins that
 depend
  on
the thing they are testing, but I think changing the tools would be
   nicer.
   
  
   I also mentioned splitting tests into second plugin but thats overkill
   except in extreme circumstances.  Note that the tests aren't actually
   loaded unless you require them, so its just a matter of larger
 binaries
   which could be filtered out manually.
  
   My person preference would be to support conditional build types,
 which
   have come up before.  ie, cordova prepare debug, cordova prepare
  release,
   cordova prepare test -- and plugin.xml could specify a different set
 of
   js-module for either.
  
   A specific 

Re: mobile-spec and releases: How do we test?

2013-10-15 Thread Braden Shepherdson
It's not true that adding these tests only creates larger binaries. They
will be fetched and parsed by the plugin loader code at app startup time.
It goes through the list of all plugins in cordova_plugins.js and loads
them all. That parses them, and runs the outermost layer, which is the
wrapping function function(require, module, exports) { ... }. So there is
still runtime memory and CPU impact.

I support js-test-module tags or js-module ... test or whatever.
Similarly, prepare for tests. I realize we want to avoid tooling support,
but I think tooling support is a lesser evil than production performance
impact.

Overall approach makes me happy.

Braden


On Fri, Oct 11, 2013 at 9:43 PM, Michal Mocny mmo...@chromium.org wrote:

 On Fri, Oct 11, 2013 at 9:08 PM, Andrew Grieve agri...@chromium.org
 wrote:

  The eval of the jasmine interface deserves mention. Is the motivation
  there that tests can choose to use another testing framework? That's why
  you don't just make jasmine functions globals?
 

 I was hoping the plugins would need to depend on anything but CDVTest, and
 not expect any globals.  I guess, though, that CDVTest still expects the
 app to provide to a test framework and some other stuff, so in the end its
 no different.  I was hedging on being able to update CDVTest in the future
 for whatever we need, and all 3rdparty plugins would not need updating.
  eval() could be used to do all sorts of clever things if we needed..


 
  One nit pick just from reading your email is that this will cause the
 test
  js-modules to be injected into apps that use the plugins. I think
 probably
  we will want to update the tools to recognize a js-test-module. We
  *could* work around it by adding the tests to new plugins that depend on
  the thing they are testing, but I think changing the tools would be
 nicer.
 

 I also mentioned splitting tests into second plugin but thats overkill
 except in extreme circumstances.  Note that the tests aren't actually
 loaded unless you require them, so its just a matter of larger binaries
 which could be filtered out manually.

 My person preference would be to support conditional build types, which
 have come up before.  ie, cordova prepare debug, cordova prepare release,
 cordova prepare test -- and plugin.xml could specify a different set of
 js-module for either.

 A specific js-test-module would be fine, but isnt 0 new tooling.

 Also, I forgot to mention, but we do need to add support for getting the
 full list of plugins installed, which should be trivial to add to
 modulemapper (maybe there  is already a way to reach in, but I don't think
 we have a documented api for it).


  Another nit is that it would be nice if the CordovaTests app didn't
 depend
  on any plugins. e.g., don't have it depend on device plugin.
 

 CordovaTests doesn't explicitly depend on device plugin, except that at the
 moment I have it printing the same info that MobileSpec does at startup.
  This could be wrapped in a try{}catch in case the require fails, but its
 good info to have in the common case.


 
  Overall, really like the approach!
 

 Thanks!


 
 
  On Fri, Oct 11, 2013 at 5:17 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
  TLDR; I've implemented a plugin testing strategy that requires 0 new
  tooling features, can support non-core plugins, and hopefully even
 support
  a variety of methods for running/reporting the test results.  Super
 alpha
  preview, but take a look if you like the direction!
 
 
  NEW: CDVTest Plugin: https://github.com/mmocny/CDVTest
 
  NEW: CordovaTest App: https://github.com/mmocny/CordovaTests
 
  UPDATED: Converted three existing plugins to this new style.  Code is
 on
  feature branches of respective repos (cdvtest branch):
  org.apache.cordova.device
  org.apache.cordova.device-motion
  org.chromium.storage
  (must clone locally, switch to branch, and plugin add from local path)
 
 
  Now, any plugin that wants to join in on the fun needs to provide a
  js-module
  src=... name=test / and use this template:
 
  exports.init = function() {
 
 
 eval(require('org.apache.cordova.test.test').injectJasmineInterface(this,
  'this'));
 
// TESTS GO HERE
describe(..., function() {
  it(...);
});
  };
  (The eval is optional but super useful; it will inject the jasmine
  interface into your scope, so you don't have to type jasmine.describe,
  jasmine.it, etc.  Not sure of any cleaner way to do this.)
 
 
  STEPS:
  1. create a new cordova project
  2. import the CordovaTest app into your www
  3. add any or all of the above plugins
  4. give it a run, and try out the auto tests (all pass on ipad, some
 still
  fail on android)
 
  Lots of work left to do, but hopefully good enough to whet your
 appetite.
 
  One thing to note, I've attempted to make CDVTest and plugin tests
 unaware
  of the specific jasmine version the app is hosting (so that it can be
  swapped without changing all plugins), but it must support the new style
  

Re: mobile-spec and releases: How do we test?

2013-10-15 Thread Michal Mocny
Braden, you're right, good catch.

Discussing locally how we could support prepare --mode=... in the most
generalized form, we remembered an old suggestion to just support mode
tags.

The benefits seem to be:
- No need to add custom tag-prefix/attributes for the combinations of
js-module mode=, asset mode=, etc etc
- More visually apparent when reading a plugin.xml file, akin to
platforms tag

The drawbacks seem to be:
- Not all descendant tags are easy to support for a given mode (ie,
dependency)


Summarizing the options currently discussed in this thread:

- new js-test-module tag.  Not general enough solution to support tests
bundling assets, so -1 from me for this reason.
- mode=... attribute for a set of whitelisted tags (js-module, asset,
...)
- mode name=... tag for a set of whitelisted descendant
tags (js-module, asset, ...)

The last two options are really functionally equivalent, but given that we
opted for platform tag instead of attribute, I'm also favoring a mode
tag.

-Michal


On Tue, Oct 15, 2013 at 11:43 AM, Braden Shepherdson bra...@chromium.orgwrote:

 It's not true that adding these tests only creates larger binaries. They
 will be fetched and parsed by the plugin loader code at app startup time.
 It goes through the list of all plugins in cordova_plugins.js and loads
 them all. That parses them, and runs the outermost layer, which is the
 wrapping function function(require, module, exports) { ... }. So there is
 still runtime memory and CPU impact.

 I support js-test-module tags or js-module ... test or whatever.
 Similarly, prepare for tests. I realize we want to avoid tooling support,
 but I think tooling support is a lesser evil than production performance
 impact.

 Overall approach makes me happy.

 Braden


 On Fri, Oct 11, 2013 at 9:43 PM, Michal Mocny mmo...@chromium.org wrote:

 On Fri, Oct 11, 2013 at 9:08 PM, Andrew Grieve agri...@chromium.org
 wrote:

  The eval of the jasmine interface deserves mention. Is the motivation
  there that tests can choose to use another testing framework? That's why
  you don't just make jasmine functions globals?
 

 I was hoping the plugins would need to depend on anything but CDVTest, and
 not expect any globals.  I guess, though, that CDVTest still expects the
 app to provide to a test framework and some other stuff, so in the end its
 no different.  I was hedging on being able to update CDVTest in the future
 for whatever we need, and all 3rdparty plugins would not need updating.
  eval() could be used to do all sorts of clever things if we needed..


 
  One nit pick just from reading your email is that this will cause the
 test
  js-modules to be injected into apps that use the plugins. I think
 probably
  we will want to update the tools to recognize a js-test-module. We
  *could* work around it by adding the tests to new plugins that depend on
  the thing they are testing, but I think changing the tools would be
 nicer.
 

 I also mentioned splitting tests into second plugin but thats overkill
 except in extreme circumstances.  Note that the tests aren't actually
 loaded unless you require them, so its just a matter of larger binaries
 which could be filtered out manually.

 My person preference would be to support conditional build types, which
 have come up before.  ie, cordova prepare debug, cordova prepare release,
 cordova prepare test -- and plugin.xml could specify a different set of
 js-module for either.

 A specific js-test-module would be fine, but isnt 0 new tooling.

 Also, I forgot to mention, but we do need to add support for getting the
 full list of plugins installed, which should be trivial to add to
 modulemapper (maybe there  is already a way to reach in, but I don't think
 we have a documented api for it).


  Another nit is that it would be nice if the CordovaTests app didn't
 depend
  on any plugins. e.g., don't have it depend on device plugin.
 

 CordovaTests doesn't explicitly depend on device plugin, except that at
 the
 moment I have it printing the same info that MobileSpec does at startup.
  This could be wrapped in a try{}catch in case the require fails, but its
 good info to have in the common case.


 
  Overall, really like the approach!
 

 Thanks!


 
 
  On Fri, Oct 11, 2013 at 5:17 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
  TLDR; I've implemented a plugin testing strategy that requires 0 new
  tooling features, can support non-core plugins, and hopefully even
 support
  a variety of methods for running/reporting the test results.  Super
 alpha
  preview, but take a look if you like the direction!
 
 
  NEW: CDVTest Plugin: https://github.com/mmocny/CDVTest
 
  NEW: CordovaTest App: https://github.com/mmocny/CordovaTests
 
  UPDATED: Converted three existing plugins to this new style.  Code
 is on
  feature branches of respective repos (cdvtest branch):
  org.apache.cordova.device
  org.apache.cordova.device-motion
  org.chromium.storage
  (must clone locally, switch to branch, and plugin 

Re: mobile-spec and releases: How do we test?

2013-10-15 Thread David Kemp
In spite of that fact that it needs a tooling change, I like the added
mode tag / prepare steps.
The tooling change should be small and it means no runtime impact on apps.

I love the approach - a very positive step to cleaning up testing.

David Kemp



On Tue, Oct 15, 2013 at 12:18 PM, Michal Mocny mmo...@chromium.org wrote:

 Braden, you're right, good catch.

 Discussing locally how we could support prepare --mode=... in the most
 generalized form, we remembered an old suggestion to just support mode
 tags.

 The benefits seem to be:
 - No need to add custom tag-prefix/attributes for the combinations of
 js-module mode=, asset mode=, etc etc
 - More visually apparent when reading a plugin.xml file, akin to
 platforms tag

 The drawbacks seem to be:
 - Not all descendant tags are easy to support for a given mode (ie,
 dependency)


 Summarizing the options currently discussed in this thread:

 - new js-test-module tag.  Not general enough solution to support tests
 bundling assets, so -1 from me for this reason.
 - mode=... attribute for a set of whitelisted tags (js-module, asset,
 ...)
 - mode name=... tag for a set of whitelisted descendant
 tags (js-module, asset, ...)

 The last two options are really functionally equivalent, but given that we
 opted for platform tag instead of attribute, I'm also favoring a mode
 tag.

 -Michal


 On Tue, Oct 15, 2013 at 11:43 AM, Braden Shepherdson bra...@chromium.org
 wrote:

  It's not true that adding these tests only creates larger binaries. They
  will be fetched and parsed by the plugin loader code at app startup time.
  It goes through the list of all plugins in cordova_plugins.js and loads
  them all. That parses them, and runs the outermost layer, which is the
  wrapping function function(require, module, exports) { ... }. So there is
  still runtime memory and CPU impact.
 
  I support js-test-module tags or js-module ... test or whatever.
  Similarly, prepare for tests. I realize we want to avoid tooling support,
  but I think tooling support is a lesser evil than production performance
  impact.
 
  Overall approach makes me happy.
 
  Braden
 
 
  On Fri, Oct 11, 2013 at 9:43 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
  On Fri, Oct 11, 2013 at 9:08 PM, Andrew Grieve agri...@chromium.org
  wrote:
 
   The eval of the jasmine interface deserves mention. Is the motivation
   there that tests can choose to use another testing framework? That's
 why
   you don't just make jasmine functions globals?
  
 
  I was hoping the plugins would need to depend on anything but CDVTest,
 and
  not expect any globals.  I guess, though, that CDVTest still expects the
  app to provide to a test framework and some other stuff, so in the end
 its
  no different.  I was hedging on being able to update CDVTest in the
 future
  for whatever we need, and all 3rdparty plugins would not need updating.
   eval() could be used to do all sorts of clever things if we needed..
 
 
  
   One nit pick just from reading your email is that this will cause the
  test
   js-modules to be injected into apps that use the plugins. I think
  probably
   we will want to update the tools to recognize a js-test-module. We
   *could* work around it by adding the tests to new plugins that depend
 on
   the thing they are testing, but I think changing the tools would be
  nicer.
  
 
  I also mentioned splitting tests into second plugin but thats overkill
  except in extreme circumstances.  Note that the tests aren't actually
  loaded unless you require them, so its just a matter of larger binaries
  which could be filtered out manually.
 
  My person preference would be to support conditional build types, which
  have come up before.  ie, cordova prepare debug, cordova prepare
 release,
  cordova prepare test -- and plugin.xml could specify a different set of
  js-module for either.
 
  A specific js-test-module would be fine, but isnt 0 new tooling.
 
  Also, I forgot to mention, but we do need to add support for getting the
  full list of plugins installed, which should be trivial to add to
  modulemapper (maybe there  is already a way to reach in, but I don't
 think
  we have a documented api for it).
 
 
   Another nit is that it would be nice if the CordovaTests app didn't
  depend
   on any plugins. e.g., don't have it depend on device plugin.
  
 
  CordovaTests doesn't explicitly depend on device plugin, except that at
  the
  moment I have it printing the same info that MobileSpec does at startup.
   This could be wrapped in a try{}catch in case the require fails, but
 its
  good info to have in the common case.
 
 
  
   Overall, really like the approach!
  
 
  Thanks!
 
 
  
  
   On Fri, Oct 11, 2013 at 5:17 PM, Michal Mocny mmo...@chromium.org
  wrote:
  
   TLDR; I've implemented a plugin testing strategy that requires 0 new
   tooling features, can support non-core plugins, and hopefully even
  support
   a variety of methods for running/reporting the test results.  Super
  

Re: mobile-spec and releases: How do we test?

2013-10-11 Thread Brian LeRoux
Sorry keep meaning to respond. I like Michal's first step but growing to a
full suite of tools. Are you currently tackling this Braden? I feel like it
is related to the Medic stuff and maybe we should throw one of our guys on
the problem fully.


On Sep 27, 2013 5:10 PM, Braden Shepherdson bra...@chromium.org wrote:

 Which one?


 On Fri, Sep 27, 2013 at 10:09 AM, Brian LeRoux b...@brian.io wrote:

  I really like your proposal as a starting point. Very simple but would
  allow for in-app testing as well as on the cmd line if we so wish.
 
 
  On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
   I was looking over some old emails from this list on plugin testing,
 and
  an
   idea that was proposed way back was to ship plugin tests as a second
   plugin.  That way, you can chose to install tests, or not, and know
   explicitly if they are being copied into your final project.
  
   An alternative would be to support build targets a la release/debug
 and
   have target-specific plugin.xml tags (assets, js-modules,
 source-file..).
  
   -Michal
  
  
   On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:
  
I think this is basically what we've been proposing for a while now.
   
   
On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org
   wrote:
   
 I would suggest perhaps a simpler approach, which doesn't add
  anything
new
 to cordova-cli/plugman:

 - Each plugin ships with a tests js-module, and we document a
convention
 of where they should live, and what signature it should have (i.e.,
 cordova.require('plugin.name.Tests').forEach(...) ).
   - Will need a common way to describe/report results (others have
 mentioned TAP).
 - Any app is free to run those plugin tests in any which way, but
 we
ship a
 mobile-spec app which is one opinionated way to do so.
   - It attempts to require the test module for each installed
 plugin,
runs
 them, and aggregates results.
   - It could report results to some shared server, allow toggling
 of
tests,
 etc, but no plugin should know or care about those features.

 Using that as a generic base:

 - We ship a CDVTests (or whatever) plugin which has a bunch of
   library
 code for creating tests, and plugins can use it to register their
   tests.
 - This makes it easier to register manual tests in a common format
  for
core
 plugins, and prevents code duplication for core auto tests.
 - External plugins can chose to use our testing library, or not.

 -Michal


 On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
bra...@chromium.org
 wrote:

  Here's an off-the-top-of-my-head sketch of how we might do
 Voltron
tests:
 
  - Add a tag to plugin.xml that names each test file:
  test type=automatic src=spec/foo.js name=Foo Automated
  /
  test type=manual src=spec/bar.js name=Foo Manual /
  - Add a new command, cordova test (maybe prepare-test), that:
  - Ignores the top-level www.
  - Instead copies in a basic testing index.html similar to the
current
  mobile-spec's
  - That index reads a file akin to cordova_plugins.js
 (cordova_tests.js,
  maybe?) generated by the CLI, containing the info from the test
   tags.
  - It has navigation similar to the current mobile-spec, with
buttons
  for the automatic and manual sections. Auto has All and then
 each
 module,
  manual just has the list of modules.
 
  Thoughts?
 
  Braden
 
 
  On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana 
   csantan...@gmail.com
  wrote:
 
   I like the idea can we call mobilespec now cordova-voltron and
 be
   DRY
 and
   use the tests form the plugins.
  
   Voltron by itself creates an App that tests only core, but as
 you
   use plugman to add plugins to voltron it has more test cases.
  
   It would not be a bad idea to enhance plugin.xml in the future
 to
 include
   information about testing (i.e. Directory containing tests
 files,
test
   command, etc..)
  
   --Carlos
  
   On Thursday, September 26, 2013, Anis KADRI wrote:
  
What's the challenge of having us use the tests that come
 with
   the
individual plugins ?
   
On Thu, Sep 26, 2013 at 8:13 AM, David Kemp 
 drk...@google.com
   javascript:;
wrote:
 Currently, the automated test system that we have running
(derived
  from
 Medic) uses only the mobilespec tests. It does not yet use
   tests
collected
 from the plugins. Its been talked about, but not gone
  anywhere.

 David Kemp


 On Wed, Sep 25, 2013 at 7:58 PM, Jesse 
   purplecabb...@gmail.com
   javascript:;
wrote:

 Yeah, I have 

Re: mobile-spec and releases: How do we test?

2013-10-11 Thread Michal Mocny
I'm throwing something together right now, actually.  I'll post my current
progress today so you can take a look.


On Fri, Oct 11, 2013 at 12:41 PM, Brian LeRoux b...@brian.io wrote:

 Sorry keep meaning to respond. I like Michal's first step but growing to a
 full suite of tools. Are you currently tackling this Braden? I feel like it
 is related to the Medic stuff and maybe we should throw one of our guys on
 the problem fully.


 On Sep 27, 2013 5:10 PM, Braden Shepherdson bra...@chromium.org wrote:

  Which one?
 
 
  On Fri, Sep 27, 2013 at 10:09 AM, Brian LeRoux b...@brian.io wrote:
 
   I really like your proposal as a starting point. Very simple but would
   allow for in-app testing as well as on the cmd line if we so wish.
  
  
   On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org
  wrote:
  
I was looking over some old emails from this list on plugin testing,
  and
   an
idea that was proposed way back was to ship plugin tests as a second
plugin.  That way, you can chose to install tests, or not, and know
explicitly if they are being copied into your final project.
   
An alternative would be to support build targets a la release/debug
  and
have target-specific plugin.xml tags (assets, js-modules,
  source-file..).
   
-Michal
   
   
On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:
   
 I think this is basically what we've been proposing for a while
 now.


 On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org
 
wrote:

  I would suggest perhaps a simpler approach, which doesn't add
   anything
 new
  to cordova-cli/plugman:
 
  - Each plugin ships with a tests js-module, and we document a
 convention
  of where they should live, and what signature it should have
 (i.e.,
  cordova.require('plugin.name.Tests').forEach(...) ).
- Will need a common way to describe/report results (others
 have
  mentioned TAP).
  - Any app is free to run those plugin tests in any which way, but
  we
 ship a
  mobile-spec app which is one opinionated way to do so.
- It attempts to require the test module for each installed
  plugin,
 runs
  them, and aggregates results.
- It could report results to some shared server, allow toggling
  of
 tests,
  etc, but no plugin should know or care about those features.
 
  Using that as a generic base:
 
  - We ship a CDVTests (or whatever) plugin which has a bunch of
library
  code for creating tests, and plugins can use it to register their
tests.
  - This makes it easier to register manual tests in a common
 format
   for
 core
  plugins, and prevents code duplication for core auto tests.
  - External plugins can chose to use our testing library, or not.
 
  -Michal
 
 
  On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
 bra...@chromium.org
  wrote:
 
   Here's an off-the-top-of-my-head sketch of how we might do
  Voltron
 tests:
  
   - Add a tag to plugin.xml that names each test file:
   test type=automatic src=spec/foo.js name=Foo
 Automated
   /
   test type=manual src=spec/bar.js name=Foo Manual /
   - Add a new command, cordova test (maybe prepare-test), that:
   - Ignores the top-level www.
   - Instead copies in a basic testing index.html similar to
 the
 current
   mobile-spec's
   - That index reads a file akin to cordova_plugins.js
  (cordova_tests.js,
   maybe?) generated by the CLI, containing the info from the
 test
tags.
   - It has navigation similar to the current mobile-spec,
 with
 buttons
   for the automatic and manual sections. Auto has All and then
  each
  module,
   manual just has the list of modules.
  
   Thoughts?
  
   Braden
  
  
   On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana 
csantan...@gmail.com
   wrote:
  
I like the idea can we call mobilespec now cordova-voltron
 and
  be
DRY
  and
use the tests form the plugins.
   
Voltron by itself creates an App that tests only core, but as
  you
use plugman to add plugins to voltron it has more test cases.
   
It would not be a bad idea to enhance plugin.xml in the
 future
  to
  include
information about testing (i.e. Directory containing tests
  files,
 test
command, etc..)
   
--Carlos
   
On Thursday, September 26, 2013, Anis KADRI wrote:
   
 What's the challenge of having us use the tests that come
  with
the
 individual plugins ?

 On Thu, Sep 26, 2013 at 8:13 AM, David Kemp 
  drk...@google.com
javascript:;
 wrote:
  Currently, the automated test system that we have running
 (derived
   from
  

Re: mobile-spec and releases: How do we test?

2013-10-11 Thread Michal Mocny
TLDR; I've implemented a plugin testing strategy that requires 0 new
tooling features, can support non-core plugins, and hopefully even support
a variety of methods for running/reporting the test results.  Super alpha
preview, but take a look if you like the direction!


NEW: CDVTest Plugin: https://github.com/mmocny/CDVTest

NEW: CordovaTest App: https://github.com/mmocny/CordovaTests

UPDATED: Converted three existing plugins to this new style.  Code is on
feature branches of respective repos (cdvtest branch):
org.apache.cordova.device
org.apache.cordova.device-motion
org.chromium.storage
(must clone locally, switch to branch, and plugin add from local path)


Now, any plugin that wants to join in on the fun needs to provide a js-module
src=... name=test / and use this template:

exports.init = function() {
  eval(require('org.apache.cordova.test.test').injectJasmineInterface(this,
'this'));

  // TESTS GO HERE
  describe(..., function() {
it(...);
  });
};
(The eval is optional but super useful; it will inject the jasmine
interface into your scope, so you don't have to type jasmine.describe,
jasmine.it, etc.  Not sure of any cleaner way to do this.)


STEPS:
1. create a new cordova project
2. import the CordovaTest app into your www
3. add any or all of the above plugins
4. give it a run, and try out the auto tests (all pass on ipad, some still
fail on android)

Lots of work left to do, but hopefully good enough to whet your appetite.

One thing to note, I've attempted to make CDVTest and plugin tests unaware
of the specific jasmine version the app is hosting (so that it can be
swapped without changing all plugins), but it must support the new style
interface for async tests (ie, accept a done callback).  This is the style
that node-jasmine uses, mocha uses, and jasmine-2.0 is going to use (I'm
using jasmine 2.0 rc3).  This means that core plugin tests require some
code transformations, but the net effect is cleaner tests and more common
style with our node tools' tests.

Manual tests are not implemented yet.

-Michal

On Fri, Oct 11, 2013 at 12:54 PM, Michal Mocny mmo...@chromium.org wrote:

 I'm throwing something together right now, actually.  I'll post my current
 progress today so you can take a look.


 On Fri, Oct 11, 2013 at 12:41 PM, Brian LeRoux b...@brian.io wrote:

 Sorry keep meaning to respond. I like Michal's first step but growing to a
 full suite of tools. Are you currently tackling this Braden? I feel like
 it
 is related to the Medic stuff and maybe we should throw one of our guys on
 the problem fully.


 On Sep 27, 2013 5:10 PM, Braden Shepherdson bra...@chromium.org
 wrote:

  Which one?
 
 
  On Fri, Sep 27, 2013 at 10:09 AM, Brian LeRoux b...@brian.io wrote:
 
   I really like your proposal as a starting point. Very simple but would
   allow for in-app testing as well as on the cmd line if we so wish.
  
  
   On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org
  wrote:
  
I was looking over some old emails from this list on plugin testing,
  and
   an
idea that was proposed way back was to ship plugin tests as a second
plugin.  That way, you can chose to install tests, or not, and know
explicitly if they are being copied into your final project.
   
An alternative would be to support build targets a la
 release/debug
  and
have target-specific plugin.xml tags (assets, js-modules,
  source-file..).
   
-Michal
   
   
On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:
   
 I think this is basically what we've been proposing for a while
 now.


 On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny 
 mmo...@chromium.org
wrote:

  I would suggest perhaps a simpler approach, which doesn't add
   anything
 new
  to cordova-cli/plugman:
 
  - Each plugin ships with a tests js-module, and we document a
 convention
  of where they should live, and what signature it should have
 (i.e.,
  cordova.require('plugin.name.Tests').forEach(...) ).
- Will need a common way to describe/report results (others
 have
  mentioned TAP).
  - Any app is free to run those plugin tests in any which way,
 but
  we
 ship a
  mobile-spec app which is one opinionated way to do so.
- It attempts to require the test module for each installed
  plugin,
 runs
  them, and aggregates results.
- It could report results to some shared server, allow
 toggling
  of
 tests,
  etc, but no plugin should know or care about those features.
 
  Using that as a generic base:
 
  - We ship a CDVTests (or whatever) plugin which has a bunch of
library
  code for creating tests, and plugins can use it to register
 their
tests.
  - This makes it easier to register manual tests in a common
 format
   for
 core
  plugins, and prevents code duplication for core auto tests.
  - External plugins can chose to use our testing 

Re: mobile-spec and releases: How do we test?

2013-10-11 Thread Andrew Grieve
The eval of the jasmine interface deserves mention. Is the motivation there
that tests can choose to use another testing framework? That's why you
don't just make jasmine functions globals?

One nit pick just from reading your email is that this will cause the test
js-modules to be injected into apps that use the plugins. I think probably
we will want to update the tools to recognize a js-test-module. We
*could* work around it by adding the tests to new plugins that depend on
the thing they are testing, but I think changing the tools would be nicer.

Another nit is that it would be nice if the CordovaTests app didn't depend
on any plugins. e.g., don't have it depend on device plugin.

Overall, really like the approach!


On Fri, Oct 11, 2013 at 5:17 PM, Michal Mocny mmo...@chromium.org wrote:

 TLDR; I've implemented a plugin testing strategy that requires 0 new
 tooling features, can support non-core plugins, and hopefully even support
 a variety of methods for running/reporting the test results.  Super alpha
 preview, but take a look if you like the direction!


 NEW: CDVTest Plugin: https://github.com/mmocny/CDVTest

 NEW: CordovaTest App: https://github.com/mmocny/CordovaTests

 UPDATED: Converted three existing plugins to this new style.  Code is on
 feature branches of respective repos (cdvtest branch):
 org.apache.cordova.device
 org.apache.cordova.device-motion
 org.chromium.storage
 (must clone locally, switch to branch, and plugin add from local path)


 Now, any plugin that wants to join in on the fun needs to provide a
 js-module
 src=... name=test / and use this template:

 exports.init = function() {
   eval(require('org.apache.cordova.test.test').injectJasmineInterface(this,
 'this'));

   // TESTS GO HERE
   describe(..., function() {
 it(...);
   });
 };
 (The eval is optional but super useful; it will inject the jasmine
 interface into your scope, so you don't have to type jasmine.describe,
 jasmine.it, etc.  Not sure of any cleaner way to do this.)


 STEPS:
 1. create a new cordova project
 2. import the CordovaTest app into your www
 3. add any or all of the above plugins
 4. give it a run, and try out the auto tests (all pass on ipad, some still
 fail on android)

 Lots of work left to do, but hopefully good enough to whet your appetite.

 One thing to note, I've attempted to make CDVTest and plugin tests unaware
 of the specific jasmine version the app is hosting (so that it can be
 swapped without changing all plugins), but it must support the new style
 interface for async tests (ie, accept a done callback).  This is the style
 that node-jasmine uses, mocha uses, and jasmine-2.0 is going to use (I'm
 using jasmine 2.0 rc3).  This means that core plugin tests require some
 code transformations, but the net effect is cleaner tests and more common
 style with our node tools' tests.

 Manual tests are not implemented yet.

 -Michal

 On Fri, Oct 11, 2013 at 12:54 PM, Michal Mocny mmo...@chromium.org
 wrote:

  I'm throwing something together right now, actually.  I'll post my
 current
  progress today so you can take a look.
 
 
  On Fri, Oct 11, 2013 at 12:41 PM, Brian LeRoux b...@brian.io wrote:
 
  Sorry keep meaning to respond. I like Michal's first step but growing
 to a
  full suite of tools. Are you currently tackling this Braden? I feel like
  it
  is related to the Medic stuff and maybe we should throw one of our guys
 on
  the problem fully.
 
 
  On Sep 27, 2013 5:10 PM, Braden Shepherdson bra...@chromium.org
  wrote:
 
   Which one?
  
  
   On Fri, Sep 27, 2013 at 10:09 AM, Brian LeRoux b...@brian.io wrote:
  
I really like your proposal as a starting point. Very simple but
 would
allow for in-app testing as well as on the cmd line if we so wish.
   
   
On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org
   wrote:
   
 I was looking over some old emails from this list on plugin
 testing,
   and
an
 idea that was proposed way back was to ship plugin tests as a
 second
 plugin.  That way, you can chose to install tests, or not, and
 know
 explicitly if they are being copied into your final project.

 An alternative would be to support build targets a la
  release/debug
   and
 have target-specific plugin.xml tags (assets, js-modules,
   source-file..).

 -Michal


 On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:

  I think this is basically what we've been proposing for a while
  now.
 
 
  On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny 
  mmo...@chromium.org
 wrote:
 
   I would suggest perhaps a simpler approach, which doesn't add
anything
  new
   to cordova-cli/plugman:
  
   - Each plugin ships with a tests js-module, and we document
 a
  convention
   of where they should live, and what signature it should have
  (i.e.,
   cordova.require('plugin.name.Tests').forEach(...) ).
 - Will need a common 

Re: mobile-spec and releases: How do we test?

2013-10-11 Thread Michal Mocny
On Fri, Oct 11, 2013 at 9:08 PM, Andrew Grieve agri...@chromium.org wrote:

 The eval of the jasmine interface deserves mention. Is the motivation
 there that tests can choose to use another testing framework? That's why
 you don't just make jasmine functions globals?


I was hoping the plugins would need to depend on anything but CDVTest, and
not expect any globals.  I guess, though, that CDVTest still expects the
app to provide to a test framework and some other stuff, so in the end its
no different.  I was hedging on being able to update CDVTest in the future
for whatever we need, and all 3rdparty plugins would not need updating.
 eval() could be used to do all sorts of clever things if we needed..



 One nit pick just from reading your email is that this will cause the test
 js-modules to be injected into apps that use the plugins. I think probably
 we will want to update the tools to recognize a js-test-module. We
 *could* work around it by adding the tests to new plugins that depend on
 the thing they are testing, but I think changing the tools would be nicer.


I also mentioned splitting tests into second plugin but thats overkill
except in extreme circumstances.  Note that the tests aren't actually
loaded unless you require them, so its just a matter of larger binaries
which could be filtered out manually.

My person preference would be to support conditional build types, which
have come up before.  ie, cordova prepare debug, cordova prepare release,
cordova prepare test -- and plugin.xml could specify a different set of
js-module for either.

A specific js-test-module would be fine, but isnt 0 new tooling.

Also, I forgot to mention, but we do need to add support for getting the
full list of plugins installed, which should be trivial to add to
modulemapper (maybe there  is already a way to reach in, but I don't think
we have a documented api for it).


 Another nit is that it would be nice if the CordovaTests app didn't depend
 on any plugins. e.g., don't have it depend on device plugin.


CordovaTests doesn't explicitly depend on device plugin, except that at the
moment I have it printing the same info that MobileSpec does at startup.
 This could be wrapped in a try{}catch in case the require fails, but its
good info to have in the common case.



 Overall, really like the approach!


Thanks!




 On Fri, Oct 11, 2013 at 5:17 PM, Michal Mocny mmo...@chromium.org wrote:

 TLDR; I've implemented a plugin testing strategy that requires 0 new
 tooling features, can support non-core plugins, and hopefully even support
 a variety of methods for running/reporting the test results.  Super alpha
 preview, but take a look if you like the direction!


 NEW: CDVTest Plugin: https://github.com/mmocny/CDVTest

 NEW: CordovaTest App: https://github.com/mmocny/CordovaTests

 UPDATED: Converted three existing plugins to this new style.  Code is on
 feature branches of respective repos (cdvtest branch):
 org.apache.cordova.device
 org.apache.cordova.device-motion
 org.chromium.storage
 (must clone locally, switch to branch, and plugin add from local path)


 Now, any plugin that wants to join in on the fun needs to provide a
 js-module
 src=... name=test / and use this template:

 exports.init = function() {

 eval(require('org.apache.cordova.test.test').injectJasmineInterface(this,
 'this'));

   // TESTS GO HERE
   describe(..., function() {
 it(...);
   });
 };
 (The eval is optional but super useful; it will inject the jasmine
 interface into your scope, so you don't have to type jasmine.describe,
 jasmine.it, etc.  Not sure of any cleaner way to do this.)


 STEPS:
 1. create a new cordova project
 2. import the CordovaTest app into your www
 3. add any or all of the above plugins
 4. give it a run, and try out the auto tests (all pass on ipad, some still
 fail on android)

 Lots of work left to do, but hopefully good enough to whet your appetite.

 One thing to note, I've attempted to make CDVTest and plugin tests unaware
 of the specific jasmine version the app is hosting (so that it can be
 swapped without changing all plugins), but it must support the new style
 interface for async tests (ie, accept a done callback).  This is the style
 that node-jasmine uses, mocha uses, and jasmine-2.0 is going to use (I'm
 using jasmine 2.0 rc3).  This means that core plugin tests require some
 code transformations, but the net effect is cleaner tests and more common
 style with our node tools' tests.

 Manual tests are not implemented yet.

 -Michal

 On Fri, Oct 11, 2013 at 12:54 PM, Michal Mocny mmo...@chromium.org
 wrote:

  I'm throwing something together right now, actually.  I'll post my
 current
  progress today so you can take a look.
 
 
  On Fri, Oct 11, 2013 at 12:41 PM, Brian LeRoux b...@brian.io wrote:
 
  Sorry keep meaning to respond. I like Michal's first step but growing
 to a
  full suite of tools. Are you currently tackling this Braden? I feel
 like
  it
  is related to the Medic stuff and 

Re: mobile-spec and releases: How do we test?

2013-09-27 Thread Michal Mocny
I was looking over some old emails from this list on plugin testing, and an
idea that was proposed way back was to ship plugin tests as a second
plugin.  That way, you can chose to install tests, or not, and know
explicitly if they are being copied into your final project.

An alternative would be to support build targets a la release/debug and
have target-specific plugin.xml tags (assets, js-modules, source-file..).

-Michal


On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:

 I think this is basically what we've been proposing for a while now.


 On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org wrote:

  I would suggest perhaps a simpler approach, which doesn't add anything
 new
  to cordova-cli/plugman:
 
  - Each plugin ships with a tests js-module, and we document a
 convention
  of where they should live, and what signature it should have (i.e.,
  cordova.require('plugin.name.Tests').forEach(...) ).
- Will need a common way to describe/report results (others have
  mentioned TAP).
  - Any app is free to run those plugin tests in any which way, but we
 ship a
  mobile-spec app which is one opinionated way to do so.
- It attempts to require the test module for each installed plugin,
 runs
  them, and aggregates results.
- It could report results to some shared server, allow toggling of
 tests,
  etc, but no plugin should know or care about those features.
 
  Using that as a generic base:
 
  - We ship a CDVTests (or whatever) plugin which has a bunch of library
  code for creating tests, and plugins can use it to register their tests.
  - This makes it easier to register manual tests in a common format for
 core
  plugins, and prevents code duplication for core auto tests.
  - External plugins can chose to use our testing library, or not.
 
  -Michal
 
 
  On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
 bra...@chromium.org
  wrote:
 
   Here's an off-the-top-of-my-head sketch of how we might do Voltron
 tests:
  
   - Add a tag to plugin.xml that names each test file:
   test type=automatic src=spec/foo.js name=Foo Automated /
   test type=manual src=spec/bar.js name=Foo Manual /
   - Add a new command, cordova test (maybe prepare-test), that:
   - Ignores the top-level www.
   - Instead copies in a basic testing index.html similar to the
 current
   mobile-spec's
   - That index reads a file akin to cordova_plugins.js
  (cordova_tests.js,
   maybe?) generated by the CLI, containing the info from the test tags.
   - It has navigation similar to the current mobile-spec, with
 buttons
   for the automatic and manual sections. Auto has All and then each
  module,
   manual just has the list of modules.
  
   Thoughts?
  
   Braden
  
  
   On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana csantan...@gmail.com
   wrote:
  
I like the idea can we call mobilespec now cordova-voltron and be DRY
  and
use the tests form the plugins.
   
Voltron by itself creates an App that tests only core, but as you
use plugman to add plugins to voltron it has more test cases.
   
It would not be a bad idea to enhance plugin.xml in the future to
  include
information about testing (i.e. Directory containing tests files,
 test
command, etc..)
   
--Carlos
   
On Thursday, September 26, 2013, Anis KADRI wrote:
   
 What's the challenge of having us use the tests that come with the
 individual plugins ?

 On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
javascript:;
 wrote:
  Currently, the automated test system that we have running
 (derived
   from
  Medic) uses only the mobilespec tests. It does not yet use tests
 collected
  from the plugins. Its been talked about, but not gone anywhere.
 
  David Kemp
 
 
  On Wed, Sep 25, 2013 at 7:58 PM, Jesse purplecabb...@gmail.com
javascript:;
 wrote:
 
  Yeah, I have pushed some changes to mobile-spec, and when I did
 I
   also
  copied the tests into the plugin involved.
  Until we get the magic test runner happening, I think we just
 keep
  duplicating.
 
  @purplecabbage
  risingj.com
 
 
  On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
   stevengil...@gmail.com
javascript:;
 
  wrote:
 
   We copied over tests into plugins when we first broke them
 out,
   but
I
  don't
   believe they have been updated.
  
   I would say for now to just add the tests to mobile spec, and
 possibly in
   the future we go all voltron to build mobile spec and keep
 tests
with
  their
   corresponding plugins.
  
  
   On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser 
 bows...@gmail.com
javascript:;
 wrote:
  
Hey
   
Right now, I'm working on a weird file issue that requires
 me
  to
update mobile-spec, but I'm wondering where the tests should
   live.

Re: mobile-spec and releases: How do we test?

2013-09-27 Thread Carlos Santana
Hum I think keeping tests with the plugin is a better approach, keeps code
and test together on a single repo for a plugin.



Maybe plugman should not install the test folder located on the root of the
plugin by default unless an optional flag --test is pass

plugman install --test ...
cordova plugin add com.plugin --test

--Carlos



On Fri, Sep 27, 2013 at 9:28 AM, Michal Mocny mmo...@chromium.org wrote:

 I was looking over some old emails from this list on plugin testing, and an
 idea that was proposed way back was to ship plugin tests as a second
 plugin.  That way, you can chose to install tests, or not, and know
 explicitly if they are being copied into your final project.

 An alternative would be to support build targets a la release/debug and
 have target-specific plugin.xml tags (assets, js-modules, source-file..).

 -Michal


 On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:

  I think this is basically what we've been proposing for a while now.
 
 
  On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
   I would suggest perhaps a simpler approach, which doesn't add anything
  new
   to cordova-cli/plugman:
  
   - Each plugin ships with a tests js-module, and we document a
  convention
   of where they should live, and what signature it should have (i.e.,
   cordova.require('plugin.name.Tests').forEach(...) ).
 - Will need a common way to describe/report results (others have
   mentioned TAP).
   - Any app is free to run those plugin tests in any which way, but we
  ship a
   mobile-spec app which is one opinionated way to do so.
 - It attempts to require the test module for each installed plugin,
  runs
   them, and aggregates results.
 - It could report results to some shared server, allow toggling of
  tests,
   etc, but no plugin should know or care about those features.
  
   Using that as a generic base:
  
   - We ship a CDVTests (or whatever) plugin which has a bunch of
 library
   code for creating tests, and plugins can use it to register their
 tests.
   - This makes it easier to register manual tests in a common format for
  core
   plugins, and prevents code duplication for core auto tests.
   - External plugins can chose to use our testing library, or not.
  
   -Michal
  
  
   On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
  bra...@chromium.org
   wrote:
  
Here's an off-the-top-of-my-head sketch of how we might do Voltron
  tests:
   
- Add a tag to plugin.xml that names each test file:
test type=automatic src=spec/foo.js name=Foo Automated /
test type=manual src=spec/bar.js name=Foo Manual /
- Add a new command, cordova test (maybe prepare-test), that:
- Ignores the top-level www.
- Instead copies in a basic testing index.html similar to the
  current
mobile-spec's
- That index reads a file akin to cordova_plugins.js
   (cordova_tests.js,
maybe?) generated by the CLI, containing the info from the test
 tags.
- It has navigation similar to the current mobile-spec, with
  buttons
for the automatic and manual sections. Auto has All and then each
   module,
manual just has the list of modules.
   
Thoughts?
   
Braden
   
   
On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana 
 csantan...@gmail.com
wrote:
   
 I like the idea can we call mobilespec now cordova-voltron and be
 DRY
   and
 use the tests form the plugins.

 Voltron by itself creates an App that tests only core, but as you
 use plugman to add plugins to voltron it has more test cases.

 It would not be a bad idea to enhance plugin.xml in the future to
   include
 information about testing (i.e. Directory containing tests files,
  test
 command, etc..)

 --Carlos

 On Thursday, September 26, 2013, Anis KADRI wrote:

  What's the challenge of having us use the tests that come with
 the
  individual plugins ?
 
  On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
 javascript:;
  wrote:
   Currently, the automated test system that we have running
  (derived
from
   Medic) uses only the mobilespec tests. It does not yet use
 tests
  collected
   from the plugins. Its been talked about, but not gone anywhere.
  
   David Kemp
  
  
   On Wed, Sep 25, 2013 at 7:58 PM, Jesse 
 purplecabb...@gmail.com
 javascript:;
  wrote:
  
   Yeah, I have pushed some changes to mobile-spec, and when I
 did
  I
also
   copied the tests into the plugin involved.
   Until we get the magic test runner happening, I think we just
  keep
   duplicating.
  
   @purplecabbage
   risingj.com
  
  
   On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
stevengil...@gmail.com
 javascript:;
  
   wrote:
  
We copied over tests into plugins when we first broke them
  out,
but
 I
   

Re: mobile-spec and releases: How do we test?

2013-09-27 Thread Brian LeRoux
I really like your proposal as a starting point. Very simple but would
allow for in-app testing as well as on the cmd line if we so wish.


On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org wrote:

 I was looking over some old emails from this list on plugin testing, and an
 idea that was proposed way back was to ship plugin tests as a second
 plugin.  That way, you can chose to install tests, or not, and know
 explicitly if they are being copied into your final project.

 An alternative would be to support build targets a la release/debug and
 have target-specific plugin.xml tags (assets, js-modules, source-file..).

 -Michal


 On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:

  I think this is basically what we've been proposing for a while now.
 
 
  On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org
 wrote:
 
   I would suggest perhaps a simpler approach, which doesn't add anything
  new
   to cordova-cli/plugman:
  
   - Each plugin ships with a tests js-module, and we document a
  convention
   of where they should live, and what signature it should have (i.e.,
   cordova.require('plugin.name.Tests').forEach(...) ).
 - Will need a common way to describe/report results (others have
   mentioned TAP).
   - Any app is free to run those plugin tests in any which way, but we
  ship a
   mobile-spec app which is one opinionated way to do so.
 - It attempts to require the test module for each installed plugin,
  runs
   them, and aggregates results.
 - It could report results to some shared server, allow toggling of
  tests,
   etc, but no plugin should know or care about those features.
  
   Using that as a generic base:
  
   - We ship a CDVTests (or whatever) plugin which has a bunch of
 library
   code for creating tests, and plugins can use it to register their
 tests.
   - This makes it easier to register manual tests in a common format for
  core
   plugins, and prevents code duplication for core auto tests.
   - External plugins can chose to use our testing library, or not.
  
   -Michal
  
  
   On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
  bra...@chromium.org
   wrote:
  
Here's an off-the-top-of-my-head sketch of how we might do Voltron
  tests:
   
- Add a tag to plugin.xml that names each test file:
test type=automatic src=spec/foo.js name=Foo Automated /
test type=manual src=spec/bar.js name=Foo Manual /
- Add a new command, cordova test (maybe prepare-test), that:
- Ignores the top-level www.
- Instead copies in a basic testing index.html similar to the
  current
mobile-spec's
- That index reads a file akin to cordova_plugins.js
   (cordova_tests.js,
maybe?) generated by the CLI, containing the info from the test
 tags.
- It has navigation similar to the current mobile-spec, with
  buttons
for the automatic and manual sections. Auto has All and then each
   module,
manual just has the list of modules.
   
Thoughts?
   
Braden
   
   
On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana 
 csantan...@gmail.com
wrote:
   
 I like the idea can we call mobilespec now cordova-voltron and be
 DRY
   and
 use the tests form the plugins.

 Voltron by itself creates an App that tests only core, but as you
 use plugman to add plugins to voltron it has more test cases.

 It would not be a bad idea to enhance plugin.xml in the future to
   include
 information about testing (i.e. Directory containing tests files,
  test
 command, etc..)

 --Carlos

 On Thursday, September 26, 2013, Anis KADRI wrote:

  What's the challenge of having us use the tests that come with
 the
  individual plugins ?
 
  On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
 javascript:;
  wrote:
   Currently, the automated test system that we have running
  (derived
from
   Medic) uses only the mobilespec tests. It does not yet use
 tests
  collected
   from the plugins. Its been talked about, but not gone anywhere.
  
   David Kemp
  
  
   On Wed, Sep 25, 2013 at 7:58 PM, Jesse 
 purplecabb...@gmail.com
 javascript:;
  wrote:
  
   Yeah, I have pushed some changes to mobile-spec, and when I
 did
  I
also
   copied the tests into the plugin involved.
   Until we get the magic test runner happening, I think we just
  keep
   duplicating.
  
   @purplecabbage
   risingj.com
  
  
   On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
stevengil...@gmail.com
 javascript:;
  
   wrote:
  
We copied over tests into plugins when we first broke them
  out,
but
 I
   don't
believe they have been updated.
   
I would say for now to just add the tests to mobile spec,
 and
  possibly in
the future we go all voltron to build mobile spec 

Re: mobile-spec and releases: How do we test?

2013-09-27 Thread Braden Shepherdson
Which one?


On Fri, Sep 27, 2013 at 10:09 AM, Brian LeRoux b...@brian.io wrote:

 I really like your proposal as a starting point. Very simple but would
 allow for in-app testing as well as on the cmd line if we so wish.


 On Fri, Sep 27, 2013 at 3:28 PM, Michal Mocny mmo...@chromium.org wrote:

  I was looking over some old emails from this list on plugin testing, and
 an
  idea that was proposed way back was to ship plugin tests as a second
  plugin.  That way, you can chose to install tests, or not, and know
  explicitly if they are being copied into your final project.
 
  An alternative would be to support build targets a la release/debug and
  have target-specific plugin.xml tags (assets, js-modules, source-file..).
 
  -Michal
 
 
  On Fri, Sep 27, 2013 at 4:52 AM, Brian LeRoux b...@brian.io wrote:
 
   I think this is basically what we've been proposing for a while now.
  
  
   On Thu, Sep 26, 2013 at 8:29 PM, Michal Mocny mmo...@chromium.org
  wrote:
  
I would suggest perhaps a simpler approach, which doesn't add
 anything
   new
to cordova-cli/plugman:
   
- Each plugin ships with a tests js-module, and we document a
   convention
of where they should live, and what signature it should have (i.e.,
cordova.require('plugin.name.Tests').forEach(...) ).
  - Will need a common way to describe/report results (others have
mentioned TAP).
- Any app is free to run those plugin tests in any which way, but we
   ship a
mobile-spec app which is one opinionated way to do so.
  - It attempts to require the test module for each installed plugin,
   runs
them, and aggregates results.
  - It could report results to some shared server, allow toggling of
   tests,
etc, but no plugin should know or care about those features.
   
Using that as a generic base:
   
- We ship a CDVTests (or whatever) plugin which has a bunch of
  library
code for creating tests, and plugins can use it to register their
  tests.
- This makes it easier to register manual tests in a common format
 for
   core
plugins, and prevents code duplication for core auto tests.
- External plugins can chose to use our testing library, or not.
   
-Michal
   
   
On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson 
   bra...@chromium.org
wrote:
   
 Here's an off-the-top-of-my-head sketch of how we might do Voltron
   tests:

 - Add a tag to plugin.xml that names each test file:
 test type=automatic src=spec/foo.js name=Foo Automated
 /
 test type=manual src=spec/bar.js name=Foo Manual /
 - Add a new command, cordova test (maybe prepare-test), that:
 - Ignores the top-level www.
 - Instead copies in a basic testing index.html similar to the
   current
 mobile-spec's
 - That index reads a file akin to cordova_plugins.js
(cordova_tests.js,
 maybe?) generated by the CLI, containing the info from the test
  tags.
 - It has navigation similar to the current mobile-spec, with
   buttons
 for the automatic and manual sections. Auto has All and then each
module,
 manual just has the list of modules.

 Thoughts?

 Braden


 On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana 
  csantan...@gmail.com
 wrote:

  I like the idea can we call mobilespec now cordova-voltron and be
  DRY
and
  use the tests form the plugins.
 
  Voltron by itself creates an App that tests only core, but as you
  use plugman to add plugins to voltron it has more test cases.
 
  It would not be a bad idea to enhance plugin.xml in the future to
include
  information about testing (i.e. Directory containing tests files,
   test
  command, etc..)
 
  --Carlos
 
  On Thursday, September 26, 2013, Anis KADRI wrote:
 
   What's the challenge of having us use the tests that come with
  the
   individual plugins ?
  
   On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
  javascript:;
   wrote:
Currently, the automated test system that we have running
   (derived
 from
Medic) uses only the mobilespec tests. It does not yet use
  tests
   collected
from the plugins. Its been talked about, but not gone
 anywhere.
   
David Kemp
   
   
On Wed, Sep 25, 2013 at 7:58 PM, Jesse 
  purplecabb...@gmail.com
  javascript:;
   wrote:
   
Yeah, I have pushed some changes to mobile-spec, and when I
  did
   I
 also
copied the tests into the plugin involved.
Until we get the magic test runner happening, I think we
 just
   keep
duplicating.
   
@purplecabbage
risingj.com
   
   
On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
 stevengil...@gmail.com
  javascript:;
   
wrote:
   
 We copied over tests into plugins when we first 

Re: mobile-spec and releases: How do we test?

2013-09-26 Thread David Kemp
Currently, the automated test system that we have running (derived from
Medic) uses only the mobilespec tests. It does not yet use tests collected
from the plugins. Its been talked about, but not gone anywhere.

David Kemp


On Wed, Sep 25, 2013 at 7:58 PM, Jesse purplecabb...@gmail.com wrote:

 Yeah, I have pushed some changes to mobile-spec, and when I did I also
 copied the tests into the plugin involved.
 Until we get the magic test runner happening, I think we just keep
 duplicating.

 @purplecabbage
 risingj.com


 On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill stevengil...@gmail.com
 wrote:

  We copied over tests into plugins when we first broke them out, but I
 don't
  believe they have been updated.
 
  I would say for now to just add the tests to mobile spec, and possibly in
  the future we go all voltron to build mobile spec and keep tests with
 their
  corresponding plugins.
 
 
  On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com wrote:
 
   Hey
  
   Right now, I'm working on a weird file issue that requires me to
   update mobile-spec, but I'm wondering where the tests should live.
   Should it all keep living in mobile-spec, or is it with the plugins.
   And if it's with the plugins, will there be scripts to assemble
   mobile-spec all Voltron style?
  
   This came up earlier, but I haven't found any fix that needed a
   mobile-spec test.  (Many that need native testing, like recursive file
   copy, etc).  Any thoughts?
  
   Joe
  
 



Re: mobile-spec and releases: How do we test?

2013-09-26 Thread Anis KADRI
What's the challenge of having us use the tests that come with the
individual plugins ?

On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com wrote:
 Currently, the automated test system that we have running (derived from
 Medic) uses only the mobilespec tests. It does not yet use tests collected
 from the plugins. Its been talked about, but not gone anywhere.

 David Kemp


 On Wed, Sep 25, 2013 at 7:58 PM, Jesse purplecabb...@gmail.com wrote:

 Yeah, I have pushed some changes to mobile-spec, and when I did I also
 copied the tests into the plugin involved.
 Until we get the magic test runner happening, I think we just keep
 duplicating.

 @purplecabbage
 risingj.com


 On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill stevengil...@gmail.com
 wrote:

  We copied over tests into plugins when we first broke them out, but I
 don't
  believe they have been updated.
 
  I would say for now to just add the tests to mobile spec, and possibly in
  the future we go all voltron to build mobile spec and keep tests with
 their
  corresponding plugins.
 
 
  On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com wrote:
 
   Hey
  
   Right now, I'm working on a weird file issue that requires me to
   update mobile-spec, but I'm wondering where the tests should live.
   Should it all keep living in mobile-spec, or is it with the plugins.
   And if it's with the plugins, will there be scripts to assemble
   mobile-spec all Voltron style?
  
   This came up earlier, but I haven't found any fix that needed a
   mobile-spec test.  (Many that need native testing, like recursive file
   copy, etc).  Any thoughts?
  
   Joe
  
 



Re: mobile-spec and releases: How do we test?

2013-09-26 Thread Carlos Santana
I like the idea can we call mobilespec now cordova-voltron and be DRY and
use the tests form the plugins.

Voltron by itself creates an App that tests only core, but as you
use plugman to add plugins to voltron it has more test cases.

It would not be a bad idea to enhance plugin.xml in the future to include
information about testing (i.e. Directory containing tests files, test
command, etc..)

--Carlos

On Thursday, September 26, 2013, Anis KADRI wrote:

 What's the challenge of having us use the tests that come with the
 individual plugins ?

 On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.comjavascript:;
 wrote:
  Currently, the automated test system that we have running (derived from
  Medic) uses only the mobilespec tests. It does not yet use tests
 collected
  from the plugins. Its been talked about, but not gone anywhere.
 
  David Kemp
 
 
  On Wed, Sep 25, 2013 at 7:58 PM, Jesse 
  purplecabb...@gmail.comjavascript:;
 wrote:
 
  Yeah, I have pushed some changes to mobile-spec, and when I did I also
  copied the tests into the plugin involved.
  Until we get the magic test runner happening, I think we just keep
  duplicating.
 
  @purplecabbage
  risingj.com
 
 
  On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
  stevengil...@gmail.comjavascript:;
 
  wrote:
 
   We copied over tests into plugins when we first broke them out, but I
  don't
   believe they have been updated.
  
   I would say for now to just add the tests to mobile spec, and
 possibly in
   the future we go all voltron to build mobile spec and keep tests with
  their
   corresponding plugins.
  
  
   On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser 
   bows...@gmail.comjavascript:;
 wrote:
  
Hey
   
Right now, I'm working on a weird file issue that requires me to
update mobile-spec, but I'm wondering where the tests should live.
Should it all keep living in mobile-spec, or is it with the plugins.
And if it's with the plugins, will there be scripts to assemble
mobile-spec all Voltron style?
   
This came up earlier, but I haven't found any fix that needed a
mobile-spec test.  (Many that need native testing, like recursive
 file
copy, etc).  Any thoughts?
   
Joe
   
  
 



-- 
Carlos Santana
csantan...@gmail.com


Re: mobile-spec and releases: How do we test?

2013-09-26 Thread Braden Shepherdson
Here's an off-the-top-of-my-head sketch of how we might do Voltron tests:

- Add a tag to plugin.xml that names each test file:
test type=automatic src=spec/foo.js name=Foo Automated /
test type=manual src=spec/bar.js name=Foo Manual /
- Add a new command, cordova test (maybe prepare-test), that:
- Ignores the top-level www.
- Instead copies in a basic testing index.html similar to the current
mobile-spec's
- That index reads a file akin to cordova_plugins.js (cordova_tests.js,
maybe?) generated by the CLI, containing the info from the test tags.
- It has navigation similar to the current mobile-spec, with buttons
for the automatic and manual sections. Auto has All and then each module,
manual just has the list of modules.

Thoughts?

Braden


On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana csantan...@gmail.comwrote:

 I like the idea can we call mobilespec now cordova-voltron and be DRY and
 use the tests form the plugins.

 Voltron by itself creates an App that tests only core, but as you
 use plugman to add plugins to voltron it has more test cases.

 It would not be a bad idea to enhance plugin.xml in the future to include
 information about testing (i.e. Directory containing tests files, test
 command, etc..)

 --Carlos

 On Thursday, September 26, 2013, Anis KADRI wrote:

  What's the challenge of having us use the tests that come with the
  individual plugins ?
 
  On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
 javascript:;
  wrote:
   Currently, the automated test system that we have running (derived from
   Medic) uses only the mobilespec tests. It does not yet use tests
  collected
   from the plugins. Its been talked about, but not gone anywhere.
  
   David Kemp
  
  
   On Wed, Sep 25, 2013 at 7:58 PM, Jesse purplecabb...@gmail.com
 javascript:;
  wrote:
  
   Yeah, I have pushed some changes to mobile-spec, and when I did I also
   copied the tests into the plugin involved.
   Until we get the magic test runner happening, I think we just keep
   duplicating.
  
   @purplecabbage
   risingj.com
  
  
   On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill stevengil...@gmail.com
 javascript:;
  
   wrote:
  
We copied over tests into plugins when we first broke them out, but
 I
   don't
believe they have been updated.
   
I would say for now to just add the tests to mobile spec, and
  possibly in
the future we go all voltron to build mobile spec and keep tests
 with
   their
corresponding plugins.
   
   
On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com
 javascript:;
  wrote:
   
 Hey

 Right now, I'm working on a weird file issue that requires me to
 update mobile-spec, but I'm wondering where the tests should live.
 Should it all keep living in mobile-spec, or is it with the
 plugins.
 And if it's with the plugins, will there be scripts to assemble
 mobile-spec all Voltron style?

 This came up earlier, but I haven't found any fix that needed a
 mobile-spec test.  (Many that need native testing, like recursive
  file
 copy, etc).  Any thoughts?

 Joe

   
  
 


 --
 Carlos Santana
 csantan...@gmail.com



Re: mobile-spec and releases: How do we test?

2013-09-26 Thread Michal Mocny
I would suggest perhaps a simpler approach, which doesn't add anything new
to cordova-cli/plugman:

- Each plugin ships with a tests js-module, and we document a convention
of where they should live, and what signature it should have (i.e.,
cordova.require('plugin.name.Tests').forEach(...) ).
  - Will need a common way to describe/report results (others have
mentioned TAP).
- Any app is free to run those plugin tests in any which way, but we ship a
mobile-spec app which is one opinionated way to do so.
  - It attempts to require the test module for each installed plugin, runs
them, and aggregates results.
  - It could report results to some shared server, allow toggling of tests,
etc, but no plugin should know or care about those features.

Using that as a generic base:

- We ship a CDVTests (or whatever) plugin which has a bunch of library
code for creating tests, and plugins can use it to register their tests.
- This makes it easier to register manual tests in a common format for core
plugins, and prevents code duplication for core auto tests.
- External plugins can chose to use our testing library, or not.

-Michal


On Thu, Sep 26, 2013 at 10:34 AM, Braden Shepherdson bra...@chromium.orgwrote:

 Here's an off-the-top-of-my-head sketch of how we might do Voltron tests:

 - Add a tag to plugin.xml that names each test file:
 test type=automatic src=spec/foo.js name=Foo Automated /
 test type=manual src=spec/bar.js name=Foo Manual /
 - Add a new command, cordova test (maybe prepare-test), that:
 - Ignores the top-level www.
 - Instead copies in a basic testing index.html similar to the current
 mobile-spec's
 - That index reads a file akin to cordova_plugins.js (cordova_tests.js,
 maybe?) generated by the CLI, containing the info from the test tags.
 - It has navigation similar to the current mobile-spec, with buttons
 for the automatic and manual sections. Auto has All and then each module,
 manual just has the list of modules.

 Thoughts?

 Braden


 On Thu, Sep 26, 2013 at 6:33 AM, Carlos Santana csantan...@gmail.com
 wrote:

  I like the idea can we call mobilespec now cordova-voltron and be DRY and
  use the tests form the plugins.
 
  Voltron by itself creates an App that tests only core, but as you
  use plugman to add plugins to voltron it has more test cases.
 
  It would not be a bad idea to enhance plugin.xml in the future to include
  information about testing (i.e. Directory containing tests files, test
  command, etc..)
 
  --Carlos
 
  On Thursday, September 26, 2013, Anis KADRI wrote:
 
   What's the challenge of having us use the tests that come with the
   individual plugins ?
  
   On Thu, Sep 26, 2013 at 8:13 AM, David Kemp drk...@google.com
  javascript:;
   wrote:
Currently, the automated test system that we have running (derived
 from
Medic) uses only the mobilespec tests. It does not yet use tests
   collected
from the plugins. Its been talked about, but not gone anywhere.
   
David Kemp
   
   
On Wed, Sep 25, 2013 at 7:58 PM, Jesse purplecabb...@gmail.com
  javascript:;
   wrote:
   
Yeah, I have pushed some changes to mobile-spec, and when I did I
 also
copied the tests into the plugin involved.
Until we get the magic test runner happening, I think we just keep
duplicating.
   
@purplecabbage
risingj.com
   
   
On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill 
 stevengil...@gmail.com
  javascript:;
   
wrote:
   
 We copied over tests into plugins when we first broke them out,
 but
  I
don't
 believe they have been updated.

 I would say for now to just add the tests to mobile spec, and
   possibly in
 the future we go all voltron to build mobile spec and keep tests
  with
their
 corresponding plugins.


 On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com
  javascript:;
   wrote:

  Hey
 
  Right now, I'm working on a weird file issue that requires me to
  update mobile-spec, but I'm wondering where the tests should
 live.
  Should it all keep living in mobile-spec, or is it with the
  plugins.
  And if it's with the plugins, will there be scripts to assemble
  mobile-spec all Voltron style?
 
  This came up earlier, but I haven't found any fix that needed a
  mobile-spec test.  (Many that need native testing, like
 recursive
   file
  copy, etc).  Any thoughts?
 
  Joe
 

   
  
 
 
  --
  Carlos Santana
  csantan...@gmail.com
 



mobile-spec and releases: How do we test?

2013-09-25 Thread Joe Bowser
Hey

Right now, I'm working on a weird file issue that requires me to
update mobile-spec, but I'm wondering where the tests should live.
Should it all keep living in mobile-spec, or is it with the plugins.
And if it's with the plugins, will there be scripts to assemble
mobile-spec all Voltron style?

This came up earlier, but I haven't found any fix that needed a
mobile-spec test.  (Many that need native testing, like recursive file
copy, etc).  Any thoughts?

Joe


Re: mobile-spec and releases: How do we test?

2013-09-25 Thread Steven Gill
We copied over tests into plugins when we first broke them out, but I don't
believe they have been updated.

I would say for now to just add the tests to mobile spec, and possibly in
the future we go all voltron to build mobile spec and keep tests with their
corresponding plugins.


On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com wrote:

 Hey

 Right now, I'm working on a weird file issue that requires me to
 update mobile-spec, but I'm wondering where the tests should live.
 Should it all keep living in mobile-spec, or is it with the plugins.
 And if it's with the plugins, will there be scripts to assemble
 mobile-spec all Voltron style?

 This came up earlier, but I haven't found any fix that needed a
 mobile-spec test.  (Many that need native testing, like recursive file
 copy, etc).  Any thoughts?

 Joe



Re: mobile-spec and releases: How do we test?

2013-09-25 Thread Jesse
Yeah, I have pushed some changes to mobile-spec, and when I did I also
copied the tests into the plugin involved.
Until we get the magic test runner happening, I think we just keep
duplicating.

@purplecabbage
risingj.com


On Wed, Sep 25, 2013 at 4:38 PM, Steven Gill stevengil...@gmail.com wrote:

 We copied over tests into plugins when we first broke them out, but I don't
 believe they have been updated.

 I would say for now to just add the tests to mobile spec, and possibly in
 the future we go all voltron to build mobile spec and keep tests with their
 corresponding plugins.


 On Wed, Sep 25, 2013 at 4:22 PM, Joe Bowser bows...@gmail.com wrote:

  Hey
 
  Right now, I'm working on a weird file issue that requires me to
  update mobile-spec, but I'm wondering where the tests should live.
  Should it all keep living in mobile-spec, or is it with the plugins.
  And if it's with the plugins, will there be scripts to assemble
  mobile-spec all Voltron style?
 
  This came up earlier, but I haven't found any fix that needed a
  mobile-spec test.  (Many that need native testing, like recursive file
  copy, etc).  Any thoughts?
 
  Joe