taskjuggler 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1144 -2047
- data/README +1 -1
- data/Rakefile +6 -6
- data/data/css/tjmanual.css +20 -0
- data/data/css/tjreport.css +7 -6
- data/doc/AppConfig.html +136 -130
- data/doc/Arguments.html +46 -40
- data/doc/CHANGELOG.html +1162 -2057
- data/doc/COPYING.html +8 -2
- data/doc/Object.html +205 -199
- data/doc/README.html +9 -3
- data/doc/RuntimeConfig.html +75 -69
- data/doc/String.html +69 -63
- data/doc/TaskJuggler.html +350 -291
- data/doc/TaskJuggler/Account.html +26 -20
- data/doc/TaskJuggler/AccountAttribute.html +24 -18
- data/doc/TaskJuggler/AccountScenario.html +24 -18
- data/doc/TaskJuggler/Allocation.html +74 -68
- data/doc/TaskJuggler/AllocationAttribute.html +54 -48
- data/doc/TaskJuggler/AttributeBase.html +172 -93
- data/doc/TaskJuggler/AttributeDefinition.html +22 -16
- data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
- data/doc/TaskJuggler/BatchProcessor.html +263 -257
- data/doc/TaskJuggler/Booking.html +44 -38
- data/doc/TaskJuggler/BookingListAttribute.html +25 -21
- data/doc/TaskJuggler/BooleanAttribute.html +24 -18
- data/doc/TaskJuggler/CSVFile.html +193 -187
- data/doc/TaskJuggler/CellSettingPattern.html +13 -7
- data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
- data/doc/TaskJuggler/Charge.html +49 -43
- data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
- data/doc/TaskJuggler/ChargeSet.html +94 -88
- data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
- data/doc/TaskJuggler/CollisionDetector.html +142 -136
- data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
- data/doc/TaskJuggler/ColumnTable.html +50 -44
- data/doc/TaskJuggler/Daemon.html +71 -50
- data/doc/TaskJuggler/DataCache.html +110 -58
- data/doc/TaskJuggler/DataCacheEntry.html +22 -16
- data/doc/TaskJuggler/DateAttribute.html +24 -18
- data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
- data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
- data/doc/TaskJuggler/DurationAttribute.html +25 -19
- data/doc/TaskJuggler/FileList.html +25 -19
- data/doc/TaskJuggler/FileRecord.html +17 -11
- data/doc/TaskJuggler/FixnumAttribute.html +16 -10
- data/doc/TaskJuggler/FlagListAttribute.html +25 -21
- data/doc/TaskJuggler/FloatAttribute.html +20 -14
- data/doc/TaskJuggler/FormatListAttribute.html +17 -11
- data/doc/TaskJuggler/GanttChart.html +242 -236
- data/doc/TaskJuggler/GanttContainer.html +71 -67
- data/doc/TaskJuggler/GanttHeader.html +113 -107
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
- data/doc/TaskJuggler/GanttLine.html +217 -210
- data/doc/TaskJuggler/GanttLoadStack.html +89 -83
- data/doc/TaskJuggler/GanttMilestone.html +11 -6
- data/doc/TaskJuggler/GanttRouter.html +194 -186
- data/doc/TaskJuggler/GanttTaskBar.html +41 -34
- data/doc/TaskJuggler/HTMLDocument.html +52 -46
- data/doc/TaskJuggler/HTMLGraphics.html +58 -52
- data/doc/TaskJuggler/Interval.html +90 -84
- data/doc/TaskJuggler/IntervalList.html +777 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
- data/doc/TaskJuggler/JobInfo.html +36 -30
- data/doc/TaskJuggler/Journal.html +188 -177
- data/doc/TaskJuggler/JournalEntry.html +36 -30
- data/doc/TaskJuggler/JournalEntryList.html +88 -82
- data/doc/TaskJuggler/KeywordArray.html +12 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
- data/doc/TaskJuggler/Limits.html +111 -105
- data/doc/TaskJuggler/Limits/Limit.html +71 -65
- data/doc/TaskJuggler/LimitsAttribute.html +21 -15
- data/doc/TaskJuggler/ListAttributeBase.html +16 -10
- data/doc/TaskJuggler/Log.html +111 -105
- data/doc/TaskJuggler/LogFile.html +54 -48
- data/doc/TaskJuggler/LogicalAttribute.html +35 -29
- data/doc/TaskJuggler/LogicalExpression.html +32 -26
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
- data/doc/TaskJuggler/LogicalFlag.html +24 -18
- data/doc/TaskJuggler/LogicalFunction.html +164 -158
- data/doc/TaskJuggler/LogicalOperation.html +138 -132
- data/doc/TaskJuggler/Macro.html +14 -8
- data/doc/TaskJuggler/MacroTable.html +42 -36
- data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
- data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
- data/doc/TaskJuggler/Message.html +56 -50
- data/doc/TaskJuggler/MessageHandler.html +73 -67
- data/doc/TaskJuggler/Navigator.html +92 -86
- data/doc/TaskJuggler/NavigatorElement.html +88 -82
- data/doc/TaskJuggler/NikuProject.html +15 -9
- data/doc/TaskJuggler/NikuReport.html +405 -370
- data/doc/TaskJuggler/NikuResource.html +13 -7
- data/doc/TaskJuggler/NodeListAttribute.html +13 -9
- data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
- data/doc/TaskJuggler/ProcessIntercom.html +116 -110
- data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
- data/doc/TaskJuggler/Project.html +1064 -895
- data/doc/TaskJuggler/ProjectBroker.html +439 -366
- data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
- data/doc/TaskJuggler/ProjectFileParser.html +329 -319
- data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
- data/doc/TaskJuggler/ProjectRecord.html +66 -60
- data/doc/TaskJuggler/ProjectServer.html +287 -280
- data/doc/TaskJuggler/ProjectServerIface.html +43 -37
- data/doc/TaskJuggler/PropertyAttribute.html +16 -10
- data/doc/TaskJuggler/PropertyList.html +205 -199
- data/doc/TaskJuggler/PropertySet.html +264 -296
- data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
- data/doc/TaskJuggler/Query.html +309 -524
- data/doc/TaskJuggler/RTFHandlers.html +17 -11
- data/doc/TaskJuggler/RTFNavigator.html +33 -27
- data/doc/TaskJuggler/RTFQuery.html +135 -129
- data/doc/TaskJuggler/RTFReport.html +63 -57
- data/doc/TaskJuggler/RTFReportLink.html +55 -49
- data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
- data/doc/TaskJuggler/RealFormat.html +64 -58
- data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
- data/doc/TaskJuggler/Report.html +294 -249
- data/doc/TaskJuggler/ReportBase.html +229 -223
- data/doc/TaskJuggler/ReportContext.html +52 -46
- data/doc/TaskJuggler/ReportServer.html +143 -137
- data/doc/TaskJuggler/ReportServerIface.html +51 -43
- data/doc/TaskJuggler/ReportServerRecord.html +36 -30
- data/doc/TaskJuggler/ReportServlet.html +167 -140
- data/doc/TaskJuggler/ReportTable.html +137 -131
- data/doc/TaskJuggler/ReportTableCell.html +332 -292
- data/doc/TaskJuggler/ReportTableColumn.html +46 -40
- data/doc/TaskJuggler/ReportTableLegend.html +43 -38
- data/doc/TaskJuggler/ReportTableLine.html +66 -60
- data/doc/TaskJuggler/Resource.html +166 -160
- data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
- data/doc/TaskJuggler/ResourceListRE.html +47 -41
- data/doc/TaskJuggler/ResourceScenario.html +671 -644
- data/doc/TaskJuggler/RichText.html +51 -45
- data/doc/TaskJuggler/RichTextAttribute.html +28 -22
- data/doc/TaskJuggler/RichTextDocument.html +96 -90
- data/doc/TaskJuggler/RichTextElement.html +503 -497
- data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
- data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
- data/doc/TaskJuggler/RichTextImage.html +14 -8
- data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
- data/doc/TaskJuggler/RichTextParser.html +59 -53
- data/doc/TaskJuggler/RichTextScanner.html +184 -178
- data/doc/TaskJuggler/RichTextSnip.html +69 -63
- data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
- data/doc/TaskJuggler/Scenario.html +13 -7
- data/doc/TaskJuggler/ScenarioData.html +40 -34
- data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
- data/doc/TaskJuggler/Scoreboard.html +129 -107
- data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
- data/doc/TaskJuggler/SheetReceiver.html +333 -327
- data/doc/TaskJuggler/SheetSender.html +227 -221
- data/doc/TaskJuggler/Shift.html +26 -20
- data/doc/TaskJuggler/ShiftAssignment.html +45 -39
- data/doc/TaskJuggler/ShiftAssignments.html +178 -172
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
- data/doc/TaskJuggler/ShiftScenario.html +29 -23
- data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
- data/doc/TaskJuggler/SortListAttribute.html +17 -13
- data/doc/TaskJuggler/SourceFileInfo.html +19 -13
- data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
- data/doc/TaskJuggler/StatusSheetReport.html +166 -159
- data/doc/TaskJuggler/StatusSheetSender.html +80 -74
- data/doc/TaskJuggler/StringAttribute.html +20 -14
- data/doc/TaskJuggler/SymbolAttribute.html +16 -10
- data/doc/TaskJuggler/SyntaxReference.html +231 -225
- data/doc/TaskJuggler/TOCEntry.html +46 -40
- data/doc/TaskJuggler/TSResourceRecord.html +15 -9
- data/doc/TaskJuggler/TSTaskRecord.html +16 -10
- data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
- data/doc/TaskJuggler/TableOfContents.html +28 -22
- data/doc/TaskJuggler/TableReport.html +906 -866
- data/doc/TaskJuggler/Task.html +99 -93
- data/doc/TaskJuggler/TaskDependency.html +24 -18
- data/doc/TaskJuggler/TaskListAttribute.html +29 -25
- data/doc/TaskJuggler/TaskListRE.html +46 -39
- data/doc/TaskJuggler/TaskScenario.html +2218 -1965
- data/doc/TaskJuggler/TextFormatter.html +154 -148
- data/doc/TaskJuggler/TextParser.html +362 -348
- data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
- data/doc/TaskJuggler/TextParser/Rule.html +147 -141
- data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
- data/doc/TaskJuggler/TextParser/State.html +88 -82
- data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
- data/doc/TaskJuggler/TextReport.html +80 -74
- data/doc/TaskJuggler/TextScanner.html +284 -272
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +123 -117
- data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
- data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
- data/doc/TaskJuggler/TimeSheetReport.html +206 -199
- data/doc/TaskJuggler/TimeSheetSender.html +27 -21
- data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
- data/doc/TaskJuggler/TimeSheets.html +20 -14
- data/doc/TaskJuggler/Tj3AppBase.html +100 -94
- data/doc/TaskJuggler/Tj3Client.html +407 -483
- data/doc/TaskJuggler/Tj3Daemon.html +116 -107
- data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
- data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3SsSender.html +64 -58
- data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3TsSender.html +51 -45
- data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
- data/doc/TaskJuggler/TjException.html +13 -7
- data/doc/TaskJuggler/TjTime.html +444 -438
- data/doc/TaskJuggler/TjpExample.html +84 -78
- data/doc/TaskJuggler/TjpExportRE.html +356 -349
- data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
- data/doc/TaskJuggler/URLParameter.html +16 -10
- data/doc/TaskJuggler/UserManual.html +185 -179
- data/doc/TaskJuggler/VimSyntax.html +144 -138
- data/doc/TaskJuggler/WebServer.html +46 -39
- data/doc/TaskJuggler/WelcomePage.html +769 -0
- data/doc/TaskJuggler/WorkingHours.html +185 -179
- data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
- data/doc/TaskJuggler/XMLBlob.html +21 -15
- data/doc/TaskJuggler/XMLComment.html +17 -11
- data/doc/TaskJuggler/XMLDocument.html +33 -27
- data/doc/TaskJuggler/XMLElement.html +97 -91
- data/doc/TaskJuggler/XMLNamedText.html +13 -7
- data/doc/TaskJuggler/XMLText.html +32 -26
- data/doc/index.html +601 -563
- data/doc/lib/AccountScenario_rb.html +5 -3
- data/doc/lib/Account_rb.html +5 -3
- data/doc/lib/Allocation_rb.html +5 -3
- data/doc/lib/AppConfig_rb.html +5 -3
- data/doc/lib/AttributeBase_rb.html +5 -3
- data/doc/lib/AttributeDefinition_rb.html +5 -3
- data/doc/lib/Attributes_rb.html +5 -3
- data/doc/lib/BatchProcessor_rb.html +5 -3
- data/doc/lib/Booking_rb.html +5 -3
- data/doc/lib/ChargeSet_rb.html +5 -3
- data/doc/lib/Charge_rb.html +5 -3
- data/doc/lib/DataCache_rb.html +5 -3
- data/doc/lib/FileList_rb.html +5 -3
- data/doc/lib/HTMLDocument_rb.html +5 -3
- data/doc/lib/IntervalList_rb.html +69 -0
- data/doc/lib/Interval_rb.html +5 -3
- data/doc/lib/Journal_rb.html +5 -3
- data/doc/lib/KeywordArray_rb.html +5 -3
- data/doc/lib/KeywordDocumentation_rb.html +5 -3
- data/doc/lib/Limits_rb.html +5 -3
- data/doc/lib/LogFile_rb.html +5 -3
- data/doc/lib/Log_rb.html +5 -3
- data/doc/lib/LogicalExpression_rb.html +5 -3
- data/doc/lib/LogicalFunction_rb.html +5 -3
- data/doc/lib/LogicalOperation_rb.html +5 -3
- data/doc/lib/MacroTable_rb.html +5 -3
- data/doc/lib/MessageHandler_rb.html +5 -3
- data/doc/lib/ProjectFileParser_rb.html +5 -3
- data/doc/lib/ProjectFileScanner_rb.html +5 -3
- data/doc/lib/Project_rb.html +5 -3
- data/doc/lib/PropertyList_rb.html +5 -3
- data/doc/lib/PropertySet_rb.html +5 -3
- data/doc/lib/PropertyTreeNode_rb.html +5 -3
- data/doc/lib/Query_rb.html +5 -3
- data/doc/lib/RTFHandlers_rb.html +5 -3
- data/doc/lib/RTFNavigator_rb.html +5 -3
- data/doc/lib/RTFQuery_rb.html +5 -3
- data/doc/lib/RTFReportLink_rb.html +5 -3
- data/doc/lib/RTFReport_rb.html +5 -3
- data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
- data/doc/lib/RealFormat_rb.html +5 -3
- data/doc/lib/ResourceScenario_rb.html +5 -3
- data/doc/lib/Resource_rb.html +5 -3
- data/doc/lib/RichTextDocument_rb.html +5 -3
- data/doc/lib/RichTextElement_rb.html +5 -3
- data/doc/lib/RichTextFunctionExample_rb.html +5 -3
- data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
- data/doc/lib/RichTextParser_rb.html +5 -3
- data/doc/lib/RichTextScanner_rb.html +5 -3
- data/doc/lib/RichTextSnip_rb.html +5 -3
- data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
- data/doc/lib/RichText_rb.html +5 -3
- data/doc/lib/RuntimeConfig_rb.html +5 -3
- data/doc/lib/ScenarioData_rb.html +5 -3
- data/doc/lib/Scenario_rb.html +5 -3
- data/doc/lib/Scoreboard_rb.html +7 -3
- data/doc/lib/SheetHandlerBase_rb.html +5 -3
- data/doc/lib/SheetReceiver_rb.html +5 -3
- data/doc/lib/SheetSender_rb.html +5 -3
- data/doc/lib/ShiftAssignments_rb.html +5 -3
- data/doc/lib/ShiftScenario_rb.html +5 -3
- data/doc/lib/Shift_rb.html +5 -3
- data/doc/lib/SimpleQueryExpander_rb.html +5 -3
- data/doc/lib/SourceFileInfo_rb.html +5 -3
- data/doc/lib/StatusSheetReceiver_rb.html +5 -3
- data/doc/lib/StatusSheetSender_rb.html +5 -3
- data/doc/lib/SyntaxReference_rb.html +5 -3
- data/doc/lib/TOCEntry_rb.html +5 -3
- data/doc/lib/TableColumnDefinition_rb.html +5 -3
- data/doc/lib/TableOfContents_rb.html +5 -3
- data/doc/lib/TaskDependency_rb.html +5 -3
- data/doc/lib/TaskJuggler_rb.html +5 -3
- data/doc/lib/TaskScenario_rb.html +5 -3
- data/doc/lib/Task_rb.html +5 -3
- data/doc/lib/TextFormatter_rb.html +6 -4
- data/doc/lib/TextParser/Pattern_rb.html +5 -3
- data/doc/lib/TextParser/Rule_rb.html +5 -3
- data/doc/lib/TextParser/StackElement_rb.html +5 -3
- data/doc/lib/TextParser/State_rb.html +6 -4
- data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
- data/doc/lib/TextParser_rb.html +5 -3
- data/doc/lib/TextScanner_rb.html +5 -3
- data/doc/lib/TimeSheetReceiver_rb.html +5 -3
- data/doc/lib/TimeSheetSender_rb.html +5 -3
- data/doc/lib/TimeSheetSummary_rb.html +6 -4
- data/doc/lib/TimeSheets_rb.html +5 -3
- data/doc/lib/Tj3AppBase_rb.html +5 -3
- data/doc/lib/Tj3Config_rb.html +5 -3
- data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
- data/doc/lib/TjException_rb.html +5 -3
- data/doc/lib/TjTime_rb.html +5 -3
- data/doc/lib/TjpExample_rb.html +5 -3
- data/doc/lib/TjpSyntaxRules_rb.html +5 -3
- data/doc/lib/URLParameter_rb.html +5 -3
- data/doc/lib/UTF8String_rb.html +5 -3
- data/doc/lib/UserManual_rb.html +5 -3
- data/doc/lib/VimSyntax_rb.html +6 -4
- data/doc/lib/WorkingHours_rb.html +5 -3
- data/doc/lib/XMLDocument_rb.html +5 -3
- data/doc/lib/XMLElement_rb.html +5 -3
- data/doc/lib/daemon/Daemon_rb.html +5 -3
- data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
- data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
- data/doc/lib/daemon/ProjectServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/daemon/WebServer_rb.html +9 -3
- data/doc/lib/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/deep_copy_rb.html +5 -3
- data/doc/lib/reports/CSVFile_rb.html +5 -3
- data/doc/lib/reports/CollisionDetector_rb.html +5 -3
- data/doc/lib/reports/ColumnTable_rb.html +5 -3
- data/doc/lib/reports/GanttChart_rb.html +5 -3
- data/doc/lib/reports/GanttContainer_rb.html +5 -3
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
- data/doc/lib/reports/GanttHeader_rb.html +5 -3
- data/doc/lib/reports/GanttLine_rb.html +5 -3
- data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
- data/doc/lib/reports/GanttMilestone_rb.html +5 -3
- data/doc/lib/reports/GanttRouter_rb.html +5 -3
- data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
- data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
- data/doc/lib/reports/Navigator_rb.html +5 -3
- data/doc/lib/reports/NikuReport_rb.html +5 -3
- data/doc/lib/reports/ReportBase_rb.html +5 -3
- data/doc/lib/reports/ReportContext_rb.html +5 -3
- data/doc/lib/reports/ReportTableCell_rb.html +5 -3
- data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
- data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
- data/doc/lib/reports/ReportTableLine_rb.html +5 -3
- data/doc/lib/reports/ReportTable_rb.html +5 -3
- data/doc/lib/reports/Report_rb.html +5 -3
- data/doc/lib/reports/ResourceListRE_rb.html +5 -3
- data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
- data/doc/lib/reports/TableReport_rb.html +5 -3
- data/doc/lib/reports/TaskListRE_rb.html +5 -3
- data/doc/lib/reports/TextReport_rb.html +5 -3
- data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
- data/doc/lib/reports/TjpExportRE_rb.html +5 -3
- data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
- data/doc/lib/tj3client_rb.html +5 -3
- data/doc/lib/tj3d_rb.html +6 -4
- data/doc/lib/tj3man_rb.html +5 -3
- data/doc/lib/tj3ss_receiver_rb.html +5 -3
- data/doc/lib/tj3ss_sender_rb.html +5 -3
- data/doc/lib/tj3ts_receiver_rb.html +5 -3
- data/doc/lib/tj3ts_sender_rb.html +5 -3
- data/doc/lib/tj3ts_summary_rb.html +5 -3
- data/examples/tutorial.tjp +13 -5
- data/gem_spec.rb +3 -0
- data/lib/Account.rb +2 -1
- data/lib/AccountScenario.rb +2 -1
- data/lib/Allocation.rb +2 -1
- data/lib/AppConfig.rb +2 -1
- data/lib/AttributeBase.rb +19 -5
- data/lib/AttributeDefinition.rb +2 -1
- data/lib/Attributes.rb +49 -38
- data/lib/BatchProcessor.rb +2 -1
- data/lib/Booking.rb +2 -1
- data/lib/Charge.rb +2 -1
- data/lib/ChargeSet.rb +2 -1
- data/lib/DataCache.rb +15 -1
- data/lib/FileList.rb +2 -1
- data/lib/HTMLDocument.rb +2 -1
- data/lib/Interval.rb +2 -1
- data/lib/IntervalList.rb +100 -0
- data/lib/Journal.rb +8 -2
- data/lib/KeywordArray.rb +2 -1
- data/lib/KeywordDocumentation.rb +10 -6
- data/lib/Limits.rb +2 -1
- data/lib/Log.rb +3 -2
- data/lib/LogFile.rb +2 -1
- data/lib/LogicalExpression.rb +2 -1
- data/lib/LogicalFunction.rb +2 -1
- data/lib/LogicalOperation.rb +2 -1
- data/lib/MacroTable.rb +2 -1
- data/lib/MessageHandler.rb +2 -1
- data/lib/Project.rb +92 -25
- data/lib/ProjectFileParser.rb +7 -2
- data/lib/ProjectFileScanner.rb +2 -1
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +2 -6
- data/lib/PropertyTreeNode.rb +22 -44
- data/lib/Query.rb +32 -13
- data/lib/RTFHandlers.rb +2 -1
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +3 -2
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +2 -1
- data/lib/RTFWithQuerySupport.rb +2 -1
- data/lib/RealFormat.rb +2 -1
- data/lib/Resource.rb +2 -1
- data/lib/ResourceScenario.rb +35 -14
- data/lib/RichText.rb +2 -1
- data/lib/RichTextDocument.rb +2 -1
- data/lib/RichTextElement.rb +2 -1
- data/lib/RichTextFunctionExample.rb +2 -1
- data/lib/RichTextFunctionHandler.rb +2 -1
- data/lib/RichTextParser.rb +2 -1
- data/lib/RichTextScanner.rb +2 -1
- data/lib/RichTextSnip.rb +2 -1
- data/lib/RichTextSyntaxRules.rb +2 -1
- data/lib/RuntimeConfig.rb +2 -1
- data/lib/Scenario.rb +2 -1
- data/lib/ScenarioData.rb +2 -1
- data/lib/Scoreboard.rb +27 -8
- data/lib/SheetHandlerBase.rb +2 -1
- data/lib/SheetReceiver.rb +2 -1
- data/lib/SheetSender.rb +2 -1
- data/lib/Shift.rb +2 -1
- data/lib/ShiftAssignments.rb +2 -1
- data/lib/ShiftScenario.rb +2 -1
- data/lib/SimpleQueryExpander.rb +2 -1
- data/lib/SourceFileInfo.rb +2 -1
- data/lib/StatusSheetReceiver.rb +2 -1
- data/lib/StatusSheetSender.rb +2 -1
- data/lib/SyntaxReference.rb +2 -1
- data/lib/TOCEntry.rb +2 -1
- data/lib/TableColumnDefinition.rb +9 -2
- data/lib/TableOfContents.rb +2 -1
- data/lib/Task.rb +2 -1
- data/lib/TaskDependency.rb +2 -1
- data/lib/TaskJuggler.rb +8 -6
- data/lib/TaskScenario.rb +337 -153
- data/lib/TextFormatter.rb +3 -2
- data/lib/TextParser.rb +7 -2
- data/lib/TextParser/Pattern.rb +2 -1
- data/lib/TextParser/Rule.rb +2 -1
- data/lib/TextParser/StackElement.rb +2 -1
- data/lib/TextParser/State.rb +3 -2
- data/lib/TextParser/TokenDoc.rb +2 -1
- data/lib/TextScanner.rb +12 -5
- data/lib/TimeSheetReceiver.rb +2 -1
- data/lib/TimeSheetSender.rb +2 -1
- data/lib/TimeSheetSummary.rb +3 -2
- data/lib/TimeSheets.rb +2 -1
- data/lib/Tj3AppBase.rb +6 -5
- data/lib/Tj3Config.rb +5 -4
- data/lib/Tj3SheetAppBase.rb +2 -1
- data/lib/TjException.rb +2 -1
- data/lib/TjTime.rb +2 -1
- data/lib/TjpExample.rb +2 -1
- data/lib/TjpSyntaxRules.rb +264 -65
- data/lib/URLParameter.rb +2 -1
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +2 -1
- data/lib/VimSyntax.rb +3 -2
- data/lib/WorkingHours.rb +2 -1
- data/lib/XMLDocument.rb +2 -1
- data/lib/XMLElement.rb +2 -1
- data/lib/daemon/Daemon.rb +3 -1
- data/lib/daemon/ProcessIntercom.rb +3 -1
- data/lib/daemon/ProjectBroker.rb +84 -32
- data/lib/daemon/ProjectServer.rb +5 -3
- data/lib/daemon/ReportServer.rb +8 -5
- data/lib/daemon/ReportServlet.rb +166 -0
- data/lib/daemon/WebServer.rb +6 -150
- data/lib/daemon/WelcomePage.rb +80 -0
- data/lib/deep_copy.rb +2 -1
- data/lib/reports/CSVFile.rb +2 -1
- data/lib/reports/CollisionDetector.rb +2 -1
- data/lib/reports/ColumnTable.rb +2 -1
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/GanttContainer.rb +3 -4
- data/lib/reports/GanttHeader.rb +2 -1
- data/lib/reports/GanttHeaderScaleItem.rb +2 -1
- data/lib/reports/GanttLine.rb +12 -10
- data/lib/reports/GanttLoadStack.rb +2 -1
- data/lib/reports/GanttMilestone.rb +3 -3
- data/lib/reports/GanttRouter.rb +4 -1
- data/lib/reports/GanttTaskBar.rb +9 -7
- data/lib/reports/HTMLGraphics.rb +2 -1
- data/lib/reports/Navigator.rb +2 -1
- data/lib/reports/NikuReport.rb +79 -49
- data/lib/reports/Report.rb +42 -10
- data/lib/reports/ReportBase.rb +2 -1
- data/lib/reports/ReportContext.rb +2 -1
- data/lib/reports/ReportTable.rb +2 -1
- data/lib/reports/ReportTableCell.rb +63 -28
- data/lib/reports/ReportTableColumn.rb +2 -1
- data/lib/reports/ReportTableLegend.rb +5 -5
- data/lib/reports/ReportTableLine.rb +2 -1
- data/lib/reports/ResourceListRE.rb +2 -1
- data/lib/reports/StatusSheetReport.rb +4 -2
- data/lib/reports/TableReport.rb +42 -38
- data/lib/reports/TaskListRE.rb +4 -2
- data/lib/reports/TextReport.rb +2 -1
- data/lib/reports/TimeSheetReport.rb +4 -2
- data/lib/reports/TjpExportRE.rb +4 -2
- data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
- data/lib/tj3client.rb +19 -36
- data/lib/tj3d.rb +6 -2
- data/lib/tj3man.rb +4 -3
- data/lib/tj3ss_receiver.rb +2 -1
- data/lib/tj3ss_sender.rb +2 -1
- data/lib/tj3ts_receiver.rb +2 -1
- data/lib/tj3ts_sender.rb +2 -1
- data/lib/tj3ts_summary.rb +2 -1
- data/manual/Day_To_Day_Juggling +36 -0
- data/manual/How_To_Contribute +9 -4
- data/manual/Installation +10 -3
- data/manual/TaskJuggler_Internals +0 -2
- data/manual/Tutorial +25 -3
- data/prj_cfg.rb +4 -2
- data/spec/IntervalList_spec.rb +138 -0
- data/spec/ProjectBroker_spec.rb +133 -0
- data/tasks/changelog.rake +41 -24
- data/tasks/csts.rake +1 -0
- data/tasks/gem.rake +1 -0
- data/tasks/rcov.rake +1 -1
- data/tasks/spec.rake +7 -0
- data/tasks/test.rake +1 -0
- data/test/MessageChecker.rb +2 -1
- data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
- data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
- data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
- data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
- data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
- data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
- data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/StatusSheets/sender.log +256 -0
- data/test/TestSuite/StatusSheets/statussheets.log +9 -0
- data/test/TestSuite/StatusSheets/tj3d.log +395 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
- data/test/all.rb +2 -4
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +34 -23
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +3 -2
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +2 -1
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +2 -1
- data/test/test_Project.rb +3 -2
- data/test/test_ProjectFileScanner.rb +2 -1
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +2 -1
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +2 -1
- data/test/test_RichText.rb +2 -1
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +2 -1
- data/test/test_SimpleQueryExpander.rb +2 -1
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +3 -2
- data/test/test_TjTime.rb +2 -1
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +2 -1
- data/test/test_deep_copy.rb +2 -1
- metadata +74 -20
- data/doc/StringIO.html +0 -595
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
- data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
@@ -0,0 +1,138 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = IntervalList_spec.rb -- The TaskJuggler III Project Management Software
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
8
|
+
#
|
9
|
+
# This program is free software; you can redistribute it and/or modify
|
10
|
+
# it under the terms of version 2 of the GNU General Public License as
|
11
|
+
# published by the Free Software Foundation.
|
12
|
+
#
|
13
|
+
|
14
|
+
require 'rubygems'
|
15
|
+
require 'IntervalList'
|
16
|
+
|
17
|
+
class TaskJuggler
|
18
|
+
|
19
|
+
describe IntervalList do
|
20
|
+
|
21
|
+
before(:all) do
|
22
|
+
@t0 = TjTime.new('2011-01-01').freeze
|
23
|
+
@t1 = TjTime.new('2011-01-02').freeze
|
24
|
+
@t2 = TjTime.new('2011-01-03').freeze
|
25
|
+
@t3 = TjTime.new('2011-01-04').freeze
|
26
|
+
@t4 = TjTime.new('2011-01-05').freeze
|
27
|
+
@t5 = TjTime.new('2011-01-06').freeze
|
28
|
+
@t6 = TjTime.new('2011-01-07').freeze
|
29
|
+
@i0_1 = Interval.new(@t0, @t1).freeze
|
30
|
+
@i0_2 = Interval.new(@t0, @t2).freeze
|
31
|
+
@i0_3 = Interval.new(@t0, @t3).freeze
|
32
|
+
@i1_2 = Interval.new(@t1, @t2).freeze
|
33
|
+
@i1_3 = Interval.new(@t1, @t3).freeze
|
34
|
+
@i2_3 = Interval.new(@t2, @t3).freeze
|
35
|
+
@i3_4 = Interval.new(@t3, @t4).freeze
|
36
|
+
@i3_6 = Interval.new(@t3, @t6).freeze
|
37
|
+
@i4_5 = Interval.new(@t4, @t5).freeze
|
38
|
+
@i4_6 = Interval.new(@t4, @t6).freeze
|
39
|
+
@i5_6 = Interval.new(@t5, @t6).freeze
|
40
|
+
end
|
41
|
+
|
42
|
+
describe "#<<" do
|
43
|
+
|
44
|
+
before do
|
45
|
+
@il = IntervalList.new
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should add a new interval' do
|
49
|
+
@il << @i0_1
|
50
|
+
@il.should == [ @i0_1 ]
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'Intervals should be added in ascending order' do
|
54
|
+
@il << @i1_2
|
55
|
+
lambda { @il << @i0_1 }.should raise_error
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should merge adjecent intervals on add' do
|
59
|
+
@il << @i0_1
|
60
|
+
@il << @i1_2
|
61
|
+
@il.should == [ @i0_2 ]
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should not merge non-adjecent intervals on add' do
|
65
|
+
@il << @i0_1
|
66
|
+
@il << @i2_3
|
67
|
+
@il.should == [ @i0_1, @i2_3 ]
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'operator concatenation should work' do
|
71
|
+
@il << @i_01 << @i2_3 << @i4_5
|
72
|
+
@il.length.should == 3
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#&' do
|
78
|
+
|
79
|
+
it 'without overlap should be empty' do
|
80
|
+
il1 = IntervalList.new([ @i0_1 ])
|
81
|
+
il2 = IntervalList.new([ @i1_2 ])
|
82
|
+
(il1 & il2).should be_empty
|
83
|
+
(il2 & il1).should be_empty
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'with empty list should be empty' do
|
87
|
+
il1 = IntervalList.new([ @i0_1 ])
|
88
|
+
il2 = IntervalList.new([ ])
|
89
|
+
(il1 & il2).should be_empty
|
90
|
+
(il2 & il1).should be_empty
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'with self should be self' do
|
94
|
+
il = IntervalList.new([ @i0_1 ])
|
95
|
+
(il & il).should == il
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'with partial overlap should be overlap' do
|
99
|
+
il1 = IntervalList.new([ @i0_2 ])
|
100
|
+
il2 = IntervalList.new([ @i1_3 ])
|
101
|
+
il3 = IntervalList.new([ @i1_2 ])
|
102
|
+
(il1 & il2).should == il3
|
103
|
+
(il2 & il1).should == il3
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'with center inclusion should be inclusion' do
|
107
|
+
il1 = IntervalList.new([ @i0_3, @i3_6 ])
|
108
|
+
il2 = IntervalList.new([ @i1_2, @i4_5 ])
|
109
|
+
(il1 & il2).should == il2
|
110
|
+
(il2 & il1).should == il2
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'with left inclusion should be inclusion' do
|
114
|
+
il1 = IntervalList.new([ @i1_3, @i4_6 ])
|
115
|
+
il2 = IntervalList.new([ @i1_2, @i4_5 ])
|
116
|
+
(il1 & il2).should == il2
|
117
|
+
(il2 & il1).should == il2
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'with right inclusion should be inclusion' do
|
121
|
+
il1 = IntervalList.new([ @i1_3, @i4_6 ])
|
122
|
+
il2 = IntervalList.new([ @i2_3, @i5_6 ])
|
123
|
+
(il1 & il2).should == il2
|
124
|
+
(il2 & il1).should == il2
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'with adjecent intervals should be empty' do
|
128
|
+
il1 = IntervalList.new([ @i0_1, @i2_3 ])
|
129
|
+
il2 = IntervalList.new([ @i1_2, @i3_4 ])
|
130
|
+
(il1 & il2).should be_empty
|
131
|
+
(il2 & il1).should be_empty
|
132
|
+
end
|
133
|
+
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
# encoding: UTF-8
|
3
|
+
#
|
4
|
+
# = ProjectBroker_spec.rb -- The TaskJuggler III Project Management Software
|
5
|
+
#
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
8
|
+
#
|
9
|
+
# This program is free software; you can redistribute it and/or modify
|
10
|
+
# it under the terms of version 2 of the GNU General Public License as
|
11
|
+
# published by the Free Software Foundation.
|
12
|
+
#
|
13
|
+
|
14
|
+
require 'daemon/ProjectBroker'
|
15
|
+
|
16
|
+
RSpec.configure do |c|
|
17
|
+
c.filter_run_excluding :ruby => lambda {|version|
|
18
|
+
!(RUBY_VERSION.to_s =~ /^#{version.to_s}/)
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
class TaskJuggler
|
23
|
+
|
24
|
+
def TaskJuggler::runBroker(pb, key)
|
25
|
+
pb.authKey = key
|
26
|
+
pb.daemonize = false
|
27
|
+
pb.logStdIO = false
|
28
|
+
pb.port = 0
|
29
|
+
# Don't generate any debug or info messages
|
30
|
+
pb.log.outputLevel = 1
|
31
|
+
pb.log.logLevel = 1
|
32
|
+
t = Thread.new { pb.start }
|
33
|
+
yield
|
34
|
+
pb.stop
|
35
|
+
t.join
|
36
|
+
end
|
37
|
+
|
38
|
+
describe ProjectBroker, :ruby => 1.9 do
|
39
|
+
|
40
|
+
it "can be started and stopped" do
|
41
|
+
@pb = ProjectBroker.new
|
42
|
+
@authKey = 'secret'
|
43
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
describe ProjectBrokerIface, :ruby => 1.9 do
|
51
|
+
|
52
|
+
before do
|
53
|
+
@pb = ProjectBroker.new
|
54
|
+
@pbi = ProjectBrokerIface.new(@pb)
|
55
|
+
@authKey = 'secret'
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "apiVersion" do
|
59
|
+
|
60
|
+
it "should fail with bad authentication key" do
|
61
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
62
|
+
@pbi.apiVersion('bad key', 1).should == 0
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should pass with correct authentication key" do
|
67
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
68
|
+
@pbi.apiVersion(@authKey, 1).should == 1
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should fail with wrong API version", :ruby => 1.9 do
|
73
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
74
|
+
@pbi.apiVersion(@authKey, 0).should == -1
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "command" do
|
81
|
+
|
82
|
+
it "should fail with bad authentication key" do
|
83
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
84
|
+
@pbi.command('bad key', :status, []).should be_false
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should support 'status'" do
|
89
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
90
|
+
@pbi.command(@authKey, :status, []).should match \
|
91
|
+
/.*No projects registered.*/
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should support 'terminate'" do
|
96
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
97
|
+
@pbi.command(@authKey, :stop, []).should be_nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should support 'add' and 'remove'" do
|
102
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
103
|
+
stdIn = StringIO.new("project foo 'foo' 2011-01-04 +1w task 'foo'")
|
104
|
+
stdOut = StringIO.new
|
105
|
+
stdErr = StringIO.new
|
106
|
+
args = [ Dir.getwd, [ '.' ], stdOut, stdErr, stdIn, true ]
|
107
|
+
@pbi.command(@authKey, :addProject, args).should be_true
|
108
|
+
stdErr.string.should be_empty
|
109
|
+
|
110
|
+
# Can't remove non-existing project bar
|
111
|
+
@pbi.command(@authKey, :removeProject, 'bar').should be_false
|
112
|
+
@pbi.command(@authKey, :removeProject, 'foo').should be_true
|
113
|
+
# Can't remove foo twice
|
114
|
+
@pbi.command(@authKey, :removeProject, 'foo').should be_false
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "updateState" do
|
121
|
+
|
122
|
+
it "should fail with bad authentication key" do
|
123
|
+
TaskJuggler::runBroker(@pb, @authKey) do
|
124
|
+
@pbi.updateState('bad key', 'foo', 'foo', :status, true).should \
|
125
|
+
be_false
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
data/tasks/changelog.rake
CHANGED
@@ -2,35 +2,52 @@ require 'time'
|
|
2
2
|
|
3
3
|
desc 'update changelog'
|
4
4
|
task :CHANGELOG do
|
5
|
+
# Get list of release tags from Git repository
|
5
6
|
releases = `git tag`.split("\n").map { |r| r.chomp }
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
# Now we get the commit entries for each release
|
9
|
+
sections = []
|
10
|
+
prevRelease = nil
|
11
|
+
releases.each do |release|
|
12
|
+
# This buffer holds the final text for the release section. It will
|
13
|
+
# contain the commit messages in RDoc format.
|
14
|
+
text = ''
|
15
|
+
# We only support release tags in the form X.X.X
|
16
|
+
version = /\d\.\d\.\d/.match(release)
|
17
|
+
# Construct a Git range.
|
18
|
+
interval = prevRelease ? "#{prevRelease}..#{release}" : release
|
19
|
+
prevRelease = release
|
20
|
+
|
21
|
+
# Get the date of the release
|
22
|
+
date = Time.parse(/Date: (.*)/.match(`git show #{release}`)[1]).utc
|
23
|
+
date = date.strftime("%Y-%m-%d")
|
24
|
+
# We use RDOC markup syntax to generate a title
|
25
|
+
text += "= Release #{version} (#{date})\n\n"
|
26
|
+
|
27
|
+
# Use -z option for git-log to get 0 bytes as separators.
|
28
|
+
`git log -z #{interval}`.split("\0").each do |commit|
|
29
|
+
# We ignore merges.
|
30
|
+
next if commit =~ /^Merge: \d*/
|
13
31
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
32
|
+
ref, author, time, _, message = commit.split("\n", 5)
|
33
|
+
ref = ref[/commit ([0-9a-f]+)/, 1]
|
34
|
+
author = author[/Author: (.*)/, 1].strip
|
35
|
+
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
36
|
+
# Eleminate git-svn-id: lines
|
37
|
+
message.gsub!(/git-svn-id: .*\n/, '')
|
38
|
+
# Eliminate Signed-off-by: lines
|
39
|
+
message.gsub!(/Signed-off-by: .*\n/, '')
|
40
|
+
message.strip!
|
18
41
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
author = author[/Author: (.*)/, 1].strip
|
24
|
-
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
25
|
-
# Eleminate git-svn-id: lines
|
26
|
-
message.gsub!(/git-svn-id: .*\n/, '')
|
27
|
-
# Eliminate Signed-off-by: lines
|
28
|
-
message.gsub!(/Signed-off-by: .*\n/, '')
|
29
|
-
message.strip!
|
42
|
+
text += " * #{message}\n"
|
43
|
+
end
|
44
|
+
sections << text
|
45
|
+
end
|
30
46
|
|
31
|
-
|
32
|
-
|
33
|
-
|
47
|
+
File.open('CHANGELOG', 'w+') do |changelog|
|
48
|
+
# List releases from last to first.
|
49
|
+
sections.reverse.each do |section|
|
50
|
+
changelog.puts section + "\n"
|
34
51
|
end
|
35
52
|
end
|
36
53
|
end
|
data/tasks/csts.rake
CHANGED
@@ -19,6 +19,7 @@ RAKE_FILES = FileList[RAKEFILE, PRJ_FILE, GEM_SPEC_FILE, SETUP_FILE, "#{RAK
|
|
19
19
|
BIN_FILES = FileList["#{BIN_DIR}/**/*"]
|
20
20
|
LIB_FILES = FileList["#{LIB_DIR}/**/*.rb"]
|
21
21
|
TEST_FILES = FileList["#{TEST_DIR}/**/test_*.rb"]
|
22
|
+
SPEC_PATTERN = 'spec/**/*_spec.rb'
|
22
23
|
RDOC_FILES = FileList[README,LICENSE,CHANGELOG]
|
23
24
|
|
24
25
|
# DIST FILES
|
data/tasks/gem.rake
CHANGED
@@ -12,6 +12,7 @@ execs = Dir.glob('./bin/*') + Dir.glob('./**/run') +
|
|
12
12
|
|
13
13
|
task :release => [:clobber] do
|
14
14
|
puts "Preparing release of #{PROJECT_NAME} version #{PROJECT_VERSION}"
|
15
|
+
Rake::Task[:spec].invoke
|
15
16
|
Rake::Task[:test].invoke
|
16
17
|
Rake::Task[:rdoc].invoke
|
17
18
|
# Make sure all files and directories are readable.
|
data/tasks/rcov.rake
CHANGED
data/tasks/spec.rake
ADDED
data/tasks/test.rake
CHANGED
@@ -5,6 +5,7 @@ require 'rake/testtask'
|
|
5
5
|
REQUIRE_PATHS.unshift File.join(File.dirname(__FILE__), '..')
|
6
6
|
|
7
7
|
# TEST TASK
|
8
|
+
desc 'Run all unit tests in the test directory'
|
8
9
|
test_task_name = HAVE_EXT ? :test_ext : :test
|
9
10
|
Rake::TestTask.new( test_task_name ) do |t|
|
10
11
|
t.libs = REQUIRE_PATHS
|
data/test/MessageChecker.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
#
|
4
4
|
# = MessageChecker.rb -- The TaskJuggler III Project Management Software
|
5
5
|
#
|
6
|
-
# Copyright (c) 2006, 2007, 2008, 2009, 2010
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
7
8
|
#
|
8
9
|
# This program is free software; you can redistribute it and/or modify
|
9
10
|
# it under the terms of version 2 of the GNU General Public License as
|
@@ -0,0 +1,70 @@
|
|
1
|
+
project "Niku Test" 2010-02-01 +3m {
|
2
|
+
extend task {
|
3
|
+
text ClarityPID "Clarity PID"
|
4
|
+
text ClarityPName "Clarity Project Name"
|
5
|
+
}
|
6
|
+
extend resource {
|
7
|
+
text ClarityRID "Clarity Resource ID"
|
8
|
+
}
|
9
|
+
}
|
10
|
+
|
11
|
+
# The ClarityPID and ClarityPName must be always kept in sync. The
|
12
|
+
# easiest way to achieve this, is by using such macros.
|
13
|
+
macro PID_p1 [ ClarityPID "p1" ClarityPName "Project 1" ]
|
14
|
+
macro PID_p2 [ ClarityPID "p2" ClarityPName "Project 2" ]
|
15
|
+
macro PID_p3 [ ClarityPID "p3" ClarityPName "Project 3" ]
|
16
|
+
|
17
|
+
macro Resource [
|
18
|
+
resource ${1} "${1}" {
|
19
|
+
ClarityRID "${1}"
|
20
|
+
}
|
21
|
+
]
|
22
|
+
|
23
|
+
${Resource "r1"}
|
24
|
+
${Resource "r2"}
|
25
|
+
supplement resource r2 {
|
26
|
+
vacation 2010-02-15 +1w
|
27
|
+
}
|
28
|
+
${Resource "r3"}
|
29
|
+
|
30
|
+
task "T1" {
|
31
|
+
allocate r1
|
32
|
+
effort 5w
|
33
|
+
${PID_p1}
|
34
|
+
}
|
35
|
+
|
36
|
+
task t2 "T2" {
|
37
|
+
allocate r2
|
38
|
+
effort 10d
|
39
|
+
${PID_p1}
|
40
|
+
}
|
41
|
+
|
42
|
+
task "T3" {
|
43
|
+
depends !t2
|
44
|
+
allocate r2
|
45
|
+
effort 10d
|
46
|
+
${PID_p2}
|
47
|
+
}
|
48
|
+
|
49
|
+
task "T4" {
|
50
|
+
allocate r3
|
51
|
+
effort 3w
|
52
|
+
${PID_p2}
|
53
|
+
}
|
54
|
+
|
55
|
+
nikureport "." {
|
56
|
+
formats csv
|
57
|
+
headline "This is a test report"
|
58
|
+
period 2010-02-01-8:00 - %{2010-03-01 -6h}
|
59
|
+
timeoff "vacations" "Vacation time"
|
60
|
+
# Depending on your Clarity configuration, you may need to add this
|
61
|
+
# CustomInformation section in the report. It's raw XML code and
|
62
|
+
# will be embedded into each <Project> section of the resulting
|
63
|
+
# report. This is just an example and it must be customized to work!
|
64
|
+
title -8<-
|
65
|
+
<CustomInformation>
|
66
|
+
<ColumnValue name="foo_state">foo_active</ColumnValue>
|
67
|
+
<ColumnValue name="partition_code">foo_eng</ColumnValue>
|
68
|
+
</CustomInformation>
|
69
|
+
->8-
|
70
|
+
}
|