taskjuggler 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +44 -0
- data/bin/tj3webd +4 -0
- data/data/css/tjreport.css +14 -5
- data/data/tjp.vim +22 -7
- data/examples/Fedora-20/reports.tji +2 -4
- data/examples/Scrum/Product Burndown.csv +26 -0
- data/examples/Scrum/Sprint 1 Burndown.csv +26 -0
- data/examples/Scrum/Sprint 2 Burndown.csv +26 -0
- data/examples/Scrum/Sprint 3 Burndown.csv +26 -0
- data/examples/Scrum/scrum.tjp +141 -0
- data/examples/Tutorial/tutorial.tjp +13 -7
- data/lib/taskjuggler/Attributes.rb +2 -3
- data/lib/taskjuggler/HTMLDocument.rb +25 -18
- data/lib/taskjuggler/Journal.rb +85 -65
- data/lib/taskjuggler/KeywordDocumentation.rb +25 -13
- data/lib/taskjuggler/LeaveList.rb +1 -1
- data/lib/taskjuggler/Limits.rb +3 -5
- data/lib/taskjuggler/MessageHandler.rb +173 -19
- data/lib/taskjuggler/Painter.rb +75 -0
- data/lib/taskjuggler/Painter/BasicShapes.rb +76 -0
- data/lib/taskjuggler/Painter/Color.rb +273 -0
- data/lib/taskjuggler/Painter/Element.rb +56 -0
- data/lib/taskjuggler/Painter/FontData.rb +221 -0
- data/lib/taskjuggler/Painter/FontMetrics.rb +125 -0
- data/lib/taskjuggler/Painter/FontMetricsData.rb +151 -0
- data/lib/taskjuggler/Painter/Group.rb +77 -0
- data/lib/taskjuggler/Painter/Points.rb +47 -0
- data/lib/taskjuggler/Painter/Primitives.rb +100 -0
- data/lib/taskjuggler/Painter/SVGSupport.rb +36 -0
- data/lib/taskjuggler/Painter/Text.rb +36 -0
- data/lib/taskjuggler/Project.rb +46 -29
- data/lib/taskjuggler/ProjectFileParser.rb +24 -22
- data/lib/taskjuggler/ProjectFileScanner.rb +2 -2
- data/lib/taskjuggler/PropertyTreeNode.rb +26 -34
- data/lib/taskjuggler/Query.rb +8 -5
- data/lib/taskjuggler/RealFormat.rb +3 -0
- data/lib/taskjuggler/Resource.rb +3 -5
- data/lib/taskjuggler/ResourceScenario.rb +19 -7
- data/lib/taskjuggler/RichText.rb +4 -6
- data/lib/taskjuggler/RichText/FunctionExample.rb +1 -1
- data/lib/taskjuggler/RichText/FunctionHandler.rb +5 -6
- data/lib/taskjuggler/RichText/Parser.rb +4 -6
- data/lib/taskjuggler/RichText/RTFNavigator.rb +1 -1
- data/lib/taskjuggler/RichText/RTFQuery.rb +2 -3
- data/lib/taskjuggler/RichText/RTFReport.rb +1 -1
- data/lib/taskjuggler/RichText/RTFReportLink.rb +1 -2
- data/lib/taskjuggler/RichText/RTFWithQuerySupport.rb +1 -1
- data/lib/taskjuggler/RichText/Scanner.rb +6 -6
- data/lib/taskjuggler/RichText/Snip.rb +1 -2
- data/lib/taskjuggler/RuntimeConfig.rb +9 -6
- data/lib/taskjuggler/ScenarioData.rb +4 -3
- data/lib/taskjuggler/Scoreboard.rb +6 -0
- data/lib/taskjuggler/SheetHandlerBase.rb +25 -8
- data/lib/taskjuggler/SimpleQueryExpander.rb +14 -5
- data/lib/taskjuggler/SyntaxReference.rb +1 -2
- data/lib/taskjuggler/TableColumnSorter.rb +84 -0
- data/lib/taskjuggler/Task.rb +3 -5
- data/lib/taskjuggler/TaskJuggler.rb +36 -29
- data/lib/taskjuggler/TaskScenario.rb +154 -66
- data/lib/taskjuggler/TextParser.rb +24 -17
- data/lib/taskjuggler/TextParser/Scanner.rb +16 -11
- data/lib/taskjuggler/TextParser/SourceFileInfo.rb +20 -15
- data/lib/taskjuggler/TimeSheets.rb +6 -12
- data/lib/taskjuggler/Tj3AppBase.rb +35 -16
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +239 -49
- data/lib/taskjuggler/XMLElement.rb +9 -2
- data/lib/taskjuggler/apps/Tj3.rb +43 -37
- data/lib/taskjuggler/apps/Tj3Client.rb +62 -112
- data/lib/taskjuggler/apps/Tj3Daemon.rb +66 -29
- data/lib/taskjuggler/apps/Tj3Man.rb +5 -5
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +10 -13
- data/lib/taskjuggler/apps/Tj3SsSender.rb +13 -16
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +10 -13
- data/lib/taskjuggler/apps/Tj3TsSender.rb +12 -15
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +12 -15
- data/lib/taskjuggler/apps/Tj3WebD.rb +99 -0
- data/lib/taskjuggler/daemon/Daemon.rb +50 -10
- data/lib/taskjuggler/daemon/DaemonConnector.rb +127 -0
- data/lib/taskjuggler/daemon/ProcessIntercom.rb +36 -21
- data/lib/taskjuggler/daemon/ProjectBroker.rb +122 -112
- data/lib/taskjuggler/daemon/ProjectServer.rb +78 -46
- data/lib/taskjuggler/daemon/ReportServer.rb +52 -28
- data/lib/taskjuggler/daemon/ReportServlet.rb +92 -21
- data/lib/taskjuggler/daemon/WebServer.rb +75 -22
- data/lib/taskjuggler/daemon/WelcomePage.rb +1 -0
- data/lib/taskjuggler/reports/AccountListRE.rb +3 -3
- data/lib/taskjuggler/reports/CSVFile.rb +9 -2
- data/lib/taskjuggler/reports/ChartPlotter.rb +453 -0
- data/lib/taskjuggler/reports/Navigator.rb +1 -0
- data/lib/taskjuggler/reports/NikuReport.rb +4 -4
- data/lib/taskjuggler/reports/Report.rb +6 -18
- data/lib/taskjuggler/reports/ReportBase.rb +9 -9
- data/lib/taskjuggler/reports/ReportContext.rb +2 -2
- data/lib/taskjuggler/reports/StatusSheetReport.rb +6 -6
- data/lib/taskjuggler/reports/TableReport.rb +24 -15
- data/lib/taskjuggler/reports/TimeSheetReport.rb +5 -5
- data/lib/taskjuggler/reports/TraceReport.rb +251 -0
- data/lib/tj3webd.rb +17 -0
- data/manual/Day_To_Day_Juggling +10 -3
- data/manual/Installation +38 -19
- data/manual/Software +25 -19
- data/manual/Tutorial +119 -110
- data/manual/html/Day_To_Day_Juggling.html +7 -5
- data/manual/html/Getting_Started.html +4 -4
- data/manual/html/How_To_Contribute.html +4 -4
- data/manual/html/Installation.html +19 -11
- data/manual/html/Intro.html +4 -4
- data/manual/html/Reporting_Bugs.html +4 -4
- data/manual/html/Rich_Text_Attributes.html +4 -4
- data/manual/html/Software.html +15 -11
- data/manual/html/TaskJuggler_2x_Migration.html +4 -4
- data/manual/html/TaskJuggler_Internals.html +4 -4
- data/manual/html/The_TaskJuggler_Syntax.html +4 -4
- data/manual/html/Tutorial.html +41 -32
- data/manual/html/account.html +4 -4
- data/manual/html/account.task.html +4 -4
- data/manual/html/accountprefix.html +4 -4
- data/manual/html/accountreport.html +27 -9
- data/manual/html/accountroot.html +5 -5
- data/manual/html/active.html +4 -4
- data/manual/html/adopt.task.html +4 -4
- data/manual/html/aggregate.html +4 -4
- data/manual/html/alert.html +4 -4
- data/manual/html/alertlevels.html +4 -4
- data/manual/html/allocate.html +5 -5
- data/manual/html/alphabet.html +4 -4
- data/manual/html/alternative.html +4 -4
- data/manual/html/author.html +4 -4
- data/manual/html/balance.html +5 -5
- data/manual/html/booking.resource.html +4 -4
- data/manual/html/booking.task.html +4 -4
- data/manual/html/caption.html +5 -5
- data/manual/html/cellcolor.column.html +43 -8
- data/manual/html/celltext.column.html +4 -4
- data/manual/html/center.html +5 -5
- data/manual/html/charge.html +4 -4
- data/manual/html/chargeset.html +4 -4
- data/manual/html/columnid.html +27 -15
- data/manual/html/columns.html +5 -5
- data/manual/html/complete.html +4 -4
- data/manual/html/copyright.html +4 -4
- data/manual/html/credits.html +4 -4
- data/manual/html/css/tjreport.css +14 -5
- data/manual/html/currency.html +4 -4
- data/manual/html/currencyformat.html +5 -5
- data/manual/html/dailymax.html +5 -5
- data/manual/html/dailymin.html +5 -5
- data/manual/html/dailyworkinghours.html +4 -4
- data/manual/html/date.extend.html +4 -4
- data/manual/html/date.html +5 -5
- data/manual/html/definitions.html +4 -4
- data/manual/html/depends.html +4 -4
- data/manual/html/details.html +4 -4
- data/manual/html/disabled.html +4 -4
- data/manual/html/duration.html +4 -4
- data/manual/html/efficiency.html +4 -4
- data/manual/html/effort.html +4 -4
- data/manual/html/email.html +4 -4
- data/manual/html/enabled.html +4 -4
- data/manual/html/end.column.html +4 -4
- data/manual/html/end.html +4 -4
- data/manual/html/end.limit.html +4 -4
- data/manual/html/end.report.html +5 -5
- data/manual/html/end.timesheet.html +4 -4
- data/manual/html/endcredit.html +4 -4
- data/manual/html/epilog.html +5 -5
- data/manual/html/export.html +4 -4
- data/manual/html/extend.html +4 -4
- data/manual/html/fail.html +43 -8
- data/manual/html/fdl.html +4 -4
- data/manual/html/flags.account.html +4 -4
- data/manual/html/flags.html +4 -4
- data/manual/html/flags.journalentry.html +4 -4
- data/manual/html/flags.report.html +5 -5
- data/manual/html/flags.resource.html +4 -4
- data/manual/html/flags.statussheet.html +4 -4
- data/manual/html/flags.task.html +4 -4
- data/manual/html/flags.timesheet.html +4 -4
- data/manual/html/fontcolor.column.html +43 -8
- data/manual/html/footer.html +5 -5
- data/manual/html/formats.html +5 -5
- data/manual/html/functions.html +4 -4
- data/manual/html/gapduration.html +4 -4
- data/manual/html/gaplength.html +4 -4
- data/manual/html/halign.center.html +4 -4
- data/manual/html/halign.column.html +43 -8
- data/manual/html/halign.left.html +4 -4
- data/manual/html/halign.right.html +4 -4
- data/manual/html/hasalert.html +4 -4
- data/manual/html/header.html +5 -5
- data/manual/html/headline.html +7 -7
- data/manual/html/height.html +72 -0
- data/manual/html/hideaccount.html +46 -11
- data/manual/html/hidejournalentry.html +5 -5
- data/manual/html/hidereport.html +43 -8
- data/manual/html/hideresource.html +44 -9
- data/manual/html/hidetask.html +44 -9
- data/manual/html/icalreport.html +4 -4
- data/manual/html/include.macro.html +4 -4
- data/manual/html/include.project.html +4 -4
- data/manual/html/include.properties.html +4 -4
- data/manual/html/index.html +2 -1
- data/manual/html/inherit.extend.html +4 -4
- data/manual/html/interval1.html +4 -4
- data/manual/html/interval2.html +4 -4
- data/manual/html/interval3.html +4 -4
- data/manual/html/interval4.html +4 -4
- data/manual/html/isactive.html +4 -4
- data/manual/html/ischildof.html +4 -4
- data/manual/html/isdependencyof.html +4 -4
- data/manual/html/isdutyof.html +4 -4
- data/manual/html/isfeatureof.html +4 -4
- data/manual/html/isleaf.html +4 -4
- data/manual/html/ismilestone.html +4 -4
- data/manual/html/isongoing.html +4 -4
- data/manual/html/isresource.html +4 -4
- data/manual/html/isresponsibilityof.html +4 -4
- data/manual/html/istask.html +4 -4
- data/manual/html/journalattributes.html +11 -7
- data/manual/html/journalentry.html +4 -4
- data/manual/html/journalmode.html +5 -5
- data/manual/html/leaveallowance.html +5 -5
- data/manual/html/leaves.html +5 -6
- data/manual/html/left.html +5 -5
- data/manual/html/length.html +4 -4
- data/manual/html/limits.allocate.html +4 -4
- data/manual/html/limits.html +4 -4
- data/manual/html/limits.resource.html +4 -4
- data/manual/html/limits.task.html +4 -4
- data/manual/html/listitem.column.html +4 -4
- data/manual/html/listtype.column.html +4 -4
- data/manual/html/loadunit.html +5 -5
- data/manual/html/logicalexpression.html +8 -44
- data/manual/html/logicalflagexpression.html +4 -4
- data/manual/html/macro.html +4 -4
- data/manual/html/managers.html +4 -4
- data/manual/html/mandatory.html +4 -4
- data/manual/html/maxend.html +4 -4
- data/manual/html/maximum.html +5 -5
- data/manual/html/maxstart.html +4 -4
- data/manual/html/milestone.html +4 -4
- data/manual/html/minend.html +4 -4
- data/manual/html/minimum.html +5 -5
- data/manual/html/minstart.html +4 -4
- data/manual/html/monthlymax.html +5 -5
- data/manual/html/monthlymin.html +5 -5
- data/manual/html/navbar.html +10 -4
- data/manual/html/navigator.html +4 -4
- data/manual/html/newtask.html +4 -4
- data/manual/html/nikureport.html +4 -4
- data/manual/html/note.task.html +4 -4
- data/manual/html/now.html +4 -4
- data/manual/html/numberformat.html +5 -5
- data/manual/html/onend.html +4 -4
- data/manual/html/onstart.html +4 -4
- data/manual/html/opennodes.html +5 -5
- data/manual/html/overtime.booking.html +4 -4
- data/manual/html/period.column.html +4 -4
- data/manual/html/period.limit.html +4 -4
- data/manual/html/period.report.html +5 -5
- data/manual/html/period.task.html +4 -4
- data/manual/html/persistent.html +4 -4
- data/manual/html/precedes.html +4 -4
- data/manual/html/priority.html +4 -4
- data/manual/html/priority.timesheet.html +4 -4
- data/manual/html/project.html +4 -4
- data/manual/html/projectid.html +4 -4
- data/manual/html/projectid.task.html +4 -4
- data/manual/html/projectids.html +4 -4
- data/manual/html/projection.html +5 -7
- data/manual/html/prolog.html +5 -5
- data/manual/html/properties.html +11 -5
- data/manual/html/purge.html +5 -5
- data/manual/html/rate.html +4 -4
- data/manual/html/rate.resource.html +4 -4
- data/manual/html/reference.extend.html +4 -4
- data/manual/html/remaining.html +4 -4
- data/manual/html/replace.html +4 -4
- data/manual/html/reportprefix.html +4 -4
- data/manual/html/resource.html +4 -10
- data/manual/html/resourceattributes.html +4 -4
- data/manual/html/resourceprefix.html +4 -4
- data/manual/html/resourcereport.html +28 -10
- data/manual/html/resourceroot.html +5 -5
- data/manual/html/resources.limit.html +4 -4
- data/manual/html/responsible.html +4 -4
- data/manual/html/richtext.extend.html +4 -4
- data/manual/html/right.html +5 -5
- data/manual/html/rollupaccount.html +44 -9
- data/manual/html/rollupresource.html +44 -9
- data/manual/html/rolluptask.html +44 -9
- data/manual/html/scale.column.html +4 -4
- data/manual/html/scenario.html +4 -22
- data/manual/html/scenario.ical.html +4 -4
- data/manual/html/scenarios.export.html +4 -4
- data/manual/html/scenarios.html +5 -5
- data/manual/html/scenariospecific.extend.html +4 -4
- data/manual/html/scheduled.html +4 -4
- data/manual/html/scheduling.html +4 -4
- data/manual/html/select.html +4 -4
- data/manual/html/selfcontained.html +5 -5
- data/manual/html/shift.allocate.html +4 -4
- data/manual/html/shift.html +4 -4
- data/manual/html/shift.resource.html +5 -5
- data/manual/html/shift.task.html +4 -4
- data/manual/html/shift.timesheet.html +4 -4
- data/manual/html/shifts.allocate.html +4 -4
- data/manual/html/shifts.resource.html +4 -4
- data/manual/html/shifts.task.html +4 -4
- data/manual/html/shorttimeformat.html +4 -4
- data/manual/html/sloppy.booking.html +4 -4
- data/manual/html/sloppy.projection.html +5 -5
- data/manual/html/sortaccounts.html +5 -5
- data/manual/html/sortjournalentries.html +5 -5
- data/manual/html/sortresources.html +5 -5
- data/manual/html/sorttasks.html +5 -5
- data/manual/html/start.column.html +4 -4
- data/manual/html/start.html +4 -4
- data/manual/html/start.limit.html +4 -4
- data/manual/html/start.report.html +5 -5
- data/manual/html/startcredit.html +4 -4
- data/manual/html/status.statussheet.html +4 -4
- data/manual/html/status.timesheet.html +4 -4
- data/manual/html/statussheet.html +4 -4
- data/manual/html/statussheetreport.html +4 -4
- data/manual/html/strict.projection.html +5 -5
- data/manual/html/summary.html +4 -4
- data/manual/html/supplement.html +4 -4
- data/manual/html/supplement.resource.html +4 -10
- data/manual/html/supplement.task.html +4 -28
- data/manual/html/tagfile.html +4 -4
- data/manual/html/task.html +4 -28
- data/manual/html/task.statussheet.html +4 -4
- data/manual/html/task.timesheet.html +4 -4
- data/manual/html/taskattributes.html +4 -4
- data/manual/html/taskprefix.html +4 -4
- data/manual/html/taskreport.html +28 -10
- data/manual/html/taskroot.html +5 -5
- data/manual/html/text.extend.html +4 -4
- data/manual/html/textreport.html +27 -9
- data/manual/html/timeformat.html +5 -5
- data/manual/html/timeoff.nikureport.html +4 -4
- data/manual/html/timesheet.html +4 -4
- data/manual/html/timesheetreport.html +23 -5
- data/manual/html/timezone.export.html +4 -4
- data/manual/html/timezone.html +4 -4
- data/manual/html/timezone.report.html +5 -5
- data/manual/html/timezone.shift.html +4 -4
- data/manual/html/timingresolution.html +4 -4
- data/manual/html/title.column.html +4 -4
- data/manual/html/title.html +5 -5
- data/manual/html/toc.html +207 -179
- data/manual/html/tooltip.column.html +45 -10
- data/manual/html/tracereport.html +405 -0
- data/manual/html/trackingscenario.html +6 -6
- data/manual/html/treelevel.html +4 -4
- data/manual/html/vacation.html +4 -4
- data/manual/html/vacation.resource.html +4 -4
- data/manual/html/vacation.shift.html +4 -4
- data/manual/html/warn.html +43 -8
- data/manual/html/weeklymax.html +5 -5
- data/manual/html/weeklymin.html +5 -5
- data/manual/html/weekstartsmonday.html +4 -4
- data/manual/html/weekstartssunday.html +6 -6
- data/manual/html/width.column.html +6 -6
- data/manual/html/width.html +72 -0
- data/manual/html/work.html +4 -4
- data/manual/html/workinghours.project.html +4 -4
- data/manual/html/workinghours.resource.html +4 -4
- data/manual/html/workinghours.shift.html +4 -4
- data/manual/html/yearlyworkingdays.html +4 -4
- data/spec/Color_spec.rb +60 -0
- data/spec/ProjectBroker_spec.rb +3 -2
- data/spec/StatusSheets_spec.rb +5 -4
- data/spec/TableColumnSorter_spec.rb +78 -0
- data/spec/TimeSheets_spec.rb +6 -2
- data/spec/Tj3Daemon_spec.rb +2 -2
- data/spec/TraceReport_spec.rb +117 -0
- data/taskjuggler.gemspec +1 -1
- data/test/MessageChecker.rb +3 -1
- data/test/ReferenceGenerator.rb +1 -1
- data/test/TestSuite/CSV-Reports/Leave.tjp +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +3 -0
- data/test/TestSuite/CSV-Reports/refs/taskcounter.csv +9 -0
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +19 -16
- data/test/TestSuite/CSV-Reports/refs/weekly.csv +1 -0
- data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +14 -2
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +98 -86
- data/test/TestSuite/Scheduler/Correct/Leaves.tjp +25 -0
- data/test/TestSuite/Syntax/Correct/Leave.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +9 -1
- data/test/TestSuite/Syntax/Correct/TraceReport.tjp +10 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +10 -4
- data/test/test_CSV-Reports.rb +3 -3
- data/test/test_Export-Reports.rb +91 -86
- data/test/test_Journal.rb +15 -12
- data/test/test_Limits.rb +3 -3
- data/test/test_Project.rb +1 -2
- data/test/test_ProjectFileScanner.rb +1 -1
- data/test/test_PropertySet.rb +1 -1
- data/test/test_Query.rb +5 -6
- data/test/test_ReportGenerator.rb +15 -7
- data/test/test_RichText.rb +4 -3
- data/test/test_Scheduler.rb +19 -7
- data/test/test_ShiftAssignments.rb +2 -2
- data/test/test_SimpleQueryExpander.rb +29 -2
- data/test/test_Syntax.rb +14 -5
- metadata +49 -10
- data/lib/taskjuggler/LogFile.rb +0 -73
@@ -51,11 +51,11 @@ task AcSo "Accounting Software" {
|
|
51
51
|
task gui "Graphical User Interface" {
|
52
52
|
depends AcSo.software.database, AcSo.software.backend
|
53
53
|
start 2002-02-28-14:00-+0000
|
54
|
-
end 2002-03-
|
54
|
+
end 2002-03-28-13:00-+0000
|
55
55
|
scheduling asap
|
56
56
|
scheduled
|
57
57
|
delayed:start 2002-03-05-14:00-+0000
|
58
|
-
delayed:end 2002-04-
|
58
|
+
delayed:end 2002-04-08-11:00-+0000
|
59
59
|
delayed:scheduling asap
|
60
60
|
}
|
61
61
|
task backend "Back-End Functions" {
|
@@ -72,22 +72,22 @@ task AcSo "Accounting Software" {
|
|
72
72
|
task test "Software testing" {
|
73
73
|
task alpha "Alpha Test" {
|
74
74
|
depends AcSo.software
|
75
|
-
start 2002-03-
|
76
|
-
end 2002-03-
|
75
|
+
start 2002-03-28-13:00-+0000
|
76
|
+
end 2002-04-03-10:00-+0000
|
77
77
|
scheduling asap
|
78
78
|
scheduled
|
79
|
-
delayed:start 2002-04-
|
80
|
-
delayed:end 2002-04-
|
79
|
+
delayed:start 2002-04-08-11:00-+0000
|
80
|
+
delayed:end 2002-04-11-09:00-+0000
|
81
81
|
delayed:scheduling asap
|
82
82
|
}
|
83
83
|
task beta "Beta Test" {
|
84
84
|
depends AcSo.test.alpha
|
85
|
-
start 2002-04-
|
86
|
-
end 2002-04-
|
85
|
+
start 2002-04-03-10:00-+0000
|
86
|
+
end 2002-04-18-13:00-+0000
|
87
87
|
scheduling asap
|
88
88
|
scheduled
|
89
|
-
delayed:start 2002-04-
|
90
|
-
delayed:end 2002-04-
|
89
|
+
delayed:start 2002-04-11-09:00-+0000
|
90
|
+
delayed:end 2002-04-26-12:00-+0000
|
91
91
|
delayed:scheduling asap
|
92
92
|
}
|
93
93
|
}
|
@@ -119,18 +119,18 @@ task AcSo "Accounting Software" {
|
|
119
119
|
}
|
120
120
|
task beta "Beta version" {
|
121
121
|
depends AcSo.test.alpha
|
122
|
-
start 2002-03-
|
122
|
+
start 2002-04-03-10:00-+0000
|
123
123
|
milestone
|
124
124
|
scheduled
|
125
|
-
delayed:start 2002-04-
|
125
|
+
delayed:start 2002-04-11-09:00-+0000
|
126
126
|
delayed:milestone
|
127
127
|
}
|
128
128
|
task done "Ship Product to Customer" {
|
129
129
|
depends AcSo.test.beta, AcSo.manual
|
130
|
-
start 2002-04-
|
130
|
+
start 2002-04-18-13:00-+0000
|
131
131
|
milestone
|
132
132
|
scheduled
|
133
|
-
delayed:start 2002-04-
|
133
|
+
delayed:start 2002-04-26-12:00-+0000
|
134
134
|
delayed:milestone
|
135
135
|
}
|
136
136
|
}
|
@@ -243,24 +243,26 @@ supplement task AcSo.software.database {
|
|
243
243
|
}
|
244
244
|
supplement task AcSo.software.gui {
|
245
245
|
booking dev2 2002-02-28-14:00-+0000 + 2.0h,
|
246
|
-
2002-03-01-08:00-+0000 +
|
247
|
-
2002-03-04-08:00-+0000 +
|
248
|
-
2002-03-05-08:00-+0000 +
|
249
|
-
2002-03-06-08:00-+0000 +
|
250
|
-
2002-03-07-08:00-+0000 +
|
251
|
-
2002-03-08-08:00-+0000 +
|
252
|
-
2002-03-11-08:00-+0000 +
|
253
|
-
2002-03-12-08:00-+0000 +
|
254
|
-
2002-03-13-08:00-+0000 +
|
255
|
-
2002-03-14-08:00-+0000 +
|
256
|
-
2002-03-15-08:00-+0000 +
|
257
|
-
2002-03-18-08:00-+0000 +
|
258
|
-
2002-03-19-08:00-+0000 +
|
259
|
-
2002-03-20-08:00-+0000 +
|
260
|
-
2002-03-21-08:00-+0000 +
|
261
|
-
2002-03-22-08:00-+0000 +
|
262
|
-
2002-03-25-08:00-+0000 +
|
263
|
-
2002-03-26-08:00-+0000 +
|
246
|
+
2002-03-01-08:00-+0000 + 6.0h,
|
247
|
+
2002-03-04-08:00-+0000 + 6.0h,
|
248
|
+
2002-03-05-08:00-+0000 + 6.0h,
|
249
|
+
2002-03-06-08:00-+0000 + 6.0h,
|
250
|
+
2002-03-07-08:00-+0000 + 6.0h,
|
251
|
+
2002-03-08-08:00-+0000 + 6.0h,
|
252
|
+
2002-03-11-08:00-+0000 + 6.0h,
|
253
|
+
2002-03-12-08:00-+0000 + 6.0h,
|
254
|
+
2002-03-13-08:00-+0000 + 6.0h,
|
255
|
+
2002-03-14-08:00-+0000 + 6.0h,
|
256
|
+
2002-03-15-08:00-+0000 + 6.0h,
|
257
|
+
2002-03-18-08:00-+0000 + 6.0h,
|
258
|
+
2002-03-19-08:00-+0000 + 6.0h,
|
259
|
+
2002-03-20-08:00-+0000 + 6.0h,
|
260
|
+
2002-03-21-08:00-+0000 + 6.0h,
|
261
|
+
2002-03-22-08:00-+0000 + 6.0h,
|
262
|
+
2002-03-25-08:00-+0000 + 6.0h,
|
263
|
+
2002-03-26-08:00-+0000 + 6.0h,
|
264
|
+
2002-03-27-08:00-+0000 + 6.0h,
|
265
|
+
2002-03-28-08:00-+0000 + 5.0h { overtime 2 }
|
264
266
|
booking dev3 2002-02-28-14:00-+0000 + 2.0h,
|
265
267
|
2002-03-01-08:00-+0000 + 8.0h,
|
266
268
|
2002-03-04-08:00-+0000 + 8.0h,
|
@@ -279,28 +281,33 @@ supplement task AcSo.software.gui {
|
|
279
281
|
2002-03-21-08:00-+0000 + 8.0h,
|
280
282
|
2002-03-22-08:00-+0000 + 8.0h,
|
281
283
|
2002-03-25-08:00-+0000 + 8.0h,
|
282
|
-
2002-03-26-08:00-+0000 +
|
284
|
+
2002-03-26-08:00-+0000 + 8.0h,
|
285
|
+
2002-03-27-08:00-+0000 + 8.0h,
|
286
|
+
2002-03-28-08:00-+0000 + 5.0h { overtime 2 }
|
283
287
|
delayed:booking dev2 2002-03-05-14:00-+0000 + 2.0h,
|
284
|
-
2002-03-06-08:00-+0000 +
|
285
|
-
2002-03-07-08:00-+0000 +
|
286
|
-
2002-03-08-08:00-+0000 +
|
287
|
-
2002-03-11-08:00-+0000 +
|
288
|
-
2002-03-12-08:00-+0000 +
|
289
|
-
2002-03-13-08:00-+0000 +
|
290
|
-
2002-03-14-08:00-+0000 +
|
291
|
-
2002-03-15-08:00-+0000 +
|
292
|
-
2002-03-18-08:00-+0000 +
|
293
|
-
2002-03-19-08:00-+0000 +
|
294
|
-
2002-03-20-08:00-+0000 +
|
295
|
-
2002-03-21-08:00-+0000 +
|
296
|
-
2002-03-22-08:00-+0000 +
|
297
|
-
2002-03-25-08:00-+0000 +
|
298
|
-
2002-03-26-08:00-+0000 +
|
299
|
-
2002-03-27-08:00-+0000 +
|
300
|
-
2002-03-28-08:00-+0000 +
|
301
|
-
2002-04-01-07:00-+0000 +
|
302
|
-
2002-04-02-07:00-+0000 +
|
303
|
-
2002-04-03-07:00-+0000 + 6.0h
|
288
|
+
2002-03-06-08:00-+0000 + 6.0h,
|
289
|
+
2002-03-07-08:00-+0000 + 6.0h,
|
290
|
+
2002-03-08-08:00-+0000 + 6.0h,
|
291
|
+
2002-03-11-08:00-+0000 + 6.0h,
|
292
|
+
2002-03-12-08:00-+0000 + 6.0h,
|
293
|
+
2002-03-13-08:00-+0000 + 6.0h,
|
294
|
+
2002-03-14-08:00-+0000 + 6.0h,
|
295
|
+
2002-03-15-08:00-+0000 + 6.0h,
|
296
|
+
2002-03-18-08:00-+0000 + 6.0h,
|
297
|
+
2002-03-19-08:00-+0000 + 6.0h,
|
298
|
+
2002-03-20-08:00-+0000 + 6.0h,
|
299
|
+
2002-03-21-08:00-+0000 + 6.0h,
|
300
|
+
2002-03-22-08:00-+0000 + 6.0h,
|
301
|
+
2002-03-25-08:00-+0000 + 6.0h,
|
302
|
+
2002-03-26-08:00-+0000 + 6.0h,
|
303
|
+
2002-03-27-08:00-+0000 + 6.0h,
|
304
|
+
2002-03-28-08:00-+0000 + 6.0h,
|
305
|
+
2002-04-01-07:00-+0000 + 6.0h,
|
306
|
+
2002-04-02-07:00-+0000 + 6.0h,
|
307
|
+
2002-04-03-07:00-+0000 + 6.0h,
|
308
|
+
2002-04-04-07:00-+0000 + 6.0h,
|
309
|
+
2002-04-05-07:00-+0000 + 6.0h,
|
310
|
+
2002-04-08-07:00-+0000 + 4.0h { overtime 2 }
|
304
311
|
delayed:booking dev3 2002-03-05-14:00-+0000 + 2.0h,
|
305
312
|
2002-03-06-08:00-+0000 + 8.0h,
|
306
313
|
2002-03-07-08:00-+0000 + 8.0h,
|
@@ -321,7 +328,10 @@ supplement task AcSo.software.gui {
|
|
321
328
|
2002-03-28-08:00-+0000 + 8.0h,
|
322
329
|
2002-04-01-07:00-+0000 + 8.0h,
|
323
330
|
2002-04-02-07:00-+0000 + 8.0h,
|
324
|
-
2002-04-03-07:00-+0000 +
|
331
|
+
2002-04-03-07:00-+0000 + 8.0h,
|
332
|
+
2002-04-04-07:00-+0000 + 8.0h,
|
333
|
+
2002-04-05-07:00-+0000 + 8.0h,
|
334
|
+
2002-04-08-07:00-+0000 + 4.0h { overtime 2 }
|
325
335
|
priority 1000
|
326
336
|
projectid acso
|
327
337
|
responsible boss, dev1
|
@@ -402,29 +412,29 @@ supplement task AcSo.test {
|
|
402
412
|
responsible boss
|
403
413
|
}
|
404
414
|
supplement task AcSo.test.alpha {
|
405
|
-
booking dev2 2002-03-
|
406
|
-
2002-
|
407
|
-
2002-
|
408
|
-
|
409
|
-
|
410
|
-
2002-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
2002-04-
|
415
|
-
|
416
|
-
2002-04-
|
417
|
-
|
418
|
-
2002-04-
|
415
|
+
booking dev2 2002-03-28-13:00-+0000 + 3.0h,
|
416
|
+
2002-04-01-07:00-+0000 + 8.0h,
|
417
|
+
2002-04-02-07:00-+0000 + 8.0h,
|
418
|
+
2002-04-03-07:00-+0000 + 3.0h { overtime 2 }
|
419
|
+
booking test 2002-03-28-13:00-+0000 + 3.0h,
|
420
|
+
2002-04-01-07:00-+0000 + 6.0h,
|
421
|
+
2002-04-02-07:00-+0000 + 6.0h,
|
422
|
+
2002-04-03-07:00-+0000 + 3.0h { overtime 2 }
|
423
|
+
delayed:booking dev2 2002-04-08-11:00-+0000 + 4.0h,
|
424
|
+
2002-04-09-07:00-+0000 + 8.0h,
|
425
|
+
2002-04-10-07:00-+0000 + 8.0h,
|
426
|
+
2002-04-11-07:00-+0000 + 2.0h { overtime 2 }
|
427
|
+
delayed:booking test 2002-04-08-11:00-+0000 + 4.0h,
|
428
|
+
2002-04-09-07:00-+0000 + 6.0h,
|
429
|
+
2002-04-10-07:00-+0000 + 6.0h,
|
430
|
+
2002-04-11-07:00-+0000 + 2.0h { overtime 2 }
|
419
431
|
note "Hopefully most bugs will be found and fixed here."
|
420
432
|
priority 500
|
421
433
|
projectid acso
|
422
434
|
responsible boss
|
423
435
|
}
|
424
436
|
supplement task AcSo.test.beta {
|
425
|
-
booking dev1 2002-04-
|
426
|
-
2002-04-02-07:00-+0000 + 8.0h,
|
427
|
-
2002-04-03-07:00-+0000 + 8.0h,
|
437
|
+
booking dev1 2002-04-03-10:00-+0000 + 5.0h,
|
428
438
|
2002-04-04-07:00-+0000 + 8.0h,
|
429
439
|
2002-04-05-07:00-+0000 + 8.0h,
|
430
440
|
2002-04-08-07:00-+0000 + 8.0h,
|
@@ -433,10 +443,10 @@ supplement task AcSo.test.beta {
|
|
433
443
|
2002-04-11-07:00-+0000 + 8.0h,
|
434
444
|
2002-04-12-07:00-+0000 + 8.0h,
|
435
445
|
2002-04-15-07:00-+0000 + 8.0h,
|
436
|
-
2002-04-16-07:00-+0000 +
|
437
|
-
|
438
|
-
2002-04-
|
439
|
-
|
446
|
+
2002-04-16-07:00-+0000 + 8.0h,
|
447
|
+
2002-04-17-07:00-+0000 + 8.0h,
|
448
|
+
2002-04-18-07:00-+0000 + 6.0h { overtime 2 }
|
449
|
+
booking test 2002-04-03-10:00-+0000 + 3.0h,
|
440
450
|
2002-04-04-07:00-+0000 + 6.0h,
|
441
451
|
2002-04-05-07:00-+0000 + 6.0h,
|
442
452
|
2002-04-08-07:00-+0000 + 6.0h,
|
@@ -445,11 +455,10 @@ supplement task AcSo.test.beta {
|
|
445
455
|
2002-04-11-07:00-+0000 + 6.0h,
|
446
456
|
2002-04-12-07:00-+0000 + 6.0h,
|
447
457
|
2002-04-15-07:00-+0000 + 6.0h,
|
448
|
-
2002-04-16-07:00-+0000 +
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
2002-04-11-07:00-+0000 + 8.0h,
|
458
|
+
2002-04-16-07:00-+0000 + 6.0h,
|
459
|
+
2002-04-17-07:00-+0000 + 6.0h,
|
460
|
+
2002-04-18-07:00-+0000 + 6.0h { overtime 2 }
|
461
|
+
delayed:booking dev1 2002-04-11-09:00-+0000 + 6.0h,
|
453
462
|
2002-04-12-07:00-+0000 + 8.0h,
|
454
463
|
2002-04-15-07:00-+0000 + 8.0h,
|
455
464
|
2002-04-16-07:00-+0000 + 8.0h,
|
@@ -457,11 +466,11 @@ supplement task AcSo.test.beta {
|
|
457
466
|
2002-04-18-07:00-+0000 + 8.0h,
|
458
467
|
2002-04-19-07:00-+0000 + 8.0h,
|
459
468
|
2002-04-22-07:00-+0000 + 8.0h,
|
460
|
-
2002-04-23-07:00-+0000 + 8.0h
|
461
|
-
|
462
|
-
2002-04-
|
463
|
-
2002-04-
|
464
|
-
|
469
|
+
2002-04-23-07:00-+0000 + 8.0h,
|
470
|
+
2002-04-24-07:00-+0000 + 8.0h,
|
471
|
+
2002-04-25-07:00-+0000 + 8.0h,
|
472
|
+
2002-04-26-07:00-+0000 + 5.0h { overtime 2 }
|
473
|
+
delayed:booking test 2002-04-11-09:00-+0000 + 4.0h,
|
465
474
|
2002-04-12-07:00-+0000 + 6.0h,
|
466
475
|
2002-04-15-07:00-+0000 + 6.0h,
|
467
476
|
2002-04-16-07:00-+0000 + 6.0h,
|
@@ -469,7 +478,10 @@ supplement task AcSo.test.beta {
|
|
469
478
|
2002-04-18-07:00-+0000 + 6.0h,
|
470
479
|
2002-04-19-07:00-+0000 + 6.0h,
|
471
480
|
2002-04-22-07:00-+0000 + 6.0h,
|
472
|
-
2002-04-23-07:00-+0000 + 6.0h
|
481
|
+
2002-04-23-07:00-+0000 + 6.0h,
|
482
|
+
2002-04-24-07:00-+0000 + 6.0h,
|
483
|
+
2002-04-25-07:00-+0000 + 6.0h,
|
484
|
+
2002-04-26-07:00-+0000 + 5.0h { overtime 2 }
|
473
485
|
priority 500
|
474
486
|
projectid acso
|
475
487
|
responsible boss
|
@@ -0,0 +1,25 @@
|
|
1
|
+
project "Leaves" 2012-03-12 +6m {
|
2
|
+
scenario s1 "S1" {
|
3
|
+
scenario s2 "S2"
|
4
|
+
}
|
5
|
+
}
|
6
|
+
|
7
|
+
vacation "Goof-out day" 2012-03-14
|
8
|
+
|
9
|
+
resource r1 "R1" {
|
10
|
+
vacation 2012-03-19 +1w
|
11
|
+
}
|
12
|
+
|
13
|
+
task "T1" {
|
14
|
+
effort 20d
|
15
|
+
allocate r1
|
16
|
+
fail s1.end != 2012-04-16-17:00
|
17
|
+
fail s2.end != 2012-04-16-17:00
|
18
|
+
}
|
19
|
+
|
20
|
+
taskreport "Leaves" {
|
21
|
+
formats html
|
22
|
+
columns no, name, start, end, daily
|
23
|
+
scenarios s1, s2
|
24
|
+
hideresource 0
|
25
|
+
}
|
@@ -2,7 +2,11 @@ project "LogExp" 2009-10-19 +2m {
|
|
2
2
|
timezone "America/Denver"
|
3
3
|
}
|
4
4
|
|
5
|
-
|
5
|
+
resource r "R"
|
6
|
+
task "T" {
|
7
|
+
allocate r
|
8
|
+
effort 1d
|
9
|
+
}
|
6
10
|
|
7
11
|
macro rep [
|
8
12
|
taskreport "LogExp${1}" {
|
@@ -17,3 +21,7 @@ ${rep "4" ">="}
|
|
17
21
|
${rep "5" "!="}
|
18
22
|
${rep "6" "="}
|
19
23
|
|
24
|
+
taskreport "LogExp7" {
|
25
|
+
hidetask @none
|
26
|
+
hideresource @all
|
27
|
+
}
|
@@ -253,6 +253,12 @@ task AcSo "Accounting Software" {
|
|
253
253
|
delayed:effort 40d
|
254
254
|
depends !database, !backend
|
255
255
|
allocate dev2, dev3
|
256
|
+
# Resource dev2 should only work 6 hours per day on this task.
|
257
|
+
limits {
|
258
|
+
dailymax 6h {
|
259
|
+
resources dev2
|
260
|
+
}
|
261
|
+
}
|
256
262
|
# *** EXAMPLE: software +
|
257
263
|
}
|
258
264
|
# *** EXAMPLE: gui -
|
@@ -415,7 +421,7 @@ task AcSo "Accounting Software" {
|
|
415
421
|
|
416
422
|
# *** EXAMPLE: navigator +
|
417
423
|
navigator navbar {
|
418
|
-
hidereport
|
424
|
+
hidereport @none
|
419
425
|
}
|
420
426
|
# *** EXAMPLE: navigator -
|
421
427
|
|
@@ -525,7 +531,7 @@ taskreport overview "" {
|
|
525
531
|
timeformat "%a %Y-%m-%d"
|
526
532
|
loadunit days
|
527
533
|
# *** EXAMPLE: overview3 -
|
528
|
-
hideresource
|
534
|
+
hideresource @all
|
529
535
|
# *** EXAMPLE: overview2 +
|
530
536
|
balance cost rev
|
531
537
|
# *** EXAMPLE: overview2 -
|
@@ -613,7 +619,7 @@ taskreport deliveries "" {
|
|
613
619
|
columns bsi { title 'WBS' }, name, start, end, note { width 150 }, complete,
|
614
620
|
chart { ${TaskTip} }
|
615
621
|
taskroot AcSo.deliveries
|
616
|
-
hideresource
|
622
|
+
hideresource @all
|
617
623
|
scenarios plan, delayed
|
618
624
|
}
|
619
625
|
# A list of all employees with their contact details.
|
@@ -627,7 +633,7 @@ resourcereport contactList "" {
|
|
627
633
|
chart { scale day }
|
628
634
|
hideresource ~isleaf()
|
629
635
|
sortresources name.up
|
630
|
-
hidetask
|
636
|
+
hidetask @all
|
631
637
|
}
|
632
638
|
|
633
639
|
# A graph showing resource allocation. It identifies whether each
|
data/test/test_CSV-Reports.rb
CHANGED
@@ -90,7 +90,8 @@ class TestScheduler < Test::Unit::TestCase
|
|
90
90
|
# they need to be in the ./refs/ directory relative to the project file.
|
91
91
|
refFile = baseDir + "/refs/#{baseName}.csv"
|
92
92
|
|
93
|
-
|
93
|
+
(mh = TaskJuggler::MessageHandlerInstance.instance).reset
|
94
|
+
tj = TaskJuggler.new
|
94
95
|
assert(tj.parse([ projectFile ]), "Parser failed for #{projectFile}")
|
95
96
|
assert(tj.schedule, "Scheduler failed for #{projectFile}")
|
96
97
|
if File.file?(refFile)
|
@@ -109,8 +110,7 @@ class TestScheduler < Test::Unit::TestCase
|
|
109
110
|
"Reference file generation failed for #{projectFile}")
|
110
111
|
end
|
111
112
|
end
|
112
|
-
assert(
|
113
|
-
"Unexpected error in #{projectFile}")
|
113
|
+
assert(mh.messages.empty?, "Unexpected error in #{projectFile}")
|
114
114
|
end
|
115
115
|
|
116
116
|
def test_CSV_Reports
|
data/test/test_Export-Reports.rb
CHANGED
@@ -21,111 +21,116 @@ require 'MessageChecker'
|
|
21
21
|
require 'taskjuggler/TaskJuggler'
|
22
22
|
require 'taskjuggler/AlgorithmDiff'
|
23
23
|
|
24
|
-
class
|
25
|
-
|
26
|
-
include MessageChecker
|
27
|
-
|
28
|
-
# This function captures the $stdout output of the passed block to a String
|
29
|
-
# and returns it.
|
30
|
-
def captureStdout
|
31
|
-
oldStdOut = $stdout
|
32
|
-
$stdout = (out = StringIO.new)
|
33
|
-
begin
|
34
|
-
yield
|
35
|
-
ensure
|
36
|
-
$stdout = oldStdOut
|
37
|
-
end
|
38
|
-
out.string
|
39
|
-
end
|
24
|
+
class TaskJuggler
|
40
25
|
|
41
|
-
|
42
|
-
# the name fileName.
|
43
|
-
def stdoutToFile(fileName)
|
44
|
-
oldStdOut = $stdout
|
45
|
-
$stdout = File.open(fileName, 'w')
|
46
|
-
begin
|
47
|
-
yield
|
48
|
-
$stdout.close
|
49
|
-
ensure
|
50
|
-
$stdout = oldStdOut
|
51
|
-
end
|
52
|
-
end
|
26
|
+
class TestExportReport < Test::Unit::TestCase
|
53
27
|
|
54
|
-
|
55
|
-
# the Export reference files _refFile_.
|
56
|
-
def compareExports(out, refFile, testCase)
|
57
|
-
ref = File.new(refFile, 'r').read
|
28
|
+
include MessageChecker
|
58
29
|
|
59
|
-
|
60
|
-
|
61
|
-
|
30
|
+
# This function captures the $stdout output of the passed block to a String
|
31
|
+
# and returns it.
|
32
|
+
def captureStdout
|
33
|
+
oldStdOut = $stdout
|
34
|
+
$stdout = (out = StringIO.new)
|
35
|
+
begin
|
36
|
+
yield
|
37
|
+
ensure
|
38
|
+
$stdout = oldStdOut
|
39
|
+
end
|
40
|
+
out.string
|
62
41
|
end
|
63
|
-
assert_equal('', diff, "output for #{testCase} does not match " +
|
64
|
-
"#{refFile}:\n#{diff}")
|
65
|
-
end
|
66
42
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
43
|
+
# This functions redirects all output of the passed block to a new file with
|
44
|
+
# the name fileName.
|
45
|
+
def stdoutToFile(fileName)
|
46
|
+
oldStdOut = $stdout
|
47
|
+
$stdout = File.open(fileName, 'w')
|
48
|
+
begin
|
49
|
+
yield
|
50
|
+
$stdout.close
|
51
|
+
ensure
|
52
|
+
$stdout = oldStdOut
|
53
|
+
end
|
54
|
+
end
|
71
55
|
|
72
|
-
#
|
73
|
-
|
56
|
+
# Compare the output Export (passed as String in _out_) with the content of
|
57
|
+
# the Export reference files _refFile_.
|
58
|
+
def compareExports(out, refFile, testCase)
|
59
|
+
ref = File.new(refFile, 'r').read
|
74
60
|
|
75
|
-
|
76
|
-
|
61
|
+
diff = ref.extend(DiffableString).diff(out).to_s
|
62
|
+
if diff != ''
|
63
|
+
File.new('failed.tjp', 'w').write(out)
|
64
|
+
end
|
65
|
+
assert_equal('', diff, "output for #{testCase} does not match " +
|
66
|
+
"#{refFile}:\n#{diff}")
|
67
|
+
end
|
77
68
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
69
|
+
def checkExportReport(projectFile, repFile, refFile)
|
70
|
+
tj = TaskJuggler.new
|
71
|
+
assert(tj.parse([ projectFile, repFile ]),
|
72
|
+
"Parser failed for #{projectFile}")
|
73
|
+
|
74
|
+
# Schedule the project.
|
75
|
+
assert(tj.schedule, "Scheduler failed for #{projectFile}")
|
76
|
+
|
77
|
+
tj.project.reports.each do |report|
|
78
|
+
next unless report.get('formats').include?(:tjp)
|
79
|
+
|
80
|
+
if File.file?(refFile)
|
81
|
+
# If there is a reference Export file for this test case, compare the
|
82
|
+
# output against it.
|
83
|
+
out = captureStdout do
|
84
|
+
assert(tj.generateReport(report.fullId, false),
|
85
|
+
"Report generation failed for #{projectFile}")
|
86
|
+
end
|
87
|
+
compareExports(out, refFile, projectFile)
|
88
|
+
else
|
89
|
+
# If not, we generate the reference file.
|
90
|
+
stdoutToFile(refFile) do
|
91
|
+
assert(tj.generateReport(report.fullId, false),
|
92
|
+
"Reference file generation failed for #{projectFile}")
|
93
|
+
end
|
91
94
|
end
|
92
95
|
end
|
96
|
+
assert(MessageHandlerInstance.instance.messages.empty?,
|
97
|
+
"Unexpected error in #{projectFile}")
|
93
98
|
end
|
94
|
-
assert(tj.messageHandler.messages.empty?,
|
95
|
-
"Unexpected error in #{projectFile}")
|
96
|
-
end
|
97
99
|
|
98
|
-
|
99
|
-
|
100
|
+
def test_Export_Reports
|
101
|
+
path = File.dirname(__FILE__)
|
100
102
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
103
|
+
ENV['TEST1'] = 't_e_s_t_1'
|
104
|
+
ENV['TEST2'] = '"A test String"'
|
105
|
+
ENV['TEST3'] = '3'
|
106
|
+
testDir = path + '/TestSuite/Syntax/Correct/'
|
107
|
+
Dir.glob(testDir + '*.tjp').each do |f|
|
108
|
+
# We ignore some test cases that cannot work in this setup.
|
109
|
+
next if %w( Freeze.tjp Export.tjp ).include?(f[testDir.length..-1])
|
108
110
|
|
109
|
-
|
110
|
-
|
111
|
+
# Take the project, schedule it, check it against the reference and
|
112
|
+
# export it. Then check the export against the reference file.
|
111
113
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
114
|
+
refFile = refFileName(f)
|
115
|
+
repFile = reportDefFileName(f)
|
116
|
+
checkExportReport(f, repFile, refFile)
|
117
|
+
checkExportReport(refFile, repFile, refFile)
|
118
|
+
end
|
116
119
|
end
|
117
|
-
end
|
118
120
|
|
119
|
-
|
121
|
+
private
|
120
122
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
123
|
+
def refFileName(originalFile)
|
124
|
+
baseDir = File.dirname(originalFile)
|
125
|
+
baseName = File.basename(originalFile, '.tjp')
|
126
|
+
baseDir + "/../../Export-Reports/refs/#{baseName}.tjp"
|
127
|
+
end
|
128
|
+
|
129
|
+
def reportDefFileName(originalFile)
|
130
|
+
File.dirname(originalFile) + "/../../Export-Reports/export.tji"
|
131
|
+
end
|
126
132
|
|
127
|
-
def reportDefFileName(originalFile)
|
128
|
-
File.dirname(originalFile) + "/../../Export-Reports/export.tji"
|
129
133
|
end
|
130
134
|
|
131
135
|
end
|
136
|
+
|