summaryrefslogtreecommitdiffstats
path: root/spec/unit/parser/parser.rb
Commit message (Collapse)AuthorAgeFilesLines
* Fix #2707 config_version fails more helpfullyRein Henrichs2009-10-151-1/+9
| | | | | | Use Puppet::Util.execute to run the config_version command and reraise its potential Puppet::ExecutionFailure exception as a more useful Pupppet::ParseError
* Fix #2638 - Allow creating several nodes with matching namesBrice Figureau2009-09-171-1/+1
| | | | | | | | When we are checking if a node exists before creating a new one we were also trying to match with regex node names, finding matches where in fact there is no equality. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fixing #2549 - autoloading of top-level classes works againLuke Kanies2009-08-241-0/+6
| | | | | | | | This was broken in the recent refactor around autoloading, which didn't special-case classes that specified that they were top-level. Signed-off-by: Luke Kanies <luke@madstop.com>
* Fixes #2493Markus Roberts2009-08-141-11/+19
| | | | | | | | | | | | Added downcasing into find_or_load (which replaced fqfind) to get back the old behaviour. Adjusted tests so that they would catch the problem & confirmed that they fail without the downcasing. Added tests to confirm the existance of #2493; improved existing autoload tests (removed inter-test interactions) and noted (with a TODO) that there was dead code in the feature loading test; added analogus case sensitivity tests where apropriate.
* Fixed #2294 - Classes sometimes cannot be foundMarkus Roberts2009-08-031-1/+71
| | | | | | | | | | | | | | | | | | | | | | | | This patch should fix the race condition causing ticket 2294; it extends the loading logic so that: * initial load attempts are processed (as before), * recursive load attempts return immediately (as before), * but subsequent concurrent load attempts from different threads wait on a semaphore (condition variable) and then retry (e.g. use the now-valid results of the first thread). This is a slight modification of the solution I'd originally proposed, to prevent a deadlock that could have arisen if three or more threads simultaneously attempted to load the same item. Though it solves the bug as reported, it has room for improvement: * Failures aren't cached, so repeated attempts will be made to import invalid items each time they are encountered * It doesn't address any of the underlying referential ambiguity (module vs. filename) * The threading logic should probably be refactored into a separate class (as a start I encapsulated it in an ad hoc singleton class, so at least it isn't cluttering up the load method) Signed-off-by: Markus Roberts <Markus@reality.com>
* Adding support for an external catalog versionLuke Kanies2009-08-011-0/+15
| | | | | | | | This allows you to specify a command used to determine the catalog version. Also added an integration test to verify the version cascades. Signed-off-by: Luke Kanies <luke@madstop.com>
* Removing duplication in the test structureLuke Kanies2009-08-011-10/+10
| | | | Signed-off-by: Luke Kanies <luke@madstop.com>
* Make sure node are referenced by their namesBrice Figureau2009-08-011-1/+89
| | | | | | | | | This patch uses the unused AST::HostName as the only way to reference a node in the AST nodes array. The AST::HostName respect the hash properties of the underlying string, to keep the O(1) hash properties. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Switching to LoadedCode from ASTSetLuke Kanies2009-07-051-1/+1
| | | | | | | | I also took the opportunity to clean up and simplify the interface to the parts of the parser that interact with this. Mostly it was method renames. Signed-off-by: Luke Kanies <luke@madstop.com>
* Removed extra whitespace from end of linesIan Taylor2009-06-061-13/+13
|
* Changed tabs to spaces without interfering with indentation or alignmentIan Taylor2009-06-061-3/+3
|
* Fixing the AST constant warnings, using a variable instead of a constantLuke Kanies2008-12-021-32/+32
| | | | Signed-off-by: Luke Kanies <luke@madstop.com>
* RSpec tests for the doc system (covers AST.doc, lexer and parser)Brice Figureau2008-11-171-4/+27
| | | | Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #857 - Multiple class of the same name don't append codeBrice Figureau2008-10-291-0/+28
| | | | | | | | | | | | | | | | | | | | The following manifest wasn't working: class one { notice('class one') } class one { notice('second class one') } include one It all boiled down to class code not being arrays. Encapsulating code in ASTArray when needed is enough to append code, because of the property of ASTArray to evaluate all their members in turn. Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #936 - Allow trailing comma in array definitionBrice Figureau2008-10-211-0/+8
| | | | Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #636 - Allow extraneous comma in function argument listBrice Figureau2008-10-211-0/+24
| | | | Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
* Fix #1109 - allow empty if or else branchesBrice Figureau2008-10-071-0/+26
| | | | | | | | | | | | This changesets allow empty if or else branches: if true { } else { } It works by emitting on the parser stack an AST node that doesn't do anything (a no-op). This allows the less intrusive code as no part of the if evaluation code has been touched.
* Rspec Tests for #381.Brice Figureau2008-10-051-1/+40
| | | | Moved part of the old resource reference tests to rspec.
* Add parser for arbitrary expressionsBrice Figureau2008-10-011-1/+47
| | | | | | | | | | | | | | | | The expressions can be used in if 'test' and in the right side of assignements. The expressions can contain any number of sub-expressions combined by either arithmetic operators, comparison operators, or boolean operators. Random Usage Examples: $result = ((( $two + 2) / $one) + 4 * 5.45) - (6 << 7) + (0x800 + -9) or if ($a < 10) and ($a + 10 != 200) { ... }
* Add rspec unit test for the append operatorBrice Figureau2008-09-211-0/+34
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>