Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
It takes about 20 minutes to run tests on testing.drupal.org.
I thought of an idea for SimpleTest itself that might help make it run faster: Install Drupal the first time and make copy of default database and files setup. Restore from it rather than re-install.
Thoughts?
Comment | File | Size | Author |
---|---|---|---|
#116 | drupal.simpletest-profile.116.patch | 2.34 KB | sun |
#112 | 323477-simpletest-performance.patch | 5.36 KB | Damien Tournoud |
#108 | simpletest.speedup.patch | 69.04 KB | Anonymous (not verified) |
#106 | simpletest.speedup.patch | 68.1 KB | Anonymous (not verified) |
#102 | simpletest.speedup.patch | 72.61 KB | Anonymous (not verified) |
Comments
Comment #1
boombatower CreditAttribution: boombatower commentedWorking on getting some numbers.
Comment #2
boombatower CreditAttribution: boombatower commentedAfter running first 10 test cases I get about 52% of the time spent installing Drupal. (54 seconds of 103 total)
Comment #3
boombatower CreditAttribution: boombatower commentedThis is the very basic code I used to benchmark he testing suite. Using .txt extension as there is no need for t.d.o to test this patch.
You will need to create a table called 'benchmark' with fields: type (int), elapse (float).
The results will be displayed after tests finish.
Comment #4
Damien Tournoud CreditAttribution: Damien Tournoud commentedI already investigated this a while back (patch attached). We already can get a significant performance improvement by doing intra-test-class caching (ie. we don't reinstall Drupal between test methods, simply copy back the clean environment).
Caching test environments *between* test-classes (ie. caching a clean installation of a given set of modules) would require locking somehow (because tests can be run concurrently), and I'm not sure how to do this now.
*But:* copying DB tables in a clean, portable manner is not easy. For MySQL, we need to add NO_AUTO_VALUE_ON_ZERO... but this seems to break some part of Drupal (especially where we do
INSERT INTO table VALUES (DEFAULT)
).As a conclusion: Crell talked about implementing a clean interface for copying tables in our database layer. We should bother him :)
Comment #5
dlhubler CreditAttribution: dlhubler commentedwould using mysql transactions help?
begin transaction
run test
rollback transaction
its a strategy i used in a previous life w/postgres
Comment #6
boombatower CreditAttribution: boombatower commentedPossibly and then reseting the files directory, but that is easy and should remain the way it is.
Do we have proper access to transactions in Drupal 7 core?
Comment #7
Anonymous (not verified) CreditAttribution: Anonymous commentedTransactions can be installed anytime by converting tables to InnoDB. As for InnoDB in core see #301362: Default to InnoDB in MySQL. But shouldn't tests.drupal.org test installing Drupal core from scratch at least once a week?
Comment #8
catch#4 gives me: Notice: Undefined index: test_id in _simpletest_batch_finished() (line 403 of /home/catch/www/7/modules/simpletest/simpletest.module).
Comment #9
boombatower CreditAttribution: boombatower commented#7: much more often than once a week. It will test it on every patch as they are posted and the whole set of active ones once daily or every other day...
That is why tuning is important.
Comment #10
Anonymous (not verified) CreditAttribution: Anonymous commentedAnd to really test the install process it needs to be done on all the supported DB; currently MySql and PostgreSQL. But MySQL has different engines and I would suggest testing on MyISAM and InnoDB as well.
Comment #11
Damien Tournoud CreditAttribution: Damien Tournoud commented@catch#8: that's one of the issue with that patch, linked to the NO_AUTO_VALUE_ON_ZERO setting.
When assigning a new test_id, simpletest.module does:
This translates to:
And that fails when NO_AUTO_VALUE_ON_ZERO is set (DEFAULT translates to 0 so test_id = 0 on the first run, and a duplicate error is generated on the second run).
I still need to study how to solve this issue in a cross-engine manner (inserting NULL would work on MySQL, but probably fail on PostgreSQL).
Comment #12
Anonymous (not verified) CreditAttribution: Anonymous commentedAnother thought, in order to support #10 comments more than one DB server on different ports with different configurations could help in supporting the multiple MySQL engine testing.
Comment #13
Anonymous (not verified) CreditAttribution: Anonymous commentedIf the DB has an auto index, the value shouldn't be specified at all to use the feature. Specifying the value for the index of course will use the value given regardless of the DB engine. I can't find a similar setting as NO_AUTO_VALUE_ON_ZERO for PostgreSQL.
Comment #14
Damien Tournoud CreditAttribution: Damien Tournoud commentedNot at all :)
On MySQL, you are supposed to insert NULL (or omit) a column to have the autoincrement value:
But on PostgreSQL, serials are implemented by (1) sequences and (2) variable default values:
So you are supposed to insert DEFAULT (or omit) to get the automatic value.
Comment #15
boombatower CreditAttribution: boombatower commentedAdding support for testing in separate environment is a totally different issue that I am looking into conquering later.
Comment #16
Anonymous (not verified) CreditAttribution: Anonymous commentedsubscribe. very cool stuff.
Comment #17
boombatower CreditAttribution: boombatower commentedHere is patch that caches install for entire test session. (base install without any non-default modules)
Then copies db over and installs test specific modules.
Note: I have not run entire suite, but initial results show 30+% speed increase.
This also needs cleanup as I do old style INSERT/UPDATE statements....
Comment #18
boombatower CreditAttribution: boombatower commentedThere is an error when running aggregator tests...bed time.
Comment #19
boombatower CreditAttribution: boombatower commentedIt needs to uninstall schema for custom (additional test specific modules) and leave all the default base tables.
Comment #20
webchickI wish there was a way to quadruple-subscribe to an issue.
I want this in core so bad it hurts. ;) Will try and take a look tomorrow when I am more conscious.
Comment #21
cburschkaSubscribe. It takes more than half an hour to run through all tests on my server, unless the server gets a hiccup halfway in and stops the testing.
Comment #22
boombatower CreditAttribution: boombatower commentedFixed the main concern I had...aggregator tests now run, but get a page title fail on one of them...
Comment #23
babbage CreditAttribution: babbage commentedInteresting. (Subscribe.)
Comment #24
boombatower CreditAttribution: boombatower commentedComing back to this issue after a bit, I decided to write down the flow of the code so I could more easily visualize it.
I noticed an issue....hook_schema_alter()...so i can either see if additional modules have that implemented and only drop the test database then...or always drop the test database to ensure fresh schema.
The main benefit of not dropping will be much larger performance gain and considering hook_schema_alter() is one of the less used hooks...might be worth tyring.
Comment #25
boombatower CreditAttribution: boombatower commentedsudo-code. Could move the create of base database to simpletest.module start of batch...but I'm think it will require code duplication...will look into.
Comment #26
boombatower CreditAttribution: boombatower commentedIn order to allow this to work will multi-process execution as provided by run-tests.sh I will need some sort of data structure to keep track of what test database are open for each base...
variable_get('simpletest_environment_prefixes');
Comment #27
boombatower CreditAttribution: boombatower commentedThis is not functional...but represents where I got tonight.
The getInfo() function per test case should be static...and is part of what is breaking this.
Feel free to take a look...I haven't even gotten it all to run due to the getInfo() issue.
Otherwise all the code is complete...who knows what it will do.
Comment #28
boombatower CreditAttribution: boombatower commentedBlocked by: #376129: Change getInfo() to a static method.
Comment #29
boombatower CreditAttribution: boombatower commentedAfter lots and lots of discussion #376129: Change getInfo() to a static method finally was decided on and made it in!
I'm am working on this.
Comment #30
boombatower CreditAttribution: boombatower commentedI have made great progress! I spend a fair amount of time drawing out what I was trying to do and came up with a much better approach with an added benefit. The code currently runs in index.php so I can easily debug it, but I have it to the point where it will consistently re-unse environments and such.
You can see here that it reuses an environment between two test methods.
I have attached a patch of the essentials to what I am working on. NOTE: some parts need a fair amount of cleanup. (this patch isn't ready for testing)
Comment #31
boombatower CreditAttribution: boombatower commentedActually runs a test! Not how I want it to end up, but it works! (I might split off the second part into separate patch if it ends up being splittable)
Bed time now.
Comment #32
boombatower CreditAttribution: boombatower commentedNeeds #391340: Job queue API to work as I have planned and re-use prefixed test databases.
Comment #33
jhedstromSubscribing
Comment #34
Damien Tournoud CreditAttribution: Damien Tournoud commented@boombatower: be careful, that's already a big patch, and it risks facing the same death as the previous attempt at refactoring Simpletest.
I suggest working on "baby"-steps:
There is really no need for a gigantic patch to do that ;)
Comment #35
boombatower CreditAttribution: boombatower commented#2: created: #449186: Implement DatabaseConnection::duplicate()
#4: This patch does that, it loads the test class itself in an environment which bootstraps in the prefixed database instead of trying to change to it and clearing statics.
Comment #36
boombatower CreditAttribution: boombatower commentedBeen meaning to work on #3 for a long time #449198: SimpleTest: Clean up test loading and related API.
Your right about splitting it up, much better approach...thx for bringing that up.
Note: the large patch you refer to that died...was very interdependent and required more work to split up then to just get on with life and commit...especially considering how much time I had spent on it...but oh well I let it die.
Comment #37
andypostStep #0 - write instructions about writing a tests! Mostly concerned about optimizations to stop anarchy in test writing.
- Less test* methods
- Less drupalGet()
- commit #500866: [META] remove t() from assert message I think - t() eats a lot
Comment #38
rfayI agree with andypost: We have to either massively optimize the creation of new test environments or we have to discourage people from creating a new test*() method for every test thought they have.
Comment #39
boombatower CreditAttribution: boombatower commentedIf we do anything in 7.x cycle lets focus on optimizing tests themselves, I'm planning a rewrite for Drupal 8 that should drastically improve environment creation speed.
Comment #40
rfaySo let's agree on where the low-hanging fruit is. The first thing we can do is to set the standard and document it.
As far as I can tell in D7, the creation of a new db for every test* method trumps every other performance issue by thousands of times. So that argues for grouping functionality into less test methods.
However, that conflicts with the general functionality idea that you should keep test methods specific in their aim so that it's easy to understand what each one is about.
I'd hate to lose the forest for the trees. Changing from a better software approach to a faster one seems like giving up ground.
But we have to remember that our test suite is taking longer and longer to execute. Even DamZ's qa-1 now takes quite a lot longer than it used to. So our path is not sustainable (I don't think) and we really have to fix performance before it because a true thorn in our side.
We're still in the range of successful testing times, although they've grown quite a lot
Comment #41
boombatower CreditAttribution: boombatower commentedWe add an API for this in 8.x and what not, but simple fix right now.
All the tests that can be grouped (or change them so they can) can be grouped using the following pattern.
testGroupSummary()
- checkX()
- checkY()
- checkZ()
etc.
Comment #42
rfayThat would be a BIG plus. The tests remain separate, but can be marked as not having dependency issues.
Comment #43
rfayComment #44
Damien Tournoud CreditAttribution: Damien Tournoud commentedWhy not doing something like this?
Some tests will probably fail, because they are not designed to work in an unclean environment, but this should help a ton for the database tests.
Comment #46
rfayThis looks pretty reasonable to me. I think we should give it a try.
I think we could use a better name than $singleEnvironmentMode to drive it, as the word "environment" is so terribly overloaded already. How about $sharedInstallMode, or something like that
Powered by Dreditor.
Comment #47
Anonymous (not verified) CreditAttribution: Anonymous commentedhere's another approach, probably not as fast as damien's, but one that keeps the environment for each test clean.
on my setup, i see the time to build the base environment drop from ~13s to ~8.5s, so it seems worth pursuing further.
i can take the patch to another issue if that's what people think is the way to go.
setting to "Needs Review" to see what the bot thinks of it. there are lots of hacks to clean up with this patch yet, but i'd like to get some feedback (bot and otherwise) now.
Comment #48
Anonymous (not verified) CreditAttribution: Anonymous commentedin #drupal, rfay just pointed out we can combine both DamZ's patch from #44 and mine from #47.
i'm not opposed to this idea, but i'd like to see how much faster we can go while sticking to "all tests run in a clean environment".
Comment #50
Anonymous (not verified) CreditAttribution: Anonymous commentedok, guess i can't wait to later to put locks around the building of the cache tables. will get to that next.
Comment #51
Anonymous (not verified) CreditAttribution: Anonymous commentedwith some locking this time, still a hacky proof of concept, but hopefully this will pass all tests.
Comment #53
Anonymous (not verified) CreditAttribution: Anonymous commentedi asked this of chx in #drupal, but i'll throw it in here as well - any reason we do the install profile module_enable after installing any module-specific tests?
if we can move this line from DWTC::setUp():
inside the cached part of the setup, we gain another couple of seconds per test.
Comment #54
Anonymous (not verified) CreditAttribution: Anonymous commentedpost of conversation from #drupal between rfay and i:
looking into what this would take next...
Comment #55
Anonymous (not verified) CreditAttribution: Anonymous commentedattached is a patch that creates a minimal test profile, and makes it the default for all DrupalWebTestCase based tests.
the test results should illustrate just how bloated and dependency-ridden a lot of our current tests are.
i started looking at some of the fails in ActionLoopTestCase and ouch, bloat, bloat, bloat. (i'm only singling it out because it was at the top of the list...)
this test fails because it relies on hook watchdog and some custom GET requests to the front page. with the slimmed down profile, the GET requests fire access denied watchdog messages, and it all goes pear-shaped from there.
the simple way to fix this is just to turn on a bunch more modules on the tested-side until it works.
the *right* way to fix this is to make the module written for the test provide all that is needed to create an action-trigger combination that calls itself recursively.
i suspect that if "make your tests rely on as little of the rest of drupal as possible" was applied across the board, we'd be refactoring half of them. personally, i think its worth it, but if i'm the only one, then there's not much point pushing on it.
so, feedback please.
Comment #56
andypostI think it's better to make a parameter that point which install profile should be used in test method
Comment #58
chx CreditAttribution: chx commentedThe reason we used standard profile because we wanted 'realistic' tests. A bit hard to explain at 2am :) anyways i am all for speeding up tests, i am totally against any major test refactoring in D7, i am all for major test refactoring in D8.
Comment #59
catch@chx: I thought it was because simpletest went in before the minimal profile, and because we didn't have a way to specify which profile to use for tests, but 'free' code coverage may have been another reason.
"the simple way to fix this is just to turn on a bunch more modules on the tested-side until it work"
I think it'd be a good first run for a patch to default to the minimal profile then explicitly list dependencies (or specify the standard profile). Then followup patches can try to reduce the dependencies, doing it all in one mega-patch seems like it'll end up going into D8 whatever happens.
Comment #60
jhedstromThe work for switching which profile to test is being pursued here: #279515: setting an installation profile for a test doesn't run hook_install_tasks().
Comment #61
Anonymous (not verified) CreditAttribution: Anonymous commentedjhedstrom: commented in #279515: setting an installation profile for a test doesn't run hook_install_tasks() . for this issue, we'd need per-test profile setting, not per-test class.
Comment #62
Anonymous (not verified) CreditAttribution: Anonymous commentedok, lets see what the bot thinks of this.
Comment #63
Anonymous (not verified) CreditAttribution: Anonymous commentedwhile i'm waiting for the bot - running five tests that use the new slimmer framework and pass, ACTIONS CONFIGURATION, AJAX COMMANDS, AJAX COMMAND FORM VALUES, AJAX FRAMEWORK and BASIC SQL SYNTAX TESTS:
with the patch took 1 min 53 sec.
for HEAD, that was 4 min 3 sec.
Comment #65
Anonymous (not verified) CreditAttribution: Anonymous commentedalrighty, try this.
think there are a couple of fails still, but very close now. lets see what the bot says.
Comment #67
Anonymous (not verified) CreditAttribution: Anonymous commentedok, this might actually pass.
Comment #68
Damien Tournoud CreditAttribution: Damien Tournoud commentedWe need to be able to hide the new Testing profile, because we definitely don't want to put that in the face of newcomers on the first installation screen. I suggest we just add
hidden = TRUE
in the .info and make sure this is taken into account.Other then that, this is a pretty harmless patch that increase the testing speed by as much as 30%!
(32 minutes vs. 23 minutes!)
Big +1 here.
Comment #69
Anonymous (not verified) CreditAttribution: Anonymous commentedthe profile doesn't show up on install (good) because i didn't create a .profile file (bad).
i can't see any support in the installer for hidden profiles, so that will need to be added. setting back to CNW for that.
glad to see Damien can replicate the speed-ups i see. just want to point out that there's still heeeeaaaaps of fat here. to avoid killing kittens, i just punted on pretty much everything that looked at all hard.
after this patch lands, we can pick webtestcase tests that have $profile = 'standard', take that out, then see what breaks. i suspect there are lot of tests that can easily be ported to the slim profile by adding a setUp() method with just parent::setUp('dependent_module', ...).
Comment #70
rfayYippee! I haven't tried it, but I can see this definitely being a +1.
Comment #71
Anonymous (not verified) CreditAttribution: Anonymous commentedok, added a profile file, and made the installer respect hidden = TRUE in profile install files.
Comment #72
Anonymous (not verified) CreditAttribution: Anonymous commentedComment #73
Anonymous (not verified) CreditAttribution: Anonymous commentedCNR
Comment #74
tstoecklerTrailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Please add one.
Trailing whitespace
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Trailing whitespace.
Sorry for printing each one out individually, just makes it easier to reroll. Will post a new patch in a minute.
Powered by Dreditor.
Comment #75
tstoecklerHere we go.
Comment #77
Anonymous (not verified) CreditAttribution: Anonymous commentedtstoeckler, thanks, but you forgot the new files.
Comment #78
boombatower CreditAttribution: boombatower commentedOverall, looks good.
In general I think it would be best if we continue to convert most of the tests to the slim profile + dependencies for performance and consistency reasons, leaving only the tests that are attempting to check things setup based on the standard profile.
Good to see some performance work get done on the tests!
Comment #79
moshe weitzman CreditAttribution: moshe weitzman commented+1 from me too. If anyone is motivated, I think it makes sense to keep converting tests to slim while this sits in rtbc.
Comment #80
webchickThe performance benefits of this patch are very compelling, and I especially love this hunk:
The changes are not nearly as invasive as I would've thought, too, which is nice. And I like this approach much better than previous recommendations, like shoving all of the tests for a module into a single testX() function.
However, as a release manager, I'm obviously incredibly nervous about this:
...when there are 50-something critical issues and growing every day, lately. We passed "polish" phase months and months ago, and distracting a bunch of the Really Smart People on the task of test polishing at this point, which is likely to grow the queue by another 50+ clean-up issues that will all need committer attention makes me go "margh". :\
However, since the testing bot now forms the backbone of our core development process, and since this performance increase will have massive implications going forward in the future, I think the benefits of this patch, despite its unfortunate timing, outweigh the possible detriments, so I'm willing to commit it.
I will leave this RTBC for 24 hours or so to give Dries a chance to chime in, though.
Comment #81
webchickWell, upon further review... a couple of things:
Let's put this function in one place and call it from both the tests and from standard.install. I can see these getting annoyingly out of sync going forward which is going to be terribly confusing for test debuggers.
Dear lord. What is all this belly-dancing? Please document it.
Powered by Dreditor.
Comment #82
Anonymous (not verified) CreditAttribution: Anonymous commentedwebchick, thanks for the review, and i'm glad you're ok with the patch.
we can work on speeding up the remaining tests *after* the release.
Comment #83
webchickPresume this was a cross-post. And yes, good point. ;) Maybe. ;)
Comment #84
moshe weitzman CreditAttribution: moshe weitzman commentedSpeeding up tests increases our velocity when fixing criticals. Lets try not to see this as distracting core devs.
Comment #85
Anonymous (not verified) CreditAttribution: Anonymous commentedok, reroll to address #81.
in the interests of kittens everywhere, i've taken out the TriggerActionTestCase belly-dancing and just set that test to use the standard profile. no point spending time on that right now, it'll still be there later.
i've pulled the content type creation out into a separate function in standard.install, and made the method in DrupalWebTestCase wrap that.
Comment #87
Anonymous (not verified) CreditAttribution: Anonymous commentedfix typo in node edit test case.
Comment #88
Anonymous (not verified) CreditAttribution: Anonymous commentedjust a note that once this lands, we can write tests that catch this sort of issue: #852394: minimal profile + seven leads to broken 'node/add' link.
Comment #90
Anonymous (not verified) CreditAttribution: Anonymous commented#87: simpletest.speedup.patch queued for re-testing.
Comment #91
Anonymous (not verified) CreditAttribution: Anonymous commentedi can't reproduce that fail locally, so i'm calling the bot a liar.
Comment #92
tstoecklerThe patch implemented the correct logic in install_select_profile_form(), but you forgot to put 'hidden = TRUE' in testing.info :)
This time I didn't forget the new files.
Comment #93
tstoecklerActually I did... (how embarassing...)
While I'm at it, removing the whitespace that crept in there again.
Comment #94
tstoecklerDarn it!!! How DO you add new directories with a patch???
For now I just copied the stuff from your earlier patch into the bottom of my patch file...
Comment #95
moshe weitzman CreditAttribution: moshe weitzman commentedYou can add new files using fakeadd: http://wimleers.com/blog/cvs-diff-new-files-fakeadd. Otherwise, use bzr or git to generate the diff. There are well known core repositories for each.
Comment #96
chx CreditAttribution: chx commentedWhere did we lose the notion of using 'minimal' and came up with a new profile? What's the point?
Comment #97
Anonymous (not verified) CreditAttribution: Anonymous commentedchx, speed, minimalism and separation.
i'd rather not have changes to the minimal profile effect testing.
having said that, we get 90% of the speed up using minimal profile, so i'm ok with doing that if that's what needed to get this in. its kinda dragging on now.
Comment #98
chx CreditAttribution: chx commented90%...? Is minimal not minimal enough?? As far as I am aware the only thing it does is adding a few blocks, easy to be get rid of if you dont want. One insert query surely is not 10%?
Comment #99
Anonymous (not verified) CreditAttribution: Anonymous commentedinstalling modules (registry rebuilds, cache clearing, etc) is one of the most expensive parts of the install process, and we go from 5 to 7 if we use minimal rather than the test profile. is that going to be 10%? don't know, haven't measured it, but i think its fair to say that the testing profile will be measurably quicker.
Comment #100
Damien Tournoud CreditAttribution: Damien Tournoud commentedI'm for using the testing profile, on the grounds of separation.
Comment #101
chx CreditAttribution: chx commentedThen we need a hidden profile feature?
Comment #102
Anonymous (not verified) CreditAttribution: Anonymous commentedblurgh, yes, we do, and this patch adds support for that. the patch at #94 was missing the "hidden = TRUE" line from testing.info.
Comment #103
chx CreditAttribution: chx commentedLooks good to me.
Comment #104
Anonymous (not verified) CreditAttribution: Anonymous commentedTagging.
Comment #105
sunThis is badly needed, but only almost RTBC.
(and elsewhere) Trailing white-space.
Please, if your IDE does not support auto-elimination of trailing white-space, and it also does not support to display/highlight EOL/CRLF markers, then please grep your patches for /\s$/ before submitting them. Not doing so wastes a lot of developer time.
1) Replace 'standard' with $this->profile
2) Replace that other thing with
3) More on the actual function/hook name below.
1) "content type" is a Node module concept. First subject for this install profile hook therefore is "node".
2) Follow [subject]_[verb] pattern like modern code elsewhere in core; i.e. "content_types" before "create".
3) Singular, not plural, talking entity. Also, we already have a node type API containing a couple of node_type_* functions.
4) Not sure whether the foreach() shouldn't be part of the function that invokes this install profile hook.
5) Squeezing "install" into the hook name might make sense.
Effectively: hook_node_type_install() ?
Powered by Dreditor.
Comment #106
Anonymous (not verified) CreditAttribution: Anonymous commentedsun, thanks for the review, which has convinced me simplify this patch to avoid killing kittens. this patch just does:
- allow for a test to set the profile
- default to the slim profile with enabled dependencies where that is all that is needed to work with the slim profile
- all other tests use the fat profile
trying to do more than that has already slowed down getting this in, and i just don't want to see it fail because of that. so, i've ripped out the content type creation stuff and just set a couple of extra tests to use the fat profile.
next step after this lands is to find the remaining tests that will work with the slim profile plus some enabled dependencies, as that's the next lowest hanging, simplest to implement bit.
after that, we can look at any tests that actually require thought to port to the slimmer profile.
Comment #108
Anonymous (not verified) CreditAttribution: Anonymous commentedwhen in doubt, throw code lard at the problem.
Comment #109
tstoecklerThe actual code changes in the patch are minimal and, now that the content type stuff is out have been reviewed numerous times.
Just a note that this patch adds two module dependencies for tests:
1. 'block' for one of the block tests
2. 'block', 'dashboard', 'comment' for the dashboard test.
I don't know whether this is intentional or not, but
1. since they are mostly obvious (I just don't get 'comment'...) and
2. the tests pass and
3. we want to revisit that in detail in a follow-up anyway
I think the patch is good to go still. Given that it increases test runs dramatically IMO it's not worth holding this up any longer on something that will be discussed (and changed, if needed) in a follow-up anyway.
Comment #110
webchickWe (Dries, Damien, and I) talked about this at the Drupalcon CPH Core Developer Summit (tm). Both Dries and I are on board with committing this patch. One caveat: given where we are in the release cycle (and even where we were in the release cycle when this initiative picked up), it makes more sense for the testing profile to default to 'standard' in Drupal 7. Otherwise, every single person who's written a test for their contrib/custom modules in D7 (which is becoming more and more as time goes on) has to add this line to their tests, and as we can see from the 70K patch core needed, this is quite a lot of work. :P In Drupal 8, though, we should invert this and make 'testing' the default.
Patch needs a re-roll, both for this change, and also because testing.profile is missing. ;)
Comment #111
webchickun-tagging.
Comment #112
Damien Tournoud CreditAttribution: Damien Tournoud commentedThis should work. Follow-up patches will use the testing profile in more places.
Comment #113
Dries CreditAttribution: Dries commentedLooks like the comment needs to be updated? It is not necessarily the default profile.
Comment #114
anarcat CreditAttribution: anarcat commentedjust a quick note there will be a conflict between this patch and #545452: Store install profile in the generated settings.php file which should be fairly easy to resolve, but that is to keep in mind anyways.
Comment #115
Dries CreditAttribution: Dries commentedCommitted to CVS HEAD. Thanks.
Comment #116
sunTiny follow-up. We should also fix that list of "absolutely required modules" in a separate issue, because we're treating many totally not required modules as absolutely required currently.
Comment #117
Damien Tournoud CreditAttribution: Damien Tournoud commentedAgreed with #116.
Comment #118
sunComment #119
webchickCommitted minor follow-up.
Comment #121
sunFYI, I've opened #913086: Allow modules to provide default configuration for running tests to fix the last gaps